/** * Next.js Response Helpers * * Utility functions for creating standardized API responses in Next.js App Router. * These helpers work with both the App Router (Next.js 13+) and can be adapted for Pages Router. * * @example * ```typescript * import { jsonSuccess, jsonError } from '@tchil/business-codes/nextjs'; * * export async function GET() { * const users = await getUsers(); * return jsonSuccess(users); * } * * export async function POST(request: Request) { * try { * const body = await request.json(); * const user = await createUser(body); * return jsonCreated(user, 'User created successfully'); * } catch (error) { * return jsonError('Failed to create user', HttpStatus.BAD_REQUEST, BusinessCode.INVALID_INPUT); * } * } * ``` */ /** * Response options for Next.js */ export interface NextResponseOptions { /** HTTP headers to include in response */ headers?: Record | Headers; /** Response status text */ statusText?: string; } /** * Create a JSON success response * * @param data - Response data * @param message - Success message * @param options - Additional response options * @returns Response object with ApiResponse body */ export declare function jsonSuccess(data: T, message?: string, options?: NextResponseOptions): Response; /** * Create a JSON error response * * @param message - Error message * @param statusCode - HTTP status code (default: 500) * @param businessCode - Business error code (default: INTERNAL_ERROR) * @param details - Additional error details * @param options - Additional response options * @returns Response object with ApiResponse error body */ export declare function jsonError(message: string, statusCode?: number, businessCode?: number, details?: Record, options?: NextResponseOptions): Response; /** * Create a JSON created response (HTTP 201) * * @param data - Created resource data * @param message - Success message * @param options - Additional response options */ export declare function jsonCreated(data: T, message?: string, options?: NextResponseOptions): Response; /** * Create a JSON no content response (HTTP 204) * * @param options - Additional response options */ export declare function jsonNoContent(options?: NextResponseOptions): Response; /** * Create a paginated JSON response * * @param data - Array of items * @param pagination - Pagination metadata * @param message - Success message * @param options - Additional response options */ export declare function jsonPaginated(data: T[], pagination: { page: number; limit: number; total: number; }, message?: string, options?: NextResponseOptions): Response; /** * Create a bad request response (HTTP 400) */ export declare function jsonBadRequest(message?: string, details?: Record, options?: NextResponseOptions): Response; /** * Create an unauthorized response (HTTP 401) */ export declare function jsonUnauthorized(message?: string, businessCode?: number, options?: NextResponseOptions): Response; /** * Create a forbidden response (HTTP 403) */ export declare function jsonForbidden(message?: string, options?: NextResponseOptions): Response; /** * Create a not found response (HTTP 404) */ export declare function jsonNotFound(message?: string, businessCode?: number, options?: NextResponseOptions): Response; /** * Create a conflict response (HTTP 409) */ export declare function jsonConflict(message?: string, businessCode?: number, options?: NextResponseOptions): Response; /** * Create a validation error response (HTTP 422) */ export declare function jsonValidationError(details: Record, message?: string, options?: NextResponseOptions): Response; /** * Create a too many requests response (HTTP 429) */ export declare function jsonTooManyRequests(message?: string, options?: NextResponseOptions): Response; /** * Create an internal server error response (HTTP 500) */ export declare function jsonInternalError(message?: string, options?: NextResponseOptions): Response; /** * Wrapper function to handle async route handlers with error catching * * @example * ```typescript * export const GET = withErrorHandler(async (request) => { * const users = await getUsers(); * return jsonSuccess(users); * }); * ``` */ export declare function withErrorHandler(handler: (request: Request, context?: unknown) => Promise): (request: Request, context?: unknown) => Promise; /** * Parse and validate request body with error handling * * @example * ```typescript * export async function POST(request: Request) { * const body = await parseBody(request); * if (body.error) { * return body.error; * } * // body.data is typed as CreateUserDto * } * ``` */ export declare function parseBody(request: Request): Promise<{ data: T; error?: never; } | { data?: never; error: Response; }>; /** * Parse URL search params to pagination object * * @example * ```typescript * export async function GET(request: Request) { * const pagination = parsePagination(request, { defaultLimit: 20 }); * // { page: 1, limit: 20 } * } * ``` */ export declare function parsePagination(request: Request, options?: { defaultPage?: number; defaultLimit?: number; maxLimit?: number; }): { page: number; limit: number; }; //# sourceMappingURL=helpers.d.ts.map