From a74c007509f864be9f11e2a3e79e95dfcc2c7794 Mon Sep 17 00:00:00 2001 From: QuantCode Agent Date: Sat, 27 Jun 2026 00:12:08 +0000 Subject: [PATCH] fix: resolve failing tests and type errors across api and shared packages - Implement paginate() in shared (was a not-implemented stub) - Fix auth middleware public-methods list ("post" -> "POST") so POST is matched per RFC 7231 uppercase HTTP methods - Rename User.userName -> username for consistency with api routes and tests - Add missing badRequest import in users route - Register already-installed bun-types in tsconfig to resolve bun:test and process globals (no new dependency) --- packages/api/src/middleware/auth.ts | 2 +- packages/api/src/routes/users.ts | 5 +---- packages/shared/src/types.ts | 2 +- packages/shared/src/utils/pagination.ts | 6 +++++- tsconfig.json | 14 +++++++++++--- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/api/src/middleware/auth.ts b/packages/api/src/middleware/auth.ts index dde32d9..497e70e 100644 --- a/packages/api/src/middleware/auth.ts +++ b/packages/api/src/middleware/auth.ts @@ -15,7 +15,7 @@ import type { MiddlewareHandler } from "hono" */ export const authMiddleware: MiddlewareHandler = async (c, next) => { // BUG: 'post' should be 'POST' — POST is never treated as public - const publicMethods = ["GET", "post"] + const publicMethods = ["GET", "POST"] if (publicMethods.includes(c.req.method)) { return next() diff --git a/packages/api/src/routes/users.ts b/packages/api/src/routes/users.ts index 53e605a..ea4702a 100644 --- a/packages/api/src/routes/users.ts +++ b/packages/api/src/routes/users.ts @@ -1,9 +1,6 @@ import { Hono } from "hono" import { db } from "../lib/db" -import { notFound } from "../lib/errors" -// BUG: missing import — `badRequest` is used below but not imported here. -// This causes a ReferenceError at runtime when POST /users is called with invalid data. -// Fix: add `badRequest` to the import from "../lib/errors" +import { notFound, badRequest } from "../lib/errors" const router = new Hono() diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index a2a1377..d522b01 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -8,7 +8,7 @@ export type User = { id: string - userName: string // BUG: should be `username` to match API usage + username: string email: string createdAt: string } diff --git a/packages/shared/src/utils/pagination.ts b/packages/shared/src/utils/pagination.ts index 12f8062..7447f15 100644 --- a/packages/shared/src/utils/pagination.ts +++ b/packages/shared/src/utils/pagination.ts @@ -11,5 +11,9 @@ import type { PaginatedResponse } from "../types" * The test in packages/shared/test/pagination.test.ts exercises the full contract. */ export function paginate(items: T[], page: number, size: number): PaginatedResponse { - throw new Error("not implemented") + const total = items.length + const totalPages = total === 0 ? 0 : Math.ceil(total / size) + const start = (page - 1) * size + const data = items.slice(start, start + size) + return { data, total, totalPages, page, pageSize: size } } diff --git a/tsconfig.json b/tsconfig.json index 53de6fd..e5ad2f4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,8 +6,16 @@ "strict": true, "skipLibCheck": true, "paths": { - "@e2e/shared": ["./packages/shared/src/index.ts"] - } + "@e2e/shared": [ + "./packages/shared/src/index.ts" + ] + }, + "types": [ + "bun-types" + ] }, - "include": ["packages/*/src/**/*", "packages/*/test/**/*"] + "include": [ + "packages/*/src/**/*", + "packages/*/test/**/*" + ] }