Skip to content

Commit 7ab1bd7

Browse files
committed
refactor: generate types for everything
1 parent 51e6643 commit 7ab1bd7

File tree

3 files changed

+26
-23
lines changed

3 files changed

+26
-23
lines changed

packages/core/src/orchestrator.ts

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ import {
1111
OnParseHook,
1212
OnResolverCalledHook,
1313
OnSubscribeHook,
14-
OnSubscribeResultResult,
1514
OnValidateHook,
1615
Plugin,
1716
SubscribeResultHook,
1817
TypedSubscriptionArgs,
1918
TypedExecutionArgs,
2019
SubscribeFunction,
20+
OnSubscribeResultResultOnNextHook,
21+
OnSubscribeResultResultOnEndHook,
2122
} from '@envelop/types';
2223
import isAsyncIterable from 'graphql/jsutils/isAsyncIterable';
2324
import {
@@ -313,8 +314,8 @@ export function createEnvelopOrchestrator<PluginsContext = any>(plugins: Plugin[
313314
contextValue: context,
314315
});
315316

316-
const onNextHandler: Exclude<OnSubscribeResultResult['onNext'], void>[] = [];
317-
const onEndHandler: Exclude<OnSubscribeResultResult['onEnd'], void>[] = [];
317+
const onNextHandler: OnSubscribeResultResultOnNextHook[] = [];
318+
const onEndHandler: OnSubscribeResultResultOnEndHook[] = [];
318319

319320
for (const afterCb of afterCalls) {
320321
const hookResult = afterCb({
@@ -333,22 +334,20 @@ export function createEnvelopOrchestrator<PluginsContext = any>(plugins: Plugin[
333334
}
334335
}
335336

336-
if (isAsyncIterable(result)) {
337-
if (onNextHandler.length) {
338-
result = mapAsyncIterator(result, async result => {
339-
for (const onNext of onNextHandler) {
340-
await onNext({ result, setResult: newResult => (result = newResult) });
341-
}
342-
return result;
343-
});
344-
}
345-
if (onEndHandler.length) {
346-
result = finalAsyncIterator(result, () => {
347-
for (const onEnd of onEndHandler) {
348-
onEnd();
349-
}
350-
});
351-
}
337+
if (onNextHandler.length && isAsyncIterable(result)) {
338+
result = mapAsyncIterator(result, async result => {
339+
for (const onNext of onNextHandler) {
340+
await onNext({ result, setResult: newResult => (result = newResult) });
341+
}
342+
return result;
343+
});
344+
}
345+
if (onEndHandler.length && isAsyncIterable(result)) {
346+
result = finalAsyncIterator(result, () => {
347+
for (const onEnd of onEndHandler) {
348+
onEnd();
349+
}
350+
});
352351
}
353352
return result;
354353
});

packages/types/src/hooks.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,15 @@ export type OnSubscribeResultEventPayload = {
169169
result: AsyncIterableIterator<ExecutionResult> | ExecutionResult;
170170
setResult: (newResult: AsyncIterableIterator<ExecutionResult> | ExecutionResult) => void;
171171
};
172-
export type OnSubscribeResultResultOnNextPayload = { result: ExecutionResult; setResult: (newResult: ExecutionResult) => void };
172+
export type OnSubscribeResultResultOnNextHookPayload = {
173+
result: ExecutionResult;
174+
setResult: (newResult: ExecutionResult) => void;
175+
};
176+
export type OnSubscribeResultResultOnNextHook = (payload: OnSubscribeResultResultOnNextHookPayload) => void | Promise<void>;
177+
export type OnSubscribeResultResultOnEndHook = () => void;
173178
export type OnSubscribeResultResult = {
174-
onNext?: (options: OnSubscribeResultResultOnNextPayload) => void | Promise<void>;
175-
onEnd?: () => void;
179+
onNext?: OnSubscribeResultResultOnNextHook;
180+
onEnd?: OnSubscribeResultResultOnEndHook;
176181
};
177182
export type SubscribeResultHook = (options: OnSubscribeResultEventPayload) => void | OnSubscribeResultResult;
178183
export type OnSubscribeHookResult<ContextType> = {

packages/types/src/utils.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,4 @@ export type Unarray<T> = T extends Array<infer U> ? U : T;
2828
export type ArbitraryObject = Record<string | number | symbol, any>;
2929
export type PromiseOrValue<T> = T | Promise<T>;
3030
export type AsyncIterableIteratorOrValue<T> = T | AsyncIterableIterator<T>;
31-
export type UnwrapPromiseValue<TValue> = TValue extends Promise<infer TWrappedValue> ? TWrappedValue : TValue;
3231
export type Maybe<T> = T | null | undefined;

0 commit comments

Comments
 (0)