1- import { DurableObject , WorkerEntrypoint } from "cloudflare:workers" ;
1+ import {
2+ DurableObject ,
3+ WorkerEntrypoint ,
4+ WorkflowEntrypoint ,
5+ } from "cloudflare:workers" ;
26import { bindings } from "../bindings" ;
37import { defineWorker } from "../definition" ;
48import { exports as workerExports } from "../exports" ;
5- import type { DurableObjectBinding , WorkerBinding } from "../bindings" ;
9+ import type {
10+ DurableObjectBinding ,
11+ WorkerBinding ,
12+ WorkflowBinding ,
13+ } from "../bindings" ;
614import type { InferEnv , UnwrapConfig } from "../inference" ;
715
816class Admin extends WorkerEntrypoint {
@@ -17,10 +25,13 @@ class Counter extends DurableObject {
1725 }
1826}
1927
28+ class GreetingWorkflow extends WorkflowEntrypoint { }
29+
2030const entrypoint = {
2131 default : { fetch : ( ) => new Response ( ) } ,
2232 Admin,
2333 Counter,
34+ GreetingWorkflow,
2435} ;
2536
2637const auxiliary = defineWorker ( {
@@ -29,6 +40,7 @@ const auxiliary = defineWorker({
2940 entrypoint,
3041 exports : {
3142 Counter : workerExports . durableObject ( { storage : "sqlite" } ) ,
43+ GreetingWorkflow : workerExports . workflow ( { name : "greeting" } ) ,
3244 } ,
3345} ) ;
3446
@@ -56,6 +68,11 @@ const config = defineWorker({
5668 worker : auxiliary ,
5769 exportName : "Counter" ,
5870 } ) ,
71+ GREETING : bindings . workflow ( {
72+ name : "greeting" ,
73+ worker : auxiliary ,
74+ exportName : "GreetingWorkflow" ,
75+ } ) ,
5976 DIRECT_ADMIN : {
6077 type : "worker" ,
6178 worker : auxiliary ,
@@ -80,6 +97,13 @@ bindings.durableObject({
8097 exportName : "Admin" ,
8198} ) ;
8299
100+ bindings . workflow ( {
101+ name : "greeting" ,
102+ worker : auxiliary ,
103+ // @ts -expect-error Only configured Workflow exports are accepted.
104+ exportName : "Admin" ,
105+ } ) ;
106+
83107type Equal < T , U > =
84108 ( < V > ( ) => V extends T ? 1 : 2 ) extends < V > ( ) => V extends U ? 1 : 2
85109 ? true
@@ -94,10 +118,15 @@ export type WorkerExportNameTest = Assert<
94118export type DurableObjectExportNameTest = Assert <
95119 Equal < DurableObjectBinding < Auxiliary > [ "exportName" ] , "Counter" >
96120> ;
121+ export type WorkflowExportNameTest = Assert <
122+ Equal < WorkflowBinding < Auxiliary > [ "exportName" ] , "GreetingWorkflow" >
123+ > ;
97124// @ts -expect-error Worker binding export names come from the referenced Worker.
98125export type InvalidWorkerExportNameTest = WorkerBinding < Auxiliary , "Counter" > ;
99126// @ts -expect-error Durable Object export names come from the referenced Worker.
100127export type InvalidDoExportNameTest = DurableObjectBinding < Auxiliary , "Admin" > ;
128+ // @ts -expect-error Workflow export names come from the referenced Worker.
129+ export type InvalidWorkflowExportNameTest = WorkflowBinding < Auxiliary , "Admin" > ;
101130export type AdminBindingTest = Assert < Equal < Env [ "ADMIN" ] , Fetcher < Admin > > > ;
102131export type DefaultBindingTest = Assert < Equal < Env [ "DEFAULT" ] , Fetcher > > ;
103132export type FactoryAdminBindingTest = Assert <
@@ -109,4 +138,7 @@ export type DirectAdminBindingTest = Assert<
109138export type CounterBindingTest = Assert <
110139 Equal < Env [ "COUNTER" ] , DurableObjectNamespace < Counter > >
111140> ;
141+ export type GreetingBindingTest = Assert <
142+ Env [ "GREETING" ] extends Workflow ? true : false
143+ > ;
112144export type ExternalBindingTest = Assert < Equal < Env [ "EXTERNAL" ] , Fetcher > > ;
0 commit comments