quantum-flow 1.12.3 → 1.15.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.
Files changed (62) hide show
  1. package/README.md +118 -17
  2. package/dist/app/aws/lambda.d.ts +11 -4
  3. package/dist/app/aws/lambda.js +43 -18
  4. package/dist/app/aws/lambda.js.map +1 -1
  5. package/dist/app/aws/utils/request.d.ts +2 -2
  6. package/dist/app/aws/utils/response.d.ts +3 -2
  7. package/dist/app/aws/utils/response.js +1 -1
  8. package/dist/app/aws/utils/response.js.map +1 -1
  9. package/dist/app/http/Application.d.ts +12 -4
  10. package/dist/app/http/Application.js +67 -26
  11. package/dist/app/http/Application.js.map +1 -1
  12. package/dist/app/plugin.d.ts +8 -0
  13. package/dist/app/plugin.js +43 -0
  14. package/dist/app/plugin.js.map +1 -0
  15. package/dist/constants.d.ts +8 -0
  16. package/dist/constants.js +9 -1
  17. package/dist/constants.js.map +1 -1
  18. package/dist/core/Controller.js +3 -1
  19. package/dist/core/Controller.js.map +1 -1
  20. package/dist/core/Endpoint.d.ts +2 -2
  21. package/dist/core/Endpoint.js +4 -4
  22. package/dist/graphql/decorators.d.ts +49 -0
  23. package/dist/graphql/decorators.js +100 -0
  24. package/dist/graphql/decorators.js.map +1 -0
  25. package/dist/graphql/index.d.ts +2 -0
  26. package/dist/graphql/index.js +18 -0
  27. package/dist/graphql/index.js.map +1 -0
  28. package/dist/graphql/module.d.ts +15 -0
  29. package/dist/graphql/module.js +190 -0
  30. package/dist/graphql/module.js.map +1 -0
  31. package/dist/plugins/aws.d.ts +1 -0
  32. package/dist/plugins/aws.js +3 -0
  33. package/dist/plugins/aws.js.map +1 -0
  34. package/dist/plugins/http.d.ts +1 -0
  35. package/dist/plugins/http.js +3 -0
  36. package/dist/plugins/http.js.map +1 -0
  37. package/dist/types/common.d.ts +1 -1
  38. package/dist/types/common.js +1 -1
  39. package/dist/types/graphql.d.ts +38 -0
  40. package/dist/types/graphql.js +3 -0
  41. package/dist/types/graphql.js.map +1 -0
  42. package/dist/types/http.d.ts +37 -1
  43. package/dist/types/index.d.ts +2 -0
  44. package/dist/types/index.js +2 -0
  45. package/dist/types/index.js.map +1 -1
  46. package/dist/types/lambda.d.ts +38 -1
  47. package/dist/types/plugins.d.ts +30 -0
  48. package/dist/types/plugins.js +3 -0
  49. package/dist/types/plugins.js.map +1 -0
  50. package/dist/utils/controller.js +5 -6
  51. package/dist/utils/controller.js.map +1 -1
  52. package/dist/utils/endpoint.d.ts +1 -0
  53. package/dist/utils/endpoint.js +15 -0
  54. package/dist/utils/endpoint.js.map +1 -1
  55. package/dist/utils/graphql.d.ts +1 -0
  56. package/dist/utils/graphql.js +3 -0
  57. package/dist/utils/graphql.js.map +1 -0
  58. package/dist/utils/helper.d.ts +1 -0
  59. package/dist/utils/helper.js +4 -0
  60. package/dist/utils/helper.js.map +1 -1
  61. package/dist/utils/server.js.map +1 -1
  62. package/package.json +18 -1
package/README.md CHANGED
@@ -23,6 +23,9 @@ You can use controllers and server functionality by importing controllers and cr
23
23
  - `quantum-flow/middlewares` - Core middlewares to use within the application.
24
24
  - `quantum-flow/ws` - Websocket decorators.
25
25
  - `quantum-flow/sse` - Server side events decorators.
26
+ - `quantum-flow/plugins/aws` - Exports plugins types for lambda.
27
+ - `quantum-flow/plugins/http` - Exports plugins types for http server.
28
+ - `quantum-flow/graphql` - Graphql components.
26
29
 
27
30
  ---
28
31
 
@@ -42,7 +45,7 @@ import {
42
45
  Request,
43
46
  Response,
44
47
  Status,
45
- USE,
48
+ ANY,
46
49
  } from 'quantum-flow/core';
