chyz 1.0.12-rc.8 → 1.0.13-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/BaseChyz.ts +72 -12
  2. package/Examples/Controllers/ApiController.ts +88 -30
  3. package/Examples/Controllers/KeyCloakController.ts +100 -0
  4. package/Examples/Controllers/PublicController.ts +5 -7
  5. package/Examples/Controllers/SiteController.ts +82 -32
  6. package/Examples/Models/Categories.ts +36 -0
  7. package/Examples/Models/Customer.ts +115 -0
  8. package/Examples/Models/KeycloakUser.ts +66 -0
  9. package/Examples/Models/Order.ts +64 -0
  10. package/Examples/Models/OrderItem.ts +27 -0
  11. package/Examples/Models/ProductModels.ts +50 -0
  12. package/Examples/Models/ProductToCategories.ts +35 -0
  13. package/Examples/Models/Products.ts +49 -0
  14. package/Examples/Models/Stocks.ts +60 -0
  15. package/Examples/Models/User.ts +66 -35
  16. package/Examples/Models/UserPermission.ts +37 -0
  17. package/Examples/index-keycloack.ts +78 -0
  18. package/Examples/index.ts +16 -15
  19. package/Examples/keycloak.json +7 -0
  20. package/Examples/log/app.log +903 -1034
  21. package/Examples/log/errors.log +79 -256
  22. package/Examples/package.json +46 -44
  23. package/Examples/tsconfig.json +1 -1
  24. package/README.md +118 -16
  25. package/base/ActionFilter.ts +2 -2
  26. package/base/BaseError.ts +2 -2
  27. package/base/DataErrorDbException.ts +1 -1
  28. package/base/DbConnection.ts +6 -0
  29. package/base/ForbiddenHttpException.ts +1 -1
  30. package/base/InvalidConfigException.ts +1 -1
  31. package/base/Model.ts +204 -15
  32. package/base/NotFoundHttpException.ts +1 -1
  33. package/base/RestClient.ts +28 -0
  34. package/base/UnauthorizedHttpException.ts +2 -1
  35. package/base/ValidationHttpException.ts +14 -0
  36. package/base/db/Exception.ts +14 -0
  37. package/base/index.ts +2 -0
  38. package/dist/BaseChyz.js +56 -10
  39. package/dist/BaseChyz.js.map +1 -1
  40. package/dist/README.md +270 -0
  41. package/dist/base/ActionFilter.js +2 -2
  42. package/dist/base/ActionFilter.js.map +1 -1
  43. package/dist/base/BaseError.js +2 -2
  44. package/dist/base/BaseError.js.map +1 -1
  45. package/dist/base/DataErrorDbException.js +1 -1
  46. package/dist/base/DataErrorDbException.js.map +1 -1
  47. package/dist/base/DbConnection.js +3 -0
  48. package/dist/base/DbConnection.js.map +1 -1
  49. package/dist/base/ForbiddenHttpException.js +1 -1
  50. package/dist/base/ForbiddenHttpException.js.map +1 -1
  51. package/dist/base/InvalidConfigException.js +1 -1
  52. package/dist/base/InvalidConfigException.js.map +1 -1
  53. package/dist/base/Model.js +181 -13
  54. package/dist/base/Model.js.map +1 -1
  55. package/dist/base/NotFoundHttpException.js +1 -1
  56. package/dist/base/NotFoundHttpException.js.map +1 -1
  57. package/dist/base/RestClient.js +27 -0
  58. package/dist/base/RestClient.js.map +1 -0
  59. package/dist/base/UnauthorizedHttpException.js +1 -1
  60. package/dist/base/UnauthorizedHttpException.js.map +1 -1
  61. package/dist/base/ValidationHttpException.js +18 -0
  62. package/dist/base/ValidationHttpException.js.map +1 -0
  63. package/dist/base/db/Exception.js +16 -0
  64. package/dist/base/db/Exception.js.map +1 -0
  65. package/dist/base/index.js +2 -0
  66. package/dist/base/index.js.map +1 -1
  67. package/dist/filters/AccessControl.js +2 -2
  68. package/dist/filters/AccessControl.js.map +1 -1
  69. package/dist/filters/AccessRule.js.map +1 -1
  70. package/dist/filters/auth/AuthMethod.js +2 -2
  71. package/dist/filters/auth/AuthMethod.js.map +1 -1
  72. package/dist/filters/auth/HttpHeaderAuth.js.map +1 -1
  73. package/dist/filters/auth/JwtHttpBearerAuth.js +1 -0
  74. package/dist/filters/auth/JwtHttpBearerAuth.js.map +1 -1
  75. package/dist/filters/auth/KeyCloakHttpBearerAuth.js +117 -0
  76. package/dist/filters/auth/KeyCloakHttpBearerAuth.js.map +1 -0
  77. package/dist/index.js +28 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/package.json +55 -0
  80. package/dist/web/{User.js → WebUser.js} +12 -7
  81. package/dist/web/WebUser.js.map +1 -0
  82. package/filters/AccessControl.ts +3 -3
  83. package/filters/AccessRule.ts +2 -2
  84. package/filters/auth/AuthMethod.ts +4 -4
  85. package/filters/auth/HttpHeaderAuth.ts +2 -2
  86. package/filters/auth/JwtHttpBearerAuth.ts +4 -5
  87. package/filters/auth/KeyCloakHttpBearerAuth.ts +115 -0
  88. package/index.ts +14 -0
  89. package/package-lock.json +5259 -0
  90. package/package.json +56 -52
  91. package/web/{User.ts → WebUser.ts} +10 -6
  92. package/.idea/Chy-Nodejs-Framework.iml +0 -12
  93. package/.idea/jsLibraryMappings.xml +0 -6
  94. package/.idea/modules.xml +0 -8
  95. package/.idea/vcs.xml +0 -6
  96. package/dist/web/User.js.map +0 -1
