node-server-engine 1.1.4 → 1.1.6

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