@adaas/a-server 0.0.28 → 0.0.30

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 (89) hide show
  1. package/dist/browser/index.d.mts +123 -69
  2. package/dist/browser/index.mjs +212 -70
  3. package/dist/browser/index.mjs.map +1 -1
  4. package/dist/node/controllers/A-EntityController/A-EntityController.component.d.mts +2 -5
  5. package/dist/node/controllers/A-EntityController/A-EntityController.component.d.ts +2 -5
  6. package/dist/node/controllers/A-EntityController/A-EntityController.component.js +66 -88
  7. package/dist/node/controllers/A-EntityController/A-EntityController.component.js.map +1 -1
  8. package/dist/node/controllers/A-EntityController/A-EntityController.component.mjs +67 -89
  9. package/dist/node/controllers/A-EntityController/A-EntityController.component.mjs.map +1 -1
  10. package/dist/node/controllers/A-ListingController/A-ListingController.component.js +20 -18
  11. package/dist/node/controllers/A-ListingController/A-ListingController.component.js.map +1 -1
  12. package/dist/node/controllers/A-ListingController/A-ListingController.component.mjs +20 -18
  13. package/dist/node/controllers/A-ListingController/A-ListingController.component.mjs.map +1 -1
  14. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.d.mts +0 -2
  15. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.d.ts +0 -2
  16. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.js +10 -1
  17. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.js.map +1 -1
  18. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.mjs +10 -1
  19. package/dist/node/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.mjs.map +1 -1
  20. package/dist/node/index.d.mts +3 -1
  21. package/dist/node/index.d.ts +3 -1
  22. package/dist/node/index.js +14 -0
  23. package/dist/node/index.mjs +2 -0
  24. package/dist/node/lib/A-Request/A-Request.helper.js +1 -1
  25. package/dist/node/lib/A-Request/A-Request.helper.js.map +1 -1
  26. package/dist/node/lib/A-Request/A-Request.helper.mjs +1 -1
  27. package/dist/node/lib/A-Request/A-Request.helper.mjs.map +1 -1
  28. package/dist/node/lib/A-Server/A-HttpServer.container.d.mts +4 -6
  29. package/dist/node/lib/A-Server/A-HttpServer.container.d.ts +4 -6
  30. package/dist/node/lib/A-ServerController/A-ServerController.component.js +17 -4
  31. package/dist/node/lib/A-ServerController/A-ServerController.component.js.map +1 -1
  32. package/dist/node/lib/A-ServerController/A-ServerController.component.mjs +17 -4
  33. package/dist/node/lib/A-ServerController/A-ServerController.component.mjs.map +1 -1
  34. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.d.mts +52 -28
  35. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.d.ts +52 -28
  36. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.js +117 -44
  37. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.js.map +1 -1
  38. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.mjs +118 -45
  39. package/dist/node/lib/A-ServerEntityList/A-EntityList.entity.mjs.map +1 -1
  40. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.d.mts +14 -6
  41. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.d.ts +14 -6
  42. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.js.map +1 -1
  43. package/dist/node/lib/A-ServerEntityList/A-EntityList.types.mjs.map +1 -1
  44. package/dist/node/lib/A-ServerEntityList/A-EntityListCacheState.context.d.mts +12 -0
  45. package/dist/node/lib/A-ServerEntityList/A-EntityListCacheState.context.d.ts +12 -0
  46. package/dist/node/lib/A-ServerEntityList/A-EntityListCacheState.context.js +25 -0
  47. package/dist/node/lib/A-ServerEntityList/A-EntityListCacheState.context.js.map +1 -0
  48. package/dist/node/lib/A-ServerEntityList/A-EntityListCacheState.context.mjs +24 -0
  49. package/dist/node/lib/A-ServerEntityList/A-EntityListCacheState.context.mjs.map +1 -0
  50. package/dist/node/lib/A-ServerEntityList/A-EntityListPagination.context.d.mts +18 -0
  51. package/dist/node/lib/A-ServerEntityList/A-EntityListPagination.context.d.ts +18 -0
  52. package/dist/node/lib/A-ServerEntityList/A-EntityListPagination.context.js +48 -0
  53. package/dist/node/lib/A-ServerEntityList/A-EntityListPagination.context.js.map +1 -0
  54. package/dist/node/lib/A-ServerEntityList/A-EntityListPagination.context.mjs +47 -0
  55. package/dist/node/lib/A-ServerEntityList/A-EntityListPagination.context.mjs.map +1 -0
  56. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.d.mts +6 -8
  57. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.d.ts +6 -8
  58. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.js +3 -4
  59. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.js.map +1 -1
  60. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.mjs +4 -5
  61. package/dist/node/lib/A-ServerLogger/A-ServerLogger.component.mjs.map +1 -1
  62. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.d.mts +0 -2
  63. package/dist/node/lib/A-ServerRouter/A-ServerRouter.component.d.ts +0 -2
  64. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.js +1 -1
  65. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.js.map +1 -1
  66. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.mjs +1 -1
  67. package/dist/node/middlewares/A-ServerCORS/A_ServerCORS.component.mjs.map +1 -1
  68. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.d.mts +1 -0
  69. package/dist/node/repositories/A-EntityRepository/A-EntityRepository.component.d.ts +1 -0
  70. package/examples/simple-server/components/Users.repository.ts +2 -2
  71. package/jest.config.ts +1 -0
  72. package/package.json +1 -1
  73. package/src/controllers/A-EntityController/A-EntityController.component.ts +69 -109
  74. package/src/controllers/A-ListingController/A-ListingController.component.ts +22 -20
  75. package/src/controllers/A-ServerHealthMonitor/A-ServerHealthMonitor.component.ts +11 -1
  76. package/src/index.ts +2 -0
  77. package/src/lib/A-Request/A-Request.helper.ts +1 -1
  78. package/src/lib/A-ServerController/A-ServerController.component.ts +17 -8
  79. package/src/lib/A-ServerEntityList/A-EntityList.entity.ts +159 -55
  80. package/src/lib/A-ServerEntityList/A-EntityList.types.ts +17 -7
  81. package/src/lib/A-ServerEntityList/A-EntityListCacheState.context.ts +27 -0
  82. package/src/lib/A-ServerEntityList/A-EntityListPagination.context.ts +48 -0
  83. package/src/lib/A-ServerLogger/A-ServerLogger.component.ts +3 -4
  84. package/src/middlewares/A-ServerCORS/A_ServerCORS.component.ts +1 -1
  85. package/tests/A-Server-CORS.test.ts +542 -0
  86. package/tests/A-Server-Entity.test.ts +205 -0
  87. package/tests/A-Server-Health.test.ts +89 -0
  88. package/tests/A-Server-Routes.test.ts +113 -0
  89. package/tests/A-ServerEntityList.test.ts +416 -0
@@ -1,15 +1,9 @@
1
- import { A_Error } from '@adaas/a-concept';
2
- import { A_Server } from '../A-Server/A-Server.context.js';
1
+ import { A_Error, A_Scope } from '@adaas/a-concept';
3
2
  import { A as A_Request } from '../../A-Request.entity-8_9MCXT2.js';
4
3
  import { A as A_Response } from '../../A-Response.entity-bjh6bofZ.js';
5
4
  import { A_HttpServerRequestContext } from '../A-Request/A-HttpServerRequest.context.js';
6
5
  import { A_Config } from '@adaas/a-utils/a-config';
7
6
  import { A_Logger } from '@adaas/a-utils/a-logger';
8
- import '../A-Server/A-Server.types.js';
9
- import '../A-ServerRoute/A-ServerRoute.entity.js';
10
- import '@adaas/a-utils/a-route';
11
- import '../A-ServerRoute/A-ServerRoute.types.js';
12
- import '../A-ServerRoute/A-ServerRoute.constants.js';
13
7
  import 'http';
14
8
  import '../A-Server/A-HttpServer.error.js';
15
9
  import '../A-Server/A-HttpServer.types.js';
@@ -18,6 +12,10 @@ import '../A-Request/A-Request.constants.js';
18
12
  import '../A-Request/A-Request.env.js';
19
13
  import '../A-Request/A-HttpRequestData.context.js';
20
14
  import '@adaas/a-utils/a-execution';
15
+ import '../A-ServerRoute/A-ServerRoute.entity.js';
16
+ import '@adaas/a-utils/a-route';
17
+ import '../A-ServerRoute/A-ServerRoute.types.js';
18
+ import '../A-ServerRoute/A-ServerRoute.constants.js';
21
19
  import 'stream';
