@@ -74,37 +74,38 @@ export class Client extends Assets {
7474 ) : Promise < Webflow . AssetUpload > {
7575 /** 1. Generate the hash */
7676 const { file, fileName, parentFolder} = request ;
77- let tempBuffer : Buffer | null = null ;
77+ let tempBuffer : Buffer | undefined ;
7878 if ( typeof file === 'string' ) {
7979 const arrBuffer = await this . _getBufferFromUrl ( file ) ;
8080 tempBuffer = Buffer . from ( arrBuffer ) ;
8181 } else if ( file instanceof ArrayBuffer ) {
8282 tempBuffer = Buffer . from ( file ) ;
8383 }
84- if ( tempBuffer === null ) {
85- throw new Error ( 'Invalid file' ) ;
84+ if ( ! Buffer . isBuffer ( tempBuffer ) ) {
85+ throw new Error ( 'Invalid Buffer: Cannot create a buffer from the provided file' ) ;
8686 }
87- const hash = crypto . createHash ( "md5" ) . update ( Buffer . from ( tempBuffer ) ) . digest ( "hex" ) ;
87+ const hash = crypto . createHash ( "md5" ) . update ( tempBuffer ) . digest ( "hex" ) ;
8888
8989 const wfUploadRequest = {
9090 fileName,
9191 fileHash : hash ,
92+ ...( parentFolder && { parentFolder } ) ,
9293 } as Webflow . AssetsCreateRequest ;
93- if ( parentFolder ) {
94- wfUploadRequest [ "parentFolder" ] = parentFolder ;
95- }
9694
9795
9896 /** 2. Create the Asset Metadata in Webflow */
9997 let wfUploadedAsset : Webflow . AssetUpload ;
10098 try {
10199 wfUploadedAsset = await this . create ( siteId , wfUploadRequest , requestOptions ) ;
100+ if ( ! wfUploadedAsset || ! wfUploadedAsset . uploadDetails ) {
101+ throw new Error ( "Failed to create Asset metadata in Webflow, no S3 headers returned" ) ;
102+ }
102103 } catch ( error ) {
103104 throw new Error ( `Failed to create Asset metadata in Webflow: ${ ( error as Error ) . message } ` ) ;
104105 }
105106
106107 /** 3. Create FormData with S3 bucket signature */
107- const wfUploadDetails = wfUploadedAsset . uploadDetails ! ;
108+ const wfUploadDetails = wfUploadedAsset . uploadDetails ;
108109 const uploadUrl = wfUploadedAsset . uploadUrl as string ;
109110 // Temp workaround since headers from response are being camelCased and we need them to be exact when sending to S3
110111 const headerMappings = {
@@ -126,10 +127,6 @@ export class Client extends Assets {
126127 formDataToUpload . append ( key , transformedUploadHeaders [ key ] ) ;
127128 } ) ;
128129
129- if ( ! Buffer . isBuffer ( tempBuffer ) ) {
130- throw new Error ( "Invalid Buffer: Expected a Buffer instance from file" ) ;
131- }
132-
133130 formDataToUpload . append ( "file" , tempBuffer , {
134131 filename : fileName ,
135132 contentType : wfUploadedAsset . contentType || "application/octet-stream" ,
0 commit comments