veloce-ts 0.2.2 → 0.2.3
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 +6 -0
- package/dist/cjs/src/index.js +7 -7
- package/dist/cjs/src/index.js.map +5 -5
- package/dist/cjs/src/websocket/index.js +15 -2
- package/dist/cjs/src/websocket/index.js.map +7 -4
- package/dist/esm/chunk-2100y16g.js +5 -0
- package/dist/esm/chunk-2100y16g.js.map +10 -0
- package/dist/esm/{chunk-9f0s1qbb.js → chunk-5q75d71c.js} +2 -2
- package/dist/esm/{chunk-9f0s1qbb.js.map → chunk-5q75d71c.js.map} +1 -1
- package/dist/esm/{chunk-09p9prja.js → chunk-8dpc6an2.js} +1 -1
- package/dist/esm/{chunk-r8ssy5cv.js → chunk-9v7atckx.js} +2 -2
- package/dist/esm/{chunk-r8ssy5cv.js.map → chunk-9v7atckx.js.map} +1 -1
- package/dist/esm/{chunk-dpjkne9h.js → chunk-bvstdn0t.js} +1 -1
- package/dist/esm/{chunk-dfhwaw13.js → chunk-ctwpr5gr.js} +1 -1
- package/dist/esm/{chunk-q0w1t07v.js → chunk-dfay135z.js} +3 -3
- package/dist/esm/{chunk-q0w1t07v.js.map → chunk-dfay135z.js.map} +1 -1
- package/dist/esm/{chunk-3vd5qsws.js → chunk-dtw2tbsd.js} +2 -2
- package/dist/esm/{chunk-3vd5qsws.js.map → chunk-dtw2tbsd.js.map} +1 -1
- package/dist/esm/{chunk-qg4ngg5j.js → chunk-k66rn4fj.js} +3 -3
- package/dist/esm/{chunk-qg4ngg5j.js.map → chunk-k66rn4fj.js.map} +1 -1
- package/dist/esm/{chunk-vzhqg5mb.js → chunk-mky5qqg0.js} +3 -3
- package/dist/esm/{chunk-vzhqg5mb.js.map → chunk-mky5qqg0.js.map} +1 -1
- package/dist/esm/{chunk-vkkzgaf7.js → chunk-mznkhz9c.js} +2 -2
- package/dist/esm/{chunk-vkkzgaf7.js.map → chunk-mznkhz9c.js.map} +1 -1
- package/dist/esm/{chunk-3nhrrhv9.js → chunk-s5z0wb7e.js} +3 -3
- package/dist/esm/{chunk-3nhrrhv9.js.map → chunk-s5z0wb7e.js.map} +1 -1
- package/dist/esm/{chunk-gy9nsvnk.js → chunk-vh4sxcpe.js} +3 -3
- package/dist/esm/{chunk-gy9nsvnk.js.map → chunk-vh4sxcpe.js.map} +1 -1
- package/dist/esm/{chunk-4s66h6qw.js → chunk-xa333k40.js} +1 -1
- package/dist/esm/{chunk-f64j5zbr.js → chunk-y262e56g.js} +2 -2
- package/dist/esm/{chunk-f64j5zbr.js.map → chunk-y262e56g.js.map} +1 -1
- package/dist/esm/{chunk-sv2c5krg.js → chunk-yq3gf9ts.js} +3 -3
- package/dist/esm/{chunk-sv2c5krg.js.map → chunk-yq3gf9ts.js.map} +1 -1
- package/dist/esm/src/cli/index.js +3 -3
- package/dist/esm/src/cli/index.js.map +1 -1
- package/dist/esm/src/docs/index.js +3 -3
- package/dist/esm/src/docs/index.js.map +1 -1
- package/dist/esm/src/errors/index.js +2 -2
- package/dist/esm/src/errors/index.js.map +1 -1
- package/dist/esm/src/graphql/index.js +2 -2
- package/dist/esm/src/graphql/index.js.map +1 -1
- package/dist/esm/src/index.js +3 -3
- package/dist/esm/src/index.js.map +3 -4
- package/dist/esm/src/middleware/index.js +2 -2
- package/dist/esm/src/middleware/index.js.map +1 -1
- package/dist/esm/src/plugins/index.js +3 -3
- package/dist/esm/src/plugins/index.js.map +1 -1
- package/dist/esm/src/testing/index.js +2 -2
- package/dist/esm/src/testing/index.js.map +3 -4
- package/dist/esm/src/types/index.js +2 -2
- package/dist/esm/src/types/index.js.map +1 -1
- package/dist/esm/src/validation/index.js +2 -2
- package/dist/esm/src/validation/index.js.map +1 -1
- package/dist/esm/src/websocket/index.js +2 -2
- package/dist/esm/src/websocket/index.js.map +4 -3
- package/dist/types/websocket/index.d.ts +1 -0
- package/dist/types/websocket/index.d.ts.map +1 -1
- package/package.json +1 -1
- /package/dist/esm/{chunk-09p9prja.js.map → chunk-8dpc6an2.js.map} +0 -0
- /package/dist/esm/{chunk-dpjkne9h.js.map → chunk-bvstdn0t.js.map} +0 -0
- /package/dist/esm/{chunk-dfhwaw13.js.map → chunk-ctwpr5gr.js.map} +0 -0
- /package/dist/esm/{chunk-4s66h6qw.js.map → chunk-xa333k40.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\..\\src\\adapters\\hono.ts", "..\\..\\src\\adapters\\express.ts", "..\\..\\src\\testing\\test-client.ts", "..\\..\\node_modules\\hono\\dist\\compose.js", "..\\..\\node_modules\\hono\\dist\\request\\constants.js", "..\\..\\node_modules\\hono\\dist\\utils\\body.js", "..\\..\\node_modules\\hono\\dist\\utils\\url.js", "..\\..\\node_modules\\hono\\dist\\request.js", "..\\..\\node_modules\\hono\\dist\\utils\\html.js", "..\\..\\node_modules\\hono\\dist\\context.js", "..\\..\\node_modules\\hono\\dist\\router.js", "..\\..\\node_modules\\hono\\dist\\utils\\constants.js", "..\\..\\node_modules\\hono\\dist\\hono-base.js", "..\\..\\node_modules\\hono\\dist\\router\\reg-exp-router\\node.js", "..\\..\\node_modules\\hono\\dist\\router\\reg-exp-router\\trie.js", "..\\..\\node_modules\\hono\\dist\\router\\reg-exp-router\\router.js", "..\\..\\node_modules\\hono\\dist\\router\\smart-router\\router.js", "..\\..\\node_modules\\hono\\dist\\router\\trie-router\\node.js", "..\\..\\node_modules\\hono\\dist\\router\\trie-router\\router.js", "..\\..\\node_modules\\hono\\dist\\hono.js", "..\\..\\src\\
|
|
3
|
+
"sources": ["..\\..\\src\\adapters\\hono.ts", "..\\..\\src\\adapters\\express.ts", "..\\..\\src\\testing\\test-client.ts", "..\\..\\node_modules\\hono\\dist\\compose.js", "..\\..\\node_modules\\hono\\dist\\request\\constants.js", "..\\..\\node_modules\\hono\\dist\\utils\\body.js", "..\\..\\node_modules\\hono\\dist\\utils\\url.js", "..\\..\\node_modules\\hono\\dist\\request.js", "..\\..\\node_modules\\hono\\dist\\utils\\html.js", "..\\..\\node_modules\\hono\\dist\\context.js", "..\\..\\node_modules\\hono\\dist\\router.js", "..\\..\\node_modules\\hono\\dist\\utils\\constants.js", "..\\..\\node_modules\\hono\\dist\\hono-base.js", "..\\..\\node_modules\\hono\\dist\\router\\reg-exp-router\\node.js", "..\\..\\node_modules\\hono\\dist\\router\\reg-exp-router\\trie.js", "..\\..\\node_modules\\hono\\dist\\router\\reg-exp-router\\router.js", "..\\..\\node_modules\\hono\\dist\\router\\smart-router\\router.js", "..\\..\\node_modules\\hono\\dist\\router\\trie-router\\node.js", "..\\..\\node_modules\\hono\\dist\\router\\trie-router\\router.js", "..\\..\\node_modules\\hono\\dist\\hono.js", "..\\..\\src\\dependencies\\container.ts", "..\\..\\node_modules\\hono\\dist\\utils\\cookie.js", "..\\..\\node_modules\\hono\\dist\\helper\\cookie\\index.js", "..\\..\\src\\responses\\response.ts", "..\\..\\src\\core\\compiled-metadata.ts", "..\\..\\src\\core\\router-compiler.ts", "..\\..\\src\\core\\plugin.ts", "..\\..\\src\\core\\application.ts", "..\\..\\src\\testing\\helpers.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\r\n * Hono adapter for runtime-agnostic server deployment\r\n * Supports Bun, Node.js, Deno, and Cloudflare Workers\r\n */\r\nimport type { Hono } from 'hono';\r\nimport type { Adapter } from './base';\r\n\r\n// Type declarations for runtime globals\r\ndeclare const Deno: any;\r\ndeclare const Bun: any;\r\n\r\n/**\r\n * Runtime detection utilities\r\n */\r\nconst detectRuntime = (): 'bun' | 'deno' | 'node' | 'workerd' | 'unknown' => {\r\n // Check for Bun\r\n if (typeof Bun !== 'undefined') {\r\n return 'bun';\r\n }\r\n\r\n // Check for Deno\r\n if (typeof Deno !== 'undefined') {\r\n return 'deno';\r\n }\r\n\r\n // Check for Cloudflare Workers\r\n if (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') {\r\n return 'workerd';\r\n }\r\n\r\n // Check for Node.js\r\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\r\n return 'node';\r\n }\r\n\r\n return 'unknown';\r\n};\r\n\r\n/**\r\n * HonoAdapter - Adapts Hono.js to work across multiple runtimes\r\n * Automatically detects the runtime and uses the appropriate server implementation\r\n */\r\nexport class HonoAdapter implements Adapter {\r\n name = 'hono';\r\n private runtime: ReturnType<typeof detectRuntime>;\r\n\r\n constructor(private hono: Hono) {\r\n this.runtime = detectRuntime();\r\n }\r\n\r\n /**\r\n * Start the server on the specified port\r\n * Automatically uses the appropriate server for the detected runtime\r\n */\r\n listen(port: number, callback?: () => void): any {\r\n switch (this.runtime) {\r\n case 'bun':\r\n return this.listenBun(port, callback);\r\n \r\n case 'deno':\r\n return this.listenDeno(port, callback);\r\n \r\n case 'node':\r\n return this.listenNode(port, callback);\r\n \r\n case 'workerd':\r\n throw new Error(\r\n 'Cloudflare Workers do not support listen(). Deploy using wrangler or export the handler with getHandler().'\r\n );\r\n \r\n default:\r\n throw new Error(\r\n `Unsupported runtime: ${this.runtime}. FastAPI-TS supports Bun, Node.js, Deno, and Cloudflare Workers.`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Get the Hono fetch handler\r\n * This can be used directly in serverless environments or for custom server setups\r\n */\r\n getHandler() {\r\n return this.hono.fetch;\r\n }\r\n\r\n /**\r\n * Get the detected runtime\r\n */\r\n getRuntime(): string {\r\n return this.runtime;\r\n }\r\n\r\n /**\r\n * Start server using Bun's native server\r\n */\r\n private listenBun(port: number, callback?: () => void): any {\r\n const server = Bun.serve({\r\n port,\r\n fetch: this.hono.fetch,\r\n });\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return server;\r\n }\r\n\r\n /**\r\n * Start server using Deno's native server\r\n */\r\n private listenDeno(port: number, callback?: () => void): any {\r\n // Deno.serve returns a promise, so we handle it appropriately\r\n const ac = new AbortController();\r\n \r\n Deno.serve(\r\n {\r\n port,\r\n signal: ac.signal,\r\n onListen: callback\r\n },\r\n this.hono.fetch\r\n );\r\n\r\n // Return an object with a close method for consistency\r\n return {\r\n port,\r\n close: () => ac.abort(),\r\n };\r\n }\r\n\r\n /**\r\n * Start server using Node.js adapter\r\n * Requires @hono/node-server package\r\n */\r\n private listenNode(port: number, callback?: () => void): any {\r\n try {\r\n // Dynamically import @hono/node-server\r\n // This is a peer dependency that users need to install for Node.js support\r\n const { serve } = require('@hono/node-server');\r\n \r\n return serve(\r\n {\r\n fetch: this.hono.fetch,\r\n port,\r\n },\r\n callback\r\n );\r\n } catch (error) {\r\n throw new Error(\r\n 'Node.js adapter requires @hono/node-server package. Install it with: npm install @hono/node-server'\r\n );\r\n }\r\n }\r\n}\r\n",
|
|
6
6
|
"/**\r\n * Express adapter for FastAPI-TS\r\n * Bridges FastAPI-TS routes to Express.js framework\r\n * Allows integration with existing Express applications\r\n */\r\nimport type { Adapter } from './base';\r\nimport type { VeloceTS } from '../core/application';\r\n\r\n// Type declarations for Express (peer dependency)\r\ndeclare const require: any;\r\n\r\n/**\r\n * ExpressAdapter - Bridges FastAPI-TS to Express.js\r\n * Converts Express req/res to Hono Context format\r\n */\r\nexport class ExpressAdapter implements Adapter {\r\n name = 'express';\r\n private express: any;\r\n\r\n constructor(private app: VeloceTS) {\r\n try {\r\n // Express is a peer dependency\r\n const expressModule = require('express');\r\n this.express = expressModule();\r\n this.setupBridge();\r\n } catch (error) {\r\n throw new Error(\r\n 'Express adapter requires express package. Install it with: npm install express'\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Set up the bridge between FastAPI-TS and Express\r\n * Converts all FastAPI-TS routes to Express routes\r\n */\r\n private setupBridge(): void {\r\n // Get the Hono instance from FastAPI-TS\r\n const hono = this.app.getHono();\r\n\r\n // Use Express middleware to forward all requests to Hono\r\n this.express.use(async (req: any, res: any) => {\r\n try {\r\n // Convert Express request to Web Standard Request\r\n const request = this.createWebRequest(req);\r\n\r\n // Call Hono's fetch handler\r\n const response = await hono.fetch(request);\r\n\r\n // Convert Web Standard Response to Express response\r\n await this.sendExpressResponse(res, response);\r\n } catch (error) {\r\n // Handle errors\r\n res.status(500).json({\r\n error: 'Internal Server Error',\r\n message: error instanceof Error ? error.message : 'Unknown error'\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Convert Express request to Web Standard Request\r\n */\r\n private createWebRequest(req: any): Request {\r\n // Build the full URL\r\n const protocol = req.protocol || 'http';\r\n const host = req.get('host') || 'localhost';\r\n const url = `${protocol}://${host}${req.originalUrl || req.url}`;\r\n\r\n // Build headers\r\n const headers = new Headers();\r\n for (const [key, value] of Object.entries(req.headers)) {\r\n if (typeof value === 'string') {\r\n headers.set(key, value);\r\n } else if (Array.isArray(value)) {\r\n value.forEach(v => headers.append(key, v));\r\n }\r\n }\r\n\r\n // Build request options\r\n const options: RequestInit = {\r\n method: req.method,\r\n headers,\r\n };\r\n\r\n // Add body for methods that support it\r\n if (req.method !== 'GET' && req.method !== 'HEAD') {\r\n // Express body-parser middleware should have already parsed the body\r\n if (req.body) {\r\n options.body = JSON.stringify(req.body);\r\n headers.set('content-type', 'application/json');\r\n }\r\n }\r\n\r\n return new Request(url, options);\r\n }\r\n\r\n /**\r\n * Convert Web Standard Response to Express response\r\n */\r\n private async sendExpressResponse(res: any, response: Response): Promise<void> {\r\n // Set status code\r\n res.status(response.status);\r\n\r\n // Set headers\r\n response.headers.forEach((value, key) => {\r\n res.setHeader(key, value);\r\n });\r\n\r\n // Send body\r\n if (response.body) {\r\n // Check content type to determine how to send the response\r\n const contentType = response.headers.get('content-type') || '';\r\n\r\n if (contentType.includes('application/json')) {\r\n const json = await response.json();\r\n res.json(json);\r\n } else if (contentType.includes('text/')) {\r\n const text = await response.text();\r\n res.send(text);\r\n } else {\r\n // For binary data, stream it\r\n const buffer = await response.arrayBuffer();\r\n res.send(Buffer.from(buffer));\r\n }\r\n } else {\r\n res.end();\r\n }\r\n }\r\n\r\n /**\r\n * Start the Express server on the specified port\r\n */\r\n listen(port: number, callback?: () => void): any {\r\n return this.express.listen(port, callback);\r\n }\r\n\r\n /**\r\n * Get the Express app instance\r\n * This allows users to add additional Express middleware or routes\r\n */\r\n getHandler(): any {\r\n return this.express;\r\n }\r\n\r\n /**\r\n * Get the underlying Express app for advanced customization\r\n */\r\n getExpressApp(): any {\r\n return this.express;\r\n }\r\n}\r\n",
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
"// src/router/trie-router/node.ts\nimport { METHOD_NAME_ALL } from \"../../router.js\";\nimport { getPattern, splitPath, splitRoutingPath } from \"../../utils/url.js\";\nvar emptyParams = /* @__PURE__ */ Object.create(null);\nvar Node = class {\n #methods;\n #children;\n #patterns;\n #order = 0;\n #params = emptyParams;\n constructor(method, handler, children) {\n this.#children = children || /* @__PURE__ */ Object.create(null);\n this.#methods = [];\n if (method && handler) {\n const m = /* @__PURE__ */ Object.create(null);\n m[method] = { handler, possibleKeys: [], score: 0 };\n this.#methods = [m];\n }\n this.#patterns = [];\n }\n insert(method, path, handler) {\n this.#order = ++this.#order;\n let curNode = this;\n const parts = splitRoutingPath(path);\n const possibleKeys = [];\n for (let i = 0, len = parts.length; i < len; i++) {\n const p = parts[i];\n const nextP = parts[i + 1];\n const pattern = getPattern(p, nextP);\n const key = Array.isArray(pattern) ? pattern[0] : p;\n if (key in curNode.#children) {\n curNode = curNode.#children[key];\n if (pattern) {\n possibleKeys.push(pattern[1]);\n }\n continue;\n }\n curNode.#children[key] = new Node();\n if (pattern) {\n curNode.#patterns.push(pattern);\n possibleKeys.push(pattern[1]);\n }\n curNode = curNode.#children[key];\n }\n curNode.#methods.push({\n [method]: {\n handler,\n possibleKeys: possibleKeys.filter((v, i, a) => a.indexOf(v) === i),\n score: this.#order\n }\n });\n return curNode;\n }\n #getHandlerSets(node, method, nodeParams, params) {\n const handlerSets = [];\n for (let i = 0, len = node.#methods.length; i < len; i++) {\n const m = node.#methods[i];\n const handlerSet = m[method] || m[METHOD_NAME_ALL];\n const processedSet = {};\n if (handlerSet !== void 0) {\n handlerSet.params = /* @__PURE__ */ Object.create(null);\n handlerSets.push(handlerSet);\n if (nodeParams !== emptyParams || params && params !== emptyParams) {\n for (let i2 = 0, len2 = handlerSet.possibleKeys.length; i2 < len2; i2++) {\n const key = handlerSet.possibleKeys[i2];\n const processed = processedSet[handlerSet.score];\n handlerSet.params[key] = params?.[key] && !processed ? params[key] : nodeParams[key] ?? params?.[key];\n processedSet[handlerSet.score] = true;\n }\n }\n }\n }\n return handlerSets;\n }\n search(method, path) {\n const handlerSets = [];\n this.#params = emptyParams;\n const curNode = this;\n let curNodes = [curNode];\n const parts = splitPath(path);\n const curNodesQueue = [];\n for (let i = 0, len = parts.length; i < len; i++) {\n const part = parts[i];\n const isLast = i === len - 1;\n const tempNodes = [];\n for (let j = 0, len2 = curNodes.length; j < len2; j++) {\n const node = curNodes[j];\n const nextNode = node.#children[part];\n if (nextNode) {\n nextNode.#params = node.#params;\n if (isLast) {\n if (nextNode.#children[\"*\"]) {\n handlerSets.push(\n ...this.#getHandlerSets(nextNode.#children[\"*\"], method, node.#params)\n );\n }\n handlerSets.push(...this.#getHandlerSets(nextNode, method, node.#params));\n } else {\n tempNodes.push(nextNode);\n }\n }\n for (let k = 0, len3 = node.#patterns.length; k < len3; k++) {\n const pattern = node.#patterns[k];\n const params = node.#params === emptyParams ? {} : { ...node.#params };\n if (pattern === \"*\") {\n const astNode = node.#children[\"*\"];\n if (astNode) {\n handlerSets.push(...this.#getHandlerSets(astNode, method, node.#params));\n astNode.#params = params;\n tempNodes.push(astNode);\n }\n continue;\n }\n const [key, name, matcher] = pattern;\n if (!part && !(matcher instanceof RegExp)) {\n continue;\n }\n const child = node.#children[key];\n const restPathString = parts.slice(i).join(\"/\");\n if (matcher instanceof RegExp) {\n const m = matcher.exec(restPathString);\n if (m) {\n params[name] = m[0];\n handlerSets.push(...this.#getHandlerSets(child, method, node.#params, params));\n if (Object.keys(child.#children).length) {\n child.#params = params;\n const componentCount = m[0].match(/\\//)?.length ?? 0;\n const targetCurNodes = curNodesQueue[componentCount] ||= [];\n targetCurNodes.push(child);\n }\n continue;\n }\n }\n if (matcher === true || matcher.test(part)) {\n params[name] = part;\n if (isLast) {\n handlerSets.push(...this.#getHandlerSets(child, method, params, node.#params));\n if (child.#children[\"*\"]) {\n handlerSets.push(\n ...this.#getHandlerSets(child.#children[\"*\"], method, params, node.#params)\n );\n }\n } else {\n child.#params = params;\n tempNodes.push(child);\n }\n }\n }\n }\n curNodes = tempNodes.concat(curNodesQueue.shift() ?? []);\n }\n if (handlerSets.length > 1) {\n handlerSets.sort((a, b) => {\n return a.score - b.score;\n });\n }\n return [handlerSets.map(({ handler, params }) => [handler, params])];\n }\n};\nexport {\n Node\n};\n",
|
|
23
23
|
"// src/router/trie-router/router.ts\nimport { checkOptionalParameter } from \"../../utils/url.js\";\nimport { Node } from \"./node.js\";\nvar TrieRouter = class {\n name = \"TrieRouter\";\n #node;\n constructor() {\n this.#node = new Node();\n }\n add(method, path, handler) {\n const results = checkOptionalParameter(path);\n if (results) {\n for (let i = 0, len = results.length; i < len; i++) {\n this.#node.insert(method, results[i], handler);\n }\n return;\n }\n this.#node.insert(method, path, handler);\n }\n match(method, path) {\n return this.#node.search(method, path);\n }\n};\nexport {\n TrieRouter\n};\n",
|
|
24
24
|
"// src/hono.ts\nimport { HonoBase } from \"./hono-base.js\";\nimport { RegExpRouter } from \"./router/reg-exp-router/index.js\";\nimport { SmartRouter } from \"./router/smart-router/index.js\";\nimport { TrieRouter } from \"./router/trie-router/index.js\";\nvar Hono = class extends HonoBase {\n constructor(options = {}) {\n super(options);\n this.router = options.router ?? new SmartRouter({\n routers: [new RegExpRouter(), new TrieRouter()]\n });\n }\n};\nexport {\n Hono\n};\n",
|
|
25
|
-
"// Metadata registry for storing decorator metadata\r\nimport 'reflect-metadata';\r\nimport type {\r\n RouteMetadata,\r\n ParameterMetadata,\r\n DependencyMetadata,\r\n ControllerMetadata,\r\n Class,\r\n HTTPMethod,\r\n Middleware,\r\n RouteDocumentation,\r\n ResponseMetadata,\r\n WebSocketMetadata,\r\n WebSocketHandlerMetadata,\r\n GraphQLResolverMetadata,\r\n GraphQLFieldMetadata,\r\n AuthMetadata\r\n} from '../types';\r\n\r\n// Metadata keys for reflect-metadata\r\nconst ROUTE_METADATA_KEY = Symbol('route:metadata');\r\nconst CONTROLLER_METADATA_KEY = Symbol('controller:metadata');\r\nconst PARAMETER_METADATA_KEY = Symbol('parameter:metadata');\r\nconst DEPENDENCY_METADATA_KEY = Symbol('dependency:metadata');\r\nconst WEBSOCKET_METADATA_KEY = Symbol('websocket:metadata');\r\nconst WEBSOCKET_HANDLER_METADATA_KEY = Symbol('websocket:handler:metadata');\r\nconst GRAPHQL_RESOLVER_KEY = Symbol('graphql:resolver');\r\nconst GRAPHQL_FIELD_KEY = Symbol('graphql:field');\r\nconst AUTH_METADATA_KEY = Symbol('auth:metadata');\r\nconst OAUTH_METADATA_KEY = Symbol('oauth:metadata');\r\nconst ROLES_METADATA_KEY = Symbol('roles:metadata');\r\nconst PERMISSIONS_METADATA_KEY = Symbol('permissions:metadata');\r\nconst MINIMUM_ROLE_METADATA_KEY = Symbol('minimum-role:metadata');\r\nconst RESOURCE_PERMISSION_METADATA_KEY = Symbol('resource-permission:metadata');\r\nconst SESSION_METADATA_KEY = Symbol('session:metadata');\r\nconst CSRF_METADATA_KEY = Symbol('csrf:metadata');\r\n\r\nexport class MetadataRegistry {\r\n private routes: Map<string, RouteMetadata> = new Map();\r\n private controllers: Map<Class, ControllerMetadata> = new Map();\r\n private routesByController: Map<Class, RouteMetadata[]> = new Map();\r\n private websockets: Map<Class, WebSocketMetadata> = new Map();\r\n private graphqlResolvers: Map<Class, GraphQLResolverMetadata> = new Map();\r\n private graphqlFields: Map<string, GraphQLFieldMetadata> = new Map();\r\n\r\n /**\r\n * Register a route in the registry\r\n */\r\n registerRoute(metadata: RouteMetadata): void {\r\n const key = this.getRouteKey(metadata.target, metadata.propertyKey);\r\n this.routes.set(key, metadata);\r\n\r\n // Also track routes by controller\r\n if (!this.routesByController.has(metadata.target)) {\r\n this.routesByController.set(metadata.target, []);\r\n }\r\n this.routesByController.get(metadata.target)!.push(metadata);\r\n }\r\n\r\n /**\r\n * Register a controller in the registry\r\n */\r\n registerController(target: Class, metadata: ControllerMetadata): void {\r\n this.controllers.set(target, metadata);\r\n }\r\n\r\n /**\r\n * Get all registered routes\r\n */\r\n getRoutes(): RouteMetadata[] {\r\n return Array.from(this.routes.values());\r\n }\r\n\r\n /**\r\n * Get a specific route by target and property key\r\n */\r\n getRoute(target: Class, propertyKey: string): RouteMetadata | undefined {\r\n const key = this.getRouteKey(target, propertyKey);\r\n return this.routes.get(key);\r\n }\r\n\r\n /**\r\n * Get all routes for a specific controller\r\n */\r\n getRoutesByController(target: Class): RouteMetadata[] {\r\n return this.routesByController.get(target) || [];\r\n }\r\n\r\n /**\r\n * Get controller metadata\r\n */\r\n getController(target: Class): ControllerMetadata | undefined {\r\n return this.controllers.get(target);\r\n }\r\n\r\n /**\r\n * Get all registered controllers\r\n */\r\n getControllers(): Map<Class, ControllerMetadata> {\r\n return new Map(this.controllers);\r\n }\r\n\r\n /**\r\n * Register a WebSocket handler in the registry\r\n */\r\n registerWebSocket(metadata: WebSocketMetadata): void {\r\n this.websockets.set(metadata.target, metadata);\r\n }\r\n\r\n /**\r\n * Get all registered WebSocket handlers\r\n */\r\n getWebSockets(): WebSocketMetadata[] {\r\n return Array.from(this.websockets.values());\r\n }\r\n\r\n /**\r\n * Get WebSocket metadata for a specific target\r\n */\r\n getWebSocket(target: Class): WebSocketMetadata | undefined {\r\n return this.websockets.get(target);\r\n }\r\n\r\n /**\r\n * Register a GraphQL resolver in the registry\r\n */\r\n registerGraphQLResolver(metadata: GraphQLResolverMetadata): void {\r\n this.graphqlResolvers.set(metadata.target, metadata);\r\n }\r\n\r\n /**\r\n * Register a GraphQL field in the registry\r\n */\r\n registerGraphQLField(metadata: GraphQLFieldMetadata): void {\r\n const key = this.getRouteKey(metadata.target, metadata.propertyKey);\r\n this.graphqlFields.set(key, metadata);\r\n }\r\n\r\n /**\r\n * Get all registered GraphQL resolvers\r\n */\r\n getGraphQLResolvers(): GraphQLResolverMetadata[] {\r\n return Array.from(this.graphqlResolvers.values());\r\n }\r\n\r\n /**\r\n * Get GraphQL resolver metadata for a specific target\r\n */\r\n getGraphQLResolver(target: Class): GraphQLResolverMetadata | undefined {\r\n return this.graphqlResolvers.get(target);\r\n }\r\n\r\n /**\r\n * Get all GraphQL fields\r\n */\r\n getGraphQLFields(): GraphQLFieldMetadata[] {\r\n return Array.from(this.graphqlFields.values());\r\n }\r\n\r\n /**\r\n * Get GraphQL fields for a specific resolver\r\n */\r\n getGraphQLFieldsByResolver(target: Class): GraphQLFieldMetadata[] {\r\n return Array.from(this.graphqlFields.values()).filter(\r\n field => field.target === target\r\n );\r\n }\r\n\r\n /**\r\n * Clear all metadata (useful for testing)\r\n */\r\n clear(): void {\r\n this.routes.clear();\r\n this.controllers.clear();\r\n this.routesByController.clear();\r\n this.websockets.clear();\r\n this.graphqlResolvers.clear();\r\n this.graphqlFields.clear();\r\n }\r\n\r\n /**\r\n * Generate a unique key for a route\r\n */\r\n private getRouteKey(target: Class, propertyKey: string): string {\r\n return `${target.name}:${propertyKey}`;\r\n }\r\n\r\n // ============================================================================\r\n // Static methods for decorator usage\r\n // ============================================================================\r\n\r\n /**\r\n * Define route metadata using reflect-metadata (used by decorators)\r\n */\r\n static defineRoute(\r\n target: any,\r\n propertyKey: string,\r\n metadata: Partial<RouteMetadata>\r\n ): void {\r\n const existingMetadata = this.getRouteMetadata(target, propertyKey);\r\n \r\n const mergedMetadata: Partial<RouteMetadata> = {\r\n ...existingMetadata,\r\n ...metadata,\r\n target: target.constructor,\r\n propertyKey,\r\n // Merge arrays instead of replacing\r\n middleware: [\r\n ...(existingMetadata?.middleware || []),\r\n ...(metadata.middleware || [])\r\n ],\r\n parameters: metadata.parameters || existingMetadata?.parameters || [],\r\n dependencies: metadata.dependencies || existingMetadata?.dependencies || [],\r\n responses: metadata.responses || existingMetadata?.responses || [],\r\n // Preserve auth metadata\r\n auth: metadata.auth || existingMetadata?.auth,\r\n oauth: metadata.oauth || existingMetadata?.oauth,\r\n roles: metadata.roles || existingMetadata?.roles,\r\n permissions: metadata.permissions || existingMetadata?.permissions,\r\n minimumRole: metadata.minimumRole || existingMetadata?.minimumRole,\r\n resourcePermission: metadata.resourcePermission || existingMetadata?.resourcePermission,\r\n session: metadata.session || existingMetadata?.session,\r\n csrf: metadata.csrf || existingMetadata?.csrf\r\n };\r\n\r\n Reflect.defineMetadata(\r\n ROUTE_METADATA_KEY,\r\n mergedMetadata,\r\n target,\r\n propertyKey\r\n );\r\n }\r\n\r\n /**\r\n * Define parameter metadata (used by parameter decorators)\r\n */\r\n static defineParameter(\r\n target: any,\r\n propertyKey: string,\r\n index: number,\r\n metadata: ParameterMetadata\r\n ): void {\r\n const existingParams = this.getParameterMetadata(target, propertyKey) || [];\r\n \r\n // Update or add parameter at the specified index\r\n existingParams[index] = metadata;\r\n\r\n Reflect.defineMetadata(\r\n PARAMETER_METADATA_KEY,\r\n existingParams,\r\n target,\r\n propertyKey\r\n );\r\n\r\n // Also update the route metadata to include this parameter\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n parameters: existingParams\r\n });\r\n }\r\n\r\n /**\r\n * Define dependency metadata (used by @Depends decorator)\r\n */\r\n static defineDependency(\r\n target: any,\r\n propertyKey: string,\r\n index: number,\r\n metadata: DependencyMetadata\r\n ): void {\r\n const existingDeps = this.getDependencyMetadata(target, propertyKey) || [];\r\n \r\n // Update or add dependency at the specified index\r\n existingDeps[index] = metadata;\r\n\r\n Reflect.defineMetadata(\r\n DEPENDENCY_METADATA_KEY,\r\n existingDeps,\r\n target,\r\n propertyKey\r\n );\r\n\r\n // Also update the route metadata to include this dependency\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n dependencies: existingDeps\r\n });\r\n }\r\n\r\n /**\r\n * Define controller metadata (used by @Controller decorator)\r\n */\r\n static defineController(target: any, metadata: ControllerMetadata): void {\r\n Reflect.defineMetadata(CONTROLLER_METADATA_KEY, metadata, target);\r\n }\r\n\r\n /**\r\n * Get route metadata from reflect-metadata\r\n */\r\n static getRouteMetadata(target: any, propertyKey: string): Partial<RouteMetadata> | undefined {\r\n return Reflect.getMetadata(ROUTE_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get parameter metadata from reflect-metadata\r\n */\r\n static getParameterMetadata(target: any, propertyKey: string): ParameterMetadata[] | undefined {\r\n return Reflect.getMetadata(PARAMETER_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get dependency metadata from reflect-metadata\r\n */\r\n static getDependencyMetadata(target: any, propertyKey: string): DependencyMetadata[] | undefined {\r\n return Reflect.getMetadata(DEPENDENCY_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get controller metadata from reflect-metadata\r\n */\r\n static getControllerMetadata(target: any): ControllerMetadata | undefined {\r\n return Reflect.getMetadata(CONTROLLER_METADATA_KEY, target);\r\n }\r\n\r\n /**\r\n * Check if a class has controller metadata\r\n */\r\n static hasControllerMetadata(target: any): boolean {\r\n return Reflect.hasMetadata(CONTROLLER_METADATA_KEY, target);\r\n }\r\n\r\n /**\r\n * Check if a method has route metadata\r\n */\r\n static hasRouteMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(ROUTE_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get all route methods from a controller class\r\n */\r\n static getRouteMethods(target: Class): string[] {\r\n const prototype = target.prototype;\r\n const methods: string[] = [];\r\n\r\n // Get all property names from the prototype\r\n const propertyNames = Object.getOwnPropertyNames(prototype);\r\n\r\n for (const propertyName of propertyNames) {\r\n if (propertyName === 'constructor') continue;\r\n \r\n if (this.hasRouteMetadata(prototype, propertyName)) {\r\n methods.push(propertyName);\r\n }\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n /**\r\n * Define WebSocket metadata (used by @WebSocket decorator)\r\n */\r\n static defineWebSocket(target: any, metadata: Partial<WebSocketMetadata>): void {\r\n const existingMetadata = this.getWebSocketMetadata(target);\r\n \r\n const mergedMetadata: Partial<WebSocketMetadata> = {\r\n ...existingMetadata,\r\n ...metadata,\r\n target: target\r\n };\r\n\r\n Reflect.defineMetadata(WEBSOCKET_METADATA_KEY, mergedMetadata, target);\r\n }\r\n\r\n /**\r\n * Define WebSocket handler metadata (used by @OnConnect, @OnMessage, @OnDisconnect)\r\n */\r\n static defineWebSocketHandler(\r\n target: any,\r\n propertyKey: string,\r\n metadata: WebSocketHandlerMetadata\r\n ): void {\r\n // Get existing WebSocket metadata\r\n const wsMetadata = this.getWebSocketMetadata(target.constructor) || {};\r\n\r\n // Update the appropriate handler\r\n switch (metadata.type) {\r\n case 'connect':\r\n wsMetadata.onConnect = propertyKey;\r\n break;\r\n case 'message':\r\n wsMetadata.onMessage = propertyKey;\r\n wsMetadata.messageSchema = metadata.schema;\r\n break;\r\n case 'disconnect':\r\n wsMetadata.onDisconnect = propertyKey;\r\n break;\r\n }\r\n\r\n // Save updated metadata\r\n this.defineWebSocket(target.constructor, wsMetadata);\r\n\r\n // Also store handler-specific metadata\r\n Reflect.defineMetadata(\r\n WEBSOCKET_HANDLER_METADATA_KEY,\r\n metadata,\r\n target,\r\n propertyKey\r\n );\r\n }\r\n\r\n /**\r\n * Get WebSocket metadata from reflect-metadata\r\n */\r\n static getWebSocketMetadata(target: any): Partial<WebSocketMetadata> | undefined {\r\n return Reflect.getMetadata(WEBSOCKET_METADATA_KEY, target);\r\n }\r\n\r\n /**\r\n * Get WebSocket handler metadata from reflect-metadata\r\n */\r\n static getWebSocketHandlerMetadata(target: any, propertyKey: string): WebSocketHandlerMetadata | undefined {\r\n return Reflect.getMetadata(WEBSOCKET_HANDLER_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a class has WebSocket metadata\r\n */\r\n static hasWebSocketMetadata(target: any): boolean {\r\n return Reflect.hasMetadata(WEBSOCKET_METADATA_KEY, target);\r\n }\r\n\r\n /**\r\n * Define GraphQL resolver metadata (used by @Resolver decorator)\r\n */\r\n static defineGraphQLResolver(target: any, metadata: GraphQLResolverMetadata): void {\r\n Reflect.defineMetadata(GRAPHQL_RESOLVER_KEY, metadata, target);\r\n }\r\n\r\n /**\r\n * Define GraphQL field metadata (used by @Query, @Mutation, @Subscription decorators)\r\n */\r\n static defineGraphQLField(\r\n target: any,\r\n propertyKey: string,\r\n metadata: GraphQLFieldMetadata\r\n ): void {\r\n // Store field metadata on the method\r\n Reflect.defineMetadata(GRAPHQL_FIELD_KEY, metadata, target, propertyKey);\r\n\r\n // Also maintain a list of all fields on the class\r\n const existingFields = this.getGraphQLFieldsMetadata(target.constructor) || [];\r\n existingFields.push(metadata);\r\n Reflect.defineMetadata(GRAPHQL_FIELD_KEY, existingFields, target.constructor);\r\n }\r\n\r\n /**\r\n * Get GraphQL resolver metadata from reflect-metadata\r\n */\r\n static getGraphQLResolverMetadata(target: any): GraphQLResolverMetadata | undefined {\r\n return Reflect.getMetadata(GRAPHQL_RESOLVER_KEY, target);\r\n }\r\n\r\n /**\r\n * Get all GraphQL fields metadata from a resolver class\r\n */\r\n static getGraphQLFieldsMetadata(target: any): GraphQLFieldMetadata[] {\r\n return Reflect.getMetadata(GRAPHQL_FIELD_KEY, target) || [];\r\n }\r\n\r\n /**\r\n * Get GraphQL field metadata from a specific method\r\n */\r\n static getGraphQLFieldMetadata(target: any, propertyKey: string): GraphQLFieldMetadata | undefined {\r\n return Reflect.getMetadata(GRAPHQL_FIELD_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a class has GraphQL resolver metadata\r\n */\r\n static hasGraphQLResolverMetadata(target: any): boolean {\r\n return Reflect.hasMetadata(GRAPHQL_RESOLVER_KEY, target);\r\n }\r\n\r\n /**\r\n * Check if a method has GraphQL field metadata\r\n */\r\n static hasGraphQLFieldMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(GRAPHQL_FIELD_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Define authentication metadata (used by @Auth decorator)\r\n */\r\n static defineAuth(target: any, propertyKey: string, metadata: AuthMetadata): void {\r\n Reflect.defineMetadata(AUTH_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include auth info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n auth: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Get authentication metadata from reflect-metadata\r\n */\r\n static getAuthMetadata(target: any, propertyKey: string): AuthMetadata | undefined {\r\n return Reflect.getMetadata(AUTH_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has authentication metadata\r\n */\r\n static hasAuthMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(AUTH_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Define OAuth metadata (used by @OAuth decorator)\r\n */\r\n static defineOAuth(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(OAUTH_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include OAuth info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n oauth: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Get OAuth metadata from reflect-metadata\r\n */\r\n static getOAuthMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(OAUTH_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has OAuth metadata\r\n */\r\n static hasOAuthMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(OAUTH_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Define roles metadata (used by @Roles decorator)\r\n */\r\n static defineRoles(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(ROLES_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include roles info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n roles: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Define permissions metadata (used by @Permissions decorator)\r\n */\r\n static definePermissions(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(PERMISSIONS_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include permissions info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n permissions: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Define minimum role metadata (used by @MinimumRole decorator)\r\n */\r\n static defineMinimumRole(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(MINIMUM_ROLE_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include minimum role info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n minimumRole: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Get roles metadata from reflect-metadata\r\n */\r\n static getRolesMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(ROLES_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get permissions metadata from reflect-metadata\r\n */\r\n static getPermissionsMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(PERMISSIONS_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get minimum role metadata from reflect-metadata\r\n */\r\n static getMinimumRoleMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(MINIMUM_ROLE_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has roles metadata\r\n */\r\n static hasRolesMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(ROLES_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has permissions metadata\r\n */\r\n static hasPermissionsMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(PERMISSIONS_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has minimum role metadata\r\n */\r\n static hasMinimumRoleMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(MINIMUM_ROLE_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Define resource permission metadata (used by @CanAccess decorator)\r\n */\r\n static defineResourcePermission(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(RESOURCE_PERMISSION_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include resource permission info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n resourcePermission: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Get resource permission metadata from reflect-metadata\r\n */\r\n static getResourcePermissionMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(RESOURCE_PERMISSION_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has resource permission metadata\r\n */\r\n static hasResourcePermissionMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(RESOURCE_PERMISSION_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Define session metadata (used by @Session decorator)\r\n */\r\n static defineSession(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(SESSION_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include session info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n session: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Define CSRF metadata (used by @RequireCSRF decorator)\r\n */\r\n static defineCSRF(target: any, propertyKey: string, metadata: any): void {\r\n Reflect.defineMetadata(CSRF_METADATA_KEY, metadata, target, propertyKey);\r\n\r\n // Also update the route metadata to include CSRF info\r\n const routeMetadata = this.getRouteMetadata(target, propertyKey);\r\n this.defineRoute(target, propertyKey, {\r\n ...routeMetadata,\r\n csrf: metadata\r\n });\r\n }\r\n\r\n /**\r\n * Get session metadata from reflect-metadata\r\n */\r\n static getSessionMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(SESSION_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Get CSRF metadata from reflect-metadata\r\n */\r\n static getCSRFMetadata(target: any, propertyKey: string): any {\r\n return Reflect.getMetadata(CSRF_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has session metadata\r\n */\r\n static hasSessionMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(SESSION_METADATA_KEY, target, propertyKey);\r\n }\r\n\r\n /**\r\n * Check if a method has CSRF metadata\r\n */\r\n static hasCSRFMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(CSRF_METADATA_KEY, target, propertyKey);\r\n }\r\n}\r\n",
|
|
26
25
|
"import type { Provider, Scope, Context, ProviderConfig, Class } from '../types';\r\n\r\n/**\r\n * Dependency Injection Container\r\n * Manages dependency lifecycle with support for singleton, request, and transient scopes\r\n * \r\n * Performance optimizations:\r\n * - Singleton instances cached globally for reuse across all requests\r\n * - Request-scoped instances cached per-request using WeakMap for automatic cleanup\r\n * - Provider name cache to avoid repeated string operations\r\n * - Fast-path for already resolved singletons\r\n */\r\nexport class DIContainer {\r\n // Storage for singleton instances (global cache) - optimized for fast lookups\r\n private singletons: Map<Provider, any> = new Map();\r\n \r\n // Storage for request-scoped instances (per-request cache) - uses WeakMap for automatic GC\r\n private requestScoped: WeakMap<Context, Map<Provider, any>> = new WeakMap();\r\n \r\n // Provider configurations - cached to avoid repeated lookups\r\n private providers: Map<Provider, ProviderConfig> = new Map();\r\n \r\n // Track resolution stack for circular dependency detection\r\n private resolutionStack: Set<Provider> = new Set();\r\n \r\n // Cache provider names for error messages (avoid repeated string operations)\r\n private providerNameCache: WeakMap<Provider, string> = new WeakMap();\r\n \r\n // Statistics for monitoring performance (optional, for debugging)\r\n private stats = {\r\n singletonHits: 0,\r\n singletonMisses: 0,\r\n requestHits: 0,\r\n requestMisses: 0,\r\n transientCreations: 0\r\n };\r\n\r\n /**\r\n * Register a provider with optional configuration\r\n * @param provider - Class or factory function to provide the dependency\r\n * @param config - Configuration including scope and factory\r\n */\r\n register(provider: Provider, config?: ProviderConfig): void {\r\n this.providers.set(provider, config || { scope: 'transient' });\r\n }\r\n\r\n /**\r\n * Resolve a dependency with the specified scope\r\n * Optimized with fast-path for cached singletons and request-scoped instances\r\n * \r\n * @param provider - The provider to resolve\r\n * @param options - Resolution options including scope and context\r\n * @returns The resolved dependency instance\r\n */\r\n async resolve<T>(\r\n provider: Provider<T>,\r\n options?: { scope?: Scope; context?: Context }\r\n ): Promise<T> {\r\n const config = this.providers.get(provider) || { scope: options?.scope || 'transient' };\r\n const scope = options?.scope || config.scope || 'transient';\r\n\r\n // Fast-path for singleton: check cache first before any other operations\r\n if (scope === 'singleton') {\r\n // Check if already cached (hot path - most common case)\r\n if (this.singletons.has(provider)) {\r\n this.stats.singletonHits++;\r\n return this.singletons.get(provider);\r\n }\r\n \r\n this.stats.singletonMisses++;\r\n \r\n // Check for circular dependencies only when creating new instance\r\n if (this.resolutionStack.has(provider)) {\r\n throw new Error(`Circular dependency detected: ${this.buildCircularDependencyMessage(provider)}`);\r\n }\r\n\r\n // Create and cache singleton\r\n this.resolutionStack.add(provider);\r\n try {\r\n const instance = await this.create(provider, config, options?.context);\r\n this.singletons.set(provider, instance);\r\n return instance;\r\n } finally {\r\n this.resolutionStack.delete(provider);\r\n }\r\n }\r\n\r\n // Fast-path for request-scoped: check cache first\r\n if (scope === 'request' && options?.context) {\r\n let requestMap = this.requestScoped.get(options.context);\r\n \r\n // Check if already cached in this request\r\n if (requestMap?.has(provider)) {\r\n this.stats.requestHits++;\r\n return requestMap.get(provider);\r\n }\r\n \r\n this.stats.requestMisses++;\r\n \r\n // Initialize request map if needed\r\n if (!requestMap) {\r\n requestMap = new Map();\r\n this.requestScoped.set(options.context, requestMap);\r\n }\r\n\r\n // Check for circular dependencies only when creating new instance\r\n if (this.resolutionStack.has(provider)) {\r\n throw new Error(`Circular dependency detected: ${this.buildCircularDependencyMessage(provider)}`);\r\n }\r\n\r\n // Create and cache request-scoped instance\r\n this.resolutionStack.add(provider);\r\n try {\r\n const instance = await this.create(provider, config, options.context);\r\n requestMap.set(provider, instance);\r\n return instance;\r\n } finally {\r\n this.resolutionStack.delete(provider);\r\n }\r\n }\r\n\r\n // Transient: new instance every time (no caching)\r\n this.stats.transientCreations++;\r\n \r\n // Check for circular dependencies\r\n if (this.resolutionStack.has(provider)) {\r\n throw new Error(`Circular dependency detected: ${this.buildCircularDependencyMessage(provider)}`);\r\n }\r\n\r\n this.resolutionStack.add(provider);\r\n try {\r\n return await this.create(provider, config, options?.context);\r\n } finally {\r\n this.resolutionStack.delete(provider);\r\n }\r\n }\r\n\r\n /**\r\n * Build a detailed circular dependency error message\r\n * Uses cached provider names for performance\r\n */\r\n private buildCircularDependencyMessage(provider: Provider): string {\r\n const stackArray = Array.from(this.resolutionStack);\r\n const providerName = this.getProviderName(provider);\r\n const cycle = stackArray.map(p => this.getProviderName(p)).join(' -> ') + ' -> ' + providerName;\r\n return cycle;\r\n }\r\n\r\n /**\r\n * Create a new instance of the provider\r\n * @param provider - The provider to instantiate\r\n * @param config - Provider configuration\r\n * @param context - Optional context for request-scoped dependencies\r\n * @returns The created instance\r\n */\r\n private async create<T>(\r\n provider: Provider<T>,\r\n config: ProviderConfig,\r\n context?: Context\r\n ): Promise<T> {\r\n // Use custom factory if provided\r\n if (config.factory) {\r\n return config.factory();\r\n }\r\n\r\n if (typeof provider === 'function') {\r\n // Check if it's a class (has prototype) or a factory function\r\n if (provider.prototype && provider.prototype.constructor === provider) {\r\n // It's a class - instantiate it\r\n // Check if the class has constructor dependencies\r\n const instance = new (provider as Class<T>)();\r\n \r\n // Resolve nested dependencies if any are registered\r\n // This allows for constructor injection in the future\r\n await this.resolveNestedDependencies(instance, context);\r\n \r\n return instance;\r\n } else {\r\n // It's a factory function - call it\r\n const result = (provider as Function)();\r\n // Handle both sync and async factories\r\n return result instanceof Promise ? await result : result;\r\n }\r\n }\r\n\r\n throw new Error('Invalid provider type');\r\n }\r\n\r\n /**\r\n * Resolve nested dependencies for an instance\r\n * This method can be extended to support constructor injection\r\n * @param instance - The instance to resolve dependencies for\r\n * @param context - Optional context for request-scoped dependencies\r\n */\r\n private async resolveNestedDependencies(instance: any, context?: Context): Promise<void> {\r\n // This is a placeholder for future nested dependency resolution\r\n // Currently, dependencies are resolved at the parameter level by the RouterCompiler\r\n // In the future, this could support constructor injection by reading metadata\r\n // from the class constructor parameters\r\n }\r\n\r\n /**\r\n * Get a human-readable name for a provider (for error messages)\r\n * Uses cache to avoid repeated string operations\r\n * \r\n * @param provider - The provider to get the name for\r\n * @returns A string representation of the provider\r\n */\r\n private getProviderName(provider: Provider): string {\r\n // Check cache first\r\n const cached = this.providerNameCache.get(provider);\r\n if (cached) {\r\n return cached;\r\n }\r\n \r\n // Generate name\r\n let name: string;\r\n if (typeof provider === 'function') {\r\n if (provider.name) {\r\n name = provider.name;\r\n } else {\r\n name = provider.toString().substring(0, 50);\r\n }\r\n } else {\r\n name = String(provider);\r\n }\r\n \r\n // Cache for future use\r\n this.providerNameCache.set(provider, name);\r\n return name;\r\n }\r\n\r\n /**\r\n * Clear all cached instances (useful for testing)\r\n */\r\n clear(): void {\r\n this.singletons.clear();\r\n this.providers.clear();\r\n this.resolutionStack.clear();\r\n this.providerNameCache = new WeakMap();\r\n this.resetStats();\r\n }\r\n\r\n /**\r\n * Clear request-scoped cache for a specific context\r\n * This is automatically handled by WeakMap garbage collection,\r\n * but can be called explicitly for immediate cleanup\r\n */\r\n clearRequestScope(context: Context): void {\r\n this.requestScoped.delete(context);\r\n }\r\n\r\n /**\r\n * Get dependency resolution statistics (useful for monitoring and debugging)\r\n * Returns cache hit rates and creation counts\r\n */\r\n getStats(): {\r\n singletonHits: number;\r\n singletonMisses: number;\r\n singletonHitRate: number;\r\n requestHits: number;\r\n requestMisses: number;\r\n requestHitRate: number;\r\n transientCreations: number;\r\n } {\r\n const singletonTotal = this.stats.singletonHits + this.stats.singletonMisses;\r\n const singletonHitRate = singletonTotal > 0 \r\n ? (this.stats.singletonHits / singletonTotal) * 100 \r\n : 0;\r\n \r\n const requestTotal = this.stats.requestHits + this.stats.requestMisses;\r\n const requestHitRate = requestTotal > 0 \r\n ? (this.stats.requestHits / requestTotal) * 100 \r\n : 0;\r\n \r\n return {\r\n singletonHits: this.stats.singletonHits,\r\n singletonMisses: this.stats.singletonMisses,\r\n singletonHitRate: Math.round(singletonHitRate * 100) / 100,\r\n requestHits: this.stats.requestHits,\r\n requestMisses: this.stats.requestMisses,\r\n requestHitRate: Math.round(requestHitRate * 100) / 100,\r\n transientCreations: this.stats.transientCreations\r\n };\r\n }\r\n\r\n /**\r\n * Reset statistics (useful for testing)\r\n */\r\n resetStats(): void {\r\n this.stats = {\r\n singletonHits: 0,\r\n singletonMisses: 0,\r\n requestHits: 0,\r\n requestMisses: 0,\r\n transientCreations: 0\r\n };\r\n }\r\n}\r\n",
|
|
27
26
|
"// src/utils/cookie.ts\nimport { decodeURIComponent_, tryDecode } from \"./url.js\";\nvar algorithm = { name: \"HMAC\", hash: \"SHA-256\" };\nvar getCryptoKey = async (secret) => {\n const secretBuf = typeof secret === \"string\" ? new TextEncoder().encode(secret) : secret;\n return await crypto.subtle.importKey(\"raw\", secretBuf, algorithm, false, [\"sign\", \"verify\"]);\n};\nvar makeSignature = async (value, secret) => {\n const key = await getCryptoKey(secret);\n const signature = await crypto.subtle.sign(algorithm.name, key, new TextEncoder().encode(value));\n return btoa(String.fromCharCode(...new Uint8Array(signature)));\n};\nvar verifySignature = async (base64Signature, value, secret) => {\n try {\n const signatureBinStr = atob(base64Signature);\n const signature = new Uint8Array(signatureBinStr.length);\n for (let i = 0, len = signatureBinStr.length; i < len; i++) {\n signature[i] = signatureBinStr.charCodeAt(i);\n }\n return await crypto.subtle.verify(algorithm, secret, signature, new TextEncoder().encode(value));\n } catch {\n return false;\n }\n};\nvar validCookieNameRegEx = /^[\\w!#$%&'*.^`|~+-]+$/;\nvar validCookieValueRegEx = /^[ !#-:<-[\\]-~]*$/;\nvar parse = (cookie, name) => {\n if (name && cookie.indexOf(name) === -1) {\n return {};\n }\n const pairs = cookie.trim().split(\";\");\n const parsedCookie = {};\n for (let pairStr of pairs) {\n pairStr = pairStr.trim();\n const valueStartPos = pairStr.indexOf(\"=\");\n if (valueStartPos === -1) {\n continue;\n }\n const cookieName = pairStr.substring(0, valueStartPos).trim();\n if (name && name !== cookieName || !validCookieNameRegEx.test(cookieName)) {\n continue;\n }\n let cookieValue = pairStr.substring(valueStartPos + 1).trim();\n if (cookieValue.startsWith('\"') && cookieValue.endsWith('\"')) {\n cookieValue = cookieValue.slice(1, -1);\n }\n if (validCookieValueRegEx.test(cookieValue)) {\n parsedCookie[cookieName] = cookieValue.indexOf(\"%\") !== -1 ? tryDecode(cookieValue, decodeURIComponent_) : cookieValue;\n if (name) {\n break;\n }\n }\n }\n return parsedCookie;\n};\nvar parseSigned = async (cookie, secret, name) => {\n const parsedCookie = {};\n const secretKey = await getCryptoKey(secret);\n for (const [key, value] of Object.entries(parse(cookie, name))) {\n const signatureStartPos = value.lastIndexOf(\".\");\n if (signatureStartPos < 1) {\n continue;\n }\n const signedValue = value.substring(0, signatureStartPos);\n const signature = value.substring(signatureStartPos + 1);\n if (signature.length !== 44 || !signature.endsWith(\"=\")) {\n continue;\n }\n const isVerified = await verifySignature(signature, signedValue, secretKey);\n parsedCookie[key] = isVerified ? signedValue : false;\n }\n return parsedCookie;\n};\nvar _serialize = (name, value, opt = {}) => {\n let cookie = `${name}=${value}`;\n if (name.startsWith(\"__Secure-\") && !opt.secure) {\n throw new Error(\"__Secure- Cookie must have Secure attributes\");\n }\n if (name.startsWith(\"__Host-\")) {\n if (!opt.secure) {\n throw new Error(\"__Host- Cookie must have Secure attributes\");\n }\n if (opt.path !== \"/\") {\n throw new Error('__Host- Cookie must have Path attributes with \"/\"');\n }\n if (opt.domain) {\n throw new Error(\"__Host- Cookie must not have Domain attributes\");\n }\n }\n if (opt && typeof opt.maxAge === \"number\" && opt.maxAge >= 0) {\n if (opt.maxAge > 3456e4) {\n throw new Error(\n \"Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration.\"\n );\n }\n cookie += `; Max-Age=${opt.maxAge | 0}`;\n }\n if (opt.domain && opt.prefix !== \"host\") {\n cookie += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n cookie += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n if (opt.expires.getTime() - Date.now() > 3456e7) {\n throw new Error(\n \"Cookies Expires SHOULD NOT be greater than 400 days (34560000 seconds) in the future.\"\n );\n }\n cookie += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) {\n cookie += \"; HttpOnly\";\n }\n if (opt.secure) {\n cookie += \"; Secure\";\n }\n if (opt.sameSite) {\n cookie += `; SameSite=${opt.sameSite.charAt(0).toUpperCase() + opt.sameSite.slice(1)}`;\n }\n if (opt.priority) {\n cookie += `; Priority=${opt.priority.charAt(0).toUpperCase() + opt.priority.slice(1)}`;\n }\n if (opt.partitioned) {\n if (!opt.secure) {\n throw new Error(\"Partitioned Cookie must have Secure attributes\");\n }\n cookie += \"; Partitioned\";\n }\n return cookie;\n};\nvar serialize = (name, value, opt) => {\n value = encodeURIComponent(value);\n return _serialize(name, value, opt);\n};\nvar serializeSigned = async (name, value, secret, opt = {}) => {\n const signature = await makeSignature(value, secret);\n value = `${value}.${signature}`;\n value = encodeURIComponent(value);\n return _serialize(name, value, opt);\n};\nexport {\n parse,\n parseSigned,\n serialize,\n serializeSigned\n};\n",
|
|
28
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",
|
|
@@ -33,7 +32,7 @@
|
|
|
33
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",
|
|
34
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"
|
|
35
34
|
],
|
|
36
|
-
"mappings": "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",
|
|
37
|
-
"debugId": "
|
|
35
|
+
"mappings": "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",
|
|
36
|
+
"debugId": "C040B3A530BF17EB64756E2164756E21",
|
|
38
37
|
"names": []
|
|
39
38
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{sa as b}from"../../chunk-5q75d71c.js";import"../../chunk-y262e56g.js";export{b as z};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=30903CD97C3038FA64756E2164756E21
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{ja as i}from"../../chunk-mky5qqg0.js";import{ka as o}from"../../chunk-yq3gf9ts.js";import"../../chunk-9v7atckx.js";import"../../chunk-5q75d71c.js";import"../../chunk-y262e56g.js";export{o as ValidationException,i as ValidationEngine};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=B8761B995EB7148864756E2164756E21
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{
|
|
2
|
+
import{f as u,g as P,h as j}from"../../chunk-mznkhz9c.js";import{J as S}from"../../chunk-2100y16g.js";import{ia as k}from"../../chunk-k66rn4fj.js";import{ta as b}from"../../chunk-y262e56g.js";var q=b(k(),1);function z(f){return(x)=>{S.defineWebSocket(x,{path:f})}}function A(){return(f,x)=>{S.defineWebSocketHandler(f,x,{type:"connect",method:x})}}function B(f){return(x,W)=>{S.defineWebSocketHandler(x,W,{type:"message",method:W,schema:f})}}function E(){return(f,x)=>{S.defineWebSocketHandler(f,x,{type:"disconnect",method:x})}}export{j as WebSocketPlugin,P as WebSocketManager,u as WebSocketConnection,z as WebSocket,B as OnMessage,E as OnDisconnect,A as OnConnect};export{z as a,A as b,B as c,E as d};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=358DE272A8910F6164756E2164756E21
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [],
|
|
3
|
+
"sources": ["..\\..\\src\\decorators\\websocket.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"// WebSocket decorators\r\nimport 'reflect-metadata';\r\nimport type { ZodSchema } from 'zod';\r\nimport { MetadataRegistry } from '../core/metadata';\r\n\r\n/**\r\n * @WebSocket decorator - Marks a class as a WebSocket handler\r\n * @param path - WebSocket endpoint path\r\n * \r\n * @example\r\n * ```typescript\r\n * @WebSocket('/ws/chat')\r\n * class ChatHandler {\r\n * @OnConnect()\r\n * handleConnect(connection: WebSocketConnection) {\r\n * console.log('Client connected');\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport function WebSocket(path: string): ClassDecorator {\r\n return (target: any) => {\r\n MetadataRegistry.defineWebSocket(target, { path });\r\n };\r\n}\r\n\r\n/**\r\n * @OnConnect decorator - Marks a method to be called when a client connects\r\n * \r\n * @example\r\n * ```typescript\r\n * @OnConnect()\r\n * handleConnect(connection: WebSocketConnection) {\r\n * connection.send({ type: 'welcome', message: 'Connected!' });\r\n * }\r\n * ```\r\n */\r\nexport function OnConnect(): MethodDecorator {\r\n return (target: any, propertyKey: string | symbol) => {\r\n MetadataRegistry.defineWebSocketHandler(target, propertyKey as string, {\r\n type: 'connect',\r\n method: propertyKey as string\r\n });\r\n };\r\n}\r\n\r\n/**\r\n * @OnMessage decorator - Marks a method to be called when a message is received\r\n * @param schema - Optional Zod schema for message validation\r\n * \r\n * @example\r\n * ```typescript\r\n * const MessageSchema = z.object({\r\n * type: z.string(),\r\n * content: z.string()\r\n * });\r\n * \r\n * @OnMessage(MessageSchema)\r\n * handleMessage(connection: WebSocketConnection, data: z.infer<typeof MessageSchema>) {\r\n * connection.broadcast(data);\r\n * }\r\n * ```\r\n */\r\nexport function OnMessage(schema?: ZodSchema): MethodDecorator {\r\n return (target: any, propertyKey: string | symbol) => {\r\n MetadataRegistry.defineWebSocketHandler(target, propertyKey as string, {\r\n type: 'message',\r\n method: propertyKey as string,\r\n schema\r\n });\r\n };\r\n}\r\n\r\n/**\r\n * @OnDisconnect decorator - Marks a method to be called when a client disconnects\r\n * \r\n * @example\r\n * ```typescript\r\n * @OnDisconnect()\r\n * handleDisconnect(connection: WebSocketConnection) {\r\n * console.log('Client disconnected');\r\n * }\r\n * ```\r\n */\r\nexport function OnDisconnect(): MethodDecorator {\r\n return (target: any, propertyKey: string | symbol) => {\r\n MetadataRegistry.defineWebSocketHandler(target, propertyKey as string, {\r\n type: 'disconnect',\r\n method: propertyKey as string\r\n });\r\n };\r\n}\r\n"
|
|
5
6
|
],
|
|
6
|
-
"mappings": "",
|
|
7
|
-
"debugId": "
|
|
7
|
+
"mappings": ";sMACA,aAmBO,OAAS,DAAS,CAAC,EAA8B,CACtD,MAAO,CAAC,IAAgB,CACtB,EAAiB,gBAAgB,EAAQ,CAAE,MAAK,CAAC,GAe9C,SAAS,CAAS,EAAoB,CAC3C,MAAO,CAAC,EAAa,IAAiC,CACpD,EAAiB,uBAAuB,EAAQ,EAAuB,CACrE,KAAM,UACN,OAAQ,CACV,CAAC,GAqBE,SAAS,CAAS,CAAC,EAAqC,CAC7D,MAAO,CAAC,EAAa,IAAiC,CACpD,EAAiB,uBAAuB,EAAQ,EAAuB,CACrE,KAAM,UACN,OAAQ,EACR,QACF,CAAC,GAeE,SAAS,CAAY,EAAoB,CAC9C,MAAO,CAAC,EAAa,IAAiC,CACpD,EAAiB,uBAAuB,EAAQ,EAAuB,CACrE,KAAM,aACN,OAAQ,CACV,CAAC",
|
|
8
|
+
"debugId": "358DE272A8910F6164756E2164756E21",
|
|
8
9
|
"names": []
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/websocket/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/websocket/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,cAAc,yBAAyB,CAAC"}
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|