Skip to content

Commit b7b4abf

Browse files
committed
reduce diff and changesets
1 parent d51d24a commit b7b4abf

File tree

4 files changed

+30
-9
lines changed

4 files changed

+30
-9
lines changed

.changeset/chatty-dryers-breathe.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@graphql-tools/utils': minor
3+
---
4+
5+
Add helper function `memoize3of4` for memoizing values.

.changeset/fifty-bobcats-jog.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
22
'@graphql-tools/executor': major
3-
'@graphql-tools/utils': minor
43
---
54

65
Support the new non-duplicating Incremental Delivery format.

.changeset/mean-parents-do.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
'@graphql-tools/utils': minor
3+
---
4+
5+
Support the new incremental protocol for `mergeIncrementalResult`.
6+
7+
The `mergeIncrementalResult` function can now merge the [new response format without duplication](https://github.com/graphql/defer-stream-wg/discussions/69).
8+
9+
```ts
10+
const executionResult = { data: { user: { name: 'John' } }, pending: [{ id: '0', path: [] }] };
11+
const incrementalResult = { incremental: [{ id: '0', data: { user: { age: 42 } } }] };
12+
13+
console.log(mergeIncrementalResult({ incrementalResult, executionResult }));
14+
// logs: { user: { age: 42, name: 'John' } }
15+
```

packages/utils/src/createDeferred.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
// TODO: Remove this after Node 22
2-
3-
export type Deferred<T = unknown> = PromiseWithResolvers<T>;
1+
export interface PromiseWithResolvers<T> {
2+
promise: Promise<T>;
3+
resolve: (value: T | PromiseLike<T>) => void;
4+
reject: (reason: any) => void;
5+
}
46

5-
export function createDeferred<T>(): Deferred<T> {
7+
export function createDeferred<T>(): PromiseWithResolvers<T> {
68
if (Promise.withResolvers) {
7-
return Promise.withResolvers();
9+
return Promise.withResolvers<T>();
810
}
9-
let resolve: (value: T | PromiseLike<T>) => void;
10-
let reject: (error: unknown) => void;
11+
let resolve!: (value: T | PromiseLike<T>) => void;
12+
let reject!: (reason: any) => void;
1113
const promise = new Promise<T>((_resolve, _reject) => {
1214
resolve = _resolve;
1315
reject = _reject;
1416
});
15-
return { promise, resolve: resolve!, reject: reject! };
17+
return { promise, resolve, reject };
1618
}

0 commit comments

Comments
 (0)