namirasoft-node 1.2.26 → 1.2.28
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/dist/BaseApplication.d.ts +12 -6
- package/dist/BaseApplication.js +44 -23
- package/dist/BaseApplication.js.map +1 -1
- package/package.json +4 -2
- package/src/BaseApplication.ts +58 -32
|
@@ -8,10 +8,12 @@ export declare abstract class BaseApplication<D extends BaseDatabase> {
|
|
|
8
8
|
private linkLoader?;
|
|
9
9
|
private links;
|
|
10
10
|
protected base_path: string;
|
|
11
|
-
protected
|
|
12
|
-
protected
|
|
13
|
-
protected
|
|
14
|
-
protected
|
|
11
|
+
protected dir_asset: string;
|
|
12
|
+
protected dir_page: string;
|
|
13
|
+
protected dir_swagger: string;
|
|
14
|
+
protected path_asset: string;
|
|
15
|
+
protected path_page: string;
|
|
16
|
+
protected path_swagger: string;
|
|
15
17
|
protected pkg: PackageService;
|
|
16
18
|
protected title: string;
|
|
17
19
|
protected description: string;
|
|
@@ -34,8 +36,12 @@ export declare abstract class BaseApplication<D extends BaseDatabase> {
|
|
|
34
36
|
protected startSwagger(): Promise<void>;
|
|
35
37
|
protected startHomePage(): Promise<void>;
|
|
36
38
|
protected abstract handleHomePage(_: express.Request, __: express.Response): Promise<void>;
|
|
37
|
-
|
|
38
|
-
protected
|
|
39
|
+
getPathOfAsset(name: string): string;
|
|
40
|
+
protected createAssets(): Promise<void>;
|
|
41
|
+
protected startAssets(): Promise<void>;
|
|
42
|
+
getPathOfPage(name: string): string;
|
|
43
|
+
protected createPages(): Promise<void>;
|
|
44
|
+
protected startPages(): Promise<void>;
|
|
39
45
|
protected startOthers(): Promise<void>;
|
|
40
46
|
protected getRouter(): Promise<Router>;
|
|
41
47
|
protected saveSchema(): Promise<void>;
|
package/dist/BaseApplication.js
CHANGED
|
@@ -40,6 +40,7 @@ const express_1 = __importDefault(require("express"));
|
|
|
40
40
|
const cors_1 = __importDefault(require("cors"));
|
|
41
41
|
const fs = __importStar(require("fs"));
|
|
42
42
|
const path = __importStar(require("path"));
|
|
43
|
+
const serve_index_1 = __importDefault(require("serve-index"));
|
|
43
44
|
const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
|
|
44
45
|
const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
|
|
45
46
|
const namirasoft_core_1 = require("namirasoft-core");
|
|
@@ -51,10 +52,12 @@ class BaseApplication {
|
|
|
51
52
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
52
53
|
this.links = [];
|
|
53
54
|
this.base_path = base_path;
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
55
|
+
this.dir_asset = "./asset";
|
|
56
|
+
this.dir_page = "./page";
|
|
57
|
+
this.dir_swagger = "./swagger";
|
|
58
|
+
this.path_asset = base_path + "/asset";
|
|
59
|
+
this.path_page = base_path + "/page";
|
|
60
|
+
this.path_swagger = this.path_page + "/swagger";
|
|
58
61
|
this.pkg = namirasoft_core_1.PackageService.getMain();
|
|
59
62
|
this.title = (_b = (_a = this.pkg) === null || _a === void 0 ? void 0 : _a.getTitle()) !== null && _b !== void 0 ? _b : "";
|
|
60
63
|
this.description = (_d = (_c = this.pkg) === null || _c === void 0 ? void 0 : _c.getDescription()) !== null && _d !== void 0 ? _d : "";
|
|
@@ -65,13 +68,15 @@ class BaseApplication {
|
|
|
65
68
|
this.addLink = this.addLink.bind(this);
|
|
66
69
|
this.addSwaggerLink = this.addSwaggerLink.bind(this);
|
|
67
70
|
// create folders
|
|
68
|
-
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
71
|
-
if (!fs.existsSync(this.
|
|
72
|
-
fs.mkdirSync(this.
|
|
73
|
-
if (!fs.existsSync(this.
|
|
74
|
-
fs.mkdirSync(this.
|
|
71
|
+
this.dir_asset = path.join(path.dirname(this.pkg.getPath()), this.dir_asset);
|
|
72
|
+
this.dir_page = path.join(path.dirname(this.pkg.getPath()), this.dir_page);
|
|
73
|
+
this.dir_swagger = path.join(path.dirname(this.pkg.getPath()), this.dir_swagger);
|
|
74
|
+
if (!fs.existsSync(this.dir_asset))
|
|
75
|
+
fs.mkdirSync(this.dir_asset);
|
|
76
|
+
if (!fs.existsSync(this.dir_page))
|
|
77
|
+
fs.mkdirSync(this.dir_page);
|
|
78
|
+
if (!fs.existsSync(this.dir_swagger))
|
|
79
|
+
fs.mkdirSync(this.dir_swagger, { recursive: true });
|
|
75
80
|
}
|
|
76
81
|
// start
|
|
77
82
|
start() {
|
|
@@ -84,8 +89,10 @@ class BaseApplication {
|
|
|
84
89
|
yield this.createSwagger();
|
|
85
90
|
yield this.startSwagger();
|
|
86
91
|
yield this.startHomePage();
|
|
87
|
-
yield this.
|
|
88
|
-
yield this.
|
|
92
|
+
yield this.createAssets();
|
|
93
|
+
yield this.startAssets();
|
|
94
|
+
yield this.createPages();
|
|
95
|
+
yield this.startPages();
|
|
89
96
|
}
|
|
90
97
|
yield this.startOthers();
|
|
91
98
|
}
|
|
@@ -142,11 +149,11 @@ class BaseApplication {
|
|
|
142
149
|
let result = yield builder.run();
|
|
143
150
|
for (let name of Object.keys(result.controllers)) {
|
|
144
151
|
const lines = result.controllers[name];
|
|
145
|
-
fs.writeFileSync(this.
|
|
152
|
+
fs.writeFileSync(this.dir_swagger + "/controller_" + name + ".swg", lines.join("\n"));
|
|
146
153
|
}
|
|
147
154
|
for (let name of Object.keys(result.classes)) {
|
|
148
155
|
const lines = result.classes[name];
|
|
149
|
-
fs.writeFileSync(this.
|
|
156
|
+
fs.writeFileSync(this.dir_swagger + "/model_" + name + ".swg", lines.join("\n"));
|
|
150
157
|
}
|
|
151
158
|
});
|
|
152
159
|
}
|
|
@@ -175,13 +182,13 @@ class BaseApplication {
|
|
|
175
182
|
},
|
|
176
183
|
],
|
|
177
184
|
},
|
|
178
|
-
apis: [this.
|
|
185
|
+
apis: [this.dir_swagger + '/*.swg'],
|
|
179
186
|
};
|
|
180
187
|
const swaggerSpec = (0, swagger_jsdoc_1.default)(joptions);
|
|
181
188
|
var options = {
|
|
182
189
|
explorer: true
|
|
183
190
|
};
|
|
184
|
-
this.express.use(this.
|
|
191
|
+
this.express.use(this.path_swagger + "/", swagger_ui_express_1.default.serve, swagger_ui_express_1.default.setup(swaggerSpec, options));
|
|
185
192
|
});
|
|
186
193
|
}
|
|
187
194
|
startHomePage() {
|
|
@@ -191,18 +198,32 @@ class BaseApplication {
|
|
|
191
198
|
});
|
|
192
199
|
});
|
|
193
200
|
}
|
|
194
|
-
|
|
201
|
+
getPathOfAsset(name) {
|
|
202
|
+
return this.path_asset + "/" + name;
|
|
203
|
+
}
|
|
204
|
+
createAssets() {
|
|
205
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
206
|
+
}
|
|
207
|
+
startAssets() {
|
|
208
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
209
|
+
this.express.use(this.path_asset + '/', express_1.default.static('asset', { dotfiles: "allow" }), (0, serve_index_1.default)('asset', { icons: true, view: "details", hidden: true }));
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
getPathOfPage(name) {
|
|
213
|
+
return this.path_page + "/" + name;
|
|
214
|
+
}
|
|
215
|
+
createPages() {
|
|
195
216
|
return __awaiter(this, void 0, void 0, function* () { });
|
|
196
217
|
}
|
|
197
|
-
|
|
218
|
+
startPages() {
|
|
198
219
|
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
-
let files = fs.readdirSync(this.
|
|
220
|
+
let files = fs.readdirSync(this.dir_page);
|
|
200
221
|
for (let i = 0; i < files.length; i++) {
|
|
201
222
|
const file = files[i];
|
|
202
223
|
if (file.endsWith(".html")) {
|
|
203
|
-
const fullPath = path.join(this.
|
|
224
|
+
const fullPath = path.join(this.dir_page, file);
|
|
204
225
|
let name = path.parse(fullPath).name;
|
|
205
|
-
this.express.get(this.
|
|
226
|
+
this.express.get(this.getPathOfPage(name), (_, res) => {
|
|
206
227
|
fs.readFile(fullPath, 'utf8', (err, data) => __awaiter(this, void 0, void 0, function* () {
|
|
207
228
|
if (err)
|
|
208
229
|
return res.status(500).send('Error reading HTML file');
|
|
@@ -298,7 +319,7 @@ class BaseApplication {
|
|
|
298
319
|
addSwaggerLink() {
|
|
299
320
|
this.addLink({
|
|
300
321
|
name: "Swagger",
|
|
301
|
-
url: this.
|
|
322
|
+
url: this.path_swagger + "/",
|
|
302
323
|
logo: "https://static.namirasoft.com/logo/swagger/base.png",
|
|
303
324
|
description: this.description + " Swagger"
|
|
304
325
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0C;AAC1C,gDAAwB;AACxB,uCAAyB;AACzB,2CAA6B;AAC7B,4EAA2C;AAC3C,kEAAyC;AAIzC,qDAA6D;AAC7D,yDAAqG;AACrG,6CAA0C;AAC1C,qDAAkD;AAElD,MAAsB,eAAe;
|
|
1
|
+
{"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0C;AAC1C,gDAAwB;AACxB,uCAAyB;AACzB,2CAA6B;AAC7B,8DAAqC;AACrC,4EAA2C;AAC3C,kEAAyC;AAIzC,qDAA6D;AAC7D,yDAAqG;AACrG,6CAA0C;AAC1C,qDAAkD;AAElD,MAAsB,eAAe;IAoBjC,YAAY,SAAiB;;QAjBrB,UAAK,GAA0B,EAAE,CAAC;QAmBtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAChD,IAAI,CAAC,GAAG,GAAG,gCAAc,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE,mCAAI,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,cAAc,EAAE,mCAAI,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,OAAO,EAAE,mCAAI,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,UAAU,EAAE,mCAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,uBAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAChF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErD,iBAAiB;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAKD,QAAQ;IACF,KAAK;;YAEP,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAChC;gBACI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EACtB;oBACI,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;iBAC3B;gBACD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aAC5B;iBAED;gBACI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;aAC3B;QACL,CAAC;KAAA;IACe,iBAAiB;;YAE7B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;gBAC3B,OAAO;YAEX,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;gBAExC,IAAI,MAAM,YAAY,KAAK;oBACvB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;oBAEpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAEtC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IACe,aAAa;;YAEzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;KAAA;IACe,YAAY;;YAExB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAChC;gBACI,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAO,GAAE,CAAC;gBACzB,UAAU;gBACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,OAAO;gBACP,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBACjD,aAAa;gBACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC9C,eAAe;gBACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAS,EAAE;oBAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;gBACzD,CAAC,CAAA,CAAC,CAAC;aACN;QACL,CAAC;KAAA;IACe,aAAa;;YAEzB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,OAAO,GAAG,IAAI,6CAAyB,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAChD;gBACI,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,GAAG,cAAc,GAAG,IAAI,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACzF;YACD,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC5C;gBACI,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACpF;QACL,CAAC;KAAA;IACe,YAAY;;YAExB,MAAM,QAAQ,GAAG;gBACb,UAAU,EAAE;oBACR,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE;wBACF,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,aAAa;wBACb,mBAAmB;wBACnB,iDAAiD;wBACjD,KAAK;wBACL,aAAa;wBACb,+BAA+B;wBAC/B,qCAAqC;wBACrC,wCAAwC;wBACxC,KAAK;qBACR;oBACD,OAAO,EAAE;wBACL;4BACI,GAAG,EAAE,IAAI,CAAC,SAAS;yBACtB;qBACJ;iBACJ;gBACD,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;aACtC,CAAC;YACF,MAAM,WAAW,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG;gBACV,QAAQ,EAAE,IAAI;aACjB,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,4BAAS,CAAC,KAAK,EAAE,4BAAS,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACtG,CAAC;KAAA;IACe,aAAa;;YAEzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBAEhD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEM,cAAc,CAAC,IAAY;QAE9B,OAAO,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;IACxC,CAAC;IACe,YAAY;8DAC1B,CAAC;KAAA;IACa,WAAW;;YAEvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,EAClC,iBAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAC9C,IAAA,qBAAU,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;KAAA;IACM,aAAa,CAAC,IAAY;QAE7B,OAAO,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;IACvC,CAAC;IACe,WAAW;8DACzB,CAAC;KAAA;IACa,UAAU;;YAEtB,IAAI,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EACrC;gBACI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1B;oBACI,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAChD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;wBAElD,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAO,GAAQ,EAAE,IAAY,EAAE,EAAE;4BAE3D,IAAI,GAAG;gCACH,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;4BAC3D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACf,OAAO;wBACX,CAAC,CAAA,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;iBACN;aACJ;QACL,CAAC;KAAA;IACe,WAAW;8DACzB,CAAC;KAAA;IACa,SAAS;;YAErB,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAC3C;gBACI,IACA;oBACI,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAQ,CAAC;oBACvC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBAChD,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,QAAQ,GAAG,EAAE,CAAC;oBAClB,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;wBAC5B,QAAQ,CAAC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACvE,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO;wBAC3B,QAAQ,CAAC,IAAI,CAAC,iBAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACnE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAoB,EAAE,GAAqB,EAAE,EAAE;wBAE1D,IAAI,UAAU,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAC9C,UAAU,CAAC,GAAG,EAAE,CAAC;oBACrB,CAAC,CAAC,CAAC;oBACH,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtC,IAAI,EAAE,GAAyB,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;oBACpE,KAAK,IAAI,CAAC,IAAI,EAAE;wBACZ,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrD,IAAI,IAAI,CAAC,MAAM,IAAI,4BAAU,CAAC,GAAG;wBAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;yBAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,4BAAU,CAAC,IAAI;wBACnC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;yBAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,4BAAU,CAAC,GAAG;wBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;yBAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,4BAAU,CAAC,MAAM;wBACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;;wBAEjC,MAAM;iBACb;gBAAC,OAAO,KAAK,EACd;oBACI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBACnC;aACJ;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IACD,SAAS;IACO,UAAU;;YAEtB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;KAAA;IACK,SAAS;;YAEX,IAAI,MAAM,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAC3C;gBACI,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAQ,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAClC,IAAI,QAAQ,YAAY,+BAAc;oBAClC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;aAC3D;YACD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IACD,UAAU;IACJ,QAAQ;;YAEV,IAAI,IAAI,CAAC,UAAU,EACnB;gBACI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;aAC3B;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;KAAA;IACD,aAAa,CAAC,UAA+B;QAEzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,IAAyB;QAE7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,cAAc;QAEV,IAAI,CAAC,OAAO,CAAC;YACT,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,GAAG;YAC5B,IAAI,EAAE,qDAAqD;YAC3D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,UAAU;SAC7C,CAAC,CAAC;IACP,CAAC;CACJ;AAxTD,0CAwTC"}
|
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.
|
|
4
|
+
"version": "1.2.28",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"scripts": {},
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"@types/node": "^20.11.27",
|
|
15
15
|
"@types/nodemailer": "^6.4.14",
|
|
16
16
|
"@types/nodemailer-smtp-transport": "^2.7.8",
|
|
17
|
+
"@types/serve-index": "^1.9.4",
|
|
17
18
|
"@types/swagger-jsdoc": "^6.0.4",
|
|
18
19
|
"@types/swagger-ui-express": "^4.1.6",
|
|
19
20
|
"cors": "^2.8.5",
|
|
@@ -21,10 +22,11 @@
|
|
|
21
22
|
"joi": "^17.12.2",
|
|
22
23
|
"namirasoft-core": "^1.2.16",
|
|
23
24
|
"namirasoft-log": "^1.2.0",
|
|
24
|
-
"namirasoft-schema": "^1.2.
|
|
25
|
+
"namirasoft-schema": "^1.2.23",
|
|
25
26
|
"nodemailer": "^6.9.12",
|
|
26
27
|
"nodemailer-smtp-transport": "^2.7.4",
|
|
27
28
|
"request-ip": "^3.3.0",
|
|
29
|
+
"serve-index": "^1.9.1",
|
|
28
30
|
"swagger-jsdoc": "^6.2.8",
|
|
29
31
|
"swagger-ui-express": "^5.0.0"
|
|
30
32
|
}
|
package/src/BaseApplication.ts
CHANGED
|
@@ -2,6 +2,7 @@ import express, { Router } from 'express';
|
|
|
2
2
|
import cors from "cors";
|
|
3
3
|
import * as fs from "fs";
|
|
4
4
|
import * as path from 'path';
|
|
5
|
+
import serveIndex from "serve-index";
|
|
5
6
|
import swaggerUi from 'swagger-ui-express';
|
|
6
7
|
import swaggerJSDoc from 'swagger-jsdoc';
|
|
7
8
|
import { BaseDatabase } from './BaseDatabase';
|
|
@@ -17,10 +18,12 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
17
18
|
private linkLoader?: () => Promise<void>;
|
|
18
19
|
private links: BaseApplicationLink[] = [];
|
|
19
20
|
protected base_path: string;
|
|
20
|
-
protected
|
|
21
|
-
protected
|
|
22
|
-
protected
|
|
23
|
-
protected
|
|
21
|
+
protected dir_asset: string;
|
|
22
|
+
protected dir_page: string;
|
|
23
|
+
protected dir_swagger: string;
|
|
24
|
+
protected path_asset: string;
|
|
25
|
+
protected path_page: string;
|
|
26
|
+
protected path_swagger: string;
|
|
24
27
|
protected pkg: PackageService;
|
|
25
28
|
protected title: string;
|
|
26
29
|
protected description: string;
|
|
@@ -33,10 +36,12 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
33
36
|
constructor(base_path: string)
|
|
34
37
|
{
|
|
35
38
|
this.base_path = base_path;
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
39
|
+
this.dir_asset = "./asset";
|
|
40
|
+
this.dir_page = "./page";
|
|
41
|
+
this.dir_swagger = "./swagger";
|
|
42
|
+
this.path_asset = base_path + "/asset";
|
|
43
|
+
this.path_page = base_path + "/page";
|
|
44
|
+
this.path_swagger = this.path_page + "/swagger";
|
|
40
45
|
this.pkg = PackageService.getMain();
|
|
41
46
|
this.title = this.pkg?.getTitle() ?? "";
|
|
42
47
|
this.description = this.pkg?.getDescription() ?? "";
|
|
@@ -46,15 +51,17 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
46
51
|
this.logger = this.getLogger();
|
|
47
52
|
this.addLink = this.addLink.bind(this);
|
|
48
53
|
this.addSwaggerLink = this.addSwaggerLink.bind(this);
|
|
49
|
-
|
|
54
|
+
|
|
50
55
|
// create folders
|
|
51
|
-
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
if (!fs.existsSync(this.
|
|
55
|
-
|
|
56
|
-
if (!fs.existsSync(this.
|
|
57
|
-
|
|
56
|
+
this.dir_asset = path.join(path.dirname(this.pkg.getPath()), this.dir_asset);
|
|
57
|
+
this.dir_page = path.join(path.dirname(this.pkg.getPath()), this.dir_page);
|
|
58
|
+
this.dir_swagger = path.join(path.dirname(this.pkg.getPath()), this.dir_swagger);
|
|
59
|
+
if (!fs.existsSync(this.dir_asset))
|
|
60
|
+
fs.mkdirSync(this.dir_asset);
|
|
61
|
+
if (!fs.existsSync(this.dir_page))
|
|
62
|
+
fs.mkdirSync(this.dir_page);
|
|
63
|
+
if (!fs.existsSync(this.dir_swagger))
|
|
64
|
+
fs.mkdirSync(this.dir_swagger, { recursive: true });
|
|
58
65
|
}
|
|
59
66
|
protected abstract getDatabase(): D;
|
|
60
67
|
protected abstract getLogger(): ILogger;
|
|
@@ -73,8 +80,10 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
73
80
|
await this.createSwagger();
|
|
74
81
|
await this.startSwagger();
|
|
75
82
|
await this.startHomePage();
|
|
76
|
-
await this.
|
|
77
|
-
await this.
|
|
83
|
+
await this.createAssets();
|
|
84
|
+
await this.startAssets();
|
|
85
|
+
await this.createPages();
|
|
86
|
+
await this.startPages();
|
|
78
87
|
}
|
|
79
88
|
await this.startOthers();
|
|
80
89
|
}
|
|
@@ -134,12 +143,12 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
134
143
|
for (let name of Object.keys(result.controllers))
|
|
135
144
|
{
|
|
136
145
|
const lines = result.controllers[name];
|
|
137
|
-
fs.writeFileSync(this.
|
|
146
|
+
fs.writeFileSync(this.dir_swagger + "/controller_" + name + ".swg", lines.join("\n"));
|
|
138
147
|
}
|
|
139
148
|
for (let name of Object.keys(result.classes))
|
|
140
149
|
{
|
|
141
150
|
const lines = result.classes[name];
|
|
142
|
-
fs.writeFileSync(this.
|
|
151
|
+
fs.writeFileSync(this.dir_swagger + "/model_" + name + ".swg", lines.join("\n"));
|
|
143
152
|
}
|
|
144
153
|
}
|
|
145
154
|
protected async startSwagger(): Promise<void>
|
|
@@ -167,13 +176,13 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
167
176
|
},
|
|
168
177
|
],
|
|
169
178
|
},
|
|
170
|
-
apis: [this.
|
|
179
|
+
apis: [this.dir_swagger + '/*.swg'],
|
|
171
180
|
};
|
|
172
181
|
const swaggerSpec = swaggerJSDoc(joptions);
|
|
173
182
|
var options = {
|
|
174
183
|
explorer: true
|
|
175
184
|
};
|
|
176
|
-
this.express.use(this.
|
|
185
|
+
this.express.use(this.path_swagger + "/", swaggerUi.serve, swaggerUi.setup(swaggerSpec, options));
|
|
177
186
|
}
|
|
178
187
|
protected async startHomePage(): Promise<void>
|
|
179
188
|
{
|
|
@@ -182,19 +191,36 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
182
191
|
this.handleHomePage(req, res);
|
|
183
192
|
});
|
|
184
193
|
}
|
|
185
|
-
protected abstract handleHomePage(_: express.Request,__: express.Response): Promise<void>;
|
|
186
|
-
|
|
194
|
+
protected abstract handleHomePage(_: express.Request, __: express.Response): Promise<void>;
|
|
195
|
+
public getPathOfAsset(name: string)
|
|
196
|
+
{
|
|
197
|
+
return this.path_asset + "/" + name;
|
|
198
|
+
}
|
|
199
|
+
protected async createAssets(): Promise<void>
|
|
200
|
+
{ }
|
|
201
|
+
protected async startAssets(): Promise<void>
|
|
202
|
+
{
|
|
203
|
+
this.express.use(this.path_asset + '/',
|
|
204
|
+
express.static('asset', { dotfiles: "allow" }),
|
|
205
|
+
serveIndex('asset', { icons: true, view: "details", hidden: true }));
|
|
206
|
+
}
|
|
207
|
+
public getPathOfPage(name: string)
|
|
208
|
+
{
|
|
209
|
+
return this.path_page + "/" + name;
|
|
210
|
+
}
|
|
211
|
+
protected async createPages(): Promise<void>
|
|
187
212
|
{ }
|
|
188
|
-
protected async
|
|
213
|
+
protected async startPages(): Promise<void>
|
|
189
214
|
{
|
|
190
|
-
let files = fs.readdirSync(this.
|
|
191
|
-
for (let i = 0; i < files.length; i++)
|
|
215
|
+
let files = fs.readdirSync(this.dir_page);
|
|
216
|
+
for (let i = 0; i < files.length; i++)
|
|
217
|
+
{
|
|
192
218
|
const file = files[i];
|
|
193
|
-
if(file.endsWith(".html"))
|
|
219
|
+
if (file.endsWith(".html"))
|
|
194
220
|
{
|
|
195
|
-
const fullPath = path.join(this.
|
|
221
|
+
const fullPath = path.join(this.dir_page, file);
|
|
196
222
|
let name = path.parse(fullPath).name;
|
|
197
|
-
this.express.get(this.
|
|
223
|
+
this.express.get(this.getPathOfPage(name), (_, res) =>
|
|
198
224
|
{
|
|
199
225
|
fs.readFile(fullPath, 'utf8', async (err: any, data: string) =>
|
|
200
226
|
{
|
|
@@ -204,7 +230,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
204
230
|
return;
|
|
205
231
|
});
|
|
206
232
|
});
|
|
207
|
-
}
|
|
233
|
+
}
|
|
208
234
|
}
|
|
209
235
|
}
|
|
210
236
|
protected async startOthers(): Promise<void>
|
|
@@ -294,7 +320,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
294
320
|
{
|
|
295
321
|
this.addLink({
|
|
296
322
|
name: "Swagger",
|
|
297
|
-
url: this.
|
|
323
|
+
url: this.path_swagger + "/",
|
|
298
324
|
logo: "https://static.namirasoft.com/logo/swagger/base.png",
|
|
299
325
|
description: this.description + " Swagger"
|
|
300
326
|
});
|