node-server-engine 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (772) hide show
  1. package/.env.example +191 -0
  2. package/.mocharc.js +13 -0
  3. package/.nycrc +18 -0
  4. package/.prettierrc +7 -0
  5. package/Dockerfile +31 -0
  6. package/README.md +960 -0
  7. package/babel.config.json +35 -0
  8. package/dist/const/DebeziumEvent.d.ts +6 -0
  9. package/dist/const/DebeziumEvent.js +14 -0
  10. package/dist/const/DebeziumEvent.js.map +1 -0
  11. package/dist/const/LogSeverity.d.ts +7 -0
  12. package/dist/const/LogSeverity.js +15 -0
  13. package/dist/const/LogSeverity.js.map +1 -0
  14. package/dist/const/index.d.ts +5 -0
  15. package/dist/const/index.js +61 -0
  16. package/dist/const/index.js.map +1 -0
  17. package/dist/const/metrics.d.ts +3 -0
  18. package/dist/const/metrics.js +12 -0
  19. package/dist/const/metrics.js.map +1 -0
  20. package/dist/const/mime.d.ts +9 -0
  21. package/dist/const/mime.js +16 -0
  22. package/dist/const/mime.js.map +1 -0
  23. package/dist/const/tokenIssuer.d.ts +8 -0
  24. package/dist/const/tokenIssuer.js +14 -0
  25. package/dist/const/tokenIssuer.js.map +1 -0
  26. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.d.ts +3 -0
  27. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js +32 -0
  28. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js.map +1 -0
  29. package/dist/db/models/SequelizeMeta.d.ts +5 -0
  30. package/dist/db/models/SequelizeMeta.js +48 -0
  31. package/dist/db/models/SequelizeMeta.js.map +1 -0
  32. package/dist/db/models/index.d.ts +1 -0
  33. package/dist/db/models/index.js +17 -0
  34. package/dist/db/models/index.js.map +1 -0
  35. package/dist/entities/ElasticSearch/ElasticSearch.d.ts +15 -0
  36. package/dist/entities/ElasticSearch/ElasticSearch.js +114 -0
  37. package/dist/entities/ElasticSearch/ElasticSearch.js.map +1 -0
  38. package/dist/entities/ElasticSearch/ElasticSearch.types.d.ts +6 -0
  39. package/dist/entities/ElasticSearch/ElasticSearch.types.js +2 -0
  40. package/dist/entities/ElasticSearch/ElasticSearch.types.js.map +1 -0
  41. package/dist/entities/ElasticSearch/index.d.ts +2 -0
  42. package/dist/entities/ElasticSearch/index.js +28 -0
  43. package/dist/entities/ElasticSearch/index.js.map +1 -0
  44. package/dist/entities/Endpoint/Endpoint.d.ts +39 -0
  45. package/dist/entities/Endpoint/Endpoint.js +174 -0
  46. package/dist/entities/Endpoint/Endpoint.js.map +1 -0
  47. package/dist/entities/Endpoint/Endpoint.types.d.ts +133 -0
  48. package/dist/entities/Endpoint/Endpoint.types.js +63 -0
  49. package/dist/entities/Endpoint/Endpoint.types.js.map +1 -0
  50. package/dist/entities/Endpoint/index.d.ts +2 -0
  51. package/dist/entities/Endpoint/index.js +28 -0
  52. package/dist/entities/Endpoint/index.js.map +1 -0
  53. package/dist/entities/EngineError/EngineError.d.ts +17 -0
  54. package/dist/entities/EngineError/EngineError.js +46 -0
  55. package/dist/entities/EngineError/EngineError.js.map +1 -0
  56. package/dist/entities/EngineError/EngineError.types.d.ts +14 -0
  57. package/dist/entities/EngineError/EngineError.types.js +2 -0
  58. package/dist/entities/EngineError/EngineError.types.js.map +1 -0
  59. package/dist/entities/EngineError/index.d.ts +2 -0
  60. package/dist/entities/EngineError/index.js +28 -0
  61. package/dist/entities/EngineError/index.js.map +1 -0
  62. package/dist/entities/KeySet/KeySet.d.ts +33 -0
  63. package/dist/entities/KeySet/KeySet.js +201 -0
  64. package/dist/entities/KeySet/KeySet.js.map +1 -0
  65. package/dist/entities/KeySet/KeySet.types.d.ts +25 -0
  66. package/dist/entities/KeySet/KeySet.types.js +2 -0
  67. package/dist/entities/KeySet/KeySet.types.js.map +1 -0
  68. package/dist/entities/KeySet/index.d.ts +2 -0
  69. package/dist/entities/KeySet/index.js +28 -0
  70. package/dist/entities/KeySet/index.js.map +1 -0
  71. package/dist/entities/LifecycleController/LifecycleController.d.ts +10 -0
  72. package/dist/entities/LifecycleController/LifecycleController.js +28 -0
  73. package/dist/entities/LifecycleController/LifecycleController.js.map +1 -0
  74. package/dist/entities/LifecycleController/LifecycleController.types.d.ts +5 -0
  75. package/dist/entities/LifecycleController/LifecycleController.types.js +2 -0
  76. package/dist/entities/LifecycleController/LifecycleController.types.js.map +1 -0
  77. package/dist/entities/LifecycleController/index.d.ts +2 -0
  78. package/dist/entities/LifecycleController/index.js +28 -0
  79. package/dist/entities/LifecycleController/index.js.map +1 -0
  80. package/dist/entities/Localizator/Localizator.d.ts +28 -0
  81. package/dist/entities/Localizator/Localizator.js +128 -0
  82. package/dist/entities/Localizator/Localizator.js.map +1 -0
  83. package/dist/entities/Localizator/Localizator.types.d.ts +48 -0
  84. package/dist/entities/Localizator/Localizator.types.js +2 -0
  85. package/dist/entities/Localizator/Localizator.types.js.map +1 -0
  86. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.d.ts +8 -0
  87. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js +48 -0
  88. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js.map +1 -0
  89. package/dist/entities/Localizator/guessNamingConvention/index.d.ts +1 -0
  90. package/dist/entities/Localizator/guessNamingConvention/index.js +17 -0
  91. package/dist/entities/Localizator/guessNamingConvention/index.js.map +1 -0
  92. package/dist/entities/Localizator/index.d.ts +2 -0
  93. package/dist/entities/Localizator/index.js +28 -0
  94. package/dist/entities/Localizator/index.js.map +1 -0
  95. package/dist/entities/MessageHandler/MessageHandler.d.ts +20 -0
  96. package/dist/entities/MessageHandler/MessageHandler.js +65 -0
  97. package/dist/entities/MessageHandler/MessageHandler.js.map +1 -0
  98. package/dist/entities/MessageHandler/MessageHandler.types.d.ts +10 -0
  99. package/dist/entities/MessageHandler/MessageHandler.types.js +2 -0
  100. package/dist/entities/MessageHandler/MessageHandler.types.js.map +1 -0
  101. package/dist/entities/MessageHandler/index.d.ts +2 -0
  102. package/dist/entities/MessageHandler/index.js +28 -0
  103. package/dist/entities/MessageHandler/index.js.map +1 -0
  104. package/dist/entities/PubSub/PubSub.d.ts +36 -0
  105. package/dist/entities/PubSub/PubSub.js +167 -0
  106. package/dist/entities/PubSub/PubSub.js.map +1 -0
  107. package/dist/entities/PubSub/PubSub.types.d.ts +61 -0
  108. package/dist/entities/PubSub/PubSub.types.js +2 -0
  109. package/dist/entities/PubSub/PubSub.types.js.map +1 -0
  110. package/dist/entities/PubSub/handleMessage/handleMessage.d.ts +10 -0
  111. package/dist/entities/PubSub/handleMessage/handleMessage.js +63 -0
  112. package/dist/entities/PubSub/handleMessage/handleMessage.js.map +1 -0
  113. package/dist/entities/PubSub/handleMessage/index.d.ts +1 -0
  114. package/dist/entities/PubSub/handleMessage/index.js +17 -0
  115. package/dist/entities/PubSub/handleMessage/index.js.map +1 -0
  116. package/dist/entities/PubSub/index.d.ts +2 -0
  117. package/dist/entities/PubSub/index.js +28 -0
  118. package/dist/entities/PubSub/index.js.map +1 -0
  119. package/dist/entities/PushNotification/PushNotification.d.ts +11 -0
  120. package/dist/entities/PushNotification/PushNotification.js +44 -0
  121. package/dist/entities/PushNotification/PushNotification.js.map +1 -0
  122. package/dist/entities/PushNotification/PushNotification.types.d.ts +25 -0
  123. package/dist/entities/PushNotification/PushNotification.types.js +2 -0
  124. package/dist/entities/PushNotification/PushNotification.types.js.map +1 -0
  125. package/dist/entities/PushNotification/index.d.ts +2 -0
  126. package/dist/entities/PushNotification/index.js +28 -0
  127. package/dist/entities/PushNotification/index.js.map +1 -0
  128. package/dist/entities/Redis/Redis.d.ts +19 -0
  129. package/dist/entities/Redis/Redis.js +75 -0
  130. package/dist/entities/Redis/Redis.js.map +1 -0
  131. package/dist/entities/Redis/Redis.types.d.ts +16 -0
  132. package/dist/entities/Redis/Redis.types.js +2 -0
  133. package/dist/entities/Redis/Redis.types.js.map +1 -0
  134. package/dist/entities/Redis/Redis.validate.d.ts +5 -0
  135. package/dist/entities/Redis/Redis.validate.js +21 -0
  136. package/dist/entities/Redis/Redis.validate.js.map +1 -0
  137. package/dist/entities/Redis/index.d.ts +2 -0
  138. package/dist/entities/Redis/index.js +35 -0
  139. package/dist/entities/Redis/index.js.map +1 -0
  140. package/dist/entities/Sequelize/Sequelize.config.d.ts +7 -0
  141. package/dist/entities/Sequelize/Sequelize.config.js +32 -0
  142. package/dist/entities/Sequelize/Sequelize.config.js.map +1 -0
  143. package/dist/entities/Sequelize/Sequelize.d.ts +14 -0
  144. package/dist/entities/Sequelize/Sequelize.js +70 -0
  145. package/dist/entities/Sequelize/Sequelize.js.map +1 -0
  146. package/dist/entities/Sequelize/Sequelize.types.d.ts +9 -0
  147. package/dist/entities/Sequelize/Sequelize.types.js +2 -0
  148. package/dist/entities/Sequelize/Sequelize.types.js.map +1 -0
  149. package/dist/entities/Sequelize/Sequelize.validate.d.ts +4 -0
  150. package/dist/entities/Sequelize/Sequelize.validate.js +27 -0
  151. package/dist/entities/Sequelize/Sequelize.validate.js.map +1 -0
  152. package/dist/entities/Sequelize/index.d.ts +2 -0
  153. package/dist/entities/Sequelize/index.js +28 -0
  154. package/dist/entities/Sequelize/index.js.map +1 -0
  155. package/dist/entities/Server/Server.const.d.ts +5 -0
  156. package/dist/entities/Server/Server.const.js +45 -0
  157. package/dist/entities/Server/Server.const.js.map +1 -0
  158. package/dist/entities/Server/Server.d.ts +61 -0
  159. package/dist/entities/Server/Server.js +380 -0
  160. package/dist/entities/Server/Server.js.map +1 -0
  161. package/dist/entities/Server/Server.types.d.ts +75 -0
  162. package/dist/entities/Server/Server.types.js +2 -0
  163. package/dist/entities/Server/Server.types.js.map +1 -0
  164. package/dist/entities/Server/index.d.ts +2 -0
  165. package/dist/entities/Server/index.js +28 -0
  166. package/dist/entities/Server/index.js.map +1 -0
  167. package/dist/entities/SocketClient/SocketClient.d.ts +79 -0
  168. package/dist/entities/SocketClient/SocketClient.js +394 -0
  169. package/dist/entities/SocketClient/SocketClient.js.map +1 -0
  170. package/dist/entities/SocketClient/SocketClient.types.d.ts +53 -0
  171. package/dist/entities/SocketClient/SocketClient.types.js +2 -0
  172. package/dist/entities/SocketClient/SocketClient.types.js.map +1 -0
  173. package/dist/entities/SocketClient/index.d.ts +2 -0
  174. package/dist/entities/SocketClient/index.js +28 -0
  175. package/dist/entities/SocketClient/index.js.map +1 -0
  176. package/dist/entities/SocketClient/parseMessage/index.d.ts +1 -0
  177. package/dist/entities/SocketClient/parseMessage/index.js +17 -0
  178. package/dist/entities/SocketClient/parseMessage/index.js.map +1 -0
  179. package/dist/entities/SocketClient/parseMessage/parseMessage.d.ts +5 -0
  180. package/dist/entities/SocketClient/parseMessage/parseMessage.js +34 -0
  181. package/dist/entities/SocketClient/parseMessage/parseMessage.js.map +1 -0
  182. package/dist/entities/Storage/Storage.d.ts +38 -0
  183. package/dist/entities/Storage/Storage.js +214 -0
  184. package/dist/entities/Storage/Storage.js.map +1 -0
  185. package/dist/entities/Storage/Storage.types.d.ts +52 -0
  186. package/dist/entities/Storage/Storage.types.js +2 -0
  187. package/dist/entities/Storage/Storage.types.js.map +1 -0
  188. package/dist/entities/Storage/index.d.ts +2 -0
  189. package/dist/entities/Storage/index.js +28 -0
  190. package/dist/entities/Storage/index.js.map +1 -0
  191. package/dist/entities/ValidationError/ValidationError.d.ts +7 -0
  192. package/dist/entities/ValidationError/ValidationError.js +44 -0
  193. package/dist/entities/ValidationError/ValidationError.js.map +1 -0
  194. package/dist/entities/ValidationError/index.d.ts +1 -0
  195. package/dist/entities/ValidationError/index.js +17 -0
  196. package/dist/entities/ValidationError/index.js.map +1 -0
  197. package/dist/entities/WebError/WebError.d.ts +15 -0
  198. package/dist/entities/WebError/WebError.js +42 -0
  199. package/dist/entities/WebError/WebError.js.map +1 -0
  200. package/dist/entities/WebError/WebError.types.d.ts +8 -0
  201. package/dist/entities/WebError/WebError.types.js +2 -0
  202. package/dist/entities/WebError/WebError.types.js.map +1 -0
  203. package/dist/entities/WebError/index.d.ts +2 -0
  204. package/dist/entities/WebError/index.js +28 -0
  205. package/dist/entities/WebError/index.js.map +1 -0
  206. package/dist/entities/index.d.ts +16 -0
  207. package/dist/entities/index.js +182 -0
  208. package/dist/entities/index.js.map +1 -0
  209. package/dist/index.d.ts +4 -0
  210. package/dist/index.js +50 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/metrics/debug.d.ts +2 -0
  213. package/dist/metrics/debug.js +15 -0
  214. package/dist/metrics/debug.js.map +1 -0
  215. package/dist/metrics/index.d.ts +2 -0
  216. package/dist/metrics/index.js +28 -0
  217. package/dist/metrics/index.js.map +1 -0
  218. package/dist/metrics/request.d.ts +3 -0
  219. package/dist/metrics/request.js +22 -0
  220. package/dist/metrics/request.js.map +1 -0
  221. package/dist/middleware/authAdmin/authAdmin.d.ts +4 -0
  222. package/dist/middleware/authAdmin/authAdmin.js +105 -0
  223. package/dist/middleware/authAdmin/authAdmin.js.map +1 -0
  224. package/dist/middleware/authAdmin/authAdmin.types.d.ts +16 -0
  225. package/dist/middleware/authAdmin/authAdmin.types.js +2 -0
  226. package/dist/middleware/authAdmin/authAdmin.types.js.map +1 -0
  227. package/dist/middleware/authAdmin/index.d.ts +2 -0
  228. package/dist/middleware/authAdmin/index.js +28 -0
  229. package/dist/middleware/authAdmin/index.js.map +1 -0
  230. package/dist/middleware/authHmac/authHmac.d.ts +4 -0
  231. package/dist/middleware/authHmac/authHmac.js +57 -0
  232. package/dist/middleware/authHmac/authHmac.js.map +1 -0
  233. package/dist/middleware/authHmac/authHmac.types.d.ts +7 -0
  234. package/dist/middleware/authHmac/authHmac.types.js +2 -0
  235. package/dist/middleware/authHmac/authHmac.types.js.map +1 -0
  236. package/dist/middleware/authHmac/index.d.ts +2 -0
  237. package/dist/middleware/authHmac/index.js +28 -0
  238. package/dist/middleware/authHmac/index.js.map +1 -0
  239. package/dist/middleware/authJwt/authJwt.d.ts +3 -0
  240. package/dist/middleware/authJwt/authJwt.js +56 -0
  241. package/dist/middleware/authJwt/authJwt.js.map +1 -0
  242. package/dist/middleware/authJwt/authJwt.types.d.ts +22 -0
  243. package/dist/middleware/authJwt/authJwt.types.js +2 -0
  244. package/dist/middleware/authJwt/authJwt.types.js.map +1 -0
  245. package/dist/middleware/authJwt/index.d.ts +2 -0
  246. package/dist/middleware/authJwt/index.js +28 -0
  247. package/dist/middleware/authJwt/index.js.map +1 -0
  248. package/dist/middleware/authStatic/authStatic.d.ts +6 -0
  249. package/dist/middleware/authStatic/authStatic.js +54 -0
  250. package/dist/middleware/authStatic/authStatic.js.map +1 -0
  251. package/dist/middleware/authStatic/index.d.ts +1 -0
  252. package/dist/middleware/authStatic/index.js +17 -0
  253. package/dist/middleware/authStatic/index.js.map +1 -0
  254. package/dist/middleware/authTls/authTls.d.ts +16 -0
  255. package/dist/middleware/authTls/authTls.js +102 -0
  256. package/dist/middleware/authTls/authTls.js.map +1 -0
  257. package/dist/middleware/authTls/authTls.types.d.ts +10 -0
  258. package/dist/middleware/authTls/authTls.types.js +6 -0
  259. package/dist/middleware/authTls/authTls.types.js.map +1 -0
  260. package/dist/middleware/authTls/index.d.ts +2 -0
  261. package/dist/middleware/authTls/index.js +18 -0
  262. package/dist/middleware/authTls/index.js.map +1 -0
  263. package/dist/middleware/error/error.d.ts +3 -0
  264. package/dist/middleware/error/error.js +34 -0
  265. package/dist/middleware/error/error.js.map +1 -0
  266. package/dist/middleware/error/index.d.ts +1 -0
  267. package/dist/middleware/error/index.js +17 -0
  268. package/dist/middleware/error/index.js.map +1 -0
  269. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.d.ts +6 -0
  270. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +28 -0
  271. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -0
  272. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.d.ts +12 -0
  273. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js +2 -0
  274. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -0
  275. package/dist/middleware/fileUploader/compressAvatar/index.d.ts +2 -0
  276. package/dist/middleware/fileUploader/compressAvatar/index.js +28 -0
  277. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -0
  278. package/dist/middleware/fileUploader/fileUploader.d.ts +10 -0
  279. package/dist/middleware/fileUploader/fileUploader.js +296 -0
  280. package/dist/middleware/fileUploader/fileUploader.js.map +1 -0
  281. package/dist/middleware/fileUploader/fileUploader.types.d.ts +49 -0
  282. package/dist/middleware/fileUploader/fileUploader.types.js +2 -0
  283. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -0
  284. package/dist/middleware/fileUploader/index.d.ts +2 -0
  285. package/dist/middleware/fileUploader/index.js +28 -0
  286. package/dist/middleware/fileUploader/index.js.map +1 -0
  287. package/dist/middleware/fileUploader/isMultiPart/index.d.ts +1 -0
  288. package/dist/middleware/fileUploader/isMultiPart/index.js +17 -0
  289. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -0
  290. package/dist/middleware/fileUploader/isMultiPart/isMultipart.d.ts +3 -0
  291. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js +14 -0
  292. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -0
  293. package/dist/middleware/fileUploader/validate/index.d.ts +1 -0
  294. package/dist/middleware/fileUploader/validate/index.js +17 -0
  295. package/dist/middleware/fileUploader/validate/index.js.map +1 -0
  296. package/dist/middleware/fileUploader/validate/validate.d.ts +4 -0
  297. package/dist/middleware/fileUploader/validate/validate.js +28 -0
  298. package/dist/middleware/fileUploader/validate/validate.js.map +1 -0
  299. package/dist/middleware/fourOhFour/fourOhFour.d.ts +3 -0
  300. package/dist/middleware/fourOhFour/fourOhFour.js +18 -0
  301. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -0
  302. package/dist/middleware/fourOhFour/index.d.ts +1 -0
  303. package/dist/middleware/fourOhFour/index.js +17 -0
  304. package/dist/middleware/fourOhFour/index.js.map +1 -0
  305. package/dist/middleware/healthCheck/healthCheck.d.ts +5 -0
  306. package/dist/middleware/healthCheck/healthCheck.js +18 -0
  307. package/dist/middleware/healthCheck/healthCheck.js.map +1 -0
  308. package/dist/middleware/healthCheck/index.d.ts +1 -0
  309. package/dist/middleware/healthCheck/index.js +17 -0
  310. package/dist/middleware/healthCheck/index.js.map +1 -0
  311. package/dist/middleware/index.d.ts +15 -0
  312. package/dist/middleware/index.js +171 -0
  313. package/dist/middleware/index.js.map +1 -0
  314. package/dist/middleware/metrics/index.d.ts +1 -0
  315. package/dist/middleware/metrics/index.js +17 -0
  316. package/dist/middleware/metrics/index.js.map +1 -0
  317. package/dist/middleware/metrics/metrics.d.ts +3 -0
  318. package/dist/middleware/metrics/metrics.js +28 -0
  319. package/dist/middleware/metrics/metrics.js.map +1 -0
  320. package/dist/middleware/requestMetrics/index.d.ts +1 -0
  321. package/dist/middleware/requestMetrics/index.js +17 -0
  322. package/dist/middleware/requestMetrics/index.js.map +1 -0
  323. package/dist/middleware/requestMetrics/requestMetrics.d.ts +2 -0
  324. package/dist/middleware/requestMetrics/requestMetrics.js +21 -0
  325. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -0
  326. package/dist/middleware/swaggerDocs/index.d.ts +2 -0
  327. package/dist/middleware/swaggerDocs/index.js +28 -0
  328. package/dist/middleware/swaggerDocs/index.js.map +1 -0
  329. package/dist/middleware/swaggerDocs/swaggerDocs.d.ts +6 -0
  330. package/dist/middleware/swaggerDocs/swaggerDocs.js +103 -0
  331. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -0
  332. package/dist/middleware/swaggerDocs/swaggerDocs.types.d.ts +37 -0
  333. package/dist/middleware/swaggerDocs/swaggerDocs.types.js +2 -0
  334. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -0
  335. package/dist/middleware/userResolver/index.d.ts +1 -0
  336. package/dist/middleware/userResolver/index.js +17 -0
  337. package/dist/middleware/userResolver/index.js.map +1 -0
  338. package/dist/middleware/userResolver/userResolver.d.ts +3 -0
  339. package/dist/middleware/userResolver/userResolver.js +41 -0
  340. package/dist/middleware/userResolver/userResolver.js.map +1 -0
  341. package/dist/middleware/validate/index.d.ts +1 -0
  342. package/dist/middleware/validate/index.js +17 -0
  343. package/dist/middleware/validate/index.js.map +1 -0
  344. package/dist/middleware/validate/validate.d.ts +4 -0
  345. package/dist/middleware/validate/validate.js +19 -0
  346. package/dist/middleware/validate/validate.js.map +1 -0
  347. package/dist/middleware/version/index.d.ts +1 -0
  348. package/dist/middleware/version/index.js +17 -0
  349. package/dist/middleware/version/index.js.map +1 -0
  350. package/dist/middleware/version/version.d.ts +6 -0
  351. package/dist/middleware/version/version.js +21 -0
  352. package/dist/middleware/version/version.js.map +1 -0
  353. package/dist/utils/checkEnvironment/index.d.ts +13 -0
  354. package/dist/utils/checkEnvironment/index.js +62 -0
  355. package/dist/utils/checkEnvironment/index.js.map +1 -0
  356. package/dist/utils/createHttpServer/createHttpServer.d.ts +5 -0
  357. package/dist/utils/createHttpServer/createHttpServer.js +30 -0
  358. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -0
  359. package/dist/utils/createHttpServer/createHttpServer.validate.d.ts +4 -0
  360. package/dist/utils/createHttpServer/createHttpServer.validate.js +31 -0
  361. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -0
  362. package/dist/utils/createHttpServer/index.d.ts +1 -0
  363. package/dist/utils/createHttpServer/index.js +17 -0
  364. package/dist/utils/createHttpServer/index.js.map +1 -0
  365. package/dist/utils/createSortedObject/createSortedObject.d.ts +2 -0
  366. package/dist/utils/createSortedObject/createSortedObject.js +21 -0
  367. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -0
  368. package/dist/utils/createSortedObject/index.d.ts +1 -0
  369. package/dist/utils/createSortedObject/index.js +17 -0
  370. package/dist/utils/createSortedObject/index.js.map +1 -0
  371. package/dist/utils/dbMigration/dbMigration.d.ts +17 -0
  372. package/dist/utils/dbMigration/dbMigration.js +207 -0
  373. package/dist/utils/dbMigration/dbMigration.js.map +1 -0
  374. package/dist/utils/dbMigration/dbMigration.types.d.ts +10 -0
  375. package/dist/utils/dbMigration/dbMigration.types.js +2 -0
  376. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -0
  377. package/dist/utils/dbMigration/index.d.ts +2 -0
  378. package/dist/utils/dbMigration/index.js +28 -0
  379. package/dist/utils/dbMigration/index.js.map +1 -0
  380. package/dist/utils/dbMigration/migrateMetadataTable/index.d.ts +1 -0
  381. package/dist/utils/dbMigration/migrateMetadataTable/index.js +17 -0
  382. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -0
  383. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.d.ts +7 -0
  384. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +63 -0
  385. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -0
  386. package/dist/utils/envAssert/envAssert.d.ts +21 -0
  387. package/dist/utils/envAssert/envAssert.js +30 -0
  388. package/dist/utils/envAssert/envAssert.js.map +1 -0
  389. package/dist/utils/envAssert/index.d.ts +1 -0
  390. package/dist/utils/envAssert/index.js +17 -0
  391. package/dist/utils/envAssert/index.js.map +1 -0
  392. package/dist/utils/envAssert/validators/hostList.d.ts +4 -0
  393. package/dist/utils/envAssert/validators/hostList.js +22 -0
  394. package/dist/utils/envAssert/validators/hostList.js.map +1 -0
  395. package/dist/utils/envAssert/validators/index.d.ts +5 -0
  396. package/dist/utils/envAssert/validators/index.js +61 -0
  397. package/dist/utils/envAssert/validators/index.js.map +1 -0
  398. package/dist/utils/envAssert/validators/ipList.d.ts +4 -0
  399. package/dist/utils/envAssert/validators/ipList.js +20 -0
  400. package/dist/utils/envAssert/validators/ipList.js.map +1 -0
  401. package/dist/utils/envAssert/validators/path.d.ts +4 -0
  402. package/dist/utils/envAssert/validators/path.js +19 -0
  403. package/dist/utils/envAssert/validators/path.js.map +1 -0
  404. package/dist/utils/envAssert/validators/string.d.ts +4 -0
  405. package/dist/utils/envAssert/validators/string.js +15 -0
  406. package/dist/utils/envAssert/validators/string.js.map +1 -0
  407. package/dist/utils/envAssert/validators/stringList.d.ts +5 -0
  408. package/dist/utils/envAssert/validators/stringList.js +19 -0
  409. package/dist/utils/envAssert/validators/stringList.js.map +1 -0
  410. package/dist/utils/filter/filter.d.ts +6 -0
  411. package/dist/utils/filter/filter.js +21 -0
  412. package/dist/utils/filter/filter.js.map +1 -0
  413. package/dist/utils/filter/index.d.ts +1 -0
  414. package/dist/utils/filter/index.js +17 -0
  415. package/dist/utils/filter/index.js.map +1 -0
  416. package/dist/utils/getDynamicLink/getDynamicLink.d.ts +3 -0
  417. package/dist/utils/getDynamicLink/getDynamicLink.js +28 -0
  418. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -0
  419. package/dist/utils/getDynamicLink/getDynamicLink.types.d.ts +10 -0
  420. package/dist/utils/getDynamicLink/getDynamicLink.types.js +2 -0
  421. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -0
  422. package/dist/utils/getDynamicLink/getDynamicLink.validate.d.ts +2 -0
  423. package/dist/utils/getDynamicLink/getDynamicLink.validate.js +14 -0
  424. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -0
  425. package/dist/utils/getDynamicLink/index.d.ts +2 -0
  426. package/dist/utils/getDynamicLink/index.js +28 -0
  427. package/dist/utils/getDynamicLink/index.js.map +1 -0
  428. package/dist/utils/hmac/checkEnv/checkEnv.d.ts +4 -0
  429. package/dist/utils/hmac/checkEnv/checkEnv.js +17 -0
  430. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -0
  431. package/dist/utils/hmac/checkEnv/index.d.ts +1 -0
  432. package/dist/utils/hmac/checkEnv/index.js +17 -0
  433. package/dist/utils/hmac/checkEnv/index.js.map +1 -0
  434. package/dist/utils/hmac/createHmac/createHmac.d.ts +3 -0
  435. package/dist/utils/hmac/createHmac/createHmac.js +33 -0
  436. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -0
  437. package/dist/utils/hmac/createHmac/index.d.ts +1 -0
  438. package/dist/utils/hmac/createHmac/index.js +17 -0
  439. package/dist/utils/hmac/createHmac/index.js.map +1 -0
  440. package/dist/utils/hmac/index.d.ts +4 -0
  441. package/dist/utils/hmac/index.js +50 -0
  442. package/dist/utils/hmac/index.js.map +1 -0
  443. package/dist/utils/hmac/index.types.d.ts +12 -0
  444. package/dist/utils/hmac/index.types.js +2 -0
  445. package/dist/utils/hmac/index.types.js.map +1 -0
  446. package/dist/utils/hmac/signPayload/index.d.ts +1 -0
  447. package/dist/utils/hmac/signPayload/index.js +17 -0
  448. package/dist/utils/hmac/signPayload/index.js.map +1 -0
  449. package/dist/utils/hmac/signPayload/signPayload.d.ts +6 -0
  450. package/dist/utils/hmac/signPayload/signPayload.js +18 -0
  451. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -0
  452. package/dist/utils/hmac/verifySignature/index.d.ts +1 -0
  453. package/dist/utils/hmac/verifySignature/index.js +17 -0
  454. package/dist/utils/hmac/verifySignature/index.js.map +1 -0
  455. package/dist/utils/hmac/verifySignature/verifySignature.d.ts +3 -0
  456. package/dist/utils/hmac/verifySignature/verifySignature.js +23 -0
  457. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -0
  458. package/dist/utils/index.d.ts +17 -0
  459. package/dist/utils/index.js +193 -0
  460. package/dist/utils/index.js.map +1 -0
  461. package/dist/utils/jwt/index.d.ts +2 -0
  462. package/dist/utils/jwt/index.js +28 -0
  463. package/dist/utils/jwt/index.js.map +1 -0
  464. package/dist/utils/jwt/jwt.d.ts +12 -0
  465. package/dist/utils/jwt/jwt.js +195 -0
  466. package/dist/utils/jwt/jwt.js.map +1 -0
  467. package/dist/utils/jwt/jwt.types.d.ts +20 -0
  468. package/dist/utils/jwt/jwt.types.js +2 -0
  469. package/dist/utils/jwt/jwt.types.js.map +1 -0
  470. package/dist/utils/report/index.d.ts +3 -0
  471. package/dist/utils/report/index.js +39 -0
  472. package/dist/utils/report/index.js.map +1 -0
  473. package/dist/utils/report/output.d.ts +4 -0
  474. package/dist/utils/report/output.js +49 -0
  475. package/dist/utils/report/output.js.map +1 -0
  476. package/dist/utils/report/output.types.d.ts +65 -0
  477. package/dist/utils/report/output.types.js +2 -0
  478. package/dist/utils/report/output.types.js.map +1 -0
  479. package/dist/utils/report/report.d.ts +18 -0
  480. package/dist/utils/report/report.js +119 -0
  481. package/dist/utils/report/report.js.map +1 -0
  482. package/dist/utils/report/report.types.d.ts +11 -0
  483. package/dist/utils/report/report.types.js +2 -0
  484. package/dist/utils/report/report.types.js.map +1 -0
  485. package/dist/utils/request/index.d.ts +1 -0
  486. package/dist/utils/request/index.js +17 -0
  487. package/dist/utils/request/index.js.map +1 -0
  488. package/dist/utils/request/request.d.ts +3 -0
  489. package/dist/utils/request/request.js +42 -0
  490. package/dist/utils/request/request.js.map +1 -0
  491. package/dist/utils/semverCompare/index.d.ts +1 -0
  492. package/dist/utils/semverCompare/index.js +17 -0
  493. package/dist/utils/semverCompare/index.js.map +1 -0
  494. package/dist/utils/semverCompare/semverCompare.d.ts +7 -0
  495. package/dist/utils/semverCompare/semverCompare.js +65 -0
  496. package/dist/utils/semverCompare/semverCompare.js.map +1 -0
  497. package/dist/utils/sendEmail/index.d.ts +1 -0
  498. package/dist/utils/sendEmail/index.js +17 -0
  499. package/dist/utils/sendEmail/index.js.map +1 -0
  500. package/dist/utils/sendEmail/sendEmail.d.ts +11 -0
  501. package/dist/utils/sendEmail/sendEmail.js +32 -0
  502. package/dist/utils/sendEmail/sendEmail.js.map +1 -0
  503. package/dist/utils/sendEmail/sendEmail.types.d.ts +7 -0
  504. package/dist/utils/sendEmail/sendEmail.types.js +2 -0
  505. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -0
  506. package/dist/utils/sendPush/index.d.ts +2 -0
  507. package/dist/utils/sendPush/index.js +28 -0
  508. package/dist/utils/sendPush/index.js.map +1 -0
  509. package/dist/utils/sendPush/sendPush.d.ts +8 -0
  510. package/dist/utils/sendPush/sendPush.js +25 -0
  511. package/dist/utils/sendPush/sendPush.js.map +1 -0
  512. package/dist/utils/sendPush/sendPush.types.d.ts +25 -0
  513. package/dist/utils/sendPush/sendPush.types.js +2 -0
  514. package/dist/utils/sendPush/sendPush.types.js.map +1 -0
  515. package/dist/utils/tlsConfig/index.d.ts +2 -0
  516. package/dist/utils/tlsConfig/index.js +28 -0
  517. package/dist/utils/tlsConfig/index.js.map +1 -0
  518. package/dist/utils/tlsConfig/tlsConfig.d.ts +8 -0
  519. package/dist/utils/tlsConfig/tlsConfig.js +44 -0
  520. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -0
  521. package/dist/utils/tlsConfig/tlsConfig.types.d.ts +11 -0
  522. package/dist/utils/tlsConfig/tlsConfig.types.js +2 -0
  523. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -0
  524. package/dist/utils/tlsConfig/tlsConfig.validate.d.ts +4 -0
  525. package/dist/utils/tlsConfig/tlsConfig.validate.js +48 -0
  526. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -0
  527. package/dist/utils/tlsRequest/index.d.ts +1 -0
  528. package/dist/utils/tlsRequest/index.js +17 -0
  529. package/dist/utils/tlsRequest/index.js.map +1 -0
  530. package/dist/utils/tlsRequest/tlsRequest.d.ts +3 -0
  531. package/dist/utils/tlsRequest/tlsRequest.js +18 -0
  532. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -0
  533. package/dist/utils/trimPathSlash/index.d.ts +1 -0
  534. package/dist/utils/trimPathSlash/index.js +17 -0
  535. package/dist/utils/trimPathSlash/index.js.map +1 -0
  536. package/dist/utils/trimPathSlash/trimPathSlash.d.ts +6 -0
  537. package/dist/utils/trimPathSlash/trimPathSlash.js +15 -0
  538. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -0
  539. package/eslint.config.mjs +11 -0
  540. package/package.json +157 -0
  541. package/src/const/DebeziumEvent.ts +6 -0
  542. package/src/const/LogSeverity.ts +7 -0
  543. package/src/const/index.ts +5 -0
  544. package/src/const/metrics.ts +6 -0
  545. package/src/const/mime.ts +37 -0
  546. package/src/const/tokenIssuer.ts +9 -0
  547. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -0
  548. package/src/db/models/SequelizeMeta.ts +16 -0
  549. package/src/db/models/index.ts +2 -0
  550. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -0
  551. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -0
  552. package/src/entities/ElasticSearch/index.ts +2 -0
  553. package/src/entities/Endpoint/Endpoint.test.ts +337 -0
  554. package/src/entities/Endpoint/Endpoint.ts +202 -0
  555. package/src/entities/Endpoint/Endpoint.types.ts +205 -0
  556. package/src/entities/Endpoint/index.ts +2 -0
  557. package/src/entities/EngineError/EngineError.ts +28 -0
  558. package/src/entities/EngineError/EngineError.types.ts +15 -0
  559. package/src/entities/EngineError/index.ts +2 -0
  560. package/src/entities/KeySet/KeySet.test.ts +126 -0
  561. package/src/entities/KeySet/KeySet.ts +172 -0
  562. package/src/entities/KeySet/KeySet.types.ts +28 -0
  563. package/src/entities/KeySet/index.ts +2 -0
  564. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -0
  565. package/src/entities/LifecycleController/LifecycleController.ts +24 -0
  566. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -0
  567. package/src/entities/LifecycleController/index.ts +2 -0
  568. package/src/entities/Localizator/Localizator.ts +139 -0
  569. package/src/entities/Localizator/Localizator.types.ts +52 -0
  570. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -0
  571. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -0
  572. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -0
  573. package/src/entities/Localizator/index.ts +2 -0
  574. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -0
  575. package/src/entities/MessageHandler/MessageHandler.ts +72 -0
  576. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -0
  577. package/src/entities/MessageHandler/index.ts +2 -0
  578. package/src/entities/PubSub/PubSub.test.ts +297 -0
  579. package/src/entities/PubSub/PubSub.ts +202 -0
  580. package/src/entities/PubSub/PubSub.types.ts +76 -0
  581. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -0
  582. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -0
  583. package/src/entities/PubSub/handleMessage/index.ts +1 -0
  584. package/src/entities/PubSub/index.ts +2 -0
  585. package/src/entities/PushNotification/PushNotification.test.ts +35 -0
  586. package/src/entities/PushNotification/PushNotification.ts +44 -0
  587. package/src/entities/PushNotification/PushNotification.types.ts +25 -0
  588. package/src/entities/PushNotification/index.ts +2 -0
  589. package/src/entities/Redis/Redis.ts +71 -0
  590. package/src/entities/Redis/Redis.types.ts +19 -0
  591. package/src/entities/Redis/Redis.validate.ts +17 -0
  592. package/src/entities/Redis/index.ts +2 -0
  593. package/src/entities/Sequelize/Sequelize.config.ts +29 -0
  594. package/src/entities/Sequelize/Sequelize.test.ts +21 -0
  595. package/src/entities/Sequelize/Sequelize.ts +75 -0
  596. package/src/entities/Sequelize/Sequelize.types.ts +10 -0
  597. package/src/entities/Sequelize/Sequelize.validate.ts +15 -0
  598. package/src/entities/Sequelize/index.ts +2 -0
  599. package/src/entities/Server/Server.const.ts +56 -0
  600. package/src/entities/Server/Server.test.ts +272 -0
  601. package/src/entities/Server/Server.ts +445 -0
  602. package/src/entities/Server/Server.types.ts +88 -0
  603. package/src/entities/Server/index.ts +2 -0
  604. package/src/entities/SocketClient/SocketClient.test.ts +392 -0
  605. package/src/entities/SocketClient/SocketClient.ts +401 -0
  606. package/src/entities/SocketClient/SocketClient.types.ts +62 -0
  607. package/src/entities/SocketClient/index.ts +2 -0
  608. package/src/entities/SocketClient/parseMessage/index.ts +1 -0
  609. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -0
  610. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -0
  611. package/src/entities/Storage/Storage.test.ts +58 -0
  612. package/src/entities/Storage/Storage.ts +219 -0
  613. package/src/entities/Storage/Storage.types.ts +57 -0
  614. package/src/entities/Storage/index.ts +2 -0
  615. package/src/entities/ValidationError/ValidationError.ts +34 -0
  616. package/src/entities/ValidationError/index.ts +1 -0
  617. package/src/entities/WebError/WebError.test.ts +18 -0
  618. package/src/entities/WebError/WebError.ts +23 -0
  619. package/src/entities/WebError/WebError.types.ts +9 -0
  620. package/src/entities/WebError/index.ts +2 -0
  621. package/src/entities/index.ts +16 -0
  622. package/src/index.ts +4 -0
  623. package/src/metrics/debug.ts +10 -0
  624. package/src/metrics/index.ts +2 -0
  625. package/src/metrics/request.ts +17 -0
  626. package/src/middleware/authAdmin/authAdmin.test.ts +199 -0
  627. package/src/middleware/authAdmin/authAdmin.ts +114 -0
  628. package/src/middleware/authAdmin/authAdmin.types.ts +19 -0
  629. package/src/middleware/authAdmin/index.ts +2 -0
  630. package/src/middleware/authHmac/authHmac.test.ts +86 -0
  631. package/src/middleware/authHmac/authHmac.ts +56 -0
  632. package/src/middleware/authHmac/authHmac.types.ts +7 -0
  633. package/src/middleware/authHmac/index.ts +2 -0
  634. package/src/middleware/authJwt/authJwt.test.ts +54 -0
  635. package/src/middleware/authJwt/authJwt.ts +55 -0
  636. package/src/middleware/authJwt/authJwt.types.ts +25 -0
  637. package/src/middleware/authJwt/index.ts +2 -0
  638. package/src/middleware/authStatic/authStatic.test.ts +36 -0
  639. package/src/middleware/authStatic/authStatic.ts +45 -0
  640. package/src/middleware/authStatic/index.ts +1 -0
  641. package/src/middleware/authTls/authTls.test.ts +138 -0
  642. package/src/middleware/authTls/authTls.ts +106 -0
  643. package/src/middleware/authTls/authTls.types.ts +13 -0
  644. package/src/middleware/authTls/index.ts +2 -0
  645. package/src/middleware/error/error.test.ts +60 -0
  646. package/src/middleware/error/error.ts +25 -0
  647. package/src/middleware/error/index.ts +1 -0
  648. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -0
  649. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -0
  650. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -0
  651. package/src/middleware/fileUploader/fileUploader.test.ts +310 -0
  652. package/src/middleware/fileUploader/fileUploader.ts +303 -0
  653. package/src/middleware/fileUploader/fileUploader.types.ts +52 -0
  654. package/src/middleware/fileUploader/index.ts +2 -0
  655. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -0
  656. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -0
  657. package/src/middleware/fileUploader/validate/index.ts +1 -0
  658. package/src/middleware/fileUploader/validate/validate.ts +27 -0
  659. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -0
  660. package/src/middleware/fourOhFour/fourOhFour.ts +13 -0
  661. package/src/middleware/fourOhFour/index.ts +1 -0
  662. package/src/middleware/healthCheck/healthCheck.test.ts +12 -0
  663. package/src/middleware/healthCheck/healthCheck.ts +14 -0
  664. package/src/middleware/healthCheck/index.ts +1 -0
  665. package/src/middleware/index.ts +15 -0
  666. package/src/middleware/metrics/index.ts +1 -0
  667. package/src/middleware/metrics/metrics.test.ts +46 -0
  668. package/src/middleware/metrics/metrics.ts +24 -0
  669. package/src/middleware/requestMetrics/index.ts +1 -0
  670. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -0
  671. package/src/middleware/requestMetrics/requestMetrics.ts +20 -0
  672. package/src/middleware/swaggerDocs/index.ts +2 -0
  673. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -0
  674. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -0
  675. package/src/middleware/userResolver/index.ts +1 -0
  676. package/src/middleware/userResolver/userResolver.test.ts +35 -0
  677. package/src/middleware/userResolver/userResolver.ts +36 -0
  678. package/src/middleware/validate/index.ts +1 -0
  679. package/src/middleware/validate/validate.test.ts +43 -0
  680. package/src/middleware/validate/validate.ts +25 -0
  681. package/src/middleware/version/index.ts +1 -0
  682. package/src/middleware/version/version.test.ts +23 -0
  683. package/src/middleware/version/version.ts +12 -0
  684. package/src/utils/checkEnvironment/index.ts +49 -0
  685. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -0
  686. package/src/utils/createHttpServer/createHttpServer.ts +34 -0
  687. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -0
  688. package/src/utils/createHttpServer/index.ts +1 -0
  689. package/src/utils/createSortedObject/createSortedObject.ts +20 -0
  690. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -0
  691. package/src/utils/createSortedObject/index.ts +1 -0
  692. package/src/utils/dbMigration/dbMigration.test.ts +209 -0
  693. package/src/utils/dbMigration/dbMigration.ts +196 -0
  694. package/src/utils/dbMigration/dbMigration.types.ts +11 -0
  695. package/src/utils/dbMigration/index.ts +2 -0
  696. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -0
  697. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -0
  698. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +70 -0
  699. package/src/utils/envAssert/envAssert.ts +31 -0
  700. package/src/utils/envAssert/index.ts +1 -0
  701. package/src/utils/envAssert/validators/hostList.ts +17 -0
  702. package/src/utils/envAssert/validators/index.ts +5 -0
  703. package/src/utils/envAssert/validators/ipList.ts +13 -0
  704. package/src/utils/envAssert/validators/path.ts +13 -0
  705. package/src/utils/envAssert/validators/string.ts +9 -0
  706. package/src/utils/envAssert/validators/stringList.ts +13 -0
  707. package/src/utils/filter/filter.ts +17 -0
  708. package/src/utils/filter/index.ts +1 -0
  709. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -0
  710. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -0
  711. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -0
  712. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -0
  713. package/src/utils/getDynamicLink/index.ts +2 -0
  714. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -0
  715. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -0
  716. package/src/utils/hmac/checkEnv/index.ts +1 -0
  717. package/src/utils/hmac/createHmac/createHmac.ts +33 -0
  718. package/src/utils/hmac/createHmac/index.ts +1 -0
  719. package/src/utils/hmac/index.ts +4 -0
  720. package/src/utils/hmac/index.types.ts +13 -0
  721. package/src/utils/hmac/signPayload/index.ts +1 -0
  722. package/src/utils/hmac/signPayload/signPayload.ts +16 -0
  723. package/src/utils/hmac/verifySignature/index.ts +1 -0
  724. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -0
  725. package/src/utils/index.ts +26 -0
  726. package/src/utils/jwt/index.ts +2 -0
  727. package/src/utils/jwt/jwt.test.ts +41 -0
  728. package/src/utils/jwt/jwt.ts +204 -0
  729. package/src/utils/jwt/jwt.types.ts +21 -0
  730. package/src/utils/report/index.ts +3 -0
  731. package/src/utils/report/output.ts +45 -0
  732. package/src/utils/report/output.types.ts +70 -0
  733. package/src/utils/report/report.test.ts +133 -0
  734. package/src/utils/report/report.ts +134 -0
  735. package/src/utils/report/report.types.ts +13 -0
  736. package/src/utils/request/index.ts +1 -0
  737. package/src/utils/request/request.test.ts +26 -0
  738. package/src/utils/request/request.ts +48 -0
  739. package/src/utils/semverCompare/index.ts +1 -0
  740. package/src/utils/semverCompare/semverCompare.test.ts +49 -0
  741. package/src/utils/semverCompare/semverCompare.ts +60 -0
  742. package/src/utils/sendEmail/index.ts +1 -0
  743. package/src/utils/sendEmail/sendEmail.ts +27 -0
  744. package/src/utils/sendEmail/sendEmail.types.ts +7 -0
  745. package/src/utils/sendPush/index.ts +2 -0
  746. package/src/utils/sendPush/sendPush.ts +20 -0
  747. package/src/utils/sendPush/sendPush.types.ts +25 -0
  748. package/src/utils/tlsConfig/index.ts +2 -0
  749. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -0
  750. package/src/utils/tlsConfig/tlsConfig.ts +47 -0
  751. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -0
  752. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -0
  753. package/src/utils/tlsRequest/index.ts +1 -0
  754. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -0
  755. package/src/utils/tlsRequest/tlsRequest.ts +12 -0
  756. package/src/utils/trimPathSlash/index.ts +1 -0
  757. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -0
  758. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -0
  759. package/test/env.ts +56 -0
  760. package/test/factory/index.ts +8 -0
  761. package/test/factory/sequelizeMeta.ts +12 -0
  762. package/test/hooks.ts +37 -0
  763. package/test/index.ts +3 -0
  764. package/test/stub/index.ts +3 -0
  765. package/test/stub/stubLocales.ts +68 -0
  766. package/test/stub/stubPubSub.ts +7 -0
  767. package/test/stub/stubStorage.ts +77 -0
  768. package/test/stub/stubStorage.types.ts +11 -0
  769. package/test/utils/app.ts +31 -0
  770. package/test/utils/index.ts +1 -0
  771. package/tsconfig.build.json +5 -0
  772. package/tsconfig.json +32 -0
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Server = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _fs = _interopRequireDefault(require("fs"));
11
+ var _path = _interopRequireDefault(require("path"));
12
+ var _promises = require("timers/promises");
13
+ var _express = _interopRequireDefault(require("express"));
14
+ var _ws = require("ws");
15
+ var _SocketClient = require("../SocketClient");
16
+ var _Server2 = require("./Server.const");
17
+ var _Endpoint = require("../Endpoint");
18
+ var _EngineError = require("../EngineError");
19
+ var _LifecycleController = require("../LifecycleController");
20
+ var _PubSub = require("../PubSub");
21
+ var _utils = require("../../utils");
22
+ var _jwt = require("../../utils/jwt");
23
+ var _report = require("../../utils/report");
24
+ var _tlsConfig = require("../../utils/tlsConfig");
25
+ const namespace = 'engine:Server';
26
+
27
+ /** Main server class */
28
+ let Server = exports.Server = /*#__PURE__*/function () {
29
+ /** Create a server */
30
+ function Server(config) {
31
+ (0, _classCallCheck2.default)(this, Server);
32
+ /** The express application powering the main endpoints */
33
+ this.app = void 0;
34
+ /** The node HTTP(S) server, serving the main express application */
35
+ this.httpServer = void 0;
36
+ /** The express application powering the support endpoints */
37
+ this.secondaryApp = void 0;
38
+ /** The node HTTP(S) server, serving the secondary express application */
39
+ this.secondaryHttpServer = void 0;
40
+ /** List of endpoint instances that the server should handle */
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ this.endpoints = void 0;
43
+ /** Mapping of env variable name with functions that should run to check their validity */
44
+ this.checkEnvironment = void 0;
45
+ /** Middleware that should run on every request before the endpoint specific logic */
46
+ this.globalMiddleware = void 0;
47
+ /** Error middleware that should run on every request after the endpoint specific logic, but before the generic global middleware */
48
+ this.errorMiddleware = void 0;
49
+ /** Functions that should be called on server startup */
50
+ this.initCallbacks = void 0;
51
+ /** Functions that should be called on server shutdown */
52
+ this.shutdownCallbacks = void 0;
53
+ /** When set to true, this indicates that init callbacks should run synchronously in the order they are declared. By default they all run in parallel */
54
+ this.syncCallbacks = void 0;
55
+ /** Config to set regularly running jobs on the server */
56
+ this.cron = void 0;
57
+ /** Global auth related configuration */
58
+ this.auth = void 0;
59
+ /** WebSocket server instance, if configured */
60
+ this.wss = void 0;
61
+ /** Abort controller that handles signals for the server */
62
+ this.abortController = new AbortController();
63
+ this.validate(config);
64
+ (0, _report.reportDebug)({
65
+ namespace,
66
+ message: `Creating server`
67
+ });
68
+ this.endpoints = config.endpoints;
69
+ this.globalMiddleware = config.globalMiddleware ?? [];
70
+ this.errorMiddleware = config.errorMiddleware ?? [];
71
+ this.initCallbacks = config.initCallbacks ?? [];
72
+ this.shutdownCallbacks = config.shutdownCallbacks ?? [];
73
+ this.syncCallbacks = config.syncCallbacks ?? false;
74
+ this.cron = config.cron;
75
+ this.auth = {
76
+ noFetch: false,
77
+ ...config.auth
78
+ };
79
+
80
+ // The minimal environment check is different between the migration modes of execution and the regular server execution mode
81
+ // When running in migration mode, we only check that we have SQL related environment variables
82
+ this.checkEnvironment = process.env.RUN_MIGRATION === 'true' || process.env.UNDO_MIGRATION === 'true' ? {
83
+ SQL_HOST: _utils.envAssert.isHost(),
84
+ SQL_USER: _utils.envAssert.isString(),
85
+ SQL_PASSWORD: _utils.envAssert.isString(),
86
+ SQL_DB: _utils.envAssert.isString()
87
+ } : {
88
+ NODE_ENV: _utils.envAssert.isString(),
89
+ PORT: _utils.envAssert.isPort(),
90
+ SECONDARY_PORT: _utils.envAssert.isPort(),
91
+ ...config.checkEnvironment
92
+ };
93
+ (0, _utils.checkEnvironment)(this.checkEnvironment);
94
+
95
+ // Create the primary express core that serves the business logic
96
+ this.app = (0, _express.default)();
97
+ this.registerMiddleware(this.app);
98
+ this.httpServer = (0, _utils.createHttpServer)(this.app);
99
+
100
+ // Create a secondary express core that servers metrics and analytics
101
+ // This will be served on a different port, allowing to specify different firewall rules for these routes
102
+ this.secondaryApp = (0, _express.default)();
103
+ [..._Server2.secondaryMiddleware, ..._Server2.defaultErrorMiddleware].forEach(middleware => {
104
+ if (middleware) this.secondaryApp.use(middleware);
105
+ });
106
+ this.secondaryHttpServer = (0, _utils.createHttpServer)(this.secondaryApp);
107
+
108
+ // Remove the express headers
109
+ this.app.disable('x-powered-by');
110
+ this.secondaryApp.disable('x-powered-by');
111
+
112
+ // We remove all node timeout on connections and requests
113
+ // This responsibility is delegated to the front-facing load balancer
114
+ [this.httpServer, this.secondaryHttpServer].forEach(server => {
115
+ server.headersTimeout = 0;
116
+ server.keepAliveTimeout = 0;
117
+ });
118
+ if (config.webSocket) {
119
+ this.attachWebSocket(config.webSocket);
120
+ }
121
+ }
122
+
123
+ /** Start the server */
124
+ return (0, _createClass2.default)(Server, [{
125
+ key: "init",
126
+ value: async function init() {
127
+ (0, _report.reportDebug)({
128
+ namespace,
129
+ message: `Starting Server`
130
+ });
131
+ // Fetch the keys for JWT authentication
132
+ // Ignore in test environment as we do symmetrical token signing
133
+ if (process.env.NODE_ENV !== 'test' && !this.auth.noFetch) await (0, _jwt.initKeySets)();
134
+ // Run all the init callbacks
135
+ // We can either run them all 1/1 synchronously or run them all in parallel (default)
136
+ // Callback can either be direct function or an object with function and parameters attributes
137
+
138
+ if (this.syncCallbacks) {
139
+ for (const callback of this.initCallbacks) {
140
+ await this.runCallback(callback);
141
+ }
142
+ } else {
143
+ await Promise.all(this.initCallbacks.map(callback => this.runCallback(callback)));
144
+ }
145
+
146
+ // Initialize the Pub/Sub module
147
+ await _PubSub.PubSub.init();
148
+ // Run all the cronjob
149
+ if (this.cron) {
150
+ this.cron.forEach(job => {
151
+ this.runCronJob(job);
152
+ });
153
+ }
154
+
155
+ // Start listening to requests
156
+ await Promise.all([new Promise(resolve => this.httpServer.listen(process.env.PORT, () => {
157
+ resolve();
158
+ })), new Promise(resolve => this.secondaryHttpServer.listen(process.env.SECONDARY_PORT, () => {
159
+ resolve();
160
+ }))]);
161
+ (0, _report.reportInfo)({
162
+ message: 'SERVER_RUNNING',
163
+ data: {
164
+ port: process.env.PORT,
165
+ secondaryPort: process.env.SECONDARY_PORT,
166
+ nodeEnv: process.env.NODE_ENV
167
+ }
168
+ });
169
+ this.handleSignal();
170
+
171
+ // Watch TSL config files changing
172
+ this.watchTlsCaFileChange();
173
+ }
174
+
175
+ /** Graceful shutdown */
176
+ }, {
177
+ key: "shutdown",
178
+ value: async function shutdown() {
179
+ (0, _report.reportDebug)({
180
+ namespace,
181
+ message: `Shutting down Server`
182
+ });
183
+
184
+ // Stop listening to HTTP requests
185
+ await Promise.all([this.httpServer, this.secondaryHttpServer].map(server => {
186
+ // Ignore if the server was already stopped
187
+ // We have observed cases where SIGTERM was thrown multiple times
188
+ if (!server.listening) return;
189
+ const {
190
+ port
191
+ } = server.address();
192
+ server.on('close', error => {
193
+ if (error) {
194
+ (0, _report.reportError)(error);
195
+ process.exit(1);
196
+ } else {
197
+ (0, _report.reportInfo)({
198
+ message: `Stopped listening to requests on port ${port}`
199
+ });
200
+ }
201
+ });
202
+ server.close();
203
+ }));
204
+
205
+ // Close all socket connections
206
+ if (this.wss) {
207
+ // First ask then to close gracefully
208
+ this.wss.clients.forEach(socket => {
209
+ socket.close();
210
+ });
211
+ // Hard terminate all connections still open after a defined time
212
+ const socketKillTimeout = process.env.WEBSOCKET_CLOSE_TIMEOUT ? parseInt(process.env.WEBSOCKET_CLOSE_TIMEOUT) : 5000;
213
+ await new Promise(resolve => {
214
+ setTimeout(() => {
215
+ this.wss.clients.forEach(socket => {
216
+ if (socket.readyState === socket.CLOSING || socket.readyState === socket.OPEN) {
217
+ socket.terminate();
218
+ }
219
+ });
220
+ resolve();
221
+ }, socketKillTimeout);
222
+ });
223
+ }
224
+
225
+ // Run all the shutdown callback
226
+ if (this.syncCallbacks) {
227
+ for (const callback of this.shutdownCallbacks) {
228
+ await this.runCallback(callback);
229
+ }
230
+ } else {
231
+ await Promise.all(this.shutdownCallbacks.map(callback => this.runCallback(callback)));
232
+ }
233
+
234
+ // Shutdown all the running entities
235
+ await _LifecycleController.LifecycleController.shutdownRunningInstances();
236
+
237
+ // Abort all the cronjob
238
+ if (this.abortController) this.abortController.abort();
239
+
240
+ // Stop the keyset timers
241
+ (0, _jwt.shutdownKeySets)();
242
+ _Server2.shutdownSignals.forEach(signal => process.removeAllListeners(signal));
243
+ }
244
+
245
+ /** Get the express app instance of the server */
246
+ }, {
247
+ key: "getApp",
248
+ value: function getApp() {
249
+ return this.app;
250
+ }
251
+
252
+ /** Get the express app instance of the server */
253
+ }, {
254
+ key: "getSecondaryApp",
255
+ value: function getSecondaryApp() {
256
+ return this.secondaryApp;
257
+ }
258
+
259
+ /** Registers all the middleware with the express app */
260
+ }, {
261
+ key: "registerMiddleware",
262
+ value: function registerMiddleware(app) {
263
+ // Global middleware can specify a path to which they apply
264
+ [..._Server2.defaultMiddleware, ...this.globalMiddleware].forEach(middleware => {
265
+ if (typeof middleware === 'function') {
266
+ app.use(middleware);
267
+ } else {
268
+ app.use(middleware.path, middleware.middleware);
269
+ }
270
+ });
271
+ // Call the register method of each endpoint
272
+ this.endpoints.forEach(endpoint => {
273
+ endpoint.register(app);
274
+ });
275
+ // Add error middleware
276
+ [...this.errorMiddleware, ..._Server2.defaultErrorMiddleware].forEach(middleware => {
277
+ if (typeof middleware === 'function') {
278
+ app.use(middleware);
279
+ } else {
280
+ app.use(middleware.path, middleware.middleware);
281
+ }
282
+ });
283
+ }
284
+
285
+ /** Add a handler for WebSocket connections */
286
+ }, {
287
+ key: "attachWebSocket",
288
+ value: function attachWebSocket(options) {
289
+ this.wss = new _ws.Server({
290
+ ...options.server,
291
+ server: this.httpServer
292
+ }).on('connection', (webSocket, request) => {
293
+ new _SocketClient.SocketClient(webSocket, request, options.client);
294
+ }).on('error', error => {
295
+ (0, _report.reportError)(error);
296
+ });
297
+ }
298
+
299
+ /** Call shutdown if signal gets sent to the process */
300
+ }, {
301
+ key: "handleSignal",
302
+ value: function handleSignal() {
303
+ _Server2.shutdownSignals.forEach(signal => process.on(signal, () => {
304
+ (async () => {
305
+ (0, _report.reportInfo)(`Received shutdown signal [${signal}]`);
306
+ await this.shutdown();
307
+ })().catch(error => {
308
+ (0, _report.reportError)(error);
309
+ });
310
+ }));
311
+ }
312
+
313
+ /** Watch the TLS certificate change event */
314
+ }, {
315
+ key: "watchTlsCaFileChange",
316
+ value: function watchTlsCaFileChange() {
317
+ ['TLS_REQUEST_KEY', 'TLS_REQUEST_KEY_PASSPHRASE', 'TLS_REQUEST_CERT', 'TLS_REQUEST_CA', 'TLS_SERVER_KEY', 'TLS_SERVER_KEY_PASSPHRASE', 'TLS_SERVER_CERT', 'TLS_CA'].forEach(key => {
318
+ const file = process.env[key];
319
+ if (file) _fs.default.watch(_path.default.resolve(file), event => {
320
+ if (event !== 'change') return;
321
+ (0, _report.reportInfo)(`Reloading TLS config [${file} changed]`);
322
+ (0, _tlsConfig.loadTlsConfig)();
323
+ this.httpServer.setSecureContext(_tlsConfig.tlsConfig);
324
+ });
325
+ });
326
+ }
327
+
328
+ /** Executes a recurring job */
329
+ }, {
330
+ key: "runCronJob",
331
+ value: function runCronJob(job) {
332
+ (async () => {
333
+ (0, _report.reportInfo)({
334
+ message: `Starting scheduled job "${job.handler.name}"`
335
+ });
336
+ try {
337
+ await job.handler();
338
+ (0, _report.reportInfo)({
339
+ message: `Job "${job.handler.name}" finished, starting again in ${job.interval} seconds`
340
+ });
341
+ await (0, _promises.setTimeout)(job.interval * 1000, undefined, {
342
+ signal: this.abortController.signal
343
+ });
344
+ this.runCronJob(job);
345
+ } catch (error) {
346
+ if (error instanceof Error && error.name === 'AbortError') {
347
+ (0, _report.reportDebug)({
348
+ namespace,
349
+ message: `Scheduled job "${job.handler?.name}" has been aborted`
350
+ });
351
+ } else {
352
+ throw error;
353
+ }
354
+ }
355
+ })().catch(error => {
356
+ (0, _report.reportError)(error);
357
+ });
358
+ }
359
+
360
+ /** Run a shutdown/init callback */
361
+ }, {
362
+ key: "runCallback",
363
+ value: function runCallback(callback) {
364
+ return typeof callback === 'function' ? callback() : callback.function.apply(null, callback.parameters ?? []);
365
+ }
366
+
367
+ /**
368
+ * Validate the Server constructor configuration
369
+ */
370
+ }, {
371
+ key: "validate",
372
+ value: function validate(config) {
373
+ if (!config.endpoints || config.endpoints.some(endpoint => !(endpoint instanceof _Endpoint.Endpoint))) throw new _EngineError.EngineError('Server endpoints should be declared and all be Endpoint instances');
374
+ if (config.checkEnvironment && Object.values(config.checkEnvironment).some(validator => typeof validator !== 'function')) throw new _EngineError.EngineError('Some of the environment checks are not valid functions');
375
+ if (config.initCallbacks && (!(config.initCallbacks instanceof Array) || config.initCallbacks.some(callback => !(typeof callback === 'function' || typeof callback?.function === 'function')))) throw new _EngineError.EngineError('Init callbacks is not a list of functions');
376
+ if (config.shutdownCallbacks && (!(config.shutdownCallbacks instanceof Array) || config.shutdownCallbacks.some(callback => !(typeof callback === 'function' || typeof callback?.function === 'function')))) throw new _EngineError.EngineError('Shutdown callbacks is not a list of functions');
377
+ }
378
+ }]);
379
+ }();
380
+ //# sourceMappingURL=Server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Server.js","names":["_fs","_interopRequireDefault","require","_path","_promises","_express","_ws","_SocketClient","_Server2","_Endpoint","_EngineError","_LifecycleController","_PubSub","_utils","_jwt","_report","_tlsConfig","namespace","Server","exports","config","_classCallCheck2","default","app","httpServer","secondaryApp","secondaryHttpServer","endpoints","checkEnvironment","globalMiddleware","errorMiddleware","initCallbacks","shutdownCallbacks","syncCallbacks","cron","auth","wss","abortController","AbortController","validate","reportDebug","message","noFetch","process","env","RUN_MIGRATION","UNDO_MIGRATION","SQL_HOST","envAssert","isHost","SQL_USER","isString","SQL_PASSWORD","SQL_DB","NODE_ENV","PORT","isPort","SECONDARY_PORT","express","registerMiddleware","createHttpServer","secondaryMiddleware","defaultErrorMiddleware","forEach","middleware","use","disable","server","headersTimeout","keepAliveTimeout","webSocket","attachWebSocket","_createClass2","key","value","init","initKeySets","callback","runCallback","Promise","all","map","PubSub","job","runCronJob","resolve","listen","reportInfo","data","port","secondaryPort","nodeEnv","handleSignal","watchTlsCaFileChange","shutdown","listening","address","on","error","reportError","exit","close","clients","socket","socketKillTimeout","WEBSOCKET_CLOSE_TIMEOUT","parseInt","setTimeout","readyState","CLOSING","OPEN","terminate","LifecycleController","shutdownRunningInstances","abort","shutdownKeySets","shutdownSignals","signal","removeAllListeners","getApp","getSecondaryApp","defaultMiddleware","path","endpoint","register","options","WebSocketServer","request","SocketClient","client","catch","file","fs","watch","event","loadTlsConfig","setSecureContext","tlsConfig","handler","name","interval","setTimeoutPromise","undefined","Error","function","apply","parameters","some","Endpoint","EngineError","Object","values","validator","Array"],"sources":["../../../src/entities/Server/Server.ts"],"sourcesContent":["import fs from 'fs';\nimport http from 'http';\nimport https from 'https';\nimport { AddressInfo } from 'net';\nimport path from 'path';\nimport { setTimeout as setTimeoutPromise } from 'timers/promises';\nimport { ValidatorSpec } from 'envalid';\nimport express, { Application } from 'express';\nimport { Server as WebSocketServer } from 'ws';\nimport { SocketClient } from '../SocketClient';\nimport {\n defaultMiddleware,\n defaultErrorMiddleware,\n secondaryMiddleware,\n shutdownSignals\n} from './Server.const';\nimport {\n ServerOptions,\n ServerCronJon,\n ServerAuthConfig,\n ServerWebSocketConfig,\n ServerGlobalMiddleware,\n ServerErrorMiddleWare,\n ServerCallback\n} from './Server.types';\nimport { Endpoint } from 'entities/Endpoint';\nimport { EngineError } from 'entities/EngineError';\nimport { LifecycleController } from 'entities/LifecycleController';\nimport { PubSub } from 'entities/PubSub';\nimport { checkEnvironment, envAssert, createHttpServer } from 'utils';\nimport { initKeySets, shutdownKeySets } from 'utils/jwt';\nimport { reportInfo, reportError, reportDebug } from 'utils/report';\nimport { tlsConfig, loadTlsConfig, TlsConfig } from 'utils/tlsConfig';\n\nconst namespace = 'engine:Server';\n\n/** Main server class */\nexport class Server {\n /** The express application powering the main endpoints */\n private app: Application;\n /** The node HTTP(S) server, serving the main express application */\n private httpServer: http.Server | https.Server;\n /** The express application powering the support endpoints */\n private secondaryApp: Application;\n /** The node HTTP(S) server, serving the secondary express application */\n private secondaryHttpServer: http.Server | https.Server;\n /** List of endpoint instances that the server should handle */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private endpoints: Array<Endpoint<any>>;\n /** Mapping of env variable name with functions that should run to check their validity */\n private checkEnvironment: Record<string, ValidatorSpec<unknown>>;\n /** Middleware that should run on every request before the endpoint specific logic */\n private globalMiddleware: Array<ServerGlobalMiddleware>;\n /** Error middleware that should run on every request after the endpoint specific logic, but before the generic global middleware */\n private errorMiddleware: Array<\n ServerGlobalMiddleware | ServerErrorMiddleWare\n >;\n /** Functions that should be called on server startup */\n private initCallbacks: Array<ServerCallback>;\n /** Functions that should be called on server shutdown */\n private shutdownCallbacks: Array<ServerCallback>;\n /** When set to true, this indicates that init callbacks should run synchronously in the order they are declared. By default they all run in parallel */\n private syncCallbacks: boolean;\n /** Config to set regularly running jobs on the server */\n private cron?: Array<ServerCronJon>;\n /** Global auth related configuration */\n private auth: ServerAuthConfig;\n /** WebSocket server instance, if configured */\n private wss?: WebSocketServer;\n /** Abort controller that handles signals for the server */\n private abortController = new AbortController();\n\n /** Create a server */\n public constructor(config: ServerOptions) {\n this.validate(config);\n\n reportDebug({\n namespace,\n message: `Creating server`\n });\n\n this.endpoints = config.endpoints;\n this.globalMiddleware = config.globalMiddleware ?? [];\n this.errorMiddleware = config.errorMiddleware ?? [];\n this.initCallbacks = config.initCallbacks ?? [];\n this.shutdownCallbacks = config.shutdownCallbacks ?? [];\n this.syncCallbacks = config.syncCallbacks ?? false;\n this.cron = config.cron;\n this.auth = { noFetch: false, ...config.auth };\n\n // The minimal environment check is different between the migration modes of execution and the regular server execution mode\n // When running in migration mode, we only check that we have SQL related environment variables\n this.checkEnvironment =\n process.env.RUN_MIGRATION === 'true' ||\n process.env.UNDO_MIGRATION === 'true'\n ? {\n SQL_HOST: envAssert.isHost(),\n SQL_USER: envAssert.isString(),\n SQL_PASSWORD: envAssert.isString(),\n SQL_DB: envAssert.isString()\n }\n : {\n NODE_ENV: envAssert.isString(),\n PORT: envAssert.isPort(),\n SECONDARY_PORT: envAssert.isPort(),\n ...config.checkEnvironment\n };\n\n checkEnvironment(this.checkEnvironment);\n\n // Create the primary express core that serves the business logic\n this.app = express();\n this.registerMiddleware(this.app);\n this.httpServer = createHttpServer(this.app);\n\n // Create a secondary express core that servers metrics and analytics\n // This will be served on a different port, allowing to specify different firewall rules for these routes\n this.secondaryApp = express();\n [...secondaryMiddleware, ...defaultErrorMiddleware].forEach(\n (middleware) => {\n if (middleware) this.secondaryApp.use(middleware);\n }\n );\n this.secondaryHttpServer = createHttpServer(this.secondaryApp);\n\n // Remove the express headers\n this.app.disable('x-powered-by');\n this.secondaryApp.disable('x-powered-by');\n\n // We remove all node timeout on connections and requests\n // This responsibility is delegated to the front-facing load balancer\n [this.httpServer, this.secondaryHttpServer].forEach((server) => {\n server.headersTimeout = 0;\n server.keepAliveTimeout = 0;\n });\n\n if (config.webSocket) {\n this.attachWebSocket(config.webSocket);\n }\n }\n\n /** Start the server */\n public async init(): Promise<void> {\n reportDebug({ namespace, message: `Starting Server` });\n // Fetch the keys for JWT authentication\n // Ignore in test environment as we do symmetrical token signing\n if (process.env.NODE_ENV !== 'test' && !this.auth.noFetch)\n await initKeySets();\n // Run all the init callbacks\n // We can either run them all 1/1 synchronously or run them all in parallel (default)\n // Callback can either be direct function or an object with function and parameters attributes\n\n if (this.syncCallbacks) {\n for (const callback of this.initCallbacks) {\n await this.runCallback(callback);\n }\n } else {\n await Promise.all(\n this.initCallbacks.map((callback) => this.runCallback(callback))\n );\n }\n\n // Initialize the Pub/Sub module\n await PubSub.init();\n // Run all the cronjob\n if (this.cron) {\n this.cron.forEach((job) => {\n this.runCronJob(job);\n });\n }\n\n // Start listening to requests\n await Promise.all([\n new Promise<void>((resolve) =>\n this.httpServer.listen(process.env.PORT, () => {\n resolve();\n })\n ),\n new Promise<void>((resolve) =>\n this.secondaryHttpServer.listen(process.env.SECONDARY_PORT, () => {\n resolve();\n })\n )\n ]);\n reportInfo({\n message: 'SERVER_RUNNING',\n data: {\n port: process.env.PORT,\n secondaryPort: process.env.SECONDARY_PORT,\n nodeEnv: process.env.NODE_ENV\n }\n });\n\n this.handleSignal();\n\n // Watch TSL config files changing\n this.watchTlsCaFileChange();\n }\n\n /** Graceful shutdown */\n public async shutdown(): Promise<void> {\n reportDebug({ namespace, message: `Shutting down Server` });\n\n // Stop listening to HTTP requests\n await Promise.all(\n [this.httpServer, this.secondaryHttpServer].map((server) => {\n // Ignore if the server was already stopped\n // We have observed cases where SIGTERM was thrown multiple times\n if (!server.listening) return;\n const { port } = server.address() as AddressInfo;\n server.on('close', (error: unknown) => {\n if (error) {\n reportError(error);\n process.exit(1);\n } else {\n reportInfo({\n message: `Stopped listening to requests on port ${port}`\n });\n }\n });\n server.close();\n })\n );\n\n // Close all socket connections\n if (this.wss) {\n // First ask then to close gracefully\n this.wss.clients.forEach((socket) => {\n socket.close();\n });\n // Hard terminate all connections still open after a defined time\n const socketKillTimeout = process.env.WEBSOCKET_CLOSE_TIMEOUT\n ? parseInt(process.env.WEBSOCKET_CLOSE_TIMEOUT)\n : 5000;\n await new Promise<void>((resolve) => {\n setTimeout(() => {\n (this.wss as WebSocketServer).clients.forEach((socket) => {\n if (\n socket.readyState === socket.CLOSING ||\n socket.readyState === socket.OPEN\n ) {\n socket.terminate();\n }\n });\n resolve();\n }, socketKillTimeout);\n });\n }\n\n // Run all the shutdown callback\n if (this.syncCallbacks) {\n for (const callback of this.shutdownCallbacks) {\n await this.runCallback(callback);\n }\n } else {\n await Promise.all(\n this.shutdownCallbacks.map((callback) => this.runCallback(callback))\n );\n }\n\n // Shutdown all the running entities\n await LifecycleController.shutdownRunningInstances();\n\n // Abort all the cronjob\n if (this.abortController) this.abortController.abort();\n\n // Stop the keyset timers\n shutdownKeySets();\n\n shutdownSignals.forEach((signal) => process.removeAllListeners(signal));\n }\n\n /** Get the express app instance of the server */\n public getApp(): Application {\n return this.app;\n }\n\n /** Get the express app instance of the server */\n public getSecondaryApp(): Application {\n return this.secondaryApp;\n }\n\n /** Registers all the middleware with the express app */\n private registerMiddleware(app: Application): void {\n // Global middleware can specify a path to which they apply\n [...defaultMiddleware, ...this.globalMiddleware].forEach((middleware) => {\n if (typeof middleware === 'function') {\n app.use(middleware);\n } else {\n app.use(middleware.path, middleware.middleware);\n }\n });\n // Call the register method of each endpoint\n this.endpoints.forEach((endpoint) => {\n endpoint.register(app);\n });\n // Add error middleware\n [...this.errorMiddleware, ...defaultErrorMiddleware].forEach(\n (middleware) => {\n if (typeof middleware === 'function') {\n app.use(middleware);\n } else {\n app.use(middleware.path, middleware.middleware);\n }\n }\n );\n }\n\n /** Add a handler for WebSocket connections */\n private attachWebSocket(options: ServerWebSocketConfig): void {\n this.wss = new WebSocketServer({\n ...options.server,\n server: this.httpServer\n })\n .on('connection', (webSocket, request) => {\n new SocketClient(webSocket, request, options.client);\n })\n .on('error', (error) => {\n reportError(error);\n });\n }\n\n /** Call shutdown if signal gets sent to the process */\n private handleSignal(): void {\n shutdownSignals.forEach((signal) =>\n process.on(signal, () => {\n (async (): Promise<void> => {\n reportInfo(`Received shutdown signal [${signal}]`);\n await this.shutdown();\n })().catch((error) => {\n reportError(error);\n });\n })\n );\n }\n\n /** Watch the TLS certificate change event */\n private watchTlsCaFileChange(): void {\n [\n 'TLS_REQUEST_KEY',\n 'TLS_REQUEST_KEY_PASSPHRASE',\n 'TLS_REQUEST_CERT',\n 'TLS_REQUEST_CA',\n 'TLS_SERVER_KEY',\n 'TLS_SERVER_KEY_PASSPHRASE',\n 'TLS_SERVER_CERT',\n 'TLS_CA'\n ].forEach((key) => {\n const file = process.env[key];\n if (file)\n fs.watch(path.resolve(file), (event) => {\n if (event !== 'change') return;\n reportInfo(`Reloading TLS config [${file} changed]`);\n loadTlsConfig();\n (this.httpServer as https.Server).setSecureContext(\n tlsConfig as TlsConfig\n );\n });\n });\n }\n\n /** Executes a recurring job */\n private runCronJob(job: ServerCronJon): void {\n (async (): Promise<void> => {\n reportInfo({ message: `Starting scheduled job \"${job.handler.name}\"` });\n try {\n await job.handler();\n reportInfo({\n message: `Job \"${job.handler.name}\" finished, starting again in ${job.interval} seconds`\n });\n await setTimeoutPromise(job.interval * 1000, undefined, {\n signal: this.abortController.signal\n });\n this.runCronJob(job);\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n reportDebug({\n namespace,\n message: `Scheduled job \"${job.handler?.name}\" has been aborted`\n });\n } else {\n throw error;\n }\n }\n })().catch((error) => {\n reportError(error);\n });\n }\n\n /** Run a shutdown/init callback */\n private runCallback(callback: ServerCallback): unknown {\n return typeof callback === 'function'\n ? callback()\n : callback.function.apply(null, callback.parameters ?? []);\n }\n\n /**\n * Validate the Server constructor configuration\n */\n private validate(config: ServerOptions): void {\n if (\n !config.endpoints ||\n config.endpoints.some((endpoint) => !(endpoint instanceof Endpoint))\n )\n throw new EngineError(\n 'Server endpoints should be declared and all be Endpoint instances'\n );\n\n if (\n config.checkEnvironment &&\n Object.values(config.checkEnvironment).some(\n (validator) => typeof validator !== 'function'\n )\n )\n throw new EngineError(\n 'Some of the environment checks are not valid functions'\n );\n\n if (\n config.initCallbacks &&\n (!(config.initCallbacks instanceof Array) ||\n config.initCallbacks.some(\n (callback) =>\n !(\n typeof callback === 'function' ||\n typeof callback?.function === 'function'\n )\n ))\n )\n throw new EngineError('Init callbacks is not a list of functions');\n\n if (\n config.shutdownCallbacks &&\n (!(config.shutdownCallbacks instanceof Array) ||\n config.shutdownCallbacks.some(\n (callback) =>\n !(\n typeof callback === 'function' ||\n typeof callback?.function === 'function'\n )\n ))\n )\n throw new EngineError('Shutdown callbacks is not a list of functions');\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ import { ValidatorSpec } from 'envalid';
2
+ import { ErrorRequestHandler, RequestHandler } from 'express';
3
+ import { ServerOptions as WebSocketServerOptions } from 'ws';
4
+ import { Endpoint } from '../../entities/Endpoint';
5
+ import { SocketClientOptions } from '../../entities/SocketClient';
6
+ /** Options to create a server */
7
+ export interface ServerOptions {
8
+ /** List of endpoint instances that the server should handle */
9
+ endpoints: Array<Endpoint<any>>;
10
+ /** Mapping of env variable name with functions that should run to check their validity */
11
+ checkEnvironment?: Record<string, ValidatorSpec<unknown>>;
12
+ /** Middleware that should run on every request before the endpoint specific logic */
13
+ globalMiddleware?: Array<ServerGlobalMiddleware>;
14
+ /** Error middleware that should run on every request after the endpoint specific logic, but before the generic global middleware */
15
+ errorMiddleware?: Array<ServerGlobalMiddleware | ServerErrorMiddleWare>;
16
+ /** Functions that should be called on server startup */
17
+ initCallbacks?: Array<ServerCallback>;
18
+ /** Functions that should be called on server shutdown */
19
+ shutdownCallbacks?: Array<ServerCallback>;
20
+ /** When set to true, this indicates that init callbacks should run synchronously in the order they are declared. By default they all run in parallel */
21
+ syncCallbacks?: boolean;
22
+ /** Config to set regularly running jobs on the server */
23
+ cron?: Array<ServerCronJon>;
24
+ /** Global auth related configuration */
25
+ auth?: ServerAuthConfig;
26
+ /** Configuration to enable webSocket connections to the server */
27
+ webSocket?: ServerWebSocketConfig;
28
+ }
29
+ /** Options for a CRON task on the server */
30
+ export interface ServerCronJon {
31
+ /** Function that is called when the job needs to run */
32
+ handler: () => unknown;
33
+ /** Interval (in seconds) between each job execution. The interval starts after the previous execution finished */
34
+ interval: number;
35
+ /** When this is set, the job is only run on the instance that is that has been elected leader of the service */
36
+ leaderOnly?: boolean;
37
+ }
38
+ /** Common server authentication related config */
39
+ export interface ServerAuthConfig {
40
+ /** Do not fetch JWT authentication parameters, this should be used on servers that do not receive public requests and therefore do not need access to the authentication service */
41
+ noFetch?: boolean;
42
+ }
43
+ /** Configuration for WebSocket on this server */
44
+ export interface ServerWebSocketConfig {
45
+ /** Options to pass to create the webSocket server */
46
+ server: WebSocketServerOptions;
47
+ /** Options to pass when creating socket client instances */
48
+ client: SocketClientOptions;
49
+ }
50
+ /** Middleware function definition with path */
51
+ export interface ServerObjectGlobalMiddleware {
52
+ /** Path on which the middleware is used */
53
+ path: string;
54
+ /** Middleware function */
55
+ middleware: RequestHandler;
56
+ }
57
+ export type ServerGlobalMiddleware = RequestHandler | ServerObjectGlobalMiddleware;
58
+ /** Error middleware function definition with path */
59
+ export interface ServerObjectErrorMiddleware {
60
+ /** Path on which the middleware is used */
61
+ path: string;
62
+ /** Middleware function */
63
+ middleware: ErrorRequestHandler;
64
+ }
65
+ export type ServerErrorMiddleWare = ErrorRequestHandler | ServerObjectErrorMiddleware;
66
+ type ServerFunctionCallback = (...args: Array<unknown>) => unknown;
67
+ /** Callback definition with parameters */
68
+ interface ServerObjectCallback {
69
+ /** Callback function */
70
+ function: ServerFunctionCallback;
71
+ /** Parameters to pass to the callback function */
72
+ parameters?: Parameters<ServerFunctionCallback>;
73
+ }
74
+ export type ServerCallback = ServerFunctionCallback | ServerObjectCallback;
75
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Server.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Server.types.js","names":[],"sources":["../../../src/entities/Server/Server.types.ts"],"sourcesContent":["import { ValidatorSpec } from 'envalid';\nimport { ErrorRequestHandler, RequestHandler } from 'express';\nimport { ServerOptions as WebSocketServerOptions } from 'ws';\nimport { Endpoint } from 'entities/Endpoint';\nimport { SocketClientOptions } from 'entities/SocketClient';\n\n/** Options to create a server */\nexport interface ServerOptions {\n /** List of endpoint instances that the server should handle */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n endpoints: Array<Endpoint<any>>;\n /** Mapping of env variable name with functions that should run to check their validity */\n checkEnvironment?: Record<string, ValidatorSpec<unknown>>;\n /** Middleware that should run on every request before the endpoint specific logic */\n globalMiddleware?: Array<ServerGlobalMiddleware>;\n /** Error middleware that should run on every request after the endpoint specific logic, but before the generic global middleware */\n errorMiddleware?: Array<ServerGlobalMiddleware | ServerErrorMiddleWare>;\n /** Functions that should be called on server startup */\n initCallbacks?: Array<ServerCallback>;\n /** Functions that should be called on server shutdown */\n shutdownCallbacks?: Array<ServerCallback>;\n /** When set to true, this indicates that init callbacks should run synchronously in the order they are declared. By default they all run in parallel */\n syncCallbacks?: boolean;\n /** Config to set regularly running jobs on the server */\n cron?: Array<ServerCronJon>;\n /** Global auth related configuration */\n auth?: ServerAuthConfig;\n /** Configuration to enable webSocket connections to the server */\n webSocket?: ServerWebSocketConfig;\n}\n\n/** Options for a CRON task on the server */\nexport interface ServerCronJon {\n /** Function that is called when the job needs to run */\n handler: () => unknown;\n /** Interval (in seconds) between each job execution. The interval starts after the previous execution finished */\n interval: number;\n /** When this is set, the job is only run on the instance that is that has been elected leader of the service */\n leaderOnly?: boolean;\n}\n\n/** Common server authentication related config */\nexport interface ServerAuthConfig {\n /** Do not fetch JWT authentication parameters, this should be used on servers that do not receive public requests and therefore do not need access to the authentication service */\n noFetch?: boolean;\n}\n\n/** Configuration for WebSocket on this server */\nexport interface ServerWebSocketConfig {\n /** Options to pass to create the webSocket server */\n server: WebSocketServerOptions;\n /** Options to pass when creating socket client instances */\n client: SocketClientOptions;\n}\n\n/** Middleware function definition with path */\nexport interface ServerObjectGlobalMiddleware {\n /** Path on which the middleware is used */\n path: string;\n /** Middleware function */\n middleware: RequestHandler;\n}\nexport type ServerGlobalMiddleware =\n | RequestHandler\n | ServerObjectGlobalMiddleware;\n\n/** Error middleware function definition with path */\nexport interface ServerObjectErrorMiddleware {\n /** Path on which the middleware is used */\n path: string;\n /** Middleware function */\n middleware: ErrorRequestHandler;\n}\nexport type ServerErrorMiddleWare =\n | ErrorRequestHandler\n | ServerObjectErrorMiddleware;\n\ntype ServerFunctionCallback = (...args: Array<unknown>) => unknown;\n\n/** Callback definition with parameters */\ninterface ServerObjectCallback {\n /** Callback function */\n function: ServerFunctionCallback;\n /** Parameters to pass to the callback function */\n parameters?: Parameters<ServerFunctionCallback>;\n}\n\nexport type ServerCallback = ServerFunctionCallback | ServerObjectCallback;\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from './Server';
2
+ export * from './Server.types';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _Server = require("./Server");
7
+ Object.keys(_Server).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _Server[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _Server[key];
14
+ }
15
+ });
16
+ });
17
+ var _Server2 = require("./Server.types");
18
+ Object.keys(_Server2).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _Server2[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _Server2[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_Server","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_Server2"],"sources":["../../../src/entities/Server/index.ts"],"sourcesContent":["export * from './Server';\nexport * from './Server.types';\n"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,QAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,QAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,QAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,QAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ import { IncomingMessage } from 'http';
2
+ import WS from 'ws';
3
+ import { SocketClientOptions, SocketClientSendMessageOptions, SocketClientList, SocketUser } from './SocketClient.types';
4
+ /**
5
+ * Class where each instance represents a client connected through web-sockets
6
+ */
7
+ export declare class SocketClient {
8
+ /** Mapping of all the connected socket clients */
9
+ private static socketClients;
10
+ /** Unique identifier of the client */
11
+ readonly id: string;
12
+ /** Date at which the client connection was established */
13
+ readonly establishedAt: Date;
14
+ /** WS instance of the client connection */
15
+ private ws;
16
+ /** List of message handlers that are registered with the client */
17
+ private handlers;
18
+ /** Callback function that are called when the client is created */
19
+ private initCallbacks;
20
+ /** Callback function that are called when the client successfully authenticates */
21
+ private authCallbacks;
22
+ /** Callback function that are called when the client connection is terminated */
23
+ private shutdownCallbacks;
24
+ /** Authentication status of the client */
25
+ private authenticated;
26
+ /** Timer used to track when to send authentication renewal reminder to the client */
27
+ private authRenewTimer;
28
+ /** Timers used to track the time at which a user losses authentication */
29
+ private authExpireTimer;
30
+ /** ID of the user that is authenticated */
31
+ private userId;
32
+ /** ID of the device with which the client authenticated */
33
+ private deviceId;
34
+ /** Id of the token with which the client authenticated */
35
+ private tokenId;
36
+ /** Audience claims that were in the latest authentication token used by the client */
37
+ private audience;
38
+ /** Status tracking variable used to check the liveness of connections */
39
+ private isAlive;
40
+ /** Timer used to track interval between client pinging */
41
+ private pingInterval;
42
+ /**
43
+ * Create a WS client
44
+ */
45
+ constructor(webSocket: WS, request: IncomingMessage, options: SocketClientOptions);
46
+ /** Get the list of all connected clients indexed by ID */
47
+ static getSocketClients(): SocketClientList;
48
+ /** Get a client by his ID */
49
+ static getSocketClient(id: string): SocketClient | undefined;
50
+ /**
51
+ * Send a message to the client
52
+ */
53
+ sendMessage(type: string, payload?: unknown, options?: SocketClientSendMessageOptions): void;
54
+ /** Get the client authentication status */
55
+ isAuthenticated(): boolean;
56
+ /** Fetch data on the user if he is authenticated */
57
+ getUser(): SocketUser | undefined;
58
+ /** Process an incoming message */
59
+ private handleMessage;
60
+ /**
61
+ * Process an authentication request
62
+ * @param {String} message - Authentication message
63
+ */
64
+ private authenticate;
65
+ /** */
66
+ private clearTimeouts;
67
+ /**
68
+ * Fetch the user's data and attach it to the connection for new connections. For existing connections, it checks that the authentication is done on the same user.
69
+ */
70
+ private setUserData;
71
+ /**
72
+ * Properly return errors to clients
73
+ */
74
+ private handleError;
75
+ /**
76
+ * Process a socket close event
77
+ */
78
+ private handleClose;
79
+ }