node-server-engine 1.1.2 → 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 (469) 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.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.d.ts +2 -2
  166. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +47 -15
  167. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -1
  168. package/dist/utils/envAssert/envAssert.js +6 -6
  169. package/dist/utils/envAssert/envAssert.js.map +1 -1
  170. package/dist/utils/envAssert/index.js.map +1 -1
  171. package/dist/utils/envAssert/validators/hostList.js +2 -2
  172. package/dist/utils/envAssert/validators/hostList.js.map +1 -1
  173. package/dist/utils/envAssert/validators/index.js.map +1 -1
  174. package/dist/utils/envAssert/validators/ipList.js +2 -2
  175. package/dist/utils/envAssert/validators/ipList.js.map +1 -1
  176. package/dist/utils/envAssert/validators/path.js +2 -2
  177. package/dist/utils/envAssert/validators/path.js.map +1 -1
  178. package/dist/utils/envAssert/validators/string.js +2 -2
  179. package/dist/utils/envAssert/validators/string.js.map +1 -1
  180. package/dist/utils/envAssert/validators/stringList.js +3 -3
  181. package/dist/utils/envAssert/validators/stringList.js.map +1 -1
  182. package/dist/utils/filter/filter.js +4 -4
  183. package/dist/utils/filter/filter.js.map +1 -1
  184. package/dist/utils/filter/index.js.map +1 -1
  185. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -1
  186. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -1
  187. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -1
  188. package/dist/utils/getDynamicLink/index.js.map +1 -1
  189. package/dist/utils/hmac/checkEnv/checkEnv.js +2 -2
  190. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -1
  191. package/dist/utils/hmac/checkEnv/index.js.map +1 -1
  192. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -1
  193. package/dist/utils/hmac/createHmac/index.js.map +1 -1
  194. package/dist/utils/hmac/index.js.map +1 -1
  195. package/dist/utils/hmac/index.types.js.map +1 -1
  196. package/dist/utils/hmac/signPayload/index.js.map +1 -1
  197. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -1
  198. package/dist/utils/hmac/verifySignature/index.js.map +1 -1
  199. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -1
  200. package/dist/utils/index.js.map +1 -1
  201. package/dist/utils/jwt/index.js.map +1 -1
  202. package/dist/utils/jwt/jwt.js.map +1 -1
  203. package/dist/utils/jwt/jwt.types.js.map +1 -1
  204. package/dist/utils/report/index.js.map +1 -1
  205. package/dist/utils/report/output.js.map +1 -1
  206. package/dist/utils/report/output.types.js.map +1 -1
  207. package/dist/utils/report/report.js.map +1 -1
  208. package/dist/utils/report/report.types.js.map +1 -1
  209. package/dist/utils/request/index.js.map +1 -1
  210. package/dist/utils/request/request.js.map +1 -1
  211. package/dist/utils/semverCompare/index.js.map +1 -1
  212. package/dist/utils/semverCompare/semverCompare.js +5 -5
  213. package/dist/utils/semverCompare/semverCompare.js.map +1 -1
  214. package/dist/utils/sendEmail/index.js.map +1 -1
  215. package/dist/utils/sendEmail/sendEmail.js +8 -8
  216. package/dist/utils/sendEmail/sendEmail.js.map +1 -1
  217. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -1
  218. package/dist/utils/sendPush/index.js.map +1 -1
  219. package/dist/utils/sendPush/sendPush.js +5 -5
  220. package/dist/utils/sendPush/sendPush.js.map +1 -1
  221. package/dist/utils/sendPush/sendPush.types.js.map +1 -1
  222. package/dist/utils/tlsConfig/index.js.map +1 -1
  223. package/dist/utils/tlsConfig/tlsConfig.js +2 -2
  224. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -1
  225. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -1
  226. package/dist/utils/tlsConfig/tlsConfig.validate.js +2 -2
  227. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -1
  228. package/dist/utils/tlsRequest/index.js.map +1 -1
  229. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -1
  230. package/dist/utils/trimPathSlash/index.js.map +1 -1
  231. package/dist/utils/trimPathSlash/trimPathSlash.js +4 -4
  232. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -1
  233. package/eslint.config.mjs +11 -11
  234. package/package.json +164 -161
  235. package/src/const/DebeziumEvent.ts +6 -6
  236. package/src/const/LogSeverity.ts +7 -7
  237. package/src/const/index.ts +5 -5
  238. package/src/const/metrics.ts +6 -6
  239. package/src/const/mime.ts +37 -37
  240. package/src/const/tokenIssuer.ts +9 -9
  241. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -29
  242. package/src/db/models/SequelizeMeta.ts +16 -16
  243. package/src/db/models/index.ts +2 -2
  244. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -103
  245. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -7
  246. package/src/entities/ElasticSearch/index.ts +2 -2
  247. package/src/entities/Endpoint/Endpoint.test.ts +337 -337
  248. package/src/entities/Endpoint/Endpoint.ts +202 -202
  249. package/src/entities/Endpoint/Endpoint.types.ts +205 -205
  250. package/src/entities/Endpoint/index.ts +2 -2
  251. package/src/entities/EngineError/EngineError.ts +28 -28
  252. package/src/entities/EngineError/EngineError.types.ts +15 -15
  253. package/src/entities/EngineError/index.ts +2 -2
  254. package/src/entities/KeySet/KeySet.test.ts +126 -126
  255. package/src/entities/KeySet/KeySet.ts +172 -172
  256. package/src/entities/KeySet/KeySet.types.ts +28 -28
  257. package/src/entities/KeySet/index.ts +2 -2
  258. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -48
  259. package/src/entities/LifecycleController/LifecycleController.ts +24 -24
  260. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -5
  261. package/src/entities/LifecycleController/index.ts +2 -2
  262. package/src/entities/Localizator/Localizator.ts +139 -139
  263. package/src/entities/Localizator/Localizator.types.ts +52 -52
  264. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -165
  265. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -58
  266. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -1
  267. package/src/entities/Localizator/index.ts +2 -2
  268. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -130
  269. package/src/entities/MessageHandler/MessageHandler.ts +72 -72
  270. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -15
  271. package/src/entities/MessageHandler/index.ts +2 -2
  272. package/src/entities/PubSub/PubSub.test.ts +297 -297
  273. package/src/entities/PubSub/PubSub.ts +202 -202
  274. package/src/entities/PubSub/PubSub.types.ts +76 -76
  275. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -102
  276. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -65
  277. package/src/entities/PubSub/handleMessage/index.ts +1 -1
  278. package/src/entities/PubSub/index.ts +2 -2
  279. package/src/entities/PushNotification/PushNotification.test.ts +35 -35
  280. package/src/entities/PushNotification/PushNotification.ts +44 -44
  281. package/src/entities/PushNotification/PushNotification.types.ts +25 -25
  282. package/src/entities/PushNotification/index.ts +2 -2
  283. package/src/entities/Redis/Redis.ts +71 -71
  284. package/src/entities/Redis/Redis.types.ts +19 -19
  285. package/src/entities/Redis/Redis.validate.ts +17 -17
  286. package/src/entities/Redis/index.ts +2 -2
  287. package/src/entities/Sequelize/Sequelize.config.ts +59 -29
  288. package/src/entities/Sequelize/Sequelize.test.ts +21 -21
  289. package/src/entities/Sequelize/Sequelize.ts +75 -75
  290. package/src/entities/Sequelize/Sequelize.types.ts +10 -10
  291. package/src/entities/Sequelize/Sequelize.validate.ts +15 -15
  292. package/src/entities/Sequelize/index.ts +2 -2
  293. package/src/entities/Server/Server.const.ts +56 -56
  294. package/src/entities/Server/Server.test.ts +272 -272
  295. package/src/entities/Server/Server.ts +445 -445
  296. package/src/entities/Server/Server.types.ts +88 -88
  297. package/src/entities/Server/index.ts +2 -2
  298. package/src/entities/SocketClient/SocketClient.test.ts +392 -392
  299. package/src/entities/SocketClient/SocketClient.ts +401 -401
  300. package/src/entities/SocketClient/SocketClient.types.ts +62 -62
  301. package/src/entities/SocketClient/index.ts +2 -2
  302. package/src/entities/SocketClient/parseMessage/index.ts +1 -1
  303. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -20
  304. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -26
  305. package/src/entities/Storage/Storage.test.ts +58 -58
  306. package/src/entities/Storage/Storage.ts +219 -219
  307. package/src/entities/Storage/Storage.types.ts +57 -57
  308. package/src/entities/Storage/index.ts +2 -2
  309. package/src/entities/ValidationError/ValidationError.ts +34 -34
  310. package/src/entities/ValidationError/index.ts +1 -1
  311. package/src/entities/WebError/WebError.test.ts +18 -18
  312. package/src/entities/WebError/WebError.ts +23 -23
  313. package/src/entities/WebError/WebError.types.ts +9 -9
  314. package/src/entities/WebError/index.ts +2 -2
  315. package/src/entities/index.ts +16 -16
  316. package/src/index.ts +4 -4
  317. package/src/metrics/debug.ts +10 -10
  318. package/src/metrics/index.ts +2 -2
  319. package/src/metrics/request.ts +17 -17
  320. package/src/middleware/authAdmin/authAdmin.test.ts +199 -199
  321. package/src/middleware/authAdmin/authAdmin.ts +114 -114
  322. package/src/middleware/authAdmin/authAdmin.types.ts +19 -19
  323. package/src/middleware/authAdmin/index.ts +2 -2
  324. package/src/middleware/authHmac/authHmac.test.ts +86 -86
  325. package/src/middleware/authHmac/authHmac.ts +56 -56
  326. package/src/middleware/authHmac/authHmac.types.ts +7 -7
  327. package/src/middleware/authHmac/index.ts +2 -2
  328. package/src/middleware/authJwt/authJwt.test.ts +54 -54
  329. package/src/middleware/authJwt/authJwt.ts +55 -55
  330. package/src/middleware/authJwt/authJwt.types.ts +14 -14
  331. package/src/middleware/authJwt/index.ts +2 -2
  332. package/src/middleware/authStatic/authStatic.test.ts +36 -36
  333. package/src/middleware/authStatic/authStatic.ts +45 -45
  334. package/src/middleware/authStatic/index.ts +1 -1
  335. package/src/middleware/authTls/authTls.test.ts +138 -138
  336. package/src/middleware/authTls/authTls.ts +106 -106
  337. package/src/middleware/authTls/authTls.types.ts +13 -13
  338. package/src/middleware/authTls/index.ts +2 -2
  339. package/src/middleware/checkPermission/checkPermission.ts +32 -32
  340. package/src/middleware/error/error.test.ts +60 -60
  341. package/src/middleware/error/error.ts +25 -25
  342. package/src/middleware/error/index.ts +1 -1
  343. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -25
  344. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -12
  345. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -2
  346. package/src/middleware/fileUploader/fileUploader.test.ts +310 -310
  347. package/src/middleware/fileUploader/fileUploader.ts +303 -303
  348. package/src/middleware/fileUploader/fileUploader.types.ts +52 -52
  349. package/src/middleware/fileUploader/index.ts +2 -2
  350. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -1
  351. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -9
  352. package/src/middleware/fileUploader/validate/index.ts +1 -1
  353. package/src/middleware/fileUploader/validate/validate.ts +27 -27
  354. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -14
  355. package/src/middleware/fourOhFour/fourOhFour.ts +13 -13
  356. package/src/middleware/fourOhFour/index.ts +1 -1
  357. package/src/middleware/geminiFileUploader/geminiFileUploader.ts +117 -117
  358. package/src/middleware/geminiFileUploader/index.ts +1 -1
  359. package/src/middleware/healthCheck/healthCheck.test.ts +12 -12
  360. package/src/middleware/healthCheck/healthCheck.ts +14 -14
  361. package/src/middleware/healthCheck/index.ts +1 -1
  362. package/src/middleware/index.ts +17 -17
  363. package/src/middleware/metrics/index.ts +1 -1
  364. package/src/middleware/metrics/metrics.test.ts +46 -46
  365. package/src/middleware/metrics/metrics.ts +24 -24
  366. package/src/middleware/requestMetrics/index.ts +1 -1
  367. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -77
  368. package/src/middleware/requestMetrics/requestMetrics.ts +20 -20
  369. package/src/middleware/swaggerDocs/index.ts +2 -2
  370. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -114
  371. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -41
  372. package/src/middleware/userResolver/index.ts +1 -1
  373. package/src/middleware/userResolver/userResolver.test.ts +35 -35
  374. package/src/middleware/userResolver/userResolver.ts +35 -35
  375. package/src/middleware/validate/index.ts +1 -1
  376. package/src/middleware/validate/validate.test.ts +43 -43
  377. package/src/middleware/validate/validate.ts +25 -25
  378. package/src/middleware/version/index.ts +1 -1
  379. package/src/middleware/version/version.test.ts +23 -23
  380. package/src/middleware/version/version.ts +12 -12
  381. package/src/utils/checkEnvironment/index.ts +49 -49
  382. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -24
  383. package/src/utils/createHttpServer/createHttpServer.ts +34 -34
  384. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -17
  385. package/src/utils/createHttpServer/index.ts +1 -1
  386. package/src/utils/createSortedObject/createSortedObject.ts +20 -20
  387. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -47
  388. package/src/utils/createSortedObject/index.ts +1 -1
  389. package/src/utils/dbMigration/dbMigration.test.ts +209 -209
  390. package/src/utils/dbMigration/dbMigration.ts +199 -199
  391. package/src/utils/dbMigration/dbMigration.types.ts +11 -11
  392. package/src/utils/dbMigration/index.ts +2 -2
  393. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -1
  394. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -59
  395. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +102 -70
  396. package/src/utils/envAssert/envAssert.ts +31 -31
  397. package/src/utils/envAssert/index.ts +1 -1
  398. package/src/utils/envAssert/validators/hostList.ts +17 -17
  399. package/src/utils/envAssert/validators/index.ts +5 -5
  400. package/src/utils/envAssert/validators/ipList.ts +13 -13
  401. package/src/utils/envAssert/validators/path.ts +13 -13
  402. package/src/utils/envAssert/validators/string.ts +9 -9
  403. package/src/utils/envAssert/validators/stringList.ts +13 -13
  404. package/src/utils/filter/filter.ts +17 -17
  405. package/src/utils/filter/index.ts +1 -1
  406. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -51
  407. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -28
  408. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -11
  409. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -6
  410. package/src/utils/getDynamicLink/index.ts +2 -2
  411. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -18
  412. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -9
  413. package/src/utils/hmac/checkEnv/index.ts +1 -1
  414. package/src/utils/hmac/createHmac/createHmac.ts +33 -33
  415. package/src/utils/hmac/createHmac/index.ts +1 -1
  416. package/src/utils/hmac/index.ts +4 -4
  417. package/src/utils/hmac/index.types.ts +13 -13
  418. package/src/utils/hmac/signPayload/index.ts +1 -1
  419. package/src/utils/hmac/signPayload/signPayload.ts +16 -16
  420. package/src/utils/hmac/verifySignature/index.ts +1 -1
  421. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -24
  422. package/src/utils/index.ts +26 -26
  423. package/src/utils/jwt/index.ts +2 -2
  424. package/src/utils/jwt/jwt.test.ts +41 -41
  425. package/src/utils/jwt/jwt.ts +204 -204
  426. package/src/utils/jwt/jwt.types.ts +21 -21
  427. package/src/utils/report/index.ts +3 -3
  428. package/src/utils/report/output.ts +45 -45
  429. package/src/utils/report/output.types.ts +70 -70
  430. package/src/utils/report/report.test.ts +133 -133
  431. package/src/utils/report/report.ts +134 -134
  432. package/src/utils/report/report.types.ts +13 -13
  433. package/src/utils/request/index.ts +1 -1
  434. package/src/utils/request/request.test.ts +26 -26
  435. package/src/utils/request/request.ts +48 -48
  436. package/src/utils/semverCompare/index.ts +1 -1
  437. package/src/utils/semverCompare/semverCompare.test.ts +49 -49
  438. package/src/utils/semverCompare/semverCompare.ts +60 -60
  439. package/src/utils/sendEmail/index.ts +1 -1
  440. package/src/utils/sendEmail/sendEmail.ts +27 -27
  441. package/src/utils/sendEmail/sendEmail.types.ts +7 -7
  442. package/src/utils/sendPush/index.ts +2 -2
  443. package/src/utils/sendPush/sendPush.ts +20 -20
  444. package/src/utils/sendPush/sendPush.types.ts +25 -25
  445. package/src/utils/tlsConfig/index.ts +2 -2
  446. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -32
  447. package/src/utils/tlsConfig/tlsConfig.ts +47 -47
  448. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -11
  449. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -25
  450. package/src/utils/tlsRequest/index.ts +1 -1
  451. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -63
  452. package/src/utils/tlsRequest/tlsRequest.ts +12 -12
  453. package/src/utils/trimPathSlash/index.ts +1 -1
  454. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -26
  455. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -8
  456. package/test/env.ts +56 -56
  457. package/test/factory/index.ts +8 -8
  458. package/test/factory/sequelizeMeta.ts +12 -12
  459. package/test/hooks.ts +37 -37
  460. package/test/index.ts +3 -3
  461. package/test/stub/index.ts +3 -3
  462. package/test/stub/stubLocales.ts +68 -68
  463. package/test/stub/stubPubSub.ts +7 -7
  464. package/test/stub/stubStorage.ts +77 -77
  465. package/test/stub/stubStorage.types.ts +11 -11
  466. package/test/utils/app.ts +31 -31
  467. package/test/utils/index.ts +1 -1
  468. package/tsconfig.build.json +5 -5
  469. 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
+ }