namirasoft-node 1.2.12 → 1.2.13

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.
@@ -2,28 +2,27 @@ import express, { Router } from 'express';
2
2
  import { BaseDatabase } from './BaseDatabase';
3
3
  import { ILogger } from "namirasoft-log";
4
4
  import { BaseApplicationLink } from './BaseApplicationLink';
5
+ import { PackageService } from 'namirasoft-core';
5
6
  import { ApplicationSchema } from 'namirasoft-schema';
6
7
  export declare abstract class BaseApplication<D extends BaseDatabase> {
7
- private title;
8
+ private linkLoader?;
9
+ private links;
10
+ protected pkg: PackageService;
11
+ protected title: string;
8
12
  protected description: string;
9
13
  protected logo: string;
10
14
  protected version: string;
11
15
  protected base_path: string;
12
16
  protected swagger_path: string;
13
17
  protected swagger_dir: string;
14
- private linkLoader?;
15
- private links;
16
18
  express: express.Express;
17
19
  database: D;
18
20
  logger: ILogger;
21
+ constructor(base_path: string, swagger_path?: string | null);
19
22
  protected abstract getDatabase(): D;
20
23
  protected abstract getLogger(): ILogger;
21
- protected abstract getRouter(): Promise<Router>;
22
24
  protected abstract getPort(): number;
23
- constructor(base_path: string, swagger_path?: string | null);
24
- setLinkLoader(linkLoader: () => Promise<void>): void;
25
- addLink(link: BaseApplicationLink): void;
26
- addSwaggerLink(): void;
25
+ protected abstract getControllers(): any[];
27
26
  start(): Promise<void>;
28
27
  protected startCrashHandler(): Promise<void>;
29
28
  protected startDatabase(): Promise<void>;
@@ -31,7 +30,11 @@ export declare abstract class BaseApplication<D extends BaseDatabase> {
31
30
  protected createSwagger(): Promise<void>;
32
31
  protected startSwagger(): Promise<void>;
33
32
  protected startHomePage(): Promise<void>;
33
+ protected startOthers(): Promise<void>;
34
+ protected getRouter(): Promise<Router>;
34
35
  protected saveSchema(): Promise<void>;
35
- abstract onStart(): Promise<void>;
36
- abstract getSchema(): Promise<ApplicationSchema>;
36
+ getSchema(): Promise<ApplicationSchema>;
37
+ setLinkLoader(linkLoader: () => Promise<void>): void;
38
+ addLink(link: BaseApplicationLink): void;
39
+ addSwaggerLink(): void;
37
40
  }
@@ -45,15 +45,16 @@ const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
45
45
  const namirasoft_core_1 = require("namirasoft-core");
46
46
  const namirasoft_schema_1 = require("namirasoft-schema");
47
47
  const EnvService_1 = require("./EnvService");
48
+ const BaseController_1 = require("./BaseController");
48
49
  class BaseApplication {
49
50
  constructor(base_path, swagger_path = null) {
50
- var _a, _b, _c, _d;
51
+ var _a, _b, _c, _d, _e, _f, _g, _h;
51
52
  this.links = [];
52
- let json = namirasoft_core_1.PackageService.getMain();
53
- this.title = (_a = json === null || json === void 0 ? void 0 : json.getTitle()) !== null && _a !== void 0 ? _a : "";
54
- this.description = (_b = json === null || json === void 0 ? void 0 : json.getDescription()) !== null && _b !== void 0 ? _b : "";
55
- this.logo = (_c = json === null || json === void 0 ? void 0 : json.getLogo()) !== null && _c !== void 0 ? _c : "";
56
- this.version = (_d = json === null || json === void 0 ? void 0 : json.getVersion()) !== null && _d !== void 0 ? _d : "";
53
+ this.pkg = namirasoft_core_1.PackageService.getMain();
54
+ this.title = (_b = (_a = this.pkg) === null || _a === void 0 ? void 0 : _a.getTitle()) !== null && _b !== void 0 ? _b : "";
55
+ this.description = (_d = (_c = this.pkg) === null || _c === void 0 ? void 0 : _c.getDescription()) !== null && _d !== void 0 ? _d : "";
56
+ this.logo = (_f = (_e = this.pkg) === null || _e === void 0 ? void 0 : _e.getLogo()) !== null && _f !== void 0 ? _f : "";
57
+ this.version = (_h = (_g = this.pkg) === null || _g === void 0 ? void 0 : _g.getVersion()) !== null && _h !== void 0 ? _h : "";
57
58
  this.base_path = base_path;
58
59
  this.swagger_path = swagger_path !== null && swagger_path !== void 0 ? swagger_path : (base_path + "/swagger");
59
60
  this.swagger_dir = "./swagger";
@@ -61,20 +62,7 @@ class BaseApplication {
61
62
  this.addLink = this.addLink.bind(this);
62
63
  this.addSwaggerLink = this.addSwaggerLink.bind(this);
63
64
  }
64
- setLinkLoader(linkLoader) {
65
- this.linkLoader = linkLoader;
66
- }
67
- addLink(link) {
68
- this.links.push(link);
69
- }
70
- addSwaggerLink() {
71
- this.addLink({
72
- name: "Swagger",
73
- url: this.swagger_path + "/",
74
- logo: "https://static.namirasoft.com/logo/swagger/base.png",
75
- description: this.description + " Swagger"
76
- });
77
- }
65
+ // start
78
66
  start() {
79
67
  return __awaiter(this, void 0, void 0, function* () {
80
68
  yield this.startCrashHandler();
@@ -87,7 +75,7 @@ class BaseApplication {
87
75
  yield this.startSwagger();
88
76
  yield this.startHomePage();
89
77
  }
90
- yield this.onStart();
78
+ yield this.startOthers();
91
79
  }
92
80
  else {
93
81
  yield this.saveSchema();
@@ -228,12 +216,81 @@ class BaseApplication {
228
216
  });
229
217
  });
230
218
  }
219
+ startOthers() {
220
+ return __awaiter(this, void 0, void 0, function* () { });
221
+ }
222
+ getRouter() {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ const router = express_1.default.Router({ mergeParams: true });
225
+ let controllers = this.getControllers();
226
+ for (let i = 0; i < controllers.length; i++) {
227
+ try {
228
+ const Template = controllers[i];
229
+ const template = new Template(this, null, null);
230
+ let info = template.getInfo();
231
+ let func = (req, res) => {
232
+ let controller = new Template(this, req, res);
233
+ controller.run();
234
+ };
235
+ let path = this.base_path + info.path;
236
+ let ps = yield template.getParametersSchema();
237
+ for (let p of ps)
238
+ path = path.replace(`{${p.name}}`, `:${p.name}`);
239
+ if (info.method == namirasoft_core_1.HTTPMethod.GET)
240
+ router.get(path, func);
241
+ else if (info.method == namirasoft_core_1.HTTPMethod.POST)
242
+ router.post(path, func);
243
+ else if (info.method == namirasoft_core_1.HTTPMethod.PUT)
244
+ router.put(path, func);
245
+ else if (info.method == namirasoft_core_1.HTTPMethod.DELETE)
246
+ router.delete(path, func);
247
+ else
248
+ break;
249
+ }
250
+ catch (error) {
251
+ this.logger.onCatchError(error);
252
+ }
253
+ }
254
+ return router;
255
+ });
256
+ }
257
+ // schema
231
258
  saveSchema() {
232
259
  return __awaiter(this, void 0, void 0, function* () {
233
260
  let schema = yield this.getSchema();
234
261
  schema.toFile("./application.schema");
235
262
  });
236
263
  }