22
20
  import '../A-Response/A-Response.constants.js';
23
21
  import '@adaas/a-utils/a-operation';
@@ -26,7 +24,7 @@ declare class A_ServerLogger extends A_Logger {
26
24
  protected config: A_Config<any>;
27
25
  logRequestFinish(request: A_Request, response: A_Response, context: A_HttpServerRequestContext): void;
28
26
  logResponseError(request: A_Request, response: A_Response, context: A_HttpServerRequestContext, error: A_Error): void;
29
- logStop(server: A_Server): void;
27
+ logStop(scope: A_Scope): void;
30
28
  serverReady(params: {
31
29
  port: number;
32
30
  app: {
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var aConcept = require('@adaas/a-concept');
4
- var AServer_context = require('@adaas/a-server/server/A-Server.context');
5
4
  var ARequest_entity = require('@adaas/a-server/request/A-Request.entity');
6
5
  var AResponse_entity = require('@adaas/a-server/response/A-Response.entity');
7
6
  var AResponse_constants = require('@adaas/a-server/response/A-Response.constants');
@@ -28,8 +27,8 @@ class A_ServerLogger extends aLogger.A_Logger {
28
27
  this.info("red", `Request ${request.method} ${request.url} errored with status ${response.statusCode} in ${context.processingTime ?? "N/A"}ms`);
29
28
  this.error(error);
30
29
  }
31
- logStop(server) {
32
- this.log("red", `Server ${server.name} stopped`);
30
+ logStop(scope) {
31
+ this.info("red", `Server ${scope.name} stopped`);
33
32
  }
34
33
  serverReady(params) {
35
34
  const processId = process.pid;
@@ -80,7 +79,7 @@ __decorateClass([
80
79
  name: aService.A_ServiceFeatures.onAfterStop,
81
80
  scope: [aService.A_Service]
82
81
  }),
83
- __decorateParam(0, aConcept.A_Inject(AServer_context.A_Server))
82
+ __decorateParam(0, aConcept.A_Inject(aConcept.A_Scope))
84
83
  ], A_ServerLogger.prototype, "logStop");
85
84
 
86
85
  exports.A_ServerLogger = A_ServerLogger;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/A-ServerLogger/A-ServerLogger.component.ts"],"names":["A_Logger","A_Feature","A_ResponseFeatures","A_Response","A_Request","A_HttpServerRequestContext","A_Error","A_ServiceFeatures","A_Service","A_Server"],"mappings":"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","file":"A-ServerLogger.component.js","sourcesContent":["import { A_Error, A_Feature, A_Inject, } from \"@adaas/a-concept\";\nimport { A_Server } from \"@adaas/a-server/server/A-Server.context\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_ResponseFeatures } from \"@adaas/a-server/response/A-Response.constants\";\nimport { A_HttpServerRequestContext } from \"@adaas/a-server/request/A-HttpServerRequest.context\";\nimport { A_Config } from \"@adaas/a-utils/a-config\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Service, A_ServiceFeatures } from \"@adaas/a-utils/a-service\";\n\n\nexport class A_ServerLogger extends A_Logger {\n\n protected declare config: A_Config<any>\n\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onSend,\n scope: [A_Response]\n })\n logRequestFinish(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n ) {\n\n this.info('green', `Request ${request.method} ${request.url} finished with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n }\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onError,\n scope: [A_Response]\n })\n logResponseError(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n @A_Inject(A_Error) error: A_Error,\n ) {\n this.info('red', `Request ${request.method} ${request.url} errored with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n this.error(error);\n }\n\n\n\n\n // @A_Feature.Extend({\n // name: A_ServiceFeatures.onAfterStart,\n // scope: [A_Service]\n // })\n // logStart(\n // @A_Inject(A_Service) container: A_Service,\n // ): void {\n // // this.serverReady({\n // // port: container.port,\n // // app: {\n // // name: container.name,\n // // }\n // // })\n // }\n\n\n\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onAfterStop,\n scope: [A_Service]\n })\n logStop(\n @A_Inject(A_Server) server: A_Server,\n ) {\n this.log('red', `Server ${server.name} stopped`);\n }\n\n\n\n\n serverReady(\n params: {\n port: number,\n\n app: {\n name: string,\n version?: string\n }\n }\n ) {\n const processId = process.pid;\n\n this.info('cyan',\n ` ${params.app.name} v${params.app.version || '0.0.1'} is running on port ${params.port}`,\n ` Process ID: ${processId}`,\n ` Open In Browser: http://localhost:${params.port}`,\n ``,\n `-------------------------------`,\n ` ==============================`,\n ` LISTENING... `,\n ` ==============================`\n );\n }\n\n\n /**\n * Displays a proxy routes \n * \n * @param params \n */\n proxy(\n params: {\n original: string,\n destination: string,\n }\n ) {\n console.log(`\\x1b[35m[${this.scope.name}] |${this.getTime()}| Proxy:\n${' '.repeat(this.scopeLength + 3)}| ${params.original} -> ${params.destination}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`);\n }\n\n}"]}
1
+ {"version":3,"sources":["../../../../src/lib/A-ServerLogger/A-ServerLogger.component.ts"],"names":["A_Logger","A_Feature","A_ResponseFeatures","A_Response","A_Request","A_HttpServerRequestContext","A_Error","A_ServiceFeatures","A_Service","A_Scope"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,uBAAuBA,gBAAA,CAAS;AAAA,EAUzC,gBAAA,CACyB,OAAA,EACC,QAAA,EACgB,OAAA,EACxC;AAEE,IAAA,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,CAAA,QAAA,EAAW,OAAA,CAAQ,MAAM,CAAA,CAAA,EAAI,OAAA,CAAQ,GAAG,CAAA,sBAAA,EAAyB,SAAS,UAAU,CAAA,IAAA,EAAO,OAAA,CAAQ,cAAA,IAAkB,KAAK,CAAA,EAAA,CAAI,CAAA;AAAA,EACrJ;AAAA,EAOA,gBAAA,CACyB,OAAA,EACC,QAAA,EACgB,OAAA,EACnB,KAAA,EACrB;AACE,IAAA,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,CAAA,QAAA,EAAW,OAAA,CAAQ,MAAM,CAAA,CAAA,EAAI,OAAA,CAAQ,GAAG,CAAA,qBAAA,EAAwB,SAAS,UAAU,CAAA,IAAA,EAAO,OAAA,CAAQ,cAAA,IAAkB,KAAK,CAAA,EAAA,CAAI,CAAA;AAC9I,IAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACpB;AAAA,EA2BA,QACuB,KAAA,EACrB;AACE,IAAA,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,CAAA,OAAA,EAAU,KAAA,CAAM,IAAI,CAAA,QAAA,CAAU,CAAA;AAAA,EACnD;AAAA,EAKA,YACI,MAAA,EAQF;AACE,IAAA,MAAM,YAAY,OAAA,CAAQ,GAAA;AAE1B,IAAA,IAAA,CAAK,IAAA;AAAA,MAAK,MAAA;AAAA,MACN,CAAA,CAAA,EAAI,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,EAAA,EAAK,MAAA,CAAO,GAAA,CAAI,OAAA,IAAW,OAAO,CAAA,oBAAA,EAAuB,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,MACvF,gBAAgB,SAAS,CAAA,CAAA;AAAA,MACzB,CAAA,mCAAA,EAAsC,OAAO,IAAI,CAAA,CAAA;AAAA,MACjD,CAAA,CAAA;AAAA,MACA,CAAA,+BAAA,CAAA;AAAA,MACA,CAAA,+BAAA,CAAA;AAAA,MACA,CAAA,4BAAA,CAAA;AAAA,MACA,CAAA,+BAAA;AAAA,KACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MACI,MAAA,EAIF;AACE,IAAA,OAAA,CAAQ,GAAA,CAAI,YAAY,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAA,EAAM,IAAA,CAAK,SAAS,CAAA;AAAA,EACjE,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,WAAA,GAAc,CAAC,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,QAAQ,CAAA,IAAA,EAAO,MAAA,CAAO,WAAW;AAAA,EAC7E,IAAI,MAAA,CAAO,IAAA,CAAK,WAAA,GAAc,CAAC,CAAC,CAAA,uCAAA,CAAyC,CAAA;AAAA,EACvE;AAEJ;AAnGI,eAAA,CAAA;AAAA,EAJCC,mBAAU,MAAA,CAAO;AAAA,IACd,MAAMC,sCAAA,CAAmB,MAAA;AAAA,IACzB,KAAA,EAAO,CAACC,2BAAU;AAAA,GACrB,CAAA;AAAA,EAEI,qCAASC,yBAAS,CAAA,CAAA;AAAA,EAClB,qCAASD,2BAAU,CAAA,CAAA;AAAA,EACnB,qCAASE,qDAA0B,CAAA;AAAA,CAAA,EAb/B,cAAA,CAUT,SAAA,EAAA,kBAAA,CAAA;AAcA,eAAA,CAAA;AAAA,EAJCJ,mBAAU,MAAA,CAAO;AAAA,IACd,MAAMC,sCAAA,CAAmB,OAAA;AAAA,IACzB,KAAA,EAAO,CAACC,2BAAU;AAAA,GACrB,CAAA;AAAA,EAEI,qCAASC,yBAAS,CAAA,CAAA;AAAA,EAClB,qCAASD,2BAAU,CAAA,CAAA;AAAA,EACnB,qCAASE,qDAA0B,CAAA,CAAA;AAAA,EACnC,qCAASC,gBAAO,CAAA;AAAA,CAAA,EA5BZ,cAAA,CAwBT,SAAA,EAAA,kBAAA,CAAA;AAmCA,eAAA,CAAA;AAAA,EAJCL,mBAAU,MAAA,CAAO;AAAA,IACd,MAAMM,0BAAA,CAAkB,WAAA;AAAA,IACxB,KAAA,EAAO,CAACC,kBAAS;AAAA,GACpB,CAAA;AAAA,EAEI,qCAASC,gBAAO,CAAA;AAAA,CAAA,EA5DZ,cAAA,CA2DT,SAAA,EAAA,SAAA,CAAA","file":"A-ServerLogger.component.js","sourcesContent":["import { A_Error, A_Feature, A_Inject, A_Scope, } from \"@adaas/a-concept\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_ResponseFeatures } from \"@adaas/a-server/response/A-Response.constants\";\nimport { A_HttpServerRequestContext } from \"@adaas/a-server/request/A-HttpServerRequest.context\";\nimport { A_Config } from \"@adaas/a-utils/a-config\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Service, A_ServiceFeatures } from \"@adaas/a-utils/a-service\";\n\n\nexport class A_ServerLogger extends A_Logger {\n\n protected declare config: A_Config<any>\n\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onSend,\n scope: [A_Response]\n })\n logRequestFinish(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n ) {\n\n this.info('green', `Request ${request.method} ${request.url} finished with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n }\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onError,\n scope: [A_Response]\n })\n logResponseError(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n @A_Inject(A_Error) error: A_Error,\n ) {\n this.info('red', `Request ${request.method} ${request.url} errored with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n this.error(error);\n }\n\n\n\n\n // @A_Feature.Extend({\n // name: A_ServiceFeatures.onAfterStart,\n // scope: [A_Service]\n // })\n // logStart(\n // @A_Inject(A_Service) container: A_Service,\n // ): void {\n // // this.serverReady({\n // // port: container.port,\n // // app: {\n // // name: container.name,\n // // }\n // // })\n // }\n\n\n\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onAfterStop,\n scope: [A_Service]\n })\n logStop(\n @A_Inject(A_Scope) scope: A_Scope,\n ) {\n this.info('red', `Server ${scope.name} stopped`);\n }\n\n\n\n\n serverReady(\n params: {\n port: number,\n\n app: {\n name: string,\n version?: string\n }\n }\n ) {\n const processId = process.pid;\n\n this.info('cyan',\n ` ${params.app.name} v${params.app.version || '0.0.1'} is running on port ${params.port}`,\n ` Process ID: ${processId}`,\n ` Open In Browser: http://localhost:${params.port}`,\n ``,\n `-------------------------------`,\n ` ==============================`,\n ` LISTENING... `,\n ` ==============================`\n );\n }\n\n\n /**\n * Displays a proxy routes \n * \n * @param params \n */\n proxy(\n params: {\n original: string,\n destination: string,\n }\n ) {\n console.log(`\\x1b[35m[${this.scope.name}] |${this.getTime()}| Proxy:\n${' '.repeat(this.scopeLength + 3)}| ${params.original} -> ${params.destination}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`);\n }\n\n}"]}
@@ -1,6 +1,5 @@
1
1
  import { __decorateClass, __decorateParam } from '../../chunk-EQQGB2QZ.mjs';
2
- import { A_Feature, A_Inject, A_Error } from '@adaas/a-concept';
3
- import { A_Server } from '@adaas/a-server/server/A-Server.context';
2
+ import { A_Feature, A_Inject, A_Error, A_Scope } from '@adaas/a-concept';
4
3
  import { A_Request } from '@adaas/a-server/request/A-Request.entity';
5
4
  import { A_Response } from '@adaas/a-server/response/A-Response.entity';
6
5
  import { A_ResponseFeatures } from '@adaas/a-server/response/A-Response.constants';
@@ -16,8 +15,8 @@ class A_ServerLogger extends A_Logger {
16
15
  this.info("red", `Request ${request.method} ${request.url} errored with status ${response.statusCode} in ${context.processingTime ?? "N/A"}ms`);
17
16
  this.error(error);
18
17
  }
19
- logStop(server) {
20
- this.log("red", `Server ${server.name} stopped`);
18
+ logStop(scope) {
19
+ this.info("red", `Server ${scope.name} stopped`);
21
20
  }
22
21
  serverReady(params) {
23
22
  const processId = process.pid;
@@ -68,7 +67,7 @@ __decorateClass([
68
67
  name: A_ServiceFeatures.onAfterStop,
69
68
  scope: [A_Service]
70
69
  }),
71
- __decorateParam(0, A_Inject(A_Server))
70
+ __decorateParam(0, A_Inject(A_Scope))
72
71
  ], A_ServerLogger.prototype, "logStop", 1);
73
72
 
74
73
  export { A_ServerLogger };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/A-ServerLogger/A-ServerLogger.component.ts"],"names":[],"mappings":"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","file":"A-ServerLogger.component.mjs","sourcesContent":["import { A_Error, A_Feature, A_Inject, } from \"@adaas/a-concept\";\nimport { A_Server } from \"@adaas/a-server/server/A-Server.context\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_ResponseFeatures } from \"@adaas/a-server/response/A-Response.constants\";\nimport { A_HttpServerRequestContext } from \"@adaas/a-server/request/A-HttpServerRequest.context\";\nimport { A_Config } from \"@adaas/a-utils/a-config\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Service, A_ServiceFeatures } from \"@adaas/a-utils/a-service\";\n\n\nexport class A_ServerLogger extends A_Logger {\n\n protected declare config: A_Config<any>\n\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onSend,\n scope: [A_Response]\n })\n logRequestFinish(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n ) {\n\n this.info('green', `Request ${request.method} ${request.url} finished with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n }\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onError,\n scope: [A_Response]\n })\n logResponseError(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n @A_Inject(A_Error) error: A_Error,\n ) {\n this.info('red', `Request ${request.method} ${request.url} errored with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n this.error(error);\n }\n\n\n\n\n // @A_Feature.Extend({\n // name: A_ServiceFeatures.onAfterStart,\n // scope: [A_Service]\n // })\n // logStart(\n // @A_Inject(A_Service) container: A_Service,\n // ): void {\n // // this.serverReady({\n // // port: container.port,\n // // app: {\n // // name: container.name,\n // // }\n // // })\n // }\n\n\n\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onAfterStop,\n scope: [A_Service]\n })\n logStop(\n @A_Inject(A_Server) server: A_Server,\n ) {\n this.log('red', `Server ${server.name} stopped`);\n }\n\n\n\n\n serverReady(\n params: {\n port: number,\n\n app: {\n name: string,\n version?: string\n }\n }\n ) {\n const processId = process.pid;\n\n this.info('cyan',\n ` ${params.app.name} v${params.app.version || '0.0.1'} is running on port ${params.port}`,\n ` Process ID: ${processId}`,\n ` Open In Browser: http://localhost:${params.port}`,\n ``,\n `-------------------------------`,\n ` ==============================`,\n ` LISTENING... `,\n ` ==============================`\n );\n }\n\n\n /**\n * Displays a proxy routes \n * \n * @param params \n */\n proxy(\n params: {\n original: string,\n destination: string,\n }\n ) {\n console.log(`\\x1b[35m[${this.scope.name}] |${this.getTime()}| Proxy:\n${' '.repeat(this.scopeLength + 3)}| ${params.original} -> ${params.destination}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`);\n }\n\n}"]}