@@ -25,7 +25,7 @@ export class ActionFilter extends Behavior {
25
25
  }
26
26
 
27
27
  public async beforeFilter(route: any, req: Request, res: Response) {
28
- if (!this.isActive(route.id)) {
28
+ if (!this.isActive(route)) {
29
29
  return;
30
30
  }
31
31
 
@@ -51,7 +51,7 @@ export class ActionFilter extends Behavior {
51
51
  for (const exceptKey in this.except) {
52
52
  let pattern = this.except[exceptKey];
53
53
  let match = id.match(pattern)
54
- if (match.length > 0) {
54
+ if (match && match.length > 0) {
55
55
  exceptMatch = true;
56
56
  }
57
57
  }
package/base/BaseError.ts CHANGED
@@ -8,11 +8,11 @@
8
8
  export class BaseError extends Error {
9
9
  private statusCode: number;
10
10
 
11
- constructor(message: string) {
11
+ constructor(message: string,statusCode=500) {
12
12
  super(message);
13
13
  this.message=message;
14
14
  this.name = this.constructor.name // good practice
15
- this.statusCode = 500 // error code for responding to client
15
+ this.statusCode = statusCode // error code for responding to client
16
16
  Error.captureStackTrace(this)
17
17
  }
18
18
 
@@ -11,6 +11,6 @@ import {BaseError} from "./BaseError";
11
11
 
12
12
  export class DataErrorDbException extends BaseError {
13
13
  constructor ( public message: string) {
14
- super(message);
14
+ super(message,502);
15
15
  }
16
16
  }
@@ -15,6 +15,7 @@ export class DbConnection extends Component {
15
15
  public username!: string
16
16
  public password!: string
17
17
  public options?: object
18
+ public _transaction:any;
18
19
 
19
20
  private _db: any
20
21
 
@@ -42,4 +43,9 @@ export class DbConnection extends Component {
42
43
  set db(value: any) {
43
44
  this._db = value;
44
45
  }
46
+
47
+ public transaction(){
48
+ return this.db.transaction();
49
+ }
50
+
45
51
  }
@@ -8,7 +8,7 @@
8
8
  import {BaseError} from "./BaseError";
9
9
  export class ForbiddenHttpException extends BaseError {
10
10
  constructor ( message: string) {
11
- super(message);
11
+ super(message,403);
12
12
  }
13
13
  }
14
14
 
@@ -11,6 +11,6 @@ import {BaseError} from "./BaseError";
11
11
 
12
12
  export class InvalidConfigException extends BaseError {
13
13
  constructor ( public message: string) {
14
- super(message);
14
+ super(message,500);
15
15
  }
16
16
  }
package/base/Model.ts CHANGED
@@ -9,9 +9,21 @@ import BaseChyz from "../BaseChyz";
9
9
  import Utils from "../requiments/Utils";
10
10
  import {Component} from "./Component";
11
11
  import {InvalidConfigException} from "./InvalidConfigException";
12
- import {DataTypes} from "sequelize";
12
+ import {DatabaseError, DataTypes, ExclusionConstraintError, ForeignKeyConstraintError, Model as SModel, TimeoutError, UniqueConstraintError, ValidationError,} from "sequelize";
13
+ import {Exception} from "./db/Exception";
13
14
 
14
- export {DataTypes} from "sequelize";
15
+ export {DataTypes, NOW} from "sequelize";
16
+
17
+ export interface Relation{
18
+ type: "hasOne" | "hasMany" | "belongsToMany" | "belongsTo",
19
+ allowNull?:boolean,
20
+ sourceKey:string,
21
+ model:SModel,
22
+ foreignKey:string,
23
+ name?:string,
24
+ through?:string,
25
+ as?:string
26
+ }
15
27
 
16
28
  /**
17
29
  * ValidateMe.init({
@@ -66,24 +78,64 @@ export {DataTypes} from "sequelize";
66
78
  }
67
79
  }, { sequelize });
68
80
  */
81
+
69
82
  export class Model extends Component {
70
- private sequelize: any
83
+ _sequelize: any ;
71
84
  private _tableName: string;
72
85
  private _model: any;
73
86
  private _attributes: any = {};
87
+ private _errors: any = {}
88
+
74
89
 
75
- constructor() {
90
+ constructor(sequelize?: IDBDatabase) {
76
91
  super();
77
92
  this._tableName = this.constructor.name;
78
- this.sequelize = BaseChyz.getComponent("db").db;
93
+ // this._sequelize = BaseChyz.getComponent("db").db;
94
+ if (sequelize != null)
95
+ this._sequelize = sequelize;
96
+ else
97
+ this._sequelize = BaseChyz.getComponent("db").db;
79
98
 
80
99
  if (!Utils.isEmpty(this.attributes())) {
81
-
82
- this._model = this.sequelize.define(this.constructor.name, this.attributes(), {
100
+ this._model = this._sequelize.define(this.constructor.name, this.attributes(), {
83
101
  tableName: this.tableName(),
84
102
  timestamps: false
85
103
  });
86
104
 
105
+
106
+
107
+ /**
108
+ * init buraya
109
+ */
110
+
111
+ for (const relation of this.relations()) {
112
+ let m = relation.model;
113
+
114
+ if(relation.type=="hasOne" ){
115
+ // @ts-ignore
116
+ delete relation.model
117
+ this.model().hasOne(m, relation );
118
+ }
119
+
120
+ if(relation.type=="hasMany" ){
121
+ // @ts-ignore
122
+ delete relation.model;
123
+ this.model().hasMany(m, relation );
124
+ }
125
+
126
+ if(relation.type=="belongsTo" ){
127
+ // @ts-ignore
128
+ delete relation.model;
129
+ this.model().belongsTo(m, relation );
130
+ }
131
+
132
+ if(relation.type=="belongsToMany" ){
133
+ // @ts-ignore
134
+ delete relation.model;
135
+ this.model().belongsToMany(m, relation );
136
+ }
137
+ }
138
+
87
139
  } else {
88
140
  throw new InvalidConfigException(BaseChyz.t("Invalid model configuration, is not emty attributes"))
89
141
  }
@@ -92,10 +144,43 @@ export class Model extends Component {
92
144
 
93
145
  }
94
146
 
147
+
148
+ /**
149
+ * Returns the database connection used by this AR class.
150
+ * By default, the "db" application component is used as the database connection.
151
+ * You may override this method if you want to use a different database connection.
152
+ * @return Connection the database connection used by this AR class.
153
+ */
154
+ public static getDb()
155
+ {
156
+ return BaseChyz.getComponent("db").db
157
+ }
158
+
159
+ get sequelize(): any {
160
+ return this._sequelize;
161
+ }
162
+
163
+ set sequelize(value: any) {
164
+ this._sequelize = value;
165
+ }
166
+
167
+
168
+ /**
169
+ *
170
+ */
171
+ get errors(): any {
172
+ return this._errors;
173
+ }
174
+
175
+ set errors(value: any) {
176
+ this._errors = value;
177
+ }
178
+
95
179
  public init() {
96
- BaseChyz.debug("Model init....",this.constructor.name)
180
+ BaseChyz.debug("Model init....", this.constructor.name)
97
181
  }
98
182
 
183
+
99
184
  public tableName() {
100
185
  return this._tableName;
101
186
  }
@@ -112,21 +197,98 @@ export class Model extends Component {
112
197
  return this._model;
113
198
  }
114
199
 
115
- public save() {
200
+ public async save(params = {}, options = {}) {
116
201
  // now instantiate an object
117
- return this._model.build(this._attributes).save()
202
+ let p = Object.assign(params, this._attributes)
203
+ let result: any;
204
+ try {
205
+ result = await this.model().create(p, options)
206
+ } catch (e) {
207
+ BaseChyz.debug(`Model[${this.constructor.name}].create`, e)
208
+ if (e instanceof ValidationError) {
209
+ let validationErrorItems = e.errors;
210
+ validationErrorItems.forEach(({message, path}) => {
211
+ // @ts-ignore
212
+ this._errors[path] = message
213
+ })
214
+
215
+ return false;
216
+ } else if (e instanceof DatabaseError) {
217
+
218
+ } else if (e instanceof TimeoutError) {
219
+
220
+ } else if (e instanceof UniqueConstraintError) {
221
+
222
+ } else if (e instanceof ForeignKeyConstraintError) {
223
+
224
+ } else if (e instanceof ExclusionConstraintError) {
225
+
226
+ }
227
+ throw new Exception(e.message, this.errors, e.code);
228
+ }
229
+
230
+ return result;
231
+
118
232
  }
119
233
 
120
- public update() {
121
- return this._model.build(this._attributes).update()
234
+ public async bulkCreate(params = {}, options = {}) {
235
+ // now instantiate an object
236
+ let p = Object.assign(params, this._attributes)
237
+ let result: any;
238
+ try {
239
+ result = await this.model().bulkCreate(p, options)
240
+ } catch (e) {
241
+ BaseChyz.debug(`Model[${this.constructor.name}].bulkCreate`, e)
242
+ if (e instanceof ValidationError) {
243
+ let validationErrorItems = e.errors;
244
+ validationErrorItems.forEach(({message, path}) => {
245
+ // @ts-ignore
246
+ this._errors[path] = message
247
+ })
248
+
249
+ return false;
250
+ } else if (e instanceof DatabaseError) {
251
+
252
+ } else if (e instanceof TimeoutError) {
253
+
254
+ } else if (e instanceof UniqueConstraintError) {
255
+
256
+ } else if (e instanceof ForeignKeyConstraintError) {
257
+
258
+ } else if (e instanceof ExclusionConstraintError) {
259
+
260
+ }
261
+ throw new Exception(e.message, this.errors, e.code);
262
+ }
263
+
264
+ return result;
265
+
122
266
  }
123
267
 
124
- public findOne(...args: any[]){
268
+ public update(params = {}, options = {}) {
269
+ let p = Object.assign(params, this._attributes)
270
+ return this.model().update(p, options)
271
+ }
272
+
273
+ public delete(params = {}, options = {}) {
274
+ let p = Object.assign(params, this._attributes)
275
+ return this.model().delete(p, options)
276
+ }
277
+
278
+ /**
279
+ *
280
+ * @param args
281
+ */
282
+ public findOne(...args: any[]) {
125
283
  return this._model.findOne(...arguments)
126
284
  }
127
285
 
128
- public delete(...args: any[]) {
129
- return this._model.delete(...arguments)
286
+ /**
287
+ *
288
+ * @param args
289
+ */
290
+ public findAll(...args: any[]) {
291
+ return this._model.findAll(...arguments)
130
292
  }
131
293
 
132
294
 
@@ -134,6 +296,11 @@ export class Model extends Component {
134
296
 
135
297
  }
136
298
 
299
+ /**
300
+ *
301
+ * @param data
302
+ * @param formName
303
+ */
137
304
  public load(data: any, formName: any = null) {
138
305
  let scope = formName === null ? this.formName() : formName;
139
306
  if (scope === '' && !Utils.isEmpty(data)) {
@@ -146,6 +313,18 @@ export class Model extends Component {
146
313
  return false;
147
314
  }
148
315
 
316
+ public bulkLoad(data: any, formName: any = null) {
317
+ let scope = formName === null ? this.formName() : formName;
318
+ if (scope === '' && !Utils.isEmpty(data)) {
319
+ this.setAttribute(data);
320
+ return true;
321
+ } else if (data[scope]) {
322
+ this.setAttribute(data[scope]);
323
+ return true;
324
+ }
325
+ return false;
326
+ }
327
+
149
328
  public setAttribute(values: any, safeOnly = true) {
150
329
  if (values instanceof Object) {
151
330
  let attributes = this.attributes();
@@ -162,4 +341,14 @@ export class Model extends Component {
162
341
  public attributes() {
163
342
  return {}
164
343
  }
344
+
345
+ /**
346
+ * relation return array
347
+ * [
348
+ *
349
+ * ]
350
+ */
351
+ public relations():Relation[]{
352
+ return []
353
+ }
165
354
  }
@@ -9,6 +9,6 @@ import {BaseError} from "./BaseError";
9
9
 
10
10
  export class NotFoundHttpException extends BaseError {
11
11
  constructor ( public message: string) {
12
- super(message);
12
+ super(message,404);
13
13
  }
14
14
  }
@@ -0,0 +1,28 @@
1
+ /*
2
+ *
3
+ * Copyright (c) 2021.. Chy Bilgisayar Bilisim
4
+ * Author: Cihan Ozturk
5
+ * E-mail: cihan@chy.com.tr
6
+ * Github:https://github.com/cihan53/
7
+ *
8
+ */
9
+
10
+
11
+ import {Component} from "./Component";
12
+
13
+ const axios = require('axios')
14
+
15
+ export class RestClient extends Component {
16
+ public post(url: string, args: any[]) {
17
+ return axios.post(url, args)
18
+ }
19
+
20
+ public get(url: string, args: any[]) {
21
+ return axios.post(url, args)
22
+ }
23
+
24
+ public Rest(params: any) {
25
+ return axios(params)
26
+ }
27
+ }
28
+ export default new RestClient();
@@ -9,8 +9,9 @@ import {BaseError} from "./BaseError";
9
9
 
10
10
  export class UnauthorizedHttpException extends BaseError {
11
11
  constructor ( public message: string) {
12
- super(message);
12
+ super(message,401);
13
13
  }
14
+
14
15
  }
15
16
 
16
17
 
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Copyright (c) 2021. Chy Bilgisayar Bilisim
3
+ * Author: Cihan Ozturk
4
+ * E-mail: cihan@chy.com.tr
5
+ * Github:https://github.com/cihan53/
6
+ */
7
+
8
+ import {BaseError} from "./BaseError";
9
+
10
+ export class ValidationHttpException extends BaseError {
11
+ constructor ( public message: string) {
12
+ super(message,401);
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ import {BaseError} from "../BaseError";
2
+
3
+ export class Exception extends BaseError {
4
+ public errorInfo = [];
5
+ private code: string;
6
+
7
+ constructor(message: string, errorInfo:any = [], code = '', previous = null) {
8
+ super(message);
9
+ this.errorInfo = errorInfo;
10
+ this.name = 'Database Exception' // good practice
11
+ this.code = code // error code for responding to client
12
+ Error.captureStackTrace(this)
13
+ }
14
+ }
package/base/index.ts CHANGED
@@ -11,4 +11,6 @@ export * from "./InvalidConfigException"
11
11
  export * from "./NotFoundHttpException"
12
12
  export * from "./UnauthorizedHttpException"
13
13
  export * from "./DataErrorDbException"
14
+ export * from "./ValidationHttpException"
14
15
  export * from "./Model"
16
+ export * from "./RestClient"
package/dist/BaseChyz.js CHANGED
@@ -17,7 +17,7 @@ const Utils_1 = __importDefault(require("./requiments/Utils"));
17
17
  const express = require("express");
18
18
  const log4js = require("log4js");
19
19
  const fs = require('fs');
20
- const _ = require('lodash');
20
+ var ip = require('ip');
21
21
  var bodyParser = require('body-parser');
22
22
  var methodOverride = require('method-override');
23
23
  class BaseChyz {
@@ -101,7 +101,6 @@ class BaseChyz {
101
101
  * Config set
102
102
  */
103
103
  this.config = config;
104
- this.init();
105
104
  let components = Utils_1.default.findKeyValue(config, "components");
106
105
  if (components) {
107
106
  for (const componentsKey in components) {
@@ -111,6 +110,16 @@ class BaseChyz {
111
110
  (_a = BaseChyz.components[componentsKey]) === null || _a === void 0 ? void 0 : _a.init();
112
111
  }
113
112
  }
113
+ let middlewares = Utils_1.default.findKeyValue(config, "middlewares");
114
+ if (middlewares) {
115
+ for (const middlewareKey in middlewares) {
116
+ let middleware1 = middlewares[middlewareKey];
117
+ BaseChyz.debug("Create middlewares ", middlewareKey);
118
+ BaseChyz.middlewares[middlewareKey] = middleware1;
119
+ // BaseChyz.middlewares[middlewareKey] = Utils.createObject(new middleware1.class, middleware1);
120
+ }
121
+ }
122
+ this.init();
114
123
  return this;
115
124
  }
116
125
  logProvider() {
@@ -122,14 +131,23 @@ class BaseChyz {
122
131
  static logs(...args) {
123
132
  return log4js.getLogger(this.name);
124
133
  }
134
+ static trace(...args) {
135
+ BaseChyz.logs().fatal(...arguments);
136
+ }
137
+ static debug(...args) {
138
+ BaseChyz.logs().debug(...arguments);
139
+ }
125
140
  static info(...args) {
126
141
  BaseChyz.logs().info(...arguments);
127
142
  }
143
+ static warn(...args) {
144
+ BaseChyz.logs().warn(...arguments);
145
+ }
128
146
  static error(...args) {
129
147
  BaseChyz.logs().error(...arguments);
130
148
  }
131
- static debug(...args) {
132
- BaseChyz.logs().debug(...arguments);
149
+ static fatal(...args) {
150
+ BaseChyz.logs().fatal(...arguments);
133
151
  }
134
152
  static warning(...args) {
135
153
  BaseChyz.logs().warn(...arguments);
@@ -160,6 +178,10 @@ class BaseChyz {
160
178
  var _a;
161
179
  return (_a = BaseChyz.components[key]) !== null && _a !== void 0 ? _a : null;
162
180
  }
181
+ static getMiddlewares(key) {
182
+ var _a;
183
+ return (_a = BaseChyz.middlewares[key]) !== null && _a !== void 0 ? _a : null;
184
+ }
163
185
  /**
164
186
  * load contoller
165
187
  */
@@ -204,10 +226,16 @@ class BaseChyz {
204
226
  instance.afterAction(route, req, res);
205
227
  }
206
228
  catch (e) {
207
- BaseChyz.error(e);
208
- // next(e)
209
- res.status(e.statusCode);
210
- res.json({ error: { code: e.statusCode, name: e.name, message: e.message } });
229
+ if (e instanceof Error) {
230
+ BaseChyz.error(e);
231
+ // @ts-ignore
232
+ res.status(e.statusCode || 500);
233
+ // @ts-ignore
234
+ res.json({ error: { code: e.statusCode || 500, name: e.name, message: e.message } });
235
+ }
236
+ else {
237
+ res.json(e);
238
+ }
211
239
  }
212
240
  }));
213
241
  });
@@ -219,8 +247,7 @@ class BaseChyz {
219
247
  BaseChyz.express.use(bodyParser.json());
220
248
  BaseChyz.express.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
221
249
  BaseChyz.express.use(methodOverride());
222
- BaseChyz.express.use(this.errorResponder);
223
- BaseChyz.express.use(this.errorHandler);
250
+ BaseChyz.express.use(methodOverride());
224
251
  // CORS
225
252
  BaseChyz.express.use(function (req, res, next) {
226
253
  // @ts-ignore
@@ -232,12 +259,26 @@ class BaseChyz {
232
259
  res.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Origin,Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers,Authorization");
233
260
  next();
234
261
  });
262
+ //Middlewares
263
+ for (const middleware1 of Object.keys(BaseChyz.middlewares)) {
264
+ if (!Utils_1.default.isFunction(middleware1)) {
265
+ let keycloak = BaseChyz.middlewares[middleware1].keycloak;
266
+ BaseChyz.express.use(keycloak.middleware(BaseChyz.middlewares[middleware1].config));
267
+ }
268
+ else {
269
+ BaseChyz.express.use(BaseChyz.middlewares[middleware1]);
270
+ }
271
+ }
272
+ BaseChyz.express.use(this.errorResponder);
273
+ BaseChyz.express.use(this.errorHandler);
235
274
  }
236
275
  Start() {
237
276
  BaseChyz.info("Express Server Starting");
238
277
  BaseChyz.express.listen(this._port, () => {
239
278
  BaseChyz.info("Express Server Start ");
240
279
  BaseChyz.info(`Liten Port ${this._port}`);
280
+ BaseChyz.info(`http://localhost:${this._port}`);
281
+ BaseChyz.info(`http://${ip.address()}:${this._port}`);
241
282
  });
242
283
  return this;
243
284
  }
@@ -246,4 +287,9 @@ exports.default = BaseChyz;
246
287
  BaseChyz.express = express();
247
288
  BaseChyz.controllers = [];
248
289
  BaseChyz.components = {};
290
+ BaseChyz.middlewares = {};
291
+ process.on('uncaughtException', err => {
292
+ BaseChyz.error('There was an uncaught error', err);
293
+ process.exit(1); //mandatory (as per the Node.js docs)
294
+ });
249
295
  //# sourceMappingURL=BaseChyz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseChyz.js","sourceRoot":"","sources":["../BaseChyz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseChyz.js","sourceRoot":"","sources":["../BaseChyz.ts"],"names":[],"mappings":"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"}