47
50
  import {IsString} from 'class-validator'
48
51
  import { Catch, Cors, Sanitize, Use, SANITIZER } from 'quantum-flow/middlewares';
@@ -86,7 +89,7 @@ export class User {
86
89
  ) {
87
90
  }
88
91
 
89
- @USE([...middlewares])
92
+ @ANY([...middlewares])
90
93
  async any(@Response() resp: any) {
91
94
  ...
92
95
  }
@@ -156,14 +159,11 @@ let dbConnection = null;
156
159
  prefix: 'api',
157
160
  controllers: [UserController, SocketController],
158
161
  })
159
- class RootController {
160
- async beforeStart(){
161
- if(!dbConnection){
162
- connection = await connect()
163
- }
164
- }
165
- }
166
- export const handler = LambdaAdapter.createHandler(RootController);
162
+ class RootController {}
163
+ const lambdaAdapter = new LambdaAdapter(Root);
164
+ lambdaAdapter.usePlugin(metricsPlugin);
165
+
166
+ export const handler = lambdaAdapter.handler;
167
167
  ```
168
168
 
169
169
  # WebSocket Support
@@ -396,12 +396,113 @@ const server = new HttpServer(App);
396
396
  server.listen().catch(console.error);
397
397
  ```
398
398
 
399
- ## Summary
399
+ ## Custom plugins.
400
+
401
+ Use plugins to extend app with custom logic.
402
+
403
+ Example server setup:
404
+
405
+ ```typescript
406
+ import { Server, HttpServer } from 'quantum-flow/http';
407
+ import { User, UserMetadata } from './controllers';
408
+ import client from 'prom-client';
409
+
410
+ const register = new client.Registry();
411
+ client.collectDefaultMetrics({ register });
412
+
413
+ const httpRequestsTotal = new client.Counter({
414
+ name: 'http_requests_total',
415
+ help: 'Total number of HTTP requests',
416
+ labelNames: ['method', 'path', 'status'],
417
+ });
418
+
419
+ @Controller({ prefix: 'metrics' })
420
+ export class MetricsController {...}
421
+ @Server({...})
422
+ class App {}
423
+
424
+ const server = new HttpServer(App);
425
+ server.usePlugun(metricsPlugin)
426
+ server.listen().catch(console.error);
427
+
428
+ let connection;
429
+ const dbConnectionPlugin: Plugin = {
430
+ name: 'metric',
431
+ beforeRequest: async(server) => {
432
+ if(!connection){
433
+ connection = await connetct(...)
434
+ }
435
+ },
436
+ hooks: {...},
437
+ };
400
438
 
401
- - Use `@Controller` with `prefix` and `controllers` to organize your API.
402
- - Use `@InjectSSE` to create SSE connections in controller methods.
403
- - Use the SSE service's `send` method to push events to clients.
404
- - Use `@OnSSEConnection`, `@OnSSEError`, and `@OnSSEClose` decorators to handle SSE lifecycle events.
405
- - Enable SSE in your server configuration and register SSE controllers.
439
+ const lambdaAdapter = new LambdaAdapter(Root);
440
+ lambdaAdapter.usePlugin(dbConnectionPlugin);
441
+
442
+ export const handler = lambdaAdapter.handler;
443
+ ```
444
+
445
+ # Using GraphQL Decorators
446
+
447
+ This project provides a set of decorators to define GraphQL schema and resolvers in a declarative way using TypeScript decorators.
448
+
449
+ ### Available Decorators
450
+
451
+ - `@ObjectType(name?: string)`: Class decorator to define a GraphQL ObjectType.
452
+ - `@InputType(name?: string)`: Class decorator to define a GraphQL InputType.
453
+ - `@Field(type?)`: Property decorator to define a GraphQL field with optional type or nullable option.
454
+ - `@Arg(name?, type?, options?)`: Parameter decorator to define GraphQL arguments for resolver methods.
455
+ - `@Query(returnType?)`: Method decorator to define a GraphQL query resolver.
456
+ - `@Mutation(returnType?)`: Method decorator to define a GraphQL mutation resolver.
457
+ - `@Subscription(returnType?)`: Method decorator to define a GraphQL subscription resolver.
458
+ - `@Resolver()`: Class decorator to mark a class as a GraphQL resolver.
459
+
460
+ ### Example Usage
461
+
462
+ ```typescript
463
+ import { Controller } from 'quantum-flow/core';
464
+ import { Arg, Field, InputType, Mutation, ObjectType, Query } from 'quantum-flow/graphql';
465
+
466
+ @ObjectType('User')
467
+ class User {
468
+ @Field() id: string;
469
+ @Field() name: string;
470
+ @Field() email: string;
471
+ @Field({ nullable: true }) bio?: string;
472
+ @Field(() => [String]) roles: string[];
473
+ }
474
+
475
+ @InputType('CreateUserInput')
476
+ class CreateUserInput {
477
+ @Field() name: string;
478
+ @Field() email: string;
479
+ @Field({ nullable: true }) bio?: string;
480
+ @Field(() => [String]) roles?: string[];
481
+ }
482
+
483
+ @Controller('/graphql')
484
+ export class GraphQlController {
485
+ private users: User[] = [
486
+ /* initial users */
487
+ ];
488
+
489
+ @Query(User)
490
+ async getUser(@Arg('id', String, { required: true }) id: string) {
491
+ // implementation
492
+ }
493
+
494
+ @Query(() => [User])
495
+ async getUsers() {
496
+ // implementation
497
+ }
498
+
499
+ @Mutation(User)
500
+ async createUser(@Arg('input', CreateUserInput, { required: true }) input: CreateUserInput) {
501
+ // implementation
502
+ }
503
+
504
+ // Additional queries and mutations...
505
+ }
506
+ ```
406
507
 
