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.
- package/BaseChyz.ts +72 -12
- package/Examples/Controllers/ApiController.ts +88 -30
- package/Examples/Controllers/KeyCloakController.ts +100 -0
- package/Examples/Controllers/PublicController.ts +5 -7
- package/Examples/Controllers/SiteController.ts +82 -32
- package/Examples/Models/Categories.ts +36 -0
- package/Examples/Models/Customer.ts +115 -0
- package/Examples/Models/KeycloakUser.ts +66 -0
- package/Examples/Models/Order.ts +64 -0
- package/Examples/Models/OrderItem.ts +27 -0
- package/Examples/Models/ProductModels.ts +50 -0
- package/Examples/Models/ProductToCategories.ts +35 -0
- package/Examples/Models/Products.ts +49 -0
- package/Examples/Models/Stocks.ts +60 -0
- package/Examples/Models/User.ts +66 -35
- package/Examples/Models/UserPermission.ts +37 -0
- package/Examples/index-keycloack.ts +78 -0
- package/Examples/index.ts +16 -15
- package/Examples/keycloak.json +7 -0
- package/Examples/log/app.log +903 -1034
- package/Examples/log/errors.log +79 -256
- package/Examples/package.json +46 -44
- package/Examples/tsconfig.json +1 -1
- package/README.md +118 -16
- package/base/ActionFilter.ts +2 -2
- package/base/BaseError.ts +2 -2
- package/base/DataErrorDbException.ts +1 -1
- package/base/DbConnection.ts +6 -0
- package/base/ForbiddenHttpException.ts +1 -1
- package/base/InvalidConfigException.ts +1 -1
- package/base/Model.ts +204 -15
- package/base/NotFoundHttpException.ts +1 -1
- package/base/RestClient.ts +28 -0
- package/base/UnauthorizedHttpException.ts +2 -1
- package/base/ValidationHttpException.ts +14 -0
- package/base/db/Exception.ts +14 -0
- package/base/index.ts +2 -0
- package/dist/BaseChyz.js +56 -10
- package/dist/BaseChyz.js.map +1 -1
- package/dist/README.md +270 -0
- package/dist/base/ActionFilter.js +2 -2
- package/dist/base/ActionFilter.js.map +1 -1
- package/dist/base/BaseError.js +2 -2
- package/dist/base/BaseError.js.map +1 -1
- package/dist/base/DataErrorDbException.js +1 -1
- package/dist/base/DataErrorDbException.js.map +1 -1
- package/dist/base/DbConnection.js +3 -0
- package/dist/base/DbConnection.js.map +1 -1
- package/dist/base/ForbiddenHttpException.js +1 -1
- package/dist/base/ForbiddenHttpException.js.map +1 -1
- package/dist/base/InvalidConfigException.js +1 -1
- package/dist/base/InvalidConfigException.js.map +1 -1
- package/dist/base/Model.js +181 -13
- package/dist/base/Model.js.map +1 -1
- package/dist/base/NotFoundHttpException.js +1 -1
- package/dist/base/NotFoundHttpException.js.map +1 -1
- package/dist/base/RestClient.js +27 -0
- package/dist/base/RestClient.js.map +1 -0
- package/dist/base/UnauthorizedHttpException.js +1 -1
- package/dist/base/UnauthorizedHttpException.js.map +1 -1
- package/dist/base/ValidationHttpException.js +18 -0
- package/dist/base/ValidationHttpException.js.map +1 -0
- package/dist/base/db/Exception.js +16 -0
- package/dist/base/db/Exception.js.map +1 -0
- package/dist/base/index.js +2 -0
- package/dist/base/index.js.map +1 -1
- package/dist/filters/AccessControl.js +2 -2
- package/dist/filters/AccessControl.js.map +1 -1
- package/dist/filters/AccessRule.js.map +1 -1
- package/dist/filters/auth/AuthMethod.js +2 -2
- package/dist/filters/auth/AuthMethod.js.map +1 -1
- package/dist/filters/auth/HttpHeaderAuth.js.map +1 -1
- package/dist/filters/auth/JwtHttpBearerAuth.js +1 -0
- package/dist/filters/auth/JwtHttpBearerAuth.js.map +1 -1
- package/dist/filters/auth/KeyCloakHttpBearerAuth.js +117 -0
- package/dist/filters/auth/KeyCloakHttpBearerAuth.js.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +55 -0
- package/dist/web/{User.js → WebUser.js} +12 -7
- package/dist/web/WebUser.js.map +1 -0
- package/filters/AccessControl.ts +3 -3
- package/filters/AccessRule.ts +2 -2
- package/filters/auth/AuthMethod.ts +4 -4
- package/filters/auth/HttpHeaderAuth.ts +2 -2
- package/filters/auth/JwtHttpBearerAuth.ts +4 -5
- package/filters/auth/KeyCloakHttpBearerAuth.ts +115 -0
- package/index.ts +14 -0
- package/package-lock.json +5259 -0
- package/package.json +56 -52
- package/web/{User.ts → WebUser.ts} +10 -6
- package/.idea/Chy-Nodejs-Framework.iml +0 -12
- package/.idea/jsLibraryMappings.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/dist/web/User.js.map +0 -1
package/base/ActionFilter.ts
CHANGED
|
@@ -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
|
|
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 =
|
|
15
|
+
this.statusCode = statusCode // error code for responding to client
|
|
16
16
|
Error.captureStackTrace(this)
|
|
17
17
|
}
|
|
18
18
|
|
package/base/DbConnection.ts
CHANGED
|
@@ -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
|
}
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
121
|
-
|
|
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
|
|
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
|
-
|
|
129
|
-
|
|
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
|
}
|
|
@@ -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();
|
|
@@ -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
|
-
|
|
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
|
|
132
|
-
BaseChyz.logs().
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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(
|
|
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
|
package/dist/BaseChyz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseChyz.js","sourceRoot":"","sources":["../BaseChyz.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4BAA0B;AAI1B,+DAAuC;AAGvC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseChyz.js","sourceRoot":"","sources":["../BaseChyz.ts"],"names":[],"mappings":"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"}
|