diff --git a/.changeset/add-service-unavailable-error-name.md b/.changeset/add-service-unavailable-error-name.md new file mode 100644 index 0000000000..78647f7a56 --- /dev/null +++ b/.changeset/add-service-unavailable-error-name.md @@ -0,0 +1,5 @@ +--- +'@backstage/errors': patch +--- + +Added explicit `name` property to `ServiceUnavailableError` for consistency with all other error classes, making it resilient to minification. diff --git a/packages/errors/report.api.md b/packages/errors/report.api.md index 4bb50cc5ea..5026f8d872 100644 --- a/packages/errors/report.api.md +++ b/packages/errors/report.api.md @@ -151,7 +151,10 @@ export function serializeError( ): SerializedError; // @public -export class ServiceUnavailableError extends CustomErrorBase {} +export class ServiceUnavailableError extends CustomErrorBase { + // (undocumented) + name: 'ServiceUnavailableError'; +} // @public export function stringifyError(error: unknown): string; diff --git a/packages/errors/src/errors/common.ts b/packages/errors/src/errors/common.ts index 861c3a7c3a..a1a9cfbf2d 100644 --- a/packages/errors/src/errors/common.ts +++ b/packages/errors/src/errors/common.ts @@ -100,7 +100,9 @@ export class NotImplementedError extends CustomErrorBase { * * @public */ -export class ServiceUnavailableError extends CustomErrorBase {} +export class ServiceUnavailableError extends CustomErrorBase { + name = 'ServiceUnavailableError' as const; +} /** * An error that forwards an underlying cause with additional context in the message. diff --git a/packages/errors/src/serialization/error.test.ts b/packages/errors/src/serialization/error.test.ts index 6418170f98..2c462610da 100644 --- a/packages/errors/src/serialization/error.test.ts +++ b/packages/errors/src/serialization/error.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { NotModifiedError } from '../errors'; +import { NotModifiedError, ServiceUnavailableError } from '../errors'; import { deserializeError, serializeError, stringifyError } from './error'; class CustomError extends Error { @@ -77,6 +77,16 @@ describe('serialization', () => { expect(withoutStack2.cause.stack).not.toBeDefined(); }); + it('round-trips a ServiceUnavailableError', () => { + const before = new ServiceUnavailableError('service down'); + const after = deserializeError( + serializeError(before, { includeStack: true }), + ); + expect(after.name).toEqual('ServiceUnavailableError'); + expect(after.message).toEqual('service down'); + expect(after.stack).toEqual(before.stack); + }); + it('stringifies all supported forms', () => { expect(stringifyError({})).toEqual("unknown error '[object Object]'"); expect(