@@ -285,12 +285,12 @@ export interface R2Config<TR2 extends R2BucketConstraint = R2BucketConstraint> {
285285type InferFieldType < T extends FieldAttribute > = T [ "type" ] extends "string"
286286 ? string
287287 : T [ "type" ] extends "number"
288- ? number
289- : T [ "type" ] extends "boolean"
290- ? boolean
291- : T [ "type" ] extends "date"
292- ? Date
293- : any ;
288+ ? number
289+ : T [ "type" ] extends "boolean"
290+ ? boolean
291+ : T [ "type" ] extends "date"
292+ ? Date
293+ : any ;
294294
295295// Convert Record<string, FieldAttribute> to actual typed object
296296type InferAdditionalFields < T extends Record < string , FieldAttribute > > = {
@@ -320,57 +320,57 @@ export type FileMetadataWithAdditionalFields<T extends Record<string, FieldAttri
320320// Infer R2Config types from runtime definition (eliminates double definition!)
321321export type InferR2Config < T extends R2Config < R2BucketConstraint > > =
322322 T [ "additionalFields" ] extends Record < string , FieldAttribute >
323- ? Omit < T , "hooks" > & {
324- hooks ?: {
325- upload ?: {
326- before ?: (
327- file : File & {
328- userId : string ;
329- r2Key : string ;
330- metadata : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ;
331- } ,
332- ctx : AuthContext
333- ) => Promise < void | null | undefined > ;
334-
335- after ?: (
336- file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
337- ctx : AuthContext
338- ) => Promise < void > ;
339- } ;
340-
341- download ?: {
342- before ?: (
343- file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
344- ctx : AuthContext
345- ) => Promise < void | null | undefined > ;
346-
347- after ?: (
348- file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
349- ctx : AuthContext
350- ) => Promise < void > ;
351- } ;
352-
353- delete ?: {
354- before ?: (
355- file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
356- ctx : AuthContext
357- ) => Promise < void | null | undefined > ;
358-
359- after ?: (
360- file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
361- ctx : AuthContext
362- ) => Promise < void > ;
363- } ;
364-
365- list ?: {
366- before ?: ( userId : string , ctx : AuthContext ) => Promise < void | null | undefined > ;
367-
368- after ?: ( userId : string , files : any , ctx : AuthContext ) => Promise < void > ;
369- } ;
370- } ;
371- }
372- : T ;
373-
323+ ? Omit < T , "hooks" > & {
324+ hooks ?: {
325+ upload ?: {
326+ before ?: (
327+ file : File & {
328+ userId : string ;
329+ r2Key : string ;
330+ metadata : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ;
331+ } ,
332+ ctx : AuthContext
333+ ) => Promise < void | null | undefined > ;
334+
335+ after ?: (
336+ file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
337+ ctx : AuthContext
338+ ) => Promise < void > ;
339+ } ;
340+
341+ download ?: {
342+ before ?: (
343+ file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
344+ ctx : AuthContext
345+ ) => Promise < void | null | undefined > ;
346+
347+ after ?: (
348+ file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
349+ ctx : AuthContext
350+ ) => Promise < void > ;
351+ } ;
352+
353+ delete ?: {
354+ before ?: (
355+ file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
356+ ctx : AuthContext
357+ ) => Promise < void | null | undefined > ;
358+
359+ after ?: (
360+ file : FileMetadataWithAdditionalFields < T [ "additionalFields" ] > ,
361+ ctx : AuthContext
362+ ) => Promise < void > ;
363+ } ;
364+
365+ list ?: {
366+ before ?: ( userId : string , ctx : AuthContext ) => Promise < void | null | undefined > ;
367+
368+ after ?: ( userId : string , files : any , ctx : AuthContext ) => Promise < void > ;
369+ } ;
370+ } ;
371+ }
372+ : T ;
373+
374374/**
375375 * Helper to create a fully typed R2 config with automatic type inference
376376 *
0 commit comments