1
+ {"version":3,"sources":["../../../../src/lib/A-ServerLogger/A-ServerLogger.component.ts"],"names":[],"mappings":"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","file":"A-ServerLogger.component.mjs","sourcesContent":["import { A_Error, A_Feature, A_Inject, A_Scope, } from \"@adaas/a-concept\";\nimport { A_Request } from \"@adaas/a-server/request/A-Request.entity\";\nimport { A_Response } from \"@adaas/a-server/response/A-Response.entity\";\nimport { A_ResponseFeatures } from \"@adaas/a-server/response/A-Response.constants\";\nimport { A_HttpServerRequestContext } from \"@adaas/a-server/request/A-HttpServerRequest.context\";\nimport { A_Config } from \"@adaas/a-utils/a-config\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { A_Service, A_ServiceFeatures } from \"@adaas/a-utils/a-service\";\n\n\nexport class A_ServerLogger extends A_Logger {\n\n protected declare config: A_Config<any>\n\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onSend,\n scope: [A_Response]\n })\n logRequestFinish(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n ) {\n\n this.info('green', `Request ${request.method} ${request.url} finished with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n }\n\n\n @A_Feature.Extend({\n name: A_ResponseFeatures.onError,\n scope: [A_Response]\n })\n logResponseError(\n @A_Inject(A_Request) request: A_Request,\n @A_Inject(A_Response) response: A_Response,\n @A_Inject(A_HttpServerRequestContext) context: A_HttpServerRequestContext,\n @A_Inject(A_Error) error: A_Error,\n ) {\n this.info('red', `Request ${request.method} ${request.url} errored with status ${response.statusCode} in ${context.processingTime ?? 'N/A'}ms`);\n this.error(error);\n }\n\n\n\n\n // @A_Feature.Extend({\n // name: A_ServiceFeatures.onAfterStart,\n // scope: [A_Service]\n // })\n // logStart(\n // @A_Inject(A_Service) container: A_Service,\n // ): void {\n // // this.serverReady({\n // // port: container.port,\n // // app: {\n // // name: container.name,\n // // }\n // // })\n // }\n\n\n\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onAfterStop,\n scope: [A_Service]\n })\n logStop(\n @A_Inject(A_Scope) scope: A_Scope,\n ) {\n this.info('red', `Server ${scope.name} stopped`);\n }\n\n\n\n\n serverReady(\n params: {\n port: number,\n\n app: {\n name: string,\n version?: string\n }\n }\n ) {\n const processId = process.pid;\n\n this.info('cyan',\n ` ${params.app.name} v${params.app.version || '0.0.1'} is running on port ${params.port}`,\n ` Process ID: ${processId}`,\n ` Open In Browser: http://localhost:${params.port}`,\n ``,\n `-------------------------------`,\n ` ==============================`,\n ` LISTENING... `,\n ` ==============================`\n );\n }\n\n\n /**\n * Displays a proxy routes \n * \n * @param params \n */\n proxy(\n params: {\n original: string,\n destination: string,\n }\n ) {\n console.log(`\\x1b[35m[${this.scope.name}] |${this.getTime()}| Proxy:\n${' '.repeat(this.scopeLength + 3)}| ${params.original} -> ${params.destination}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`);\n }\n\n}"]}
@@ -17,8 +17,6 @@ import '../A-Request/A-HttpServerRequest.context.mjs';
17
17
  import '@adaas/a-utils/a-operation';