264
+ getSchema() {
265
+ return __awaiter(this, void 0, void 0, function* () {
266
+ let schema = new namirasoft_schema_1.ApplicationSchema(this.pkg);
267
+ let controllers = this.getControllers();
268
+ for (let i = 0; i < controllers.length; i++) {
269
+ const Template = controllers[i];
270
+ const template = new Template(this, null, null);
271
+ template.database = this.database;
272
+ if (template instanceof BaseController_1.BaseController)
273
+ schema.controllers.push(yield template.getSchema());
274
+ }
275
+ schema.check();
276
+ return schema;
277
+ });
278
+ }
279
+ // public
280
+ setLinkLoader(linkLoader) {
281
+ this.linkLoader = linkLoader;
282
+ }
283
+ addLink(link) {
284
+ this.links.push(link);
285
+ }
286
+ addSwaggerLink() {
287
+ this.addLink({
288
+ name: "Swagger",
289
+ url: this.swagger_path + "/",
290
+ logo: "https://static.namirasoft.com/logo/swagger/base.png",
291
+ description: this.description + " Swagger"
292
+ });
293
+ }
237
294
  }
238
295
  exports.BaseApplication = BaseApplication;
239
296
  //# sourceMappingURL=BaseApplication.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "namirasoft-node",
3
3
  "description": "Namira Software Corporation Node NPM Package",
