node-server-engine 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/.env.example +193 -193
  2. package/.mocharc.js +13 -13
  3. package/.nycrc +18 -18
  4. package/.prettierrc +7 -7
  5. package/Dockerfile +30 -30
  6. package/README.md +991 -991
  7. package/babel.config.json +34 -35
  8. package/dist/const/DebeziumEvent.js.map +1 -1
  9. package/dist/const/LogSeverity.js.map +1 -1
  10. package/dist/const/index.js.map +1 -1
  11. package/dist/const/metrics.js.map +1 -1
  12. package/dist/const/mime.js.map +1 -1
  13. package/dist/const/tokenIssuer.js.map +1 -1
  14. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js.map +1 -1
  15. package/dist/db/models/SequelizeMeta.js +1 -0
  16. package/dist/db/models/SequelizeMeta.js.map +1 -1
  17. package/dist/db/models/index.js.map +1 -1
  18. package/dist/entities/ElasticSearch/ElasticSearch.js +7 -7
  19. package/dist/entities/ElasticSearch/ElasticSearch.js.map +1 -1
  20. package/dist/entities/ElasticSearch/ElasticSearch.types.js.map +1 -1
  21. package/dist/entities/ElasticSearch/index.js.map +1 -1
  22. package/dist/entities/Endpoint/Endpoint.js +18 -17
  23. package/dist/entities/Endpoint/Endpoint.js.map +1 -1
  24. package/dist/entities/Endpoint/Endpoint.types.js.map +1 -1
  25. package/dist/entities/Endpoint/index.js.map +1 -1
  26. package/dist/entities/EngineError/EngineError.js +7 -6
  27. package/dist/entities/EngineError/EngineError.js.map +1 -1
  28. package/dist/entities/EngineError/EngineError.types.js.map +1 -1
  29. package/dist/entities/EngineError/index.js.map +1 -1
  30. package/dist/entities/KeySet/KeySet.js +10 -9
  31. package/dist/entities/KeySet/KeySet.js.map +1 -1
  32. package/dist/entities/KeySet/KeySet.types.js.map +1 -1
  33. package/dist/entities/KeySet/index.js.map +1 -1
  34. package/dist/entities/LifecycleController/LifecycleController.js.map +1 -1
  35. package/dist/entities/LifecycleController/LifecycleController.types.js.map +1 -1
  36. package/dist/entities/LifecycleController/index.js.map +1 -1
  37. package/dist/entities/Localizator/Localizator.js +7 -7
  38. package/dist/entities/Localizator/Localizator.js.map +1 -1
  39. package/dist/entities/Localizator/Localizator.types.js.map +1 -1
  40. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js.map +1 -1
  41. package/dist/entities/Localizator/guessNamingConvention/index.js.map +1 -1
  42. package/dist/entities/Localizator/index.js.map +1 -1
  43. package/dist/entities/MessageHandler/MessageHandler.js +7 -6
  44. package/dist/entities/MessageHandler/MessageHandler.js.map +1 -1
  45. package/dist/entities/MessageHandler/MessageHandler.types.js.map +1 -1
  46. package/dist/entities/MessageHandler/index.js.map +1 -1
  47. package/dist/entities/PubSub/PubSub.js +25 -25
  48. package/dist/entities/PubSub/PubSub.js.map +1 -1
  49. package/dist/entities/PubSub/PubSub.types.js.map +1 -1
  50. package/dist/entities/PubSub/handleMessage/handleMessage.js +6 -6
  51. package/dist/entities/PubSub/handleMessage/handleMessage.js.map +1 -1
  52. package/dist/entities/PubSub/handleMessage/index.js.map +1 -1
  53. package/dist/entities/PubSub/index.js.map +1 -1
  54. package/dist/entities/PushNotification/PushNotification.js +4 -4
  55. package/dist/entities/PushNotification/PushNotification.js.map +1 -1
  56. package/dist/entities/PushNotification/PushNotification.types.js.map +1 -1
  57. package/dist/entities/PushNotification/index.js.map +1 -1
  58. package/dist/entities/Redis/Redis.js +8 -8
  59. package/dist/entities/Redis/Redis.js.map +1 -1
  60. package/dist/entities/Redis/Redis.types.js.map +1 -1
  61. package/dist/entities/Redis/Redis.validate.js +2 -2
  62. package/dist/entities/Redis/Redis.validate.js.map +1 -1
  63. package/dist/entities/Redis/index.js.map +1 -1
  64. package/dist/entities/Sequelize/Sequelize.config.js.map +1 -1
  65. package/dist/entities/Sequelize/Sequelize.js +2 -2
  66. package/dist/entities/Sequelize/Sequelize.js.map +1 -1
  67. package/dist/entities/Sequelize/Sequelize.types.js.map +1 -1
  68. package/dist/entities/Sequelize/Sequelize.validate.js +2 -2
  69. package/dist/entities/Sequelize/Sequelize.validate.js.map +1 -1
  70. package/dist/entities/Sequelize/index.js.map +1 -1
  71. package/dist/entities/Server/Server.const.js.map +1 -1
  72. package/dist/entities/Server/Server.js +18 -17
  73. package/dist/entities/Server/Server.js.map +1 -1
  74. package/dist/entities/Server/Server.types.js.map +1 -1
  75. package/dist/entities/Server/index.js.map +1 -1
  76. package/dist/entities/SocketClient/SocketClient.js +33 -32
  77. package/dist/entities/SocketClient/SocketClient.js.map +1 -1
  78. package/dist/entities/SocketClient/SocketClient.types.js.map +1 -1
  79. package/dist/entities/SocketClient/index.js.map +1 -1
  80. package/dist/entities/SocketClient/parseMessage/index.js.map +1 -1
  81. package/dist/entities/SocketClient/parseMessage/parseMessage.js +2 -2
  82. package/dist/entities/SocketClient/parseMessage/parseMessage.js.map +1 -1
  83. package/dist/entities/Storage/Storage.js +20 -20
  84. package/dist/entities/Storage/Storage.js.map +1 -1
  85. package/dist/entities/Storage/Storage.types.js.map +1 -1
  86. package/dist/entities/Storage/index.js.map +1 -1
  87. package/dist/entities/ValidationError/ValidationError.js.map +1 -1
  88. package/dist/entities/ValidationError/index.js.map +1 -1
  89. package/dist/entities/WebError/WebError.js +7 -6
  90. package/dist/entities/WebError/WebError.js.map +1 -1
  91. package/dist/entities/WebError/WebError.types.js.map +1 -1
  92. package/dist/entities/WebError/index.js.map +1 -1
  93. package/dist/entities/index.js.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/metrics/debug.js.map +1 -1
  96. package/dist/metrics/index.js.map +1 -1
  97. package/dist/metrics/request.js.map +1 -1
  98. package/dist/middleware/authAdmin/authAdmin.js.map +1 -1
  99. package/dist/middleware/authAdmin/authAdmin.types.js.map +1 -1
  100. package/dist/middleware/authAdmin/index.js.map +1 -1
  101. package/dist/middleware/authHmac/authHmac.js.map +1 -1
  102. package/dist/middleware/authHmac/authHmac.types.js.map +1 -1
  103. package/dist/middleware/authHmac/index.js.map +1 -1
  104. package/dist/middleware/authJwt/authJwt.js.map +1 -1
  105. package/dist/middleware/authJwt/authJwt.types.js.map +1 -1
  106. package/dist/middleware/authJwt/index.js.map +1 -1
  107. package/dist/middleware/authStatic/authStatic.js +3 -3
  108. package/dist/middleware/authStatic/authStatic.js.map +1 -1
  109. package/dist/middleware/authStatic/index.js.map +1 -1
  110. package/dist/middleware/authTls/authTls.js +8 -8
  111. package/dist/middleware/authTls/authTls.js.map +1 -1
  112. package/dist/middleware/authTls/authTls.types.js.map +1 -1
  113. package/dist/middleware/authTls/index.js.map +1 -1
  114. package/dist/middleware/checkPermission/checkPermission.js.map +1 -1
  115. package/dist/middleware/error/error.js.map +1 -1
  116. package/dist/middleware/error/index.js.map +1 -1
  117. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +2 -2
  118. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -1
  119. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -1
  120. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -1
  121. package/dist/middleware/fileUploader/fileUploader.js +12 -12
  122. package/dist/middleware/fileUploader/fileUploader.js.map +1 -1
  123. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -1
  124. package/dist/middleware/fileUploader/index.js.map +1 -1
  125. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -1
  126. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -1
  127. package/dist/middleware/fileUploader/validate/index.js.map +1 -1
  128. package/dist/middleware/fileUploader/validate/validate.js.map +1 -1
  129. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -1
  130. package/dist/middleware/fourOhFour/index.js.map +1 -1
  131. package/dist/middleware/geminiFileUploader/geminiFileUploader.js.map +1 -1
  132. package/dist/middleware/geminiFileUploader/index.js.map +1 -1
  133. package/dist/middleware/healthCheck/healthCheck.js +2 -2
  134. package/dist/middleware/healthCheck/healthCheck.js.map +1 -1
  135. package/dist/middleware/healthCheck/index.js.map +1 -1
  136. package/dist/middleware/index.js.map +1 -1
  137. package/dist/middleware/metrics/index.js.map +1 -1
  138. package/dist/middleware/metrics/metrics.js.map +1 -1
  139. package/dist/middleware/requestMetrics/index.js.map +1 -1
  140. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -1
  141. package/dist/middleware/swaggerDocs/index.js.map +1 -1
  142. package/dist/middleware/swaggerDocs/swaggerDocs.js +7 -7
  143. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -1
  144. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -1
  145. package/dist/middleware/userResolver/index.js.map +1 -1
  146. package/dist/middleware/userResolver/userResolver.js.map +1 -1
  147. package/dist/middleware/validate/index.js.map +1 -1
  148. package/dist/middleware/validate/validate.js.map +1 -1
  149. package/dist/middleware/version/index.js.map +1 -1
  150. package/dist/middleware/version/version.js +3 -3
  151. package/dist/middleware/version/version.js.map +1 -1
  152. package/dist/utils/checkEnvironment/index.js +13 -13
  153. package/dist/utils/checkEnvironment/index.js.map +1 -1
  154. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -1
  155. package/dist/utils/createHttpServer/createHttpServer.validate.js +2 -2
  156. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -1
  157. package/dist/utils/createHttpServer/index.js.map +1 -1
  158. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -1
  159. package/dist/utils/createSortedObject/index.js.map +1 -1
  160. package/dist/utils/dbMigration/dbMigration.js +8 -8
  161. package/dist/utils/dbMigration/dbMigration.js.map +1 -1
  162. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -1
  163. package/dist/utils/dbMigration/index.js.map +1 -1
  164. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -1
  165. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +4 -4
  166. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -1
  167. package/dist/utils/envAssert/envAssert.js +6 -6
  168. package/dist/utils/envAssert/envAssert.js.map +1 -1
  169. package/dist/utils/envAssert/index.js.map +1 -1
  170. package/dist/utils/envAssert/validators/hostList.js +2 -2
  171. package/dist/utils/envAssert/validators/hostList.js.map +1 -1
  172. package/dist/utils/envAssert/validators/index.js.map +1 -1
  173. package/dist/utils/envAssert/validators/ipList.js +2 -2
  174. package/dist/utils/envAssert/validators/ipList.js.map +1 -1
  175. package/dist/utils/envAssert/validators/path.js +2 -2
  176. package/dist/utils/envAssert/validators/path.js.map +1 -1
  177. package/dist/utils/envAssert/validators/string.js +2 -2
  178. package/dist/utils/envAssert/validators/string.js.map +1 -1
  179. package/dist/utils/envAssert/validators/stringList.js +3 -3
  180. package/dist/utils/envAssert/validators/stringList.js.map +1 -1
  181. package/dist/utils/filter/filter.js +4 -4
  182. package/dist/utils/filter/filter.js.map +1 -1
  183. package/dist/utils/filter/index.js.map +1 -1
  184. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -1
  185. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -1
  186. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -1
  187. package/dist/utils/getDynamicLink/index.js.map +1 -1
  188. package/dist/utils/hmac/checkEnv/checkEnv.js +2 -2
  189. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -1
  190. package/dist/utils/hmac/checkEnv/index.js.map +1 -1
  191. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -1
  192. package/dist/utils/hmac/createHmac/index.js.map +1 -1
  193. package/dist/utils/hmac/index.js.map +1 -1
  194. package/dist/utils/hmac/index.types.js.map +1 -1
  195. package/dist/utils/hmac/signPayload/index.js.map +1 -1
  196. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -1
  197. package/dist/utils/hmac/verifySignature/index.js.map +1 -1
  198. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -1
  199. package/dist/utils/index.js.map +1 -1
  200. package/dist/utils/jwt/index.js.map +1 -1
  201. package/dist/utils/jwt/jwt.js.map +1 -1
  202. package/dist/utils/jwt/jwt.types.js.map +1 -1
  203. package/dist/utils/report/index.js.map +1 -1
  204. package/dist/utils/report/output.js.map +1 -1
  205. package/dist/utils/report/output.types.js.map +1 -1
  206. package/dist/utils/report/report.js.map +1 -1
  207. package/dist/utils/report/report.types.js.map +1 -1
  208. package/dist/utils/request/index.js.map +1 -1
  209. package/dist/utils/request/request.js.map +1 -1
  210. package/dist/utils/semverCompare/index.js.map +1 -1
  211. package/dist/utils/semverCompare/semverCompare.js +5 -5
  212. package/dist/utils/semverCompare/semverCompare.js.map +1 -1
  213. package/dist/utils/sendEmail/index.js.map +1 -1
  214. package/dist/utils/sendEmail/sendEmail.js +8 -8
  215. package/dist/utils/sendEmail/sendEmail.js.map +1 -1
  216. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -1
  217. package/dist/utils/sendPush/index.js.map +1 -1
  218. package/dist/utils/sendPush/sendPush.js +5 -5
  219. package/dist/utils/sendPush/sendPush.js.map +1 -1
  220. package/dist/utils/sendPush/sendPush.types.js.map +1 -1
  221. package/dist/utils/tlsConfig/index.js.map +1 -1
  222. package/dist/utils/tlsConfig/tlsConfig.js +2 -2
  223. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -1
  224. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -1
  225. package/dist/utils/tlsConfig/tlsConfig.validate.js +2 -2
  226. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -1
  227. package/dist/utils/tlsRequest/index.js.map +1 -1
  228. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -1
  229. package/dist/utils/trimPathSlash/index.js.map +1 -1
  230. package/dist/utils/trimPathSlash/trimPathSlash.js +4 -4
  231. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -1
  232. package/eslint.config.mjs +11 -11
  233. package/package.json +159 -164
  234. package/src/const/DebeziumEvent.ts +6 -6
  235. package/src/const/LogSeverity.ts +7 -7
  236. package/src/const/index.ts +5 -5
  237. package/src/const/metrics.ts +6 -6
  238. package/src/const/mime.ts +37 -37
  239. package/src/const/tokenIssuer.ts +9 -9
  240. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -29
  241. package/src/db/models/SequelizeMeta.ts +16 -16
  242. package/src/db/models/index.ts +2 -2
  243. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -103
  244. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -7
  245. package/src/entities/ElasticSearch/index.ts +2 -2
  246. package/src/entities/Endpoint/Endpoint.test.ts +337 -337
  247. package/src/entities/Endpoint/Endpoint.ts +202 -202
  248. package/src/entities/Endpoint/Endpoint.types.ts +205 -205
  249. package/src/entities/Endpoint/index.ts +2 -2
  250. package/src/entities/EngineError/EngineError.ts +28 -28
  251. package/src/entities/EngineError/EngineError.types.ts +15 -15
  252. package/src/entities/EngineError/index.ts +2 -2
  253. package/src/entities/KeySet/KeySet.test.ts +126 -126
  254. package/src/entities/KeySet/KeySet.ts +172 -172
  255. package/src/entities/KeySet/KeySet.types.ts +28 -28
  256. package/src/entities/KeySet/index.ts +2 -2
  257. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -48
  258. package/src/entities/LifecycleController/LifecycleController.ts +24 -24
  259. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -5
  260. package/src/entities/LifecycleController/index.ts +2 -2
  261. package/src/entities/Localizator/Localizator.ts +139 -139
  262. package/src/entities/Localizator/Localizator.types.ts +52 -52
  263. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -165
  264. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -58
  265. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -1
  266. package/src/entities/Localizator/index.ts +2 -2
  267. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -130
  268. package/src/entities/MessageHandler/MessageHandler.ts +72 -72
  269. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -15
  270. package/src/entities/MessageHandler/index.ts +2 -2
  271. package/src/entities/PubSub/PubSub.test.ts +297 -297
  272. package/src/entities/PubSub/PubSub.ts +202 -202
  273. package/src/entities/PubSub/PubSub.types.ts +76 -76
  274. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -102
  275. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -65
  276. package/src/entities/PubSub/handleMessage/index.ts +1 -1
  277. package/src/entities/PubSub/index.ts +2 -2
  278. package/src/entities/PushNotification/PushNotification.test.ts +35 -35
  279. package/src/entities/PushNotification/PushNotification.ts +44 -44
  280. package/src/entities/PushNotification/PushNotification.types.ts +25 -25
  281. package/src/entities/PushNotification/index.ts +2 -2
  282. package/src/entities/Redis/Redis.ts +71 -71
  283. package/src/entities/Redis/Redis.types.ts +19 -19
  284. package/src/entities/Redis/Redis.validate.ts +17 -17
  285. package/src/entities/Redis/index.ts +2 -2
  286. package/src/entities/Sequelize/Sequelize.config.ts +59 -59
  287. package/src/entities/Sequelize/Sequelize.test.ts +21 -21
  288. package/src/entities/Sequelize/Sequelize.ts +75 -75
  289. package/src/entities/Sequelize/Sequelize.types.ts +10 -10
  290. package/src/entities/Sequelize/Sequelize.validate.ts +15 -15
  291. package/src/entities/Sequelize/index.ts +2 -2
  292. package/src/entities/Server/Server.const.ts +56 -56
  293. package/src/entities/Server/Server.test.ts +272 -272
  294. package/src/entities/Server/Server.ts +445 -445
  295. package/src/entities/Server/Server.types.ts +88 -88
  296. package/src/entities/Server/index.ts +2 -2
  297. package/src/entities/SocketClient/SocketClient.test.ts +392 -392
  298. package/src/entities/SocketClient/SocketClient.ts +401 -401
  299. package/src/entities/SocketClient/SocketClient.types.ts +62 -62
  300. package/src/entities/SocketClient/index.ts +2 -2
  301. package/src/entities/SocketClient/parseMessage/index.ts +1 -1
  302. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -20
  303. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -26
  304. package/src/entities/Storage/Storage.test.ts +58 -58
  305. package/src/entities/Storage/Storage.ts +219 -219
  306. package/src/entities/Storage/Storage.types.ts +57 -57
  307. package/src/entities/Storage/index.ts +2 -2
  308. package/src/entities/ValidationError/ValidationError.ts +34 -34
  309. package/src/entities/ValidationError/index.ts +1 -1
  310. package/src/entities/WebError/WebError.test.ts +18 -18
  311. package/src/entities/WebError/WebError.ts +23 -23
  312. package/src/entities/WebError/WebError.types.ts +9 -9
  313. package/src/entities/WebError/index.ts +2 -2
  314. package/src/entities/index.ts +16 -16
  315. package/src/index.ts +4 -4
  316. package/src/metrics/debug.ts +10 -10
  317. package/src/metrics/index.ts +2 -2
  318. package/src/metrics/request.ts +17 -17
  319. package/src/middleware/authAdmin/authAdmin.test.ts +199 -199
  320. package/src/middleware/authAdmin/authAdmin.ts +114 -114
  321. package/src/middleware/authAdmin/authAdmin.types.ts +19 -19
  322. package/src/middleware/authAdmin/index.ts +2 -2
  323. package/src/middleware/authHmac/authHmac.test.ts +86 -86
  324. package/src/middleware/authHmac/authHmac.ts +56 -56
  325. package/src/middleware/authHmac/authHmac.types.ts +7 -7
  326. package/src/middleware/authHmac/index.ts +2 -2
  327. package/src/middleware/authJwt/authJwt.test.ts +54 -54
  328. package/src/middleware/authJwt/authJwt.ts +55 -55
  329. package/src/middleware/authJwt/authJwt.types.ts +14 -14
  330. package/src/middleware/authJwt/index.ts +2 -2
  331. package/src/middleware/authStatic/authStatic.test.ts +36 -36
  332. package/src/middleware/authStatic/authStatic.ts +45 -45
  333. package/src/middleware/authStatic/index.ts +1 -1
  334. package/src/middleware/authTls/authTls.test.ts +138 -138
  335. package/src/middleware/authTls/authTls.ts +106 -106
  336. package/src/middleware/authTls/authTls.types.ts +13 -13
  337. package/src/middleware/authTls/index.ts +2 -2
  338. package/src/middleware/checkPermission/checkPermission.ts +32 -32
  339. package/src/middleware/error/error.test.ts +60 -60
  340. package/src/middleware/error/error.ts +25 -25
  341. package/src/middleware/error/index.ts +1 -1
  342. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -25
  343. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -12
  344. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -2
  345. package/src/middleware/fileUploader/fileUploader.test.ts +310 -310
  346. package/src/middleware/fileUploader/fileUploader.ts +303 -303
  347. package/src/middleware/fileUploader/fileUploader.types.ts +52 -52
  348. package/src/middleware/fileUploader/index.ts +2 -2
  349. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -1
  350. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -9
  351. package/src/middleware/fileUploader/validate/index.ts +1 -1
  352. package/src/middleware/fileUploader/validate/validate.ts +27 -27
  353. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -14
  354. package/src/middleware/fourOhFour/fourOhFour.ts +13 -13
  355. package/src/middleware/fourOhFour/index.ts +1 -1
  356. package/src/middleware/geminiFileUploader/geminiFileUploader.ts +117 -117
  357. package/src/middleware/geminiFileUploader/index.ts +1 -1
  358. package/src/middleware/healthCheck/healthCheck.test.ts +12 -12
  359. package/src/middleware/healthCheck/healthCheck.ts +14 -14
  360. package/src/middleware/healthCheck/index.ts +1 -1
  361. package/src/middleware/index.ts +17 -17
  362. package/src/middleware/metrics/index.ts +1 -1
  363. package/src/middleware/metrics/metrics.test.ts +46 -46
  364. package/src/middleware/metrics/metrics.ts +24 -24
  365. package/src/middleware/requestMetrics/index.ts +1 -1
  366. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -77
  367. package/src/middleware/requestMetrics/requestMetrics.ts +20 -20
  368. package/src/middleware/swaggerDocs/index.ts +2 -2
  369. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -114
  370. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -41
  371. package/src/middleware/userResolver/index.ts +1 -1
  372. package/src/middleware/userResolver/userResolver.test.ts +35 -35
  373. package/src/middleware/userResolver/userResolver.ts +35 -35
  374. package/src/middleware/validate/index.ts +1 -1
  375. package/src/middleware/validate/validate.test.ts +43 -43
  376. package/src/middleware/validate/validate.ts +25 -25
  377. package/src/middleware/version/index.ts +1 -1
  378. package/src/middleware/version/version.test.ts +23 -23
  379. package/src/middleware/version/version.ts +12 -12
  380. package/src/utils/checkEnvironment/index.ts +49 -49
  381. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -24
  382. package/src/utils/createHttpServer/createHttpServer.ts +34 -34
  383. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -17
  384. package/src/utils/createHttpServer/index.ts +1 -1
  385. package/src/utils/createSortedObject/createSortedObject.ts +20 -20
  386. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -47
  387. package/src/utils/createSortedObject/index.ts +1 -1
  388. package/src/utils/dbMigration/dbMigration.test.ts +209 -209
  389. package/src/utils/dbMigration/dbMigration.ts +199 -199
  390. package/src/utils/dbMigration/dbMigration.types.ts +11 -11
  391. package/src/utils/dbMigration/index.ts +2 -2
  392. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -1
  393. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -59
  394. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +102 -102
  395. package/src/utils/envAssert/envAssert.ts +31 -31
  396. package/src/utils/envAssert/index.ts +1 -1
  397. package/src/utils/envAssert/validators/hostList.ts +17 -17
  398. package/src/utils/envAssert/validators/index.ts +5 -5
  399. package/src/utils/envAssert/validators/ipList.ts +13 -13
  400. package/src/utils/envAssert/validators/path.ts +13 -13
  401. package/src/utils/envAssert/validators/string.ts +9 -9
  402. package/src/utils/envAssert/validators/stringList.ts +13 -13
  403. package/src/utils/filter/filter.ts +17 -17
  404. package/src/utils/filter/index.ts +1 -1
  405. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -51
  406. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -28
  407. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -11
  408. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -6
  409. package/src/utils/getDynamicLink/index.ts +2 -2
  410. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -18
  411. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -9
  412. package/src/utils/hmac/checkEnv/index.ts +1 -1
  413. package/src/utils/hmac/createHmac/createHmac.ts +33 -33
  414. package/src/utils/hmac/createHmac/index.ts +1 -1
  415. package/src/utils/hmac/index.ts +4 -4
  416. package/src/utils/hmac/index.types.ts +13 -13
  417. package/src/utils/hmac/signPayload/index.ts +1 -1
  418. package/src/utils/hmac/signPayload/signPayload.ts +16 -16
  419. package/src/utils/hmac/verifySignature/index.ts +1 -1
  420. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -24
  421. package/src/utils/index.ts +26 -26
  422. package/src/utils/jwt/index.ts +2 -2
  423. package/src/utils/jwt/jwt.test.ts +41 -41
  424. package/src/utils/jwt/jwt.ts +204 -204
  425. package/src/utils/jwt/jwt.types.ts +21 -21
  426. package/src/utils/report/index.ts +3 -3
  427. package/src/utils/report/output.ts +45 -45
  428. package/src/utils/report/output.types.ts +70 -70
  429. package/src/utils/report/report.test.ts +133 -133
  430. package/src/utils/report/report.ts +134 -134
  431. package/src/utils/report/report.types.ts +13 -13
  432. package/src/utils/request/index.ts +1 -1
  433. package/src/utils/request/request.test.ts +26 -26
  434. package/src/utils/request/request.ts +48 -48
  435. package/src/utils/semverCompare/index.ts +1 -1
  436. package/src/utils/semverCompare/semverCompare.test.ts +49 -49
  437. package/src/utils/semverCompare/semverCompare.ts +60 -60
  438. package/src/utils/sendEmail/index.ts +1 -1
  439. package/src/utils/sendEmail/sendEmail.ts +27 -27
  440. package/src/utils/sendEmail/sendEmail.types.ts +7 -7
  441. package/src/utils/sendPush/index.ts +2 -2
  442. package/src/utils/sendPush/sendPush.ts +20 -20
  443. package/src/utils/sendPush/sendPush.types.ts +25 -25
  444. package/src/utils/tlsConfig/index.ts +2 -2
  445. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -32
  446. package/src/utils/tlsConfig/tlsConfig.ts +47 -47
  447. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -11
  448. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -25
  449. package/src/utils/tlsRequest/index.ts +1 -1
  450. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -63
  451. package/src/utils/tlsRequest/tlsRequest.ts +12 -12
  452. package/src/utils/trimPathSlash/index.ts +1 -1
  453. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -26
  454. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -8
  455. package/test/env.ts +56 -56
  456. package/test/factory/index.ts +8 -8
  457. package/test/factory/sequelizeMeta.ts +12 -12
  458. package/test/hooks.ts +37 -37
  459. package/test/index.ts +3 -3
  460. package/test/stub/index.ts +3 -3
  461. package/test/stub/stubLocales.ts +68 -68
  462. package/test/stub/stubPubSub.ts +7 -7
  463. package/test/stub/stubStorage.ts +77 -77
  464. package/test/stub/stubStorage.types.ts +11 -11
  465. package/test/utils/app.ts +31 -31
  466. package/test/utils/index.ts +1 -1
  467. package/tsconfig.build.json +5 -5
  468. package/tsconfig.json +32 -32
@@ -1,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
+ }