node-server-engine 1.1.1 → 1.1.3

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 (471) 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 -1025
  7. package/babel.config.json +35 -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.map +1 -1
  16. package/dist/db/models/index.js.map +1 -1
  17. package/dist/entities/ElasticSearch/ElasticSearch.js +7 -7
  18. package/dist/entities/ElasticSearch/ElasticSearch.js.map +1 -1
  19. package/dist/entities/ElasticSearch/ElasticSearch.types.js.map +1 -1
  20. package/dist/entities/ElasticSearch/index.js.map +1 -1
  21. package/dist/entities/Endpoint/Endpoint.js +8 -8
  22. package/dist/entities/Endpoint/Endpoint.js.map +1 -1
  23. package/dist/entities/Endpoint/Endpoint.types.js.map +1 -1
  24. package/dist/entities/Endpoint/index.js.map +1 -1
  25. package/dist/entities/EngineError/EngineError.js +2 -2
  26. package/dist/entities/EngineError/EngineError.js.map +1 -1
  27. package/dist/entities/EngineError/EngineError.types.js.map +1 -1
  28. package/dist/entities/EngineError/index.js.map +1 -1
  29. package/dist/entities/KeySet/KeySet.js +3 -3
  30. package/dist/entities/KeySet/KeySet.js.map +1 -1
  31. package/dist/entities/KeySet/KeySet.types.js.map +1 -1
  32. package/dist/entities/KeySet/index.js.map +1 -1
  33. package/dist/entities/LifecycleController/LifecycleController.js.map +1 -1
  34. package/dist/entities/LifecycleController/LifecycleController.types.js.map +1 -1
  35. package/dist/entities/LifecycleController/index.js.map +1 -1
  36. package/dist/entities/Localizator/Localizator.js +7 -7
  37. package/dist/entities/Localizator/Localizator.js.map +1 -1
  38. package/dist/entities/Localizator/Localizator.types.js.map +1 -1
  39. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js.map +1 -1
  40. package/dist/entities/Localizator/guessNamingConvention/index.js.map +1 -1
  41. package/dist/entities/Localizator/index.js.map +1 -1
  42. package/dist/entities/MessageHandler/MessageHandler.js +2 -2
  43. package/dist/entities/MessageHandler/MessageHandler.js.map +1 -1
  44. package/dist/entities/MessageHandler/MessageHandler.types.js.map +1 -1
  45. package/dist/entities/MessageHandler/index.js.map +1 -1
  46. package/dist/entities/PubSub/PubSub.js +25 -25
  47. package/dist/entities/PubSub/PubSub.js.map +1 -1
  48. package/dist/entities/PubSub/PubSub.types.js.map +1 -1
  49. package/dist/entities/PubSub/handleMessage/handleMessage.js +6 -6
  50. package/dist/entities/PubSub/handleMessage/handleMessage.js.map +1 -1
  51. package/dist/entities/PubSub/handleMessage/index.js.map +1 -1
  52. package/dist/entities/PubSub/index.js.map +1 -1
  53. package/dist/entities/PushNotification/PushNotification.js +4 -4
  54. package/dist/entities/PushNotification/PushNotification.js.map +1 -1
  55. package/dist/entities/PushNotification/PushNotification.types.js.map +1 -1
  56. package/dist/entities/PushNotification/index.js.map +1 -1
  57. package/dist/entities/Redis/Redis.js +8 -8
  58. package/dist/entities/Redis/Redis.js.map +1 -1
  59. package/dist/entities/Redis/Redis.types.js.map +1 -1
  60. package/dist/entities/Redis/Redis.validate.js +2 -2
  61. package/dist/entities/Redis/Redis.validate.js.map +1 -1
  62. package/dist/entities/Redis/index.js.map +1 -1
  63. package/dist/entities/Sequelize/Sequelize.config.js +42 -2
  64. package/dist/entities/Sequelize/Sequelize.config.js.map +1 -1
  65. package/dist/entities/Sequelize/Sequelize.js +3 -3
  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 +2 -2
  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 +15 -15
  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 +4 -4
  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.d.ts +3 -1
  115. package/dist/middleware/checkPermission/checkPermission.js +2 -2
  116. package/dist/middleware/checkPermission/checkPermission.js.map +1 -1
  117. package/dist/middleware/error/error.js.map +1 -1
  118. package/dist/middleware/error/index.js.map +1 -1
  119. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +2 -2
  120. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -1
  121. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -1
  122. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -1
  123. package/dist/middleware/fileUploader/fileUploader.js +12 -12
  124. package/dist/middleware/fileUploader/fileUploader.js.map +1 -1
  125. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -1
  126. package/dist/middleware/fileUploader/index.js.map +1 -1
  127. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -1
  128. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -1
  129. package/dist/middleware/fileUploader/validate/index.js.map +1 -1
  130. package/dist/middleware/fileUploader/validate/validate.js.map +1 -1
  131. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -1
  132. package/dist/middleware/fourOhFour/index.js.map +1 -1
  133. package/dist/middleware/geminiFileUploader/geminiFileUploader.js.map +1 -1
  134. package/dist/middleware/geminiFileUploader/index.js.map +1 -1
  135. package/dist/middleware/healthCheck/healthCheck.js +2 -2
  136. package/dist/middleware/healthCheck/healthCheck.js.map +1 -1
  137. package/dist/middleware/healthCheck/index.js.map +1 -1
  138. package/dist/middleware/index.js.map +1 -1
  139. package/dist/middleware/metrics/index.js.map +1 -1
  140. package/dist/middleware/metrics/metrics.js.map +1 -1
  141. package/dist/middleware/requestMetrics/index.js.map +1 -1
  142. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -1
  143. package/dist/middleware/swaggerDocs/index.js.map +1 -1
  144. package/dist/middleware/swaggerDocs/swaggerDocs.js +7 -7
  145. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -1
  146. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -1
  147. package/dist/middleware/userResolver/index.js.map +1 -1
  148. package/dist/middleware/userResolver/userResolver.js.map +1 -1
  149. package/dist/middleware/validate/index.js.map +1 -1
  150. package/dist/middleware/validate/validate.js.map +1 -1
  151. package/dist/middleware/version/index.js.map +1 -1
  152. package/dist/middleware/version/version.js +3 -3
  153. package/dist/middleware/version/version.js.map +1 -1
  154. package/dist/utils/checkEnvironment/index.js +13 -13
  155. package/dist/utils/checkEnvironment/index.js.map +1 -1
  156. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -1
  157. package/dist/utils/createHttpServer/createHttpServer.validate.js +2 -2
  158. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -1
  159. package/dist/utils/createHttpServer/index.js.map +1 -1
  160. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -1
  161. package/dist/utils/createSortedObject/index.js.map +1 -1
  162. package/dist/utils/dbMigration/dbMigration.js +8 -8
  163. package/dist/utils/dbMigration/dbMigration.js.map +1 -1
  164. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -1
  165. package/dist/utils/dbMigration/index.js.map +1 -1
  166. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -1
  167. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.d.ts +2 -2
  168. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +47 -15
  169. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -1
  170. package/dist/utils/envAssert/envAssert.js +6 -6
  171. package/dist/utils/envAssert/envAssert.js.map +1 -1
  172. package/dist/utils/envAssert/index.js.map +1 -1
  173. package/dist/utils/envAssert/validators/hostList.js +2 -2
  174. package/dist/utils/envAssert/validators/hostList.js.map +1 -1
  175. package/dist/utils/envAssert/validators/index.js.map +1 -1
  176. package/dist/utils/envAssert/validators/ipList.js +2 -2
  177. package/dist/utils/envAssert/validators/ipList.js.map +1 -1
  178. package/dist/utils/envAssert/validators/path.js +2 -2
  179. package/dist/utils/envAssert/validators/path.js.map +1 -1
  180. package/dist/utils/envAssert/validators/string.js +2 -2
  181. package/dist/utils/envAssert/validators/string.js.map +1 -1
  182. package/dist/utils/envAssert/validators/stringList.js +3 -3
  183. package/dist/utils/envAssert/validators/stringList.js.map +1 -1
  184. package/dist/utils/filter/filter.js +4 -4
  185. package/dist/utils/filter/filter.js.map +1 -1
  186. package/dist/utils/filter/index.js.map +1 -1
  187. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -1
  188. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -1
  189. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -1
  190. package/dist/utils/getDynamicLink/index.js.map +1 -1
  191. package/dist/utils/hmac/checkEnv/checkEnv.js +2 -2
  192. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -1
  193. package/dist/utils/hmac/checkEnv/index.js.map +1 -1
  194. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -1
  195. package/dist/utils/hmac/createHmac/index.js.map +1 -1
  196. package/dist/utils/hmac/index.js.map +1 -1
  197. package/dist/utils/hmac/index.types.js.map +1 -1
  198. package/dist/utils/hmac/signPayload/index.js.map +1 -1
  199. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -1
  200. package/dist/utils/hmac/verifySignature/index.js.map +1 -1
  201. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -1
  202. package/dist/utils/index.js.map +1 -1
  203. package/dist/utils/jwt/index.js.map +1 -1
  204. package/dist/utils/jwt/jwt.js.map +1 -1
  205. package/dist/utils/jwt/jwt.types.js.map +1 -1
  206. package/dist/utils/report/index.js.map +1 -1
  207. package/dist/utils/report/output.js.map +1 -1
  208. package/dist/utils/report/output.types.js.map +1 -1
  209. package/dist/utils/report/report.js.map +1 -1
  210. package/dist/utils/report/report.types.js.map +1 -1
  211. package/dist/utils/request/index.js.map +1 -1
  212. package/dist/utils/request/request.js.map +1 -1
  213. package/dist/utils/semverCompare/index.js.map +1 -1
  214. package/dist/utils/semverCompare/semverCompare.js +5 -5
  215. package/dist/utils/semverCompare/semverCompare.js.map +1 -1
  216. package/dist/utils/sendEmail/index.js.map +1 -1
  217. package/dist/utils/sendEmail/sendEmail.js +8 -8
  218. package/dist/utils/sendEmail/sendEmail.js.map +1 -1
  219. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -1
  220. package/dist/utils/sendPush/index.js.map +1 -1
  221. package/dist/utils/sendPush/sendPush.js +5 -5
  222. package/dist/utils/sendPush/sendPush.js.map +1 -1
  223. package/dist/utils/sendPush/sendPush.types.js.map +1 -1
  224. package/dist/utils/tlsConfig/index.js.map +1 -1
  225. package/dist/utils/tlsConfig/tlsConfig.js +2 -2
  226. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -1
  227. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -1
  228. package/dist/utils/tlsConfig/tlsConfig.validate.js +2 -2
  229. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -1
  230. package/dist/utils/tlsRequest/index.js.map +1 -1
  231. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -1
  232. package/dist/utils/trimPathSlash/index.js.map +1 -1
  233. package/dist/utils/trimPathSlash/trimPathSlash.js +4 -4
  234. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -1
  235. package/eslint.config.mjs +11 -11
  236. package/package.json +164 -161
  237. package/src/const/DebeziumEvent.ts +6 -6
  238. package/src/const/LogSeverity.ts +7 -7
  239. package/src/const/index.ts +5 -5
  240. package/src/const/metrics.ts +6 -6
  241. package/src/const/mime.ts +37 -37
  242. package/src/const/tokenIssuer.ts +9 -9
  243. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -29
  244. package/src/db/models/SequelizeMeta.ts +16 -16
  245. package/src/db/models/index.ts +2 -2
  246. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -103
  247. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -7
  248. package/src/entities/ElasticSearch/index.ts +2 -2
  249. package/src/entities/Endpoint/Endpoint.test.ts +337 -337
  250. package/src/entities/Endpoint/Endpoint.ts +202 -202
  251. package/src/entities/Endpoint/Endpoint.types.ts +205 -205
  252. package/src/entities/Endpoint/index.ts +2 -2
  253. package/src/entities/EngineError/EngineError.ts +28 -28
  254. package/src/entities/EngineError/EngineError.types.ts +15 -15
  255. package/src/entities/EngineError/index.ts +2 -2
  256. package/src/entities/KeySet/KeySet.test.ts +126 -126
  257. package/src/entities/KeySet/KeySet.ts +172 -172
  258. package/src/entities/KeySet/KeySet.types.ts +28 -28
  259. package/src/entities/KeySet/index.ts +2 -2
  260. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -48
  261. package/src/entities/LifecycleController/LifecycleController.ts +24 -24
  262. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -5
  263. package/src/entities/LifecycleController/index.ts +2 -2
  264. package/src/entities/Localizator/Localizator.ts +139 -139
  265. package/src/entities/Localizator/Localizator.types.ts +52 -52
  266. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -165
  267. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -58
  268. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -1
  269. package/src/entities/Localizator/index.ts +2 -2
  270. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -130
  271. package/src/entities/MessageHandler/MessageHandler.ts +72 -72
  272. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -15
  273. package/src/entities/MessageHandler/index.ts +2 -2
  274. package/src/entities/PubSub/PubSub.test.ts +297 -297
  275. package/src/entities/PubSub/PubSub.ts +202 -202
  276. package/src/entities/PubSub/PubSub.types.ts +76 -76
  277. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -102
  278. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -65
  279. package/src/entities/PubSub/handleMessage/index.ts +1 -1
  280. package/src/entities/PubSub/index.ts +2 -2
  281. package/src/entities/PushNotification/PushNotification.test.ts +35 -35
  282. package/src/entities/PushNotification/PushNotification.ts +44 -44
  283. package/src/entities/PushNotification/PushNotification.types.ts +25 -25
  284. package/src/entities/PushNotification/index.ts +2 -2
  285. package/src/entities/Redis/Redis.ts +71 -71
  286. package/src/entities/Redis/Redis.types.ts +19 -19
  287. package/src/entities/Redis/Redis.validate.ts +17 -17
  288. package/src/entities/Redis/index.ts +2 -2
  289. package/src/entities/Sequelize/Sequelize.config.ts +59 -29
  290. package/src/entities/Sequelize/Sequelize.test.ts +21 -21
  291. package/src/entities/Sequelize/Sequelize.ts +75 -75
  292. package/src/entities/Sequelize/Sequelize.types.ts +10 -10
  293. package/src/entities/Sequelize/Sequelize.validate.ts +15 -15
  294. package/src/entities/Sequelize/index.ts +2 -2
  295. package/src/entities/Server/Server.const.ts +56 -56
  296. package/src/entities/Server/Server.test.ts +272 -272
  297. package/src/entities/Server/Server.ts +445 -445
  298. package/src/entities/Server/Server.types.ts +88 -88
  299. package/src/entities/Server/index.ts +2 -2
  300. package/src/entities/SocketClient/SocketClient.test.ts +392 -392
  301. package/src/entities/SocketClient/SocketClient.ts +401 -401
  302. package/src/entities/SocketClient/SocketClient.types.ts +62 -62
  303. package/src/entities/SocketClient/index.ts +2 -2
  304. package/src/entities/SocketClient/parseMessage/index.ts +1 -1
  305. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -20
  306. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -26
  307. package/src/entities/Storage/Storage.test.ts +58 -58
  308. package/src/entities/Storage/Storage.ts +219 -219
  309. package/src/entities/Storage/Storage.types.ts +57 -57
  310. package/src/entities/Storage/index.ts +2 -2
  311. package/src/entities/ValidationError/ValidationError.ts +34 -34
  312. package/src/entities/ValidationError/index.ts +1 -1
  313. package/src/entities/WebError/WebError.test.ts +18 -18
  314. package/src/entities/WebError/WebError.ts +23 -23
  315. package/src/entities/WebError/WebError.types.ts +9 -9
  316. package/src/entities/WebError/index.ts +2 -2
  317. package/src/entities/index.ts +16 -16
  318. package/src/index.ts +4 -4
  319. package/src/metrics/debug.ts +10 -10
  320. package/src/metrics/index.ts +2 -2
  321. package/src/metrics/request.ts +17 -17
  322. package/src/middleware/authAdmin/authAdmin.test.ts +199 -199
  323. package/src/middleware/authAdmin/authAdmin.ts +114 -114
  324. package/src/middleware/authAdmin/authAdmin.types.ts +19 -19
  325. package/src/middleware/authAdmin/index.ts +2 -2
  326. package/src/middleware/authHmac/authHmac.test.ts +86 -86
  327. package/src/middleware/authHmac/authHmac.ts +56 -56
  328. package/src/middleware/authHmac/authHmac.types.ts +7 -7
  329. package/src/middleware/authHmac/index.ts +2 -2
  330. package/src/middleware/authJwt/authJwt.test.ts +54 -54
  331. package/src/middleware/authJwt/authJwt.ts +55 -55
  332. package/src/middleware/authJwt/authJwt.types.ts +14 -14
  333. package/src/middleware/authJwt/index.ts +2 -2
  334. package/src/middleware/authStatic/authStatic.test.ts +36 -36
  335. package/src/middleware/authStatic/authStatic.ts +45 -45
  336. package/src/middleware/authStatic/index.ts +1 -1
  337. package/src/middleware/authTls/authTls.test.ts +138 -138
  338. package/src/middleware/authTls/authTls.ts +106 -106
  339. package/src/middleware/authTls/authTls.types.ts +13 -13
  340. package/src/middleware/authTls/index.ts +2 -2
  341. package/src/middleware/checkPermission/checkPermission.ts +33 -35
  342. package/src/middleware/error/error.test.ts +60 -60
  343. package/src/middleware/error/error.ts +25 -25
  344. package/src/middleware/error/index.ts +1 -1
  345. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -25
  346. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -12
  347. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -2
  348. package/src/middleware/fileUploader/fileUploader.test.ts +310 -310
  349. package/src/middleware/fileUploader/fileUploader.ts +303 -303
  350. package/src/middleware/fileUploader/fileUploader.types.ts +52 -52
  351. package/src/middleware/fileUploader/index.ts +2 -2
  352. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -1
  353. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -9
  354. package/src/middleware/fileUploader/validate/index.ts +1 -1
  355. package/src/middleware/fileUploader/validate/validate.ts +27 -27
  356. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -14
  357. package/src/middleware/fourOhFour/fourOhFour.ts +13 -13
  358. package/src/middleware/fourOhFour/index.ts +1 -1
  359. package/src/middleware/geminiFileUploader/geminiFileUploader.ts +117 -117
  360. package/src/middleware/geminiFileUploader/index.ts +1 -1
  361. package/src/middleware/healthCheck/healthCheck.test.ts +12 -12
  362. package/src/middleware/healthCheck/healthCheck.ts +14 -14
  363. package/src/middleware/healthCheck/index.ts +1 -1
  364. package/src/middleware/index.ts +17 -17
  365. package/src/middleware/metrics/index.ts +1 -1
  366. package/src/middleware/metrics/metrics.test.ts +46 -46
  367. package/src/middleware/metrics/metrics.ts +24 -24
  368. package/src/middleware/requestMetrics/index.ts +1 -1
  369. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -77
  370. package/src/middleware/requestMetrics/requestMetrics.ts +20 -20
  371. package/src/middleware/swaggerDocs/index.ts +2 -2
  372. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -114
  373. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -41
  374. package/src/middleware/userResolver/index.ts +1 -1
  375. package/src/middleware/userResolver/userResolver.test.ts +35 -35
  376. package/src/middleware/userResolver/userResolver.ts +35 -35
  377. package/src/middleware/validate/index.ts +1 -1
  378. package/src/middleware/validate/validate.test.ts +43 -43
  379. package/src/middleware/validate/validate.ts +25 -25
  380. package/src/middleware/version/index.ts +1 -1
  381. package/src/middleware/version/version.test.ts +23 -23
  382. package/src/middleware/version/version.ts +12 -12
  383. package/src/utils/checkEnvironment/index.ts +49 -49
  384. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -24
  385. package/src/utils/createHttpServer/createHttpServer.ts +34 -34
  386. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -17
  387. package/src/utils/createHttpServer/index.ts +1 -1
  388. package/src/utils/createSortedObject/createSortedObject.ts +20 -20
  389. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -47
  390. package/src/utils/createSortedObject/index.ts +1 -1
  391. package/src/utils/dbMigration/dbMigration.test.ts +209 -209
  392. package/src/utils/dbMigration/dbMigration.ts +199 -199
  393. package/src/utils/dbMigration/dbMigration.types.ts +11 -11
  394. package/src/utils/dbMigration/index.ts +2 -2
  395. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -1
  396. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -59
  397. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +102 -70
  398. package/src/utils/envAssert/envAssert.ts +31 -31
  399. package/src/utils/envAssert/index.ts +1 -1
  400. package/src/utils/envAssert/validators/hostList.ts +17 -17
  401. package/src/utils/envAssert/validators/index.ts +5 -5
  402. package/src/utils/envAssert/validators/ipList.ts +13 -13
  403. package/src/utils/envAssert/validators/path.ts +13 -13
  404. package/src/utils/envAssert/validators/string.ts +9 -9
  405. package/src/utils/envAssert/validators/stringList.ts +13 -13
  406. package/src/utils/filter/filter.ts +17 -17
  407. package/src/utils/filter/index.ts +1 -1
  408. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -51
  409. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -28
  410. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -11
  411. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -6
  412. package/src/utils/getDynamicLink/index.ts +2 -2
  413. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -18
  414. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -9
  415. package/src/utils/hmac/checkEnv/index.ts +1 -1
  416. package/src/utils/hmac/createHmac/createHmac.ts +33 -33
  417. package/src/utils/hmac/createHmac/index.ts +1 -1
  418. package/src/utils/hmac/index.ts +4 -4
  419. package/src/utils/hmac/index.types.ts +13 -13
  420. package/src/utils/hmac/signPayload/index.ts +1 -1
  421. package/src/utils/hmac/signPayload/signPayload.ts +16 -16
  422. package/src/utils/hmac/verifySignature/index.ts +1 -1
  423. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -24
  424. package/src/utils/index.ts +26 -26
  425. package/src/utils/jwt/index.ts +2 -2
  426. package/src/utils/jwt/jwt.test.ts +41 -41
  427. package/src/utils/jwt/jwt.ts +204 -204
  428. package/src/utils/jwt/jwt.types.ts +21 -21
  429. package/src/utils/report/index.ts +3 -3
  430. package/src/utils/report/output.ts +45 -45
  431. package/src/utils/report/output.types.ts +70 -70
  432. package/src/utils/report/report.test.ts +133 -133
  433. package/src/utils/report/report.ts +134 -134
  434. package/src/utils/report/report.types.ts +13 -13
  435. package/src/utils/request/index.ts +1 -1
  436. package/src/utils/request/request.test.ts +26 -26
  437. package/src/utils/request/request.ts +48 -48
  438. package/src/utils/semverCompare/index.ts +1 -1
  439. package/src/utils/semverCompare/semverCompare.test.ts +49 -49
  440. package/src/utils/semverCompare/semverCompare.ts +60 -60
  441. package/src/utils/sendEmail/index.ts +1 -1
  442. package/src/utils/sendEmail/sendEmail.ts +27 -27
  443. package/src/utils/sendEmail/sendEmail.types.ts +7 -7
  444. package/src/utils/sendPush/index.ts +2 -2
  445. package/src/utils/sendPush/sendPush.ts +20 -20
  446. package/src/utils/sendPush/sendPush.types.ts +25 -25
  447. package/src/utils/tlsConfig/index.ts +2 -2
  448. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -32
  449. package/src/utils/tlsConfig/tlsConfig.ts +47 -47
  450. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -11
  451. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -25
  452. package/src/utils/tlsRequest/index.ts +1 -1
  453. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -63
  454. package/src/utils/tlsRequest/tlsRequest.ts +12 -12
  455. package/src/utils/trimPathSlash/index.ts +1 -1
  456. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -26
  457. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -8
  458. package/test/env.ts +56 -56
  459. package/test/factory/index.ts +8 -8
  460. package/test/factory/sequelizeMeta.ts +12 -12
  461. package/test/hooks.ts +37 -37
  462. package/test/index.ts +3 -3
  463. package/test/stub/index.ts +3 -3
  464. package/test/stub/stubLocales.ts +68 -68
  465. package/test/stub/stubPubSub.ts +7 -7
  466. package/test/stub/stubStorage.ts +77 -77
  467. package/test/stub/stubStorage.types.ts +11 -11
  468. package/test/utils/app.ts +31 -31
  469. package/test/utils/index.ts +1 -1
  470. package/tsconfig.build.json +5 -5
  471. package/tsconfig.json +32 -32