4
- "version": "1.2.12",
4
+ "version": "1.2.13",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {},
@@ -7,35 +7,33 @@ import swaggerJSDoc from 'swagger-jsdoc';
7
7
  import { BaseDatabase } from './BaseDatabase';
8
8
  import { ILogger } from "namirasoft-log";
9
9
  import { BaseApplicationLink } from './BaseApplicationLink';
10
- import { PackageService } from 'namirasoft-core';
11
- import { ApplicationSchema, SwaggerApplicationBuilder } from 'namirasoft-schema';
10
+ import { HTTPMethod, PackageService } from 'namirasoft-core';
11
+ import { ApplicationSchema, BaseVariableSchema, SwaggerApplicationBuilder } from 'namirasoft-schema';
12
12
  import { EnvService } from './EnvService';
13
+ import { BaseController } from './BaseController';
13
14
 
14
15
  export abstract class BaseApplication<D extends BaseDatabase>
15
16
  {
16
- private title: string;
17
+ private linkLoader?: () => Promise<void>;
18
+ private links: BaseApplicationLink[] = [];
19
+ protected pkg: PackageService;
20
+ protected title: string;
17
21
  protected description: string;
18
22
  protected logo: string;
19
23
  protected version: string;
20
24
  protected base_path: string;
21
25
  protected swagger_path: string;
22
26
  protected swagger_dir: string;
23
- private linkLoader?: () => Promise<void>;
24
- private links: BaseApplicationLink[] = [];
25
27
  public express!: express.Express;
26
28
  public database!: D;
27
29
  public logger: ILogger;
28
- protected abstract getDatabase(): D;
29
- protected abstract getLogger(): ILogger;
30
- protected abstract getRouter(): Promise<Router>;
31
- protected abstract getPort(): number;
32
30
  constructor(base_path: string, swagger_path: string | null = null)
33
31
  {
34
- let json = PackageService.getMain();
35
- this.title = json?.getTitle() ?? "";
36
- this.description = json?.getDescription() ?? "";
37
- this.logo = json?.getLogo() ?? "";
38
- this.version = json?.getVersion() ?? "";
32
+ this.pkg = PackageService.getMain();
33
+ this.title = this.pkg?.getTitle() ?? "";
34
+ this.description = this.pkg?.getDescription() ?? "";
35
+ this.logo = this.pkg?.getLogo() ?? "";
36
+ this.version = this.pkg?.getVersion() ?? "";
39
37
  this.base_path = base_path;
40
38
  this.swagger_path = swagger_path ?? (base_path + "/swagger");
41
39
  this.swagger_dir = "./swagger";
@@ -43,23 +41,11 @@ export abstract class BaseApplication<D extends BaseDatabase>
43
41
  this.addLink = this.addLink.bind(this);
44
42
  this.addSwaggerLink = this.addSwaggerLink.bind(this);
45
43
  }
46
- setLinkLoader(linkLoader: () => Promise<void>)
47
- {
48
- this.linkLoader = linkLoader;
49
- }
50
- addLink(link: BaseApplicationLink)
51
- {
52
- this.links.push(link);
53
- }
54
- addSwaggerLink()
55
- {
56
- this.addLink({
57
- name: "Swagger",
58
- url: this.swagger_path + "/",
59
- logo: "https://static.namirasoft.com/logo/swagger/base.png",
60
- description: this.description + " Swagger"
61
- });
62
- }
44
+ protected abstract getDatabase(): D;
45
+ protected abstract getLogger(): ILogger;
46
+ protected abstract getPort(): number;
47
+ protected abstract getControllers(): any[];
48
+ // start
63
49
  async start()
64
50
  {
65
51
  await this.startCrashHandler();
@@ -74,7 +60,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
74
60
  await this.startSwagger();
75
61
  await this.startHomePage();
76
62
  }
77
- await this.onStart();
63
+ await this.startOthers();
78
64
  }
