refactor(features): split entities into models/ + errors/ subdirs

All 5 features (auth, blog, marketing-pages, navigation; media has no
entities yet) now follow Lazar's pattern:
- entities/<x>.ts → entities/models/<x>.ts
- entities/errors.ts → entities/errors/<domain>.ts + errors/common.ts

Updates all import paths across factories, contracts, tests, use cases,
controllers, repositories, integrations, and src/index.ts exports.

navigation divergence: had no errors.ts; errors/header.ts +
errors/common.ts added as new forward-looking stubs.

Refactor log: docs/superpowers/refactor-logs/2026-05-05-lazar-pattern-conformance.md
Spec: §5, §9.3

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-05 23:34:32 +02:00
parent 16ca82d7cf
commit a4c4ca6b6e
76 changed files with 150 additions and 99 deletions

View File

@@ -20,15 +20,47 @@ single follow-up pass.
## 1. File renames (before → after)
(populated as work progresses)
### Task 2: Entities split
Entity model moves (git mv — history preserved):
- `packages/auth/src/entities/user.ts``packages/auth/src/entities/models/user.ts`
- `packages/auth/src/entities/user.test.ts``packages/auth/src/entities/models/user.test.ts`
- `packages/auth/src/entities/session.ts``packages/auth/src/entities/models/session.ts`
- `packages/auth/src/entities/session.test.ts``packages/auth/src/entities/models/session.test.ts`
- `packages/auth/src/entities/cookie.ts``packages/auth/src/entities/models/cookie.ts`
- `packages/auth/src/entities/errors.test.ts``packages/auth/src/entities/errors/errors.test.ts`
- `packages/blog/src/entities/article.ts``packages/blog/src/entities/models/article.ts`
- `packages/blog/src/entities/article.test.ts``packages/blog/src/entities/models/article.test.ts`
- `packages/blog/src/entities/errors.test.ts``packages/blog/src/entities/errors/errors.test.ts`
- `packages/marketing-pages/src/entities/page.ts``packages/marketing-pages/src/entities/models/page.ts`
- `packages/marketing-pages/src/entities/page.test.ts``packages/marketing-pages/src/entities/models/page.test.ts`
- `packages/marketing-pages/src/entities/site-settings.ts``packages/marketing-pages/src/entities/models/site-settings.ts`
- `packages/marketing-pages/src/entities/site-settings.test.ts``packages/marketing-pages/src/entities/models/site-settings.test.ts`
- `packages/marketing-pages/src/entities/errors.test.ts``packages/marketing-pages/src/entities/errors/errors.test.ts`
- `packages/navigation/src/entities/header.ts``packages/navigation/src/entities/models/header.ts`
- `packages/navigation/src/entities/header.test.ts``packages/navigation/src/entities/models/header.test.ts`
## 2. Files added (with purpose)
(populated as work progresses)
### Task 2: Entities split — new error files
- `packages/auth/src/entities/errors/auth.ts` — AuthenticationError, UnauthenticatedError, UnauthorizedError (split from errors.ts)
- `packages/auth/src/entities/errors/common.ts` — InputParseError (auth copy)
- `packages/blog/src/entities/errors/article.ts` — ArticleNotFoundError (split from errors.ts)
- `packages/blog/src/entities/errors/common.ts` — InputParseError (blog copy)
- `packages/marketing-pages/src/entities/errors/page.ts` — PageNotFoundError (split from errors.ts)
- `packages/marketing-pages/src/entities/errors/common.ts` — InputParseError (marketing-pages copy)
- `packages/navigation/src/entities/errors/header.ts` — HeaderNotFoundError (new; navigation had no errors.ts)
- `packages/navigation/src/entities/errors/common.ts` — InputParseError (navigation copy)
## 3. Files deleted (with reason)
(populated as work progresses)
### Task 2: Entities split — old errors.ts files removed
- `packages/auth/src/entities/errors.ts` — replaced by `errors/auth.ts` + `errors/common.ts`
- `packages/blog/src/entities/errors.ts` — replaced by `errors/article.ts` + `errors/common.ts`
- `packages/marketing-pages/src/entities/errors.ts` — replaced by `errors/page.ts` + `errors/common.ts`
- (navigation had no `errors.ts` to delete)
## 4. Pattern changes (code-level)
@@ -39,7 +71,15 @@ single follow-up pass.
(populated when controllers are split)
### 4.3 Entities split — models/ + errors/ subdirs
(populated when entities are reshaped)
Pattern now in place across auth, blog, marketing-pages, navigation (media skipped — no entities yet):
- Entity Zod schemas + types live at `entities/models/<x>.ts`
- Domain errors live at `entities/errors/<domain>.ts` (e.g. `errors/auth.ts`, `errors/article.ts`)
- Shared `InputParseError` lives at `entities/errors/common.ts` (one copy per feature — ~6 lines each)
- Colocated entity test files moved alongside their respective sources (`models/*.test.ts`, `errors/errors.test.ts`)
- All imports across factories, contracts, repositories, use cases, controllers, tests, and `src/index.ts` updated to new paths
- navigation divergence: no `errors.ts` existed pre-refactor; `errors/header.ts` (HeaderNotFoundError) and `errors/common.ts` added as new forward-looking stubs
## 5. DI changes