18
18
  import '../A-Request/A-HttpRequestData.context.mjs';
19
19
  import '@adaas/a-utils/a-execution';
20
- import '../A-Server/A-Server.context.mjs';
21
- import '../A-Server/A-Server.types.mjs';
22
20
  import '@adaas/a-utils/a-route';
23
21
  import '../A-ServerRoute/A-ServerRoute.types.mjs';
24
22
  import '../A-ServerRoute/A-ServerRoute.constants.mjs';
@@ -17,8 +17,6 @@ import '../A-Request/A-HttpServerRequest.context.js';
17
17
  import '@adaas/a-utils/a-operation';
18
18
  import '../A-Request/A-HttpRequestData.context.js';
19
19
  import '@adaas/a-utils/a-execution';
20
- import '../A-Server/A-Server.context.js';
21
- import '../A-Server/A-Server.types.js';
22
20
  import '@adaas/a-utils/a-route';
23
21
  import '../A-ServerRoute/A-ServerRoute.types.js';
24
22
  import '../A-ServerRoute/A-ServerRoute.constants.js';
@@ -52,7 +52,7 @@ __decorateClass([
52
52
  __decorateParam(0, aConcept.A_Inject(aConfig.A_Config))
53
53
  ], A_ServerCORS.prototype, "init");
