node-server-engine 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.env.example +193 -193
  2. package/.mocharc.js +13 -13
  3. package/.nycrc +18 -18
  4. package/.prettierrc +7 -7
  5. package/Dockerfile +30 -30
  6. package/README.md +991 -1025
  7. package/babel.config.json +35 -35
  8. package/dist/const/DebeziumEvent.js.map +1 -1
  9. package/dist/const/LogSeverity.js.map +1 -1
  10. package/dist/const/index.js.map +1 -1
  11. package/dist/const/metrics.js.map +1 -1
  12. package/dist/const/mime.js.map +1 -1
  13. package/dist/const/tokenIssuer.js.map +1 -1
  14. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js.map +1 -1
  15. package/dist/db/models/SequelizeMeta.js.map +1 -1
  16. package/dist/db/models/index.js.map +1 -1
  17. package/dist/entities/ElasticSearch/ElasticSearch.js +7 -7
  18. package/dist/entities/ElasticSearch/ElasticSearch.js.map +1 -1
  19. package/dist/entities/ElasticSearch/ElasticSearch.types.js.map +1 -1
  20. package/dist/entities/ElasticSearch/index.js.map +1 -1
  21. package/dist/entities/Endpoint/Endpoint.js +8 -8
  22. package/dist/entities/Endpoint/Endpoint.js.map +1 -1
  23. package/dist/entities/Endpoint/Endpoint.types.js.map +1 -1
  24. package/dist/entities/Endpoint/index.js.map +1 -1
  25. package/dist/entities/EngineError/EngineError.js +2 -2
  26. package/dist/entities/EngineError/EngineError.js.map +1 -1
  27. package/dist/entities/EngineError/EngineError.types.js.map +1 -1
  28. package/dist/entities/EngineError/index.js.map +1 -1
  29. package/dist/entities/KeySet/KeySet.js +3 -3
  30. package/dist/entities/KeySet/KeySet.js.map +1 -1
  31. package/dist/entities/KeySet/KeySet.types.js.map +1 -1
  32. package/dist/entities/KeySet/index.js.map +1 -1
  33. package/dist/entities/LifecycleController/LifecycleController.js.map +1 -1
  34. package/dist/entities/LifecycleController/LifecycleController.types.js.map +1 -1
  35. package/dist/entities/LifecycleController/index.js.map +1 -1
  36. package/dist/entities/Localizator/Localizator.js +7 -7
  37. package/dist/entities/Localizator/Localizator.js.map +1 -1
  38. package/dist/entities/Localizator/Localizator.types.js.map +1 -1
  39. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js.map +1 -1
  40. package/dist/entities/Localizator/guessNamingConvention/index.js.map +1 -1
  41. package/dist/entities/Localizator/index.js.map +1 -1
  42. package/dist/entities/MessageHandler/MessageHandler.js +2 -2
  43. package/dist/entities/MessageHandler/MessageHandler.js.map +1 -1
  44. package/dist/entities/MessageHandler/MessageHandler.types.js.map +1 -1
  45. package/dist/entities/MessageHandler/index.js.map +1 -1
  46. package/dist/entities/PubSub/PubSub.js +25 -25
  47. package/dist/entities/PubSub/PubSub.js.map +1 -1
  48. package/dist/entities/PubSub/PubSub.types.js.map +1 -1
  49. package/dist/entities/PubSub/handleMessage/handleMessage.js +6 -6
  50. package/dist/entities/PubSub/handleMessage/handleMessage.js.map +1 -1
  51. package/dist/entities/PubSub/handleMessage/index.js.map +1 -1
  52. package/dist/entities/PubSub/index.js.map +1 -1
  53. package/dist/entities/PushNotification/PushNotification.js +4 -4
  54. package/dist/entities/PushNotification/PushNotification.js.map +1 -1
  55. package/dist/entities/PushNotification/PushNotification.types.js.map +1 -1
  56. package/dist/entities/PushNotification/index.js.map +1 -1
  57. package/dist/entities/Redis/Redis.js +8 -8
  58. package/dist/entities/Redis/Redis.js.map +1 -1
  59. package/dist/entities/Redis/Redis.types.js.map +1 -1
  60. package/dist/entities/Redis/Redis.validate.js +2 -2
  61. package/dist/entities/Redis/Redis.validate.js.map +1 -1
  62. package/dist/entities/Redis/index.js.map +1 -1
  63. package/dist/entities/Sequelize/Sequelize.config.js +42 -2
  64. package/dist/entities/Sequelize/Sequelize.config.js.map +1 -1
  65. package/dist/entities/Sequelize/Sequelize.js +3 -3
  66. package/dist/entities/Sequelize/Sequelize.js.map +1 -1
  67. package/dist/entities/Sequelize/Sequelize.types.js.map +1 -1
  68. package/dist/entities/Sequelize/Sequelize.validate.js +2 -2
  69. package/dist/entities/Sequelize/Sequelize.validate.js.map +1 -1
  70. package/dist/entities/Sequelize/index.js.map +1 -1
  71. package/dist/entities/Server/Server.const.js.map +1 -1
  72. package/dist/entities/Server/Server.js +2 -2
  73. package/dist/entities/Server/Server.js.map +1 -1
  74. package/dist/entities/Server/Server.types.js.map +1 -1
  75. package/dist/entities/Server/index.js.map +1 -1
  76. package/dist/entities/SocketClient/SocketClient.js +15 -15
  77. package/dist/entities/SocketClient/SocketClient.js.map +1 -1
  78. package/dist/entities/SocketClient/SocketClient.types.js.map +1 -1
  79. package/dist/entities/SocketClient/index.js.map +1 -1
  80. package/dist/entities/SocketClient/parseMessage/index.js.map +1 -1
  81. package/dist/entities/SocketClient/parseMessage/parseMessage.js +2 -2
  82. package/dist/entities/SocketClient/parseMessage/parseMessage.js.map +1 -1
  83. package/dist/entities/Storage/Storage.js +20 -20
  84. package/dist/entities/Storage/Storage.js.map +1 -1
  85. package/dist/entities/Storage/Storage.types.js.map +1 -1
  86. package/dist/entities/Storage/index.js.map +1 -1
  87. package/dist/entities/ValidationError/ValidationError.js.map +1 -1
  88. package/dist/entities/ValidationError/index.js.map +1 -1
  89. package/dist/entities/WebError/WebError.js +4 -4
  90. package/dist/entities/WebError/WebError.js.map +1 -1
  91. package/dist/entities/WebError/WebError.types.js.map +1 -1
  92. package/dist/entities/WebError/index.js.map +1 -1
  93. package/dist/entities/index.js.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/metrics/debug.js.map +1 -1
  96. package/dist/metrics/index.js.map +1 -1
  97. package/dist/metrics/request.js.map +1 -1
  98. package/dist/middleware/authAdmin/authAdmin.js.map +1 -1
  99. package/dist/middleware/authAdmin/authAdmin.types.js.map +1 -1
  100. package/dist/middleware/authAdmin/index.js.map +1 -1
  101. package/dist/middleware/authHmac/authHmac.js.map +1 -1
  102. package/dist/middleware/authHmac/authHmac.types.js.map +1 -1
  103. package/dist/middleware/authHmac/index.js.map +1 -1
  104. package/dist/middleware/authJwt/authJwt.js.map +1 -1
  105. package/dist/middleware/authJwt/authJwt.types.js.map +1 -1
  106. package/dist/middleware/authJwt/index.js.map +1 -1
  107. package/dist/middleware/authStatic/authStatic.js +3 -3
  108. package/dist/middleware/authStatic/authStatic.js.map +1 -1
  109. package/dist/middleware/authStatic/index.js.map +1 -1
  110. package/dist/middleware/authTls/authTls.js +8 -8
  111. package/dist/middleware/authTls/authTls.js.map +1 -1
  112. package/dist/middleware/authTls/authTls.types.js.map +1 -1
  113. package/dist/middleware/authTls/index.js.map +1 -1
  114. package/dist/middleware/checkPermission/checkPermission.js.map +1 -1
  115. package/dist/middleware/error/error.js.map +1 -1
  116. package/dist/middleware/error/index.js.map +1 -1
  117. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +2 -2
  118. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -1
  119. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -1
  120. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -1
  121. package/dist/middleware/fileUploader/fileUploader.js +12 -12
  122. package/dist/middleware/fileUploader/fileUploader.js.map +1 -1
  123. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -1
  124. package/dist/middleware/fileUploader/index.js.map +1 -1
  125. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -1
  126. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -1
  127. package/dist/middleware/fileUploader/validate/index.js.map +1 -1
  128. package/dist/middleware/fileUploader/validate/validate.js.map +1 -1
  129. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -1
  130. package/dist/middleware/fourOhFour/index.js.map +1 -1
  131. package/dist/middleware/geminiFileUploader/geminiFileUploader.js.map +1 -1
  132. package/dist/middleware/geminiFileUploader/index.js.map +1 -1
  133. package/dist/middleware/healthCheck/healthCheck.js +2 -2
  134. package/dist/middleware/healthCheck/healthCheck.js.map +1 -1
  135. package/dist/middleware/healthCheck/index.js.map +1 -1
  136. package/dist/middleware/index.js.map +1 -1
  137. package/dist/middleware/metrics/index.js.map +1 -1
  138. package/dist/middleware/metrics/metrics.js.map +1 -1
  139. package/dist/middleware/requestMetrics/index.js.map +1 -1
  140. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -1
  141. package/dist/middleware/swaggerDocs/index.js.map +1 -1
  142. package/dist/middleware/swaggerDocs/swaggerDocs.js +7 -7
  143. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -1
  144. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -1
  145. package/dist/middleware/userResolver/index.js.map +1 -1
  146. package/dist/middleware/userResolver/userResolver.js.map +1 -1
  147. package/dist/middleware/validate/index.js.map +1 -1
  148. package/dist/middleware/validate/validate.js.map +1 -1
  149. package/dist/middleware/version/index.js.map +1 -1
  150. package/dist/middleware/version/version.js +3 -3
  151. package/dist/middleware/version/version.js.map +1 -1
  152. package/dist/utils/checkEnvironment/index.js +13 -13
  153. package/dist/utils/checkEnvironment/index.js.map +1 -1
  154. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -1
  155. package/dist/utils/createHttpServer/createHttpServer.validate.js +2 -2
  156. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -1
  157. package/dist/utils/createHttpServer/index.js.map +1 -1
  158. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -1
  159. package/dist/utils/createSortedObject/index.js.map +1 -1
  160. package/dist/utils/dbMigration/dbMigration.js +8 -8
  161. package/dist/utils/dbMigration/dbMigration.js.map +1 -1
  162. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -1
  163. package/dist/utils/dbMigration/index.js.map +1 -1
  164. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -1
  165. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.d.ts +2 -2
  166. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +47 -15
  167. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -1
  168. package/dist/utils/envAssert/envAssert.js +6 -6
  169. package/dist/utils/envAssert/envAssert.js.map +1 -1
  170. package/dist/utils/envAssert/index.js.map +1 -1
  171. package/dist/utils/envAssert/validators/hostList.js +2 -2
  172. package/dist/utils/envAssert/validators/hostList.js.map +1 -1
  173. package/dist/utils/envAssert/validators/index.js.map +1 -1
  174. package/dist/utils/envAssert/validators/ipList.js +2 -2
  175. package/dist/utils/envAssert/validators/ipList.js.map +1 -1
  176. package/dist/utils/envAssert/validators/path.js +2 -2
  177. package/dist/utils/envAssert/validators/path.js.map +1 -1
  178. package/dist/utils/envAssert/validators/string.js +2 -2
  179. package/dist/utils/envAssert/validators/string.js.map +1 -1
  180. package/dist/utils/envAssert/validators/stringList.js +3 -3
  181. package/dist/utils/envAssert/validators/stringList.js.map +1 -1
  182. package/dist/utils/filter/filter.js +4 -4
  183. package/dist/utils/filter/filter.js.map +1 -1
  184. package/dist/utils/filter/index.js.map +1 -1
  185. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -1
  186. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -1
  187. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -1
  188. package/dist/utils/getDynamicLink/index.js.map +1 -1
  189. package/dist/utils/hmac/checkEnv/checkEnv.js +2 -2
  190. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -1
  191. package/dist/utils/hmac/checkEnv/index.js.map +1 -1
  192. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -1
  193. package/dist/utils/hmac/createHmac/index.js.map +1 -1
  194. package/dist/utils/hmac/index.js.map +1 -1
  195. package/dist/utils/hmac/index.types.js.map +1 -1
  196. package/dist/utils/hmac/signPayload/index.js.map +1 -1
  197. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -1
  198. package/dist/utils/hmac/verifySignature/index.js.map +1 -1
  199. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -1
  200. package/dist/utils/index.js.map +1 -1
  201. package/dist/utils/jwt/index.js.map +1 -1
  202. package/dist/utils/jwt/jwt.js.map +1 -1
  203. package/dist/utils/jwt/jwt.types.js.map +1 -1
  204. package/dist/utils/report/index.js.map +1 -1
  205. package/dist/utils/report/output.js.map +1 -1
  206. package/dist/utils/report/output.types.js.map +1 -1
  207. package/dist/utils/report/report.js.map +1 -1
  208. package/dist/utils/report/report.types.js.map +1 -1
  209. package/dist/utils/request/index.js.map +1 -1
  210. package/dist/utils/request/request.js.map +1 -1
  211. package/dist/utils/semverCompare/index.js.map +1 -1
  212. package/dist/utils/semverCompare/semverCompare.js +5 -5
  213. package/dist/utils/semverCompare/semverCompare.js.map +1 -1
  214. package/dist/utils/sendEmail/index.js.map +1 -1
  215. package/dist/utils/sendEmail/sendEmail.js +8 -8
  216. package/dist/utils/sendEmail/sendEmail.js.map +1 -1
  217. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -1
  218. package/dist/utils/sendPush/index.js.map +1 -1
  219. package/dist/utils/sendPush/sendPush.js +5 -5
  220. package/dist/utils/sendPush/sendPush.js.map +1 -1
  221. package/dist/utils/sendPush/sendPush.types.js.map +1 -1
  222. package/dist/utils/tlsConfig/index.js.map +1 -1
  223. package/dist/utils/tlsConfig/tlsConfig.js +2 -2
  224. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -1
  225. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -1
  226. package/dist/utils/tlsConfig/tlsConfig.validate.js +2 -2
  227. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -1
  228. package/dist/utils/tlsRequest/index.js.map +1 -1
  229. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -1
  230. package/dist/utils/trimPathSlash/index.js.map +1 -1
  231. package/dist/utils/trimPathSlash/trimPathSlash.js +4 -4
  232. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -1
  233. package/eslint.config.mjs +11 -11
  234. package/package.json +164 -161
  235. package/src/const/DebeziumEvent.ts +6 -6
  236. package/src/const/LogSeverity.ts +7 -7
  237. package/src/const/index.ts +5 -5
  238. package/src/const/metrics.ts +6 -6
  239. package/src/const/mime.ts +37 -37
  240. package/src/const/tokenIssuer.ts +9 -9
  241. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -29
  242. package/src/db/models/SequelizeMeta.ts +16 -16
  243. package/src/db/models/index.ts +2 -2
  244. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -103
  245. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -7
  246. package/src/entities/ElasticSearch/index.ts +2 -2
  247. package/src/entities/Endpoint/Endpoint.test.ts +337 -337
  248. package/src/entities/Endpoint/Endpoint.ts +202 -202
  249. package/src/entities/Endpoint/Endpoint.types.ts +205 -205
  250. package/src/entities/Endpoint/index.ts +2 -2
  251. package/src/entities/EngineError/EngineError.ts +28 -28
  252. package/src/entities/EngineError/EngineError.types.ts +15 -15
  253. package/src/entities/EngineError/index.ts +2 -2
  254. package/src/entities/KeySet/KeySet.test.ts +126 -126
  255. package/src/entities/KeySet/KeySet.ts +172 -172
  256. package/src/entities/KeySet/KeySet.types.ts +28 -28
  257. package/src/entities/KeySet/index.ts +2 -2
  258. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -48
  259. package/src/entities/LifecycleController/LifecycleController.ts +24 -24
  260. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -5
  261. package/src/entities/LifecycleController/index.ts +2 -2
  262. package/src/entities/Localizator/Localizator.ts +139 -139
  263. package/src/entities/Localizator/Localizator.types.ts +52 -52
  264. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -165
  265. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -58
  266. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -1
  267. package/src/entities/Localizator/index.ts +2 -2
  268. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -130
  269. package/src/entities/MessageHandler/MessageHandler.ts +72 -72
  270. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -15
  271. package/src/entities/MessageHandler/index.ts +2 -2
  272. package/src/entities/PubSub/PubSub.test.ts +297 -297
  273. package/src/entities/PubSub/PubSub.ts +202 -202
  274. package/src/entities/PubSub/PubSub.types.ts +76 -76
  275. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -102
  276. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -65
  277. package/src/entities/PubSub/handleMessage/index.ts +1 -1
  278. package/src/entities/PubSub/index.ts +2 -2
  279. package/src/entities/PushNotification/PushNotification.test.ts +35 -35
  280. package/src/entities/PushNotification/PushNotification.ts +44 -44
  281. package/src/entities/PushNotification/PushNotification.types.ts +25 -25
  282. package/src/entities/PushNotification/index.ts +2 -2
  283. package/src/entities/Redis/Redis.ts +71 -71
  284. package/src/entities/Redis/Redis.types.ts +19 -19
  285. package/src/entities/Redis/Redis.validate.ts +17 -17
  286. package/src/entities/Redis/index.ts +2 -2
  287. package/src/entities/Sequelize/Sequelize.config.ts +59 -29
  288. package/src/entities/Sequelize/Sequelize.test.ts +21 -21
  289. package/src/entities/Sequelize/Sequelize.ts +75 -75
  290. package/src/entities/Sequelize/Sequelize.types.ts +10 -10
  291. package/src/entities/Sequelize/Sequelize.validate.ts +15 -15
  292. package/src/entities/Sequelize/index.ts +2 -2
  293. package/src/entities/Server/Server.const.ts +56 -56
  294. package/src/entities/Server/Server.test.ts +272 -272
  295. package/src/entities/Server/Server.ts +445 -445
  296. package/src/entities/Server/Server.types.ts +88 -88
  297. package/src/entities/Server/index.ts +2 -2
  298. package/src/entities/SocketClient/SocketClient.test.ts +392 -392
  299. package/src/entities/SocketClient/SocketClient.ts +401 -401
  300. package/src/entities/SocketClient/SocketClient.types.ts +62 -62
  301. package/src/entities/SocketClient/index.ts +2 -2
  302. package/src/entities/SocketClient/parseMessage/index.ts +1 -1
  303. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -20
  304. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -26
  305. package/src/entities/Storage/Storage.test.ts +58 -58
  306. package/src/entities/Storage/Storage.ts +219 -219
  307. package/src/entities/Storage/Storage.types.ts +57 -57
  308. package/src/entities/Storage/index.ts +2 -2
  309. package/src/entities/ValidationError/ValidationError.ts +34 -34
  310. package/src/entities/ValidationError/index.ts +1 -1
  311. package/src/entities/WebError/WebError.test.ts +18 -18
  312. package/src/entities/WebError/WebError.ts +23 -23
  313. package/src/entities/WebError/WebError.types.ts +9 -9
  314. package/src/entities/WebError/index.ts +2 -2
  315. package/src/entities/index.ts +16 -16
  316. package/src/index.ts +4 -4
  317. package/src/metrics/debug.ts +10 -10
  318. package/src/metrics/index.ts +2 -2
  319. package/src/metrics/request.ts +17 -17
  320. package/src/middleware/authAdmin/authAdmin.test.ts +199 -199
  321. package/src/middleware/authAdmin/authAdmin.ts +114 -114
  322. package/src/middleware/authAdmin/authAdmin.types.ts +19 -19
  323. package/src/middleware/authAdmin/index.ts +2 -2
  324. package/src/middleware/authHmac/authHmac.test.ts +86 -86
  325. package/src/middleware/authHmac/authHmac.ts +56 -56
  326. package/src/middleware/authHmac/authHmac.types.ts +7 -7
  327. package/src/middleware/authHmac/index.ts +2 -2
  328. package/src/middleware/authJwt/authJwt.test.ts +54 -54
  329. package/src/middleware/authJwt/authJwt.ts +55 -55
  330. package/src/middleware/authJwt/authJwt.types.ts +14 -14
  331. package/src/middleware/authJwt/index.ts +2 -2
  332. package/src/middleware/authStatic/authStatic.test.ts +36 -36
  333. package/src/middleware/authStatic/authStatic.ts +45 -45
  334. package/src/middleware/authStatic/index.ts +1 -1
  335. package/src/middleware/authTls/authTls.test.ts +138 -138
  336. package/src/middleware/authTls/authTls.ts +106 -106
  337. package/src/middleware/authTls/authTls.types.ts +13 -13
  338. package/src/middleware/authTls/index.ts +2 -2
  339. package/src/middleware/checkPermission/checkPermission.ts +32 -32
  340. package/src/middleware/error/error.test.ts +60 -60
  341. package/src/middleware/error/error.ts +25 -25
  342. package/src/middleware/error/index.ts +1 -1
  343. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -25
  344. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -12
  345. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -2
  346. package/src/middleware/fileUploader/fileUploader.test.ts +310 -310
  347. package/src/middleware/fileUploader/fileUploader.ts +303 -303
  348. package/src/middleware/fileUploader/fileUploader.types.ts +52 -52
  349. package/src/middleware/fileUploader/index.ts +2 -2
  350. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -1
  351. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -9
  352. package/src/middleware/fileUploader/validate/index.ts +1 -1
  353. package/src/middleware/fileUploader/validate/validate.ts +27 -27
  354. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -14
  355. package/src/middleware/fourOhFour/fourOhFour.ts +13 -13
  356. package/src/middleware/fourOhFour/index.ts +1 -1
  357. package/src/middleware/geminiFileUploader/geminiFileUploader.ts +117 -117
  358. package/src/middleware/geminiFileUploader/index.ts +1 -1
  359. package/src/middleware/healthCheck/healthCheck.test.ts +12 -12
  360. package/src/middleware/healthCheck/healthCheck.ts +14 -14
  361. package/src/middleware/healthCheck/index.ts +1 -1
  362. package/src/middleware/index.ts +17 -17
  363. package/src/middleware/metrics/index.ts +1 -1
  364. package/src/middleware/metrics/metrics.test.ts +46 -46
  365. package/src/middleware/metrics/metrics.ts +24 -24
  366. package/src/middleware/requestMetrics/index.ts +1 -1
  367. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -77
  368. package/src/middleware/requestMetrics/requestMetrics.ts +20 -20
  369. package/src/middleware/swaggerDocs/index.ts +2 -2
  370. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -114
  371. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -41
  372. package/src/middleware/userResolver/index.ts +1 -1
  373. package/src/middleware/userResolver/userResolver.test.ts +35 -35
  374. package/src/middleware/userResolver/userResolver.ts +35 -35
  375. package/src/middleware/validate/index.ts +1 -1
  376. package/src/middleware/validate/validate.test.ts +43 -43
  377. package/src/middleware/validate/validate.ts +25 -25
  378. package/src/middleware/version/index.ts +1 -1
  379. package/src/middleware/version/version.test.ts +23 -23
  380. package/src/middleware/version/version.ts +12 -12
  381. package/src/utils/checkEnvironment/index.ts +49 -49
  382. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -24
  383. package/src/utils/createHttpServer/createHttpServer.ts +34 -34
  384. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -17
  385. package/src/utils/createHttpServer/index.ts +1 -1
  386. package/src/utils/createSortedObject/createSortedObject.ts +20 -20
  387. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -47
  388. package/src/utils/createSortedObject/index.ts +1 -1
  389. package/src/utils/dbMigration/dbMigration.test.ts +209 -209
  390. package/src/utils/dbMigration/dbMigration.ts +199 -199
  391. package/src/utils/dbMigration/dbMigration.types.ts +11 -11
  392. package/src/utils/dbMigration/index.ts +2 -2
  393. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -1
  394. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -59
  395. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +102 -70
  396. package/src/utils/envAssert/envAssert.ts +31 -31
  397. package/src/utils/envAssert/index.ts +1 -1
  398. package/src/utils/envAssert/validators/hostList.ts +17 -17
  399. package/src/utils/envAssert/validators/index.ts +5 -5
  400. package/src/utils/envAssert/validators/ipList.ts +13 -13
  401. package/src/utils/envAssert/validators/path.ts +13 -13
  402. package/src/utils/envAssert/validators/string.ts +9 -9
  403. package/src/utils/envAssert/validators/stringList.ts +13 -13
  404. package/src/utils/filter/filter.ts +17 -17
  405. package/src/utils/filter/index.ts +1 -1
  406. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -51
  407. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -28
  408. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -11
  409. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -6
  410. package/src/utils/getDynamicLink/index.ts +2 -2
  411. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -18
  412. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -9
  413. package/src/utils/hmac/checkEnv/index.ts +1 -1
  414. package/src/utils/hmac/createHmac/createHmac.ts +33 -33
  415. package/src/utils/hmac/createHmac/index.ts +1 -1
  416. package/src/utils/hmac/index.ts +4 -4
  417. package/src/utils/hmac/index.types.ts +13 -13
  418. package/src/utils/hmac/signPayload/index.ts +1 -1
  419. package/src/utils/hmac/signPayload/signPayload.ts +16 -16
  420. package/src/utils/hmac/verifySignature/index.ts +1 -1
  421. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -24
  422. package/src/utils/index.ts +26 -26
  423. package/src/utils/jwt/index.ts +2 -2
  424. package/src/utils/jwt/jwt.test.ts +41 -41
  425. package/src/utils/jwt/jwt.ts +204 -204
  426. package/src/utils/jwt/jwt.types.ts +21 -21
  427. package/src/utils/report/index.ts +3 -3
  428. package/src/utils/report/output.ts +45 -45
  429. package/src/utils/report/output.types.ts +70 -70
  430. package/src/utils/report/report.test.ts +133 -133
  431. package/src/utils/report/report.ts +134 -134
  432. package/src/utils/report/report.types.ts +13 -13
  433. package/src/utils/request/index.ts +1 -1
  434. package/src/utils/request/request.test.ts +26 -26
  435. package/src/utils/request/request.ts +48 -48
  436. package/src/utils/semverCompare/index.ts +1 -1
  437. package/src/utils/semverCompare/semverCompare.test.ts +49 -49
  438. package/src/utils/semverCompare/semverCompare.ts +60 -60
  439. package/src/utils/sendEmail/index.ts +1 -1
  440. package/src/utils/sendEmail/sendEmail.ts +27 -27
  441. package/src/utils/sendEmail/sendEmail.types.ts +7 -7
  442. package/src/utils/sendPush/index.ts +2 -2
  443. package/src/utils/sendPush/sendPush.ts +20 -20
  444. package/src/utils/sendPush/sendPush.types.ts +25 -25
  445. package/src/utils/tlsConfig/index.ts +2 -2
  446. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -32
  447. package/src/utils/tlsConfig/tlsConfig.ts +47 -47
  448. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -11
  449. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -25
  450. package/src/utils/tlsRequest/index.ts +1 -1
  451. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -63
  452. package/src/utils/tlsRequest/tlsRequest.ts +12 -12
  453. package/src/utils/trimPathSlash/index.ts +1 -1
  454. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -26
  455. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -8
  456. package/test/env.ts +56 -56
  457. package/test/factory/index.ts +8 -8
  458. package/test/factory/sequelizeMeta.ts +12 -12
  459. package/test/hooks.ts +37 -37
  460. package/test/index.ts +3 -3
  461. package/test/stub/index.ts +3 -3
  462. package/test/stub/stubLocales.ts +68 -68
  463. package/test/stub/stubPubSub.ts +7 -7
  464. package/test/stub/stubStorage.ts +77 -77
  465. package/test/stub/stubStorage.types.ts +11 -11
  466. package/test/utils/app.ts +31 -31
  467. package/test/utils/index.ts +1 -1
  468. package/tsconfig.build.json +5 -5
  469. package/tsconfig.json +32 -32
