From 9663c82624c9a30815c95210f7ac94b635551a83 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Wed, 6 May 2026 15:33:28 +0200 Subject: [PATCH] fix(errors): set this.name in every domain error constructor (R6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spec reviewer caught a systemic gap during Task 6 (navigation) review: Plan 8 left every feature's domain error class with a constructor that didn't set this.name = ''. Plan 9 spec R6 requires it. Fixed across all 10 error files: - auth: AuthenticationError, UnauthenticatedError, UnauthorizedError, InputParseError - blog: ArticleNotFoundError, InputParseError - marketing-pages: PageNotFoundError, InputParseError - navigation: HeaderNotFoundError, InputParseError - media: MediaNotFoundError, InputParseError Functionally a no-op — defineErrorMiddleware uses instanceof, not name — but ensures correct serialization, stack traces, and JSON inspection. Refactor log: §7 Spec: R6 --- packages/auth/src/entities/errors/auth.ts | 3 +++ packages/auth/src/entities/errors/common.ts | 1 + packages/blog/src/entities/errors/article.ts | 1 + packages/blog/src/entities/errors/common.ts | 1 + packages/marketing-pages/src/entities/errors/common.ts | 1 + packages/marketing-pages/src/entities/errors/page.ts | 1 + packages/media/src/entities/errors/common.ts | 1 + packages/media/src/entities/errors/media.ts | 1 + packages/navigation/src/entities/errors/common.ts | 1 + packages/navigation/src/entities/errors/header.ts | 1 + 10 files changed, 12 insertions(+) diff --git a/packages/auth/src/entities/errors/auth.ts b/packages/auth/src/entities/errors/auth.ts index 39cbb76..24d76ac 100644 --- a/packages/auth/src/entities/errors/auth.ts +++ b/packages/auth/src/entities/errors/auth.ts @@ -1,17 +1,20 @@ export class AuthenticationError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "AuthenticationError"; } } export class UnauthenticatedError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "UnauthenticatedError"; } } export class UnauthorizedError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "UnauthorizedError"; } } diff --git a/packages/auth/src/entities/errors/common.ts b/packages/auth/src/entities/errors/common.ts index 18bb07a..40b2976 100644 --- a/packages/auth/src/entities/errors/common.ts +++ b/packages/auth/src/entities/errors/common.ts @@ -1,5 +1,6 @@ export class InputParseError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "InputParseError"; } } diff --git a/packages/blog/src/entities/errors/article.ts b/packages/blog/src/entities/errors/article.ts index acebd31..0969550 100644 --- a/packages/blog/src/entities/errors/article.ts +++ b/packages/blog/src/entities/errors/article.ts @@ -1,5 +1,6 @@ export class ArticleNotFoundError extends Error { constructor(message = "Article not found", options?: ErrorOptions) { super(message, options); + this.name = "ArticleNotFoundError"; } } diff --git a/packages/blog/src/entities/errors/common.ts b/packages/blog/src/entities/errors/common.ts index 18bb07a..40b2976 100644 --- a/packages/blog/src/entities/errors/common.ts +++ b/packages/blog/src/entities/errors/common.ts @@ -1,5 +1,6 @@ export class InputParseError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "InputParseError"; } } diff --git a/packages/marketing-pages/src/entities/errors/common.ts b/packages/marketing-pages/src/entities/errors/common.ts index 18bb07a..40b2976 100644 --- a/packages/marketing-pages/src/entities/errors/common.ts +++ b/packages/marketing-pages/src/entities/errors/common.ts @@ -1,5 +1,6 @@ export class InputParseError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "InputParseError"; } } diff --git a/packages/marketing-pages/src/entities/errors/page.ts b/packages/marketing-pages/src/entities/errors/page.ts index af88b1e..1ddbc29 100644 --- a/packages/marketing-pages/src/entities/errors/page.ts +++ b/packages/marketing-pages/src/entities/errors/page.ts @@ -1,5 +1,6 @@ export class PageNotFoundError extends Error { constructor(message = "Page not found", options?: ErrorOptions) { super(message, options); + this.name = "PageNotFoundError"; } } diff --git a/packages/media/src/entities/errors/common.ts b/packages/media/src/entities/errors/common.ts index 18bb07a..40b2976 100644 --- a/packages/media/src/entities/errors/common.ts +++ b/packages/media/src/entities/errors/common.ts @@ -1,5 +1,6 @@ export class InputParseError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "InputParseError"; } } diff --git a/packages/media/src/entities/errors/media.ts b/packages/media/src/entities/errors/media.ts index 3628fc3..0fda7e0 100644 --- a/packages/media/src/entities/errors/media.ts +++ b/packages/media/src/entities/errors/media.ts @@ -1,5 +1,6 @@ export class MediaNotFoundError extends Error { constructor(message = "Media not found", options?: ErrorOptions) { super(message, options); + this.name = "MediaNotFoundError"; } } diff --git a/packages/navigation/src/entities/errors/common.ts b/packages/navigation/src/entities/errors/common.ts index 18bb07a..40b2976 100644 --- a/packages/navigation/src/entities/errors/common.ts +++ b/packages/navigation/src/entities/errors/common.ts @@ -1,5 +1,6 @@ export class InputParseError extends Error { constructor(message: string, options?: ErrorOptions) { super(message, options); + this.name = "InputParseError"; } } diff --git a/packages/navigation/src/entities/errors/header.ts b/packages/navigation/src/entities/errors/header.ts index 8e23199..b312011 100644 --- a/packages/navigation/src/entities/errors/header.ts +++ b/packages/navigation/src/entities/errors/header.ts @@ -1,5 +1,6 @@ export class HeaderNotFoundError extends Error { constructor(message = "Header not found", options?: ErrorOptions) { super(message, options); + this.name = "HeaderNotFoundError"; } }