diff --git a/packages/util/CHANGELOG.md b/packages/util/CHANGELOG.md index 9881648..c5510cd 100644 --- a/packages/util/CHANGELOG.md +++ b/packages/util/CHANGELOG.md @@ -1,3 +1,15 @@ +# [@cloudinary-util/util-v4.0.0-beta.1](https://github.com/cloudinary-community/cloudinary-util/compare/@cloudinary-util/util-v3.3.2...@cloudinary-util/util-v4.0.0-beta.1) (2024-10-08) + + +### Features + +* Log X-Cld-Error header in dev mode ([#211](https://github.com/cloudinary-community/cloudinary-util/issues/211)) ([2a5251b](https://github.com/cloudinary-community/cloudinary-util/commit/2a5251b83a44e22d11d4abf9def3bbd975a25f8c)) + + +### BREAKING CHANGES + +* pollForProcessingImage now returns an object instead of a boolean + # [@cloudinary-util/util-v3.3.2](https://github.com/cloudinary-community/cloudinary-util/compare/@cloudinary-util/util-v3.3.1...@cloudinary-util/util-v3.3.2) (2024-08-28) diff --git a/packages/util/package.json b/packages/util/package.json index 514216f..0a7ebcb 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@cloudinary-util/util", - "version": "3.3.2", + "version": "4.0.0-beta.1", "type": "module", "main": "./dist/index.cjs", "types": "./dist/index.d.cts", diff --git a/packages/util/src/lib/cloudinary.ts b/packages/util/src/lib/cloudinary.ts index ccc7e81..bfc2e45 100644 --- a/packages/util/src/lib/cloudinary.ts +++ b/packages/util/src/lib/cloudinary.ts @@ -160,9 +160,15 @@ export interface PollForProcessingImageOptions { * Poll for an image that hasn't finished processing. * Will call itself recurisvely until an image is found, or it fails to fetch. */ +export interface PollForProcessingImageResponse { + status: number; + success: boolean; + error?: string; +} + export async function pollForProcessingImage( options: PollForProcessingImageOptions, -): Promise { +): Promise { try { const response = await fetch(options.src); @@ -171,8 +177,23 @@ export async function pollForProcessingImage( return await pollForProcessingImage(options); } - return response.ok; - } catch { - return false; + if (!response.ok) { + return { + success: false, + status: response.status, + error: response.headers.get('x-cld-error') || 'Unknown error', + }; + } + + return { + success: true, + status: response.status, + }; + } catch (error) { + return { + success: false, + status: 500, + error: (error as Error).message || 'Network error', + }; } }