veloce-ts 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/cjs/src/index.js +11 -11
- package/dist/cjs/src/index.js.map +4 -4
- package/dist/cjs/src/testing/index.js +4 -4
- package/dist/cjs/src/testing/index.js.map +3 -3
- package/dist/esm/src/index.js +3 -3
- package/dist/esm/src/index.js.map +3 -3
- package/dist/esm/src/testing/index.js +2 -2
- package/dist/esm/src/testing/index.js.map +3 -3
- package/dist/types/core/router-compiler.d.ts.map +1 -1
- package/dist/types/decorators/params.d.ts +8 -2
- package/dist/types/decorators/params.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"// src/helper/cookie/index.ts\nimport { parse, parseSigned, serialize, serializeSigned } from \"../../utils/cookie.js\";\nvar getCookie = (c, key, prefix) => {\n const cookie = c.req.raw.headers.get(\"Cookie\");\n if (typeof key === \"string\") {\n if (!cookie) {\n return void 0;\n }\n let finalKey = key;\n if (prefix === \"secure\") {\n finalKey = \"__Secure-\" + key;\n } else if (prefix === \"host\") {\n finalKey = \"__Host-\" + key;\n }\n const obj2 = parse(cookie, finalKey);\n return obj2[finalKey];\n }\n if (!cookie) {\n return {};\n }\n const obj = parse(cookie);\n return obj;\n};\nvar getSignedCookie = async (c, secret, key, prefix) => {\n const cookie = c.req.raw.headers.get(\"Cookie\");\n if (typeof key === \"string\") {\n if (!cookie) {\n return void 0;\n }\n let finalKey = key;\n if (prefix === \"secure\") {\n finalKey = \"__Secure-\" + key;\n } else if (prefix === \"host\") {\n finalKey = \"__Host-\" + key;\n }\n const obj2 = await parseSigned(cookie, secret, finalKey);\n return obj2[finalKey];\n }\n if (!cookie) {\n return {};\n }\n const obj = await parseSigned(cookie, secret);\n return obj;\n};\nvar generateCookie = (name, value, opt) => {\n let cookie;\n if (opt?.prefix === \"secure\") {\n cookie = serialize(\"__Secure-\" + name, value, { path: \"/\", ...opt, secure: true });\n } else if (opt?.prefix === \"host\") {\n cookie = serialize(\"__Host-\" + name, value, {\n ...opt,\n path: \"/\",\n secure: true,\n domain: void 0\n });\n } else {\n cookie = serialize(name, value, { path: \"/\", ...opt });\n }\n return cookie;\n};\nvar setCookie = (c, name, value, opt) => {\n const cookie = generateCookie(name, value, opt);\n c.header(\"Set-Cookie\", cookie, { append: true });\n};\nvar generateSignedCookie = async (name, value, secret, opt) => {\n let cookie;\n if (opt?.prefix === \"secure\") {\n cookie = await serializeSigned(\"__Secure-\" + name, value, secret, {\n path: \"/\",\n ...opt,\n secure: true\n });\n } else if (opt?.prefix === \"host\") {\n cookie = await serializeSigned(\"__Host-\" + name, value, secret, {\n ...opt,\n path: \"/\",\n secure: true,\n domain: void 0\n });\n } else {\n cookie = await serializeSigned(name, value, secret, { path: \"/\", ...opt });\n }\n return cookie;\n};\nvar setSignedCookie = async (c, name, value, secret, opt) => {\n const cookie = await generateSignedCookie(name, value, secret, opt);\n c.header(\"set-cookie\", cookie, { append: true });\n};\nvar deleteCookie = (c, name, opt) => {\n const deletedCookie = getCookie(c, name, opt?.prefix);\n setCookie(c, name, \"\", { ...opt, maxAge: 0 });\n return deletedCookie;\n};\nexport {\n deleteCookie,\n generateCookie,\n generateSignedCookie,\n getCookie,\n getSignedCookie,\n setCookie,\n setSignedCookie\n};\n",
|
|
28
28
|
"// Response builders for different content types\r\nimport type { Context } from '../types';\r\n\r\nexport interface FileOptions {\r\n filename?: string;\r\n contentType?: string;\r\n download?: boolean;\r\n}\r\n\r\nexport interface StreamOptions {\r\n contentType?: string;\r\n headers?: Record<string, string>;\r\n}\r\n\r\n/**\r\n * Response builder class providing static factory methods\r\n * for creating different types of HTTP responses\r\n * \r\n * @example\r\n * ```typescript\r\n * // Return JSON response\r\n * return Response.json({ id: 1, name: 'John' });\r\n * \r\n * // Return HTML\r\n * return Response.html('<h1>Hello World</h1>');\r\n * \r\n * // Serve a file\r\n * return Response.file('./uploads/document.pdf', { download: true });\r\n * \r\n * // Redirect\r\n * return Response.redirect('/login', 302);\r\n * ```\r\n */\r\nexport class Response {\r\n /**\r\n * Create a JSON response\r\n * @param data - The data to serialize as JSON\r\n * @param status - HTTP status code (default: 200)\r\n * @param headers - Optional custom headers\r\n * @returns JSONResponse instance\r\n * \r\n * @example\r\n * ```typescript\r\n * @Get('/users/:id')\r\n * getUser(@Param('id') id: string) {\r\n * return Response.json({ id, name: 'John' }, 200);\r\n * }\r\n * ```\r\n */\r\n static json(data: any, status: number = 200, headers?: Record<string, string>) {\r\n return new JSONResponse(data, status, headers);\r\n }\r\n\r\n /**\r\n * Create an HTML response\r\n * @param content - HTML content string\r\n * @param status - HTTP status code (default: 200)\r\n * @returns HTMLResponse instance\r\n * \r\n * @example\r\n * ```typescript\r\n * @Get('/page')\r\n * getPage() {\r\n * return Response.html('<h1>Welcome</h1>');\r\n * }\r\n * ```\r\n */\r\n static html(content: string, status: number = 200) {\r\n return new HTMLResponse(content, status);\r\n }\r\n\r\n /**\r\n * Create a file response to serve static files\r\n * @param path - Path to the file\r\n * @param options - File serving options (filename, contentType, download)\r\n * @returns FileResponse instance\r\n * \r\n * @example\r\n * ```typescript\r\n * @Get('/download/:filename')\r\n * downloadFile(@Param('filename') filename: string) {\r\n * return Response.file(`./uploads/${filename}`, { download: true });\r\n * }\r\n * ```\r\n */\r\n static file(path: string, options?: FileOptions) {\r\n return new FileResponse(path, options);\r\n }\r\n\r\n /**\r\n * Create a streaming response for large data or real-time content\r\n * @param stream - ReadableStream to send\r\n * @param options - Stream options (contentType, headers)\r\n * @returns StreamResponse instance\r\n * \r\n * @example\r\n * ```typescript\r\n * @Get('/stream')\r\n * streamData() {\r\n * const stream = new ReadableStream({\r\n * start(controller) {\r\n * controller.enqueue('chunk 1');\r\n * controller.close();\r\n * }\r\n * });\r\n * return Response.stream(stream, { contentType: 'text/plain' });\r\n * }\r\n * ```\r\n */\r\n static stream(stream: ReadableStream, options?: StreamOptions) {\r\n return new StreamResponse(stream, options);\r\n }\r\n\r\n /**\r\n * Create a redirect response\r\n * @param url - URL to redirect to\r\n * @param status - HTTP status code (default: 302)\r\n * @returns RedirectResponse instance\r\n * \r\n * @example\r\n * ```typescript\r\n * @Post('/login')\r\n * login(@Body(LoginSchema) credentials: LoginData) {\r\n * // ... authenticate user\r\n * return Response.redirect('/dashboard', 302);\r\n * }\r\n * ```\r\n */\r\n static redirect(url: string, status: number = 302) {\r\n return new RedirectResponse(url, status);\r\n }\r\n}\r\n\r\n/**\r\n * JSON response class\r\n * Serializes data as JSON with specified status code and headers\r\n */\r\nexport class JSONResponse {\r\n constructor(\r\n public data: any,\r\n public status: number = 200,\r\n public headers: Record<string, string> = {}\r\n ) { }\r\n\r\n /**\r\n * Convert to Hono response format\r\n * @param c - Hono context\r\n * @returns Hono JSON response\r\n */\r\n toHonoResponse(c: Context) {\r\n return c.json(this.data, this.status as any, this.headers);\r\n }\r\n}\r\n\r\n/**\r\n * HTML response class\r\n * Returns HTML content with proper Content-Type header\r\n */\r\nexport class HTMLResponse {\r\n constructor(\r\n public content: string,\r\n public status: number = 200\r\n ) { }\r\n\r\n /**\r\n * Convert to Hono response format\r\n * @param c - Hono context\r\n * @returns Hono HTML response\r\n */\r\n toHonoResponse(c: Context) {\r\n return c.html(this.content, this.status as any);\r\n }\r\n}\r\n\r\n/**\r\n * Redirect response class\r\n * Performs HTTP redirect to specified URL\r\n */\r\nexport class RedirectResponse {\r\n constructor(\r\n public url: string,\r\n public status: number = 302\r\n ) { }\r\n\r\n /**\r\n * Convert to Hono response format\r\n * @param c - Hono context\r\n * @returns Hono redirect response\r\n */\r\n toHonoResponse(c: Context) {\r\n return c.redirect(this.url, this.status as any);\r\n }\r\n}\r\n\r\n/**\r\n * FileResponse serves a file from the filesystem\r\n * Supports custom filenames, content types, and download mode\r\n */\r\nexport class FileResponse {\r\n constructor(\r\n public path: string,\r\n public options?: FileOptions\r\n ) { }\r\n\r\n async toHonoResponse(c: Context) {\r\n try {\r\n // Read file using Bun's file API (works in Bun runtime)\r\n // For other runtimes, this would need adapter-specific implementation\r\n const file = typeof Bun !== 'undefined' \r\n ? Bun.file(this.path)\r\n : await this.readFileNode(this.path);\r\n\r\n // Determine content type\r\n const contentType = this.options?.contentType || this.guessContentType(this.path);\r\n\r\n // Build headers\r\n const headers: Record<string, string> = {\r\n 'Content-Type': contentType,\r\n };\r\n\r\n // Add Content-Disposition for downloads or custom filenames\r\n if (this.options?.download || this.options?.filename) {\r\n const filename = this.options?.filename || this.path.split('/').pop() || 'download';\r\n const disposition = this.options?.download ? 'attachment' : 'inline';\r\n headers['Content-Disposition'] = `${disposition}; filename=\"${filename}\"`;\r\n }\r\n\r\n // Return file response\r\n if (typeof Bun !== 'undefined' && file instanceof Blob) {\r\n return c.body(file as any, 200, headers);\r\n } else {\r\n // For Node.js or other runtimes\r\n return c.body(file as any, 200, headers);\r\n }\r\n } catch (error) {\r\n // File not found or read error\r\n return c.json(\r\n { \r\n error: 'File not found',\r\n message: error instanceof Error ? error.message : 'Unknown error'\r\n },\r\n 404\r\n );\r\n }\r\n }\r\n\r\n private async readFileNode(path: string): Promise<Blob> {\r\n // Fallback for Node.js - would need fs module\r\n // This is a placeholder that works with the type system\r\n throw new Error('File reading in Node.js requires fs module - use Bun runtime or implement adapter');\r\n }\r\n\r\n private guessContentType(path: string): string {\r\n const ext = path.split('.').pop()?.toLowerCase();\r\n const mimeTypes: Record<string, string> = {\r\n 'html': 'text/html',\r\n 'css': 'text/css',\r\n 'js': 'application/javascript',\r\n 'json': 'application/json',\r\n 'png': 'image/png',\r\n 'jpg': 'image/jpeg',\r\n 'jpeg': 'image/jpeg',\r\n 'gif': 'image/gif',\r\n 'svg': 'image/svg+xml',\r\n 'pdf': 'application/pdf',\r\n 'txt': 'text/plain',\r\n 'xml': 'application/xml',\r\n };\r\n return mimeTypes[ext || ''] || 'application/octet-stream';\r\n }\r\n}\r\n\r\n/**\r\n * StreamResponse sends data as a stream\r\n * Useful for large files, real-time data, or server-sent events\r\n */\r\nexport class StreamResponse {\r\n constructor(\r\n public stream: ReadableStream,\r\n public options?: StreamOptions\r\n ) { }\r\n\r\n toHonoResponse(c: Context) {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': this.options?.contentType || 'application/octet-stream',\r\n ...this.options?.headers,\r\n };\r\n\r\n // Return streaming response\r\n return c.body(this.stream as any, 200, headers);\r\n }\r\n}\r\n\r\n/**\r\n * ResponseSerializer handles automatic serialization of handler return values\r\n * Converts different return types into appropriate HTTP responses\r\n */\r\nexport class ResponseSerializer {\r\n /**\r\n * Serialize a handler result into an HTTP response\r\n * \r\n * @param c - Hono context\r\n * @param result - The value returned from the handler\r\n * @returns Serialized HTTP response\r\n */\r\n static serialize(c: Context, result: any): any {\r\n // Handle null/undefined as 204 No Content\r\n if (result === null || result === undefined) {\r\n return c.body(null, 204);\r\n }\r\n\r\n // If result is already a native Response object, return it directly\r\n if (result instanceof Response) {\r\n return result;\r\n }\r\n\r\n // Detect custom Response instances and call toHonoResponse\r\n if (result instanceof JSONResponse) {\r\n return result.toHonoResponse(c);\r\n }\r\n \r\n if (result instanceof HTMLResponse) {\r\n return result.toHonoResponse(c);\r\n }\r\n \r\n if (result instanceof FileResponse) {\r\n return result.toHonoResponse(c);\r\n }\r\n \r\n if (result instanceof StreamResponse) {\r\n return result.toHonoResponse(c);\r\n }\r\n \r\n if (result instanceof RedirectResponse) {\r\n return result.toHonoResponse(c);\r\n }\r\n\r\n // Check for any object with toHonoResponse method (extensibility)\r\n if (result && typeof result.toHonoResponse === 'function') {\r\n return result.toHonoResponse(c);\r\n }\r\n\r\n // Default to JSON serialization for plain objects and primitives\r\n return c.json(result);\r\n }\r\n}\r\n",
|
|
29
29
|
"import type { RouteMetadata, ParameterMetadata } from '../types';\r\n\r\n/**\r\n * Compiled route metadata with pre-computed values for performance\r\n */\r\nexport interface CompiledRouteMetadata extends RouteMetadata {\r\n // Pre-compiled path regex for matching\r\n pathRegex?: RegExp;\r\n \r\n // Pre-resolved parameter order (indices sorted)\r\n parameterOrder: number[];\r\n \r\n // Pre-resolved dependency order (indices sorted)\r\n dependencyOrder: number[];\r\n \r\n // Maximum argument index (for array allocation)\r\n maxArgumentIndex: number;\r\n \r\n // Flags for quick checks\r\n hasBody: boolean;\r\n hasQuery: boolean;\r\n hasParams: boolean;\r\n hasHeaders: boolean;\r\n hasCookies: boolean;\r\n hasDependencies: boolean;\r\n \r\n // Handler for functional routes\r\n handler?: (c: any, ...args: any[]) => any;\r\n}\r\n\r\n/**\r\n * MetadataCompiler pre-processes route metadata for optimal runtime performance\r\n * This reduces the work needed during request processing\r\n */\r\nexport class MetadataCompiler {\r\n /**\r\n * Compile a route metadata object into an optimized version\r\n * Pre-computes regex patterns, parameter order, and other expensive operations\r\n */\r\n static compile(route: RouteMetadata): CompiledRouteMetadata {\r\n // Pre-compile path regex for parameter extraction\r\n const pathRegex = this.compilePathRegex(route.path);\r\n \r\n // Pre-resolve parameter order\r\n const parameterOrder = this.resolveParameterOrder(route.parameters);\r\n \r\n // Pre-resolve dependency order\r\n const dependencyOrder = this.resolveDependencyOrder(route.dependencies);\r\n \r\n // Calculate maximum argument index\r\n const maxArgumentIndex = this.calculateMaxArgumentIndex(\r\n route.parameters,\r\n route.dependencies\r\n );\r\n \r\n // Pre-compute parameter type flags for quick checks\r\n const flags = this.computeParameterFlags(route.parameters);\r\n \r\n return {\r\n ...route,\r\n pathRegex,\r\n parameterOrder,\r\n dependencyOrder,\r\n maxArgumentIndex,\r\n ...flags\r\n };\r\n }\r\n\r\n /**\r\n * Compile path pattern into a regex for efficient matching\r\n * Converts FastAPI-style {param} to regex capture groups\r\n */\r\n private static compilePathRegex(path: string): RegExp {\r\n // Escape special regex characters except for parameter placeholders\r\n let pattern = path.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n \r\n // Convert {param} to named capture groups\r\n pattern = pattern.replace(/\\\\\\{([^}]+)\\\\\\}/g, '(?<$1>[^/]+)');\r\n \r\n // Convert :param to named capture groups (Hono style)\r\n pattern = pattern.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)/g, '(?<$1>[^/]+)');\r\n \r\n // Anchor to start and end\r\n pattern = `^${pattern}$`;\r\n \r\n return new RegExp(pattern);\r\n }\r\n\r\n /**\r\n * Resolve the order of parameters by their indices\r\n * Returns sorted array of indices for efficient iteration\r\n */\r\n private static resolveParameterOrder(parameters: ParameterMetadata[]): number[] {\r\n if (!parameters || parameters.length === 0) {\r\n return [];\r\n }\r\n \r\n // Extract indices and sort them\r\n return parameters\r\n .map(p => p.index)\r\n .filter(idx => idx !== undefined)\r\n .sort((a, b) => a - b);\r\n }\r\n\r\n /**\r\n * Resolve the order of dependencies by their indices\r\n * Returns sorted array of indices for efficient iteration\r\n */\r\n private static resolveDependencyOrder(dependencies: any[]): number[] {\r\n if (!dependencies || dependencies.length === 0) {\r\n return [];\r\n }\r\n \r\n // Extract indices and sort them\r\n return dependencies\r\n .map(d => d.index)\r\n .filter(idx => idx !== undefined)\r\n .sort((a, b) => a - b);\r\n }\r\n\r\n /**\r\n * Calculate the maximum argument index to determine array size\r\n * This allows pre-allocation of the arguments array\r\n */\r\n private static calculateMaxArgumentIndex(\r\n parameters: ParameterMetadata[],\r\n dependencies: any[]\r\n ): number {\r\n let maxIndex = -1;\r\n \r\n if (parameters && parameters.length > 0) {\r\n const maxParamIndex = Math.max(...parameters.map(p => p.index));\r\n maxIndex = Math.max(maxIndex, maxParamIndex);\r\n }\r\n \r\n if (dependencies && dependencies.length > 0) {\r\n const maxDepIndex = Math.max(...dependencies.map(d => d.index));\r\n maxIndex = Math.max(maxIndex, maxDepIndex);\r\n }\r\n \r\n return maxIndex;\r\n }\r\n\r\n /**\r\n * Pre-compute flags for parameter types to avoid repeated checks\r\n * These flags enable quick conditional logic during request processing\r\n */\r\n private static computeParameterFlags(parameters: ParameterMetadata[]): {\r\n hasBody: boolean;\r\n hasQuery: boolean;\r\n hasParams: boolean;\r\n hasHeaders: boolean;\r\n hasCookies: boolean;\r\n hasDependencies: boolean;\r\n } {\r\n if (!parameters || parameters.length === 0) {\r\n return {\r\n hasBody: false,\r\n hasQuery: false,\r\n hasParams: false,\r\n hasHeaders: false,\r\n hasCookies: false,\r\n hasDependencies: false\r\n };\r\n }\r\n \r\n return {\r\n hasBody: parameters.some(p => p.type === 'body'),\r\n hasQuery: parameters.some(p => p.type === 'query'),\r\n hasParams: parameters.some(p => p.type === 'param'),\r\n hasHeaders: parameters.some(p => p.type === 'header'),\r\n hasCookies: parameters.some(p => p.type === 'cookie'),\r\n hasDependencies: false // Dependencies are tracked separately\r\n };\r\n }\r\n\r\n /**\r\n * Batch compile multiple routes for efficiency\r\n * Useful when compiling all routes at application startup\r\n */\r\n static compileAll(routes: RouteMetadata[]): CompiledRouteMetadata[] {\r\n return routes.map(route => this.compile(route));\r\n }\r\n}\r\n",
|
|
30
|
-
"import type { Hono } from 'hono';\nimport { getCookie } from 'hono/cookie';\nimport type { Context } from '../types';\nimport { MetadataRegistry } from './metadata';\nimport { DIContainer } from '../dependencies/container';\nimport { ValidationEngine } from '../validation/validator';\nimport { ResponseSerializer } from '../responses/response';\nimport { ErrorHandler } from '../errors/handler';\nimport { MetadataCompiler, type CompiledRouteMetadata } from './compiled-metadata';\nimport type { RouteMetadata, ParameterMetadata, DependencyMetadata } from '../types';\n\n/**\n * RouterCompiler converts metadata from decorators and functional API\n * into actual Hono routes with full validation and dependency injection\n */\nexport class RouterCompiler {\n // Cache compiled metadata for performance\n private compiledRoutes: Map<string, CompiledRouteMetadata> = new Map();\n\n constructor(\n private app: Hono,\n private metadata: MetadataRegistry,\n private container: DIContainer,\n private validator: ValidationEngine,\n private errorHandler: ErrorHandler\n ) {}\n\n /**\n * Compile all registered routes and register them with Hono\n * This is the main entry point that processes all route metadata\n */\n compile(): void {\n const routes = this.metadata.getRoutes();\n\n // Pre-compile all routes for performance\n const compiledRoutes = MetadataCompiler.compileAll(routes);\n\n for (const route of compiledRoutes) {\n // Cache compiled route for potential reuse\n const routeKey = `${route.target.name}:${route.propertyKey}`;\n this.compiledRoutes.set(routeKey, route);\n\n const handler = this.createHandler(route);\n const path = this.normalizePath(route.path);\n const method = route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch';\n\n // Register route with Hono, including any middleware\n // Note: Controller middleware is already included in route.middleware by application.ts\n if (route.middleware && route.middleware.length > 0) {\n this.app[method](path, ...route.middleware, handler);\n } else {\n this.app[method](path, handler);\n }\n }\n }\n\n /**\n * Normalize a path to ensure it follows Hono's conventions\n * Converts FastAPI-style path parameters to Hono format\n */\n private normalizePath(path: string): string {\n // Ensure path starts with /\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n\n // Convert FastAPI-style {param} to Hono-style :param\n path = path.replace(/\\{([^}]+)\\}/g, ':$1');\n\n // Remove trailing slash unless it's the root path\n if (path.length > 1 && path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n\n return path;\n }\n\n /**\n * Create a Hono handler function for a route\n * Integrates parameter extraction, validation, dependency injection, and error handling\n */\n public createHandler(route: CompiledRouteMetadata): (c: Context) => Promise<any> {\n return async (c: Context) => {\n try {\n // Store route metadata in context for auth checks\n c.set('routeMetadata', route);\n \n // 1. Extract and validate parameters from the request\n const args = await this.extractParameters(c, route.parameters);\n\n // 2. Resolve dependencies with the DI container\n const deps = await this.resolveDependencies(c, route.dependencies);\n\n // 3. Merge parameters and dependencies into correct order\n const allArgs = this.mergeArguments(args, deps, route.parameters, route.maxArgumentIndex);\n\n // 4. Execute the handler\n let result: any;\n\n // Check if this is a functional route (has handler property)\n if ((route as any).handler) {\n // Functional API route - call handler directly\n result = await (route as any).handler(c, ...allArgs);\n } else {\n // Decorator-based route - instantiate controller and call method\n const instance = await this.container.resolve(route.target, {\n scope: 'transient',\n context: c\n });\n \n if (typeof instance[route.propertyKey] !== 'function') {\n throw new Error(`Method ${route.propertyKey} not found on controller ${route.target.name}`);\n }\n \n result = await instance[route.propertyKey](...allArgs);\n }\n\n // 5. Serialize and return the response\n return this.serializeResponse(c, result);\n } catch (error) {\n // 6. Handle errors and pass to error handler\n return await this.handleError(c, error);\n }\n };\n }\n\n /**\n * Serialize the handler result into a proper HTTP response\n * Delegates to ResponseSerializer for consistent handling\n */\n private serializeResponse(c: Context, result: any): any {\n return ResponseSerializer.serialize(c, result);\n }\n\n /**\n * Get route metadata for the current request context\n */\n private getRouteMetadataForContext(c: Context): CompiledRouteMetadata | null {\n // This is a simplified approach - in a real implementation we'd need to\n // match the current route path and method to find the metadata\n // For now, we'll store it in the context during route compilation\n return c.get('routeMetadata') || null;\n }\n\n /**\n * Check if authentication is required for a route\n */\n private isAuthRequired(routeMetadata: CompiledRouteMetadata): boolean {\n // Check if the route has @Auth() decorator metadata\n if (routeMetadata.auth?.required) {\n return true;\n }\n\n // Check if any parameter requires authentication (has current-user type)\n return routeMetadata.parameters.some(param => param.type === 'current-user');\n }\n\n /**\n * Handle errors that occur during request processing\n * Delegates to ErrorHandler for consistent error handling\n */\n private async handleError(c: Context, error: any): Promise<any> {\n // Delegate to the ErrorHandler\n return await this.errorHandler.handle(error, c);\n }\n\n /**\n * Extract and validate parameters from the request context\n * Handles body, query, params, headers, cookies, and special types\n */\n private async extractParameters(\n c: Context,\n params: ParameterMetadata[]\n ): Promise<any[]> {\n const extracted: any[] = [];\n\n for (const param of params) {\n // Skip undefined entries (sparse array handling)\n if (!param) continue;\n \n let value: any;\n\n switch (param.type) {\n case 'body':\n // Extract request body as JSON\n try {\n value = await c.req.json();\n } catch (error) {\n value = null;\n }\n break;\n\n case 'query':\n // Extract query parameters\n if (param.name) {\n // Extract specific query parameter\n value = c.req.query(param.name);\n } else {\n // Extract all query parameters\n value = c.req.query();\n }\n break;\n\n case 'param':\n // Extract path parameters\n if (param.name) {\n // Extract specific path parameter\n value = c.req.param(param.name);\n } else {\n // Extract all path parameters\n value = c.req.param();\n }\n break;\n\n case 'header':\n // Extract headers\n if (param.name) {\n // Extract specific header\n value = c.req.header(param.name);\n } else {\n // Extract all headers as object\n const headers: Record<string, string> = {};\n c.req.raw.headers.forEach((val, key) => {\n headers[key] = val;\n });\n value = headers;\n }\n break;\n\n case 'cookie':\n // Extract cookies using Hono's cookie helper\n if (param.name) {\n // Extract specific cookie\n value = getCookie(c, param.name);\n } else {\n // Extract all cookies - parse from Cookie header\n const cookieHeader = c.req.header('cookie');\n if (cookieHeader) {\n value = Object.fromEntries(\n cookieHeader.split(';').map(cookie => {\n const [key, ...valueParts] = cookie.trim().split('=');\n return [key, valueParts.join('=')];\n })\n );\n } else {\n value = {};\n }\n }\n break;\n\n case 'request':\n // Pass the raw request object\n value = c.req;\n break;\n\n case 'response':\n case 'context':\n // Pass the Hono context\n value = c;\n break;\n\n case 'current-user':\n // Extract current user from context (set by auth middleware)\n value = c.get('auth.user') || null;\n \n // Check if this route requires authentication by looking for @Auth() decorator\n // We need to check the route metadata to see if auth is required\n const routeMetadata = this.getRouteMetadataForContext(c);\n if (routeMetadata && this.isAuthRequired(routeMetadata)) {\n if (!value) {\n const authError = c.get('auth.error') || 'Authentication required';\n const { AuthenticationException } = await import('../auth/exceptions.js');\n throw new AuthenticationException(authError);\n }\n }\n break;\n\n case 'token':\n // Extract JWT token from context (set by auth middleware)\n value = c.get('auth.token') || null;\n break;\n\n case 'oauth-user':\n // Extract OAuth user from context (set by OAuth middleware)\n value = c.get('oauth.user') || null;\n break;\n\n case 'oauth-token':\n // Extract OAuth token from context (set by OAuth middleware)\n value = c.get('oauth.token') || null;\n break;\n\n case 'current-session':\n // Extract current session from context (set by session middleware)\n value = c.get('session') || null;\n break;\n\n case 'session-data':\n // Extract session data from context\n const session = c.get('session');\n if (session && param.metadata?.key) {\n value = session.data[param.metadata.key];\n } else if (session) {\n value = session.data;\n } else {\n value = null;\n }\n break;\n\n case 'csrf-token':\n // Extract CSRF token from context\n value = c.get('csrf.token') || null;\n break;\n\n case 'filtered-resource':\n // This would be handled by permission middleware\n value = c.get('filtered.resource') || null;\n break;\n\n case 'filtered-attributes':\n // This would be handled by permission middleware\n value = c.get('filtered.attributes') || [];\n break;\n\n default:\n value = undefined;\n }\n\n // Validate with Zod schema if provided\n if (param.schema) {\n try {\n value = await this.validator.validate(value, param.schema);\n } catch (error) {\n // Re-throw validation errors - they'll be caught by error handler\n throw error;\n }\n }\n\n // Store at the correct parameter index\n extracted[param.index] = value;\n }\n\n return extracted;\n }\n\n /**\n * Merge parameters and dependencies into a single arguments array\n * Ensures each argument is placed at its correct index\n * Note: Returns a sparse array to maintain correct parameter positions\n * Uses pre-computed maxArgumentIndex from compiled metadata for performance\n */\n private mergeArguments(\n parameters: any[],\n dependencies: any[],\n paramMetadata: ParameterMetadata[],\n maxArgumentIndex?: number\n ): any[] {\n // Filter out undefined entries first\n const validParamMetadata = paramMetadata.filter(p => p !== undefined && p.index !== undefined);\n \n // Calculate indices safely\n const paramIndices = validParamMetadata.map(p => p.index);\n const maxParamIndex = paramIndices.length > 0 ? Math.max(...paramIndices) : -1;\n \n // Use pre-computed max index if available, otherwise calculate\n let maxIndex = maxArgumentIndex !== undefined && maxArgumentIndex >= 0\n ? maxArgumentIndex\n : Math.max(\n maxParamIndex,\n parameters.length - 1,\n dependencies.length - 1,\n 0\n );\n \n // Ensure maxIndex is valid\n if (!Number.isFinite(maxIndex) || maxIndex < 0) {\n maxIndex = 0;\n }\n \n // Pre-allocate array with exact size needed\n const merged: any[] = new Array(maxIndex + 1);\n\n // Fill in parameters at their correct indices from the sparse array\n for (let i = 0; i <= maxIndex; i++) {\n if (parameters[i] !== undefined) {\n merged[i] = parameters[i];\n } else if (dependencies[i] !== undefined) {\n merged[i] = dependencies[i];\n }\n }\n\n return merged;\n }\n\n /**\n * Resolve dependencies for a route handler\n * Calls DIContainer.resolve for each dependency with appropriate scope\n */\n private async resolveDependencies(\n c: Context,\n deps: DependencyMetadata[]\n ): Promise<any[]> {\n const resolved: any[] = [];\n\n for (const dep of deps) {\n // Skip undefined entries (sparse array handling)\n if (!dep) continue;\n \n try {\n // Resolve the dependency with the DI container\n // Pass the context for request-scoped dependencies\n const value = await this.container.resolve(dep.provider, {\n scope: dep.scope,\n context: c\n });\n\n // Store at the correct parameter index\n resolved[dep.index] = value;\n } catch (error) {\n // Wrap dependency resolution errors with context\n throw new Error(\n `Failed to resolve dependency at index ${dep.index}: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n return resolved;\n }\n}\n",
|
|
30
|
+
"import type { Hono } from 'hono';\nimport { getCookie } from 'hono/cookie';\nimport type { Context } from '../types';\nimport { MetadataRegistry } from './metadata';\nimport { DIContainer } from '../dependencies/container';\nimport { ValidationEngine } from '../validation/validator';\nimport { ResponseSerializer } from '../responses/response';\nimport { ErrorHandler } from '../errors/handler';\nimport { MetadataCompiler, type CompiledRouteMetadata } from './compiled-metadata';\nimport type { RouteMetadata, ParameterMetadata, DependencyMetadata } from '../types';\nimport { BadRequestException } from '../errors/exceptions';\n\n/**\n * RouterCompiler converts metadata from decorators and functional API\n * into actual Hono routes with full validation and dependency injection\n */\nexport class RouterCompiler {\n // Cache compiled metadata for performance\n private compiledRoutes: Map<string, CompiledRouteMetadata> = new Map();\n\n constructor(\n private app: Hono,\n private metadata: MetadataRegistry,\n private container: DIContainer,\n private validator: ValidationEngine,\n private errorHandler: ErrorHandler\n ) {}\n\n /**\n * Compile all registered routes and register them with Hono\n * This is the main entry point that processes all route metadata\n */\n compile(): void {\n const routes = this.metadata.getRoutes();\n\n // Pre-compile all routes for performance\n const compiledRoutes = MetadataCompiler.compileAll(routes);\n\n for (const route of compiledRoutes) {\n // Cache compiled route for potential reuse\n const routeKey = `${route.target.name}:${route.propertyKey}`;\n this.compiledRoutes.set(routeKey, route);\n\n const handler = this.createHandler(route);\n const path = this.normalizePath(route.path);\n const method = route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch';\n\n // Register route with Hono, including any middleware\n // Note: Controller middleware is already included in route.middleware by application.ts\n if (route.middleware && route.middleware.length > 0) {\n this.app[method](path, ...route.middleware, handler);\n } else {\n this.app[method](path, handler);\n }\n }\n }\n\n /**\n * Normalize a path to ensure it follows Hono's conventions\n * Converts FastAPI-style path parameters to Hono format\n */\n private normalizePath(path: string): string {\n // Ensure path starts with /\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n\n // Convert FastAPI-style {param} to Hono-style :param\n path = path.replace(/\\{([^}]+)\\}/g, ':$1');\n\n // Remove trailing slash unless it's the root path\n if (path.length > 1 && path.endsWith('/')) {\n path = path.slice(0, -1);\n }\n\n return path;\n }\n\n /**\n * Create a Hono handler function for a route\n * Integrates parameter extraction, validation, dependency injection, and error handling\n */\n public createHandler(route: CompiledRouteMetadata): (c: Context) => Promise<any> {\n return async (c: Context) => {\n try {\n // Store route metadata in context for auth checks\n c.set('routeMetadata', route);\n \n // 1. Extract and validate parameters from the request\n const args = await this.extractParameters(c, route.parameters);\n\n // 2. Resolve dependencies with the DI container\n const deps = await this.resolveDependencies(c, route.dependencies);\n\n // 3. Merge parameters and dependencies into correct order\n const allArgs = this.mergeArguments(args, deps, route.parameters, route.maxArgumentIndex);\n\n // 4. Execute the handler\n let result: any;\n\n // Check if this is a functional route (has handler property)\n if ((route as any).handler) {\n // Functional API route - call handler directly\n result = await (route as any).handler(c, ...allArgs);\n } else {\n // Decorator-based route - instantiate controller and call method\n const instance = await this.container.resolve(route.target, {\n scope: 'transient',\n context: c\n });\n \n if (typeof instance[route.propertyKey] !== 'function') {\n throw new Error(`Method ${route.propertyKey} not found on controller ${route.target.name}`);\n }\n \n result = await instance[route.propertyKey](...allArgs);\n }\n\n // 5. Serialize and return the response\n return this.serializeResponse(c, result);\n } catch (error) {\n // 6. Handle errors and pass to error handler\n return await this.handleError(c, error);\n }\n };\n }\n\n /**\n * Serialize the handler result into a proper HTTP response\n * Delegates to ResponseSerializer for consistent handling\n */\n private serializeResponse(c: Context, result: any): any {\n return ResponseSerializer.serialize(c, result);\n }\n\n /**\n * Get route metadata for the current request context\n */\n private getRouteMetadataForContext(c: Context): CompiledRouteMetadata | null {\n // This is a simplified approach - in a real implementation we'd need to\n // match the current route path and method to find the metadata\n // For now, we'll store it in the context during route compilation\n return c.get('routeMetadata') || null;\n }\n\n /**\n * Check if authentication is required for a route\n */\n private isAuthRequired(routeMetadata: CompiledRouteMetadata): boolean {\n // Check if the route has @Auth() decorator metadata\n if (routeMetadata.auth?.required) {\n return true;\n }\n\n // Check if any parameter requires authentication (has current-user type)\n return routeMetadata.parameters.some(param => param.type === 'current-user');\n }\n\n /**\n * Handle errors that occur during request processing\n * Delegates to ErrorHandler for consistent error handling\n */\n private async handleError(c: Context, error: any): Promise<any> {\n // Delegate to the ErrorHandler\n return await this.errorHandler.handle(error, c);\n }\n\n /**\n * Extract and validate parameters from the request context\n * Handles body, query, params, headers, cookies, and special types\n */\n private async extractParameters(\n c: Context,\n params: ParameterMetadata[]\n ): Promise<any[]> {\n const extracted: any[] = [];\n\n for (const param of params) {\n // Skip undefined entries (sparse array handling)\n if (!param) continue;\n \n let value: any;\n\n switch (param.type) {\n case 'body':\n // Extract request body as JSON\n try {\n value = await c.req.json();\n } catch (error) {\n value = null;\n }\n break;\n\n case 'query':\n // Extract query parameters\n if (param.name) {\n // Extract specific query parameter\n value = c.req.query(param.name);\n } else {\n // Extract all query parameters\n value = c.req.query();\n }\n \n // Validate with schema if provided\n if (param.schema && value !== undefined) {\n try {\n value = param.schema.parse(value);\n } catch (error) {\n throw new BadRequestException(`Invalid query parameter: ${error}`);\n }\n }\n break;\n\n case 'param':\n // Extract path parameters\n if (param.name) {\n // Extract specific path parameter\n value = c.req.param(param.name);\n } else {\n // Extract all path parameters\n value = c.req.param();\n }\n break;\n\n case 'header':\n // Extract headers\n if (param.name) {\n // Extract specific header\n value = c.req.header(param.name);\n } else {\n // Extract all headers as object\n const headers: Record<string, string> = {};\n c.req.raw.headers.forEach((val, key) => {\n headers[key] = val;\n });\n value = headers;\n }\n break;\n\n case 'cookie':\n // Extract cookies using Hono's cookie helper\n if (param.name) {\n // Extract specific cookie\n value = getCookie(c, param.name);\n } else {\n // Extract all cookies - parse from Cookie header\n const cookieHeader = c.req.header('cookie');\n if (cookieHeader) {\n value = Object.fromEntries(\n cookieHeader.split(';').map(cookie => {\n const [key, ...valueParts] = cookie.trim().split('=');\n return [key, valueParts.join('=')];\n })\n );\n } else {\n value = {};\n }\n }\n break;\n\n case 'request':\n // Pass the raw request object\n value = c.req;\n break;\n\n case 'response':\n case 'context':\n // Pass the Hono context\n value = c;\n break;\n\n case 'current-user':\n // Extract current user from context (set by auth middleware)\n value = c.get('auth.user') || null;\n \n // Check if this route requires authentication by looking for @Auth() decorator\n // We need to check the route metadata to see if auth is required\n const routeMetadata = this.getRouteMetadataForContext(c);\n if (routeMetadata && this.isAuthRequired(routeMetadata)) {\n if (!value) {\n const authError = c.get('auth.error') || 'Authentication required';\n const { AuthenticationException } = await import('../auth/exceptions.js');\n throw new AuthenticationException(authError);\n }\n }\n break;\n\n case 'token':\n // Extract JWT token from context (set by auth middleware)\n value = c.get('auth.token') || null;\n break;\n\n case 'oauth-user':\n // Extract OAuth user from context (set by OAuth middleware)\n value = c.get('oauth.user') || null;\n break;\n\n case 'oauth-token':\n // Extract OAuth token from context (set by OAuth middleware)\n value = c.get('oauth.token') || null;\n break;\n\n case 'current-session':\n // Extract current session from context (set by session middleware)\n value = c.get('session') || null;\n break;\n\n case 'session-data':\n // Extract session data from context\n const session = c.get('session');\n if (session && param.metadata?.key) {\n value = session.data[param.metadata.key];\n } else if (session) {\n value = session.data;\n } else {\n value = null;\n }\n break;\n\n case 'csrf-token':\n // Extract CSRF token from context\n value = c.get('csrf.token') || null;\n break;\n\n case 'filtered-resource':\n // This would be handled by permission middleware\n value = c.get('filtered.resource') || null;\n break;\n\n case 'filtered-attributes':\n // This would be handled by permission middleware\n value = c.get('filtered.attributes') || [];\n break;\n\n default:\n value = undefined;\n }\n\n // Validate with Zod schema if provided\n if (param.schema) {\n try {\n value = await this.validator.validate(value, param.schema);\n } catch (error) {\n // Re-throw validation errors - they'll be caught by error handler\n throw error;\n }\n }\n\n // Store at the correct parameter index\n extracted[param.index] = value;\n }\n\n return extracted;\n }\n\n /**\n * Merge parameters and dependencies into a single arguments array\n * Ensures each argument is placed at its correct index\n * Note: Returns a sparse array to maintain correct parameter positions\n * Uses pre-computed maxArgumentIndex from compiled metadata for performance\n */\n private mergeArguments(\n parameters: any[],\n dependencies: any[],\n paramMetadata: ParameterMetadata[],\n maxArgumentIndex?: number\n ): any[] {\n // Filter out undefined entries first\n const validParamMetadata = paramMetadata.filter(p => p !== undefined && p.index !== undefined);\n \n // Calculate indices safely\n const paramIndices = validParamMetadata.map(p => p.index);\n const maxParamIndex = paramIndices.length > 0 ? Math.max(...paramIndices) : -1;\n \n // Use pre-computed max index if available, otherwise calculate\n let maxIndex = maxArgumentIndex !== undefined && maxArgumentIndex >= 0\n ? maxArgumentIndex\n : Math.max(\n maxParamIndex,\n parameters.length - 1,\n dependencies.length - 1,\n 0\n );\n \n // Ensure maxIndex is valid\n if (!Number.isFinite(maxIndex) || maxIndex < 0) {\n maxIndex = 0;\n }\n \n // Pre-allocate array with exact size needed\n const merged: any[] = new Array(maxIndex + 1);\n\n // Fill in parameters at their correct indices from the sparse array\n for (let i = 0; i <= maxIndex; i++) {\n if (parameters[i] !== undefined) {\n merged[i] = parameters[i];\n } else if (dependencies[i] !== undefined) {\n merged[i] = dependencies[i];\n }\n }\n\n return merged;\n }\n\n /**\n * Resolve dependencies for a route handler\n * Calls DIContainer.resolve for each dependency with appropriate scope\n */\n private async resolveDependencies(\n c: Context,\n deps: DependencyMetadata[]\n ): Promise<any[]> {\n const resolved: any[] = [];\n\n for (const dep of deps) {\n // Skip undefined entries (sparse array handling)\n if (!dep) continue;\n \n try {\n // Resolve the dependency with the DI container\n // Pass the context for request-scoped dependencies\n const value = await this.container.resolve(dep.provider, {\n scope: dep.scope,\n context: c\n });\n\n // Store at the correct parameter index\n resolved[dep.index] = value;\n } catch (error) {\n // Wrap dependency resolution errors with context\n throw new Error(\n `Failed to resolve dependency at index ${dep.index}: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n return resolved;\n }\n}\n",
|
|
31
31
|
"// Plugin system\r\nimport type { VeloceTS } from './application';\r\n\r\n/**\r\n * Plugin interface that all plugins must implement\r\n * Plugins can extend the framework with additional functionality\r\n */\r\nexport interface Plugin {\r\n /** Unique name of the plugin */\r\n name: string;\r\n \r\n /** Optional version string */\r\n version?: string;\r\n \r\n /** Optional list of plugin names this plugin depends on */\r\n dependencies?: string[];\r\n \r\n /** \r\n * Install method called when the plugin is registered\r\n * @param app - The VeloceTS application instance\r\n */\r\n install(app: VeloceTS): void | Promise<void>;\r\n}\r\n\r\n/**\r\n * PluginManager handles plugin registration and installation\r\n * Resolves plugin dependencies using topological sort\r\n */\r\nexport class PluginManager {\r\n private plugins: Map<string, Plugin> = new Map();\r\n private installed: Set<string> = new Set();\r\n\r\n /**\r\n * Register a plugin with the manager\r\n * @param plugin - The plugin to register\r\n * @throws Error if plugin with same name is already registered\r\n */\r\n register(plugin: Plugin): void {\r\n if (this.plugins.has(plugin.name)) {\r\n throw new Error(`Plugin \"${plugin.name}\" is already registered`);\r\n }\r\n this.plugins.set(plugin.name, plugin);\r\n }\r\n\r\n /**\r\n * Install all registered plugins in dependency order\r\n * @param app - The VeloceTS application instance\r\n * @throws Error if plugin dependencies cannot be resolved\r\n */\r\n async install(app: VeloceTS): Promise<void> {\r\n // Resolve installation order using topological sort\r\n const order = this.resolveInstallOrder();\r\n\r\n // Install plugins in resolved order\r\n for (const pluginName of order) {\r\n const plugin = this.plugins.get(pluginName)!;\r\n await plugin.install(app);\r\n this.installed.add(pluginName);\r\n }\r\n }\r\n\r\n /**\r\n * Check if a plugin is installed\r\n * @param name - The plugin name\r\n * @returns true if the plugin is installed\r\n */\r\n isInstalled(name: string): boolean {\r\n return this.installed.has(name);\r\n }\r\n\r\n /**\r\n * Get a registered plugin by name\r\n * @param name - The plugin name\r\n * @returns The plugin or undefined if not found\r\n */\r\n getPlugin(name: string): Plugin | undefined {\r\n return this.plugins.get(name);\r\n }\r\n\r\n /**\r\n * Get all registered plugin names\r\n * @returns Array of plugin names\r\n */\r\n getPluginNames(): string[] {\r\n return Array.from(this.plugins.keys());\r\n }\r\n\r\n /**\r\n * Resolve plugin installation order using topological sort\r\n * Ensures dependencies are installed before dependents\r\n * @returns Array of plugin names in installation order\r\n * @throws Error if circular dependencies are detected or dependencies are missing\r\n */\r\n private resolveInstallOrder(): string[] {\r\n const visited = new Set<string>();\r\n const visiting = new Set<string>();\r\n const order: string[] = [];\r\n\r\n const visit = (name: string, path: string[] = []): void => {\r\n // Check for circular dependencies\r\n if (visiting.has(name)) {\r\n const cycle = [...path, name].join(' -> ');\r\n throw new Error(`Circular dependency detected in plugins: ${cycle}`);\r\n }\r\n\r\n // Skip if already visited\r\n if (visited.has(name)) {\r\n return;\r\n }\r\n\r\n // Mark as currently visiting\r\n visiting.add(name);\r\n\r\n // Get the plugin\r\n const plugin = this.plugins.get(name);\r\n if (!plugin) {\r\n throw new Error(`Plugin \"${name}\" is not registered`);\r\n }\r\n\r\n // Visit dependencies first\r\n if (plugin.dependencies) {\r\n for (const dep of plugin.dependencies) {\r\n if (!this.plugins.has(dep)) {\r\n throw new Error(\r\n `Plugin \"${name}\" depends on \"${dep}\" which is not registered`\r\n );\r\n }\r\n visit(dep, [...path, name]);\r\n }\r\n }\r\n\r\n // Mark as visited and remove from visiting\r\n visiting.delete(name);\r\n visited.add(name);\r\n\r\n // Add to order after all dependencies\r\n order.push(name);\r\n };\r\n\r\n // Visit all plugins\r\n for (const name of this.plugins.keys()) {\r\n visit(name);\r\n }\r\n\r\n return order;\r\n }\r\n}\r\n",
|
|
32
32
|
"// Core application class\r\nimport { Hono } from 'hono';\r\nimport { MetadataRegistry } from './metadata';\r\nimport { DIContainer } from '../dependencies/container';\r\nimport { RouterCompiler } from './router-compiler';\r\nimport { ValidationEngine } from '../validation/validator';\r\nimport { ErrorHandler, type CustomErrorHandler } from '../errors/handler';\r\nimport { PluginManager, type Plugin } from './plugin';\r\nimport { createCorsMiddleware } from '../middleware/cors';\r\nimport { createRateLimitMiddleware } from '../middleware/rate-limit';\r\nimport { createCompressionMiddleware } from '../middleware/compression';\r\nimport type {\r\n VeloceTSConfig,\r\n Class,\r\n RouteConfig,\r\n Middleware,\r\n CorsOptions,\r\n RateLimitOptions,\r\n CompressionOptions,\r\n HTTPMethod,\r\n Context\r\n} from '../types';\r\n\r\n/**\r\n * Main VeloceTS application class\r\n * \r\n * Provides both decorator-based and functional API for defining routes.\r\n * Built on top of Hono.js for maximum performance with support for multiple runtimes.\r\n * \r\n * @example\r\n * ```typescript\r\n * // Create a new application\r\n * const app = new VeloceTS({\r\n * title: 'My API',\r\n * version: '1.0.0',\r\n * docs: true\r\n * });\r\n * \r\n * // Register a controller\r\n * @Controller('/users')\r\n * class UserController {\r\n * @Get('/:id')\r\n * getUser(@Param('id') id: string) {\r\n * return { id, name: 'John' };\r\n * }\r\n * }\r\n * app.include(UserController);\r\n * \r\n * // Or use functional API\r\n * app.get('/users/:id', {\r\n * handler: async (c) => {\r\n * const id = c.req.param('id');\r\n * return { id, name: 'John' };\r\n * }\r\n * });\r\n * \r\n * // Start the server\r\n * app.listen(3000, () => {\r\n * console.log('Server running on port 3000');\r\n * });\r\n * ```\r\n */\r\nexport class VeloceTS {\r\n private hono: Hono;\r\n private metadata: MetadataRegistry;\r\n private container: DIContainer;\r\n private validator: ValidationEngine;\r\n private errorHandler: ErrorHandler;\r\n private compiler: RouterCompiler;\r\n private pluginManager: PluginManager;\r\n private config: VeloceTSConfig;\r\n private compiled: boolean = false;\r\n private globalMiddleware: Middleware[] = [];\r\n private groupPrefix: string = '';\r\n\r\n constructor(config?: VeloceTSConfig) {\r\n this.config = {\r\n adapter: 'hono',\r\n title: 'Veloce-TS API',\r\n version: '1.0.0',\r\n docs: true,\r\n ...config\r\n };\r\n\r\n // Initialize Hono instance\r\n this.hono = new Hono();\r\n\r\n // Create MetadataRegistry and DIContainer instances\r\n this.metadata = new MetadataRegistry();\r\n this.container = new DIContainer();\r\n this.validator = new ValidationEngine();\r\n this.errorHandler = new ErrorHandler();\r\n this.pluginManager = new PluginManager();\r\n\r\n // Create RouterCompiler\r\n this.compiler = new RouterCompiler(\r\n this.hono,\r\n this.metadata,\r\n this.container,\r\n this.validator,\r\n this.errorHandler\r\n );\r\n\r\n // Apply CORS configuration if provided\r\n if (this.config.cors) {\r\n if (this.config.cors === true) {\r\n this.useCors();\r\n } else {\r\n this.useCors(this.config.cors);\r\n }\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Controller Registration (Task 5.2)\r\n // ============================================================================\r\n\r\n /**\r\n * Register a controller class with the application\r\n * \r\n * Extracts metadata from decorators and stores in registry.\r\n * The controller must be decorated with @Controller() and contain\r\n * methods decorated with HTTP method decorators (@Get, @Post, etc.)\r\n * \r\n * @param controller - The controller class to register\r\n * \r\n * @example\r\n * ```typescript\r\n * @Controller('/api/users')\r\n * class UserController {\r\n * @Get('/')\r\n * async list() {\r\n * return [{ id: 1, name: 'John' }];\r\n * }\r\n * \r\n * @Post('/')\r\n * async create(@Body(UserSchema) user: InferSchema<typeof UserSchema>) {\r\n * return { id: 2, ...user };\r\n * }\r\n * }\r\n * \r\n * app.include(UserController);\r\n * ```\r\n */\r\n include(controller: Class): void {\r\n // Get controller metadata from decorators\r\n const controllerMetadata = MetadataRegistry.getControllerMetadata(controller);\r\n \r\n if (controllerMetadata) {\r\n this.metadata.registerController(controller, controllerMetadata);\r\n }\r\n\r\n // Get all route methods from the controller\r\n const routeMethods = MetadataRegistry.getRouteMethods(controller);\r\n\r\n // Register each route\r\n for (const methodName of routeMethods) {\r\n const routeMetadata = MetadataRegistry.getRouteMetadata(\r\n controller.prototype,\r\n methodName\r\n );\r\n\r\n // Get parameter metadata separately\r\n const parameterMetadata = MetadataRegistry.getParameterMetadata(\r\n controller.prototype,\r\n methodName\r\n );\r\n\r\n // Get dependency metadata separately\r\n const dependencyMetadata = MetadataRegistry.getDependencyMetadata(\r\n controller.prototype,\r\n methodName\r\n );\r\n\r\n if (routeMetadata && routeMetadata.method && routeMetadata.path !== undefined) {\r\n // Combine controller prefix with route path\r\n const prefix = controllerMetadata?.prefix || '';\r\n const fullPath = this.normalizePath(prefix, routeMetadata.path);\r\n\r\n // Register the complete route metadata\r\n this.metadata.registerRoute({\r\n target: controller,\r\n propertyKey: methodName,\r\n method: routeMetadata.method,\r\n path: fullPath,\r\n middleware: [\r\n ...(controllerMetadata?.middleware || []),\r\n ...(routeMetadata.middleware || [])\r\n ],\r\n parameters: parameterMetadata || routeMetadata.parameters || [],\r\n dependencies: dependencyMetadata || routeMetadata.dependencies || [],\r\n responses: routeMetadata.responses || [],\r\n docs: routeMetadata.docs\r\n });\r\n }\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Functional API Methods (Task 5.3)\r\n // ============================================================================\r\n\r\n /**\r\n * Register a GET route using functional API\r\n * \r\n * @param path - The route path (supports parameters like /users/:id)\r\n * @param config - Route configuration including handler, schema, middleware\r\n * \r\n * @example\r\n * ```typescript\r\n * const UserSchema = z.object({ name: z.string(), age: z.number() });\r\n * \r\n * app.get('/users/:id', {\r\n * handler: async (c) => {\r\n * const id = c.req.param('id');\r\n * return { id, name: 'John', age: 30 };\r\n * },\r\n * schema: {\r\n * params: z.object({ id: z.string() })\r\n * },\r\n * docs: {\r\n * summary: 'Get user by ID',\r\n * tags: ['users']\r\n * }\r\n * });\r\n * ```\r\n */\r\n get(path: string, config: RouteConfig): void {\r\n this.registerFunctionalRoute('GET', path, config);\r\n }\r\n\r\n /**\r\n * Register a POST route using functional API\r\n * \r\n * @param path - The route path\r\n * @param config - Route configuration including handler, schema, middleware\r\n * \r\n * @example\r\n * ```typescript\r\n * const CreateUserSchema = z.object({\r\n * name: z.string(),\r\n * email: z.string().email()\r\n * });\r\n * \r\n * app.post('/users', {\r\n * handler: async (c) => {\r\n * const body = await c.req.json();\r\n * return { id: 1, ...body };\r\n * },\r\n * schema: {\r\n * body: CreateUserSchema\r\n * }\r\n * });\r\n * ```\r\n */\r\n post(path: string, config: RouteConfig): void {\r\n this.registerFunctionalRoute('POST', path, config);\r\n }\r\n\r\n /**\r\n * Register a PUT route\r\n */\r\n put(path: string, config: RouteConfig): void {\r\n this.registerFunctionalRoute('PUT', path, config);\r\n }\r\n\r\n /**\r\n * Register a DELETE route\r\n */\r\n delete(path: string, config: RouteConfig): void {\r\n this.registerFunctionalRoute('DELETE', path, config);\r\n }\r\n\r\n /**\r\n * Register a PATCH route\r\n */\r\n patch(path: string, config: RouteConfig): void {\r\n this.registerFunctionalRoute('PATCH', path, config);\r\n }\r\n\r\n /**\r\n * Create a route builder for chaining methods\r\n */\r\n route(path: string): RouteBuilder {\r\n return new RouteBuilder(this, path);\r\n }\r\n\r\n /**\r\n * Create a route group with a common prefix\r\n */\r\n group(prefix: string, callback: () => void): void {\r\n const previousPrefix = this.groupPrefix;\r\n this.groupPrefix = this.normalizePath(this.groupPrefix, prefix);\r\n \r\n callback();\r\n \r\n this.groupPrefix = previousPrefix;\r\n }\r\n\r\n /**\r\n * Internal method to register functional routes\r\n */\r\n private registerFunctionalRoute(\r\n method: HTTPMethod,\r\n path: string,\r\n config: RouteConfig\r\n ): void {\r\n // Apply group prefix if we're inside a group\r\n const fullPath = this.normalizePath(this.groupPrefix, path);\r\n\r\n // Create a synthetic route metadata for functional routes\r\n // We use a special marker class to distinguish functional routes\r\n const routeMetadata = {\r\n target: FunctionalRoute as any,\r\n propertyKey: `${method.toLowerCase()}_${fullPath}`,\r\n method,\r\n path: fullPath,\r\n middleware: config.middleware || [],\r\n parameters: this.extractParametersFromSchema(config.schema),\r\n dependencies: [],\r\n responses: config.responses || [],\r\n docs: config.docs,\r\n handler: config.handler // Store handler directly for functional routes\r\n };\r\n\r\n this.metadata.registerRoute(routeMetadata as any);\r\n }\r\n\r\n /**\r\n * Extract parameter metadata from schema config\r\n * For functional API, parameters start at index 0 since context is passed separately\r\n */\r\n private extractParametersFromSchema(schema?: RouteConfig['schema']): any[] {\r\n const parameters: any[] = [];\r\n let index = 0; // Start at 0 for functional API (context is passed separately)\r\n\r\n if (schema?.body) {\r\n parameters.push({\r\n index: index++,\r\n type: 'body',\r\n schema: schema.body,\r\n required: true\r\n });\r\n }\r\n\r\n if (schema?.query) {\r\n parameters.push({\r\n index: index++,\r\n type: 'query',\r\n schema: schema.query,\r\n required: false\r\n });\r\n }\r\n\r\n if (schema?.params) {\r\n parameters.push({\r\n index: index++,\r\n type: 'param',\r\n schema: schema.params,\r\n required: true\r\n });\r\n }\r\n\r\n if (schema?.headers) {\r\n parameters.push({\r\n index: index++,\r\n type: 'header',\r\n schema: schema.headers,\r\n required: false\r\n });\r\n }\r\n\r\n return parameters;\r\n }\r\n\r\n // ============================================================================\r\n // Middleware System (Task 5.4)\r\n // ============================================================================\r\n\r\n /**\r\n * Add global middleware to the application\r\n */\r\n use(middleware: Middleware): void {\r\n this.globalMiddleware.push(middleware);\r\n this.hono.use('*', middleware);\r\n }\r\n\r\n /**\r\n * Configure CORS middleware\r\n * Supports origin, methods, headers configuration and handles preflight requests\r\n */\r\n useCors(options?: CorsOptions): void {\r\n const middleware = createCorsMiddleware(options);\r\n this.use(middleware);\r\n }\r\n\r\n /**\r\n * Configure rate limiting middleware\r\n * Tracks requests per IP/key and returns 429 when limit exceeded\r\n */\r\n useRateLimit(options: RateLimitOptions): void {\r\n const middleware = createRateLimitMiddleware(options);\r\n this.use(middleware);\r\n }\r\n\r\n /**\r\n * Configure compression middleware\r\n * Compresses responses with gzip/brotli based on configuration\r\n */\r\n useCompression(options?: CompressionOptions): void {\r\n const middleware = createCompressionMiddleware(options);\r\n this.use(middleware);\r\n }\r\n\r\n // ============================================================================\r\n // Plugin System (Task 10.2)\r\n // ============================================================================\r\n\r\n /**\r\n * Register a plugin with the application\r\n * Plugins are installed during compilation in dependency order\r\n * @param plugin - The plugin to register\r\n */\r\n usePlugin(plugin: Plugin): void {\r\n this.pluginManager.register(plugin);\r\n }\r\n\r\n /**\r\n * Get the plugin manager instance\r\n * @returns The PluginManager instance\r\n */\r\n getPluginManager(): PluginManager {\r\n return this.pluginManager;\r\n }\r\n\r\n // ============================================================================\r\n // Error Handling (Task 9.3)\r\n // ============================================================================\r\n\r\n /**\r\n * Set a custom error handler for the application\r\n * This allows users to override the default error handling behavior\r\n * @param handler - Custom error handling function\r\n */\r\n onError(handler: CustomErrorHandler): void {\r\n this.errorHandler.setCustomHandler(handler);\r\n }\r\n\r\n /**\r\n * Get the error handler instance\r\n * @returns The ErrorHandler instance\r\n */\r\n getErrorHandler(): ErrorHandler {\r\n return this.errorHandler;\r\n }\r\n\r\n // ============================================================================\r\n // Utility Methods\r\n // ============================================================================\r\n\r\n /**\r\n * Normalize path by combining segments and ensuring proper format\r\n */\r\n private normalizePath(...segments: string[]): string {\r\n const combined = segments\r\n .filter(s => s !== '')\r\n .join('/')\r\n .replace(/\\/+/g, '/') // Remove duplicate slashes\r\n .replace(/\\/$/, ''); // Remove trailing slash\r\n\r\n return combined.startsWith('/') ? combined : `/${combined}`;\r\n }\r\n\r\n /**\r\n * Get the underlying Hono instance\r\n */\r\n getHono(): Hono {\r\n return this.hono;\r\n }\r\n\r\n /**\r\n * Get the metadata registry\r\n */\r\n getMetadata(): MetadataRegistry {\r\n return this.metadata;\r\n }\r\n\r\n /**\r\n * Get the DI container\r\n */\r\n getContainer(): DIContainer {\r\n return this.container;\r\n }\r\n\r\n /**\r\n * Get the router compiler\r\n */\r\n getCompiler(): RouterCompiler {\r\n return this.compiler;\r\n }\r\n\r\n /**\r\n * Get the application configuration\r\n */\r\n getConfig(): VeloceTSConfig {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Check if routes have been compiled\r\n */\r\n isCompiled(): boolean {\r\n return this.compiled;\r\n }\r\n\r\n /**\r\n * Mark routes as compiled\r\n */\r\n markCompiled(): void {\r\n this.compiled = true;\r\n }\r\n\r\n /**\r\n * Compile all registered routes into the Hono router\r\n * This must be called before the application can handle requests\r\n * Installs plugins before compiling routes\r\n */\r\n async compile(): Promise<void> {\r\n if (this.compiled) {\r\n console.warn('Routes have already been compiled. Skipping compilation.');\r\n return;\r\n }\r\n\r\n // Install plugins before compiling routes\r\n await this.pluginManager.install(this);\r\n\r\n // Use the RouterCompiler to process all routes\r\n this.compiler.compile();\r\n\r\n // Mark as compiled\r\n this.compiled = true;\r\n }\r\n\r\n /**\r\n * Start the server and listen on the specified port\r\n * Automatically compiles routes if not already compiled\r\n * Delegates to the configured adapter for runtime-specific server implementation\r\n */\r\n async listen(port: number, callback?: () => void): Promise<any> {\r\n // Compile routes if not already done\r\n if (!this.compiled) {\r\n await this.compile();\r\n }\r\n\r\n // Create and use the appropriate adapter based on configuration\r\n const adapter = this.createAdapter();\r\n \r\n return adapter.listen(port, callback);\r\n }\r\n\r\n /**\r\n * Create the appropriate adapter based on configuration\r\n * @private\r\n */\r\n private createAdapter() {\r\n const adapterType = this.config.adapter || 'hono';\r\n\r\n switch (adapterType) {\r\n case 'hono': {\r\n // Dynamically import to avoid circular dependencies\r\n const { HonoAdapter } = require('../adapters/hono');\r\n return new HonoAdapter(this.hono);\r\n }\r\n\r\n case 'express': {\r\n // Dynamically import ExpressAdapter\r\n const { ExpressAdapter } = require('../adapters/express');\r\n return new ExpressAdapter(this);\r\n }\r\n\r\n case 'native': {\r\n // Native adapter would use Web Standards directly\r\n // For now, fall back to Hono adapter\r\n const { HonoAdapter } = require('../adapters/hono');\r\n return new HonoAdapter(this.hono);\r\n }\r\n\r\n default:\r\n throw new Error(\r\n `Unknown adapter type: ${adapterType}. Supported adapters: 'hono', 'express', 'native'`\r\n );\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Marker class for functional routes\r\n */\r\nclass FunctionalRoute {}\r\n\r\n/**\r\n * Route builder for chaining HTTP methods\r\n */\r\nclass RouteBuilder {\r\n constructor(\r\n private app: VeloceTS,\r\n private path: string\r\n ) {}\r\n\r\n get(config: RouteConfig): RouteBuilder {\r\n this.app.get(this.path, config);\r\n return this;\r\n }\r\n\r\n post(config: RouteConfig): RouteBuilder {\r\n this.app.post(this.path, config);\r\n return this;\r\n }\r\n\r\n put(config: RouteConfig): RouteBuilder {\r\n this.app.put(this.path, config);\r\n return this;\r\n }\r\n\r\n delete(config: RouteConfig): RouteBuilder {\r\n this.app.delete(this.path, config);\r\n return this;\r\n }\r\n\r\n patch(config: RouteConfig): RouteBuilder {\r\n this.app.patch(this.path, config);\r\n return this;\r\n }\r\n}\r\n",
|
|
33
33
|
"import { VeloceTS } from '../core/application';\r\nimport { TestClient } from './test-client';\r\nimport type { VeloceTSConfig, Provider, ProviderConfig } from '../types';\r\n\r\n/**\r\n * Create a test instance of VeloceTS application\r\n * This is useful for creating isolated test instances with specific configurations\r\n * \r\n * @param config - Optional configuration for the test app\r\n * @returns A new VeloceTS instance configured for testing\r\n * \r\n * @example\r\n * ```typescript\r\n * const app = createTestApp({ docs: false });\r\n * app.get('/test', { handler: () => ({ message: 'test' }) });\r\n * await app.compile();\r\n * \r\n * const client = new TestClient(app);\r\n * const response = await client.get('/test');\r\n * ```\r\n */\r\nexport function createTestApp(config?: VeloceTSConfig): VeloceTS {\r\n // Default test configuration\r\n const testConfig: VeloceTSConfig = {\r\n docs: false, // Disable docs by default in tests\r\n cors: false, // Disable CORS by default in tests\r\n ...config,\r\n };\r\n\r\n return new VeloceTS(testConfig);\r\n}\r\n\r\n/**\r\n * Mock a dependency in the DI container\r\n * This allows you to replace real dependencies with mocks for testing\r\n * \r\n * @param app - The VeloceTS application instance\r\n * @param provider - The provider to mock\r\n * @param mockValue - The mock value or factory function\r\n * @param config - Optional provider configuration\r\n * \r\n * @example\r\n * ```typescript\r\n * class UserService {\r\n * getUser(id: string) { return { id, name: 'Real User' }; }\r\n * }\r\n * \r\n * const app = createTestApp();\r\n * const mockUserService = { getUser: (id: string) => ({ id, name: 'Mock User' }) };\r\n * \r\n * mockDependency(app, UserService, mockUserService);\r\n * ```\r\n */\r\nexport function mockDependency<T>(\r\n app: VeloceTS,\r\n provider: Provider<T>,\r\n mockValue: T | (() => T | Promise<T>),\r\n config?: ProviderConfig\r\n): void {\r\n const container = app.getContainer();\r\n\r\n // Create a factory that returns the mock value\r\n const factory = typeof mockValue === 'function' \r\n ? (mockValue as () => T | Promise<T>)\r\n : () => mockValue;\r\n\r\n // Register the mock with the container\r\n container.register(provider, {\r\n scope: config?.scope || 'singleton',\r\n factory,\r\n });\r\n}\r\n\r\n/**\r\n * Create a test client for an application\r\n * This is a convenience function that creates a TestClient instance\r\n * \r\n * @param app - The VeloceTS application instance\r\n * @returns A TestClient instance for making test requests\r\n * \r\n * @example\r\n * ```typescript\r\n * const app = createTestApp();\r\n * app.get('/hello', { handler: () => ({ message: 'Hello' }) });\r\n * await app.compile();\r\n * \r\n * const client = createTestClient(app);\r\n * const response = await client.get('/hello');\r\n * ```\r\n */\r\nexport function createTestClient(app: VeloceTS): TestClient {\r\n return new TestClient(app);\r\n}\r\n\r\n/**\r\n * Setup a test application with routes and compile it\r\n * This is a convenience function for quickly setting up test scenarios\r\n * \r\n * @param setup - Function that sets up routes on the app\r\n * @param config - Optional configuration for the test app\r\n * @returns Object containing the app and client\r\n * \r\n * @example\r\n * ```typescript\r\n * const { app, client } = await setupTestApp((app) => {\r\n * app.get('/users', { handler: () => [{ id: 1, name: 'User' }] });\r\n * app.post('/users', { handler: (c) => ({ id: 2, name: 'New User' }) });\r\n * });\r\n * \r\n * const response = await client.get('/users');\r\n * ```\r\n */\r\nexport async function setupTestApp(\r\n setup: (app: VeloceTS) => void | Promise<void>,\r\n config?: VeloceTSConfig\r\n): Promise<{ app: VeloceTS; client: TestClient }> {\r\n const app = createTestApp(config);\r\n \r\n await setup(app);\r\n await app.compile();\r\n \r\n const client = createTestClient(app);\r\n \r\n return { app, client };\r\n}\r\n\r\n/**\r\n * Clear all mocked dependencies from an application\r\n * This is useful for cleaning up between tests\r\n * \r\n * @param app - The VeloceTS application instance\r\n * \r\n * @example\r\n * ```typescript\r\n * afterEach(() => {\r\n * clearMocks(app);\r\n * });\r\n * ```\r\n */\r\nexport function clearMocks(app: VeloceTS): void {\r\n const container = app.getContainer();\r\n container.clear();\r\n}\r\n"
|
|
34
34
|
],
|
|
35
|
-
"mappings": "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",
|
|
36
|
-
"debugId": "
|
|
35
|
+
"mappings": "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",
|
|
36
|
+
"debugId": "941DAE281363925164756E2164756E21",
|
|
37
37
|
"names": []
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-compiler.d.ts","sourceRoot":"","sources":["../../../src/core/router-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"router-compiler.d.ts","sourceRoot":"","sources":["../../../src/core/router-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAInF;;;GAGG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;IAPtB,OAAO,CAAC,cAAc,CAAiD;gBAG7D,GAAG,EAAE,IAAI,EACT,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,YAAY;IAGpC;;;OAGG;IACH,OAAO,IAAI,IAAI;IAyBf;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;OAGG;IACI,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC;IA6ChF;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;OAGG;YACW,WAAW;IAKzB;;;OAGG;YACW,iBAAiB;IAwL/B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA2CtB;;;OAGG;YACW,mBAAmB;CA8BlC"}
|
|
@@ -11,14 +11,20 @@ import type { ZodSchema } from 'zod';
|
|
|
11
11
|
export declare function Body<T extends ZodSchema>(schema?: T): ParameterDecorator;
|
|
12
12
|
/**
|
|
13
13
|
* Query decorator - extracts and validates query parameters
|
|
14
|
-
* @param
|
|
14
|
+
* @param nameOrSchema - Optional specific parameter name or Zod schema for validation
|
|
15
15
|
* @example
|
|
16
16
|
* ```ts
|
|
17
17
|
* @Get('/users')
|
|
18
|
+
* listUsers(@Query() query: any) {}
|
|
19
|
+
*
|
|
20
|
+
* @Get('/users')
|
|
21
|
+
* listUsers(@Query('page') page: string) {}
|
|
22
|
+
*
|
|
23
|
+
* @Get('/users')
|
|
18
24
|
* listUsers(@Query(QuerySchema) query: { page: number, limit: number }) {}
|
|
19
25
|
* ```
|
|
20
26
|
*/
|
|
21
|
-
export declare function Query<T extends ZodSchema>(
|
|
27
|
+
export declare function Query<T extends ZodSchema>(nameOrSchema?: string | T): ParameterDecorator;
|
|
22
28
|
/**
|
|
23
29
|
* Param decorator - extracts route parameters
|
|
24
30
|
* @param name - Optional specific parameter name to extract
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/decorators/params.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAIrC;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAaxE;AAED
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/decorators/params.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAIrC;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAaxE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,kBAAkB,CAsBxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAavD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAaxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,IAAI,kBAAkB,CAYxC;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,IAAI,kBAAkB,CAYxC"}
|
package/package.json
CHANGED