node-server-engine 1.1.4 → 1.1.5

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.
Files changed (468) hide show
  1. package/.env.example +193 -193
  2. package/.mocharc.js +13 -13
  3. package/.nycrc +18 -18
  4. package/.prettierrc +7 -7
  5. package/Dockerfile +30 -30
  6. package/README.md +991 -991
  7. package/babel.config.json +34 -35
  8. package/dist/const/DebeziumEvent.js.map +1 -1
  9. package/dist/const/LogSeverity.js.map +1 -1
  10. package/dist/const/index.js.map +1 -1
  11. package/dist/const/metrics.js.map +1 -1
  12. package/dist/const/mime.js.map +1 -1
  13. package/dist/const/tokenIssuer.js.map +1 -1
  14. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js.map +1 -1
  15. package/dist/db/models/SequelizeMeta.js +1 -0
  16. package/dist/db/models/SequelizeMeta.js.map +1 -1
  17. package/dist/db/models/index.js.map +1 -1
  18. package/dist/entities/ElasticSearch/ElasticSearch.js +7 -7
  19. package/dist/entities/ElasticSearch/ElasticSearch.js.map +1 -1
  20. package/dist/entities/ElasticSearch/ElasticSearch.types.js.map +1 -1
  21. package/dist/entities/ElasticSearch/index.js.map +1 -1
  22. package/dist/entities/Endpoint/Endpoint.js +18 -17
  23. package/dist/entities/Endpoint/Endpoint.js.map +1 -1
  24. package/dist/entities/Endpoint/Endpoint.types.js.map +1 -1
  25. package/dist/entities/Endpoint/index.js.map +1 -1
  26. package/dist/entities/EngineError/EngineError.js +7 -6
  27. package/dist/entities/EngineError/EngineError.js.map +1 -1
  28. package/dist/entities/EngineError/EngineError.types.js.map +1 -1
  29. package/dist/entities/EngineError/index.js.map +1 -1
  30. package/dist/entities/KeySet/KeySet.js +10 -9
  31. package/dist/entities/KeySet/KeySet.js.map +1 -1
  32. package/dist/entities/KeySet/KeySet.types.js.map +1 -1
  33. package/dist/entities/KeySet/index.js.map +1 -1
  34. package/dist/entities/LifecycleController/LifecycleController.js.map +1 -1
  35. package/dist/entities/LifecycleController/LifecycleController.types.js.map +1 -1
  36. package/dist/entities/LifecycleController/index.js.map +1 -1
  37. package/dist/entities/Localizator/Localizator.js +7 -7
  38. package/dist/entities/Localizator/Localizator.js.map +1 -1
  39. package/dist/entities/Localizator/Localizator.types.js.map +1 -1
  40. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js.map +1 -1
  41. package/dist/entities/Localizator/guessNamingConvention/index.js.map +1 -1
  42. package/dist/entities/Localizator/index.js.map +1 -1
  43. package/dist/entities/MessageHandler/MessageHandler.js +7 -6
  44. package/dist/entities/MessageHandler/MessageHandler.js.map +1 -1
  45. package/dist/entities/MessageHandler/MessageHandler.types.js.map +1 -1
  46. package/dist/entities/MessageHandler/index.js.map +1 -1
  47. package/dist/entities/PubSub/PubSub.js +25 -25
  48. package/dist/entities/PubSub/PubSub.js.map +1 -1
  49. package/dist/entities/PubSub/PubSub.types.js.map +1 -1
  50. package/dist/entities/PubSub/handleMessage/handleMessage.js +6 -6
  51. package/dist/entities/PubSub/handleMessage/handleMessage.js.map +1 -1
  52. package/dist/entities/PubSub/handleMessage/index.js.map +1 -1
  53. package/dist/entities/PubSub/index.js.map +1 -1
  54. package/dist/entities/PushNotification/PushNotification.js +4 -4
  55. package/dist/entities/PushNotification/PushNotification.js.map +1 -1
  56. package/dist/entities/PushNotification/PushNotification.types.js.map +1 -1
  57. package/dist/entities/PushNotification/index.js.map +1 -1
  58. package/dist/entities/Redis/Redis.js +8 -8
  59. package/dist/entities/Redis/Redis.js.map +1 -1
  60. package/dist/entities/Redis/Redis.types.js.map +1 -1
  61. package/dist/entities/Redis/Redis.validate.js +2 -2
  62. package/dist/entities/Redis/Redis.validate.js.map +1 -1
  63. package/dist/entities/Redis/index.js.map +1 -1
  64. package/dist/entities/Sequelize/Sequelize.config.js.map +1 -1
  65. package/dist/entities/Sequelize/Sequelize.js +2 -2
  66. package/dist/entities/Sequelize/Sequelize.js.map +1 -1
  67. package/dist/entities/Sequelize/Sequelize.types.js.map +1 -1
  68. package/dist/entities/Sequelize/Sequelize.validate.js +2 -2
  69. package/dist/entities/Sequelize/Sequelize.validate.js.map +1 -1
  70. package/dist/entities/Sequelize/index.js.map +1 -1
  71. package/dist/entities/Server/Server.const.js.map +1 -1
  72. package/dist/entities/Server/Server.js +18 -17
  73. package/dist/entities/Server/Server.js.map +1 -1
  74. package/dist/entities/Server/Server.types.js.map +1 -1
  75. package/dist/entities/Server/index.js.map +1 -1
  76. package/dist/entities/SocketClient/SocketClient.js +33 -32
  77. package/dist/entities/SocketClient/SocketClient.js.map +1 -1
  78. package/dist/entities/SocketClient/SocketClient.types.js.map +1 -1
  79. package/dist/entities/SocketClient/index.js.map +1 -1
  80. package/dist/entities/SocketClient/parseMessage/index.js.map +1 -1
  81. package/dist/entities/SocketClient/parseMessage/parseMessage.js +2 -2
  82. package/dist/entities/SocketClient/parseMessage/parseMessage.js.map +1 -1
  83. package/dist/entities/Storage/Storage.js +20 -20
  84. package/dist/entities/Storage/Storage.js.map +1 -1
  85. package/dist/entities/Storage/Storage.types.js.map +1 -1
  86. package/dist/entities/Storage/index.js.map +1 -1
  87. package/dist/entities/ValidationError/ValidationError.js.map +1 -1
  88. package/dist/entities/ValidationError/index.js.map +1 -1
  89. package/dist/entities/WebError/WebError.js +7 -6
  90. package/dist/entities/WebError/WebError.js.map +1 -1
  91. package/dist/entities/WebError/WebError.types.js.map +1 -1
  92. package/dist/entities/WebError/index.js.map +1 -1
  93. package/dist/entities/index.js.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/metrics/debug.js.map +1 -1
  96. package/dist/metrics/index.js.map +1 -1
  97. package/dist/metrics/request.js.map +1 -1
  98. package/dist/middleware/authAdmin/authAdmin.js.map +1 -1
  99. package/dist/middleware/authAdmin/authAdmin.types.js.map +1 -1
  100. package/dist/middleware/authAdmin/index.js.map +1 -1
  101. package/dist/middleware/authHmac/authHmac.js.map +1 -1
  102. package/dist/middleware/authHmac/authHmac.types.js.map +1 -1
  103. package/dist/middleware/authHmac/index.js.map +1 -1
  104. package/dist/middleware/authJwt/authJwt.js.map +1 -1
  105. package/dist/middleware/authJwt/authJwt.types.js.map +1 -1
  106. package/dist/middleware/authJwt/index.js.map +1 -1
  107. package/dist/middleware/authStatic/authStatic.js +3 -3
  108. package/dist/middleware/authStatic/authStatic.js.map +1 -1
  109. package/dist/middleware/authStatic/index.js.map +1 -1
  110. package/dist/middleware/authTls/authTls.js +8 -8
  111. package/dist/middleware/authTls/authTls.js.map +1 -1
  112. package/dist/middleware/authTls/authTls.types.js.map +1 -1
  113. package/dist/middleware/authTls/index.js.map +1 -1
  114. package/dist/middleware/checkPermission/checkPermission.js.map +1 -1
  115. package/dist/middleware/error/error.js.map +1 -1
  116. package/dist/middleware/error/index.js.map +1 -1
  117. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +2 -2
  118. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -1
  119. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -1
  120. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -1
  121. package/dist/middleware/fileUploader/fileUploader.js +12 -12
  122. package/dist/middleware/fileUploader/fileUploader.js.map +1 -1
  123. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -1
  124. package/dist/middleware/fileUploader/index.js.map +1 -1
  125. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -1
  126. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -1
  127. package/dist/middleware/fileUploader/validate/index.js.map +1 -1
  128. package/dist/middleware/fileUploader/validate/validate.js.map +1 -1
  129. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -1
  130. package/dist/middleware/fourOhFour/index.js.map +1 -1
  131. package/dist/middleware/geminiFileUploader/geminiFileUploader.js.map +1 -1
  132. package/dist/middleware/geminiFileUploader/index.js.map +1 -1
  133. package/dist/middleware/healthCheck/healthCheck.js +2 -2
  134. package/dist/middleware/healthCheck/healthCheck.js.map +1 -1
  135. package/dist/middleware/healthCheck/index.js.map +1 -1
  136. package/dist/middleware/index.js.map +1 -1
  137. package/dist/middleware/metrics/index.js.map +1 -1
  138. package/dist/middleware/metrics/metrics.js.map +1 -1
  139. package/dist/middleware/requestMetrics/index.js.map +1 -1
  140. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -1
  141. package/dist/middleware/swaggerDocs/index.js.map +1 -1
  142. package/dist/middleware/swaggerDocs/swaggerDocs.js +7 -7
  143. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -1
  144. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -1
  145. package/dist/middleware/userResolver/index.js.map +1 -1
  146. package/dist/middleware/userResolver/userResolver.js.map +1 -1
  147. package/dist/middleware/validate/index.js.map +1 -1
  148. package/dist/middleware/validate/validate.js.map +1 -1
  149. package/dist/middleware/version/index.js.map +1 -1
  150. package/dist/middleware/version/version.js +3 -3
  151. package/dist/middleware/version/version.js.map +1 -1
  152. package/dist/utils/checkEnvironment/index.js +13 -13
  153. package/dist/utils/checkEnvironment/index.js.map +1 -1
  154. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -1
  155. package/dist/utils/createHttpServer/createHttpServer.validate.js +2 -2
  156. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -1
  157. package/dist/utils/createHttpServer/index.js.map +1 -1
  158. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -1
  159. package/dist/utils/createSortedObject/index.js.map +1 -1
  160. package/dist/utils/dbMigration/dbMigration.js +8 -8
  161. package/dist/utils/dbMigration/dbMigration.js.map +1 -1
  162. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -1
  163. package/dist/utils/dbMigration/index.js.map +1 -1
  164. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -1
  165. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +4 -4
  166. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -1
  167. package/dist/utils/envAssert/envAssert.js +6 -6
  168. package/dist/utils/envAssert/envAssert.js.map +1 -1
  169. package/dist/utils/envAssert/index.js.map +1 -1
  170. package/dist/utils/envAssert/validators/hostList.js +2 -2
  171. package/dist/utils/envAssert/validators/hostList.js.map +1 -1
  172. package/dist/utils/envAssert/validators/index.js.map +1 -1
  173. package/dist/utils/envAssert/validators/ipList.js +2 -2
  174. package/dist/utils/envAssert/validators/ipList.js.map +1 -1
  175. package/dist/utils/envAssert/validators/path.js +2 -2
  176. package/dist/utils/envAssert/validators/path.js.map +1 -1
  177. package/dist/utils/envAssert/validators/string.js +2 -2
  178. package/dist/utils/envAssert/validators/string.js.map +1 -1
  179. package/dist/utils/envAssert/validators/stringList.js +3 -3
  180. package/dist/utils/envAssert/validators/stringList.js.map +1 -1
  181. package/dist/utils/filter/filter.js +4 -4
  182. package/dist/utils/filter/filter.js.map +1 -1
  183. package/dist/utils/filter/index.js.map +1 -1
  184. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -1
  185. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -1
  186. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -1
  187. package/dist/utils/getDynamicLink/index.js.map +1 -1
  188. package/dist/utils/hmac/checkEnv/checkEnv.js +2 -2
  189. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -1
  190. package/dist/utils/hmac/checkEnv/index.js.map +1 -1
  191. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -1
  192. package/dist/utils/hmac/createHmac/index.js.map +1 -1
  193. package/dist/utils/hmac/index.js.map +1 -1
  194. package/dist/utils/hmac/index.types.js.map +1 -1
  195. package/dist/utils/hmac/signPayload/index.js.map +1 -1
  196. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -1
  197. package/dist/utils/hmac/verifySignature/index.js.map +1 -1
  198. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -1
  199. package/dist/utils/index.js.map +1 -1
  200. package/dist/utils/jwt/index.js.map +1 -1
  201. package/dist/utils/jwt/jwt.js.map +1 -1
  202. package/dist/utils/jwt/jwt.types.js.map +1 -1
  203. package/dist/utils/report/index.js.map +1 -1
  204. package/dist/utils/report/output.js.map +1 -1
  205. package/dist/utils/report/output.types.js.map +1 -1
  206. package/dist/utils/report/report.js.map +1 -1
  207. package/dist/utils/report/report.types.js.map +1 -1
  208. package/dist/utils/request/index.js.map +1 -1
  209. package/dist/utils/request/request.js.map +1 -1
  210. package/dist/utils/semverCompare/index.js.map +1 -1
  211. package/dist/utils/semverCompare/semverCompare.js +5 -5
  212. package/dist/utils/semverCompare/semverCompare.js.map +1 -1
  213. package/dist/utils/sendEmail/index.js.map +1 -1
  214. package/dist/utils/sendEmail/sendEmail.js +8 -8
  215. package/dist/utils/sendEmail/sendEmail.js.map +1 -1
  216. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -1
  217. package/dist/utils/sendPush/index.js.map +1 -1
  218. package/dist/utils/sendPush/sendPush.js +5 -5
  219. package/dist/utils/sendPush/sendPush.js.map +1 -1
  220. package/dist/utils/sendPush/sendPush.types.js.map +1 -1
  221. package/dist/utils/tlsConfig/index.js.map +1 -1
  222. package/dist/utils/tlsConfig/tlsConfig.js +2 -2
  223. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -1
  224. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -1
  225. package/dist/utils/tlsConfig/tlsConfig.validate.js +2 -2
  226. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -1
  227. package/dist/utils/tlsRequest/index.js.map +1 -1
  228. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -1
  229. package/dist/utils/trimPathSlash/index.js.map +1 -1
  230. package/dist/utils/trimPathSlash/trimPathSlash.js +4 -4
  231. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -1
  232. package/eslint.config.mjs +11 -11
  233. package/package.json +159 -164
  234. package/src/const/DebeziumEvent.ts +6 -6
  235. package/src/const/LogSeverity.ts +7 -7
  236. package/src/const/index.ts +5 -5
  237. package/src/const/metrics.ts +6 -6
  238. package/src/const/mime.ts +37 -37
  239. package/src/const/tokenIssuer.ts +9 -9
  240. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -29
  241. package/src/db/models/SequelizeMeta.ts +16 -16
  242. package/src/db/models/index.ts +2 -2
  243. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -103
  244. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -7
  245. package/src/entities/ElasticSearch/index.ts +2 -2
  246. package/src/entities/Endpoint/Endpoint.test.ts +337 -337
  247. package/src/entities/Endpoint/Endpoint.ts +202 -202
  248. package/src/entities/Endpoint/Endpoint.types.ts +205 -205
  249. package/src/entities/Endpoint/index.ts +2 -2
  250. package/src/entities/EngineError/EngineError.ts +28 -28
  251. package/src/entities/EngineError/EngineError.types.ts +15 -15
  252. package/src/entities/EngineError/index.ts +2 -2
  253. package/src/entities/KeySet/KeySet.test.ts +126 -126
  254. package/src/entities/KeySet/KeySet.ts +172 -172
  255. package/src/entities/KeySet/KeySet.types.ts +28 -28
  256. package/src/entities/KeySet/index.ts +2 -2
  257. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -48
  258. package/src/entities/LifecycleController/LifecycleController.ts +24 -24
  259. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -5
  260. package/src/entities/LifecycleController/index.ts +2 -2
  261. package/src/entities/Localizator/Localizator.ts +139 -139
  262. package/src/entities/Localizator/Localizator.types.ts +52 -52
  263. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -165
  264. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -58
  265. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -1
  266. package/src/entities/Localizator/index.ts +2 -2
  267. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -130
  268. package/src/entities/MessageHandler/MessageHandler.ts +72 -72
  269. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -15
  270. package/src/entities/MessageHandler/index.ts +2 -2
  271. package/src/entities/PubSub/PubSub.test.ts +297 -297
  272. package/src/entities/PubSub/PubSub.ts +202 -202
  273. package/src/entities/PubSub/PubSub.types.ts +76 -76
  274. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -102
  275. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -65
  276. package/src/entities/PubSub/handleMessage/index.ts +1 -1
  277. package/src/entities/PubSub/index.ts +2 -2
  278. package/src/entities/PushNotification/PushNotification.test.ts +35 -35
  279. package/src/entities/PushNotification/PushNotification.ts +44 -44
  280. package/src/entities/PushNotification/PushNotification.types.ts +25 -25
  281. package/src/entities/PushNotification/index.ts +2 -2
  282. package/src/entities/Redis/Redis.ts +71 -71
  283. package/src/entities/Redis/Redis.types.ts +19 -19
  284. package/src/entities/Redis/Redis.validate.ts +17 -17
  285. package/src/entities/Redis/index.ts +2 -2
  286. package/src/entities/Sequelize/Sequelize.config.ts +59 -59
  287. package/src/entities/Sequelize/Sequelize.test.ts +21 -21
  288. package/src/entities/Sequelize/Sequelize.ts +75 -75
  289. package/src/entities/Sequelize/Sequelize.types.ts +10 -10
  290. package/src/entities/Sequelize/Sequelize.validate.ts +15 -15
  291. package/src/entities/Sequelize/index.ts +2 -2
  292. package/src/entities/Server/Server.const.ts +56 -56
  293. package/src/entities/Server/Server.test.ts +272 -272
  294. package/src/entities/Server/Server.ts +445 -445
  295. package/src/entities/Server/Server.types.ts +88 -88
  296. package/src/entities/Server/index.ts +2 -2
  297. package/src/entities/SocketClient/SocketClient.test.ts +392 -392
  298. package/src/entities/SocketClient/SocketClient.ts +401 -401
  299. package/src/entities/SocketClient/SocketClient.types.ts +62 -62
  300. package/src/entities/SocketClient/index.ts +2 -2
  301. package/src/entities/SocketClient/parseMessage/index.ts +1 -1
  302. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -20
  303. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -26
  304. package/src/entities/Storage/Storage.test.ts +58 -58
  305. package/src/entities/Storage/Storage.ts +219 -219
  306. package/src/entities/Storage/Storage.types.ts +57 -57
  307. package/src/entities/Storage/index.ts +2 -2
  308. package/src/entities/ValidationError/ValidationError.ts +34 -34
  309. package/src/entities/ValidationError/index.ts +1 -1
  310. package/src/entities/WebError/WebError.test.ts +18 -18
  311. package/src/entities/WebError/WebError.ts +23 -23
  312. package/src/entities/WebError/WebError.types.ts +9 -9
  313. package/src/entities/WebError/index.ts +2 -2
  314. package/src/entities/index.ts +16 -16
  315. package/src/index.ts +4 -4
  316. package/src/metrics/debug.ts +10 -10
  317. package/src/metrics/index.ts +2 -2
  318. package/src/metrics/request.ts +17 -17
  319. package/src/middleware/authAdmin/authAdmin.test.ts +199 -199
  320. package/src/middleware/authAdmin/authAdmin.ts +114 -114
  321. package/src/middleware/authAdmin/authAdmin.types.ts +19 -19
  322. package/src/middleware/authAdmin/index.ts +2 -2
  323. package/src/middleware/authHmac/authHmac.test.ts +86 -86
  324. package/src/middleware/authHmac/authHmac.ts +56 -56
  325. package/src/middleware/authHmac/authHmac.types.ts +7 -7
  326. package/src/middleware/authHmac/index.ts +2 -2
  327. package/src/middleware/authJwt/authJwt.test.ts +54 -54
  328. package/src/middleware/authJwt/authJwt.ts +55 -55
  329. package/src/middleware/authJwt/authJwt.types.ts +14 -14
  330. package/src/middleware/authJwt/index.ts +2 -2
  331. package/src/middleware/authStatic/authStatic.test.ts +36 -36
  332. package/src/middleware/authStatic/authStatic.ts +45 -45
  333. package/src/middleware/authStatic/index.ts +1 -1
  334. package/src/middleware/authTls/authTls.test.ts +138 -138
  335. package/src/middleware/authTls/authTls.ts +106 -106
  336. package/src/middleware/authTls/authTls.types.ts +13 -13
  337. package/src/middleware/authTls/index.ts +2 -2
  338. package/src/middleware/checkPermission/checkPermission.ts +32 -32
  339. package/src/middleware/error/error.test.ts +60 -60
  340. package/src/middleware/error/error.ts +25 -25
  341. package/src/middleware/error/index.ts +1 -1
  342. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -25
  343. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -12
  344. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -2
  345. package/src/middleware/fileUploader/fileUploader.test.ts +310 -310
  346. package/src/middleware/fileUploader/fileUploader.ts +303 -303
  347. package/src/middleware/fileUploader/fileUploader.types.ts +52 -52
  348. package/src/middleware/fileUploader/index.ts +2 -2
  349. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -1
  350. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -9
  351. package/src/middleware/fileUploader/validate/index.ts +1 -1
  352. package/src/middleware/fileUploader/validate/validate.ts +27 -27
  353. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -14
  354. package/src/middleware/fourOhFour/fourOhFour.ts +13 -13
  355. package/src/middleware/fourOhFour/index.ts +1 -1
  356. package/src/middleware/geminiFileUploader/geminiFileUploader.ts +117 -117
  357. package/src/middleware/geminiFileUploader/index.ts +1 -1
  358. package/src/middleware/healthCheck/healthCheck.test.ts +12 -12
  359. package/src/middleware/healthCheck/healthCheck.ts +14 -14
  360. package/src/middleware/healthCheck/index.ts +1 -1
  361. package/src/middleware/index.ts +17 -17
  362. package/src/middleware/metrics/index.ts +1 -1
  363. package/src/middleware/metrics/metrics.test.ts +46 -46
  364. package/src/middleware/metrics/metrics.ts +24 -24
  365. package/src/middleware/requestMetrics/index.ts +1 -1
  366. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -77
  367. package/src/middleware/requestMetrics/requestMetrics.ts +20 -20
  368. package/src/middleware/swaggerDocs/index.ts +2 -2
  369. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -114
  370. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -41
  371. package/src/middleware/userResolver/index.ts +1 -1
  372. package/src/middleware/userResolver/userResolver.test.ts +35 -35
  373. package/src/middleware/userResolver/userResolver.ts +35 -35
  374. package/src/middleware/validate/index.ts +1 -1
  375. package/src/middleware/validate/validate.test.ts +43 -43
  376. package/src/middleware/validate/validate.ts +25 -25
  377. package/src/middleware/version/index.ts +1 -1
  378. package/src/middleware/version/version.test.ts +23 -23
  379. package/src/middleware/version/version.ts +12 -12
  380. package/src/utils/checkEnvironment/index.ts +49 -49
  381. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -24
  382. package/src/utils/createHttpServer/createHttpServer.ts +34 -34
  383. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -17
  384. package/src/utils/createHttpServer/index.ts +1 -1
  385. package/src/utils/createSortedObject/createSortedObject.ts +20 -20
  386. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -47
  387. package/src/utils/createSortedObject/index.ts +1 -1
  388. package/src/utils/dbMigration/dbMigration.test.ts +209 -209
  389. package/src/utils/dbMigration/dbMigration.ts +199 -199
  390. package/src/utils/dbMigration/dbMigration.types.ts +11 -11
  391. package/src/utils/dbMigration/index.ts +2 -2
  392. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -1
  393. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -59
  394. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +102 -102
  395. package/src/utils/envAssert/envAssert.ts +31 -31
  396. package/src/utils/envAssert/index.ts +1 -1
  397. package/src/utils/envAssert/validators/hostList.ts +17 -17
  398. package/src/utils/envAssert/validators/index.ts +5 -5
  399. package/src/utils/envAssert/validators/ipList.ts +13 -13
  400. package/src/utils/envAssert/validators/path.ts +13 -13
  401. package/src/utils/envAssert/validators/string.ts +9 -9
  402. package/src/utils/envAssert/validators/stringList.ts +13 -13
  403. package/src/utils/filter/filter.ts +17 -17
  404. package/src/utils/filter/index.ts +1 -1
  405. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -51
  406. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -28
  407. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -11
  408. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -6
  409. package/src/utils/getDynamicLink/index.ts +2 -2
  410. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -18
  411. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -9
  412. package/src/utils/hmac/checkEnv/index.ts +1 -1
  413. package/src/utils/hmac/createHmac/createHmac.ts +33 -33
  414. package/src/utils/hmac/createHmac/index.ts +1 -1
  415. package/src/utils/hmac/index.ts +4 -4
  416. package/src/utils/hmac/index.types.ts +13 -13
  417. package/src/utils/hmac/signPayload/index.ts +1 -1
  418. package/src/utils/hmac/signPayload/signPayload.ts +16 -16
  419. package/src/utils/hmac/verifySignature/index.ts +1 -1
  420. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -24
  421. package/src/utils/index.ts +26 -26
  422. package/src/utils/jwt/index.ts +2 -2
  423. package/src/utils/jwt/jwt.test.ts +41 -41
  424. package/src/utils/jwt/jwt.ts +204 -204
  425. package/src/utils/jwt/jwt.types.ts +21 -21
  426. package/src/utils/report/index.ts +3 -3
  427. package/src/utils/report/output.ts +45 -45
  428. package/src/utils/report/output.types.ts +70 -70
  429. package/src/utils/report/report.test.ts +133 -133
  430. package/src/utils/report/report.ts +134 -134
  431. package/src/utils/report/report.types.ts +13 -13
  432. package/src/utils/request/index.ts +1 -1
  433. package/src/utils/request/request.test.ts +26 -26
  434. package/src/utils/request/request.ts +48 -48
  435. package/src/utils/semverCompare/index.ts +1 -1
  436. package/src/utils/semverCompare/semverCompare.test.ts +49 -49
  437. package/src/utils/semverCompare/semverCompare.ts +60 -60
  438. package/src/utils/sendEmail/index.ts +1 -1
  439. package/src/utils/sendEmail/sendEmail.ts +27 -27
  440. package/src/utils/sendEmail/sendEmail.types.ts +7 -7
  441. package/src/utils/sendPush/index.ts +2 -2
  442. package/src/utils/sendPush/sendPush.ts +20 -20
  443. package/src/utils/sendPush/sendPush.types.ts +25 -25
  444. package/src/utils/tlsConfig/index.ts +2 -2
  445. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -32
  446. package/src/utils/tlsConfig/tlsConfig.ts +47 -47
  447. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -11
  448. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -25
  449. package/src/utils/tlsRequest/index.ts +1 -1
  450. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -63
  451. package/src/utils/tlsRequest/tlsRequest.ts +12 -12
  452. package/src/utils/trimPathSlash/index.ts +1 -1
  453. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -26
  454. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -8
  455. package/test/env.ts +56 -56
  456. package/test/factory/index.ts +8 -8
  457. package/test/factory/sequelizeMeta.ts +12 -12
  458. package/test/hooks.ts +37 -37
  459. package/test/index.ts +3 -3
  460. package/test/stub/index.ts +3 -3
  461. package/test/stub/stubLocales.ts +68 -68
  462. package/test/stub/stubPubSub.ts +7 -7
  463. package/test/stub/stubStorage.ts +77 -77
  464. package/test/stub/stubStorage.types.ts +11 -11
  465. package/test/utils/app.ts +31 -31
  466. package/test/utils/index.ts +1 -1
  467. package/tsconfig.build.json +5 -5
  468. package/tsconfig.json +32 -32