407
- This setup allows you to build real-time, event-driven APIs using Server-Sent Events in a clean and modular way.
508
+ This example demonstrates how to define GraphQL types and resolvers using decorators, enabling a clean and declarative schema definition.
@@ -1,6 +1,13 @@
1
+ import { ControllerClass, ILambdaAdapter, LambdaPlugin } from '../../types/index.js';
1
2
  import { Handler } from 'aws-lambda';
2
- export declare class LambdaAdapter {
3
- static createHandler(Controller: any): Handler;
4
- private static toLambdaResponse;
5
- private static handleError;
3
+ import { Plugin } from '../plugin';
4
+ export declare class LambdaAdapter extends Plugin implements ILambdaAdapter {
5
+ handler: Handler;
6
+ controllers: ControllerClass[];
7
+ plugins: LambdaPlugin[];
8
+ constructor(Controller: ControllerClass);
9
+ private createHandler;
10
+ private runControllers;
11
+ private toLambdaResponse;
12
+ private handleError;
6
13
  }
@@ -3,17 +3,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LambdaAdapter = void 0;
4
4
  const _constants_1 = require("../../constants.js");
5
5
  const _utils_1 = require("../../utils/index.js");
6
+ const plugin_1 = require("../plugin");
6
7
  const utils_1 = require("./utils");
7
- class LambdaAdapter {
8
- static createHandler(Controller) {
8
+ class LambdaAdapter extends plugin_1.Plugin {
9
+ handler;
10
+ controllers = [];
11
+ plugins = [];
12
+ constructor(Controller) {
13
+ super();
14
+ this.controllers.push(Controller);
15
+ this.handler = this.createHandler(Controller);
16
+ }
17
+ createHandler(Controller) {
9
18
  return async (event, context) => {
10
- const instance = new Controller();
11
- if (Object.hasOwn(instance, 'beforeStart')) {
12
- await instance.beforeStart?.();
13
- }
19
+ this.controllers.push(Controller);
20
+ await this.callPluginHook('beforeRequest', event, context);
14
21
  const eventType = (0, utils_1.getEventType)(event);
15
22
  const request = new utils_1.LRequest(event, context);
16
23
  const response = new utils_1.LResponse();
24
+ return this.runControllers({
25
+ context,
26
+ event,
27
+ eventType,
28
+ request,
29
+ response,
30
+ });
31
+ };
32
+ }
33
+ async runControllers(meta) {
34
+ const { request, response, eventType, event, context } = meta;
35
+ let processed;
36
+ for (const ControllerClass of this.controllers ?? []) {
37
+ const instance = new ControllerClass();
17
38
  try {
18
39
  const cors = Reflect.getMetadata(_constants_1.CORS_METADATA, instance);
19
40
  let handledCors = { permitted: true, continue: true };
@@ -29,22 +50,25 @@ class LambdaAdapter {
29
50
  if (typeof instance.handleRequest !== 'function') {
30
51
  throw new Error('Controller must have handleRequest method');
31
52
  }
32
- const { routeMatch, data } = await instance.handleRequest(request, response);
33
- if (!routeMatch) {
34
- response.statusCode = 404;
35
- return this.toLambdaResponse({ data: 'Route not found' }, request, response, eventType);
36
- }
37
- if ((0, _utils_1.getErrorType)(data).isError) {
38
- return this.handleError(data, event, context);
39
- }
40
- return this.toLambdaResponse(data, request, response, eventType);
53
+ await this.callPluginHook('beforeRoute', request, response);
54
+ processed = await instance.handleRequest(request, response);
55
+ if (processed.routeMatch)
56
+ break;
41
57
  }
42
58
  catch (error) {
43
59
  return this.handleError(error, event, context);
44
60
  }
45
- };
61
+ }
62
+ if (!processed?.routeMatch) {
63
+ response.statusCode = 404;
64
+ return this.toLambdaResponse({ data: 'Route not found' }, request, response, eventType);
65
+ }
66
+ if ((0, _utils_1.getErrorType)(processed?.data).isError) {
67
+ return this.handleError(processed?.data, event, context);
68
+ }
69
+ return this.toLambdaResponse(processed?.data, request, response, eventType);
46
70
  }
47
- static toLambdaResponse(data, request, response, eventType) {
71
+ toLambdaResponse(data, request, response, eventType) {
48
72
  const statusCode = data.status ?? response.statusCode ?? 200;
49
73
  const headers = {
50
74
  'Content-Type': 'application/json',
@@ -80,6 +104,7 @@ class LambdaAdapter {
80
104
  body: data.data ?? data.error,
81
105
  timestamp: new Date().toISOString(),
82
106
  };
107
+ this.callPluginHook('afterResponse', request, response);
83
108
  switch (eventType) {
84
109
  case 'rest':
85
110
  return { ...commonResponse, isBase64Encoded: false };
@@ -105,7 +130,7 @@ class LambdaAdapter {
105
130
  };
106
131
  }
107
132
  }
108
- static handleError(error, event, context) {
133
+ handleError(error, event, context) {
109
134
  let serialized = (0, _utils_1.serializeError)(error);
110
135
  const eventType = (0, utils_1.getEventType)(event);
111
136
  const statusCode = serialized.status || 500;
@@ -1 +1 @@
1
- {"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/app/aws/lambda.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/app/aws/lambda.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { HTTP_METHODS, LambdaEvent, MultipartFile } from '../../../types/index.js';
1
+ import { HTTP_METHODS, ILRequest, LambdaEvent, MultipartFile } from '../../../types/index.js';
2
2
  import { Context } from 'aws-lambda';
3
- export declare class LRequest {
3
+ export declare class LRequest implements ILRequest {
4
4
  requestUrl: URL;
5
5
  method: HTTP_METHODS;
6
6
  path?: string;
@@ -1,9 +1,10 @@
1
+ import { ILResponse } from '../../../types/index.js';
1
2
  import { ServerResponse } from 'http';
2
- export declare class LResponse {
3
+ export declare class LResponse implements ILResponse {
3
4
  private originalResponse?;
4
5
  private _statusCode;
5
6
  private _headers;
6
- private _body;
7
+ body: any;
7
8
  constructor(originalResponse?: ServerResponse | undefined);
8
9
  setHeader(name: string, value: string): void;
9
10
  set statusCode(code: number);
@@ -5,7 +5,7 @@ class LResponse {
5
5
  originalResponse;
6
6
  _statusCode = 200;
7
7
  _headers = {};
8
- _body = null;
8
+ body = null;
9
9
  constructor(originalResponse) {
10
10
  this.originalResponse = originalResponse;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/app/aws/utils/response.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAKA;IAJZ,WAAW,GAAW,GAAG,CAAC;IAC1B,QAAQ,GAA2B,EAAE,CAAC;IACtC,KAAK,GAAQ,IAAI,CAAC;IAE1B,YAAoB,gBAAiC;QAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;IAAG,CAAC;IAEzD,SAAS,CAAC,IAAY,EAAE,KAAa;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAY;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,MAAM,4CAA4C,CAAC;IACrD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AApCD,8BAoCC"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/app/aws/utils/response.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IAKA;IAJZ,WAAW,GAAW,GAAG,CAAC;IAC1B,QAAQ,GAA2B,EAAE,CAAC;IAC9C,IAAI,GAAQ,IAAI,CAAC;IAEjB,YAAoB,gBAAiC;QAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;IAAG,CAAC;IAEzD,SAAS,CAAC,IAAY,EAAE,KAAa;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAY;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,MAAM,4CAA4C,CAAC;IACrD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AApCD,8BAoCC"}
@@ -1,12 +1,19 @@
1
- import { ServerConfig } from '../../types/index.js';
1
+ import { ControllerType, HttpPlugin, IHttpServer, MiddlewareCB, ServerConfig } from '../../types/index.js';
2
2
  import http from 'http';
3
- export declare class HttpServer {
4
- private app;
3
+ import { GraphQLModule } from '../../graphql/module';
4
+ import { Plugin } from '../plugin';
5
+ export declare class HttpServer extends Plugin implements IHttpServer {
6
+ app: http.Server;
7
+ plugins: HttpPlugin[];
5
8
  private config;
6
9
  private isRunning;
7
10
  private sse?;
8
11
  private websocket?;
9
12
  private allControllers;
13
+ controllers: ControllerType[];
14
+ middlewares: MiddlewareCB[];
15
+ graphql?: GraphQLModule;
16
+ private graphqlHandler?;
10
17
  constructor(configOrClass: new (...args: any[]) => any);
11
18
  private logConfig;
12
19
  listen(port?: number, host?: string): Promise<http.Server>;
@@ -22,5 +29,6 @@ export declare class HttpServer {
22
29
  private runController;
23
30
  private sendResponse;
24
31
  private handleError;
25
- private setupStaticFiles;
32
+ private setupGraphQL;
33
+ use(middleware: MiddlewareCB): this;
26
34
  }
@@ -6,38 +6,52 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.HttpServer = void 0;
7
7
  const _constants_1 = require("../../constants.js");
8
8
  const _utils_1 = require("../../utils/index.js");
9
+ const graphql_yoga_1 = require("graphql-yoga");
9
10
  const http_1 = __importDefault(require("http"));
11
+ const module_1 = require("../../graphql/module");
10
12
  const server_1 = require("../../sse/server");
11
13
  const service_1 = require("../../sse/service");
12
14
  const server_2 = require("../../ws/server");
13
15
  const service_2 = require("../../ws/service");
14
- class HttpServer {
16
+ const plugin_1 = require("../plugin");
17
+ class HttpServer extends plugin_1.Plugin {
15
18
  app;
19
+ plugins = [];
16
20
  config;
17
21
  isRunning = false;
18
22
  sse;
19
23
  websocket;
20
24
  allControllers;
25
+ controllers = [];
26
+ middlewares = [];
27
+ graphql;
28
+ graphqlHandler;
21
29
  constructor(configOrClass) {
30
+ super();
22
31
  this.config = (0, _utils_1.resolveConfig)(configOrClass);
32
+ this.controllers = this.controllers.concat(this.config.controllers ?? []);
33
+ this.middlewares = this.middlewares.concat(this.config.middlewares ?? []);
34
+ this.allControllers = this.getAllControllers(this.controllers);
23
35
  const app = http_1.default.createServer(this.requestHandler.bind(this));
24
36
  for (const st of this.config.statics ?? []) {
25
37
  const staticMw = (0, _utils_1.staticMiddleware)(st.path, st.options);
26
- this.config.middlewares?.unshift(staticMw);
38
+ this.middlewares?.unshift(staticMw);
27
39
  }
28
- this.allControllers = this.getAllControllers(this.config.controllers);
29
- this.setupStaticFiles();
30
40
  if (this.config.websocket?.enabled) {
31
41
  this.websocket = new server_2.WebSocketServer(app, { path: this.config.websocket.path });
32
42
  this.websocket.registerControllers(this.allControllers);
33
43
  service_2.WebSocketService.getInstance().initialize(this.websocket);
34
44
  }
45
+ if (this.config.graphql?.enabled) {
46
+ this.setupGraphQL();
47
+ }
35
48
  if (this.config.sse?.enabled) {
36
49
  this.sse = new server_1.SSEServer();
37
50
  this.sse.registerControllers(this.allControllers);
38
51
  service_1.SSEService.getInstance().initialize(this.sse);
39
52
  }
40
53
  this.app = app;
54
+ console.log(this.controllers);
41
55
  this.logConfig();
42
56
  }
43
57
  logConfig() {
@@ -48,11 +62,12 @@ class HttpServer {
48
62
  ║ 📍 Host: ${this.config.host}
49
63
  ║ 🔌 Port: ${this.config.port}
50
64
  ║ 🔌 Websocket: ${!!this.config.websocket}
51
- ║ 🔧 Global Middlewares: ${this.config.middlewares?.length || 0}
65
+ ║ 🔧 Global Middlewares: ${this.middlewares?.length || 0}
52
66
  ║ 🔧 Error handler: ${!this.config.errorHandler}
53
67
  ║ 🎯 Global Interceptors: ${!!this.config.interceptor?.length}
54
68
  ║ 📦 Controllers: ${_constants_1.STATISTIC.controllers}
55
- ║ 📦 Routes: ${_constants_1.STATISTIC.routes}
69
+ ║ 📦 Routes: ${this.getAllControllers.length}
70
+ ║ 📦 Graphql handler: ${!!this.config?.graphql?.enabled}
56
71
  ╚════════════════════════════════════════╝
57
72
  `);
58
73
  }
@@ -63,7 +78,7 @@ class HttpServer {
63
78
  }
64
79
  const listenPort = port || this.config.port || 3000;
65
80
  const listenHost = host || this.config.host || 'localhost';
66
- return new Promise((resolve, reject) => {
81
+ return new Promise(async (resolve, reject) => {
67
82
  try {
68
83
  this.app.listen(listenPort, listenHost, () => {
69
84
  this.isRunning = true;
@@ -76,6 +91,7 @@ class HttpServer {
76
91
  `);
77
92
  resolve(this.app);
78
93
  });
94
+ await this.callPluginMethod('onStart', this.app);
79
95
  this.app.on('error', (error) => {
80
96
  console.error('❌ Server error:', error);
81
97
  reject(error);
@@ -102,7 +118,8 @@ class HttpServer {
102
118
  resolve();
103
119
  return;
104
120
  }
105
- this.app.close((err) => {
121
+ this.app.close(async (err) => {
122
+ await this.callPluginMethod('onStop', this.app);
106
123
  if (err) {
107
124
  reject(err);
108
125
  }
@@ -122,11 +139,17 @@ class HttpServer {
122
139
  async requestHandler(req, response) {
123
140
  const startTime = Date.now();
124
141
  let request;
142
+ try {
143
+ await this.callPluginHook('beforeRequest', req);
144
+ }
145
+ catch (data) {
146
+ return this.sendResponse(response, { status: 500, data }, startTime);
147
+ }
125
148
  try {
126
149
  request = await this.createRequest(req);
127
150
  }
128
151
  catch (err) {
129
- return this.sendResponse(response, { status: 500, message: err.message }, startTime);
152
+ return this.sendResponse(response, { status: 500, data: err.message }, startTime);
130
153
  }
131
154
  try {
132
155
  let handledCors = { permitted: true, continue: true };
@@ -134,18 +157,19 @@ class HttpServer {
134
157
  handledCors = (0, _utils_1.handleCORS)(request, response, this.config.cors);
135
158
  }
136
159
  if (!handledCors.permitted) {
137
- return this.sendResponse(response, { status: 403, message: 'CORS: Origin not allowed' }, startTime);
160
+ return this.sendResponse(response, { status: 403, message: 'CORS: Origin not allowed' }, startTime, request);
138
161
  }
139
162
  if (!handledCors.continue && handledCors.permitted) {
140
- return this.sendResponse(response, { status: 204 }, startTime);
163
+ return this.sendResponse(response, { status: 204 }, startTime, request);
141
164
  }
142
165
  await this.beforeRequest(request, response);
143
166
  if (response.headersSent) {
144
167
  return;
145
168
  }
169
+ await this.callPluginHook('beforeRoute', request, response);
146
170
  let controllerResponse = await this.runController(request, response);
147
171
  if (!controllerResponse.routeMatch) {
148
- return this.sendResponse(response, { status: 404, data: 'Route not found' }, Date.now());
172
+ return this.sendResponse(response, { status: 404, data: 'Route not found' }, Date.now(), request);
149
173
  }
150
174
  const isError = (0, _utils_1.getErrorType)(controllerResponse.data).isError || !_constants_1.OK_STATUSES.includes(response.statusCode);
151
175
  if (isError) {
@@ -154,7 +178,7 @@ class HttpServer {
154
178
  if (this.config.interceptor && controllerResponse) {
155
179
  controllerResponse.data = await this.config.interceptor(controllerResponse, request, response);
156
180
  }
157
- return this.sendResponse(response, { status: response.statusCode ?? 200, data: controllerResponse.data }, startTime);
181
+ return this.sendResponse(response, { status: response.statusCode ?? 200, data: controllerResponse.data }, startTime, request);
158
182
  }
159
183
  catch (error) {
160
184
  return this.handleError(error, request, response, startTime);
@@ -189,12 +213,12 @@ class HttpServer {
189
213
  }
190
214
  async beforeRequest(request, response) {
191
215
  (0, _utils_1.sanitizeRequest)(request, this.config.sanitizers ?? []);
192
- for (const middleware of this.config.middlewares?.reverse() || []) {
216
+ for (const middleware of this.middlewares?.reverse() || []) {
193
217
  await middleware(request, response, _utils_1.NextFN);
194
218
  }
195
219
  }
196
220
  async runController(request, response) {
197
- for (const ControllerClass of this.config.controllers || []) {
221
+ for (const ControllerClass of this.controllers ?? []) {
198
222
  const instance = new ControllerClass();
199
223
  if (typeof instance.handleRequest === 'function') {
200
224
  const handlerResponse = await instance.handleRequest(request, response);
@@ -205,7 +229,7 @@ class HttpServer {
205
229
  }
206
230
  return {};
207
231
  }
208
- async sendResponse(res, responseData, startTime) {
232
+ async sendResponse(res, responseData, startTime, appRequest) {
209
233
  if (res.headersSent)
210
234
  return;
211
235
  const { status, data } = responseData;
@@ -215,8 +239,10 @@ class HttpServer {
215
239
  res.setHeader('X-Response-Time', `${Date.now() - startTime}ms`);
216
240
  res.statusCode = status ?? data.status ?? 200;
217
241
  res.end(JSON.stringify(data));
242
+ await this.callPluginHook('afterResponse', appRequest, res);
218
243
  }
219
244
  async handleError(error, request, response, startTime) {
245
+ console.log(error);
220
246
  let serialized = (0, _utils_1.serializeError)(error);
221
247
  if (!this.config.errorHandler) {
222
248
  return this.sendResponse(response, { data: serialized }, startTime);
@@ -230,18 +256,33 @@ class HttpServer {
230
256
  serialized = data ?? serialized;
231
257
  }
232
258
  catch (cathed) { }
233
- return this.sendResponse(response, { data: serialized }, startTime);
259
+ return this.sendResponse(response, { data: serialized }, startTime, request);
234
260
  }
235
- setupStaticFiles() {
236
- const staticConfigs = [];
237
- for (const ControllerClass of this.allControllers) {
238
- // console.log(this.allControllers);
239
- const classStatic = Reflect.getMetadata(_constants_1.STATIC_METADATA_KEY, ControllerClass);
240
- if (classStatic) {
241
- staticConfigs.push(classStatic);
261
+ setupGraphQL() {
262
+ if (!this.config.graphql?.enabled)
263
+ return;
264
+ const graphqlModule = new module_1.GraphQLModule(this.allControllers);
265
+ const schema = graphqlModule.getSchema();
266
+ const yoga = (0, graphql_yoga_1.createYoga)({
267
+ schema,
268
+ context: (req) => ({ req }),
269
+ graphiql: !!this.config.graphql?.playground,
270
+ });
271
+ this.graphqlHandler = yoga;
272
+ this.use(async (req, res, next) => {
273
+ const path = this.config.graphql?.path ?? '/graphql';
274
+ console.log('========', req.requestUrl.pathname, this.config.graphql?.path);
275
+ if (req.requestUrl.pathname?.startsWith(path)) {
276
+ const reps = await this.graphqlHandler(req, res);
277
+ console.log('========', reps);
278
+ return;
242
279
  }
243
- }
244
- // console.log('aaaaaaaaaaaaaaaaaaddddddddd', staticConfigs, this.config.controllers);
280
+ return next();
281
+ });
282
+ }
283
+ use(middleware) {
284
+ this.middlewares.unshift(middleware);
285
+ return this;
245
286
  }
246
287
  }
247
288
  exports.HttpServer = HttpServer;
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../../src/app/http/Application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../../src/app/http/Application.ts"],"names":[],"mappings":"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"}