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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user