Skip to content

Commit d58652c

Browse files
committed
feat(types): allow Service<T> to handle non-WorkerEntrypoint default export
1 parent 3920ddd commit d58652c

File tree

5 files changed

+41
-11
lines changed

5 files changed

+41
-11
lines changed

src/workerd/api/http.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,11 @@ class Fetcher: public JsRpcClientProvider {
436436
});
437437
}
438438
JSG_TS_DEFINE(
439-
type Service<T extends Rpc.WorkerEntrypointBranded | undefined = undefined> = Fetcher<T>;
439+
type Service<T = undefined> = Fetcher<
440+
T extends new (...args: any[]) => infer EntrypointClass
441+
? EntrypointClass extends Rpc.WorkerEntrypointBranded ? EntrypointClass : undefined
442+
: T extends Rpc.WorkerEntrypointBranded ? T : undefined
443+
>;
440444
);
441445

442446
if (!flags.getFetcherNoGetPutDelete()) {

types/generated-snapshot/experimental/index.d.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,8 +1761,15 @@ interface RequestInit<Cf = CfProperties> {
17611761
signal?: AbortSignal | null;
17621762
encodeResponseBody?: "automatic" | "manual";
17631763
}
1764-
type Service<T extends Rpc.WorkerEntrypointBranded | undefined = undefined> =
1765-
Fetcher<T>;
1764+
type Service<T = undefined> = Fetcher<
1765+
T extends new (...args: any[]) => infer EntrypointClass
1766+
? EntrypointClass extends Rpc.WorkerEntrypointBranded
1767+
? EntrypointClass
1768+
: undefined
1769+
: T extends Rpc.WorkerEntrypointBranded
1770+
? T
1771+
: undefined
1772+
>;
17661773
type Fetcher<
17671774
T extends Rpc.EntrypointBranded | undefined = undefined,
17681775
Reserved extends string = never,

types/generated-snapshot/experimental/index.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1769,9 +1769,15 @@ export interface RequestInit<Cf = CfProperties> {
17691769
signal?: AbortSignal | null;
17701770
encodeResponseBody?: "automatic" | "manual";
17711771
}
1772-
export type Service<
1773-
T extends Rpc.WorkerEntrypointBranded | undefined = undefined,
1774-
> = Fetcher<T>;
1772+
export type Service<T = undefined> = Fetcher<
1773+
T extends new (...args: any[]) => infer EntrypointClass
1774+
? EntrypointClass extends Rpc.WorkerEntrypointBranded
1775+
? EntrypointClass
1776+
: undefined
1777+
: T extends Rpc.WorkerEntrypointBranded
1778+
? T
1779+
: undefined
1780+
>;
17751781
export type Fetcher<
17761782
T extends Rpc.EntrypointBranded | undefined = undefined,
17771783
Reserved extends string = never,

types/generated-snapshot/latest/index.d.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,8 +1727,15 @@ interface RequestInit<Cf = CfProperties> {
17271727
signal?: AbortSignal | null;
17281728
encodeResponseBody?: "automatic" | "manual";
17291729
}
1730-
type Service<T extends Rpc.WorkerEntrypointBranded | undefined = undefined> =
1731-
Fetcher<T>;
1730+
type Service<T = undefined> = Fetcher<
1731+
T extends new (...args: any[]) => infer EntrypointClass
1732+
? EntrypointClass extends Rpc.WorkerEntrypointBranded
1733+
? EntrypointClass
1734+
: undefined
1735+
: T extends Rpc.WorkerEntrypointBranded
1736+
? T
1737+
: undefined
1738+
>;
17321739
type Fetcher<
17331740
T extends Rpc.EntrypointBranded | undefined = undefined,
17341741
Reserved extends string = never,

types/generated-snapshot/latest/index.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,9 +1735,15 @@ export interface RequestInit<Cf = CfProperties> {
17351735
signal?: AbortSignal | null;
17361736
encodeResponseBody?: "automatic" | "manual";
17371737
}
1738-
export type Service<
1739-
T extends Rpc.WorkerEntrypointBranded | undefined = undefined,
1740-
> = Fetcher<T>;
1738+
export type Service<T = undefined> = Fetcher<
1739+
T extends new (...args: any[]) => infer EntrypointClass
1740+
? EntrypointClass extends Rpc.WorkerEntrypointBranded
1741+
? EntrypointClass
1742+
: undefined
1743+
: T extends Rpc.WorkerEntrypointBranded
1744+
? T
1745+
: undefined
1746+
>;
17411747
export type Fetcher<
17421748
T extends Rpc.EntrypointBranded | undefined = undefined,
17431749
Reserved extends string = never,

0 commit comments

Comments
 (0)