veloce-ts 0.1.0
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 +43 -0
- package/LICENSE +21 -0
- package/README.md +442 -0
- package/bin/veloce.ts +2 -0
- package/dist/cjs/src/cli/index.js +425 -0
- package/dist/cjs/src/cli/index.js.map +22 -0
- package/dist/cjs/src/docs/index.js +7 -0
- package/dist/cjs/src/docs/index.js.map +55 -0
- package/dist/cjs/src/errors/index.js +4 -0
- package/dist/cjs/src/errors/index.js.map +12 -0
- package/dist/cjs/src/graphql/index.js +83 -0
- package/dist/cjs/src/graphql/index.js.map +24 -0
- package/dist/cjs/src/index.js +126 -0
- package/dist/cjs/src/index.js.map +108 -0
- package/dist/cjs/src/middleware/index.js +3 -0
- package/dist/cjs/src/middleware/index.js.map +12 -0
- package/dist/cjs/src/plugins/index.js +125 -0
- package/dist/cjs/src/plugins/index.js.map +67 -0
- package/dist/cjs/src/testing/index.js +17 -0
- package/dist/cjs/src/testing/index.js.map +54 -0
- package/dist/cjs/src/types/index.js +3 -0
- package/dist/cjs/src/types/index.js.map +16 -0
- package/dist/cjs/src/validation/index.js +3 -0
- package/dist/cjs/src/validation/index.js.map +19 -0
- package/dist/cjs/src/websocket/index.js +3 -0
- package/dist/cjs/src/websocket/index.js.map +12 -0
- package/dist/esm/chunk-0zxhx5b8.js +7 -0
- package/dist/esm/chunk-0zxhx5b8.js.map +10 -0
- package/dist/esm/chunk-159eqj8q.js +5 -0
- package/dist/esm/chunk-159eqj8q.js.map +12 -0
- package/dist/esm/chunk-1hqjkm44.js +5 -0
- package/dist/esm/chunk-1hqjkm44.js.map +11 -0
- package/dist/esm/chunk-2q6s8v3j.js +6 -0
- package/dist/esm/chunk-2q6s8v3j.js.map +10 -0
- package/dist/esm/chunk-42h6trpf.js +5 -0
- package/dist/esm/chunk-42h6trpf.js.map +9 -0
- package/dist/esm/chunk-82f2j0k2.js +60 -0
- package/dist/esm/chunk-82f2j0k2.js.map +10 -0
- package/dist/esm/chunk-8wrnr45g.js +338 -0
- package/dist/esm/chunk-8wrnr45g.js.map +10 -0
- package/dist/esm/chunk-9p6d0t33.js +5 -0
- package/dist/esm/chunk-9p6d0t33.js.map +10 -0
- package/dist/esm/chunk-awven6dt.js +4 -0
- package/dist/esm/chunk-awven6dt.js.map +16 -0
- package/dist/esm/chunk-gv5n8ddb.js +18 -0
- package/dist/esm/chunk-gv5n8ddb.js.map +10 -0
- package/dist/esm/chunk-pn7z890c.js +72 -0
- package/dist/esm/chunk-pn7z890c.js.map +13 -0
- package/dist/esm/chunk-qfsjy9bg.js +7 -0
- package/dist/esm/chunk-qfsjy9bg.js.map +10 -0
- package/dist/esm/chunk-vkkzgaf7.js +5 -0
- package/dist/esm/chunk-vkkzgaf7.js.map +12 -0
- package/dist/esm/src/cli/index.js +30 -0
- package/dist/esm/src/cli/index.js.map +18 -0
- package/dist/esm/src/docs/index.js +8 -0
- package/dist/esm/src/docs/index.js.map +48 -0
- package/dist/esm/src/errors/index.js +4 -0
- package/dist/esm/src/errors/index.js.map +9 -0
- package/dist/esm/src/graphql/index.js +4 -0
- package/dist/esm/src/graphql/index.js.map +9 -0
- package/dist/esm/src/index.js +4 -0
- package/dist/esm/src/index.js.map +16 -0
- package/dist/esm/src/middleware/index.js +4 -0
- package/dist/esm/src/middleware/index.js.map +9 -0
- package/dist/esm/src/plugins/index.js +42 -0
- package/dist/esm/src/plugins/index.js.map +10 -0
- package/dist/esm/src/testing/index.js +4 -0
- package/dist/esm/src/testing/index.js.map +39 -0
- package/dist/esm/src/types/index.js +4 -0
- package/dist/esm/src/types/index.js.map +9 -0
- package/dist/esm/src/validation/index.js +4 -0
- package/dist/esm/src/validation/index.js.map +9 -0
- package/dist/esm/src/websocket/index.js +4 -0
- package/dist/esm/src/websocket/index.js.map +9 -0
- package/dist/types/adapters/base.d.ts +24 -0
- package/dist/types/adapters/base.d.ts.map +1 -0
- package/dist/types/adapters/express.d.ts +44 -0
- package/dist/types/adapters/express.d.ts.map +1 -0
- package/dist/types/adapters/hono.d.ts +44 -0
- package/dist/types/adapters/hono.d.ts.map +1 -0
- package/dist/types/cli/commands/build.d.ts +3 -0
- package/dist/types/cli/commands/build.d.ts.map +1 -0
- package/dist/types/cli/commands/dev.d.ts +3 -0
- package/dist/types/cli/commands/dev.d.ts.map +1 -0
- package/dist/types/cli/commands/generate.d.ts +3 -0
- package/dist/types/cli/commands/generate.d.ts.map +1 -0
- package/dist/types/cli/commands/new.d.ts +3 -0
- package/dist/types/cli/commands/new.d.ts.map +1 -0
- package/dist/types/cli/index.d.ts +3 -0
- package/dist/types/cli/index.d.ts.map +1 -0
- package/dist/types/core/application.d.ts +268 -0
- package/dist/types/core/application.d.ts.map +1 -0
- package/dist/types/core/compiled-metadata.d.ts +58 -0
- package/dist/types/core/compiled-metadata.d.ts.map +1 -0
- package/dist/types/core/metadata.d.ts +175 -0
- package/dist/types/core/metadata.d.ts.map +1 -0
- package/dist/types/core/plugin.d.ts +63 -0
- package/dist/types/core/plugin.d.ts.map +1 -0
- package/dist/types/core/router-compiler.d.ts +61 -0
- package/dist/types/core/router-compiler.d.ts.map +1 -0
- package/dist/types/decorators/dependencies.d.ts +28 -0
- package/dist/types/decorators/dependencies.d.ts.map +1 -0
- package/dist/types/decorators/docs.d.ts +38 -0
- package/dist/types/decorators/docs.d.ts.map +1 -0
- package/dist/types/decorators/graphql.d.ts +126 -0
- package/dist/types/decorators/graphql.d.ts.map +1 -0
- package/dist/types/decorators/http.d.ts +74 -0
- package/dist/types/decorators/http.d.ts.map +1 -0
- package/dist/types/decorators/middleware.d.ts +30 -0
- package/dist/types/decorators/middleware.d.ts.map +1 -0
- package/dist/types/decorators/params.d.ts +82 -0
- package/dist/types/decorators/params.d.ts.map +1 -0
- package/dist/types/decorators/websocket.d.ts +61 -0
- package/dist/types/decorators/websocket.d.ts.map +1 -0
- package/dist/types/dependencies/container.d.ts +93 -0
- package/dist/types/dependencies/container.d.ts.map +1 -0
- package/dist/types/docs/index.d.ts +3 -0
- package/dist/types/docs/index.d.ts.map +1 -0
- package/dist/types/docs/openapi-generator.d.ts +50 -0
- package/dist/types/docs/openapi-generator.d.ts.map +1 -0
- package/dist/types/docs/zod-to-json-schema.d.ts +46 -0
- package/dist/types/docs/zod-to-json-schema.d.ts.map +1 -0
- package/dist/types/errors/exceptions.d.ts +48 -0
- package/dist/types/errors/exceptions.d.ts.map +1 -0
- package/dist/types/errors/handler.d.ts +61 -0
- package/dist/types/errors/handler.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +7 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/graphql/index.d.ts +4 -0
- package/dist/types/graphql/index.d.ts.map +1 -0
- package/dist/types/graphql/plugin.d.ts +60 -0
- package/dist/types/graphql/plugin.d.ts.map +1 -0
- package/dist/types/graphql/schema-builder.d.ts +46 -0
- package/dist/types/graphql/schema-builder.d.ts.map +1 -0
- package/dist/types/graphql/zod-to-graphql.d.ts +22 -0
- package/dist/types/graphql/zod-to-graphql.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/middleware/compression.d.ts +7 -0
- package/dist/types/middleware/compression.d.ts.map +1 -0
- package/dist/types/middleware/cors.d.ts +7 -0
- package/dist/types/middleware/cors.d.ts.map +1 -0
- package/dist/types/middleware/index.d.ts +4 -0
- package/dist/types/middleware/index.d.ts.map +1 -0
- package/dist/types/middleware/rate-limit.d.ts +7 -0
- package/dist/types/middleware/rate-limit.d.ts.map +1 -0
- package/dist/types/plugins/index.d.ts +4 -0
- package/dist/types/plugins/index.d.ts.map +1 -0
- package/dist/types/plugins/openapi.d.ts +23 -0
- package/dist/types/plugins/openapi.d.ts.map +1 -0
- package/dist/types/responses/response.d.ts +200 -0
- package/dist/types/responses/response.d.ts.map +1 -0
- package/dist/types/testing/helpers.d.ts +98 -0
- package/dist/types/testing/helpers.d.ts.map +1 -0
- package/dist/types/testing/index.d.ts +4 -0
- package/dist/types/testing/index.d.ts.map +1 -0
- package/dist/types/testing/test-client.d.ts +86 -0
- package/dist/types/testing/test-client.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +232 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/validation/exceptions.d.ts +25 -0
- package/dist/types/validation/exceptions.d.ts.map +1 -0
- package/dist/types/validation/index.d.ts +3 -0
- package/dist/types/validation/index.d.ts.map +1 -0
- package/dist/types/validation/validator.d.ts +54 -0
- package/dist/types/validation/validator.d.ts.map +1 -0
- package/dist/types/websocket/connection.d.ts +51 -0
- package/dist/types/websocket/connection.d.ts.map +1 -0
- package/dist/types/websocket/index.d.ts +4 -0
- package/dist/types/websocket/index.d.ts.map +1 -0
- package/dist/types/websocket/manager.d.ts +82 -0
- package/dist/types/websocket/manager.d.ts.map +1 -0
- package/dist/types/websocket/plugin.d.ts +51 -0
- package/dist/types/websocket/plugin.d.ts.map +1 -0
- package/package.json +149 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base adapter interface for runtime-agnostic server implementations
|
|
3
|
+
* Adapters allow FastAPI-TS to run on different runtimes (Bun, Node.js, Deno, Workers)
|
|
4
|
+
* and integrate with different frameworks (Hono, Express)
|
|
5
|
+
*/
|
|
6
|
+
export interface Adapter {
|
|
7
|
+
/**
|
|
8
|
+
* Name of the adapter (e.g., 'hono', 'express', 'native')
|
|
9
|
+
*/
|
|
10
|
+
name: string;
|
|
11
|
+
/**
|
|
12
|
+
* Start the server and listen on the specified port
|
|
13
|
+
* @param port - Port number to listen on
|
|
14
|
+
* @param callback - Optional callback to execute when server starts
|
|
15
|
+
* @returns Server instance (type varies by runtime)
|
|
16
|
+
*/
|
|
17
|
+
listen(port: number, callback?: () => void): any;
|
|
18
|
+
/**
|
|
19
|
+
* Get the native handler for the underlying framework/runtime
|
|
20
|
+
* @returns Handler function (e.g., Hono's fetch, Express app)
|
|
21
|
+
*/
|
|
22
|
+
getHandler(): any;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC;IAEjD;;;OAGG;IACH,UAAU,IAAI,GAAG,CAAC;CACnB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express adapter for FastAPI-TS
|
|
3
|
+
* Bridges FastAPI-TS routes to Express.js framework
|
|
4
|
+
* Allows integration with existing Express applications
|
|
5
|
+
*/
|
|
6
|
+
import type { Adapter } from './base';
|
|
7
|
+
import type { VeloceTS } from '../core/application';
|
|
8
|
+
/**
|
|
9
|
+
* ExpressAdapter - Bridges FastAPI-TS to Express.js
|
|
10
|
+
* Converts Express req/res to Hono Context format
|
|
11
|
+
*/
|
|
12
|
+
export declare class ExpressAdapter implements Adapter {
|
|
13
|
+
private app;
|
|
14
|
+
name: string;
|
|
15
|
+
private express;
|
|
16
|
+
constructor(app: VeloceTS);
|
|
17
|
+
/**
|
|
18
|
+
* Set up the bridge between FastAPI-TS and Express
|
|
19
|
+
* Converts all FastAPI-TS routes to Express routes
|
|
20
|
+
*/
|
|
21
|
+
private setupBridge;
|
|
22
|
+
/**
|
|
23
|
+
* Convert Express request to Web Standard Request
|
|
24
|
+
*/
|
|
25
|
+
private createWebRequest;
|
|
26
|
+
/**
|
|
27
|
+
* Convert Web Standard Response to Express response
|
|
28
|
+
*/
|
|
29
|
+
private sendExpressResponse;
|
|
30
|
+
/**
|
|
31
|
+
* Start the Express server on the specified port
|
|
32
|
+
*/
|
|
33
|
+
listen(port: number, callback?: () => void): any;
|
|
34
|
+
/**
|
|
35
|
+
* Get the Express app instance
|
|
36
|
+
* This allows users to add additional Express middleware or routes
|
|
37
|
+
*/
|
|
38
|
+
getHandler(): any;
|
|
39
|
+
/**
|
|
40
|
+
* Get the underlying Express app for advanced customization
|
|
41
|
+
*/
|
|
42
|
+
getExpressApp(): any;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=express.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/adapters/express.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD;;;GAGG;AACH,qBAAa,cAAe,YAAW,OAAO;IAIhC,OAAO,CAAC,GAAG;IAHvB,IAAI,SAAa;IACjB,OAAO,CAAC,OAAO,CAAM;gBAED,GAAG,EAAE,QAAQ;IAajC;;;OAGG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;YACW,mBAAmB;IA8BjC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,GAAG;IAIhD;;;OAGG;IACH,UAAU,IAAI,GAAG;IAIjB;;OAEG;IACH,aAAa,IAAI,GAAG;CAGrB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hono adapter for runtime-agnostic server deployment
|
|
3
|
+
* Supports Bun, Node.js, Deno, and Cloudflare Workers
|
|
4
|
+
*/
|
|
5
|
+
import type { Hono } from 'hono';
|
|
6
|
+
import type { Adapter } from './base';
|
|
7
|
+
/**
|
|
8
|
+
* HonoAdapter - Adapts Hono.js to work across multiple runtimes
|
|
9
|
+
* Automatically detects the runtime and uses the appropriate server implementation
|
|
10
|
+
*/
|
|
11
|
+
export declare class HonoAdapter implements Adapter {
|
|
12
|
+
private hono;
|
|
13
|
+
name: string;
|
|
14
|
+
private runtime;
|
|
15
|
+
constructor(hono: Hono);
|
|
16
|
+
/**
|
|
17
|
+
* Start the server on the specified port
|
|
18
|
+
* Automatically uses the appropriate server for the detected runtime
|
|
19
|
+
*/
|
|
20
|
+
listen(port: number, callback?: () => void): any;
|
|
21
|
+
/**
|
|
22
|
+
* Get the Hono fetch handler
|
|
23
|
+
* This can be used directly in serverless environments or for custom server setups
|
|
24
|
+
*/
|
|
25
|
+
getHandler(): (request: Request, Env?: unknown, executionCtx?: import("hono").ExecutionContext) => Response | Promise<Response>;
|
|
26
|
+
/**
|
|
27
|
+
* Get the detected runtime
|
|
28
|
+
*/
|
|
29
|
+
getRuntime(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Start server using Bun's native server
|
|
32
|
+
*/
|
|
33
|
+
private listenBun;
|
|
34
|
+
/**
|
|
35
|
+
* Start server using Deno's native server
|
|
36
|
+
*/
|
|
37
|
+
private listenDeno;
|
|
38
|
+
/**
|
|
39
|
+
* Start server using Node.js adapter
|
|
40
|
+
* Requires @hono/node-server package
|
|
41
|
+
*/
|
|
42
|
+
private listenNode;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=hono.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAiCtC;;;GAGG;AACH,qBAAa,WAAY,YAAW,OAAO;IAI7B,OAAO,CAAC,IAAI;IAHxB,IAAI,SAAU;IACd,OAAO,CAAC,OAAO,CAAmC;gBAE9B,IAAI,EAAE,IAAI;IAI9B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,GAAG;IAuBhD;;;OAGG;IACH,UAAU;IAIV;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;;OAGG;IACH,OAAO,CAAC,UAAU;CAmBnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAW3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { MetadataRegistry } from './metadata';
|
|
3
|
+
import { DIContainer } from '../dependencies/container';
|
|
4
|
+
import { ErrorHandler, type CustomErrorHandler } from '../errors/handler';
|
|
5
|
+
import { PluginManager, type Plugin } from './plugin';
|
|
6
|
+
import type { VeloceTSConfig, Class, RouteConfig, Middleware, CorsOptions, RateLimitOptions, CompressionOptions } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Main VeloceTS application class
|
|
9
|
+
*
|
|
10
|
+
* Provides both decorator-based and functional API for defining routes.
|
|
11
|
+
* Built on top of Hono.js for maximum performance with support for multiple runtimes.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Create a new application
|
|
16
|
+
* const app = new VeloceTS({
|
|
17
|
+
* title: 'My API',
|
|
18
|
+
* version: '1.0.0',
|
|
19
|
+
* docs: true
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // Register a controller
|
|
23
|
+
* @Controller('/users')
|
|
24
|
+
* class UserController {
|
|
25
|
+
* @Get('/:id')
|
|
26
|
+
* getUser(@Param('id') id: string) {
|
|
27
|
+
* return { id, name: 'John' };
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
* app.include(UserController);
|
|
31
|
+
*
|
|
32
|
+
* // Or use functional API
|
|
33
|
+
* app.get('/users/:id', {
|
|
34
|
+
* handler: async (c) => {
|
|
35
|
+
* const id = c.req.param('id');
|
|
36
|
+
* return { id, name: 'John' };
|
|
37
|
+
* }
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Start the server
|
|
41
|
+
* app.listen(3000, () => {
|
|
42
|
+
* console.log('Server running on port 3000');
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare class VeloceTS {
|
|
47
|
+
private hono;
|
|
48
|
+
private metadata;
|
|
49
|
+
private container;
|
|
50
|
+
private validator;
|
|
51
|
+
private errorHandler;
|
|
52
|
+
private compiler;
|
|
53
|
+
private pluginManager;
|
|
54
|
+
private config;
|
|
55
|
+
private compiled;
|
|
56
|
+
private globalMiddleware;
|
|
57
|
+
private groupPrefix;
|
|
58
|
+
constructor(config?: VeloceTSConfig);
|
|
59
|
+
/**
|
|
60
|
+
* Register a controller class with the application
|
|
61
|
+
*
|
|
62
|
+
* Extracts metadata from decorators and stores in registry.
|
|
63
|
+
* The controller must be decorated with @Controller() and contain
|
|
64
|
+
* methods decorated with HTTP method decorators (@Get, @Post, etc.)
|
|
65
|
+
*
|
|
66
|
+
* @param controller - The controller class to register
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* @Controller('/api/users')
|
|
71
|
+
* class UserController {
|
|
72
|
+
* @Get('/')
|
|
73
|
+
* async list() {
|
|
74
|
+
* return [{ id: 1, name: 'John' }];
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* @Post('/')
|
|
78
|
+
* async create(@Body(UserSchema) user: InferSchema<typeof UserSchema>) {
|
|
79
|
+
* return { id: 2, ...user };
|
|
80
|
+
* }
|
|
81
|
+
* }
|
|
82
|
+
*
|
|
83
|
+
* app.include(UserController);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
include(controller: Class): void;
|
|
87
|
+
/**
|
|
88
|
+
* Register a GET route using functional API
|
|
89
|
+
*
|
|
90
|
+
* @param path - The route path (supports parameters like /users/:id)
|
|
91
|
+
* @param config - Route configuration including handler, schema, middleware
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const UserSchema = z.object({ name: z.string(), age: z.number() });
|
|
96
|
+
*
|
|
97
|
+
* app.get('/users/:id', {
|
|
98
|
+
* handler: async (c) => {
|
|
99
|
+
* const id = c.req.param('id');
|
|
100
|
+
* return { id, name: 'John', age: 30 };
|
|
101
|
+
* },
|
|
102
|
+
* schema: {
|
|
103
|
+
* params: z.object({ id: z.string() })
|
|
104
|
+
* },
|
|
105
|
+
* docs: {
|
|
106
|
+
* summary: 'Get user by ID',
|
|
107
|
+
* tags: ['users']
|
|
108
|
+
* }
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
get(path: string, config: RouteConfig): void;
|
|
113
|
+
/**
|
|
114
|
+
* Register a POST route using functional API
|
|
115
|
+
*
|
|
116
|
+
* @param path - The route path
|
|
117
|
+
* @param config - Route configuration including handler, schema, middleware
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const CreateUserSchema = z.object({
|
|
122
|
+
* name: z.string(),
|
|
123
|
+
* email: z.string().email()
|
|
124
|
+
* });
|
|
125
|
+
*
|
|
126
|
+
* app.post('/users', {
|
|
127
|
+
* handler: async (c) => {
|
|
128
|
+
* const body = await c.req.json();
|
|
129
|
+
* return { id: 1, ...body };
|
|
130
|
+
* },
|
|
131
|
+
* schema: {
|
|
132
|
+
* body: CreateUserSchema
|
|
133
|
+
* }
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
post(path: string, config: RouteConfig): void;
|
|
138
|
+
/**
|
|
139
|
+
* Register a PUT route
|
|
140
|
+
*/
|
|
141
|
+
put(path: string, config: RouteConfig): void;
|
|
142
|
+
/**
|
|
143
|
+
* Register a DELETE route
|
|
144
|
+
*/
|
|
145
|
+
delete(path: string, config: RouteConfig): void;
|
|
146
|
+
/**
|
|
147
|
+
* Register a PATCH route
|
|
148
|
+
*/
|
|
149
|
+
patch(path: string, config: RouteConfig): void;
|
|
150
|
+
/**
|
|
151
|
+
* Create a route builder for chaining methods
|
|
152
|
+
*/
|
|
153
|
+
route(path: string): RouteBuilder;
|
|
154
|
+
/**
|
|
155
|
+
* Create a route group with a common prefix
|
|
156
|
+
*/
|
|
157
|
+
group(prefix: string, callback: () => void): void;
|
|
158
|
+
/**
|
|
159
|
+
* Internal method to register functional routes
|
|
160
|
+
*/
|
|
161
|
+
private registerFunctionalRoute;
|
|
162
|
+
/**
|
|
163
|
+
* Extract parameter metadata from schema config
|
|
164
|
+
* For functional API, parameters start at index 0 since context is passed separately
|
|
165
|
+
*/
|
|
166
|
+
private extractParametersFromSchema;
|
|
167
|
+
/**
|
|
168
|
+
* Add global middleware to the application
|
|
169
|
+
*/
|
|
170
|
+
use(middleware: Middleware): void;
|
|
171
|
+
/**
|
|
172
|
+
* Configure CORS middleware
|
|
173
|
+
* Supports origin, methods, headers configuration and handles preflight requests
|
|
174
|
+
*/
|
|
175
|
+
useCors(options?: CorsOptions): void;
|
|
176
|
+
/**
|
|
177
|
+
* Configure rate limiting middleware
|
|
178
|
+
* Tracks requests per IP/key and returns 429 when limit exceeded
|
|
179
|
+
*/
|
|
180
|
+
useRateLimit(options: RateLimitOptions): void;
|
|
181
|
+
/**
|
|
182
|
+
* Configure compression middleware
|
|
183
|
+
* Compresses responses with gzip/brotli based on configuration
|
|
184
|
+
*/
|
|
185
|
+
useCompression(options?: CompressionOptions): void;
|
|
186
|
+
/**
|
|
187
|
+
* Register a plugin with the application
|
|
188
|
+
* Plugins are installed during compilation in dependency order
|
|
189
|
+
* @param plugin - The plugin to register
|
|
190
|
+
*/
|
|
191
|
+
usePlugin(plugin: Plugin): void;
|
|
192
|
+
/**
|
|
193
|
+
* Get the plugin manager instance
|
|
194
|
+
* @returns The PluginManager instance
|
|
195
|
+
*/
|
|
196
|
+
getPluginManager(): PluginManager;
|
|
197
|
+
/**
|
|
198
|
+
* Set a custom error handler for the application
|
|
199
|
+
* This allows users to override the default error handling behavior
|
|
200
|
+
* @param handler - Custom error handling function
|
|
201
|
+
*/
|
|
202
|
+
onError(handler: CustomErrorHandler): void;
|
|
203
|
+
/**
|
|
204
|
+
* Get the error handler instance
|
|
205
|
+
* @returns The ErrorHandler instance
|
|
206
|
+
*/
|
|
207
|
+
getErrorHandler(): ErrorHandler;
|
|
208
|
+
/**
|
|
209
|
+
* Normalize path by combining segments and ensuring proper format
|
|
210
|
+
*/
|
|
211
|
+
private normalizePath;
|
|
212
|
+
/**
|
|
213
|
+
* Get the underlying Hono instance
|
|
214
|
+
*/
|
|
215
|
+
getHono(): Hono;
|
|
216
|
+
/**
|
|
217
|
+
* Get the metadata registry
|
|
218
|
+
*/
|
|
219
|
+
getMetadata(): MetadataRegistry;
|
|
220
|
+
/**
|
|
221
|
+
* Get the DI container
|
|
222
|
+
*/
|
|
223
|
+
getContainer(): DIContainer;
|
|
224
|
+
/**
|
|
225
|
+
* Get the application configuration
|
|
226
|
+
*/
|
|
227
|
+
getConfig(): VeloceTSConfig;
|
|
228
|
+
/**
|
|
229
|
+
* Check if routes have been compiled
|
|
230
|
+
*/
|
|
231
|
+
isCompiled(): boolean;
|
|
232
|
+
/**
|
|
233
|
+
* Mark routes as compiled
|
|
234
|
+
*/
|
|
235
|
+
markCompiled(): void;
|
|
236
|
+
/**
|
|
237
|
+
* Compile all registered routes into the Hono router
|
|
238
|
+
* This must be called before the application can handle requests
|
|
239
|
+
* Installs plugins before compiling routes
|
|
240
|
+
*/
|
|
241
|
+
compile(): Promise<void>;
|
|
242
|
+
/**
|
|
243
|
+
* Start the server and listen on the specified port
|
|
244
|
+
* Automatically compiles routes if not already compiled
|
|
245
|
+
* Delegates to the configured adapter for runtime-specific server implementation
|
|
246
|
+
*/
|
|
247
|
+
listen(port: number, callback?: () => void): Promise<any>;
|
|
248
|
+
/**
|
|
249
|
+
* Create the appropriate adapter based on configuration
|
|
250
|
+
* @private
|
|
251
|
+
*/
|
|
252
|
+
private createAdapter;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Route builder for chaining HTTP methods
|
|
256
|
+
*/
|
|
257
|
+
declare class RouteBuilder {
|
|
258
|
+
private app;
|
|
259
|
+
private path;
|
|
260
|
+
constructor(app: VeloceTS, path: string);
|
|
261
|
+
get(config: RouteConfig): RouteBuilder;
|
|
262
|
+
post(config: RouteConfig): RouteBuilder;
|
|
263
|
+
put(config: RouteConfig): RouteBuilder;
|
|
264
|
+
delete(config: RouteConfig): RouteBuilder;
|
|
265
|
+
patch(config: RouteConfig): RouteBuilder;
|
|
266
|
+
}
|
|
267
|
+
export {};
|
|
268
|
+
//# sourceMappingURL=application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../src/core/application.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { RouteMetadata } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Compiled route metadata with pre-computed values for performance
|
|
4
|
+
*/
|
|
5
|
+
export interface CompiledRouteMetadata extends RouteMetadata {
|
|
6
|
+
pathRegex?: RegExp;
|
|
7
|
+
parameterOrder: number[];
|
|
8
|
+
dependencyOrder: number[];
|
|
9
|
+
maxArgumentIndex: number;
|
|
10
|
+
hasBody: boolean;
|
|
11
|
+
hasQuery: boolean;
|
|
12
|
+
hasParams: boolean;
|
|
13
|
+
hasHeaders: boolean;
|
|
14
|
+
hasCookies: boolean;
|
|
15
|
+
hasDependencies: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* MetadataCompiler pre-processes route metadata for optimal runtime performance
|
|
19
|
+
* This reduces the work needed during request processing
|
|
20
|
+
*/
|
|
21
|
+
export declare class MetadataCompiler {
|
|
22
|
+
/**
|
|
23
|
+
* Compile a route metadata object into an optimized version
|
|
24
|
+
* Pre-computes regex patterns, parameter order, and other expensive operations
|
|
25
|
+
*/
|
|
26
|
+
static compile(route: RouteMetadata): CompiledRouteMetadata;
|
|
27
|
+
/**
|
|
28
|
+
* Compile path pattern into a regex for efficient matching
|
|
29
|
+
* Converts FastAPI-style {param} to regex capture groups
|
|
30
|
+
*/
|
|
31
|
+
private static compilePathRegex;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the order of parameters by their indices
|
|
34
|
+
* Returns sorted array of indices for efficient iteration
|
|
35
|
+
*/
|
|
36
|
+
private static resolveParameterOrder;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the order of dependencies by their indices
|
|
39
|
+
* Returns sorted array of indices for efficient iteration
|
|
40
|
+
*/
|
|
41
|
+
private static resolveDependencyOrder;
|
|
42
|
+
/**
|
|
43
|
+
* Calculate the maximum argument index to determine array size
|
|
44
|
+
* This allows pre-allocation of the arguments array
|
|
45
|
+
*/
|
|
46
|
+
private static calculateMaxArgumentIndex;
|
|
47
|
+
/**
|
|
48
|
+
* Pre-compute flags for parameter types to avoid repeated checks
|
|
49
|
+
* These flags enable quick conditional logic during request processing
|
|
50
|
+
*/
|
|
51
|
+
private static computeParameterFlags;
|
|
52
|
+
/**
|
|
53
|
+
* Batch compile multiple routes for efficiency
|
|
54
|
+
* Useful when compiling all routes at application startup
|
|
55
|
+
*/
|
|
56
|
+
static compileAll(routes: RouteMetadata[]): CompiledRouteMetadata[];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=compiled-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiled-metadata.d.ts","sourceRoot":"","sources":["../../../src/core/compiled-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAE1D,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,cAAc,EAAE,MAAM,EAAE,CAAC;IAGzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAG1B,gBAAgB,EAAE,MAAM,CAAC;IAGzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,qBAAqB;IA6B3D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgB/B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAYrC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAmBxC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA6BpC;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,qBAAqB,EAAE;CAGpE"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { RouteMetadata, ParameterMetadata, DependencyMetadata, ControllerMetadata, Class, WebSocketMetadata, WebSocketHandlerMetadata, GraphQLResolverMetadata, GraphQLFieldMetadata } from '../types';
|
|
3
|
+
export declare class MetadataRegistry {
|
|
4
|
+
private routes;
|
|
5
|
+
private controllers;
|
|
6
|
+
private routesByController;
|
|
7
|
+
private websockets;
|
|
8
|
+
private graphqlResolvers;
|
|
9
|
+
private graphqlFields;
|
|
10
|
+
/**
|
|
11
|
+
* Register a route in the registry
|
|
12
|
+
*/
|
|
13
|
+
registerRoute(metadata: RouteMetadata): void;
|
|
14
|
+
/**
|
|
15
|
+
* Register a controller in the registry
|
|
16
|
+
*/
|
|
17
|
+
registerController(target: Class, metadata: ControllerMetadata): void;
|
|
18
|
+
/**
|
|
19
|
+
* Get all registered routes
|
|
20
|
+
*/
|
|
21
|
+
getRoutes(): RouteMetadata[];
|
|
22
|
+
/**
|
|
23
|
+
* Get a specific route by target and property key
|
|
24
|
+
*/
|
|
25
|
+
getRoute(target: Class, propertyKey: string): RouteMetadata | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Get all routes for a specific controller
|
|
28
|
+
*/
|
|
29
|
+
getRoutesByController(target: Class): RouteMetadata[];
|
|
30
|
+
/**
|
|
31
|
+
* Get controller metadata
|
|
32
|
+
*/
|
|
33
|
+
getController(target: Class): ControllerMetadata | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Get all registered controllers
|
|
36
|
+
*/
|
|
37
|
+
getControllers(): Map<Class, ControllerMetadata>;
|
|
38
|
+
/**
|
|
39
|
+
* Register a WebSocket handler in the registry
|
|
40
|
+
*/
|
|
41
|
+
registerWebSocket(metadata: WebSocketMetadata): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get all registered WebSocket handlers
|
|
44
|
+
*/
|
|
45
|
+
getWebSockets(): WebSocketMetadata[];
|
|
46
|
+
/**
|
|
47
|
+
* Get WebSocket metadata for a specific target
|
|
48
|
+
*/
|
|
49
|
+
getWebSocket(target: Class): WebSocketMetadata | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Register a GraphQL resolver in the registry
|
|
52
|
+
*/
|
|
53
|
+
registerGraphQLResolver(metadata: GraphQLResolverMetadata): void;
|
|
54
|
+
/**
|
|
55
|
+
* Register a GraphQL field in the registry
|
|
56
|
+
*/
|
|
57
|
+
registerGraphQLField(metadata: GraphQLFieldMetadata): void;
|
|
58
|
+
/**
|
|
59
|
+
* Get all registered GraphQL resolvers
|
|
60
|
+
*/
|
|
61
|
+
getGraphQLResolvers(): GraphQLResolverMetadata[];
|
|
62
|
+
/**
|
|
63
|
+
* Get GraphQL resolver metadata for a specific target
|
|
64
|
+
*/
|
|
65
|
+
getGraphQLResolver(target: Class): GraphQLResolverMetadata | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Get all GraphQL fields
|
|
68
|
+
*/
|
|
69
|
+
getGraphQLFields(): GraphQLFieldMetadata[];
|
|
70
|
+
/**
|
|
71
|
+
* Get GraphQL fields for a specific resolver
|
|
72
|
+
*/
|
|
73
|
+
getGraphQLFieldsByResolver(target: Class): GraphQLFieldMetadata[];
|
|
74
|
+
/**
|
|
75
|
+
* Clear all metadata (useful for testing)
|
|
76
|
+
*/
|
|
77
|
+
clear(): void;
|
|
78
|
+
/**
|
|
79
|
+
* Generate a unique key for a route
|
|
80
|
+
*/
|
|
81
|
+
private getRouteKey;
|
|
82
|
+
/**
|
|
83
|
+
* Define route metadata using reflect-metadata (used by decorators)
|
|
84
|
+
*/
|
|
85
|
+
static defineRoute(target: any, propertyKey: string, metadata: Partial<RouteMetadata>): void;
|
|
86
|
+
/**
|
|
87
|
+
* Define parameter metadata (used by parameter decorators)
|
|
88
|
+
*/
|
|
89
|
+
static defineParameter(target: any, propertyKey: string, index: number, metadata: ParameterMetadata): void;
|
|
90
|
+
/**
|
|
91
|
+
* Define dependency metadata (used by @Depends decorator)
|
|
92
|
+
*/
|
|
93
|
+
static defineDependency(target: any, propertyKey: string, index: number, metadata: DependencyMetadata): void;
|
|
94
|
+
/**
|
|
95
|
+
* Define controller metadata (used by @Controller decorator)
|
|
96
|
+
*/
|
|
97
|
+
static defineController(target: any, metadata: ControllerMetadata): void;
|
|
98
|
+
/**
|
|
99
|
+
* Get route metadata from reflect-metadata
|
|
100
|
+
*/
|
|
101
|
+
static getRouteMetadata(target: any, propertyKey: string): Partial<RouteMetadata> | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Get parameter metadata from reflect-metadata
|
|
104
|
+
*/
|
|
105
|
+
static getParameterMetadata(target: any, propertyKey: string): ParameterMetadata[] | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Get dependency metadata from reflect-metadata
|
|
108
|
+
*/
|
|
109
|
+
static getDependencyMetadata(target: any, propertyKey: string): DependencyMetadata[] | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Get controller metadata from reflect-metadata
|
|
112
|
+
*/
|
|
113
|
+
static getControllerMetadata(target: any): ControllerMetadata | undefined;
|
|
114
|
+
/**
|
|
115
|
+
* Check if a class has controller metadata
|
|
116
|
+
*/
|
|
117
|
+
static hasControllerMetadata(target: any): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a method has route metadata
|
|
120
|
+
*/
|
|
121
|
+
static hasRouteMetadata(target: any, propertyKey: string): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Get all route methods from a controller class
|
|
124
|
+
*/
|
|
125
|
+
static getRouteMethods(target: Class): string[];
|
|
126
|
+
/**
|
|
127
|
+
* Define WebSocket metadata (used by @WebSocket decorator)
|
|
128
|
+
*/
|
|
129
|
+
static defineWebSocket(target: any, metadata: Partial<WebSocketMetadata>): void;
|
|
130
|
+
/**
|
|
131
|
+
* Define WebSocket handler metadata (used by @OnConnect, @OnMessage, @OnDisconnect)
|
|
132
|
+
*/
|
|
133
|
+
static defineWebSocketHandler(target: any, propertyKey: string, metadata: WebSocketHandlerMetadata): void;
|
|
134
|
+
/**
|
|
135
|
+
* Get WebSocket metadata from reflect-metadata
|
|
136
|
+
*/
|
|
137
|
+
static getWebSocketMetadata(target: any): Partial<WebSocketMetadata> | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Get WebSocket handler metadata from reflect-metadata
|
|
140
|
+
*/
|
|
141
|
+
static getWebSocketHandlerMetadata(target: any, propertyKey: string): WebSocketHandlerMetadata | undefined;
|
|
142
|
+
/**
|
|
143
|
+
* Check if a class has WebSocket metadata
|
|
144
|
+
*/
|
|
145
|
+
static hasWebSocketMetadata(target: any): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Define GraphQL resolver metadata (used by @Resolver decorator)
|
|
148
|
+
*/
|
|
149
|
+
static defineGraphQLResolver(target: any, metadata: GraphQLResolverMetadata): void;
|
|
150
|
+
/**
|
|
151
|
+
* Define GraphQL field metadata (used by @Query, @Mutation, @Subscription decorators)
|
|
152
|
+
*/
|
|
153
|
+
static defineGraphQLField(target: any, propertyKey: string, metadata: GraphQLFieldMetadata): void;
|
|
154
|
+
/**
|
|
155
|
+
* Get GraphQL resolver metadata from reflect-metadata
|
|
156
|
+
*/
|
|
157
|
+
static getGraphQLResolverMetadata(target: any): GraphQLResolverMetadata | undefined;
|
|
158
|
+
/**
|
|
159
|
+
* Get all GraphQL fields metadata from a resolver class
|
|
160
|
+
*/
|
|
161
|
+
static getGraphQLFieldsMetadata(target: any): GraphQLFieldMetadata[];
|
|
162
|
+
/**
|
|
163
|
+
* Get GraphQL field metadata from a specific method
|
|
164
|
+
*/
|
|
165
|
+
static getGraphQLFieldMetadata(target: any, propertyKey: string): GraphQLFieldMetadata | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* Check if a class has GraphQL resolver metadata
|
|
168
|
+
*/
|
|
169
|
+
static hasGraphQLResolverMetadata(target: any): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Check if a method has GraphQL field metadata
|
|
172
|
+
*/
|
|
173
|
+
static hasGraphQLFieldMetadata(target: any, propertyKey: string): boolean;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=metadata.d.ts.map
|