79
65
  else
80
66
  {
@@ -224,11 +210,82 @@ export abstract class BaseApplication<D extends BaseDatabase>
224
210
  });
225
211
  });
226
212
  }
213
+ protected async startOthers(): Promise<void>
214
+ { }
215
+ protected async getRouter(): Promise<Router>
216
+ {
217
+ const router = express.Router({ mergeParams: true });
218
+ let controllers = this.getControllers();
219
+ for (let i = 0; i < controllers.length; i++)
220
+ {
221
+ try
222
+ {
223
+ const Template = controllers[i] as any;
224
+ const template = new Template(this, null, null);
225
+ let info = template.getInfo();
226
+ let func = (req: express.Request, res: express.Response) =>
227
+ {
228
+ let controller = new Template(this, req, res);
229
+ controller.run();
230
+ };
231
+ let path = this.base_path + info.path;
232
+ let ps: BaseVariableSchema[] = await template.getParametersSchema();
233
+ for (let p of ps)
234
+ path = path.replace(`{${p.name}}`, `:${p.name}`);
235
+ if (info.method == HTTPMethod.GET)
236
+ router.get(path, func);
237
+ else if (info.method == HTTPMethod.POST)
238
+ router.post(path, func);
239
+ else if (info.method == HTTPMethod.PUT)
240
+ router.put(path, func);
241
+ else if (info.method == HTTPMethod.DELETE)
242
+ router.delete(path, func);
243
+ else
244
+ break;
245
+ } catch (error)
246
+ {
247
+ this.logger.onCatchError(error);
248
+ }
249
+ }
250
+ return router;
251
+ }
252
+ // schema
227
253
  protected async saveSchema()
228
254
  {
229
255
  let schema = await this.getSchema();
230
256
  schema.toFile("./application.schema");
231
257
  }
232
- abstract onStart(): Promise<void>;
233
- abstract getSchema(): Promise<ApplicationSchema>;
258
+ async getSchema(): Promise<ApplicationSchema>
259
+ {
260
+ let schema = new ApplicationSchema(this.pkg);
261
+ let controllers = this.getControllers();
262
+ for (let i = 0; i < controllers.length; i++)
263
+ {
264
+ const Template = controllers[i] as any;
265
+ const template = new Template(this, null, null);
266
+ template.database = this.database;
267
+ if (template instanceof BaseController)
268
+ schema.controllers.push(await template.getSchema());
269
+ }
270
+ schema.check();
271
+ return schema;
272
+ }
273
+ // public
274
+ setLinkLoader(linkLoader: () => Promise<void>)
275
+ {
276
+ this.linkLoader = linkLoader;
277
+ }
278
+ addLink(link: BaseApplicationLink)
279
+ {
280
+ this.links.push(link);
281
+ }
282
+ addSwaggerLink()
283
+ {
284
+ this.addLink({
285
+ name: "Swagger",
286
+ url: this.swagger_path + "/",
287
+ logo: "https://static.namirasoft.com/logo/swagger/base.png",
288
+ description: this.description + " Swagger"
289
+ });
290
+ }
234
291
  }