@@ -1,202 +1,202 @@
1
- import {
2
- RequestHandler,
3
- ErrorRequestHandler,
4
- Application,
5
- Request,
6
- Response,
7
- NextFunction
8
- } from 'express';
9
- import { Schema } from 'express-validator';
10
- import { EngineError } from '../EngineError';
11
- import {
12
- EndpointOptions,
13
- EndpointAuthType,
14
- EndpointAuthTypes,
15
- EndpointMethod,
16
- EndpointMethods,
17
- EndpointAuthParams,
18
- Middleware,
19
- MiddlewareChainElement,
20
- SafeMiddleWareChain,
21
- EndpointAuthHandlers,
22
- EndpointAuthHandler,
23
- EndpointRequestType,
24
- EndpointHandler
25
- } from './Endpoint.types';
26
- import { LogSeverity } from 'const';
27
- import { validate, fileUploader, requestMetrics } from 'middleware';
28
- import { FileUploaderConfig } from 'middleware/fileUploader';
29
- import { reportDebug, reportError, reportInfo } from 'utils/report';
30
-
31
- const namespace = 'engine:Endpoint';
32
-
33
- /**
34
- * Object representing a REST endpoint served by server
35
- */
36
- export class Endpoint<T extends EndpointAuthType> {
37
- /** Path at which the endpoint is reachable */
38
- public readonly path: string;
39
- /** HTTP method of the endpoint */
40
- public readonly method: EndpointMethod;
41
- /** Authentication system required by this endpoint */
42
- public readonly authType: T;
43
- /** Function handling the endpoint's business logic */
44
- private handler: EndpointHandler<T>;
45
- /** Validation schema that the request must pass before reaching the handler */
46
- private validator: Schema;
47
- /** Authentication related options for this endpoint */
48
- private authParams?: EndpointAuthParams<T>;
49
- /** Settings to upload files through this endpoint (this will automatically switch the expected request to be a multipart) */
50
- private files?: Array<FileUploaderConfig>;
51
- /** Express request handlers that should run on this endpoint before the business logic, they will run after the global middleware */
52
- private middleware?: Array<Middleware<T>>;
53
- /** Express error handlers that should be registered for this endpoint. they will run before the global error handler */
54
- private errorMiddleware?: Array<ErrorRequestHandler>;
55
-
56
- /** Create a REST endpoint */
57
- public constructor(config: EndpointOptions<T>) {
58
- reportDebug({
59
- namespace,
60
- message: `Creating Endpoint [${config.method} - ${config.path}]`,
61
- data: {
62
- method: config.method,
63
- path: config.path,
64
- authType: config.authType,
65
- authParams: config.authParams,
66
- file: config.file
67
- }
68
- });
69
-
70
- if (typeof config.path !== 'string')
71
- throw new EngineError({
72
- message: 'Endpoint path was not declared as a string'
73
- });
74
- this.path = config.path;
75
-
76
- if (!EndpointMethods.includes(config.method))
77
- throw new EngineError({
78
- message: 'Endpoint method is not a valid HTTP method'
79
- });
80
- this.method = config.method;
81
-
82
- if (typeof config.handler !== 'function')
83
- throw new EngineError({ message: 'Endpoint handler is not a function' });
84
- this.handler = config.handler;
85
-
86
- if (!EndpointAuthTypes.includes(config.authType))
87
- throw new EngineError({ message: 'Endpoint auth type is not valid' });
88
- this.authType = config.authType;
89
-
90
- this.validator = config.validator;
91
- this.authParams = config.authParams;
92
- this.files = config.file ? [config.file] : config.files;
93
-
94
- // Middleware can both be function or arrays
95
- if (typeof config.middleware === 'function')
96
- this.middleware = [config.middleware];
97
- if (config.middleware instanceof Array) this.middleware = config.middleware;
98
- if (typeof config.errorMiddleware === 'function')
99
- this.errorMiddleware = [config.errorMiddleware];
100
- if (config.errorMiddleware instanceof Array)
101
- this.errorMiddleware = config.errorMiddleware;
102
- }
103
-
104
- /**
105
- * Register the endpoint to a react app
106
- */
107
- public register(app: Application): void {
108
- // First initialize the handling calculation
109
- const middlewareChain: Array<MiddlewareChainElement<T>> = [requestMetrics];
110
- // Register auth middleware
111
- middlewareChain.push(...this.getAuthMiddleware(this.authType));
112
- if (this.files) {
113
- // Register file upload
114
- // Validation is included in the file upload process as this uses multipart/form-data
115
- middlewareChain.push(fileUploader(this.files, this.validator));
116
- } else {
117
- // Register validator for regular cases
118
- middlewareChain.push(validate(this.validator));
119
- }
120
- // Register additional middleware
121
- if (this.middleware) {
122
- middlewareChain.push(...this.middleware);
123
- }
124
- // Register handler
125
- middlewareChain.push(this.handler);
126
- // Wrap middleware to await any async execution and catch any errors thrown
127
- const safeMiddlewareChain: SafeMiddleWareChain =
128
- this.catchExceptionForExpress(middlewareChain);
129
- // Register error middleware
130
- if (this.errorMiddleware) {
131
- safeMiddlewareChain.push(...this.errorMiddleware);
132
- }
133
- app[this.method](
134
- this.path,
135
- ...(safeMiddlewareChain.flat() as Array<
136
- RequestHandler | ErrorRequestHandler
137
- >)
138
- );
139
- }
140
-
141
- /**
142
- * Catch exceptions thrown inside of middleware and pass them properly to express
143
- */
144
- private catchExceptionForExpress(
145
- middlewareChain: Array<MiddlewareChainElement<T>>
146
- ): SafeMiddleWareChain {
147
- return middlewareChain.map((middleware) => {
148
- if (middleware instanceof Array) {
149
- return this.catchExceptionForExpress(middleware);
150
- }
151
- if (typeof middleware === 'function') {
152
- return (req: Request, res: Response, next: NextFunction) => {
153
- (async (): Promise<void> => {
154
- try {
155
- await middleware(req as EndpointRequestType[T], res, next);
156
- } catch (err) {
157
- next(err);
158
- }
159
- })().catch((error) => {
160
- reportError(error);
161
- });
162
- };
163
- }
164
- throw new EngineError({
165
- message: 'Middleware is not a function nor an array',
166
- data: { type: typeof middleware }
167
- });
168
- });
169
- }
170
-
171
- /**
172
- * Get the authentication middleware for a given type of authentication
173
- */
174
- private getAuthMiddleware(authType: EndpointAuthType): Array<RequestHandler> {
175
- const middlewareChain: Array<RequestHandler> = [];
176
-
177
- const handler = EndpointAuthHandlers[authType] as EndpointAuthHandler<T>;
178
- if (!handler) {
179
- reportInfo({
180
- severity: LogSeverity.WARNING,
181
- message: `Endpoint "${this.method} - ${this.path}" was declared with no authentication method`
182
- });
183
- return [];
184
- }
185
-
186
- const middleware = handler(this.authParams);
187
-
188
- middlewareChain.push(
189
- async (request: Request, response: Response, next: NextFunction) => {
190
- try {
191
- await middleware(request, response, next);
192
- } catch (error) {
193
- if (!this.authParams?.acceptInvalid) throw error;
194
- reportError(error);
195
- next();
196
- }
197
- }
198
- );
199
-
200
- return middlewareChain;
201
- }
202
- }
1
+ import {
2
+ RequestHandler,
3
+ ErrorRequestHandler,
4
+ Application,
5
+ Request,
6
+ Response,
7
+ NextFunction
8
+ } from 'express';
9
+ import { Schema } from 'express-validator';
10
+ import { EngineError } from '../EngineError';
11
+ import {
12
+ EndpointOptions,
13
+ EndpointAuthType,
14
+ EndpointAuthTypes,
15
+ EndpointMethod,
16
+ EndpointMethods,
17
+ EndpointAuthParams,
18
+ Middleware,
19
+ MiddlewareChainElement,
20
+ SafeMiddleWareChain,
21
+ EndpointAuthHandlers,
22
+ EndpointAuthHandler,
23
+ EndpointRequestType,
24
+ EndpointHandler
25
+ } from './Endpoint.types';
26
+ import { LogSeverity } from 'const';
27
+ import { validate, fileUploader, requestMetrics } from 'middleware';
28
+ import { FileUploaderConfig } from 'middleware/fileUploader';
29
+ import { reportDebug, reportError, reportInfo } from 'utils/report';
30
+
31
+ const namespace = 'engine:Endpoint';
32
+
33
+ /**
34
+ * Object representing a REST endpoint served by server
35
+ */
36
+ export class Endpoint<T extends EndpointAuthType> {
37
+ /** Path at which the endpoint is reachable */
38
+ public readonly path: string;
39
+ /** HTTP method of the endpoint */
40
+ public readonly method: EndpointMethod;
41
+ /** Authentication system required by this endpoint */
42
+ public readonly authType: T;
43
+ /** Function handling the endpoint's business logic */
44
+ private handler: EndpointHandler<T>;
45
+ /** Validation schema that the request must pass before reaching the handler */
46
+ private validator: Schema;
47
+ /** Authentication related options for this endpoint */
48
+ private authParams?: EndpointAuthParams<T>;
49
+ /** Settings to upload files through this endpoint (this will automatically switch the expected request to be a multipart) */
50
+ private files?: Array<FileUploaderConfig>;
51
+ /** Express request handlers that should run on this endpoint before the business logic, they will run after the global middleware */
52
+ private middleware?: Array<Middleware<T>>;
53
+ /** Express error handlers that should be registered for this endpoint. they will run before the global error handler */
54
+ private errorMiddleware?: Array<ErrorRequestHandler>;
55
+
56
+ /** Create a REST endpoint */
57
+ public constructor(config: EndpointOptions<T>) {
58
+ reportDebug({
59
+ namespace,
60
+ message: `Creating Endpoint [${config.method} - ${config.path}]`,
61
+ data: {
62
+ method: config.method,
63
+ path: config.path,
64
+ authType: config.authType,
65
+ authParams: config.authParams,
66
+ file: config.file
67
+ }
68
+ });
69
+
70
+ if (typeof config.path !== 'string')
71
+ throw new EngineError({
72
+ message: 'Endpoint path was not declared as a string'
73
+ });
74
+ this.path = config.path;
75
+
76
+ if (!EndpointMethods.includes(config.method))
77
+ throw new EngineError({
78
+ message: 'Endpoint method is not a valid HTTP method'
79
+ });
80
+ this.method = config.method;
81
+
82
+ if (typeof config.handler !== 'function')
83
+ throw new EngineError({ message: 'Endpoint handler is not a function' });
84
+ this.handler = config.handler;
85
+
86
+ if (!EndpointAuthTypes.includes(config.authType))
87
+ throw new EngineError({ message: 'Endpoint auth type is not valid' });
88
+ this.authType = config.authType;
89
+
90
+ this.validator = config.validator;
91
+ this.authParams = config.authParams;
92
+ this.files = config.file ? [config.file] : config.files;
93
+
94
+ // Middleware can both be function or arrays
95
+ if (typeof config.middleware === 'function')
96
+ this.middleware = [config.middleware];
97
+ if (config.middleware instanceof Array) this.middleware = config.middleware;
98
+ if (typeof config.errorMiddleware === 'function')
99
+ this.errorMiddleware = [config.errorMiddleware];
100
+ if (config.errorMiddleware instanceof Array)
101
+ this.errorMiddleware = config.errorMiddleware;
102
+ }
103
+
104
+ /**
105
+ * Register the endpoint to a react app
106
+ */
107
+ public register(app: Application): void {
108
+ // First initialize the handling calculation
109
+ const middlewareChain: Array<MiddlewareChainElement<T>> = [requestMetrics];
110
+ // Register auth middleware
111
+ middlewareChain.push(...this.getAuthMiddleware(this.authType));
112
+ if (this.files) {
113
+ // Register file upload
114
+ // Validation is included in the file upload process as this uses multipart/form-data
115
+ middlewareChain.push(fileUploader(this.files, this.validator));
116
+ } else {
117
+ // Register validator for regular cases
118
+ middlewareChain.push(validate(this.validator));
119
+ }
120
+ // Register additional middleware
121
+ if (this.middleware) {
122
+ middlewareChain.push(...this.middleware);
123
+ }
124
+ // Register handler
125
+ middlewareChain.push(this.handler);
126
+ // Wrap middleware to await any async execution and catch any errors thrown
127
+ const safeMiddlewareChain: SafeMiddleWareChain =
128
+ this.catchExceptionForExpress(middlewareChain);
129
+ // Register error middleware
130
+ if (this.errorMiddleware) {
131
+ safeMiddlewareChain.push(...this.errorMiddleware);
132
+ }
133
+ app[this.method](
134
+ this.path,
135
+ ...(safeMiddlewareChain.flat() as Array<
136
+ RequestHandler | ErrorRequestHandler
137
+ >)
138
+ );
139
+ }
140
+
141
+ /**
142
+ * Catch exceptions thrown inside of middleware and pass them properly to express
143
+ */
144
+ private catchExceptionForExpress(
145
+ middlewareChain: Array<MiddlewareChainElement<T>>
146
+ ): SafeMiddleWareChain {
147
+ return middlewareChain.map((middleware) => {
148
+ if (middleware instanceof Array) {
149
+ return this.catchExceptionForExpress(middleware);
150
+ }
151
+ if (typeof middleware === 'function') {
152
+ return (req: Request, res: Response, next: NextFunction) => {
153
+ (async (): Promise<void> => {
154
+ try {
155
+ await middleware(req as EndpointRequestType[T], res, next);
156
+ } catch (err) {
157
+ next(err);
158
+ }
159
+ })().catch((error) => {
160
+ reportError(error);
161
+ });
162
+ };
163
+ }
164
+ throw new EngineError({
165
+ message: 'Middleware is not a function nor an array',
166
+ data: { type: typeof middleware }
167
+ });
168
+ });
169
+ }
170
+
171
+ /**
172
+ * Get the authentication middleware for a given type of authentication
173
+ */
174
+ private getAuthMiddleware(authType: EndpointAuthType): Array<RequestHandler> {
175
+ const middlewareChain: Array<RequestHandler> = [];
176
+
177
+ const handler = EndpointAuthHandlers[authType] as EndpointAuthHandler<T>;
178
+ if (!handler) {
179
+ reportInfo({
180
+ severity: LogSeverity.WARNING,
181
+ message: `Endpoint "${this.method} - ${this.path}" was declared with no authentication method`
182
+ });
183
+ return [];
184
+ }
185
+
186
+ const middleware = handler(this.authParams);
187
+
188
+ middlewareChain.push(
189
+ async (request: Request, response: Response, next: NextFunction) => {
190
+ try {
191
+ await middleware(request, response, next);
192
+ } catch (error) {
193
+ if (!this.authParams?.acceptInvalid) throw error;
194
+ reportError(error);
195
+ next();
196
+ }
197
+ }
198
+ );
199
+
200
+ return middlewareChain;
201
+ }
202
+ }