54
54
  __decorateClass([
55
- AHttpServer_container.A_HttpServer.onAfterRequest,
55
+ AHttpServer_container.A_HttpServer.onBeforeRequest,
56
56
  __decorateParam(0, aConcept.A_Inject(ARequest_entity.A_Request)),
57
57
  __decorateParam(1, aConcept.A_Inject(AResponse_entity.A_Response))
58
58
  ], A_ServerCORS.prototype, "apply");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/middlewares/A-ServerCORS/A_ServerCORS.component.ts"],"names":["A_ServerMiddleware","A_SERVER_DEFAULTS__CorsConfig","A_Feature","A_ServiceFeatures","A_Config","A_HttpServer","A_Request","A_Response"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,qBAAqBA,8CAAA,CAAmB;AAAA,EAOjD,MAAM,KACkB,MAAA,EACtB;AACE,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACV,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAKC,oDAAA,CAA8B,MAAA;AAAA,MAC9D,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAKA,oDAAA,CAA8B,OAAA;AAAA,MAChE,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAKA,oDAAA,CAA8B,OAAA;AAAA,MAChE,WAAA,EAAa,MAAA,CAAO,GAAA,CAAI,aAAa,KAAKA,oDAAA,CAA8B,WAAA;AAAA,MACxE,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,SAAS,KAAKA,oDAAA,CAA8B;AAAA,KACnE;AAAA,EACJ;AAAA,EAIO,KAAA,CACkB,MACC,IAAA,EACxB;AAEE,IAAA,IAAA,CAAK,SAAA,CAAU,6BAAA,EAA+B,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAChE,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7E,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAE7E,IAAA,IAAI,IAAA,CAAK,OAAO,WAAA,EAAa;AACzB,MAAA,IAAA,CAAK,SAAA,CAAU,oCAAoC,MAAM,CAAA;AAAA,IAC7D;AAEA,IAAA,IAAI,IAAA,CAAK,OAAO,MAAA,EAAQ;AACpB,MAAA,IAAA,CAAK,UAAU,wBAAA,EAA0B,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAAA,IAC1E;AAGA,IAAA,IAAI,IAAA,CAAK,WAAW,SAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,EAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;AApCU,eAAA,CAAA;AAAA,EAHLC,mBAAU,MAAA,CAAO;AAAA,IACd,MAAMC,0BAAA,CAAkB;AAAA,GAC3B,CAAA;AAAA,EAEI,qCAASC,gBAAQ,CAAA;AAAA,CAAA,EARb,YAAA,CAOH,SAAA,EAAA,MAAA,CAAA;AAcC,eAAA,CAAA;AAAA,EADNC,kCAAA,CAAa,cAAA;AAAA,EAET,qCAASC,yBAAS,CAAA,CAAA;AAAA,EAClB,qCAASC,2BAAU,CAAA;AAAA,CAAA,EAvBf,YAAA,CAqBF,SAAA,EAAA,OAAA,CAAA","file":"A_ServerCORS.component.js","sourcesContent":["import { A_Feature, A_Inject } from '@adaas/a-concept';\nimport { A_ServiceFeatures } from '@adaas/a-utils/a-service';\nimport { A_Request } from '@adaas/a-server/request/A-Request.entity';\nimport { A_Response } from '@adaas/a-server/response/A-Response.entity';\nimport { A_HttpServerFeatures } from '@adaas/a-server/server/A-HttpServer.constants';\nimport { A_Config } from '@adaas/a-utils/a-config';\nimport { A_ServerMiddleware } from '@adaas/a-server/middleware/A-ServerMiddleware.component';\nimport { A_SERVER_TYPES__CorsConfig } from './A_ServerCORS.types';\nimport { A_SERVER_DEFAULTS__CorsConfig } from './A_ServerCORS.constants';\nimport { A_HttpServer } from '@adaas/a-server/server/A-HttpServer.container';\n\n\n\n\nexport class A_ServerCORS extends A_ServerMiddleware {\n\n private config!: A_SERVER_TYPES__CorsConfig;\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onBeforeStart\n })\n async init(\n @A_Inject(A_Config) config: A_Config<['ORIGIN', 'METHODS', 'HEADERS', 'CREDENTIALS', 'MAX_AGE']>,\n ) {\n this.config = {\n origin: config.get('ORIGIN') || A_SERVER_DEFAULTS__CorsConfig.origin,\n methods: config.get('METHODS') || A_SERVER_DEFAULTS__CorsConfig.methods,\n headers: config.get('HEADERS') || A_SERVER_DEFAULTS__CorsConfig.headers,\n credentials: config.get('CREDENTIALS') || A_SERVER_DEFAULTS__CorsConfig.credentials,\n maxAge: config.get('MAX_AGE') || A_SERVER_DEFAULTS__CorsConfig.maxAge,\n };\n }\n\n\n @A_HttpServer.onAfterRequest\n public apply(\n @A_Inject(A_Request) aReq: A_Request,\n @A_Inject(A_Response) aRes: A_Response,\n ) {\n\n aRes.setHeader('Access-Control-Allow-Origin', this.config.origin);\n aRes.setHeader('Access-Control-Allow-Methods', this.config.methods.join(', '));\n aRes.setHeader('Access-Control-Allow-Headers', this.config.headers.join(', '));\n\n if (this.config.credentials) {\n aRes.setHeader('Access-Control-Allow-Credentials', 'true');\n }\n\n if (this.config.maxAge) {\n aRes.setHeader('Access-Control-Max-Age', this.config.maxAge.toString());\n }\n\n // Handle preflight OPTIONS requests\n if (aReq.method === 'OPTIONS') {\n aRes.status(204).send();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/middlewares/A-ServerCORS/A_ServerCORS.component.ts"],"names":["A_ServerMiddleware","A_SERVER_DEFAULTS__CorsConfig","A_Feature","A_ServiceFeatures","A_Config","A_HttpServer","A_Request","A_Response"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcO,MAAM,qBAAqBA,8CAAA,CAAmB;AAAA,EAOjD,MAAM,KACkB,MAAA,EACtB;AACE,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACV,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAKC,oDAAA,CAA8B,MAAA;AAAA,MAC9D,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAKA,oDAAA,CAA8B,OAAA;AAAA,MAChE,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAKA,oDAAA,CAA8B,OAAA;AAAA,MAChE,WAAA,EAAa,MAAA,CAAO,GAAA,CAAI,aAAa,KAAKA,oDAAA,CAA8B,WAAA;AAAA,MACxE,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,SAAS,KAAKA,oDAAA,CAA8B;AAAA,KACnE;AAAA,EACJ;AAAA,EAIO,KAAA,CACkB,MACC,IAAA,EACxB;AAEE,IAAA,IAAA,CAAK,SAAA,CAAU,6BAAA,EAA+B,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAChE,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7E,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAE7E,IAAA,IAAI,IAAA,CAAK,OAAO,WAAA,EAAa;AACzB,MAAA,IAAA,CAAK,SAAA,CAAU,oCAAoC,MAAM,CAAA;AAAA,IAC7D;AAEA,IAAA,IAAI,IAAA,CAAK,OAAO,MAAA,EAAQ;AACpB,MAAA,IAAA,CAAK,UAAU,wBAAA,EAA0B,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAAA,IAC1E;AAGA,IAAA,IAAI,IAAA,CAAK,WAAW,SAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,EAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;AApCU,eAAA,CAAA;AAAA,EAHLC,mBAAU,MAAA,CAAO;AAAA,IACd,MAAMC,0BAAA,CAAkB;AAAA,GAC3B,CAAA;AAAA,EAEI,qCAASC,gBAAQ,CAAA;AAAA,CAAA,EARb,YAAA,CAOH,SAAA,EAAA,MAAA,CAAA;AAcC,eAAA,CAAA;AAAA,EADNC,kCAAA,CAAa,eAAA;AAAA,EAET,qCAASC,yBAAS,CAAA,CAAA;AAAA,EAClB,qCAASC,2BAAU,CAAA;AAAA,CAAA,EAvBf,YAAA,CAqBF,SAAA,EAAA,OAAA,CAAA","file":"A_ServerCORS.component.js","sourcesContent":["import { A_Feature, A_Inject } from '@adaas/a-concept';\nimport { A_ServiceFeatures } from '@adaas/a-utils/a-service';\nimport { A_Request } from '@adaas/a-server/request/A-Request.entity';\nimport { A_Response } from '@adaas/a-server/response/A-Response.entity';\nimport { A_HttpServerFeatures } from '@adaas/a-server/server/A-HttpServer.constants';\nimport { A_Config } from '@adaas/a-utils/a-config';\nimport { A_ServerMiddleware } from '@adaas/a-server/middleware/A-ServerMiddleware.component';\nimport { A_SERVER_TYPES__CorsConfig } from './A_ServerCORS.types';\nimport { A_SERVER_DEFAULTS__CorsConfig } from './A_ServerCORS.constants';\nimport { A_HttpServer } from '@adaas/a-server/server/A-HttpServer.container';\n\n\n\n\nexport class A_ServerCORS extends A_ServerMiddleware {\n\n private config!: A_SERVER_TYPES__CorsConfig;\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onBeforeStart\n })\n async init(\n @A_Inject(A_Config) config: A_Config<['ORIGIN', 'METHODS', 'HEADERS', 'CREDENTIALS', 'MAX_AGE']>,\n ) {\n this.config = {\n origin: config.get('ORIGIN') || A_SERVER_DEFAULTS__CorsConfig.origin,\n methods: config.get('METHODS') || A_SERVER_DEFAULTS__CorsConfig.methods,\n headers: config.get('HEADERS') || A_SERVER_DEFAULTS__CorsConfig.headers,\n credentials: config.get('CREDENTIALS') || A_SERVER_DEFAULTS__CorsConfig.credentials,\n maxAge: config.get('MAX_AGE') || A_SERVER_DEFAULTS__CorsConfig.maxAge,\n };\n }\n\n\n @A_HttpServer.onBeforeRequest\n public apply(\n @A_Inject(A_Request) aReq: A_Request,\n @A_Inject(A_Response) aRes: A_Response,\n ) {\n\n aRes.setHeader('Access-Control-Allow-Origin', this.config.origin);\n aRes.setHeader('Access-Control-Allow-Methods', this.config.methods.join(', '));\n aRes.setHeader('Access-Control-Allow-Headers', this.config.headers.join(', '));\n\n if (this.config.credentials) {\n aRes.setHeader('Access-Control-Allow-Credentials', 'true');\n }\n\n if (this.config.maxAge) {\n aRes.setHeader('Access-Control-Max-Age', this.config.maxAge.toString());\n }\n\n // Handle preflight OPTIONS requests\n if (aReq.method === 'OPTIONS') {\n aRes.status(204).send();\n }\n }\n}\n"]}
@@ -40,7 +40,7 @@ __decorateClass([
40
40
  __decorateParam(0, A_Inject(A_Config))
41
41
  ], A_ServerCORS.prototype, "init", 1);
42
42
  __decorateClass([
43
- A_HttpServer.onAfterRequest,
43
+ A_HttpServer.onBeforeRequest,
44
44
  __decorateParam(0, A_Inject(A_Request)),
45
45
  __decorateParam(1, A_Inject(A_Response))
46
46
  ], A_ServerCORS.prototype, "apply", 1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/middlewares/A-ServerCORS/A_ServerCORS.component.ts"],"names":[],"mappings":";;;;;;;;;;AAcO,MAAM,qBAAqB,kBAAA,CAAmB;AAAA,EAOjD,MAAM,KACkB,MAAA,EACtB;AACE,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACV,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAK,6BAAA,CAA8B,MAAA;AAAA,MAC9D,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,6BAAA,CAA8B,OAAA;AAAA,MAChE,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,6BAAA,CAA8B,OAAA;AAAA,MAChE,WAAA,EAAa,MAAA,CAAO,GAAA,CAAI,aAAa,KAAK,6BAAA,CAA8B,WAAA;AAAA,MACxE,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,6BAAA,CAA8B;AAAA,KACnE;AAAA,EACJ;AAAA,EAIO,KAAA,CACkB,MACC,IAAA,EACxB;AAEE,IAAA,IAAA,CAAK,SAAA,CAAU,6BAAA,EAA+B,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAChE,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7E,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAE7E,IAAA,IAAI,IAAA,CAAK,OAAO,WAAA,EAAa;AACzB,MAAA,IAAA,CAAK,SAAA,CAAU,oCAAoC,MAAM,CAAA;AAAA,IAC7D;AAEA,IAAA,IAAI,IAAA,CAAK,OAAO,MAAA,EAAQ;AACpB,MAAA,IAAA,CAAK,UAAU,wBAAA,EAA0B,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAAA,IAC1E;AAGA,IAAA,IAAI,IAAA,CAAK,WAAW,SAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,EAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;AApCU,eAAA,CAAA;AAAA,EAHL,UAAU,MAAA,CAAO;AAAA,IACd,MAAM,iBAAA,CAAkB;AAAA,GAC3B,CAAA;AAAA,EAEI,4BAAS,QAAQ,CAAA;AAAA,CAAA,EARb,YAAA,CAOH,SAAA,EAAA,MAAA,EAAA,CAAA,CAAA;AAcC,eAAA,CAAA;AAAA,EADN,YAAA,CAAa,cAAA;AAAA,EAET,4BAAS,SAAS,CAAA,CAAA;AAAA,EAClB,4BAAS,UAAU,CAAA;AAAA,CAAA,EAvBf,YAAA,CAqBF,SAAA,EAAA,OAAA,EAAA,CAAA,CAAA","file":"A_ServerCORS.component.mjs","sourcesContent":["import { A_Feature, A_Inject } from '@adaas/a-concept';\nimport { A_ServiceFeatures } from '@adaas/a-utils/a-service';\nimport { A_Request } from '@adaas/a-server/request/A-Request.entity';\nimport { A_Response } from '@adaas/a-server/response/A-Response.entity';\nimport { A_HttpServerFeatures } from '@adaas/a-server/server/A-HttpServer.constants';\nimport { A_Config } from '@adaas/a-utils/a-config';\nimport { A_ServerMiddleware } from '@adaas/a-server/middleware/A-ServerMiddleware.component';\nimport { A_SERVER_TYPES__CorsConfig } from './A_ServerCORS.types';\nimport { A_SERVER_DEFAULTS__CorsConfig } from './A_ServerCORS.constants';\nimport { A_HttpServer } from '@adaas/a-server/server/A-HttpServer.container';\n\n\n\n\nexport class A_ServerCORS extends A_ServerMiddleware {\n\n private config!: A_SERVER_TYPES__CorsConfig;\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onBeforeStart\n })\n async init(\n @A_Inject(A_Config) config: A_Config<['ORIGIN', 'METHODS', 'HEADERS', 'CREDENTIALS', 'MAX_AGE']>,\n ) {\n this.config = {\n origin: config.get('ORIGIN') || A_SERVER_DEFAULTS__CorsConfig.origin,\n methods: config.get('METHODS') || A_SERVER_DEFAULTS__CorsConfig.methods,\n headers: config.get('HEADERS') || A_SERVER_DEFAULTS__CorsConfig.headers,\n credentials: config.get('CREDENTIALS') || A_SERVER_DEFAULTS__CorsConfig.credentials,\n maxAge: config.get('MAX_AGE') || A_SERVER_DEFAULTS__CorsConfig.maxAge,\n };\n }\n\n\n @A_HttpServer.onAfterRequest\n public apply(\n @A_Inject(A_Request) aReq: A_Request,\n @A_Inject(A_Response) aRes: A_Response,\n ) {\n\n aRes.setHeader('Access-Control-Allow-Origin', this.config.origin);\n aRes.setHeader('Access-Control-Allow-Methods', this.config.methods.join(', '));\n aRes.setHeader('Access-Control-Allow-Headers', this.config.headers.join(', '));\n\n if (this.config.credentials) {\n aRes.setHeader('Access-Control-Allow-Credentials', 'true');\n }\n\n if (this.config.maxAge) {\n aRes.setHeader('Access-Control-Max-Age', this.config.maxAge.toString());\n }\n\n // Handle preflight OPTIONS requests\n if (aReq.method === 'OPTIONS') {\n aRes.status(204).send();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/middlewares/A-ServerCORS/A_ServerCORS.component.ts"],"names":[],"mappings":";;;;;;;;;;AAcO,MAAM,qBAAqB,kBAAA,CAAmB;AAAA,EAOjD,MAAM,KACkB,MAAA,EACtB;AACE,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACV,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,QAAQ,KAAK,6BAAA,CAA8B,MAAA;AAAA,MAC9D,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,6BAAA,CAA8B,OAAA;AAAA,MAChE,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,6BAAA,CAA8B,OAAA;AAAA,MAChE,WAAA,EAAa,MAAA,CAAO,GAAA,CAAI,aAAa,KAAK,6BAAA,CAA8B,WAAA;AAAA,MACxE,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,6BAAA,CAA8B;AAAA,KACnE;AAAA,EACJ;AAAA,EAIO,KAAA,CACkB,MACC,IAAA,EACxB;AAEE,IAAA,IAAA,CAAK,SAAA,CAAU,6BAAA,EAA+B,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAChE,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7E,IAAA,IAAA,CAAK,UAAU,8BAAA,EAAgC,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAE7E,IAAA,IAAI,IAAA,CAAK,OAAO,WAAA,EAAa;AACzB,MAAA,IAAA,CAAK,SAAA,CAAU,oCAAoC,MAAM,CAAA;AAAA,IAC7D;AAEA,IAAA,IAAI,IAAA,CAAK,OAAO,MAAA,EAAQ;AACpB,MAAA,IAAA,CAAK,UAAU,wBAAA,EAA0B,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAAA,IAC1E;AAGA,IAAA,IAAI,IAAA,CAAK,WAAW,SAAA,EAAW;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,EAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;AApCU,eAAA,CAAA;AAAA,EAHL,UAAU,MAAA,CAAO;AAAA,IACd,MAAM,iBAAA,CAAkB;AAAA,GAC3B,CAAA;AAAA,EAEI,4BAAS,QAAQ,CAAA;AAAA,CAAA,EARb,YAAA,CAOH,SAAA,EAAA,MAAA,EAAA,CAAA,CAAA;AAcC,eAAA,CAAA;AAAA,EADN,YAAA,CAAa,eAAA;AAAA,EAET,4BAAS,SAAS,CAAA,CAAA;AAAA,EAClB,4BAAS,UAAU,CAAA;AAAA,CAAA,EAvBf,YAAA,CAqBF,SAAA,EAAA,OAAA,EAAA,CAAA,CAAA","file":"A_ServerCORS.component.mjs","sourcesContent":["import { A_Feature, A_Inject } from '@adaas/a-concept';\nimport { A_ServiceFeatures } from '@adaas/a-utils/a-service';\nimport { A_Request } from '@adaas/a-server/request/A-Request.entity';\nimport { A_Response } from '@adaas/a-server/response/A-Response.entity';\nimport { A_HttpServerFeatures } from '@adaas/a-server/server/A-HttpServer.constants';\nimport { A_Config } from '@adaas/a-utils/a-config';\nimport { A_ServerMiddleware } from '@adaas/a-server/middleware/A-ServerMiddleware.component';\nimport { A_SERVER_TYPES__CorsConfig } from './A_ServerCORS.types';\nimport { A_SERVER_DEFAULTS__CorsConfig } from './A_ServerCORS.constants';\nimport { A_HttpServer } from '@adaas/a-server/server/A-HttpServer.container';\n\n\n\n\nexport class A_ServerCORS extends A_ServerMiddleware {\n\n private config!: A_SERVER_TYPES__CorsConfig;\n\n @A_Feature.Extend({\n name: A_ServiceFeatures.onBeforeStart\n })\n async init(\n @A_Inject(A_Config) config: A_Config<['ORIGIN', 'METHODS', 'HEADERS', 'CREDENTIALS', 'MAX_AGE']>,\n ) {\n this.config = {\n origin: config.get('ORIGIN') || A_SERVER_DEFAULTS__CorsConfig.origin,\n methods: config.get('METHODS') || A_SERVER_DEFAULTS__CorsConfig.methods,\n headers: config.get('HEADERS') || A_SERVER_DEFAULTS__CorsConfig.headers,\n credentials: config.get('CREDENTIALS') || A_SERVER_DEFAULTS__CorsConfig.credentials,\n maxAge: config.get('MAX_AGE') || A_SERVER_DEFAULTS__CorsConfig.maxAge,\n };\n }\n\n\n @A_HttpServer.onBeforeRequest\n public apply(\n @A_Inject(A_Request) aReq: A_Request,\n @A_Inject(A_Response) aRes: A_Response,\n ) {\n\n aRes.setHeader('Access-Control-Allow-Origin', this.config.origin);\n aRes.setHeader('Access-Control-Allow-Methods', this.config.methods.join(', '));\n aRes.setHeader('Access-Control-Allow-Headers', this.config.headers.join(', '));\n\n if (this.config.credentials) {\n aRes.setHeader('Access-Control-Allow-Credentials', 'true');\n }\n\n if (this.config.maxAge) {\n aRes.setHeader('Access-Control-Max-Age', this.config.maxAge.toString());\n }\n\n // Handle preflight OPTIONS requests\n if (aReq.method === 'OPTIONS') {\n aRes.status(204).send();\n }\n }\n}\n"]}
@@ -12,6 +12,7 @@ import '@adaas/a-utils/a-route';
12
12
  import '../../lib/A-ServerRoute/A-ServerRoute.types.mjs';
13
13
  import '../../lib/A-ServerRoute/A-ServerRoute.constants.mjs';
14
14
  import '../../lib/A-ServerEntityList/A-EntityList.types.mjs';
15
+ import '../../lib/A-ServerEntityList/A-EntityListPagination.context.mjs';
15
16
 
16
17
  declare class A_EntityRepository extends A_HTTPChannel {
17
18
  execute(command: A_Command, scope: A_Scope): Promise<void>;
@@ -12,6 +12,7 @@ import '@adaas/a-utils/a-route';
12
12
  import '../../lib/A-ServerRoute/A-ServerRoute.types.js';
13
13
  import '../../lib/A-ServerRoute/A-ServerRoute.constants.js';
14
14
  import '../../lib/A-ServerEntityList/A-EntityList.types.js';
15
+ import '../../lib/A-ServerEntityList/A-EntityListPagination.context.js';
15
16
 
16
17
  declare class A_EntityRepository extends A_HTTPChannel {
17
18
  execute(command: A_Command, scope: A_Scope): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { A_Component, A_Entity, A_Feature, A_Inject, A_Scope, A_TYPES__EntityFeatures, } from "@adaas/a-concept";
1
+ import { A_Component, A_Entity, A_Feature, A_Inject, A_Scope, A_TYPES__EntityFeatures, } from "@adaas/a-concept";
2
2
  import { User } from "../entities/User/User.entity";
3
3
  import { UserJSON } from "../entities/User/User.entity.types";
4
4
  import { SignInCommand } from "../commands/SignIn.command";
@@ -49,7 +49,7 @@ export class UsersRepository extends A_Component {
49
49
 
50
50
 
51
51
  @A_Feature.Extend({
52
- name:'load',
52
+ name: A_TYPES__EntityFeatures.LOAD,
53
53
  scope: [A_ServerEntityList]
54
54
  })
55
55
  list(
package/jest.config.ts CHANGED
@@ -3,6 +3,7 @@ import type { Config } from '@jest/types';
3
3
  // Sync object
4
4
  const config: Config.InitialOptions = {
5
5
  verbose: true,
6
+ testTimeout: 30_000,
6
7
 
7
8
  transform: {
8
9
  '^.+\\.tsx?$': 'ts-jest'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaas/a-server",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "description": "A-Server is a powerful server framework designed to work seamlessly with the A-Concept framework. This library provides a robust and flexible server implementation of A-Server, enabling developers to create scalable and efficient server-side applications using the A-Concept architecture.",
5
5
  "keywords": [
6
6
  "adaas",
@@ -1,11 +1,8 @@
1
- import { A_Component, A_Context, A_Feature, A_Inject, A_Scope, A_TYPES__Entity_Constructor, ASEID } from "@adaas/a-concept";
1
+ import { A_Component, A_Context, A_Feature, A_Inject, A_Scope, ASEID } from "@adaas/a-concept";
2
2
  import { A_Request } from "@adaas/a-server/request/A-Request.entity";
3
3
  import { A_ServerRouter } from "@adaas/a-server/router/A-ServerRouter.component";
4
4
  import { A_Response } from "@adaas/a-server/response/A-Response.entity";
5
- import { A_ServerError } from "../../lib/A-Server/A-Server.error";
6
- import { A_ServerListQueryFilter } from "@adaas/a-server/list-query/A-ServerListQueryFilter.context";
7
- import { A_ServerEntityList } from "@adaas/a-server/entity-list/A-EntityList.entity";
8
- import { A_Config } from "@adaas/a-utils/a-config";
5
+ import { A_HttpServerError } from "../../lib/A-Server/A-HttpServer.error";
9
6
 
10
7
 
11
8
 
@@ -14,46 +11,6 @@ export class A_EntityController extends A_Component {
14
11
  // =======================================================
15
12
  // ================ Method Definition=====================
16
13
  // =======================================================
17
- @A_ServerRouter.Get({
18
- path: '/:type',
19
- version: 'v1',
20
- prefix: 'a-list'
21
- })
22
- async list(
23
- @A_Inject(A_Request) request: A_Request<any, any, { type: string }>,
24
- @A_Inject(A_Response) response: A_Response,
25
- @A_Inject(A_Scope) scope: A_Scope,
26
- @A_Inject(A_Config) config: A_Config<['A_LIST_ITEMS_PER_PAGE', 'A_LIST_PAGE']>
27
- ) {
28
-
29
- const constructor = scope.resolveConstructor(request.params.type);
30
-
31
- if (constructor) {
32
-
33
- const entityList = new A_ServerEntityList({
34
- name: request.params.type,
35
- scope: scope.name,
36
- constructor
37
- });
38
-
39
- scope.register(entityList);
40
-
41
- const queryFilter = new A_ServerListQueryFilter(request.query, {
42
- itemsPerPage: String(config.get('A_LIST_ITEMS_PER_PAGE') || '10'),
43
- page: String(config.get('A_LIST_PAGE') || '1')
44
- });
45
-
46
- const queryScope = new A_Scope({
47
- fragments: [queryFilter]
48
- }).inherit(scope);
49
-
50
- await entityList.load(queryScope);
51
-
52
- response.add('items', entityList.items);
53
- response.add('pagination', entityList.pagination);
54
- }
55
- }
56
-
57
14
 
58
15
  @A_Feature.Define({
59
16
  name: 'getEntity',
@@ -69,44 +26,29 @@ export class A_EntityController extends A_Component {
69
26
  @A_Inject(A_Response) response: A_Response,
70
27
  @A_Inject(A_Scope) scope: A_Scope
71
28
  ) {
72
- // Check if the scope has a manifest and if the entity is allowed to save
73
- // if (
74
- // scope.has(A_Manifest) && !scope.resolve(A_Manifest)
75
- // .isAllowed(entity.constructor, 'save')
76
- // .for(entity.constructor as A_TYPES__Entity_Constructor)
77
- // )
78
- // return;
79
-
80
-
81
- console.log('Request params:', request.params);
82
-
83
-
84
- if (!ASEID.isASEID(request.params.aseid)) {
85
- response.add('A_EntityController.load', 'Invalid ASEID');
86
- return;
87
- }
88
-
29
+ if (!ASEID.isASEID(request.params.aseid))
30
+ throw new A_HttpServerError({
31
+ status: 400,
32
+ description: `Invalid ASEID: "${request.params.aseid}"`,
33
+ });
89
34
 
90
35
  const aseid = new ASEID(request.params.aseid);
91
36
 
92
37
  const constructor = scope.resolveConstructor(aseid.entity);
93
38
 
39
+ if (!constructor)
40
+ throw new A_HttpServerError({
41
+ status: 404,
42
+ description: `Entity constructor for ASEID ${request.params.aseid} not found`,
43
+ });
94
44
 
95
- if (constructor) {
96
- const entity = new constructor(request.params.aseid);
45
+ const entity = new constructor(request.params.aseid);
97
46
 
98
- scope.register(entity);
47
+ scope.register(entity);
99
48
 
100
- await entity.load();
49
+ await entity.load();
101
50
 
102
- return response.status(200).send(entity.toJSON());
103
- }
104
- else
105
- throw new A_ServerError({
106
- title: 'Entity Not Found',
107
- description: `Entity constructor for ASEID ${request.params.aseid} not found`,
108
- status: 404,
109
- });
51
+ return response.status(200).send(entity.toJSON());
110
52
  }
111
53
 
112
54
 
@@ -118,17 +60,22 @@ export class A_EntityController extends A_Component {
118
60
  })
119
61
  async create(
120
62
  @A_Inject(A_Request) request: A_Request<any, any, { aseid: string }>,
63
+ @A_Inject(A_Response) response: A_Response,
121
64
  @A_Inject(A_Scope) scope: A_Scope
122
65
  ) {
123
66
  const constructor = scope.resolveConstructor(request.params.aseid);
124
67
 
125
- if (constructor) {
126
- const entity = new constructor(request.body);
68
+ if (!constructor)
69
+ throw new A_HttpServerError({
70
+ status: 404,
71
+ description: `Entity type "${request.params.aseid}" not registered`,
72
+ });
73
+
74
+ const entity = new constructor(request.body);
127
75
 
128
- scope.register(entity);
76
+ scope.register(entity);
129
77
 
130
- await entity.save();
131
- }
78
+ await entity.save();
132
79
  }
133
80
 
134
81
 
@@ -143,20 +90,25 @@ export class A_EntityController extends A_Component {
143
90
  @A_Inject(A_Response) response: A_Response,
144
91
  @A_Inject(A_Scope) scope: A_Scope
145
92
  ) {
146
- if (!ASEID.isASEID(request.params.aseid)) {
147
- response.add('A_EntityController.update', 'Invalid ASEID');
148
- return;
149
- }
93
+ if (!ASEID.isASEID(request.params.aseid))
94
+ throw new A_HttpServerError({
95
+ status: 400,
96
+ description: `Invalid ASEID: "${request.params.aseid}"`,
97
+ });
150
98
 
151
99
  const constructor = scope.resolveConstructor(request.params.aseid);
152
100
 
153
- if (constructor) {
154
- const entity = new constructor(request.body);
101
+ if (!constructor)
102
+ throw new A_HttpServerError({
103
+ status: 404,
104
+ description: `Entity constructor for ASEID ${request.params.aseid} not found`,
105
+ });
106
+
107
+ const entity = new constructor(request.body);
155
108
 
156
- scope.register(entity);
109
+ scope.register(entity);
157
110
 
158
- await entity.save();
159
- }
111
+ await entity.save();
160
112
  }
161
113
 
162
114
 
@@ -170,20 +122,25 @@ export class A_EntityController extends A_Component {
170
122
  @A_Inject(A_Response) response: A_Response,
171
123
  @A_Inject(A_Scope) scope: A_Scope
172
124
  ) {
173
- if (!ASEID.isASEID(request.params.aseid)) {
174
- response.add('A_EntityController.delete', 'Invalid ASEID');
175
- return;
176
- }
125
+ if (!ASEID.isASEID(request.params.aseid))
126
+ throw new A_HttpServerError({
127
+ status: 400,
128
+ description: `Invalid ASEID: "${request.params.aseid}"`,
129
+ });
177
130
 
178
131
  const constructor = scope.resolveConstructor(request.params.aseid);
179
132
 
180
- if (constructor) {
181
- const entity = new constructor(request.params.aseid);
133
+ if (!constructor)
134
+ throw new A_HttpServerError({
135
+ status: 404,
136
+ description: `Entity constructor for ASEID ${request.params.aseid} not found`,
137
+ });
182
138
 
183
- scope.register(entity);
139
+ const entity = new constructor(request.params.aseid);
140
+
141
+ scope.register(entity);
184
142
 
185
- await entity.destroy();
186
- }
143
+ await entity.destroy();
187
144
  }
188
145
 
189
146
 
@@ -202,26 +159,29 @@ export class A_EntityController extends A_Component {
202
159
  @A_Inject(A_Response) response: A_Response,
203
160
  @A_Inject(A_Scope) scope: A_Scope
204
161
  ) {
205
- if (!ASEID.isASEID(request.params.aseid)) {
206
- response.add('A_EntityController.callEntity', 'Invalid ASEID');
207
- return;
208
- }
162
+ if (!ASEID.isASEID(request.params.aseid))
163
+ throw new A_HttpServerError({
164
+ status: 400,
165
+ description: `Invalid ASEID: "${request.params.aseid}"`,
166
+ });
209
167
 
210
168
  const constructor = scope.resolveConstructor(request.params.aseid);
211
169
 
212
- if (!constructor) {
213
- response.add('A_EntityController.callEntity', 'Entity not found');
214
- return;
215
- }
170
+ if (!constructor)
171
+ throw new A_HttpServerError({
172
+ status: 404,
173
+ description: `Entity constructor for ASEID ${request.params.aseid} not found`,
174
+ });
216
175
 
217
176
  const meta = A_Context.meta(constructor);
218
177
 
219
178
  const targetFeature = meta.features().find(f => f.name === `${constructor.name}.${request.params.action}`);
220
179
 
221
- if (!targetFeature) {
222
- response.add('A_EntityController.callEntity', 'Feature not found');
223
- return;
224
- }
180
+ if (!targetFeature)
181
+ throw new A_HttpServerError({
182
+ status: 404,
183
+ description: `Feature "${request.params.action}" not found on entity`,
184
+ });
225
185
 
226
186
  const entity = new constructor(request.params.aseid);
227
187
 
@@ -1,10 +1,11 @@
1
- import { A_Component, A_Feature, A_Inject, A_Scope } from "@adaas/a-concept"
1
+ import { A_Component, A_Feature, A_Inject, A_Scope } from "@adaas/a-concept"
2
2
  import { A_Config } from "@adaas/a-utils/a-config";
3
3
  import { A_Request } from "@adaas/a-server/request/A-Request.entity";
4
4
  import { A_Response } from "@adaas/a-server/response/A-Response.entity";
5
5
  import { A_ServerRouter } from "@adaas/a-server/router/A-ServerRouter.component";
6
6
  import { A_ServerEntityList } from "@adaas/a-server/entity-list/A-EntityList.entity";
7
7
  import { A_ServerListQueryFilter } from "@adaas/a-server/list-query/A-ServerListQueryFilter.context";
8
+ import { A_HttpServerError } from "../../lib/A-Server/A-HttpServer.error";
8
9
 
9
10
 
10
11
 
@@ -26,31 +27,32 @@ export class A_ListingController extends A_Component {
26
27
  @A_Inject(A_Config) config: A_Config<['A_LIST_ITEMS_PER_PAGE', 'A_LIST_PAGE']>
27
28
  ) {
28
29
 
29
- const constructor = scope.resolveConstructor(request.params.type);
30
+ const ctor = scope.resolveConstructor(request.params.type);
30
31
 
31
- if (constructor) {
32
-
33
- const entityList = new A_ServerEntityList({
34
- name: request.params.type,
35
- scope: scope.name,
36
- constructor
32
+ if (!ctor)
33
+ throw new A_HttpServerError({
34
+ status: 404,
35
+ description: `Entity type "${request.params.type}" not registered`,
37
36
  });
38
37
 
39
- scope.register(entityList);
38
+ const entityList = new A_ServerEntityList({
39
+ entity: ctor,
40
+ });
40
41
 
41
- const queryFilter = new A_ServerListQueryFilter(request.query, {
42
- itemsPerPage: String(config.get('A_LIST_ITEMS_PER_PAGE') || '10'),
43
- page: String(config.get('A_LIST_PAGE') || '1')
44
- });
42
+ scope.register(entityList);
43
+
44
+ const queryFilter = new A_ServerListQueryFilter(request.query, {
45
+ itemsPerPage: String(config.get('A_LIST_ITEMS_PER_PAGE') || '10'),
46
+ page: String(config.get('A_LIST_PAGE') || '1'),
47
+ });
45
48
 
46
- const queryScope = new A_Scope({
47
- fragments: [queryFilter]
48
- }).inherit(scope);
49
+ const queryScope = new A_Scope({
50
+ fragments: [queryFilter],
51
+ }).inherit(scope);
49
52
 
50
- await entityList.load(queryScope);
53
+ await entityList.load(queryScope);
51
54
 
52
- response.add('items', entityList.items);
53
- response.add('pagination', entityList.pagination);
54
- }
55
+ response.add('items', entityList.items);
56
+ response.add('pagination', entityList.pagination);
55
57
  }
56
58
  }