Skip to content

Commit

Permalink
fix: change WorkflowStep into an abstract class (#2916)
Browse files Browse the repository at this point in the history
For some reason, Typescript resolves types in a different away compared
to abstract classes. As a consequence, it would not apply the
overloading properly and always treats WorkflowStep.do as a 3 argument function
  • Loading branch information
LuisDuarte1 authored Oct 14, 2024
1 parent 5b740e6 commit 03b071f
Showing 1 changed file with 4 additions and 18 deletions.
22 changes: 4 additions & 18 deletions types/defines/rpc.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,26 +233,12 @@ declare module "cloudflare:workers" {
timestamp: Date;
};

export type WorkflowStep = {
do:
| (<T extends Rpc.Serializable<T>>(
name: string,
callback: () => Promise<T>
) => Promise<T>)
| (<T extends Rpc.Serializable<T>>(
name: string,
config: WorkflowStepConfig,
callback: () => Promise<T>
) => Promise<T>)
| (<T extends Rpc.Serializable<T>>(
name: string,
config: WorkflowStepConfig | (() => Promise<T>),
callback?: () => Promise<T>
) => Promise<T>);

export abstract class WorkflowStep {
do<T extends Rpc.Serializable<T>>(name: string, callback: () => Promise<T>): Promise<T>;
do<T extends Rpc.Serializable<T>>(name: string, config: WorkflowStepConfig, callback: () => Promise<T>): Promise<T>;
sleep: (name: string, duration: WorkflowSleepDuration) => Promise<void>;
sleepUntil: (name: string, timestamp: Date | number) => Promise<void>;
};
}

export abstract class WorkflowEntrypoint<
Env = unknown,
Expand Down

0 comments on commit 03b071f

Please sign in to comment.