firebase-js-sdk icon indicating copy to clipboard operation
firebase-js-sdk copied to clipboard

Set `FirebaseError` name to be calling constructors name

Open dlarocque opened this issue 4 months ago • 3 comments

We currently set the error name to be FirebaseError and make it readonly. This means that whenever subclasses of FirebaseError call super(), the name will be locked at FirebaseError. This results in those errors from subclasses looking like:

[StorageError [FirebaseError]: Firebase Storage: An unknown error occurred, please check the error payload for server response. (storage/unknown)] {
  code: 'storage/unknown',
  customData: { serverResponse: '' },
  status_: 404,
  _baseMessage: 'Firebase Storage: An unknown error occurred, please check the error payload for server response. (storage/unknown)'
}

Subclasses should provide their own name property, so we should instead set the error name to be the name of the calling constructor. So if we do throw new StorageError, name will be StorageError. This makes errors look like this instead:

[StorageError: Firebase Storage: An unknown error occurred, please check the error payload for server response. (storage/unknown)] {
  code: 'storage/unknown',
  customData: { serverResponse: '' },
  status_: 404,
  _baseMessage: 'Firebase Storage: An unknown error occurred, please check the error payload for server response. (storage/unknown)'
}

This change will apply to all SDKs that have subclasses of FirebaseError (VertexAI, Storage, Functions, Auth).

dlarocque avatar Sep 30 '24 20:09 dlarocque