@@ -18,13 +18,12 @@ import type {
1818 LogLevel ,
1919 ServiceFetch ,
2020 StartDevWorkerInput ,
21- StartDevWorkerOptions ,
2221} from "./startDevWorker/types" ;
2322import type {
2423 FetcherScheduledOptions ,
2524 FetcherScheduledResult ,
2625} from "@cloudflare/workers-types/experimental" ;
27- import type { Config , RawConfig } from "@cloudflare/workers-utils" ;
26+ import type { Config , RawConfig , Trigger } from "@cloudflare/workers-utils" ;
2827import type { DispatchFetch , Json , RequestInfo } from "miniflare" ;
2928
3029export type InlineConfig = Omit < RawConfig , "env" > ;
@@ -131,6 +130,28 @@ function normalizeInlineWorkerConfig(
131130 return normalizedConfig ;
132131}
133132
133+ type ConfigRoute = NonNullable < Config [ "route" ] > | NonNullable < Config [ "routes" ] > [ number ] ;
134+
135+ function routeToTrigger ( route : ConfigRoute ) : Extract < Trigger , { type : "route" } > {
136+ return typeof route === "string"
137+ ? { type : "route" , pattern : route }
138+ : { type : "route" , ...route } ;
139+ }
140+
141+ function getInlineConfigTriggers ( config : Config ) : Trigger [ ] {
142+ const routes = [
143+ ...( config . route ? [ config . route ] : [ ] ) ,
144+ ...( config . routes ?? [ ] ) ,
145+ ] . map ( routeToTrigger ) ;
146+ const crons =
147+ config . triggers . crons ?. map < Extract < Trigger , { type : "cron" } > > ( ( cron ) => ( {
148+ type : "cron" ,
149+ cron,
150+ } ) ) ?? [ ] ;
151+
152+ return [ ...routes , ...crons ] ;
153+ }
154+
134155async function resolveFetchInput (
135156 input : RequestInfo ,
136157 session : ServerSession
@@ -195,10 +216,7 @@ function resolveWorkerInputs(
195216 bindings,
196217 migrations : inlineConfig ?. migrations ,
197218 containers : inlineConfig ?. containers ,
198- triggers : inlineConfig ?. triggers ?. crons ?. map ( ( cron ) => ( {
199- type : "cron" as const ,
200- cron,
201- } ) ) ,
219+ triggers : inlineConfig ? getInlineConfigTriggers ( inlineConfig ) : undefined ,
202220 tailConsumers : inlineConfig ?. tail_consumers ,
203221 streamingTailConsumers : inlineConfig ?. streaming_tail_consumers ,
204222 assets : inlineConfig ?. assets ?. directory ,
@@ -216,7 +234,8 @@ function resolveWorkerInputs(
216234 ( ( request ) => {
217235 return globalThis . fetch ( request . url , request ) ;
218236 } ) ,
219- multiworkerPrimary : isPrimaryWorker && isMultiworker ? true : undefined ,
237+ multiworkerPrimary : isMultiworker ? isPrimaryWorker : undefined ,
238+ inferOriginFromRoutes : false ,
220239 } ,
221240 build : {
222241 nodejsCompatMode : ( config ) => {
@@ -298,44 +317,6 @@ async function updateConfig(
298317 }
299318}
300319
301- // TODO: Do we want this?
302- function maybePrintScheduledWorkerWarning (
303- serverSession : ServerSession ,
304- url : URL
305- ) : void {
306- const workersWithCronTriggers = serverSession . devEnvs
307- . map ( ( devEnv ) => devEnv . config . latestConfig )
308- . filter ( ( config ) : config is StartDevWorkerOptions => config !== undefined )
309- . filter ( ( config ) =>
310- config . triggers ?. some ( ( trigger ) => trigger . type === "cron" )
311- ) ;
312-
313- if ( workersWithCronTriggers . length === 0 ) {
314- return ;
315- }
316-
317- const testScheduled = workersWithCronTriggers . every (
318- ( config ) => config . dev . testScheduled
319- ) ;
320- if ( testScheduled ) {
321- return ;
322- }
323-
324- const host =
325- url . hostname === "0.0.0.0" || url . hostname === "::"
326- ? "localhost"
327- : url . hostname . includes ( ":" )
328- ? `[${ url . hostname } ]`
329- : url . hostname ;
330-
331- logger . once . warn (
332- `Scheduled Workers are not automatically triggered during local development.\n` +
333- `To manually trigger a scheduled event, run:\n` +
334- ` curl "http://${ host } :${ url . port } /cdn-cgi/handler/scheduled"\n` +
335- `For more details, see https://developers.cloudflare.com/workers/configuration/cron-triggers/#test-cron-triggers-locally`
336- ) ;
337- }
338-
339320/**
340321 * Creates a worker server with a small, migration-focused API surface.
341322 *
@@ -415,9 +396,8 @@ export function createServer(options: ServerOptions): WorkerServer {
415396 const session = await createSession ( currentOptions , serverAuthHook ) ;
416397
417398 try {
418- const ready = await waitForPrimaryReady ( session ) ;
399+ await waitForPrimaryReady ( session ) ;
419400 serverSession = session ;
420- maybePrintScheduledWorkerWarning ( session , ready . url ) ;
421401 } catch ( error ) {
422402 await teardownSession ( session ) ;
423403 throw error ;
0 commit comments