@adaptivestone/framework 5.0.0-beta.2 → 5.0.0-beta.21
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 +126 -1
- 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 +81 -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 +12 -0
- package/dist/commands/GenerateTypes.js +60 -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 +32 -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 +46 -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 +10 -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 +22 -0
- package/dist/config/log.js +23 -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 +15 -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 +74 -0
- package/dist/controllers/Auth.js +181 -0
- package/dist/controllers/Auth.js.map +1 -0
- package/dist/controllers/Home.d.ts +15 -0
- package/dist/controllers/Home.js +24 -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 +15 -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 +14 -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 +28 -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/{helpers → dist/helpers}/yup.js +9 -12
- 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 +89 -0
- package/dist/models/Lock.js +99 -0
- package/dist/models/Lock.js.map +1 -0
- package/dist/models/Migration.d.ts +10 -0
- package/dist/models/Migration.js +13 -0
- package/dist/models/Migration.js.map +1 -0
- package/dist/models/Sequence.d.ts +27 -0
- package/dist/models/Sequence.js +19 -0
- package/dist/models/Sequence.js.map +1 -0
- package/dist/models/User.d.ts +2372 -0
- package/dist/models/User.js +280 -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 +34 -0
- package/dist/modules/AbstractCommand.js +48 -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 +90 -0
- package/dist/modules/AbstractController.js +324 -0
- package/dist/modules/AbstractController.js.map +1 -0
- package/dist/modules/AbstractModel.d.ts +29 -0
- package/dist/modules/AbstractModel.js +43 -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 +41 -0
- package/dist/modules/BaseModel.js +36 -0
- package/dist/modules/BaseModel.js.map +1 -0
- package/dist/server.d.ts +121 -0
- package/dist/server.js +432 -0
- package/dist/server.js.map +1 -0
- package/dist/services/cache/Cache.d.ts +31 -0
- package/dist/services/cache/Cache.js +115 -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 +134 -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 +71 -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 +43 -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 +10 -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 +19 -0
- package/dist/services/http/middleware/GetUserByToken.js +40 -0
- package/dist/services/http/middleware/GetUserByToken.js.map +1 -0
- package/dist/services/http/middleware/I18n.d.ts +26 -0
- package/dist/services/http/middleware/I18n.js +97 -0
- package/dist/services/http/middleware/I18n.js.map +1 -0
- package/dist/services/http/middleware/IpDetector.d.ts +12 -0
- package/dist/services/http/middleware/IpDetector.js +51 -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 +47 -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 +18 -0
- package/dist/services/http/middleware/RateLimiter.js +106 -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 +9 -0
- package/dist/services/http/middleware/Role.js +24 -0
- package/dist/services/http/middleware/Role.js.map +1 -0
- package/dist/services/validate/ValidateService.d.ts +31 -0
- package/dist/services/validate/ValidateService.js +96 -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 +32 -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/globalSetupVitest.d.ts +2 -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 +99 -0
- package/dist/tests/setupVitest.js.map +1 -0
- package/package.json +38 -23
- 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/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 -86
- 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 -429
- 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
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,128 @@
|
|
|
1
|
+
### 5.0.0-next
|
|
2
|
+
|
|
3
|
+
This is a big release that contains a lot of new features and breaking changes.
|
|
4
|
+
Main feature of that release is full TypeScript support insluding mongoose models.
|
|
5
|
+
|
|
6
|
+
#### New Features
|
|
7
|
+
|
|
8
|
+
[NEW] Full TypeScript support, including Mongoose models.
|
|
9
|
+
[NEW] New model type: BaseModel, simplifying work with TypeScript and based on statics.
|
|
10
|
+
[NEW] AppInstance helper to access the app instance from anywhere without passing it.
|
|
11
|
+
[NEW] GenerateTypes command added.
|
|
12
|
+
[NEW] Lock model for working with locks via MongoDB.
|
|
13
|
+
[NEW] FrameworkFolder folder added to the app for module usage.
|
|
14
|
+
[NEW] Ability to skip Mongo model initialization in CLI environments.
|
|
15
|
+
[NEW] Mongo connections in CLI now have unique names, including the command name.
|
|
16
|
+
[NEW] On shutdown event, force shutdown after a timeout.
|
|
17
|
+
[NEW] GenerateRandomBytes command added.
|
|
18
|
+
[NEW] IpDetector middleware for detecting proxies and X-Forwarded-For headers.
|
|
19
|
+
|
|
20
|
+
#### Breaking changes (please read carefully)
|
|
21
|
+
|
|
22
|
+
[BREAKING] all models now should be extended from BaseModel. This is a potencial breaking change specially for User model.
|
|
23
|
+
[BREAKING] Remove jest support for testing
|
|
24
|
+
[BREAKING] move email module to separate package @adaptivestone/framework-module-email. Please use it if you want to send emails
|
|
25
|
+
[BREAKING] remove VIEWS folders at all. Should not afffect any user as this was not used internally
|
|
26
|
+
[BREAKING] removed noidemailer-sendmail-transport. Not needed anymore and not recommended to use as well
|
|
27
|
+
[BREAKING] remove minimist CLI parsing and replace it by commandArguments parser
|
|
28
|
+
[BREAKING] vitest v3 https://vitest.dev/guide/migration.html
|
|
29
|
+
[BREAKING] i18next v24 https://www.i18next.com/misc/migration-guide#v23.x.x-to-v24.0.0
|
|
30
|
+
[BREAKING] possible breaking. Framework start using express 5 instead of express 4. Please follow express migration guide too https://expressjs.com/en/guide/migrating-5.html.
|
|
31
|
+
[BREAKING] AS part of express 5 migration _ in rotes (middlewares) should have perameter. please replace _ to \*splat
|
|
32
|
+
[BREAKING] default auth responce changed to be unified. {token, user} = > {data:{token, user}}
|
|
33
|
+
[BREAKING] RateLimiter now need to have IpDetector middleware before
|
|
34
|
+
[BREAKING] removing staticFiles middleware as it not used in projects anymore. Docs with nginx config will be provided
|
|
35
|
+
[BREAKING] remove default AUTH_SALT. It should be provided on a app level now
|
|
36
|
+
[BREAKING] Minimum node version is 20.12 as for now (process.loadEnvFile)
|
|
37
|
+
[BREAKING] ESM only. No more commonJS. That help to fix a lot of bugs with tests and provides better development expirience
|
|
38
|
+
[BREAKING] Mongoose v8. https://mongoosejs.com/docs/migrating_to_8.html
|
|
39
|
+
|
|
40
|
+
### 5.0.0-beta.21
|
|
41
|
+
|
|
42
|
+
[FIX] fix bug with missed model options
|
|
43
|
+
|
|
44
|
+
### 5.0.0-beta.20
|
|
45
|
+
|
|
46
|
+
[FIX] fix bug with Lock model index
|
|
47
|
+
[NEW] BaseModel add Virtuals
|
|
48
|
+
|
|
49
|
+
### 5.0.0-beta.19
|
|
50
|
+
|
|
51
|
+
[NEW] intruducing new model type. BaseModel. Features - simplifie works with typescript. And based on statics
|
|
52
|
+
[BREAKING] all models now should be extended from BaseModel. This is a potencial breaking change specially for User model.
|
|
53
|
+
|
|
54
|
+
### 5.0.0-beta.18
|
|
55
|
+
|
|
56
|
+
[UPDATE] move away connection from mongooseModels to server itself (preparation for different model types)
|
|
57
|
+
[BREAKING] potencial. We are removed callback from mongooseModels contrctuctor. It was not used in code.
|
|
58
|
+
[NEW] add appInstance helper to access app instance from anywhere without passing it
|
|
59
|
+
|
|
60
|
+
### 5.0.0-beta.17
|
|
61
|
+
|
|
62
|
+
[NEW] add GenerateTypes command
|
|
63
|
+
|
|
64
|
+
### 5.0.0-beta.16
|
|
65
|
+
|
|
66
|
+
[UPDATE] update deps
|
|
67
|
+
[UPDATE] new app getter internalFilesCache
|
|
68
|
+
[UPDATE] command new static props to load isShouldGetModelPaths
|
|
69
|
+
|
|
70
|
+
### 5.0.0-beta.15
|
|
71
|
+
|
|
72
|
+
[FIX] fix missing folder migrations in dist folder (hope that will be finally)
|
|
73
|
+
|
|
74
|
+
### 5.0.0-beta.14
|
|
75
|
+
|
|
76
|
+
[FIX] fix missing folder migrations in dist folder
|
|
77
|
+
|
|
78
|
+
### 5.0.0-beta.13
|
|
79
|
+
|
|
80
|
+
[UPDATE] only process .ts or .js files (not .map files)
|
|
81
|
+
|
|
82
|
+
### 5.0.0-beta.12
|
|
83
|
+
|
|
84
|
+
[BREAKING] Remove jest support for testing
|
|
85
|
+
[NEW] initial move to typescript. Potencially breaking.
|
|
86
|
+
[NEW] introduce src and dist folders
|
|
87
|
+
|
|
88
|
+
### 5.0.0-beta.11
|
|
89
|
+
|
|
90
|
+
[NEW] commands typing
|
|
91
|
+
[NEW] commands support TS files
|
|
92
|
+
[UPDATE] update deps
|
|
93
|
+
|
|
94
|
+
### 5.0.0-beta.9
|
|
95
|
+
|
|
96
|
+
[BREAKING] move email module to separate package @adaptivestone/framework-module-email. Please use it if you want to send emails
|
|
97
|
+
[NEW] app now contains 'frameworkFolder' folder the framework located. Mostly for modules usage
|
|
98
|
+
[BREAKING] remove VIEWS folders at all. Should not afffect any user as this was not used internally
|
|
99
|
+
[UPDATE] update typing
|
|
100
|
+
[UPDATE] change redis -> @redis/client as we are using only client from pakage
|
|
101
|
+
[BREAKING] removed noidemailer-sendmail-transport. Not needed anymore and not recommended to use as well
|
|
102
|
+
|
|
103
|
+
### 5.0.0-beta.8
|
|
104
|
+
|
|
105
|
+
[UPDATE] update deps
|
|
106
|
+
[NEW] Lock model for working locks via mongoDB
|
|
107
|
+
|
|
108
|
+
### 5.0.0-beta.7
|
|
109
|
+
|
|
110
|
+
[UPDATE] update deps
|
|
111
|
+
[UPDATE] change vitest shutdown behavior as mongo driver v6.13 change befaviur that affect us (MongoClient.close now closes any outstanding cursors)
|
|
112
|
+
|
|
113
|
+
### 5.0.0-beta.5
|
|
114
|
+
|
|
115
|
+
[BREAKING] remove minimist CLI parsing and replace it by commandArguments parser
|
|
116
|
+
[UPDATE] migrated from eslint-plugin-import to eslint-plugin-import-x
|
|
117
|
+
|
|
118
|
+
### 5.0.0-beta.5
|
|
119
|
+
|
|
120
|
+
[UPDATE] migrate to eslint 9 and away from aibnb styles (they are abonded)
|
|
121
|
+
|
|
122
|
+
### 5.0.0-beta.4
|
|
123
|
+
|
|
124
|
+
[NEW] on shutdown event now after timeout we are forcing to shutdown
|
|
125
|
+
|
|
1
126
|
### 5.0.0-beta.2
|
|
2
127
|
|
|
3
128
|
[UPDATE] update deps
|
|
@@ -458,7 +583,7 @@ await doc.populate([
|
|
|
458
583
|
[UPDATE] update deps
|
|
459
584
|
[UPDATE] winston console transport now using timestapms
|
|
460
585
|
[UPDATE] PrepareAppInfo middleware now a global one. Do not need to include it on every controller
|
|
461
|
-
[NEW] Request
|
|
586
|
+
[NEW] Request also works with req.query, but req.body have bigger priority
|
|
462
587
|
|
|
463
588
|
### 2.18.0
|
|
464
589
|
|
package/LICENCE
CHANGED
package/dist/Cli.d.ts
ADDED
package/dist/Cli.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import mongoose from 'mongoose';
|
|
2
|
+
import BaseCli from "./modules/BaseCli.js";
|
|
3
|
+
import Server from "./server.js";
|
|
4
|
+
class Cli extends BaseCli {
|
|
5
|
+
constructor(serverConfig) {
|
|
6
|
+
mongoose.set('autoIndex', false); // we do not need create indexes on CLI.
|
|
7
|
+
const server = new Server(serverConfig);
|
|
8
|
+
super(server);
|
|
9
|
+
}
|
|
10
|
+
async run() {
|
|
11
|
+
await this.server.init({ isSkipModelInit: true, isSkipModelLoading: true });
|
|
12
|
+
const command = process.argv[2]?.toLowerCase();
|
|
13
|
+
await super.run(command);
|
|
14
|
+
this.app.events.emit('shutdown');
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export default Cli;
|
|
19
|
+
//# sourceMappingURL=Cli.js.map
|
package/dist/Cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,GAAI,SAAQ,OAAO;IACvB,YAAY,YAA2B;QACrC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,wCAAwC;QAC1E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;QACxC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QAC/C,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/cluster.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import cluster from 'node:cluster';
|
|
2
|
+
import { cpus } from 'node:os';
|
|
3
|
+
const numCPUs = cpus().length;
|
|
4
|
+
if (cluster.isPrimary) {
|
|
5
|
+
console.log(`Master ${process.pid} is running`);
|
|
6
|
+
// Fork workers.
|
|
7
|
+
for (let i = 0; i < numCPUs; i += 1) {
|
|
8
|
+
cluster.fork();
|
|
9
|
+
}
|
|
10
|
+
cluster.on('exit', (worker, code, signal) => {
|
|
11
|
+
console.log(`Worker \x1B[45m ${worker.process.pid} \x1B[49m \x1B[41m †††† died †††† \x1B[49m. Code: ${signal || code}. Restarting...`);
|
|
12
|
+
cluster.fork();
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
import("./server.js");
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=cluster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../src/cluster.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;AAE9B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;IAChD,gBAAgB;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,CACT,mBACE,MAAM,CAAC,OAAO,CAAC,GACjB,qDACE,MAAM,IAAI,IACZ,iBAAiB,CAClB,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.ts';
|
|
2
|
+
declare class CreateUser extends AbstractCommand {
|
|
3
|
+
static get description(): string;
|
|
4
|
+
/**
|
|
5
|
+
* You able to add command arguments for parsing there.
|
|
6
|
+
*/
|
|
7
|
+
static get commandArguments(): {
|
|
8
|
+
id: {
|
|
9
|
+
type: "string";
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
email: {
|
|
13
|
+
type: "string";
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
password: {
|
|
17
|
+
type: "string";
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
roles: {
|
|
21
|
+
type: "string";
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
update: {
|
|
25
|
+
type: "boolean";
|
|
26
|
+
default: boolean;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
run(): Promise<any>;
|
|
31
|
+
}
|
|
32
|
+
export default CreateUser;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import AbstractCommand from "../modules/AbstractCommand.js";
|
|
2
|
+
// Example: node src/cli createuser --email=somemail@gmail.com --password=somePassword --roles=user,admin,someOtherRoles
|
|
3
|
+
class CreateUser extends AbstractCommand {
|
|
4
|
+
static get description() {
|
|
5
|
+
return 'Create user in a database';
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* You able to add command arguments for parsing there.
|
|
9
|
+
*/
|
|
10
|
+
static get commandArguments() {
|
|
11
|
+
return {
|
|
12
|
+
id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'User id to find user',
|
|
15
|
+
},
|
|
16
|
+
email: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'User id to find/create user',
|
|
19
|
+
},
|
|
20
|
+
password: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'New password for user',
|
|
23
|
+
},
|
|
24
|
+
roles: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'User roles comma separated string (--roles=user,admin,someOtherRoles)',
|
|
27
|
+
},
|
|
28
|
+
update: {
|
|
29
|
+
type: 'boolean',
|
|
30
|
+
default: false,
|
|
31
|
+
description: 'Update user if it exists',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async run() {
|
|
36
|
+
const User = this.app.getModel('User');
|
|
37
|
+
const { id, email, password, roles, update } = this.args;
|
|
38
|
+
if (!email && !id) {
|
|
39
|
+
this.logger?.error('Input validation failded');
|
|
40
|
+
this.logger?.error('Please add "email" or "id" variables');
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
let user;
|
|
44
|
+
if (id) {
|
|
45
|
+
user = await User.findOne({ _id: id });
|
|
46
|
+
}
|
|
47
|
+
else if (email) {
|
|
48
|
+
user = await User.findOne({ email });
|
|
49
|
+
}
|
|
50
|
+
if (user && !update) {
|
|
51
|
+
this.logger?.error('We are found a user in database. But "update" option is not providing. Exitin');
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (!user && !password) {
|
|
55
|
+
this.logger?.error('For a new user we alway asking for a password. Please provide it and rerun command');
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (!user && !email) {
|
|
59
|
+
this.logger?.error('For a new user we alway asking for a email. Please provide it and rerun command');
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (!user) {
|
|
63
|
+
user = new User();
|
|
64
|
+
}
|
|
65
|
+
if (password) {
|
|
66
|
+
user.password = password;
|
|
67
|
+
}
|
|
68
|
+
if (email) {
|
|
69
|
+
user.email = email;
|
|
70
|
+
}
|
|
71
|
+
if (roles) {
|
|
72
|
+
user.roles = roles.split(',');
|
|
73
|
+
}
|
|
74
|
+
await user.save();
|
|
75
|
+
await user.generateToken();
|
|
76
|
+
this.logger?.info(`User was created/updated ${JSON.stringify(user, null, 4)}`);
|
|
77
|
+
return user;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export default CreateUser;
|
|
81
|
+
//# sourceMappingURL=CreateUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateUser.js","sourceRoot":"","sources":["../../src/commands/CreateUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import AbstractCommand from "../modules/AbstractCommand.js";
|
|
2
|
+
import ControllerManager from "../controllers/index.js";
|
|
3
|
+
class Documentation extends AbstractCommand {
|
|
4
|
+
static get description() {
|
|
5
|
+
return 'Generate documentation (internal)';
|
|
6
|
+
}
|
|
7
|
+
async run() {
|
|
8
|
+
const CM = new ControllerManager(this.app);
|
|
9
|
+
this.app.documentation = [];
|
|
10
|
+
await CM.initControllers();
|
|
11
|
+
return this.app.documentation;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export default Documentation;
|
|
15
|
+
//# sourceMappingURL=Documentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Documentation.js","sourceRoot":"","sources":["../../src/commands/Documentation.js"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAExD,MAAM,aAAc,SAAQ,eAAe;IACzC,MAAM,KAAK,WAAW;QACpB,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC;QAC5B,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;IAChC,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.ts';
|
|
2
|
+
declare class DropIndex extends AbstractCommand {
|
|
3
|
+
static get description(): string;
|
|
4
|
+
/**
|
|
5
|
+
* You able to add command arguments for parsing there.
|
|
6
|
+
*/
|
|
7
|
+
static get commandArguments(): {
|
|
8
|
+
model: {
|
|
9
|
+
type: "string";
|
|
10
|
+
description: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
export default DropIndex;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import AbstractCommand from "../modules/AbstractCommand.js";
|
|
2
|
+
class DropIndex extends AbstractCommand {
|
|
3
|
+
static get description() {
|
|
4
|
+
return 'Drop indexes of model';
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* You able to add command arguments for parsing there.
|
|
8
|
+
*/
|
|
9
|
+
static get commandArguments() {
|
|
10
|
+
return {
|
|
11
|
+
model: {
|
|
12
|
+
type: 'string',
|
|
13
|
+
description: 'Model name',
|
|
14
|
+
required: true,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async run() {
|
|
19
|
+
const Model = this.app.getModel(this.args.model);
|
|
20
|
+
if (!Model) {
|
|
21
|
+
this.logger?.error('Not able to find model');
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
await Model.collection.dropIndexes();
|
|
25
|
+
this.logger?.info('Success');
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export default DropIndex;
|
|
30
|
+
//# sourceMappingURL=DropIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropIndex.js","sourceRoot":"","sources":["../../src/commands/DropIndex.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,SAAU,SAAQ,eAAe;IACrC,MAAM,KAAK,WAAW;QACpB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,gBAAgB;QACzB,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,QAAiB;gBACvB,WAAW,EAAE,YAAY;gBACzB,QAAQ,EAAE,IAAI;aACf;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import AbstractCommand from "../modules/AbstractCommand.js";
|
|
3
|
+
class GenerateRandomBytes extends AbstractCommand {
|
|
4
|
+
static get description() {
|
|
5
|
+
return 'Generate random bytes ising randomBytes from node:crypto';
|
|
6
|
+
}
|
|
7
|
+
static isShouldInitModels = false;
|
|
8
|
+
async run() {
|
|
9
|
+
const sizes = [16, 32, 64, 128, 256];
|
|
10
|
+
for (const size of sizes) {
|
|
11
|
+
const bytes = randomBytes(size).toString('hex');
|
|
12
|
+
this.logger?.info(`${size} bytes: ${bytes}`);
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export default GenerateRandomBytes;
|
|
18
|
+
//# sourceMappingURL=GenerateRandomBytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenerateRandomBytes.js","sourceRoot":"","sources":["../../src/commands/GenerateRandomBytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,mBAAoB,SAAQ,eAAe;IAC/C,MAAM,KAAK,WAAW;QACpB,OAAO,2DAA2D,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAElC,KAAK,CAAC,GAAG;QACP,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAGH,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.ts';
|
|
2
|
+
declare class GenerateTypes extends AbstractCommand {
|
|
3
|
+
static get description(): string;
|
|
4
|
+
getTypesContent(): Promise<string>;
|
|
5
|
+
static isShouldInitModels: boolean;
|
|
6
|
+
run(): Promise<boolean>;
|
|
7
|
+
static getTemplate(configs: Map<string, any>, modelPaths: {
|
|
8
|
+
file: string;
|
|
9
|
+
path: string;
|
|
10
|
+
}[]): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
export default GenerateTypes;
|
|
@@ -0,0 +1,60 @@
|
|
|
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 AbstractCommand from "../modules/AbstractCommand.js";
|
|
10
|
+
import { BaseModel } from "../modules/BaseModel.js";
|
|
11
|
+
import * as url from 'url';
|
|
12
|
+
import fs from 'node:fs/promises';
|
|
13
|
+
class GenerateTypes extends AbstractCommand {
|
|
14
|
+
static get description() {
|
|
15
|
+
return 'Gererates TypeScript types';
|
|
16
|
+
}
|
|
17
|
+
async getTypesContent() {
|
|
18
|
+
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
19
|
+
const content = await fs.readFile(`${__dirname}/../../../src/types/types.ts`, 'utf8');
|
|
20
|
+
return content;
|
|
21
|
+
}
|
|
22
|
+
static isShouldInitModels = false;
|
|
23
|
+
async run() {
|
|
24
|
+
const template = await GenerateTypes.getTemplate(this.app.internalFilesCache.configs, this.app.internalFilesCache.modelPaths);
|
|
25
|
+
await fs.writeFile(`${process.cwd()}/genTypes.d.ts`, template);
|
|
26
|
+
console.log('TypeScript types generated successfully at genTypes.d.ts');
|
|
27
|
+
return Promise.resolve(true);
|
|
28
|
+
}
|
|
29
|
+
static async getTemplate(configs, modelPaths) {
|
|
30
|
+
const dir = process.cwd();
|
|
31
|
+
const configTypes = Array.from(configs)
|
|
32
|
+
.map((config) => {
|
|
33
|
+
return ` getConfig(configName: '${config[0]}'): ${JSON.stringify(config[1], null, 6)};`;
|
|
34
|
+
})
|
|
35
|
+
.join('\n');
|
|
36
|
+
const modelTypes = (await Promise.all(modelPaths.map(async (modelPath) => {
|
|
37
|
+
const modelModule = await import(__rewriteRelativeImportExtension(modelPath.path));
|
|
38
|
+
const path = modelPath.path.replace(dir, '.');
|
|
39
|
+
if (modelModule.default.prototype instanceof BaseModel) {
|
|
40
|
+
return ` getModel(modelName: '${modelPath.file}'): GetModelTypeFromClass<typeof import('${path}').default>`;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return ` getModel(modelName: '${modelPath.file}'): import('${path}').default['mongooseModel']`;
|
|
44
|
+
}
|
|
45
|
+
}))).join('\n');
|
|
46
|
+
return `
|
|
47
|
+
import type {} from '@adaptivestone/framework/server.js';
|
|
48
|
+
import type { GetModelTypeFromClass } from '@adaptivestone/framework/modules/BaseModel.js';
|
|
49
|
+
|
|
50
|
+
declare module '@adaptivestone/framework/server.js' {
|
|
51
|
+
export interface IApp {
|
|
52
|
+
${configTypes}
|
|
53
|
+
${modelTypes}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export default GenerateTypes;
|
|
60
|
+
//# sourceMappingURL=GenerateTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenerateTypes.js","sourceRoot":"","sources":["../../src/commands/GenerateTypes.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,MAAM,aAAc,SAAQ,eAAe;IACzC,MAAM,KAAK,WAAW;QACpB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC/B,GAAG,SAAS,8BAA8B,EAC1C,MAAM,CACP,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAElC,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,CAC9C,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,EACnC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,UAAU,CACvC,CAAC;QACF,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE/D,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAExE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,OAAyB,EACzB,UAA4C;QAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aACpC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,OAAO,8BAA8B,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;QAC7F,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,CACjB,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,MAAM,MAAM,kCAAC,SAAS,CAAC,IAAI,EAAC,CAAC;YACjD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,YAAY,SAAS,EAAE,CAAC;gBACvD,OAAO,4BAA4B,SAAS,CAAC,IAAI,4CAA4C,IAAI,aAAa,CAAC;YACjH,CAAC;iBAAM,CAAC;gBACN,OAAO,4BAA4B,SAAS,CAAC,IAAI,eAAe,IAAI,6BAA6B,CAAC;YACpG,CAAC;QACH,CAAC,CAAC,CACH,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;;;;;;QAMH,WAAW;QACX,UAAU;;;CAGjB,CAAC;IACA,CAAC;;AAGH,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default GetOpenApiJson;
|
|
2
|
+
/**
|
|
3
|
+
* Command for generate documentation json file openApi
|
|
4
|
+
*/
|
|
5
|
+
declare class GetOpenApiJson extends AbstractCommand {
|
|
6
|
+
/**
|
|
7
|
+
* You able to add command arguments for parsing there.
|
|
8
|
+
*/
|
|
9
|
+
static get commandArguments(): {
|
|
10
|
+
output: {
|
|
11
|
+
type: string;
|
|
12
|
+
description: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<string>;
|
|
16
|
+
}
|
|
17
|
+
import AbstractCommand from '../modules/AbstractCommand.ts';
|