@@ -1,102 +1,102 @@
1
- import { PreciseDate } from '@google-cloud/precise-date';
2
- import {
3
- Subscription,
4
- PubSub,
5
- Attributes,
6
- Message
7
- } from '@google-cloud/pubsub';
8
- import { expect } from 'chai';
9
- import { faker } from '@faker-js/faker';
10
- import { fake, SinonSpy } from 'sinon';
11
- import { handleMessage } from './handleMessage';
12
-
13
- describe('Entities - Pub/Sub - Handle Message', () => {
14
- let subscription: Subscription;
15
- let payload: Record<string, unknown>;
16
- let attributes: Attributes;
17
- let ack: SinonSpy;
18
- let message: Message;
19
- let publishTime: PreciseDate;
20
-
21
- beforeEach(() => {
22
- subscription = new Subscription(new PubSub(), faker.lorem.slug());
23
-
24
- payload = { [faker.lorem.word()]: faker.lorem.word() };
25
-
26
- attributes = { [faker.lorem.word()]: faker.lorem.word() };
27
- const data = Buffer.from(JSON.stringify(payload));
28
-
29
- publishTime = new PreciseDate(faker.date.recent());
30
-
31
- ack = fake();
32
- message = {
33
- id: faker.string.uuid(),
34
- ack,
35
- ackId: faker.string.uuid(),
36
- data,
37
- attributes,
38
- publishTime,
39
- deliveryAttempt: 0,
40
- received: 0
41
- } as unknown as Message;
42
- });
43
-
44
- it('should parse the message and forward it to all the handlers', async () => {
45
- const handlers = [fake(), fake(), fake()];
46
-
47
- await handleMessage(message, subscription, handlers);
48
-
49
- for (const handler of handlers) {
50
- expect(handler).to.have.been.calledOnceWithExactly(
51
- payload,
52
- attributes,
53
- publishTime
54
- );
55
- }
56
- });
57
-
58
- it('should parse a debezium message [create]', async () => {
59
- const handler = fake();
60
- payload = { before: null, after: { a: 'a', b: 'b', c: 'c' } };
61
- message.data = Buffer.from(JSON.stringify(payload), 'utf-8');
62
-
63
- await handleMessage(message, subscription, [handler], true);
64
-
65
- expect(handler).to.have.been.calledOnceWithExactly(
66
- { ...payload, diff: ['a', 'b', 'c'] },
67
- attributes,
68
- publishTime
69
- );
70
- });
71
-
72
- it('should parse a debezium message [destroy]', async () => {
73
- const handler = fake();
74
- payload = { before: { a: 'a', b: 'b', c: 'c' }, after: null };
75
- message.data = Buffer.from(JSON.stringify(payload), 'utf-8');
76
-
77
- await handleMessage(message, subscription, [handler], true);
78
-
79
- expect(handler).to.have.been.calledOnceWithExactly(
80
- { ...payload, diff: ['a', 'b', 'c'] },
81
- attributes,
82
- publishTime
83
- );
84
- });
85
-
86
- it('should parse a debezium message [update]', async () => {
87
- const handler = fake();
88
- payload = {
89
- before: { a: 'a', b: 'b', c: 'c' },
90
- after: { a: 'a', b: 'y', c: 'c' }
91
- };
92
- message.data = Buffer.from(JSON.stringify(payload), 'utf-8');
93
-
94
- await handleMessage(message, subscription, [handler], true);
95
-
96
- expect(handler).to.have.been.calledOnceWithExactly(
97
- { ...payload, diff: ['b'] },
98
- attributes,
99
- publishTime
100
- );
101
- });
102
- });
1
+ import { PreciseDate } from '@google-cloud/precise-date';
2
+ import {
3
+ Subscription,
4
+ PubSub,
5
+ Attributes,
6
+ Message
7
+ } from '@google-cloud/pubsub';
8
+ import { expect } from 'chai';
9
+ import { faker } from '@faker-js/faker';
10
+ import { fake, SinonSpy } from 'sinon';
11
+ import { handleMessage } from './handleMessage';
12
+
13
+ describe('Entities - Pub/Sub - Handle Message', () => {
14
+ let subscription: Subscription;
15
+ let payload: Record<string, unknown>;
16
+ let attributes: Attributes;
17
+ let ack: SinonSpy;
18
+ let message: Message;
19
+ let publishTime: PreciseDate;
20
+
21
+ beforeEach(() => {
22
+ subscription = new Subscription(new PubSub(), faker.lorem.slug());
23
+
24
+ payload = { [faker.lorem.word()]: faker.lorem.word() };
25
+
26
+ attributes = { [faker.lorem.word()]: faker.lorem.word() };
27
+ const data = Buffer.from(JSON.stringify(payload));
28
+
29
+ publishTime = new PreciseDate(faker.date.recent());
30
+
31
+ ack = fake();
32
+ message = {
33
+ id: faker.string.uuid(),
34
+ ack,
35
+ ackId: faker.string.uuid(),
36
+ data,
37
+ attributes,
38
+ publishTime,
39
+ deliveryAttempt: 0,
40
+ received: 0
41
+ } as unknown as Message;
42
+ });
43
+
44
+ it('should parse the message and forward it to all the handlers', async () => {
45
+ const handlers = [fake(), fake(), fake()];
46
+
47
+ await handleMessage(message, subscription, handlers);
48
+
49
+ for (const handler of handlers) {
50
+ expect(handler).to.have.been.calledOnceWithExactly(
51
+ payload,
52
+ attributes,
53
+ publishTime
54
+ );
55
+ }
56
+ });
57
+
58
+ it('should parse a debezium message [create]', async () => {
59
+ const handler = fake();
60
+ payload = { before: null, after: { a: 'a', b: 'b', c: 'c' } };
61
+ message.data = Buffer.from(JSON.stringify(payload), 'utf-8');
62
+
63
+ await handleMessage(message, subscription, [handler], true);
64
+
65
+ expect(handler).to.have.been.calledOnceWithExactly(
66
+ { ...payload, diff: ['a', 'b', 'c'] },
67
+ attributes,
68
+ publishTime
69
+ );
70
+ });
71
+
72
+ it('should parse a debezium message [destroy]', async () => {
73
+ const handler = fake();
74
+ payload = { before: { a: 'a', b: 'b', c: 'c' }, after: null };
75
+ message.data = Buffer.from(JSON.stringify(payload), 'utf-8');
76
+
77
+ await handleMessage(message, subscription, [handler], true);
78
+
79
+ expect(handler).to.have.been.calledOnceWithExactly(
80
+ { ...payload, diff: ['a', 'b', 'c'] },
81
+ attributes,
82
+ publishTime
83
+ );
84
+ });
85
+
86
+ it('should parse a debezium message [update]', async () => {
87
+ const handler = fake();
88
+ payload = {
89
+ before: { a: 'a', b: 'b', c: 'c' },
90
+ after: { a: 'a', b: 'y', c: 'c' }
91
+ };
92
+ message.data = Buffer.from(JSON.stringify(payload), 'utf-8');
93
+
94
+ await handleMessage(message, subscription, [handler], true);
95
+
96
+ expect(handler).to.have.been.calledOnceWithExactly(
97
+ { ...payload, diff: ['b'] },
98
+ attributes,
99
+ publishTime
100
+ );
101
+ });
102
+ });
@@ -1,65 +1,65 @@
1
- import { Subscription, Message } from '@google-cloud/pubsub';
2
- import { PubSubMessageHandler, PubSubDebeziumPayload } from '../PubSub.types';
3
- import { LogSeverity } from 'const';
4
- import { EngineError } from 'entities/EngineError';
5
- import { reportDebug, reportError } from 'utils';
6
-
7
- const namespace = 'engine:PubSub:handleMessage';
8
-
9
- /**
10
- * handle the pubSubClients on message event
11
- * @param message - Message to parse and handle
12
- * @param subscription - The related Pub/Sub subscription object
13
- * @param handlers - Message handlers
14
- * @param isDebezium - Indicates that the subscription from Debezium events
15
- */
16
- export async function handleMessage(
17
- message: Message,
18
- subscription: Subscription,
19
- handlers: Array<PubSubMessageHandler<unknown>>,
20
- isDebezium = false
21
- ): Promise<void> {
22
- reportDebug({
23
- namespace,
24
- message: `Received message from Pub/Sub [${subscription.name}]`
25
- });
26
-
27
- message.ack();
28
-
29
- let payload;
30
- try {
31
- payload = JSON.parse(message.data.toString()) as unknown;
32
-
33
- // When handling Debezium message, we calculate automatically the keys that have changed between the previous and current state
34
- if (isDebezium) {
35
- payload = payload as PubSubDebeziumPayload<Record<string, unknown>>;
36
- const { before, after } = payload;
37
- if (before && after)
38
- payload.diff = Object.keys(after).filter(
39
- (key) => after[key] !== before[key]
40
- );
41
- else if (before) payload.diff = Object.keys(before);
42
- else if (after) payload.diff = Object.keys(after);
43
- else
44
- throw new EngineError({
45
- severity: LogSeverity.WARNING,
46
- message: `Debezium Pub/Sub message did not include before nor after value [${subscription.name}]`,
47
- data: { subscription, message: message.data.toString() }
48
- });
49
- }
50
- } catch {
51
- throw new EngineError({
52
- severity: LogSeverity.WARNING,
53
- message: `Pub/Sub message is not valid JSON ${subscription.name}`,
54
- data: { subscription, message: message.data.toString() }
55
- });
56
- }
57
-
58
- for (const handler of handlers) {
59
- try {
60
- await handler(payload, message.attributes, message.publishTime);
61
- } catch (error) {
62
- reportError(error);
63
- }
64
- }
65
- }
1
+ import { Subscription, Message } from '@google-cloud/pubsub';
2
+ import { PubSubMessageHandler, PubSubDebeziumPayload } from '../PubSub.types';
3
+ import { LogSeverity } from 'const';
4
+ import { EngineError } from 'entities/EngineError';
5
+ import { reportDebug, reportError } from 'utils';
6
+
7
+ const namespace = 'engine:PubSub:handleMessage';
8
+
9
+ /**
10
+ * handle the pubSubClients on message event
11
+ * @param message - Message to parse and handle
12
+ * @param subscription - The related Pub/Sub subscription object
13
+ * @param handlers - Message handlers
14
+ * @param isDebezium - Indicates that the subscription from Debezium events
15
+ */
16
+ export async function handleMessage(
17
+ message: Message,
18
+ subscription: Subscription,
19
+ handlers: Array<PubSubMessageHandler<unknown>>,
20
+ isDebezium = false
21
+ ): Promise<void> {
22
+ reportDebug({
23
+ namespace,
24
+ message: `Received message from Pub/Sub [${subscription.name}]`
25
+ });
26
+
27
+ message.ack();
28
+
29
+ let payload;
30
+ try {
31
+ payload = JSON.parse(message.data.toString()) as unknown;
32
+
33
+ // When handling Debezium message, we calculate automatically the keys that have changed between the previous and current state
34
+ if (isDebezium) {
35
+ payload = payload as PubSubDebeziumPayload<Record<string, unknown>>;
36
+ const { before, after } = payload;
37
+ if (before && after)
38
+ payload.diff = Object.keys(after).filter(
39
+ (key) => after[key] !== before[key]
40
+ );
41
+ else if (before) payload.diff = Object.keys(before);
42
+ else if (after) payload.diff = Object.keys(after);
43
+ else
44
+ throw new EngineError({
45
+ severity: LogSeverity.WARNING,
46
+ message: `Debezium Pub/Sub message did not include before nor after value [${subscription.name}]`,
47
+ data: { subscription, message: message.data.toString() }
48
+ });
49
+ }
50
+ } catch {
51
+ throw new EngineError({
52
+ severity: LogSeverity.WARNING,
53
+ message: `Pub/Sub message is not valid JSON ${subscription.name}`,
54
+ data: { subscription, message: message.data.toString() }
55
+ });
56
+ }
57
+
58
+ for (const handler of handlers) {
59
+ try {
60
+ await handler(payload, message.attributes, message.publishTime);
61
+ } catch (error) {
62
+ reportError(error);
63
+ }
64
+ }
65
+ }
@@ -1 +1 @@
1
- export * from './handleMessage';
1
+ export * from './handleMessage';
@@ -1,2 +1,2 @@
1
- export * from './PubSub';
2
- export * from './PubSub.types';
1
+ export * from './PubSub';
2
+ export * from './PubSub.types';
@@ -1,35 +1,35 @@
1
- import { expect } from 'chai';
2
- import { faker } from '@faker-js/faker';
3
- import { stub, SinonStub } from 'sinon';
4
- import { PushNotification } from './PushNotification';
5
- import { PushNotificationNotification } from './PushNotification.types';
6
- import { PubSub } from 'entities/PubSub/PubSub';
7
-
8
- describe('Entities - PushNotification', function () {
9
- let notification: PushNotificationNotification;
10
- let publishStub: SinonStub;
11
- let userId: string;
12
-
13
- beforeEach(() => {
14
- process.env.CHART = 'test';
15
- process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC = 'notification_queue';
16
- userId = faker.string.uuid();
17
- notification = {
18
- title: faker.lorem.word(),
19
- body: faker.lorem.word()
20
- };
21
-
22
- publishStub = stub(PubSub, 'publish');
23
- });
24
-
25
- it('should send push notification to the user', async () => {
26
- await PushNotification.sendPush(userId, notification);
27
- expect(publishStub).to.have.been.calledOnceWithExactly(
28
- 'notification_queue',
29
- {
30
- ...notification,
31
- userId
32
- }
33
- );
34
- });
35
- });
1
+ import { expect } from 'chai';
2
+ import { faker } from '@faker-js/faker';
3
+ import { stub, SinonStub } from 'sinon';
4
+ import { PushNotification } from './PushNotification';
5
+ import { PushNotificationNotification } from './PushNotification.types';
6
+ import { PubSub } from 'entities/PubSub/PubSub';
7
+
8
+ describe('Entities - PushNotification', function () {
9
+ let notification: PushNotificationNotification;
10
+ let publishStub: SinonStub;
11
+ let userId: string;
12
+
13
+ beforeEach(() => {
14
+ process.env.CHART = 'test';
15
+ process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC = 'notification_queue';
16
+ userId = faker.string.uuid();
17
+ notification = {
18
+ title: faker.lorem.word(),
19
+ body: faker.lorem.word()
20
+ };
21
+
22
+ publishStub = stub(PubSub, 'publish');
23
+ });
24
+
25
+ it('should send push notification to the user', async () => {
26
+ await PushNotification.sendPush(userId, notification);
27
+ expect(publishStub).to.have.been.calledOnceWithExactly(
28
+ 'notification_queue',
29
+ {
30
+ ...notification,
31
+ userId
32
+ }
33
+ );
34
+ });
35
+ });
@@ -1,44 +1,44 @@
1
- import { PushNotificationNotification } from './PushNotification.types';
2
- import { EngineError } from 'entities';
3
- import { PubSub } from 'entities/PubSub';
4
- import { reportDebug } from 'utils';
5
-
6
- const namespace = 'engine:PushNotification';
7
-
8
- export const PushNotification = {
9
- /** Initialize the push notification entity */
10
- init(): void {
11
- reportDebug({ namespace, message: 'Initializing PushNotification' });
12
- if (!process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC)
13
- throw new EngineError({
14
- message:
15
- 'Environment variable PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC is not defined'
16
- });
17
- // Register publisher
18
- PubSub.addPublisher(process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC);
19
- },
20
-
21
- /**
22
- * Send a push notification through the push service
23
- * @param userId - ID of the user that should receive the notification
24
- * @param notification - Notification that should be sent
25
- */
26
- async sendPush(
27
- userId: string,
28
- notification: PushNotificationNotification
29
- ): Promise<void> {
30
- reportDebug({
31
- namespace,
32
- message: `Received data to send notification to user with Id '${userId}'`,
33
- data: { userId, notification }
34
- });
35
-
36
- await PubSub.publish(
37
- process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC as string,
38
- {
39
- ...notification,
40
- userId
41
- }
42
- );
43
- }
44
- };
1
+ import { PushNotificationNotification } from './PushNotification.types';
2
+ import { EngineError } from 'entities';
3
+ import { PubSub } from 'entities/PubSub';
4
+ import { reportDebug } from 'utils';
5
+
6
+ const namespace = 'engine:PushNotification';
7
+
8
+ export const PushNotification = {
9
+ /** Initialize the push notification entity */
10
+ init(): void {
11
+ reportDebug({ namespace, message: 'Initializing PushNotification' });
12
+ if (!process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC)
13
+ throw new EngineError({
14
+ message:
15
+ 'Environment variable PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC is not defined'
16
+ });
17
+ // Register publisher
18
+ PubSub.addPublisher(process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC);
19
+ },
20
+
21
+ /**
22
+ * Send a push notification through the push service
23
+ * @param userId - ID of the user that should receive the notification
24
+ * @param notification - Notification that should be sent
25
+ */
26
+ async sendPush(
27
+ userId: string,
28
+ notification: PushNotificationNotification
29
+ ): Promise<void> {
30
+ reportDebug({
31
+ namespace,
32
+ message: `Received data to send notification to user with Id '${userId}'`,
33
+ data: { userId, notification }
34
+ });
35
+
36
+ await PubSub.publish(
37
+ process.env.PUBSUB_PUSH_NOTIFICATION_QUEUE_TOPIC as string,
38
+ {
39
+ ...notification,
40
+ userId
41
+ }
42
+ );
43
+ }
44
+ };
@@ -1,25 +1,25 @@
1
- /** Notification to send to the user's device */
2
- export interface PushNotificationNotification {
3
- /** Title of the notification */
4
- title?: string;
5
- /** Body of the notification */
6
- body?: string;
7
- /** Data payload of the notification */
8
- payload?: unknown;
9
- /** Indicates that the notification is a VOIP notification */
10
- voip?: boolean;
11
- /** Indicate that it is a background notification (data only, low priority) */
12
- background?: boolean;
13
- /** Push token can be specified here is we want to send to a given user */
14
- token?: string;
15
- /** Indicates that the data content can be mutated by the client (iOS) */
16
- mutable?: boolean;
17
- /** Indicates that the notification requires some client side processing to be displayed (iOS) */
18
- contentAvailable?: boolean;
19
- /** Time to live of the notification in seconds. After this the notification will not be distributed */
20
- ttl?: number;
21
- /** Indicate that it is a high priority notification */
22
- priority?: boolean;
23
- /** Notifications with the same string here will be collapsed in the system tray */
24
- collapseId?: string;
25
- }
1
+ /** Notification to send to the user's device */
2
+ export interface PushNotificationNotification {
3
+ /** Title of the notification */
4
+ title?: string;
5
+ /** Body of the notification */
6
+ body?: string;
7
+ /** Data payload of the notification */
8
+ payload?: unknown;
9
+ /** Indicates that the notification is a VOIP notification */
10
+ voip?: boolean;
11
+ /** Indicate that it is a background notification (data only, low priority) */
12
+ background?: boolean;
13
+ /** Push token can be specified here is we want to send to a given user */
14
+ token?: string;
15
+ /** Indicates that the data content can be mutated by the client (iOS) */
16
+ mutable?: boolean;
17
+ /** Indicates that the notification requires some client side processing to be displayed (iOS) */
18
+ contentAvailable?: boolean;
19
+ /** Time to live of the notification in seconds. After this the notification will not be distributed */
20
+ ttl?: number;
21
+ /** Indicate that it is a high priority notification */
22
+ priority?: boolean;
23
+ /** Notifications with the same string here will be collapsed in the system tray */
24
+ collapseId?: string;
25
+ }
@@ -1,2 +1,2 @@
1
- export * from './PushNotification';
2
- export * from './PushNotification.types';
1
+ export * from './PushNotification';
2
+ export * from './PushNotification.types';