@adaptivestone/framework 5.0.0-beta.4 → 5.0.0-beta.40
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/CHANGELOG.md +1107 -528
- package/LICENCE +1 -1
- package/dist/Cli.d.ts +7 -0
- package/dist/Cli.js +19 -0
- package/dist/Cli.js.map +1 -0
- package/dist/cluster.d.ts +1 -0
- package/dist/cluster.js +18 -0
- package/dist/cluster.js.map +1 -0
- package/dist/commands/CreateUser.d.ts +32 -0
- package/dist/commands/CreateUser.js +83 -0
- package/dist/commands/CreateUser.js.map +1 -0
- package/dist/commands/Documentation.d.ts +5 -0
- package/dist/commands/Documentation.js +15 -0
- package/dist/commands/Documentation.js.map +1 -0
- package/dist/commands/DropIndex.d.ts +16 -0
- package/dist/commands/DropIndex.js +30 -0
- package/dist/commands/DropIndex.js.map +1 -0
- package/dist/commands/GenerateRandomBytes.d.ts +7 -0
- package/dist/commands/GenerateRandomBytes.js +18 -0
- package/dist/commands/GenerateRandomBytes.js.map +1 -0
- package/dist/commands/GenerateTypes.d.ts +11 -0
- package/dist/commands/GenerateTypes.js +52 -0
- package/dist/commands/GenerateTypes.js.map +1 -0
- package/dist/commands/GetOpenApiJson.d.ts +17 -0
- package/dist/commands/GetOpenApiJson.js +272 -0
- package/dist/commands/GetOpenApiJson.js.map +1 -0
- package/dist/commands/SyncIndexes.d.ts +6 -0
- package/dist/commands/SyncIndexes.js +31 -0
- package/dist/commands/SyncIndexes.js.map +1 -0
- package/dist/commands/migration/Create.d.ts +18 -0
- package/dist/commands/migration/Create.js +57 -0
- package/dist/commands/migration/Create.js.map +1 -0
- package/dist/commands/migration/Migrate.d.ts +6 -0
- package/dist/commands/migration/Migrate.js +43 -0
- package/dist/commands/migration/Migrate.js.map +1 -0
- package/dist/config/auth.d.ts +6 -0
- package/dist/config/auth.js +7 -0
- package/dist/config/auth.js.map +1 -0
- package/dist/config/http.d.ts +8 -0
- package/dist/config/http.js +10 -0
- package/dist/config/http.js.map +1 -0
- package/dist/config/i18n.d.ts +13 -0
- package/dist/config/i18n.js +13 -0
- package/dist/config/i18n.js.map +1 -0
- package/dist/config/ipDetector.d.ts +5 -0
- package/dist/config/ipDetector.js +15 -0
- package/dist/config/ipDetector.js.map +1 -0
- package/dist/config/log.d.ts +11 -0
- package/dist/config/log.js +20 -0
- package/dist/config/log.js.map +1 -0
- package/dist/config/mongo.d.ts +4 -0
- package/dist/config/mongo.js +4 -0
- package/dist/config/mongo.js.map +1 -0
- package/dist/config/rateLimiter.d.ts +13 -0
- package/dist/config/rateLimiter.js +17 -0
- package/dist/config/rateLimiter.js.map +1 -0
- package/dist/config/redis.d.ts +5 -0
- package/dist/config/redis.js +5 -0
- package/dist/config/redis.js.map +1 -0
- package/dist/config/validate.d.ts +4 -0
- package/dist/config/validate.js +4 -0
- package/dist/config/validate.js.map +1 -0
- package/dist/controllers/Auth.d.ts +131 -0
- package/dist/controllers/Auth.js +186 -0
- package/dist/controllers/Auth.js.map +1 -0
- package/dist/controllers/Home.d.ts +15 -0
- package/dist/controllers/Home.js +22 -0
- package/dist/controllers/Home.js.map +1 -0
- package/dist/controllers/index.d.ts +16 -0
- package/dist/controllers/index.js +59 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/folderConfig.d.ts +34 -0
- package/dist/folderConfig.js +14 -0
- package/dist/folderConfig.js.map +1 -0
- package/dist/helpers/appInstance.d.ts +3 -0
- package/dist/helpers/appInstance.js +8 -0
- package/dist/helpers/appInstance.js.map +1 -0
- package/dist/helpers/crypto.d.ts +3 -0
- package/dist/helpers/crypto.js +17 -0
- package/dist/helpers/crypto.js.map +1 -0
- package/dist/helpers/files.d.ts +16 -0
- package/dist/helpers/files.js +76 -0
- package/dist/helpers/files.js.map +1 -0
- package/dist/helpers/logger.d.ts +4 -0
- package/dist/helpers/logger.js +20 -0
- package/dist/helpers/logger.js.map +1 -0
- package/dist/helpers/redis/clearNamespace.d.ts +2 -0
- package/dist/helpers/redis/clearNamespace.js +14 -0
- package/dist/helpers/redis/clearNamespace.js.map +1 -0
- package/dist/helpers/yup.d.ts +13 -0
- package/dist/helpers/yup.js +21 -0
- package/dist/helpers/yup.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/models/Lock.d.ts +90 -0
- package/dist/models/Lock.js +97 -0
- package/dist/models/Lock.js.map +1 -0
- package/dist/models/Migration.d.ts +13 -0
- package/dist/models/Migration.js +14 -0
- package/dist/models/Migration.js.map +1 -0
- package/dist/models/Sequence.d.ts +28 -0
- package/dist/models/Sequence.js +19 -0
- package/dist/models/Sequence.js.map +1 -0
- package/dist/models/User.d.ts +656 -0
- package/dist/models/User.js +291 -0
- package/dist/models/User.js.map +1 -0
- package/dist/models/UserOld.d.ts +179 -0
- package/dist/models/UserOld.js +230 -0
- package/dist/models/UserOld.js.map +1 -0
- package/dist/modules/AbstractCommand.d.ts +51 -0
- package/dist/modules/AbstractCommand.js +60 -0
- package/dist/modules/AbstractCommand.js.map +1 -0
- package/dist/modules/AbstractConnector.d.ts +5 -0
- package/dist/modules/AbstractConnector.js +8 -0
- package/dist/modules/AbstractConnector.js.map +1 -0
- package/dist/modules/AbstractController.d.ts +94 -0
- package/dist/modules/AbstractController.js +323 -0
- package/dist/modules/AbstractController.js.map +1 -0
- package/dist/modules/AbstractModel.d.ts +29 -0
- package/dist/modules/AbstractModel.js +42 -0
- package/dist/modules/AbstractModel.js.map +1 -0
- package/dist/modules/Base.d.ts +29 -0
- package/dist/modules/Base.js +58 -0
- package/dist/modules/Base.js.map +1 -0
- package/dist/modules/BaseCli.d.ts +25 -0
- package/dist/modules/BaseCli.js +147 -0
- package/dist/modules/BaseCli.js.map +1 -0
- package/dist/modules/BaseModel.d.ts +55 -0
- package/dist/modules/BaseModel.js +37 -0
- package/dist/modules/BaseModel.js.map +1 -0
- package/dist/server.d.ts +123 -0
- package/dist/server.js +468 -0
- package/dist/server.js.map +1 -0
- package/dist/services/cache/Cache.d.ts +31 -0
- package/dist/services/cache/Cache.js +113 -0
- package/dist/services/cache/Cache.js.map +1 -0
- package/dist/services/documentation/DocumentationGenerator.d.ts +11 -0
- package/dist/services/documentation/DocumentationGenerator.js +130 -0
- package/dist/services/documentation/DocumentationGenerator.js.map +1 -0
- package/dist/services/http/HttpServer.d.ts +35 -0
- package/dist/services/http/HttpServer.js +70 -0
- package/dist/services/http/HttpServer.js.map +1 -0
- package/dist/services/http/middleware/AbstractMiddleware.d.ts +25 -0
- package/dist/services/http/middleware/AbstractMiddleware.js +41 -0
- package/dist/services/http/middleware/AbstractMiddleware.js.map +1 -0
- package/dist/services/http/middleware/Auth.d.ts +9 -0
- package/dist/services/http/middleware/Auth.js +18 -0
- package/dist/services/http/middleware/Auth.js.map +1 -0
- package/dist/services/http/middleware/Cors.d.ts +12 -0
- package/dist/services/http/middleware/Cors.js +36 -0
- package/dist/services/http/middleware/Cors.js.map +1 -0
- package/dist/services/http/middleware/GetUserByToken.d.ts +20 -0
- package/dist/services/http/middleware/GetUserByToken.js +39 -0
- package/dist/services/http/middleware/GetUserByToken.js.map +1 -0
- package/dist/services/http/middleware/I18n.d.ts +23 -0
- package/dist/services/http/middleware/I18n.js +61 -0
- package/dist/services/http/middleware/I18n.js.map +1 -0
- package/dist/services/http/middleware/IpDetector.d.ts +14 -0
- package/dist/services/http/middleware/IpDetector.js +55 -0
- package/dist/services/http/middleware/IpDetector.js.map +1 -0
- package/dist/services/http/middleware/Pagination.d.ts +27 -0
- package/dist/services/http/middleware/Pagination.js +46 -0
- package/dist/services/http/middleware/Pagination.js.map +1 -0
- package/dist/services/http/middleware/PrepareAppInfo.d.ts +8 -0
- package/dist/services/http/middleware/PrepareAppInfo.js +17 -0
- package/dist/services/http/middleware/PrepareAppInfo.js.map +1 -0
- package/dist/services/http/middleware/RateLimiter.d.ts +26 -0
- package/dist/services/http/middleware/RateLimiter.js +118 -0
- package/dist/services/http/middleware/RateLimiter.js.map +1 -0
- package/dist/services/http/middleware/RequestLogger.d.ts +8 -0
- package/dist/services/http/middleware/RequestLogger.js +18 -0
- package/dist/services/http/middleware/RequestLogger.js.map +1 -0
- package/dist/services/http/middleware/RequestParser.d.ts +8 -0
- package/dist/services/http/middleware/RequestParser.js +35 -0
- package/dist/services/http/middleware/RequestParser.js.map +1 -0
- package/dist/services/http/middleware/Role.d.ts +12 -0
- package/dist/services/http/middleware/Role.js +24 -0
- package/dist/services/http/middleware/Role.js.map +1 -0
- package/dist/services/i18n/I18n.d.ts +15 -0
- package/dist/services/i18n/I18n.js +58 -0
- package/dist/services/i18n/I18n.js.map +1 -0
- package/dist/services/logging/SentryTransport.d.ts +14 -0
- package/dist/services/logging/SentryTransport.js +57 -0
- package/dist/services/logging/SentryTransport.js.map +1 -0
- package/dist/services/validate/ValidateService.d.ts +31 -0
- package/dist/services/validate/ValidateService.js +95 -0
- package/dist/services/validate/ValidateService.js.map +1 -0
- package/dist/services/validate/drivers/AbstractValidator.d.ts +14 -0
- package/dist/services/validate/drivers/AbstractValidator.js +29 -0
- package/dist/services/validate/drivers/AbstractValidator.js.map +1 -0
- package/dist/services/validate/drivers/CustomValidator.d.ts +14 -0
- package/dist/services/validate/drivers/CustomValidator.js +48 -0
- package/dist/services/validate/drivers/CustomValidator.js.map +1 -0
- package/dist/services/validate/drivers/YupValidator.d.ts +13 -0
- package/dist/services/validate/drivers/YupValidator.js +86 -0
- package/dist/services/validate/drivers/YupValidator.js.map +1 -0
- package/dist/tests/frameworkVitestSetup.d.ts +1 -0
- package/dist/tests/frameworkVitestSetup.js +9 -0
- package/dist/tests/frameworkVitestSetup.js.map +1 -0
- package/dist/tests/globalSetupVitest.d.ts +3 -0
- package/dist/tests/globalSetupVitest.js +29 -0
- package/dist/tests/globalSetupVitest.js.map +1 -0
- package/dist/tests/setupVitest.d.ts +1 -0
- package/dist/tests/setupVitest.js +91 -0
- package/dist/tests/setupVitest.js.map +1 -0
- package/dist/tests/testHelpers.d.ts +340 -0
- package/dist/tests/testHelpers.js +48 -0
- package/dist/tests/testHelpers.js.map +1 -0
- package/package.json +45 -39
- package/Cli.js +0 -22
- package/cluster.js +0 -27
- package/commands/CreateUser.js +0 -75
- package/commands/Documentation.js +0 -17
- package/commands/DropIndex.js +0 -29
- package/commands/GenerateRandomBytes.js +0 -21
- package/commands/GetOpenApiJson.js +0 -325
- package/commands/SyncIndexes.js +0 -39
- package/commands/migration/Create.js +0 -61
- package/commands/migration/Migrate.js +0 -55
- package/config/auth.js +0 -9
- package/config/http.js +0 -9
- package/config/i18n.js +0 -12
- package/config/ipDetector.js +0 -14
- package/config/log.js +0 -22
- package/config/mail.js +0 -29
- package/config/mongo.js +0 -3
- package/config/rateLimiter.js +0 -16
- package/config/redis.js +0 -4
- package/config/validate.js +0 -3
- package/controllers/Auth.js +0 -210
- package/controllers/Home.js +0 -28
- package/controllers/index.js +0 -60
- package/folderConfig.js +0 -14
- package/helpers/files.js +0 -79
- package/helpers/logger.js +0 -17
- package/helpers/redis/clearNamespace.js +0 -14
- package/helpers/yup.js +0 -24
- package/index.js +0 -8
- package/jsconfig.json +0 -9
- package/locales/en/translation.json +0 -27
- package/locales/ru/translation.json +0 -27
- package/migrations/.gitkeep +0 -0
- package/models/Migration.js +0 -15
- package/models/Sequence.js +0 -22
- package/models/User.js +0 -263
- package/modules/AbstractCommand.js +0 -43
- package/modules/AbstractConnector.js +0 -9
- package/modules/AbstractController.js +0 -413
- package/modules/AbstractModel.d.ts +0 -48
- package/modules/AbstractModel.js +0 -92
- package/modules/Base.d.ts +0 -37
- package/modules/Base.js +0 -63
- package/modules/BaseCli.js +0 -97
- package/server.d.ts +0 -98
- package/server.js +0 -438
- package/services/cache/Cache.d.ts +0 -35
- package/services/cache/Cache.js +0 -124
- package/services/documentation/DocumentationGenerator.js +0 -169
- package/services/http/HttpServer.js +0 -96
- package/services/http/middleware/AbstractMiddleware.js +0 -51
- package/services/http/middleware/Auth.js +0 -20
- package/services/http/middleware/Cors.js +0 -46
- package/services/http/middleware/GetUserByToken.js +0 -47
- package/services/http/middleware/I18n.js +0 -117
- package/services/http/middleware/IpDetector.js +0 -59
- package/services/http/middleware/Pagination.js +0 -57
- package/services/http/middleware/PrepareAppInfo.js +0 -18
- package/services/http/middleware/RateLimiter.js +0 -134
- package/services/http/middleware/RequestLogger.js +0 -22
- package/services/http/middleware/RequestParser.js +0 -40
- package/services/http/middleware/Role.js +0 -29
- package/services/messaging/email/index.js +0 -217
- package/services/messaging/email/resources/.gitkeep +0 -1
- package/services/messaging/email/templates/emptyTemplate/html.pug +0 -9
- package/services/messaging/email/templates/emptyTemplate/subject.pug +0 -1
- package/services/messaging/email/templates/emptyTemplate/text.pug +0 -1
- package/services/messaging/email/templates/recovery/html.pug +0 -8
- package/services/messaging/email/templates/recovery/subject.pug +0 -2
- package/services/messaging/email/templates/recovery/text.pug +0 -3
- package/services/messaging/email/templates/verification/html.pug +0 -10
- package/services/messaging/email/templates/verification/subject.pug +0 -1
- package/services/messaging/email/templates/verification/text.pug +0 -1
- package/services/messaging/index.js +0 -3
- package/services/validate/ValidateService.js +0 -157
- package/services/validate/drivers/AbstractValidator.js +0 -37
- package/services/validate/drivers/CustomValidator.js +0 -51
- package/services/validate/drivers/YupValidator.js +0 -103
- package/tests/globalSetupVitest.js +0 -35
- package/tests/setup.js +0 -118
- package/tests/setupVitest.js +0 -109
- package/types/Expand.d.ts +0 -11
- package/types/TFoldersConfig.d.ts +0 -17
- package/views/404.pug +0 -3
- package/views/home.pug +0 -3
- package/views/layouts/base.pug +0 -39
- package/vitest.config.js +0 -16
- /package/{commands → dist/migrations}/.gitkeep +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import * as url from 'node:url';
|
|
11
|
+
import { parseArgs } from 'node:util';
|
|
12
|
+
import Base from "./Base.js";
|
|
13
|
+
class Cli extends Base {
|
|
14
|
+
server;
|
|
15
|
+
commands;
|
|
16
|
+
constructor(server) {
|
|
17
|
+
super(server.app);
|
|
18
|
+
this.server = server;
|
|
19
|
+
this.commands = {};
|
|
20
|
+
}
|
|
21
|
+
async loadCommands() {
|
|
22
|
+
if (Object.keys(this.commands).length) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
console.info('Loading commands...');
|
|
26
|
+
console.time('Loading commands. Time');
|
|
27
|
+
const dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
28
|
+
const commandsToLoad = await this.getFilesPathWithInheritance(path.join(dirname, '../commands'), this.server.app.foldersConfig.commands, true);
|
|
29
|
+
for (const com of commandsToLoad) {
|
|
30
|
+
if (com.file.endsWith('.js') || com.file.endsWith('.ts')) {
|
|
31
|
+
const c = com.file.replace('.js', '').replace('.ts', '');
|
|
32
|
+
if (this.commands[c.toLowerCase()]) {
|
|
33
|
+
this.logger?.warn(`Command ${c.toLowerCase()} already exists with full path ${this.commands[c.toLowerCase()]}. Possible problems - you have two commands with "ts" and "js" extensions. Skipping...`);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
this.commands[c.toLowerCase()] = com.path;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
console.timeEnd('Loading commands. Time');
|
|
40
|
+
console.log(' ');
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
async printCommandTable() {
|
|
44
|
+
const commands = Object.keys(this.commands).sort();
|
|
45
|
+
const maxLength = commands.reduce((max, c) => Math.max(max, c.length), 0);
|
|
46
|
+
console.log('Available commands:');
|
|
47
|
+
const commandsClasses = [];
|
|
48
|
+
for (const c of commands) {
|
|
49
|
+
commandsClasses.push(import(__rewriteRelativeImportExtension(this.commands[c])));
|
|
50
|
+
// console.log(
|
|
51
|
+
// ` \x1b[36m${c.padEnd(maxLength)}\x1b[0m - ${f.default.description}`,
|
|
52
|
+
// );
|
|
53
|
+
}
|
|
54
|
+
const commandsClassesLoaded = await Promise.all(commandsClasses);
|
|
55
|
+
for (const [key, c] of Object.entries(commands)) {
|
|
56
|
+
console.log(` \x1b[36m${c.padEnd(maxLength)}\x1b[0m - ${commandsClassesLoaded[+key].default.description}`);
|
|
57
|
+
}
|
|
58
|
+
console.log('\nUsage (use one of option): \n node cli.ts <command> [options] \n npm run cli <command> -- [options]');
|
|
59
|
+
}
|
|
60
|
+
static showHelp(Command, finalArguments) {
|
|
61
|
+
console.log(`\n\x1b[32m${Command.description}\x1b[0m`);
|
|
62
|
+
let output = '';
|
|
63
|
+
Object.entries(finalArguments).forEach(([key, opt]) => {
|
|
64
|
+
const outputLocal = [];
|
|
65
|
+
outputLocal.push(`\n\x1b[36m --${key} \x1b[0m`);
|
|
66
|
+
if (opt.type !== 'boolean') {
|
|
67
|
+
outputLocal.push(`<${opt.type}>`);
|
|
68
|
+
// flag += `<${opt.type}>`;
|
|
69
|
+
}
|
|
70
|
+
if (opt.required) {
|
|
71
|
+
outputLocal.push('(required)');
|
|
72
|
+
}
|
|
73
|
+
outputLocal.push(`\n \x1b[2m${opt.description}`);
|
|
74
|
+
if (opt.default !== undefined) {
|
|
75
|
+
outputLocal.push(` (default: ${opt.default})`);
|
|
76
|
+
}
|
|
77
|
+
outputLocal.push('\x1b[0m');
|
|
78
|
+
output += outputLocal.join(' ');
|
|
79
|
+
});
|
|
80
|
+
console.log(output);
|
|
81
|
+
}
|
|
82
|
+
async run(command) {
|
|
83
|
+
await this.loadCommands();
|
|
84
|
+
if (!command) {
|
|
85
|
+
console.log('Please provide command name');
|
|
86
|
+
await this.printCommandTable();
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (!this.commands[command]) {
|
|
90
|
+
console.log(`Command ${command} not found `);
|
|
91
|
+
await this.printCommandTable();
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
console.info(`Running command: '${command}'`);
|
|
95
|
+
const commandModule = await import(__rewriteRelativeImportExtension(this.commands[command]));
|
|
96
|
+
const Command = commandModule.default;
|
|
97
|
+
const defaultArgs = {
|
|
98
|
+
help: {
|
|
99
|
+
type: 'boolean',
|
|
100
|
+
description: 'Show help',
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
const finalArguments = {
|
|
104
|
+
...Command.commandArguments,
|
|
105
|
+
...defaultArgs,
|
|
106
|
+
};
|
|
107
|
+
const parsedArgs = parseArgs({
|
|
108
|
+
args: process.argv.slice(3), // remove command name
|
|
109
|
+
options: finalArguments,
|
|
110
|
+
tokens: true,
|
|
111
|
+
allowNegative: true,
|
|
112
|
+
});
|
|
113
|
+
if (parsedArgs.values.help) {
|
|
114
|
+
Cli.showHelp(Command, finalArguments);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
for (const [key, opt] of Object.entries(finalArguments)) {
|
|
118
|
+
if (opt.required && !parsedArgs.values[key]) {
|
|
119
|
+
console.log(`\x1b[31mRequired field not proivded. Please provide "${key}" argument\x1b[0m`);
|
|
120
|
+
Cli.showHelp(Command, finalArguments);
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (Command.isShouldGetModelPaths) {
|
|
125
|
+
console.info(`Command ${command} isShouldGetModelPaths called. We are loading model paths`);
|
|
126
|
+
await this.server.getModelFilesPathsWithInheritance();
|
|
127
|
+
}
|
|
128
|
+
if (Command.isShouldInitModels) {
|
|
129
|
+
console.info(`Command ${command} isShouldInitModels called. If you want to skip loading and init models, please set isShouldInitModels to false in your command`);
|
|
130
|
+
process.env.MONGO_APP_NAME = Command.getMongoConnectionName(command, parsedArgs.values);
|
|
131
|
+
await this.server.initAllModels();
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.info(`Command ${command} NOT need to isShouldInitModels`);
|
|
135
|
+
}
|
|
136
|
+
const c = new Command(this.app, this.commands, parsedArgs.values);
|
|
137
|
+
const result = await c.run().catch((e) => {
|
|
138
|
+
this.logger?.error(e.stack);
|
|
139
|
+
});
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
static get loggerGroup() {
|
|
143
|
+
return 'CLI_';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export default Cli;
|
|
147
|
+
//# sourceMappingURL=BaseCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseCli.js","sourceRoot":"","sources":["../../src/modules/BaseCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { HydratedDocument, InferRawDocType, Schema } from 'mongoose';
|
|
2
|
+
import { type Model } from 'mongoose';
|
|
3
|
+
export type Merge<M, N> = Omit<M, keyof N> & N;
|
|
4
|
+
export type WithTimestamps<TOptions> = TOptions extends {
|
|
5
|
+
timestamps: true;
|
|
6
|
+
} ? {
|
|
7
|
+
createdAt: Schema.Types.Date;
|
|
8
|
+
updatedAt: Schema.Types.Date;
|
|
9
|
+
} : TOptions extends {
|
|
10
|
+
timestamps: false;
|
|
11
|
+
} ? object : {
|
|
12
|
+
createdAt: Schema.Types.Date;
|
|
13
|
+
updatedAt: Schema.Types.Date;
|
|
14
|
+
};
|
|
15
|
+
export type ExtractProperty<T, K extends PropertyKey, Default = object> = T extends {
|
|
16
|
+
[P in K]: infer R;
|
|
17
|
+
} ? R : Default;
|
|
18
|
+
export type GetModelSchemaTypeFromClass<T extends typeof BaseModel> = Schema<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, // TRawDocType
|
|
19
|
+
Model<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, object, // TQueryHelpers
|
|
20
|
+
ExtractProperty<T, 'modelInstanceMethods'>, // TInstanceMethods
|
|
21
|
+
ExtractProperty<T, 'modelVirtuals'>>, // TModelType
|
|
22
|
+
ExtractProperty<T, 'modelInstanceMethods'>, // TInstanceMethods
|
|
23
|
+
object, // TQueryHelpers
|
|
24
|
+
ExtractProperty<T, 'modelVirtuals'>, // TVirtuals
|
|
25
|
+
ExtractProperty<T, 'modelStatics'>, // TStaticMethods
|
|
26
|
+
ExtractProperty<T, 'schemaOptions'>>;
|
|
27
|
+
export type VirtualType<T> = {
|
|
28
|
+
[P in keyof T]: T[P] extends {
|
|
29
|
+
get: () => infer R;
|
|
30
|
+
} ? R : never;
|
|
31
|
+
};
|
|
32
|
+
export type GetModelTypeFromClass<T extends typeof BaseModel> = Model<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, // TRawDocType
|
|
33
|
+
object, // TQueryHelpers
|
|
34
|
+
ExtractProperty<T, 'modelInstanceMethods'>, // TInstanceMethods
|
|
35
|
+
ExtractProperty<T, 'modelVirtuals'>, // TVirtuals
|
|
36
|
+
HydratedDocument<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, //TRawDocType
|
|
37
|
+
//TRawDocType
|
|
38
|
+
VirtualType<ExtractProperty<T, 'modelVirtuals'>> & ExtractProperty<T, 'modelInstanceMethods'>, // TVirtuals & TInstanceMethods
|
|
39
|
+
object, // TQueryHelpers
|
|
40
|
+
ExtractProperty<T, 'modelVirtuals'>>, GetModelSchemaTypeFromClass<T>> & ExtractProperty<T, 'modelStatics'>;
|
|
41
|
+
export type GetModelTypeLiteFromSchema<T extends typeof BaseModel.modelSchema, TOptions = object> = Model<InferRawDocType<T & WithTimestamps<Merge<typeof defaultOptions, TOptions>>>>;
|
|
42
|
+
export declare const defaultOptions: {
|
|
43
|
+
readonly timestamps: true;
|
|
44
|
+
readonly minimize: false;
|
|
45
|
+
};
|
|
46
|
+
export type TBaseModel = GetModelTypeFromClass<typeof BaseModel>;
|
|
47
|
+
export declare class BaseModel {
|
|
48
|
+
static get modelSchema(): {};
|
|
49
|
+
static get schemaOptions(): {};
|
|
50
|
+
static get modelInstanceMethods(): {};
|
|
51
|
+
static get modelVirtuals(): {};
|
|
52
|
+
static get modelStatics(): {};
|
|
53
|
+
static initHooks(_schema: Schema): void;
|
|
54
|
+
static initialize<T extends typeof BaseModel>(this: T): GetModelTypeFromClass<T>;
|
|
55
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import mongoose, {} from 'mongoose';
|
|
2
|
+
export const defaultOptions = { timestamps: true, minimize: false };
|
|
3
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: TODO think about it in future
|
|
4
|
+
export class BaseModel {
|
|
5
|
+
static get modelSchema() {
|
|
6
|
+
return {};
|
|
7
|
+
}
|
|
8
|
+
static get schemaOptions() {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
static get modelInstanceMethods() {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
static get modelVirtuals() {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
static get modelStatics() {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
static initHooks(_schema) {
|
|
21
|
+
// Add hooks here
|
|
22
|
+
}
|
|
23
|
+
// Properly typed static method with generic constraints
|
|
24
|
+
static initialize() {
|
|
25
|
+
const schema = new mongoose.Schema(this.modelSchema, {
|
|
26
|
+
...defaultOptions,
|
|
27
|
+
...this.schemaOptions,
|
|
28
|
+
methods: this.modelInstanceMethods,
|
|
29
|
+
statics: this.modelStatics,
|
|
30
|
+
virtuals: this.modelVirtuals,
|
|
31
|
+
});
|
|
32
|
+
this.initHooks(schema);
|
|
33
|
+
const mongooseModel = mongoose.model(this.name, schema);
|
|
34
|
+
return mongooseModel;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=BaseModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseModel.js","sourceRoot":"","sources":["../../src/modules/BaseModel.ts"],"names":[],"mappings":"AAOA,OAAO,QAAQ,EAAE,EAAc,MAAM,UAAU,CAAC;AAgFhD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAW,CAAC;AAG7E,gFAAgF;AAChF,MAAM,OAAO,SAAS;IACpB,MAAM,KAAK,WAAW;QACpB,OAAO,EAAW,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,aAAa;QACtB,OAAO,EAAW,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,aAAa;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,YAAY;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAe;QAC9B,iBAAiB;IACnB,CAAC;IAED,wDAAwD;IACjD,MAAM,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YACnD,GAAG,cAAc;YACjB,GAAI,IAAI,CAAC,aAA+B;YACxC,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,aAAa;SAC7B,CAAmC,CAAC;QAErC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEvB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAClC,IAAI,CAAC,IAAI,EACT,MAAM,CACqB,CAAC;QAE9B,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import EventEmitter from 'node:events';
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import type ControllerManager from './controllers/index.ts';
|
|
4
|
+
import type { TFolderConfig, TFolderConfigFolders } from './folderConfig.ts';
|
|
5
|
+
import type AbstractModel from './modules/AbstractModel.ts';
|
|
6
|
+
import type BaseCli from './modules/BaseCli.ts';
|
|
7
|
+
import type { BaseModel, TBaseModel } from './modules/BaseModel.ts';
|
|
8
|
+
import Cache from './services/cache/Cache.ts';
|
|
9
|
+
import type HttpServer from './services/http/HttpServer.ts';
|
|
10
|
+
import type { I18n } from './services/i18n/I18n.ts';
|
|
11
|
+
interface AppCache {
|
|
12
|
+
configs: Map<string, unknown>;
|
|
13
|
+
models: Map<string, AbstractModel['mongooseModel'] | TBaseModel>;
|
|
14
|
+
modelConstructors: Map<string, typeof AbstractModel | typeof BaseModel>;
|
|
15
|
+
modelPaths: {
|
|
16
|
+
path: string;
|
|
17
|
+
file: string;
|
|
18
|
+
}[];
|
|
19
|
+
}
|
|
20
|
+
export interface IApp {
|
|
21
|
+
getConfig(configName: string): Record<string, unknown>;
|
|
22
|
+
getModel(modelName: string): AbstractModel['mongooseModel'] | false | TBaseModel;
|
|
23
|
+
runCliCommand(commandName: string): Promise<boolean | void>;
|
|
24
|
+
updateConfig(configName: string, config: Record<string, unknown>): Record<string, unknown>;
|
|
25
|
+
getI18nService(): Promise<I18n>;
|
|
26
|
+
foldersConfig: TFolderConfigFolders;
|
|
27
|
+
events: EventEmitter;
|
|
28
|
+
readonly cache: Cache;
|
|
29
|
+
readonly logger: winston.Logger;
|
|
30
|
+
httpServer: null | HttpServer;
|
|
31
|
+
controllerManager: null | ControllerManager;
|
|
32
|
+
frameworkFolder: string;
|
|
33
|
+
documentation?: unknown[];
|
|
34
|
+
internalFilesCache: AppCache;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Main framework class.
|
|
38
|
+
*/
|
|
39
|
+
declare class Server {
|
|
40
|
+
#private;
|
|
41
|
+
cli: null | BaseCli;
|
|
42
|
+
config: TFolderConfig;
|
|
43
|
+
cache: AppCache;
|
|
44
|
+
cacheService: null | Cache;
|
|
45
|
+
app: IApp;
|
|
46
|
+
/**
|
|
47
|
+
* Construct new server
|
|
48
|
+
* @param {Object} config main config object
|
|
49
|
+
* @param {Object} config.folders folders config
|
|
50
|
+
* @param {String} config.folders.config path to folder with config files
|
|
51
|
+
* @param {String} config.folders.models path to folder with moidels files
|
|
52
|
+
* @param {String} config.folders.controllers path to folder with controllers files
|
|
53
|
+
* @param {String} config.folders.locales path to folder with locales files
|
|
54
|
+
* @param {String} [config.folders.emails] path to folder with emails files
|
|
55
|
+
* @param {String} config.folders.commands path to folder with commands files
|
|
56
|
+
* @param {String} config.folders.migrations path to folder with migrations files
|
|
57
|
+
*/
|
|
58
|
+
constructor(config: TFolderConfig);
|
|
59
|
+
/**
|
|
60
|
+
* Start server (http + init all http ralated functions)
|
|
61
|
+
* @param {Function} callbackBefore404 code that should be executed before adding page 404
|
|
62
|
+
*/
|
|
63
|
+
startServer(callbackBefore404?: () => Promise<void>): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Do an initialization (config reading, etc)
|
|
66
|
+
*/
|
|
67
|
+
init({ isSkipModelInit, isSkipModelLoading, }?: {
|
|
68
|
+
isSkipModelInit?: boolean | undefined;
|
|
69
|
+
isSkipModelLoading?: boolean | undefined;
|
|
70
|
+
}): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Load model and init them
|
|
73
|
+
*/
|
|
74
|
+
initAllModels(): Promise<void>;
|
|
75
|
+
getModelFilesPathsWithInheritance(): Promise<{
|
|
76
|
+
path: string;
|
|
77
|
+
file: string;
|
|
78
|
+
}[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Add error logging on promise reject
|
|
81
|
+
*/
|
|
82
|
+
addErrorHandling(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Return config from {configName} (file name) on config folder.
|
|
85
|
+
* Support cache and updating confing into cache
|
|
86
|
+
* Also will update config based on NODE_ENV. If config.js and config.production.js
|
|
87
|
+
* and NODE_ENV is production then we will load base config (config.js) and the load
|
|
88
|
+
* environment config (config.production.js) and overwrite base config options
|
|
89
|
+
* @see updateConfig
|
|
90
|
+
* @param {String} configName name on config file to load
|
|
91
|
+
* @returns {Object} config object. Structure depends of config file
|
|
92
|
+
*/
|
|
93
|
+
getConfig(configName: string): Record<string, unknown>;
|
|
94
|
+
/**
|
|
95
|
+
* Return or create new logger instance. This is a main logger instance
|
|
96
|
+
*/
|
|
97
|
+
getLogger(): winston.Logger;
|
|
98
|
+
/**
|
|
99
|
+
* Primary designed for tests when we need to update some configs before start testing
|
|
100
|
+
* Should be called before any initialization was done
|
|
101
|
+
* @TODO send event to all inited components to update config
|
|
102
|
+
* @param {String} configName
|
|
103
|
+
* @param {Object} config
|
|
104
|
+
*/
|
|
105
|
+
updateConfig(configName: string, config: Record<string, unknown>): Record<string, unknown>;
|
|
106
|
+
getI18nService(): Promise<I18n>;
|
|
107
|
+
/**
|
|
108
|
+
* Return model from {modelName} (file name) on model folder.
|
|
109
|
+
* Support cache
|
|
110
|
+
* @param {String} modelName name on config file to load
|
|
111
|
+
*/
|
|
112
|
+
getModel(modelName: string): AbstractModel['mongooseModel'] | TBaseModel | false;
|
|
113
|
+
/**
|
|
114
|
+
* Run cli command into framework (http, ws, etc)
|
|
115
|
+
* @param {String} commandName name of command to load
|
|
116
|
+
*/
|
|
117
|
+
runCliCommand(commandName: string): Promise<boolean | void>;
|
|
118
|
+
/**
|
|
119
|
+
* Get internal cache service
|
|
120
|
+
*/
|
|
121
|
+
getCache(): Cache;
|
|
122
|
+
}
|
|
123
|
+
export default Server;
|