@@ -1,35 +1,35 @@
1
- import { factory } from 'backend-test-tools';
2
- import { expect } from 'chai';
3
- import { Request, Response } from 'express';
4
- import { stub, fake } from 'sinon';
5
- import { userResolver } from './userResolver';
6
-
7
- describe('Middleware - User Resolver', function () {
8
- it('should expand the user object with its data using its userId', async function () {
9
- const me = factory.build('user');
10
- const next = fake();
11
- const request: Partial<Request> = { user: { id: me.id } };
12
-
13
- // Call the resolver with the mocked request
14
- await userResolver(request as Request, undefined as unknown as Response, next);
15
-
16
- expect(next).to.have.been.called;
17
- // expect(request.user).to.deep.equal(me);
18
- });
19
-
20
- it('should throw an error if there is no userId', async function () {
21
- const me = factory.build('user');
22
- const next = fake();
23
- const request = {} as Request;
24
- await expect(userResolver(request, undefined as unknown as Response, next))
25
- .to.eventually.be.rejected;
26
- });
27
-
28
- // it('should throw an error if there is no such user', async function () {
29
- // const { id } = factory.build('user');
30
- // const next = fake();
31
- // const request = { user: { id } } as Request;
32
- // await expect(userResolver(request, undefined as unknown as Response, next))
33
- // .to.eventually.be.rejected;
34
- // });
35
- });
1
+ import { factory } from 'backend-test-tools';
2
+ import { expect } from 'chai';
3
+ import { Request, Response } from 'express';
4
+ import { stub, fake } from 'sinon';
5
+ import { userResolver } from './userResolver';
6
+
7
+ describe('Middleware - User Resolver', function () {
8
+ it('should expand the user object with its data using its userId', async function () {
9
+ const me = factory.build('user');
10
+ const next = fake();
11
+ const request: Partial<Request> = { user: { id: me.id } };
12
+
13
+ // Call the resolver with the mocked request
14
+ await userResolver(request as Request, undefined as unknown as Response, next);
15
+
16
+ expect(next).to.have.been.called;
17
+ // expect(request.user).to.deep.equal(me);
18
+ });
19
+
20
+ it('should throw an error if there is no userId', async function () {
21
+ const me = factory.build('user');
22
+ const next = fake();
23
+ const request = {} as Request;
24
+ await expect(userResolver(request, undefined as unknown as Response, next))
25
+ .to.eventually.be.rejected;
26
+ });
27
+
28
+ // it('should throw an error if there is no such user', async function () {
29
+ // const { id } = factory.build('user');
30
+ // const next = fake();
31
+ // const request = { user: { id } } as Request;
32
+ // await expect(userResolver(request, undefined as unknown as Response, next))
33
+ // .to.eventually.be.rejected;
34
+ // });
35
+ });
@@ -1,35 +1,35 @@
1
- import { Request, Response, NextFunction } from 'express';
2
- import { EngineError } from 'entities/EngineError';
3
- import { reportDebug } from 'utils';
4
-
5
- const namespace = 'engine:middleware:userResolver';
6
-
7
- /** Fetch the user previously identified by a JWT and adds his data to the request.user object */
8
- export async function userResolver(
9
- request: Request,
10
- response: Response,
11
- next: NextFunction
12
- ): Promise<void> {
13
- const id = request.user?.id;
14
- if (!id)
15
- throw new EngineError({
16
- message: 'Could not resolve user as the request is missing his ID'
17
- });
18
- const user = { user: 'ram', id };
19
- if (!user)
20
- throw new EngineError({
21
- message: 'Could not resolve user as it could not be fetched',
22
- data: { id }
23
- });
24
- reportDebug({
25
- namespace,
26
- message: 'Resolved user based on his token',
27
- data: { user, request: request.user }
28
- });
29
- request.user = {
30
- ...request?.user,
31
- ...user
32
- };
33
-
34
- next();
35
- }
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import { EngineError } from 'entities/EngineError';
3
+ import { reportDebug } from 'utils';
4
+
5
+ const namespace = 'engine:middleware:userResolver';
6
+
7
+ /** Fetch the user previously identified by a JWT and adds his data to the request.user object */
8
+ export async function userResolver(
9
+ request: Request,
10
+ response: Response,
11
+ next: NextFunction
12
+ ): Promise<void> {
13
+ const id = request.user?.id;
14
+ if (!id)
15
+ throw new EngineError({
16
+ message: 'Could not resolve user as the request is missing his ID'
17
+ });
18
+ const user = { user: 'ram', id };
19
+ if (!user)
20
+ throw new EngineError({
21
+ message: 'Could not resolve user as it could not be fetched',
22
+ data: { id }
23
+ });
24
+ reportDebug({
25
+ namespace,
26
+ message: 'Resolved user based on his token',
27
+ data: { user, request: request.user }
28
+ });
29
+ request.user = {
30
+ ...request?.user,
31
+ ...user
32
+ };
33
+
34
+ next();
35
+ }
@@ -1 +1 @@
1
- export * from './validate';
1
+ export * from './validate';
@@ -1,43 +1,43 @@
1
- import { expect } from 'chai';
2
- import express, { Response, Request, NextFunction } from 'express';
3
- import request from 'supertest';
4
- import { validate } from './validate';
5
- import { ValidationError } from 'entities/ValidationError';
6
-
7
- describe('Middleware - validate', () => {
8
- it('should validate according to the schema', async () => {
9
- const app = express();
10
- const middleware = validate({
11
- size: {
12
- in: 'query',
13
- isInt: true
14
- }
15
- });
16
-
17
- app.get('/example', ...middleware, (req: any, res: any) =>
18
- res.sendStatus(200)
19
- );
20
-
21
- app.use(
22
- (
23
- error: ValidationError,
24
- req: Request,
25
- res: Response,
26
- next: NextFunction
27
- ) => {
28
- expect(error.errorCode).to.equal('invalid-request');
29
- expect((error.data as Record<string, string>).size).to.deep.equal(
30
- 'Invalid value'
31
- );
32
- res.sendStatus(error.statusCode);
33
- }
34
- );
35
-
36
- await request(app).get('/example').query({ size: 4000 }).expect(200);
37
-
38
- // await request(app)
39
- // .get('/example')
40
- // .query({ size: 'not number' })
41
- // .expect(400);
42
- });
43
- });
1
+ import { expect } from 'chai';
2
+ import express, { Response, Request, NextFunction } from 'express';
3
+ import request from 'supertest';
4
+ import { validate } from './validate';
5
+ import { ValidationError } from 'entities/ValidationError';
6
+
7
+ describe('Middleware - validate', () => {
8
+ it('should validate according to the schema', async () => {
9
+ const app = express();
10
+ const middleware = validate({
11
+ size: {
12
+ in: 'query',
13
+ isInt: true
14
+ }
15
+ });
16
+
17
+ app.get('/example', ...middleware, (req: any, res: any) =>
18
+ res.sendStatus(200)
19
+ );
20
+
21
+ app.use(
22
+ (
23
+ error: ValidationError,
24
+ req: Request,
25
+ res: Response,
26
+ next: NextFunction
27
+ ) => {
28
+ expect(error.errorCode).to.equal('invalid-request');
29
+ expect((error.data as Record<string, string>).size).to.deep.equal(
30
+ 'Invalid value'
31
+ );
32
+ res.sendStatus(error.statusCode);
33
+ }
34
+ );
35
+
36
+ await request(app).get('/example').query({ size: 4000 }).expect(200);
37
+
38
+ // await request(app)
39
+ // .get('/example')
40
+ // .query({ size: 'not number' })
41
+ // .expect(400);
42
+ });
43
+ });
@@ -1,25 +1,25 @@
1
- import { Request, Response, NextFunction } from 'express';
2
- import {
3
- checkSchema,
4
- validationResult,
5
- Schema,
6
- ValidationChain
7
- } from 'express-validator';
8
- import { ValidationError } from 'entities/ValidationError';
9
-
10
- /** Validate the express-validator results */
11
- export const validate = (
12
- config: Schema
13
- ): Array<
14
- ValidationChain | ((req: Request, res: Response, next: NextFunction) => void)
15
- > => [
16
- ...checkSchema(config),
17
- (req: Request, res: Response, next: NextFunction): void => {
18
- const result = validationResult(req);
19
- if (result.isEmpty()) {
20
- next();
21
- return;
22
- }
23
- next(new ValidationError(result));
24
- }
25
- ];
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import {
3
+ checkSchema,
4
+ validationResult,
5
+ Schema,
6
+ ValidationChain
7
+ } from 'express-validator';
8
+ import { ValidationError } from 'entities/ValidationError';
9
+
10
+ /** Validate the express-validator results */
11
+ export const validate = (
12
+ config: Schema
13
+ ): Array<
14
+ ValidationChain | ((req: Request, res: Response, next: NextFunction) => void)
15
+ > => [
16
+ ...checkSchema(config),
17
+ (req: Request, res: Response, next: NextFunction): void => {
18
+ const result = validationResult(req);
19
+ if (result.isEmpty()) {
20
+ next();
21
+ return;
22
+ }
23
+ next(new ValidationError(result));
24
+ }
25
+ ];
@@ -1 +1 @@
1
- export * from './version';
1
+ export * from './version';
@@ -1,23 +1,23 @@
1
- import express from 'express';
2
- import { describe } from 'mocha';
3
- import request from 'supertest';
4
- import { version as engineVersion } from '../../../package.json';
5
- import { version } from './version';
6
-
7
- describe('Middleware - version', () => {
8
- let serviceVersion: string;
9
-
10
- beforeEach(() => {
11
- serviceVersion = '1.0.1';
12
- process.env.BUILD_ID = serviceVersion;
13
- });
14
-
15
- it('should fetch the current version of the service', async () => {
16
- const app = express();
17
- app.use(version());
18
-
19
- await request(app)
20
- .get('/version')
21
- .expect(200, { version: serviceVersion, engineVersion });
22
- });
23
- });
1
+ import express from 'express';
2
+ import { describe } from 'mocha';
3
+ import request from 'supertest';
4
+ import { version as engineVersion } from '../../../package.json';
5
+ import { version } from './version';
6
+
7
+ describe('Middleware - version', () => {
8
+ let serviceVersion: string;
9
+
10
+ beforeEach(() => {
11
+ serviceVersion = '1.0.1';
12
+ process.env.BUILD_ID = serviceVersion;
13
+ });
14
+
15
+ it('should fetch the current version of the service', async () => {
16
+ const app = express();
17
+ app.use(version());
18
+
19
+ await request(app)
20
+ .get('/version')
21
+ .expect(200, { version: serviceVersion, engineVersion });
22
+ });
23
+ });
@@ -1,12 +1,12 @@
1
- import { Router, Request, Response } from 'express';
2
- import { version as engineVersion } from '../../../package.json';
3
-
4
- /**
5
- * Path returning the version of the service
6
- * @return {Router}
7
- */
8
- export function version(): Router {
9
- return Router().use('/version', (req: Request, res: Response) => {
10
- res.json({ version: process.env.BUILD_ID, engineVersion });
11
- });
12
- }
1
+ import { Router, Request, Response } from 'express';
2
+ import { version as engineVersion } from '../../../package.json';
3
+
4
+ /**
5
+ * Path returning the version of the service
6
+ * @return {Router}
7
+ */
8
+ export function version(): Router {
9
+ return Router().use('/version', (req: Request, res: Response) => {
10
+ res.json({ version: process.env.BUILD_ID, engineVersion });
11
+ });
12
+ }
@@ -1,49 +1,49 @@
1
- import { cleanEnv, ReporterOptions } from 'envalid';
2
- import { EngineError } from 'entities/EngineError';
3
- import { reportError } from 'utils/report';
4
-
5
- /**
6
- * Create an Envalid reporter
7
- * @param shouldExit - should the reporter exit the process on fail
8
- * @return Envalid reporter function
9
- */
10
- function createReporter(shouldExit: boolean) {
11
- return (reporter: ReporterOptions<unknown>): void => {
12
- const { errors } = reporter;
13
- const failedChecks = Object.keys(errors);
14
- const message = failedChecks.join(', ');
15
- if (failedChecks.length == 0) return;
16
- if (shouldExit) {
17
- reportError(
18
- new EngineError({
19
- message: `Check Environment Failed: ${message}`,
20
- data: failedChecks
21
- })
22
- );
23
- process.exit(1);
24
- }
25
- throw new EngineError({
26
- message: `Check Environment Failed: ${message}`,
27
- data: failedChecks
28
- });
29
- };
30
- }
31
-
32
- /**
33
- * Ensure the process.env is valid using Envalid.
34
- * if the validation fails it will log a helpful EngineError.emergency()
35
- * and exit the process with status-code 1.
36
- * @param validators - Envalid validators
37
- */
38
- export function checkEnvironment(validators = {}): void {
39
- cleanEnv(process.env, validators, { reporter: createReporter(true) });
40
- }
41
-
42
- /**
43
- * Ensure the process.env is valid using Envalid.
44
- * if the validation fails it will throw a EngineError.emergency()
45
- * @param validators - Envalid validators
46
- */
47
- export function assertEnvironment(validators = {}): void {
48
- cleanEnv({ ...process.env }, validators, { reporter: createReporter(false) });
49
- }
1
+ import { cleanEnv, ReporterOptions } from 'envalid';
2
+ import { EngineError } from 'entities/EngineError';
3
+ import { reportError } from 'utils/report';
4
+
5
+ /**
6
+ * Create an Envalid reporter
7
+ * @param shouldExit - should the reporter exit the process on fail
8
+ * @return Envalid reporter function
9
+ */
10
+ function createReporter(shouldExit: boolean) {
11
+ return (reporter: ReporterOptions<unknown>): void => {
12
+ const { errors } = reporter;
13
+ const failedChecks = Object.keys(errors);
14
+ const message = failedChecks.join(', ');
15
+ if (failedChecks.length == 0) return;
16
+ if (shouldExit) {
17
+ reportError(
18
+ new EngineError({
19
+ message: `Check Environment Failed: ${message}`,
20
+ data: failedChecks
21
+ })
22
+ );
23
+ process.exit(1);
24
+ }
25
+ throw new EngineError({
26
+ message: `Check Environment Failed: ${message}`,
27
+ data: failedChecks
28
+ });
29
+ };
30
+ }
31
+
32
+ /**
33
+ * Ensure the process.env is valid using Envalid.
34
+ * if the validation fails it will log a helpful EngineError.emergency()
35
+ * and exit the process with status-code 1.
36
+ * @param validators - Envalid validators
37
+ */
38
+ export function checkEnvironment(validators = {}): void {
39
+ cleanEnv(process.env, validators, { reporter: createReporter(true) });
40
+ }
41
+
42
+ /**
43
+ * Ensure the process.env is valid using Envalid.
44
+ * if the validation fails it will throw a EngineError.emergency()
45
+ * @param validators - Envalid validators
46
+ */
47
+ export function assertEnvironment(validators = {}): void {
48
+ cleanEnv({ ...process.env }, validators, { reporter: createReporter(false) });
49
+ }
@@ -1,24 +1,24 @@
1
- import { Server } from 'http';
2
- import { Server as SecureServer } from 'https';
3
- import { expect } from 'chai';
4
- import { createHttpServer } from './createHttpServer';
5
- import { validateHttpEnvironment } from './createHttpServer.validate';
6
-
7
- describe('App - httpServer', () => {
8
- it('should create an httpServer', () => {
9
- delete process.env.TLS_SERVER_KEY;
10
- delete process.env.TLS_SERVER_CERT;
11
- const httpServer = createHttpServer();
12
- expect(httpServer instanceof Server).to.be.ok;
13
- });
14
-
15
- it('should create an httpsServer', () => {
16
- const httpServer = createHttpServer();
17
- expect(httpServer instanceof SecureServer).to.be.ok;
18
- });
19
-
20
- it('should accept TLS environment variables', () => {
21
- process.env.TLS_SERVER_KEY_PASSPHRASE = 'password';
22
- expect(validateHttpEnvironment).to.not.throw;
23
- });
24
- });
1
+ import { Server } from 'http';
2
+ import { Server as SecureServer } from 'https';
3
+ import { expect } from 'chai';
4
+ import { createHttpServer } from './createHttpServer';
5
+ import { validateHttpEnvironment } from './createHttpServer.validate';
6
+
7
+ describe('App - httpServer', () => {
8
+ it('should create an httpServer', () => {
9
+ delete process.env.TLS_SERVER_KEY;
10
+ delete process.env.TLS_SERVER_CERT;
11
+ const httpServer = createHttpServer();
12
+ expect(httpServer instanceof Server).to.be.ok;
13
+ });
14
+
15
+ it('should create an httpsServer', () => {
16
+ const httpServer = createHttpServer();
17
+ expect(httpServer instanceof SecureServer).to.be.ok;
18
+ });
19
+
20
+ it('should accept TLS environment variables', () => {
21
+ process.env.TLS_SERVER_KEY_PASSPHRASE = 'password';
22
+ expect(validateHttpEnvironment).to.not.throw;
23
+ });
24
+ });
@@ -1,34 +1,34 @@
1
- import fs from 'fs';
2
- import { createServer, RequestListener, Server } from 'http';
3
- import {
4
- createServer as createSecureServer,
5
- Server as SecureServer
6
- } from 'https';
7
- import { Application } from 'express';
8
- import { validateHttpEnvironment } from './createHttpServer.validate';
9
-
10
- /** Create and configure an http/https server */
11
- export function createHttpServer(
12
- handler?: Application | RequestListener
13
- ): Server | SecureServer {
14
- // Validate the environment variables
15
- validateHttpEnvironment();
16
- // Create a https server if env var are specified
17
- if (process.env.TLS_SERVER_KEY && process.env.TLS_SERVER_CERT) {
18
- return createSecureServer(
19
- {
20
- key: fs.readFileSync(process.env.TLS_SERVER_KEY),
21
- passphrase: process.env.TLS_SERVER_KEY_PASSPHRASE,
22
- cert: fs.readFileSync(process.env.TLS_SERVER_CERT),
23
- ca: process.env.TLS_CA
24
- ? fs.readFileSync(process.env.TLS_CA)
25
- : undefined,
26
- requestCert: true,
27
- rejectUnauthorized: false
28
- },
29
- handler
30
- );
31
- } else {
32
- return createServer(handler);
33
- }
34
- }
1
+ import fs from 'fs';
2
+ import { createServer, RequestListener, Server } from 'http';
3
+ import {
4
+ createServer as createSecureServer,
5
+ Server as SecureServer
6
+ } from 'https';
7
+ import { Application } from 'express';
8
+ import { validateHttpEnvironment } from './createHttpServer.validate';
9
+
10
+ /** Create and configure an http/https server */
11
+ export function createHttpServer(
12
+ handler?: Application | RequestListener
13
+ ): Server | SecureServer {
14
+ // Validate the environment variables
15
+ validateHttpEnvironment();
16
+ // Create a https server if env var are specified
17
+ if (process.env.TLS_SERVER_KEY && process.env.TLS_SERVER_CERT) {
18
+ return createSecureServer(
19
+ {
20
+ key: fs.readFileSync(process.env.TLS_SERVER_KEY),
21
+ passphrase: process.env.TLS_SERVER_KEY_PASSPHRASE,
22
+ cert: fs.readFileSync(process.env.TLS_SERVER_CERT),
23
+ ca: process.env.TLS_CA
24
+ ? fs.readFileSync(process.env.TLS_CA)
25
+ : undefined,
26
+ requestCert: true,
27
+ rejectUnauthorized: false
28
+ },
29
+ handler
30
+ );
31
+ } else {
32
+ return createServer(handler);
33
+ }
34
+ }
@@ -1,17 +1,17 @@
1
- import { assertEnvironment, envAssert } from 'utils';
2
-
3
- /**
4
- * Environment variable validator for the creation of a HTTP(S) server
5
- */
6
- export function validateHttpEnvironment(): void {
7
- // We only check if there is at least the host specified
8
- if (process.env.TLS_SERVER_CERT && process.env.TLS_SERVER_CERT) {
9
- assertEnvironment({ TLS_SERVER_KEY: envAssert.isPath() });
10
- assertEnvironment({ TLS_SERVER_CERT: envAssert.isPath() });
11
- // Optional variables
12
- if (process.env.TLS_SERVER_KEY_PASSPHRASE) {
13
- assertEnvironment({ TLS_SERVER_KEY_PASSPHRASE: envAssert.isString() });
14
- }
15
- if (process.env.TLS_CA) assertEnvironment({ TLS_CA: envAssert.isPath() });
16
- }
17
- }
1
+ import { assertEnvironment, envAssert } from 'utils';
2
+
3
+ /**
4
+ * Environment variable validator for the creation of a HTTP(S) server
5
+ */
6
+ export function validateHttpEnvironment(): void {
7
+ // We only check if there is at least the host specified
8
+ if (process.env.TLS_SERVER_CERT && process.env.TLS_SERVER_CERT) {
9
+ assertEnvironment({ TLS_SERVER_KEY: envAssert.isPath() });
10
+ assertEnvironment({ TLS_SERVER_CERT: envAssert.isPath() });
11
+ // Optional variables
12
+ if (process.env.TLS_SERVER_KEY_PASSPHRASE) {
13
+ assertEnvironment({ TLS_SERVER_KEY_PASSPHRASE: envAssert.isString() });
14
+ }
15
+ if (process.env.TLS_CA) assertEnvironment({ TLS_CA: envAssert.isPath() });
16
+ }
17
+ }
@@ -1 +1 @@
1
- export * from './createHttpServer';
1
+ export * from './createHttpServer';
@@ -1,20 +1,20 @@
1
- /** Deep sort the objects keys alphabetically */
2
- export function createSortedObject<T>(data: T): T {
3
- if (!(data instanceof Object)) throw new Error('Non');
4
- const result: Record<string, unknown> = {};
5
- Object.keys(data)
6
- .sort()
7
- .forEach((key: string) => {
8
- const value = (data as Record<string, unknown>)[key];
9
- if (
10
- typeof value !== 'object' ||
11
- value instanceof Array ||
12
- value === null
13
- ) {
14
- result[key] = value;
15
- } else {
16
- result[key] = createSortedObject(value);
17
- }
18
- });
19
- return result as T;
20
- }
1
+ /** Deep sort the objects keys alphabetically */
2
+ export function createSortedObject<T>(data: T): T {
3
+ if (!(data instanceof Object)) throw new Error('Non');
4
+ const result: Record<string, unknown> = {};
5
+ Object.keys(data)
6
+ .sort()
7
+ .forEach((key: string) => {
8
+ const value = (data as Record<string, unknown>)[key];
9
+ if (
10
+ typeof value !== 'object' ||
11
+ value instanceof Array ||
12
+ value === null
13
+ ) {
14
+ result[key] = value;
15
+ } else {
16
+ result[key] = createSortedObject(value);
17
+ }
18
+ });
19
+ return result as T;
20
+ }