From a4c4ca6b6e903780640a8efc73d6fab7dbc6a4ec Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Tue, 5 May 2026 23:34:32 +0200 Subject: [PATCH] refactor(features): split entities into models/ + errors/ subdirs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All 5 features (auth, blog, marketing-pages, navigation; media has no entities yet) now follow Lazar's pattern: - entities/.ts → entities/models/.ts - entities/errors.ts → entities/errors/.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) --- .../2026-05-05-lazar-pattern-conformance.md | 48 +++++++++++++++++-- .../auth/src/__factories__/session.factory.ts | 2 +- .../auth/src/__factories__/user.factory.ts | 2 +- .../users-repository.interface.ts | 2 +- .../authentication-service.interface.ts | 6 +-- .../use-cases/sign-in.use-case.test.ts | 2 +- .../application/use-cases/sign-in.use-case.ts | 6 +-- .../use-cases/sign-out.use-case.ts | 2 +- .../use-cases/sign-up.use-case.test.ts | 2 +- .../application/use-cases/sign-up.use-case.ts | 8 ++-- .../entities/{errors.ts => errors/auth.ts} | 6 --- packages/auth/src/entities/errors/common.ts | 5 ++ .../src/entities/{ => errors}/errors.test.ts | 4 +- .../auth/src/entities/{ => models}/cookie.ts | 0 .../src/entities/{ => models}/session.test.ts | 0 .../auth/src/entities/{ => models}/session.ts | 0 .../src/entities/{ => models}/user.test.ts | 0 .../auth/src/entities/{ => models}/user.ts | 0 packages/auth/src/index.ts | 10 ++-- .../repositories/mock-users.repository.ts | 2 +- .../services/mock-authentication.service.ts | 8 ++-- .../controllers/sign-in.controller.test.ts | 2 +- .../controllers/sign-in.controller.ts | 4 +- .../controllers/sign-out.controller.test.ts | 2 +- .../controllers/sign-out.controller.ts | 4 +- .../controllers/sign-up.controller.test.ts | 2 +- .../controllers/sign-up.controller.ts | 2 +- .../blog/src/__factories__/article.factory.ts | 2 +- .../articles-repository.interface.ts | 2 +- .../use-cases/create-article.use-case.ts | 2 +- .../use-cases/get-articles.use-case.ts | 2 +- .../entities/{errors.ts => errors/article.ts} | 6 --- packages/blog/src/entities/errors/common.ts | 5 ++ .../src/entities/{ => errors}/errors.test.ts | 3 +- .../src/entities/{ => models}/article.test.ts | 0 .../blog/src/entities/{ => models}/article.ts | 0 packages/blog/src/index.ts | 5 +- .../repositories/mock-articles.repository.ts | 2 +- .../payload-articles.repository.ts | 2 +- .../controllers/articles.controller.test.ts | 2 +- .../controllers/articles.controller.ts | 4 +- .../pages-repository.contract.ts | 2 +- .../src/__factories__/page.factory.ts | 2 +- .../__factories__/site-settings.factory.ts | 2 +- .../pages-repository.interface.ts | 2 +- .../site-settings-repository.interface.ts | 2 +- .../use-cases/get-page-by-slug.use-case.ts | 2 +- .../use-cases/get-site-settings.use-case.ts | 2 +- .../src/entities/errors/common.ts | 5 ++ .../src/entities/{ => errors}/errors.test.ts | 3 +- .../entities/{errors.ts => errors/page.ts} | 6 --- .../src/entities/{ => models}/page.test.ts | 0 .../src/entities/{ => models}/page.ts | 0 .../{ => models}/site-settings.test.ts | 0 .../entities/{ => models}/site-settings.ts | 0 packages/marketing-pages/src/index.ts | 7 +-- .../repositories/mock-pages.repository.ts | 2 +- .../mock-site-settings.repository.ts | 2 +- .../payload-pages.repository.test.ts | 2 +- .../repositories/payload-pages.repository.ts | 2 +- .../payload-site-settings.repository.ts | 2 +- .../controllers/pages.controller.test.ts | 2 +- .../controllers/pages.controller.ts | 6 +-- .../header-repository.contract.ts | 2 +- .../src/__factories__/header.factory.ts | 2 +- .../src/__factories__/nav-item.factory.ts | 2 +- .../header-repository.interface.ts | 2 +- .../use-cases/get-header.use-case.ts | 2 +- .../navigation/src/entities/errors/common.ts | 5 ++ .../navigation/src/entities/errors/header.ts | 5 ++ .../src/entities/{ => models}/header.test.ts | 0 .../src/entities/{ => models}/header.ts | 0 packages/navigation/src/index.ts | 2 +- .../repositories/mock-header.repository.ts | 2 +- .../repositories/payload-header.repository.ts | 2 +- .../controllers/header.controller.ts | 2 +- 76 files changed, 150 insertions(+), 99 deletions(-) rename packages/auth/src/entities/{errors.ts => errors/auth.ts} (75%) create mode 100644 packages/auth/src/entities/errors/common.ts rename packages/auth/src/entities/{ => errors}/errors.test.ts (94%) rename packages/auth/src/entities/{ => models}/cookie.ts (100%) rename packages/auth/src/entities/{ => models}/session.test.ts (100%) rename packages/auth/src/entities/{ => models}/session.ts (100%) rename packages/auth/src/entities/{ => models}/user.test.ts (100%) rename packages/auth/src/entities/{ => models}/user.ts (100%) rename packages/blog/src/entities/{errors.ts => errors/article.ts} (53%) create mode 100644 packages/blog/src/entities/errors/common.ts rename packages/blog/src/entities/{ => errors}/errors.test.ts (88%) rename packages/blog/src/entities/{ => models}/article.test.ts (100%) rename packages/blog/src/entities/{ => models}/article.ts (100%) create mode 100644 packages/marketing-pages/src/entities/errors/common.ts rename packages/marketing-pages/src/entities/{ => errors}/errors.test.ts (89%) rename packages/marketing-pages/src/entities/{errors.ts => errors/page.ts} (52%) rename packages/marketing-pages/src/entities/{ => models}/page.test.ts (100%) rename packages/marketing-pages/src/entities/{ => models}/page.ts (100%) rename packages/marketing-pages/src/entities/{ => models}/site-settings.test.ts (100%) rename packages/marketing-pages/src/entities/{ => models}/site-settings.ts (100%) create mode 100644 packages/navigation/src/entities/errors/common.ts create mode 100644 packages/navigation/src/entities/errors/header.ts rename packages/navigation/src/entities/{ => models}/header.test.ts (100%) rename packages/navigation/src/entities/{ => models}/header.ts (100%) diff --git a/docs/superpowers/refactor-logs/2026-05-05-lazar-pattern-conformance.md b/docs/superpowers/refactor-logs/2026-05-05-lazar-pattern-conformance.md index 020619d..efbe79f 100644 --- a/docs/superpowers/refactor-logs/2026-05-05-lazar-pattern-conformance.md +++ b/docs/superpowers/refactor-logs/2026-05-05-lazar-pattern-conformance.md @@ -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/.ts` +- Domain errors live at `entities/errors/.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 diff --git a/packages/auth/src/__factories__/session.factory.ts b/packages/auth/src/__factories__/session.factory.ts index c9a7a32..d8bf91f 100644 --- a/packages/auth/src/__factories__/session.factory.ts +++ b/packages/auth/src/__factories__/session.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { Session } from "../entities/session.js"; +import type { Session } from "../entities/models/session.js"; export const sessionFactory = defineFactory(({ sequence }) => ({ id: `session-${sequence}`, diff --git a/packages/auth/src/__factories__/user.factory.ts b/packages/auth/src/__factories__/user.factory.ts index edf06e5..a1fc567 100644 --- a/packages/auth/src/__factories__/user.factory.ts +++ b/packages/auth/src/__factories__/user.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { User } from "../entities/user.js"; +import type { User } from "../entities/models/user.js"; export const userFactory = defineFactory(({ sequence }) => ({ id: `user-${sequence}`, diff --git a/packages/auth/src/application/repositories/users-repository.interface.ts b/packages/auth/src/application/repositories/users-repository.interface.ts index 9e03e0a..61e1ee0 100644 --- a/packages/auth/src/application/repositories/users-repository.interface.ts +++ b/packages/auth/src/application/repositories/users-repository.interface.ts @@ -1,4 +1,4 @@ -import type { User } from "../../entities/user"; +import type { User } from "../../entities/models/user"; export interface IUsersRepository { getUser(id: string): Promise; diff --git a/packages/auth/src/application/services/authentication-service.interface.ts b/packages/auth/src/application/services/authentication-service.interface.ts index 0e5f873..2d18e83 100644 --- a/packages/auth/src/application/services/authentication-service.interface.ts +++ b/packages/auth/src/application/services/authentication-service.interface.ts @@ -1,6 +1,6 @@ -import type { Cookie } from "../../entities/cookie"; -import type { Session } from "../../entities/session"; -import type { User } from "../../entities/user"; +import type { Cookie } from "../../entities/models/cookie"; +import type { Session } from "../../entities/models/session"; +import type { User } from "../../entities/models/user"; export interface IAuthenticationService { generateUserId(): string; diff --git a/packages/auth/src/application/use-cases/sign-in.use-case.test.ts b/packages/auth/src/application/use-cases/sign-in.use-case.test.ts index df07299..18f6f95 100644 --- a/packages/auth/src/application/use-cases/sign-in.use-case.test.ts +++ b/packages/auth/src/application/use-cases/sign-in.use-case.test.ts @@ -5,7 +5,7 @@ import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.re import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service"; import type { IUsersRepository } from "@/application/repositories/users-repository.interface"; import type { IAuthenticationService } from "@/application/services/authentication-service.interface"; -import { AuthenticationError } from "@/entities/errors"; +import { AuthenticationError } from "@/entities/errors/auth"; import { signInUseCase } from "./sign-in.use-case"; describe("signInUseCase", () => { diff --git a/packages/auth/src/application/use-cases/sign-in.use-case.ts b/packages/auth/src/application/use-cases/sign-in.use-case.ts index 3a2c0b3..360f8f9 100644 --- a/packages/auth/src/application/use-cases/sign-in.use-case.ts +++ b/packages/auth/src/application/use-cases/sign-in.use-case.ts @@ -1,6 +1,6 @@ -import { AuthenticationError } from "../../entities/errors"; -import type { Cookie } from "../../entities/cookie"; -import type { Session } from "../../entities/session"; +import { AuthenticationError } from "../../entities/errors/auth"; +import type { Cookie } from "../../entities/models/cookie"; +import type { Session } from "../../entities/models/session"; import { authContainer } from "../../di/container"; import { AUTH_SYMBOLS } from "../../di/symbols"; import type { IUsersRepository } from "../repositories/users-repository.interface"; diff --git a/packages/auth/src/application/use-cases/sign-out.use-case.ts b/packages/auth/src/application/use-cases/sign-out.use-case.ts index 9b3ec4c..d1f1f83 100644 --- a/packages/auth/src/application/use-cases/sign-out.use-case.ts +++ b/packages/auth/src/application/use-cases/sign-out.use-case.ts @@ -1,4 +1,4 @@ -import type { Cookie } from "../../entities/cookie"; +import type { Cookie } from "../../entities/models/cookie"; import { authContainer } from "../../di/container"; import { AUTH_SYMBOLS } from "../../di/symbols"; import type { IAuthenticationService } from "../services/authentication-service.interface"; diff --git a/packages/auth/src/application/use-cases/sign-up.use-case.test.ts b/packages/auth/src/application/use-cases/sign-up.use-case.test.ts index 22a40c6..9b4c999 100644 --- a/packages/auth/src/application/use-cases/sign-up.use-case.test.ts +++ b/packages/auth/src/application/use-cases/sign-up.use-case.test.ts @@ -5,7 +5,7 @@ import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.re import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service"; import type { IUsersRepository } from "@/application/repositories/users-repository.interface"; import type { IAuthenticationService } from "@/application/services/authentication-service.interface"; -import { AuthenticationError } from "@/entities/errors"; +import { AuthenticationError } from "@/entities/errors/auth"; import { signUpUseCase } from "./sign-up.use-case"; describe("signUpUseCase", () => { diff --git a/packages/auth/src/application/use-cases/sign-up.use-case.ts b/packages/auth/src/application/use-cases/sign-up.use-case.ts index 5c89f9a..86acaf5 100644 --- a/packages/auth/src/application/use-cases/sign-up.use-case.ts +++ b/packages/auth/src/application/use-cases/sign-up.use-case.ts @@ -1,7 +1,7 @@ -import { AuthenticationError } from "../../entities/errors"; -import type { Cookie } from "../../entities/cookie"; -import type { Session } from "../../entities/session"; -import type { User } from "../../entities/user"; +import { AuthenticationError } from "../../entities/errors/auth"; +import type { Cookie } from "../../entities/models/cookie"; +import type { Session } from "../../entities/models/session"; +import type { User } from "../../entities/models/user"; import { authContainer } from "../../di/container"; import { AUTH_SYMBOLS } from "../../di/symbols"; import type { IUsersRepository } from "../repositories/users-repository.interface"; diff --git a/packages/auth/src/entities/errors.ts b/packages/auth/src/entities/errors/auth.ts similarity index 75% rename from packages/auth/src/entities/errors.ts rename to packages/auth/src/entities/errors/auth.ts index 285bc0f..39cbb76 100644 --- a/packages/auth/src/entities/errors.ts +++ b/packages/auth/src/entities/errors/auth.ts @@ -15,9 +15,3 @@ export class UnauthorizedError extends Error { super(message, options); } } - -export class InputParseError extends Error { - constructor(message: string, options?: ErrorOptions) { - super(message, options); - } -} diff --git a/packages/auth/src/entities/errors/common.ts b/packages/auth/src/entities/errors/common.ts new file mode 100644 index 0000000..18bb07a --- /dev/null +++ b/packages/auth/src/entities/errors/common.ts @@ -0,0 +1,5 @@ +export class InputParseError extends Error { + constructor(message: string, options?: ErrorOptions) { + super(message, options); + } +} diff --git a/packages/auth/src/entities/errors.test.ts b/packages/auth/src/entities/errors/errors.test.ts similarity index 94% rename from packages/auth/src/entities/errors.test.ts rename to packages/auth/src/entities/errors/errors.test.ts index 4c288e1..5dfc2cf 100644 --- a/packages/auth/src/entities/errors.test.ts +++ b/packages/auth/src/entities/errors/errors.test.ts @@ -3,8 +3,8 @@ import { AuthenticationError, UnauthenticatedError, UnauthorizedError, - InputParseError, -} from "./errors"; +} from "./auth"; +import { InputParseError } from "./common"; describe("AuthenticationError", () => { it("is an instance of Error with the given message", () => { diff --git a/packages/auth/src/entities/cookie.ts b/packages/auth/src/entities/models/cookie.ts similarity index 100% rename from packages/auth/src/entities/cookie.ts rename to packages/auth/src/entities/models/cookie.ts diff --git a/packages/auth/src/entities/session.test.ts b/packages/auth/src/entities/models/session.test.ts similarity index 100% rename from packages/auth/src/entities/session.test.ts rename to packages/auth/src/entities/models/session.test.ts diff --git a/packages/auth/src/entities/session.ts b/packages/auth/src/entities/models/session.ts similarity index 100% rename from packages/auth/src/entities/session.ts rename to packages/auth/src/entities/models/session.ts diff --git a/packages/auth/src/entities/user.test.ts b/packages/auth/src/entities/models/user.test.ts similarity index 100% rename from packages/auth/src/entities/user.test.ts rename to packages/auth/src/entities/models/user.test.ts diff --git a/packages/auth/src/entities/user.ts b/packages/auth/src/entities/models/user.ts similarity index 100% rename from packages/auth/src/entities/user.ts rename to packages/auth/src/entities/models/user.ts diff --git a/packages/auth/src/index.ts b/packages/auth/src/index.ts index 964e5d6..980b3fb 100644 --- a/packages/auth/src/index.ts +++ b/packages/auth/src/index.ts @@ -1,11 +1,11 @@ -export type { User } from "./entities/user"; -export type { Session } from "./entities/session"; -export type { Cookie } from "./entities/cookie"; +export type { User } from "./entities/models/user"; +export type { Session } from "./entities/models/session"; +export type { Cookie } from "./entities/models/cookie"; export type { AuthRouter } from "./integrations/api/router"; export { AuthenticationError, UnauthenticatedError, UnauthorizedError, - InputParseError, -} from "./entities/errors"; +} from "./entities/errors/auth"; +export { InputParseError } from "./entities/errors/common"; export { SESSION_COOKIE } from "./config"; diff --git a/packages/auth/src/infrastructure/repositories/mock-users.repository.ts b/packages/auth/src/infrastructure/repositories/mock-users.repository.ts index 703416a..3d6e232 100644 --- a/packages/auth/src/infrastructure/repositories/mock-users.repository.ts +++ b/packages/auth/src/infrastructure/repositories/mock-users.repository.ts @@ -2,7 +2,7 @@ import "reflect-metadata"; import { injectable } from "inversify"; import type { IUsersRepository } from "../../application/repositories/users-repository.interface"; -import type { User } from "../../entities/user"; +import type { User } from "../../entities/models/user"; const DEFAULT_SEED: User[] = [ { id: "1", username: "alice", passwordHash: "hashed_password_alice" }, diff --git a/packages/auth/src/infrastructure/services/mock-authentication.service.ts b/packages/auth/src/infrastructure/services/mock-authentication.service.ts index 365d841..97970c7 100644 --- a/packages/auth/src/infrastructure/services/mock-authentication.service.ts +++ b/packages/auth/src/infrastructure/services/mock-authentication.service.ts @@ -3,10 +3,10 @@ import { inject, injectable } from "inversify"; import type { IAuthenticationService } from "../../application/services/authentication-service.interface"; import type { IUsersRepository } from "../../application/repositories/users-repository.interface"; -import { UnauthenticatedError } from "../../entities/errors"; -import { sessionSchema, type Session } from "../../entities/session"; -import type { Cookie } from "../../entities/cookie"; -import type { User } from "../../entities/user"; +import { UnauthenticatedError } from "../../entities/errors/auth"; +import { sessionSchema, type Session } from "../../entities/models/session"; +import type { Cookie } from "../../entities/models/cookie"; +import type { User } from "../../entities/models/user"; import { AUTH_SYMBOLS } from "../../di/symbols"; import { SESSION_COOKIE } from "../../config"; diff --git a/packages/auth/src/interface-adapters/controllers/sign-in.controller.test.ts b/packages/auth/src/interface-adapters/controllers/sign-in.controller.test.ts index 1959d02..e7ed1ed 100644 --- a/packages/auth/src/interface-adapters/controllers/sign-in.controller.test.ts +++ b/packages/auth/src/interface-adapters/controllers/sign-in.controller.test.ts @@ -5,7 +5,7 @@ import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.re import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service"; import type { IUsersRepository } from "@/application/repositories/users-repository.interface"; import type { IAuthenticationService } from "@/application/services/authentication-service.interface"; -import { InputParseError } from "@/entities/errors"; +import { InputParseError } from "@/entities/errors/common"; import { signInController } from "./sign-in.controller"; describe("signInController", () => { diff --git a/packages/auth/src/interface-adapters/controllers/sign-in.controller.ts b/packages/auth/src/interface-adapters/controllers/sign-in.controller.ts index a6fd143..14a9277 100644 --- a/packages/auth/src/interface-adapters/controllers/sign-in.controller.ts +++ b/packages/auth/src/interface-adapters/controllers/sign-in.controller.ts @@ -1,7 +1,7 @@ import { z } from "zod"; -import { InputParseError } from "../../entities/errors"; -import type { Cookie } from "../../entities/cookie"; +import { InputParseError } from "../../entities/errors/common"; +import type { Cookie } from "../../entities/models/cookie"; import { signInUseCase } from "../../application/use-cases/sign-in.use-case"; const inputSchema = z.object({ diff --git a/packages/auth/src/interface-adapters/controllers/sign-out.controller.test.ts b/packages/auth/src/interface-adapters/controllers/sign-out.controller.test.ts index 29dd561..820dc7e 100644 --- a/packages/auth/src/interface-adapters/controllers/sign-out.controller.test.ts +++ b/packages/auth/src/interface-adapters/controllers/sign-out.controller.test.ts @@ -5,7 +5,7 @@ import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.re import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service"; import type { IUsersRepository } from "@/application/repositories/users-repository.interface"; import type { IAuthenticationService } from "@/application/services/authentication-service.interface"; -import { InputParseError } from "@/entities/errors"; +import { InputParseError } from "@/entities/errors/common"; import { signOutController } from "./sign-out.controller"; describe("signOutController", () => { diff --git a/packages/auth/src/interface-adapters/controllers/sign-out.controller.ts b/packages/auth/src/interface-adapters/controllers/sign-out.controller.ts index 7017f57..3ec085c 100644 --- a/packages/auth/src/interface-adapters/controllers/sign-out.controller.ts +++ b/packages/auth/src/interface-adapters/controllers/sign-out.controller.ts @@ -1,5 +1,5 @@ -import { InputParseError } from "../../entities/errors"; -import type { Cookie } from "../../entities/cookie"; +import { InputParseError } from "../../entities/errors/common"; +import type { Cookie } from "../../entities/models/cookie"; import { signOutUseCase } from "../../application/use-cases/sign-out.use-case"; export async function signOutController( diff --git a/packages/auth/src/interface-adapters/controllers/sign-up.controller.test.ts b/packages/auth/src/interface-adapters/controllers/sign-up.controller.test.ts index 04d2e45..e2db294 100644 --- a/packages/auth/src/interface-adapters/controllers/sign-up.controller.test.ts +++ b/packages/auth/src/interface-adapters/controllers/sign-up.controller.test.ts @@ -5,7 +5,7 @@ import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.re import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service"; import type { IUsersRepository } from "@/application/repositories/users-repository.interface"; import type { IAuthenticationService } from "@/application/services/authentication-service.interface"; -import { InputParseError } from "@/entities/errors"; +import { InputParseError } from "@/entities/errors/common"; import { signUpController } from "./sign-up.controller"; describe("signUpController", () => { diff --git a/packages/auth/src/interface-adapters/controllers/sign-up.controller.ts b/packages/auth/src/interface-adapters/controllers/sign-up.controller.ts index 8455cd4..6484a73 100644 --- a/packages/auth/src/interface-adapters/controllers/sign-up.controller.ts +++ b/packages/auth/src/interface-adapters/controllers/sign-up.controller.ts @@ -1,6 +1,6 @@ import { z } from "zod"; -import { InputParseError } from "../../entities/errors"; +import { InputParseError } from "../../entities/errors/common"; import { signUpUseCase } from "../../application/use-cases/sign-up.use-case"; const inputSchema = z diff --git a/packages/blog/src/__factories__/article.factory.ts b/packages/blog/src/__factories__/article.factory.ts index 82b87b4..0e9c3ac 100644 --- a/packages/blog/src/__factories__/article.factory.ts +++ b/packages/blog/src/__factories__/article.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { Article } from "../entities/article.js"; +import type { Article } from "../entities/models/article.js"; export const articleFactory = defineFactory
(({ sequence }) => ({ id: `article-${sequence}`, diff --git a/packages/blog/src/application/repositories/articles-repository.interface.ts b/packages/blog/src/application/repositories/articles-repository.interface.ts index f059aa3..3902fe6 100644 --- a/packages/blog/src/application/repositories/articles-repository.interface.ts +++ b/packages/blog/src/application/repositories/articles-repository.interface.ts @@ -1,4 +1,4 @@ -import type { Article } from "../../entities/article"; +import type { Article } from "../../entities/models/article"; export interface IArticlesRepository { getArticle(id: string): Promise
; diff --git a/packages/blog/src/application/use-cases/create-article.use-case.ts b/packages/blog/src/application/use-cases/create-article.use-case.ts index 80f6066..8ac044a 100644 --- a/packages/blog/src/application/use-cases/create-article.use-case.ts +++ b/packages/blog/src/application/use-cases/create-article.use-case.ts @@ -1,4 +1,4 @@ -import type { Article } from "../../entities/article"; +import type { Article } from "../../entities/models/article"; import { blogContainer } from "../../di/container"; import { BLOG_SYMBOLS } from "../../di/symbols"; import type { IArticlesRepository } from "../repositories/articles-repository.interface"; diff --git a/packages/blog/src/application/use-cases/get-articles.use-case.ts b/packages/blog/src/application/use-cases/get-articles.use-case.ts index 580b09c..d173366 100644 --- a/packages/blog/src/application/use-cases/get-articles.use-case.ts +++ b/packages/blog/src/application/use-cases/get-articles.use-case.ts @@ -1,4 +1,4 @@ -import type { Article } from "../../entities/article"; +import type { Article } from "../../entities/models/article"; import { blogContainer } from "../../di/container"; import { BLOG_SYMBOLS } from "../../di/symbols"; import type { IArticlesRepository } from "../repositories/articles-repository.interface"; diff --git a/packages/blog/src/entities/errors.ts b/packages/blog/src/entities/errors/article.ts similarity index 53% rename from packages/blog/src/entities/errors.ts rename to packages/blog/src/entities/errors/article.ts index 628de66..acebd31 100644 --- a/packages/blog/src/entities/errors.ts +++ b/packages/blog/src/entities/errors/article.ts @@ -3,9 +3,3 @@ export class ArticleNotFoundError extends Error { super(message, options); } } - -export class InputParseError extends Error { - constructor(message: string, options?: ErrorOptions) { - super(message, options); - } -} diff --git a/packages/blog/src/entities/errors/common.ts b/packages/blog/src/entities/errors/common.ts new file mode 100644 index 0000000..18bb07a --- /dev/null +++ b/packages/blog/src/entities/errors/common.ts @@ -0,0 +1,5 @@ +export class InputParseError extends Error { + constructor(message: string, options?: ErrorOptions) { + super(message, options); + } +} diff --git a/packages/blog/src/entities/errors.test.ts b/packages/blog/src/entities/errors/errors.test.ts similarity index 88% rename from packages/blog/src/entities/errors.test.ts rename to packages/blog/src/entities/errors/errors.test.ts index b73c1a7..b2ade34 100644 --- a/packages/blog/src/entities/errors.test.ts +++ b/packages/blog/src/entities/errors/errors.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; -import { ArticleNotFoundError, InputParseError } from "./errors"; +import { ArticleNotFoundError } from "./article"; +import { InputParseError } from "./common"; describe("ArticleNotFoundError", () => { it("uses the default message when none is given", () => { diff --git a/packages/blog/src/entities/article.test.ts b/packages/blog/src/entities/models/article.test.ts similarity index 100% rename from packages/blog/src/entities/article.test.ts rename to packages/blog/src/entities/models/article.test.ts diff --git a/packages/blog/src/entities/article.ts b/packages/blog/src/entities/models/article.ts similarity index 100% rename from packages/blog/src/entities/article.ts rename to packages/blog/src/entities/models/article.ts diff --git a/packages/blog/src/index.ts b/packages/blog/src/index.ts index 5cad050..8e89a81 100644 --- a/packages/blog/src/index.ts +++ b/packages/blog/src/index.ts @@ -1,4 +1,5 @@ -export type { Article, ArticleStatus } from "./entities/article"; +export type { Article, ArticleStatus } from "./entities/models/article"; export type { BlogRouter } from "./integrations/api/router"; -export { ArticleNotFoundError, InputParseError } from "./entities/errors"; +export { ArticleNotFoundError } from "./entities/errors/article"; +export { InputParseError } from "./entities/errors/common"; export { articleBySlugQuery, listArticlesQuery } from "./ui/query"; diff --git a/packages/blog/src/infrastructure/repositories/mock-articles.repository.ts b/packages/blog/src/infrastructure/repositories/mock-articles.repository.ts index 50355f0..6ba5771 100644 --- a/packages/blog/src/infrastructure/repositories/mock-articles.repository.ts +++ b/packages/blog/src/infrastructure/repositories/mock-articles.repository.ts @@ -2,7 +2,7 @@ import "reflect-metadata"; import { injectable } from "inversify"; import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface"; -import type { Article } from "../../entities/article"; +import type { Article } from "../../entities/models/article"; @injectable() export class MockArticlesRepository implements IArticlesRepository { diff --git a/packages/blog/src/infrastructure/repositories/payload-articles.repository.ts b/packages/blog/src/infrastructure/repositories/payload-articles.repository.ts index 715e305..eb8394e 100644 --- a/packages/blog/src/infrastructure/repositories/payload-articles.repository.ts +++ b/packages/blog/src/infrastructure/repositories/payload-articles.repository.ts @@ -4,7 +4,7 @@ import { getPayload } from "payload"; import type { SanitizedConfig } from "payload"; import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface"; -import type { Article } from "../../entities/article"; +import type { Article } from "../../entities/models/article"; type PayloadArticleDoc = { id: string | number; diff --git a/packages/blog/src/interface-adapters/controllers/articles.controller.test.ts b/packages/blog/src/interface-adapters/controllers/articles.controller.test.ts index 4550d46..467a7be 100644 --- a/packages/blog/src/interface-adapters/controllers/articles.controller.test.ts +++ b/packages/blog/src/interface-adapters/controllers/articles.controller.test.ts @@ -3,7 +3,7 @@ import { blogContainer } from "../../di/container"; import { BLOG_SYMBOLS } from "../../di/symbols"; import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository"; import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface"; -import { InputParseError } from "../../entities/errors"; +import { InputParseError } from "../../entities/errors/common"; import { createArticleController, getArticlesController, diff --git a/packages/blog/src/interface-adapters/controllers/articles.controller.ts b/packages/blog/src/interface-adapters/controllers/articles.controller.ts index 2fc15ee..267960f 100644 --- a/packages/blog/src/interface-adapters/controllers/articles.controller.ts +++ b/packages/blog/src/interface-adapters/controllers/articles.controller.ts @@ -1,7 +1,7 @@ import { z } from "zod"; -import { InputParseError } from "../../entities/errors"; -import type { Article } from "../../entities/article"; +import { InputParseError } from "../../entities/errors/common"; +import type { Article } from "../../entities/models/article"; import { blogContainer } from "../../di/container"; import { BLOG_SYMBOLS } from "../../di/symbols"; import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface"; diff --git a/packages/marketing-pages/src/__contracts__/pages-repository.contract.ts b/packages/marketing-pages/src/__contracts__/pages-repository.contract.ts index f7bd7dc..9e72289 100644 --- a/packages/marketing-pages/src/__contracts__/pages-repository.contract.ts +++ b/packages/marketing-pages/src/__contracts__/pages-repository.contract.ts @@ -1,7 +1,7 @@ import { it, expect, beforeEach } from "vitest"; import { defineContractSuite } from "@repo/core-testing/contract"; import type { IPagesRepository } from "../application/repositories/pages-repository.interface.js"; -import type { Page } from "../entities/page.js"; +import type { Page } from "../entities/models/page.js"; const SEED_DATE = new Date("2026-01-01T00:00:00.000Z"); diff --git a/packages/marketing-pages/src/__factories__/page.factory.ts b/packages/marketing-pages/src/__factories__/page.factory.ts index 9c616a4..dd5a4f5 100644 --- a/packages/marketing-pages/src/__factories__/page.factory.ts +++ b/packages/marketing-pages/src/__factories__/page.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { Page } from "../entities/page.js"; +import type { Page } from "../entities/models/page.js"; export const pageFactory = defineFactory(({ sequence }) => ({ id: `page-${sequence}`, diff --git a/packages/marketing-pages/src/__factories__/site-settings.factory.ts b/packages/marketing-pages/src/__factories__/site-settings.factory.ts index 7bdac70..4d6e5f5 100644 --- a/packages/marketing-pages/src/__factories__/site-settings.factory.ts +++ b/packages/marketing-pages/src/__factories__/site-settings.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { SiteSettings } from "../entities/site-settings.js"; +import type { SiteSettings } from "../entities/models/site-settings.js"; export const siteSettingsFactory = defineFactory(({ sequence }) => ({ siteName: `Site ${sequence}`, diff --git a/packages/marketing-pages/src/application/repositories/pages-repository.interface.ts b/packages/marketing-pages/src/application/repositories/pages-repository.interface.ts index 9503286..01b0968 100644 --- a/packages/marketing-pages/src/application/repositories/pages-repository.interface.ts +++ b/packages/marketing-pages/src/application/repositories/pages-repository.interface.ts @@ -1,4 +1,4 @@ -import type { Page } from "../../entities/page"; +import type { Page } from "../../entities/models/page"; export interface IPagesRepository { getPageBySlug(slug: string): Promise; diff --git a/packages/marketing-pages/src/application/repositories/site-settings-repository.interface.ts b/packages/marketing-pages/src/application/repositories/site-settings-repository.interface.ts index 93fbe74..0170629 100644 --- a/packages/marketing-pages/src/application/repositories/site-settings-repository.interface.ts +++ b/packages/marketing-pages/src/application/repositories/site-settings-repository.interface.ts @@ -1,4 +1,4 @@ -import type { SiteSettings } from "../../entities/site-settings"; +import type { SiteSettings } from "../../entities/models/site-settings"; export interface ISiteSettingsRepository { getSiteSettings(): Promise; diff --git a/packages/marketing-pages/src/application/use-cases/get-page-by-slug.use-case.ts b/packages/marketing-pages/src/application/use-cases/get-page-by-slug.use-case.ts index f4b7954..d7bffb5 100644 --- a/packages/marketing-pages/src/application/use-cases/get-page-by-slug.use-case.ts +++ b/packages/marketing-pages/src/application/use-cases/get-page-by-slug.use-case.ts @@ -1,4 +1,4 @@ -import type { Page } from "../../entities/page"; +import type { Page } from "../../entities/models/page"; import { marketingPagesContainer } from "../../di/container"; import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols"; import type { IPagesRepository } from "../repositories/pages-repository.interface"; diff --git a/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts b/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts index 5ad748e..3eb865e 100644 --- a/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts +++ b/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts @@ -1,4 +1,4 @@ -import type { SiteSettings } from "../../entities/site-settings"; +import type { SiteSettings } from "../../entities/models/site-settings"; import { marketingPagesContainer } from "../../di/container"; import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols"; import type { ISiteSettingsRepository } from "../repositories/site-settings-repository.interface"; diff --git a/packages/marketing-pages/src/entities/errors/common.ts b/packages/marketing-pages/src/entities/errors/common.ts new file mode 100644 index 0000000..18bb07a --- /dev/null +++ b/packages/marketing-pages/src/entities/errors/common.ts @@ -0,0 +1,5 @@ +export class InputParseError extends Error { + constructor(message: string, options?: ErrorOptions) { + super(message, options); + } +} diff --git a/packages/marketing-pages/src/entities/errors.test.ts b/packages/marketing-pages/src/entities/errors/errors.test.ts similarity index 89% rename from packages/marketing-pages/src/entities/errors.test.ts rename to packages/marketing-pages/src/entities/errors/errors.test.ts index d3ab112..25325f6 100644 --- a/packages/marketing-pages/src/entities/errors.test.ts +++ b/packages/marketing-pages/src/entities/errors/errors.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; -import { PageNotFoundError, InputParseError } from "./errors"; +import { PageNotFoundError } from "./page"; +import { InputParseError } from "./common"; describe("PageNotFoundError", () => { it("uses the default message when none is given", () => { diff --git a/packages/marketing-pages/src/entities/errors.ts b/packages/marketing-pages/src/entities/errors/page.ts similarity index 52% rename from packages/marketing-pages/src/entities/errors.ts rename to packages/marketing-pages/src/entities/errors/page.ts index d9ee8e6..af88b1e 100644 --- a/packages/marketing-pages/src/entities/errors.ts +++ b/packages/marketing-pages/src/entities/errors/page.ts @@ -3,9 +3,3 @@ export class PageNotFoundError extends Error { super(message, options); } } - -export class InputParseError extends Error { - constructor(message: string, options?: ErrorOptions) { - super(message, options); - } -} diff --git a/packages/marketing-pages/src/entities/page.test.ts b/packages/marketing-pages/src/entities/models/page.test.ts similarity index 100% rename from packages/marketing-pages/src/entities/page.test.ts rename to packages/marketing-pages/src/entities/models/page.test.ts diff --git a/packages/marketing-pages/src/entities/page.ts b/packages/marketing-pages/src/entities/models/page.ts similarity index 100% rename from packages/marketing-pages/src/entities/page.ts rename to packages/marketing-pages/src/entities/models/page.ts diff --git a/packages/marketing-pages/src/entities/site-settings.test.ts b/packages/marketing-pages/src/entities/models/site-settings.test.ts similarity index 100% rename from packages/marketing-pages/src/entities/site-settings.test.ts rename to packages/marketing-pages/src/entities/models/site-settings.test.ts diff --git a/packages/marketing-pages/src/entities/site-settings.ts b/packages/marketing-pages/src/entities/models/site-settings.ts similarity index 100% rename from packages/marketing-pages/src/entities/site-settings.ts rename to packages/marketing-pages/src/entities/models/site-settings.ts diff --git a/packages/marketing-pages/src/index.ts b/packages/marketing-pages/src/index.ts index 0e81ebc..91d509d 100644 --- a/packages/marketing-pages/src/index.ts +++ b/packages/marketing-pages/src/index.ts @@ -1,5 +1,6 @@ -export type { Page, PageStatus, Hero } from "./entities/page"; -export type { SiteSettings } from "./entities/site-settings"; +export type { Page, PageStatus, Hero } from "./entities/models/page"; +export type { SiteSettings } from "./entities/models/site-settings"; export type { MarketingPagesRouter } from "./integrations/api/router"; -export { PageNotFoundError, InputParseError } from "./entities/errors"; +export { PageNotFoundError } from "./entities/errors/page"; +export { InputParseError } from "./entities/errors/common"; export { pageBySlugQuery, siteSettingsQuery } from "./ui/query"; diff --git a/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts b/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts index b151794..5f98fe3 100644 --- a/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts +++ b/packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts @@ -2,7 +2,7 @@ import "reflect-metadata"; import { injectable } from "inversify"; import type { IPagesRepository } from "../../application/repositories/pages-repository.interface"; -import type { Page } from "../../entities/page"; +import type { Page } from "../../entities/models/page"; const SEED_DATE = new Date("2026-01-01T00:00:00.000Z"); diff --git a/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts b/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts index cf5ec8a..f113d14 100644 --- a/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts +++ b/packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts @@ -2,7 +2,7 @@ import "reflect-metadata"; import { injectable } from "inversify"; import type { ISiteSettingsRepository } from "../../application/repositories/site-settings-repository.interface"; -import type { SiteSettings } from "../../entities/site-settings"; +import type { SiteSettings } from "../../entities/models/site-settings"; @injectable() export class MockSiteSettingsRepository implements ISiteSettingsRepository { diff --git a/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.test.ts b/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.test.ts index 7715926..38ce881 100644 --- a/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.test.ts +++ b/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.test.ts @@ -5,7 +5,7 @@ import { CONTRACT_PAGES_SEED, } from "@/__contracts__/pages-repository.contract"; import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config"; -import type { Page } from "@/entities/page"; +import type { Page } from "@/entities/models/page"; // --------------------------------------------------------------------------- // In-memory Payload stub for pages (read-only collection) diff --git a/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.ts b/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.ts index fd77c0e..47b0b5c 100644 --- a/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.ts +++ b/packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.ts @@ -4,7 +4,7 @@ import { getPayload } from "payload"; import type { SanitizedConfig } from "payload"; import type { IPagesRepository } from "../../application/repositories/pages-repository.interface"; -import type { Page } from "../../entities/page"; +import type { Page } from "../../entities/models/page"; type PayloadPageDoc = { id: string | number; diff --git a/packages/marketing-pages/src/infrastructure/repositories/payload-site-settings.repository.ts b/packages/marketing-pages/src/infrastructure/repositories/payload-site-settings.repository.ts index f36e634..b8d35a3 100644 --- a/packages/marketing-pages/src/infrastructure/repositories/payload-site-settings.repository.ts +++ b/packages/marketing-pages/src/infrastructure/repositories/payload-site-settings.repository.ts @@ -4,7 +4,7 @@ import { getPayload } from "payload"; import type { SanitizedConfig } from "payload"; import type { ISiteSettingsRepository } from "../../application/repositories/site-settings-repository.interface"; -import type { SiteSettings } from "../../entities/site-settings"; +import type { SiteSettings } from "../../entities/models/site-settings"; type PayloadSiteSettings = { siteName?: string | null; diff --git a/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.test.ts b/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.test.ts index 481a294..bbde514 100644 --- a/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.test.ts +++ b/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.test.ts @@ -5,7 +5,7 @@ import { MockPagesRepository } from "@/infrastructure/repositories/mock-pages.re import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository"; import type { IPagesRepository } from "@/application/repositories/pages-repository.interface"; import type { ISiteSettingsRepository } from "@/application/repositories/site-settings-repository.interface"; -import { InputParseError } from "@/entities/errors"; +import { InputParseError } from "@/entities/errors/common"; import { getPageBySlugController, getSiteSettingsController, diff --git a/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.ts b/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.ts index 6b89eb8..c5d64f0 100644 --- a/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.ts +++ b/packages/marketing-pages/src/interface-adapters/controllers/pages.controller.ts @@ -1,8 +1,8 @@ import { z } from "zod"; -import { InputParseError } from "../../entities/errors"; -import type { Page } from "../../entities/page"; -import type { SiteSettings } from "../../entities/site-settings"; +import { InputParseError } from "../../entities/errors/common"; +import type { Page } from "../../entities/models/page"; +import type { SiteSettings } from "../../entities/models/site-settings"; import { getPageBySlugUseCase } from "../../application/use-cases/get-page-by-slug.use-case"; import { getSiteSettingsUseCase } from "../../application/use-cases/get-site-settings.use-case"; diff --git a/packages/navigation/src/__contracts__/header-repository.contract.ts b/packages/navigation/src/__contracts__/header-repository.contract.ts index 62d20c6..4d994cf 100644 --- a/packages/navigation/src/__contracts__/header-repository.contract.ts +++ b/packages/navigation/src/__contracts__/header-repository.contract.ts @@ -1,7 +1,7 @@ import { it, expect, beforeEach } from "vitest"; import { defineContractSuite } from "@repo/core-testing/contract"; import type { IHeaderRepository } from "../application/repositories/header-repository.interface.js"; -import type { Header } from "../entities/header.js"; +import type { Header } from "../entities/models/header.js"; /** * Known fixtures that every implementation's `buildSubject` must pre-seed. diff --git a/packages/navigation/src/__factories__/header.factory.ts b/packages/navigation/src/__factories__/header.factory.ts index b3f58fc..8732e09 100644 --- a/packages/navigation/src/__factories__/header.factory.ts +++ b/packages/navigation/src/__factories__/header.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { Header } from "../entities/header.js"; +import type { Header } from "../entities/models/header.js"; export const headerFactory = defineFactory
(({ sequence }) => ({ logoId: `logo-${sequence}`, diff --git a/packages/navigation/src/__factories__/nav-item.factory.ts b/packages/navigation/src/__factories__/nav-item.factory.ts index 01cf7ee..e636614 100644 --- a/packages/navigation/src/__factories__/nav-item.factory.ts +++ b/packages/navigation/src/__factories__/nav-item.factory.ts @@ -1,5 +1,5 @@ import { defineFactory } from "@repo/core-testing/factory"; -import type { HeaderItem } from "../entities/header.js"; +import type { HeaderItem } from "../entities/models/header.js"; export const navItemFactory = defineFactory(({ sequence }) => ({ label: `Item ${sequence}`, diff --git a/packages/navigation/src/application/repositories/header-repository.interface.ts b/packages/navigation/src/application/repositories/header-repository.interface.ts index 6b1753d..c0aeadf 100644 --- a/packages/navigation/src/application/repositories/header-repository.interface.ts +++ b/packages/navigation/src/application/repositories/header-repository.interface.ts @@ -1,4 +1,4 @@ -import type { Header } from "../../entities/header"; +import type { Header } from "../../entities/models/header"; export interface IHeaderRepository { getHeader(): Promise
; diff --git a/packages/navigation/src/application/use-cases/get-header.use-case.ts b/packages/navigation/src/application/use-cases/get-header.use-case.ts index 7b39a24..89fe3b5 100644 --- a/packages/navigation/src/application/use-cases/get-header.use-case.ts +++ b/packages/navigation/src/application/use-cases/get-header.use-case.ts @@ -1,4 +1,4 @@ -import type { Header } from "../../entities/header"; +import type { Header } from "../../entities/models/header"; import { navigationContainer } from "../../di/container"; import { NAVIGATION_SYMBOLS } from "../../di/symbols"; import type { IHeaderRepository } from "../repositories/header-repository.interface"; diff --git a/packages/navigation/src/entities/errors/common.ts b/packages/navigation/src/entities/errors/common.ts new file mode 100644 index 0000000..18bb07a --- /dev/null +++ b/packages/navigation/src/entities/errors/common.ts @@ -0,0 +1,5 @@ +export class InputParseError extends Error { + constructor(message: string, options?: ErrorOptions) { + super(message, options); + } +} diff --git a/packages/navigation/src/entities/errors/header.ts b/packages/navigation/src/entities/errors/header.ts new file mode 100644 index 0000000..8e23199 --- /dev/null +++ b/packages/navigation/src/entities/errors/header.ts @@ -0,0 +1,5 @@ +export class HeaderNotFoundError extends Error { + constructor(message = "Header not found", options?: ErrorOptions) { + super(message, options); + } +} diff --git a/packages/navigation/src/entities/header.test.ts b/packages/navigation/src/entities/models/header.test.ts similarity index 100% rename from packages/navigation/src/entities/header.test.ts rename to packages/navigation/src/entities/models/header.test.ts diff --git a/packages/navigation/src/entities/header.ts b/packages/navigation/src/entities/models/header.ts similarity index 100% rename from packages/navigation/src/entities/header.ts rename to packages/navigation/src/entities/models/header.ts diff --git a/packages/navigation/src/index.ts b/packages/navigation/src/index.ts index 2a72365..1d50c0b 100644 --- a/packages/navigation/src/index.ts +++ b/packages/navigation/src/index.ts @@ -1,3 +1,3 @@ -export type { Header, HeaderItem } from "./entities/header"; +export type { Header, HeaderItem } from "./entities/models/header"; export type { NavigationRouter } from "./integrations/api/router"; export { headerQuery } from "./ui/query"; diff --git a/packages/navigation/src/infrastructure/repositories/mock-header.repository.ts b/packages/navigation/src/infrastructure/repositories/mock-header.repository.ts index 7333a1a..a0e86ce 100644 --- a/packages/navigation/src/infrastructure/repositories/mock-header.repository.ts +++ b/packages/navigation/src/infrastructure/repositories/mock-header.repository.ts @@ -2,7 +2,7 @@ import "reflect-metadata"; import { injectable } from "inversify"; import type { IHeaderRepository } from "../../application/repositories/header-repository.interface"; -import type { Header, HeaderItem } from "../../entities/header"; +import type { Header, HeaderItem } from "../../entities/models/header"; const DEFAULT_ITEMS: HeaderItem[] = [ { label: "Home", href: "/", external: false }, diff --git a/packages/navigation/src/infrastructure/repositories/payload-header.repository.ts b/packages/navigation/src/infrastructure/repositories/payload-header.repository.ts index 84683ee..24879c2 100644 --- a/packages/navigation/src/infrastructure/repositories/payload-header.repository.ts +++ b/packages/navigation/src/infrastructure/repositories/payload-header.repository.ts @@ -4,7 +4,7 @@ import { getPayload } from "payload"; import type { SanitizedConfig } from "payload"; import type { IHeaderRepository } from "../../application/repositories/header-repository.interface"; -import type { Header, HeaderItem } from "../../entities/header"; +import type { Header, HeaderItem } from "../../entities/models/header"; type PayloadHeaderGlobal = { logo?: string | number | { id: string | number } | null; diff --git a/packages/navigation/src/interface-adapters/controllers/header.controller.ts b/packages/navigation/src/interface-adapters/controllers/header.controller.ts index 703e34e..b51aced 100644 --- a/packages/navigation/src/interface-adapters/controllers/header.controller.ts +++ b/packages/navigation/src/interface-adapters/controllers/header.controller.ts @@ -1,4 +1,4 @@ -import type { Header } from "../../entities/header"; +import type { Header } from "../../entities/models/header"; import { getHeaderUseCase } from "../../application/use-cases/get-header.use-case"; export async function getHeaderController(): Promise
{