@@ -364,13 +364,12 @@ export async function convertBindingsToCfWorkerInitBindings(
364364
365365 const fetchers : Record < string , ServiceFetch > = { } ;
366366
367- const iterator : [ string , WorkerMetadataBinding | Binding ] [ ] = Array . isArray (
368- inputBindings
369- )
370- ? inputBindings . map ( ( b ) => [ b . name , b ] )
371- : Object . entries ( inputBindings ?? { } ) ;
367+ const bindingEntries : [ string , WorkerMetadataBinding | Binding ] [ ] =
368+ Array . isArray ( inputBindings )
369+ ? inputBindings . map ( ( b ) => [ b . name , b ] )
370+ : Object . entries ( inputBindings ?? { } ) ;
372371
373- for ( const [ name , binding ] of iterator ) {
372+ for ( const [ name , binding ] of bindingEntries ) {
374373 if ( binding . type === "plain_text" ) {
375374 bindings . vars ??= { } ;
376375 bindings . vars [ name ] = "value" in binding ? binding . value : binding . text ;
@@ -380,13 +379,13 @@ export async function convertBindingsToCfWorkerInitBindings(
380379 } else if ( binding . type === "kv_namespace" ) {
381380 bindings . kv_namespaces ??= [ ] ;
382381 bindings . kv_namespaces . push ( {
383- ...binding ,
382+ ...omitType ( binding ) ,
384383 binding : name ,
385384 id : "namespace_id" in binding ? binding . namespace_id : binding . id ,
386385 } ) ;
387386 } else if ( binding . type === "send_email" ) {
388387 bindings . send_email ??= [ ] ;
389- bindings . send_email . push ( { ...binding , name : name } ) ;
388+ bindings . send_email . push ( { ...omitType ( binding ) , name : name } ) ;
390389 } else if ( binding . type === "wasm_module" ) {
391390 if ( ! ( "source" in binding ) ) {
392391 continue ;
@@ -414,47 +413,53 @@ export async function convertBindingsToCfWorkerInitBindings(
414413 bindings . data_blobs ??= { } ;
415414 bindings . data_blobs [ name ] = await getBinaryFileContents ( binding . source ) ;
416415 } else if ( binding . type === "browser" ) {
417- bindings . browser = { ...binding , binding : name } ;
416+ bindings . browser = { ...omitType ( binding ) , binding : name } ;
418417 } else if ( binding . type === "ai" ) {
419- bindings . ai = { ...binding , binding : name } ;
418+ bindings . ai = { ...omitType ( binding ) , binding : name } ;
420419 } else if ( binding . type === "images" ) {
421- bindings . images = { ...binding , binding : name } ;
420+ bindings . images = { ...omitType ( binding ) , binding : name } ;
422421 } else if ( binding . type === "version_metadata" ) {
423422 bindings . version_metadata = { binding : name } ;
424423 } else if ( binding . type === "durable_object_namespace" ) {
425424 bindings . durable_objects ??= { bindings : [ ] } ;
426- bindings . durable_objects . bindings . push ( { ...binding , name : name } ) ;
425+ bindings . durable_objects . bindings . push ( {
426+ ...omitType ( binding ) ,
427+ name : name ,
428+ } ) ;
427429 } else if ( binding . type === "queue" ) {
428430 bindings . queues ??= [ ] ;
429- bindings . queues . push ( { ...binding , binding : name } ) ;
431+ bindings . queues . push ( { ...omitType ( binding ) , binding : name } ) ;
430432 } else if ( binding . type === "r2_bucket" ) {
431433 bindings . r2_buckets ??= [ ] ;
432- bindings . r2_buckets . push ( { ...binding , binding : name } ) ;
434+ bindings . r2_buckets . push ( { ...omitType ( binding ) , binding : name } ) ;
433435 } else if ( binding . type === "d1" ) {
434436 bindings . d1_databases ??= [ ] ;
435437 bindings . d1_databases . push ( {
436- ...binding ,
438+ ...omitType ( binding ) ,
437439 binding : name ,
438440 database_id : "id" in binding ? binding . id : binding . database_id ,
439441 } ) ;
440442 } else if ( binding . type === "vectorize" ) {
441443 bindings . vectorize ??= [ ] ;
442- bindings . vectorize . push ( { ...binding , binding : name } ) ;
444+ bindings . vectorize . push ( { ...omitType ( binding ) , binding : name } ) ;
443445 } else if ( binding . type === "hyperdrive" ) {
444446 bindings . hyperdrive ??= [ ] ;
445- bindings . hyperdrive . push ( { ...binding , binding : name } ) ;
447+ bindings . hyperdrive . push ( { ...omitType ( binding ) , binding : name } ) ;
446448 } else if ( binding . type === "service" ) {
447449 bindings . services ??= [ ] ;
448- bindings . services . push ( { ...binding , binding : name } ) ;
450+ bindings . services . push ( { ...omitType ( binding ) , binding : name } ) ;
449451 } else if ( binding . type === "fetcher" ) {
450452 fetchers [ name ] = binding . fetcher ;
451453 } else if ( binding . type === "analytics_engine" ) {
452454 bindings . analytics_engine_datasets ??= [ ] ;
453- bindings . analytics_engine_datasets . push ( { ...binding , binding : name } ) ;
455+ bindings . analytics_engine_datasets . push ( {
456+ ...omitType ( binding ) ,
457+ binding : name ,
458+ } ) ;
454459 } else if ( binding . type === "dispatch_namespace" ) {
455460 bindings . dispatch_namespaces ??= [ ] ;
456461 bindings . dispatch_namespaces . push ( {
457- ...binding ,
462+ ...omitType ( binding ) ,
458463 binding : name ,
459464 outbound :
460465 binding . outbound && "worker" in binding . outbound
@@ -463,31 +468,34 @@ export async function convertBindingsToCfWorkerInitBindings(
463468 } ) ;
464469 } else if ( binding . type === "mtls_certificate" ) {
465470 bindings . mtls_certificates ??= [ ] ;
466- bindings . mtls_certificates . push ( { ...binding , binding : name } ) ;
471+ bindings . mtls_certificates . push ( { ...omitType ( binding ) , binding : name } ) ;
467472 } else if ( binding . type === "pipeline" ) {
468473 bindings . pipelines ??= [ ] ;
469- bindings . pipelines . push ( { ...binding , binding : name } ) ;
474+ bindings . pipelines . push ( { ...omitType ( binding ) , binding : name } ) ;
470475 } else if ( binding . type === "logfwdr" ) {
471476 bindings . logfwdr ??= { bindings : [ ] } ;
472- bindings . logfwdr . bindings . push ( { ...binding , name : name } ) ;
477+ bindings . logfwdr . bindings . push ( { ...omitType ( binding ) , name : name } ) ;
473478 } else if ( binding . type === "workflow" ) {
474479 bindings . workflows ??= [ ] ;
475- bindings . workflows . push ( { ...binding , binding : name } ) ;
480+ bindings . workflows . push ( { ...omitType ( binding ) , binding : name } ) ;
476481 } else if ( binding . type === "secrets_store_secret" ) {
477482 bindings . secrets_store_secrets ??= [ ] ;
478- bindings . secrets_store_secrets . push ( { ...binding , binding : name } ) ;
483+ bindings . secrets_store_secrets . push ( {
484+ ...omitType ( binding ) ,
485+ binding : name ,
486+ } ) ;
479487 } else if ( binding . type === "unsafe_hello_world" ) {
480488 bindings . unsafe_hello_world ??= [ ] ;
481- bindings . unsafe_hello_world . push ( { ...binding , binding : name } ) ;
489+ bindings . unsafe_hello_world . push ( { ...omitType ( binding ) , binding : name } ) ;
482490 } else if ( binding . type === "ratelimit" ) {
483491 bindings . ratelimits ??= [ ] ;
484- bindings . ratelimits . push ( { ...binding , name : name } ) ;
492+ bindings . ratelimits . push ( { ...omitType ( binding ) , name : name } ) ;
485493 } else if ( binding . type === "worker_loader" ) {
486494 bindings . worker_loaders ??= [ ] ;
487- bindings . worker_loaders . push ( { ...binding , binding : name } ) ;
495+ bindings . worker_loaders . push ( { ...omitType ( binding ) , binding : name } ) ;
488496 } else if ( binding . type === "vpc_service" ) {
489497 bindings . vpc_services ??= [ ] ;
490- bindings . vpc_services . push ( { ...binding , binding : name } ) ;
498+ bindings . vpc_services . push ( { ...omitType ( binding ) , binding : name } ) ;
491499 } else if ( isUnsafeBindingType ( binding . type ) ) {
492500 bindings . unsafe ??= {
493501 bindings : [ ] ,
@@ -511,6 +519,13 @@ function isUnsafeBindingType(type: string): type is `unsafe_${string}` {
511519 return type . startsWith ( "unsafe_" ) ;
512520}
513521
522+ function omitType < T extends Record < string , unknown > > ( {
523+ type : _ ,
524+ ...value
525+ } : T ) : Omit < T , "type" > {
526+ return value ;
527+ }
528+
514529export function extractBindingsOfType <
515530 Type extends NonNullable < StartDevWorkerOptions [ "bindings" ] > [ string ] [ "type" ] ,
516531> (
0 commit comments