node-server-engine 1.1.2 → 1.1.4

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 +48 -16
  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,202 +1,202 @@
1
- import {
2
- Attributes,
3
- PubSub as PubsubClient,
4
- Message
5
- } from '@google-cloud/pubsub';
6
- import { handleMessage } from './handleMessage';
7
- import {
8
- PubSubTopicsMap,
9
- PubSubSubscriptionsMap,
10
- PubSubAddSubscriberOptions,
11
- PubSubMessageHandler
12
- } from './PubSub.types';
13
- import { EngineError } from 'entities/EngineError';
14
- import { LifecycleController } from 'entities/LifecycleController';
15
- import { reportDebug, reportError } from 'utils';
16
-
17
- const namespace = 'engine:PubSub';
18
-
19
- /**
20
- * Associative containing all the subscriptions sorted by topic registered for publishing
21
- */
22
- const subscriptions: PubSubSubscriptionsMap = {};
23
-
24
- /**
25
- * Associative containing all the topics registered for publishing
26
- */
27
- const topics: PubSubTopicsMap = {};
28
-
29
- const pubSubClient = new PubsubClient();
30
-
31
- /**
32
- * This is a singleton service who's role is to manage pub/sub connections
33
- * It is the preferred way to interact with Pub/Sub as it manages the underlying subscription and handler objects
34
- * It avoids potential subscription splitting on an instance
35
- */
36
- export const PubSub = {
37
- /**
38
- * Initialize the registered publishers and subscribers
39
- */
40
- async init(): Promise<void> {
41
- reportDebug({ namespace, message: `Initializing Pub/Sub` });
42
- // Check that all topics/permissions exist, and that we have permission on them
43
- await Promise.all([
44
- // Test that all topics actually exist and that we have permissions
45
- ...Object.values(topics).map(async (topic) => {
46
- const [exists] = await topic.exists();
47
- if (!exists)
48
- throw new EngineError(`Topic ${topic.name} does not exist`);
49
- // Test permission ton publish to topic
50
- const [permissions] = await topic.iam.testPermissions([
51
- 'pubsub.topics.publish'
52
- ]);
53
- const hasPermissions = Object.values(permissions).every(
54
- (success) => success
55
- );
56
- if (!hasPermissions)
57
- throw new EngineError(
58
- `Instance does not have appropriate permissions to publish to topic ${topic.name}`
59
- );
60
- }),
61
- // Test that all subscriptions actually exist and that we have permissions
62
- ...Object.values(subscriptions).map(async ({ subscription }) => {
63
- const [exists] = await subscription.exists();
64
- if (!exists)
65
- throw new EngineError(
66
- `Subscription ${subscription.name} does not exist`
67
- );
68
- // Test permission ton consume subscription
69
- const [permissions] = await subscription.iam.testPermissions([
70
- 'pubsub.subscriptions.consume'
71
- ]);
72
- const hasPermissions = Object.values(permissions).every(
73
- (success) => success
74
- );
75
- if (!hasPermissions)
76
- throw new EngineError(
77
- `Instance does not have appropriate permissions to subscribe to subscription ${subscription.name}`
78
- );
79
- })
80
- ]);
81
-
82
- // Register handlers on the subscriptions to activate them
83
- for (const { subscription, handlers, isDebezium } of Object.values(
84
- subscriptions
85
- )) {
86
- subscription.on('message', (message) => {
87
- handleMessage(
88
- message as Message,
89
- subscription,
90
- handlers,
91
- isDebezium
92
- ).catch((error) => {
93
- reportError(error);
94
- });
95
- });
96
- }
97
-
98
- LifecycleController.register(PubSub);
99
- },
100
-
101
- /**
102
- * Shutdown the registered publishers and subscribers
103
- */
104
- async shutdown(): Promise<void> {
105
- reportDebug({ namespace, message: `Shutting down Pub/Sub` });
106
- // Flush all pending messages and shut down connections
107
- await Promise.all([
108
- ...Object.values(topics).map(async (topic) => topic.flush()),
109
- ...Object.values(subscriptions).map(async ({ subscription }) =>
110
- subscription.close()
111
- )
112
- ]);
113
- // Delete the stored topics/subscriptions
114
- Object.keys(topics).forEach((topic) => delete topics[topic]);
115
- Object.keys(subscriptions).forEach(
116
- (subscription) => delete subscriptions[subscription]
117
- );
118
- // Close the client
119
- await pubSubClient.close();
120
- },
121
-
122
- /**
123
- * Creates a publisher if it does not exist yet
124
- */
125
- addPublisher(topic: string | Array<string>): void {
126
- const topicArray = topic instanceof Array ? topic : [topic];
127
- reportDebug({
128
- namespace,
129
- message: `Registering publisher for topics '${topicArray.join("', '")}'`
130
- });
131
- // Register a new topic if it does not exist yet
132
- for (const topic of topicArray) {
133
- if (!Object.keys(topics).includes(topic)) {
134
- topics[topic] = pubSubClient.topic(topic, {
135
- enableOpenTelemetryTracing: true
136
- });
137
- }
138
- }
139
- },
140
-
141
- /**
142
- * Add message handlers to a subscription
143
- * @param subscription - Name of the Pub/Sub subscription
144
- * @param handler - Function or list of functions to set as message handlers
145
- * @param options - Indicates that the additional options need to handle on Subscriber
146
- */
147
- addSubscriber<T>(
148
- subscription: string,
149
- handler: PubSubMessageHandler<T> | Array<PubSubMessageHandler<T>>,
150
- options: PubSubAddSubscriberOptions = {}
151
- ): void {
152
- const handlers = handler instanceof Array ? handler : [handler];
153
- const isDebezium = options?.isDebezium ?? false;
154
- const first = options?.first ?? false;
155
-
156
- reportDebug({
157
- namespace,
158
- message: `Registering subscriber for subscription '${subscription}'`,
159
- data: { first, handlersCount: handlers.length, isDebezium }
160
- });
161
- if (!Object.keys(subscriptions).includes(subscription)) {
162
- subscriptions[subscription] = {
163
- subscription: pubSubClient.subscription(subscription, {
164
- enableOpenTelemetryTracing: true
165
- }),
166
- handlers: []
167
- };
168
- }
169
-
170
- if (isDebezium) subscriptions[subscription].isDebezium = true;
171
-
172
- if (first) subscriptions[subscription].handlers.push(...handlers);
173
- else subscriptions[subscription].handlers.unshift(...handlers);
174
- },
175
-
176
- /**
177
- * Send a message to a Pub/Sub topic
178
- * @param topic - Name of the topic
179
- * @param message - Content of the message, must be an object that can be JSON stringified
180
- * @param attributes - Attributes for this message, can be used to filter messages on the subscription
181
- * @param orderingKey - Enforce order guarantee of messages sent with the same key
182
- */
183
- async publish(
184
- topic: string,
185
- message: unknown,
186
- attributes?: Attributes,
187
- orderingKey?: string
188
- ): Promise<void> {
189
- if (!topics[topic])
190
- throw new EngineError(`No publisher was registered for topic '${topic}'`);
191
- reportDebug({
192
- namespace,
193
- message: `Sending message to topic '${topic}'`,
194
- data: { message, attributes, orderingKey }
195
- });
196
- await topics[topic].publishMessage({
197
- json: message,
198
- attributes,
199
- orderingKey
200
- });
201
- }
202
- };
1
+ import {
2
+ Attributes,
3
+ PubSub as PubsubClient,
4
+ Message
5
+ } from '@google-cloud/pubsub';
6
+ import { handleMessage } from './handleMessage';
7
+ import {
8
+ PubSubTopicsMap,
9
+ PubSubSubscriptionsMap,
10
+ PubSubAddSubscriberOptions,
11
+ PubSubMessageHandler
12
+ } from './PubSub.types';
13
+ import { EngineError } from 'entities/EngineError';
14
+ import { LifecycleController } from 'entities/LifecycleController';
15
+ import { reportDebug, reportError } from 'utils';
16
+
17
+ const namespace = 'engine:PubSub';
18
+
19
+ /**
20
+ * Associative containing all the subscriptions sorted by topic registered for publishing
21
+ */
22
+ const subscriptions: PubSubSubscriptionsMap = {};
23
+
24
+ /**
25
+ * Associative containing all the topics registered for publishing
26
+ */
27
+ const topics: PubSubTopicsMap = {};
28
+
29
+ const pubSubClient = new PubsubClient();
30
+
31
+ /**
32
+ * This is a singleton service who's role is to manage pub/sub connections
33
+ * It is the preferred way to interact with Pub/Sub as it manages the underlying subscription and handler objects
34
+ * It avoids potential subscription splitting on an instance
35
+ */
36
+ export const PubSub = {
37
+ /**
38
+ * Initialize the registered publishers and subscribers
39
+ */
40
+ async init(): Promise<void> {
41
+ reportDebug({ namespace, message: `Initializing Pub/Sub` });
42
+ // Check that all topics/permissions exist, and that we have permission on them
43
+ await Promise.all([
44
+ // Test that all topics actually exist and that we have permissions
45
+ ...Object.values(topics).map(async (topic) => {
46
+ const [exists] = await topic.exists();
47
+ if (!exists)
48
+ throw new EngineError(`Topic ${topic.name} does not exist`);
49
+ // Test permission ton publish to topic
50
+ const [permissions] = await topic.iam.testPermissions([
51
+ 'pubsub.topics.publish'
52
+ ]);
53
+ const hasPermissions = Object.values(permissions).every(
54
+ (success) => success
55
+ );
56
+ if (!hasPermissions)
57
+ throw new EngineError(
58
+ `Instance does not have appropriate permissions to publish to topic ${topic.name}`
59
+ );
60
+ }),
61
+ // Test that all subscriptions actually exist and that we have permissions
62
+ ...Object.values(subscriptions).map(async ({ subscription }) => {
63
+ const [exists] = await subscription.exists();
64
+ if (!exists)
65
+ throw new EngineError(
66
+ `Subscription ${subscription.name} does not exist`
67
+ );
68
+ // Test permission ton consume subscription
69
+ const [permissions] = await subscription.iam.testPermissions([
70
+ 'pubsub.subscriptions.consume'
71
+ ]);
72
+ const hasPermissions = Object.values(permissions).every(
73
+ (success) => success
74
+ );
75
+ if (!hasPermissions)
76
+ throw new EngineError(
77
+ `Instance does not have appropriate permissions to subscribe to subscription ${subscription.name}`
78
+ );
79
+ })
80
+ ]);
81
+
82
+ // Register handlers on the subscriptions to activate them
83
+ for (const { subscription, handlers, isDebezium } of Object.values(
84
+ subscriptions
85
+ )) {
86
+ subscription.on('message', (message) => {
87
+ handleMessage(
88
+ message as Message,
89
+ subscription,
90
+ handlers,
91
+ isDebezium
92
+ ).catch((error) => {
93
+ reportError(error);
94
+ });
95
+ });
96
+ }
97
+
98
+ LifecycleController.register(PubSub);
99
+ },
100
+
101
+ /**
102
+ * Shutdown the registered publishers and subscribers
103
+ */
104
+ async shutdown(): Promise<void> {
105
+ reportDebug({ namespace, message: `Shutting down Pub/Sub` });
106
+ // Flush all pending messages and shut down connections
107
+ await Promise.all([
108
+ ...Object.values(topics).map(async (topic) => topic.flush()),
109
+ ...Object.values(subscriptions).map(async ({ subscription }) =>
110
+ subscription.close()
111
+ )
112
+ ]);
113
+ // Delete the stored topics/subscriptions
114
+ Object.keys(topics).forEach((topic) => delete topics[topic]);
115
+ Object.keys(subscriptions).forEach(
116
+ (subscription) => delete subscriptions[subscription]
117
+ );
118
+ // Close the client
119
+ await pubSubClient.close();
120
+ },
121
+
122
+ /**
123
+ * Creates a publisher if it does not exist yet
124
+ */
125
+ addPublisher(topic: string | Array<string>): void {
126
+ const topicArray = topic instanceof Array ? topic : [topic];
127
+ reportDebug({
128
+ namespace,
129
+ message: `Registering publisher for topics '${topicArray.join("', '")}'`
130
+ });
131
+ // Register a new topic if it does not exist yet
132
+ for (const topic of topicArray) {
133
+ if (!Object.keys(topics).includes(topic)) {
134
+ topics[topic] = pubSubClient.topic(topic, {
135
+ enableOpenTelemetryTracing: true
136
+ });
137
+ }
138
+ }
139
+ },
140
+
141
+ /**
142
+ * Add message handlers to a subscription
143
+ * @param subscription - Name of the Pub/Sub subscription
144
+ * @param handler - Function or list of functions to set as message handlers
145
+ * @param options - Indicates that the additional options need to handle on Subscriber
146
+ */
147
+ addSubscriber<T>(
148
+ subscription: string,
149
+ handler: PubSubMessageHandler<T> | Array<PubSubMessageHandler<T>>,
150
+ options: PubSubAddSubscriberOptions = {}
151
+ ): void {
152
+ const handlers = handler instanceof Array ? handler : [handler];
153
+ const isDebezium = options?.isDebezium ?? false;
154
+ const first = options?.first ?? false;
155
+
156
+ reportDebug({
157
+ namespace,
158
+ message: `Registering subscriber for subscription '${subscription}'`,
159
+ data: { first, handlersCount: handlers.length, isDebezium }
160
+ });
161
+ if (!Object.keys(subscriptions).includes(subscription)) {
162
+ subscriptions[subscription] = {
163
+ subscription: pubSubClient.subscription(subscription, {
164
+ enableOpenTelemetryTracing: true
165
+ }),
166
+ handlers: []
167
+ };
168
+ }
169
+
170
+ if (isDebezium) subscriptions[subscription].isDebezium = true;
171
+
172
+ if (first) subscriptions[subscription].handlers.push(...handlers);
173
+ else subscriptions[subscription].handlers.unshift(...handlers);
174
+ },
175
+
176
+ /**
177
+ * Send a message to a Pub/Sub topic
178
+ * @param topic - Name of the topic
179
+ * @param message - Content of the message, must be an object that can be JSON stringified
180
+ * @param attributes - Attributes for this message, can be used to filter messages on the subscription
181
+ * @param orderingKey - Enforce order guarantee of messages sent with the same key
182
+ */
183
+ async publish(
184
+ topic: string,
185
+ message: unknown,
186
+ attributes?: Attributes,
187
+ orderingKey?: string
188
+ ): Promise<void> {
189
+ if (!topics[topic])
190
+ throw new EngineError(`No publisher was registered for topic '${topic}'`);
191
+ reportDebug({
192
+ namespace,
193
+ message: `Sending message to topic '${topic}'`,
194
+ data: { message, attributes, orderingKey }
195
+ });
196
+ await topics[topic].publishMessage({
197
+ json: message,
198
+ attributes,
199
+ orderingKey
200
+ });
201
+ }
202
+ };
@@ -1,76 +1,76 @@
1
- import { Topic, Subscription, Attributes } from '@google-cloud/pubsub';
2
- import { DebeziumEvent } from 'const/DebeziumEvent';
3
-
4
- /** List of all active topics */
5
- export interface PubSubTopicsMap {
6
- [topic: string]: Topic;
7
- }
8
-
9
- /** List of subscriptions handled for each topic */
10
- export interface PubSubSubscriptionsMap {
11
- [topic: string]: {
12
- /** The Pub/Sub subscription object */
13
- subscription: Subscription;
14
- /** The message handling functions */
15
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- handlers: Array<PubSubMessageHandler<any>>;
17
- /** Indicates that the subscription from Debezium events */
18
- isDebezium?: boolean;
19
- };
20
- }
21
-
22
- /** Options to setup a subscription */
23
- export interface PubSubAddSubscriberOptions {
24
- /** Should the handlers declared here be added to the top of the queue, and called first when an new message arrives */
25
- first?: boolean;
26
- /** Indicates that the topic is a Debezium CDC topic, additional processing is done on the message */
27
- isDebezium?: boolean;
28
- }
29
-
30
- export type PubSubMessageHandler<T> = (
31
- message: T,
32
- attributes: Attributes,
33
- publishedAt: Date
34
- ) => void | Promise<void>;
35
-
36
- /** Debezium create event payload */
37
- interface PubSubDebeziumCreatePayload<T> {
38
- /** The instance properties before the operation */
39
- before: null;
40
- /** The instance properties after the operation */
41
- after: T;
42
- /** The operation that was executed */
43
- op: DebeziumEvent.Create;
44
- /** List of fields that have changed */
45
- diff: Array<string>;
46
- }
47
-
48
- /** Debezium update event payload */
49
- interface PubSubDebeziumUpdatePayload<T> {
50
- /** The instance properties before the operation */
51
- before: T;
52
- /** The instance properties after the operation */
53
- after: T;
54
- /** The operation that was executed */
55
- op: DebeziumEvent.Update;
56
- /** List of fields that have changed */
57
- diff: Array<string>;
58
- }
59
-
60
- /** Debezium delete event payload */
61
- interface PubSubDebeziumDeletePayload<T> {
62
- /** The instance properties before the operation */
63
- before: T;
64
- /** The instance properties after the operation */
65
- after: null;
66
- /** The operation that was executed */
67
- op: DebeziumEvent.Delete;
68
- /** List of fields that have changed */
69
- diff: Array<string>;
70
- }
71
-
72
- /** Payload of Debezium messages */
73
- export type PubSubDebeziumPayload<T> =
74
- | PubSubDebeziumCreatePayload<T>
75
- | PubSubDebeziumUpdatePayload<T>
76
- | PubSubDebeziumDeletePayload<T>;
1
+ import { Topic, Subscription, Attributes } from '@google-cloud/pubsub';
2
+ import { DebeziumEvent } from 'const/DebeziumEvent';
3
+
4
+ /** List of all active topics */
5
+ export interface PubSubTopicsMap {
6
+ [topic: string]: Topic;
7
+ }
8
+
9
+ /** List of subscriptions handled for each topic */
10
+ export interface PubSubSubscriptionsMap {
11
+ [topic: string]: {
12
+ /** The Pub/Sub subscription object */
13
+ subscription: Subscription;
14
+ /** The message handling functions */
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ handlers: Array<PubSubMessageHandler<any>>;
17
+ /** Indicates that the subscription from Debezium events */
18
+ isDebezium?: boolean;
19
+ };
20
+ }
21
+
22
+ /** Options to setup a subscription */
23
+ export interface PubSubAddSubscriberOptions {
24
+ /** Should the handlers declared here be added to the top of the queue, and called first when an new message arrives */
25
+ first?: boolean;
26
+ /** Indicates that the topic is a Debezium CDC topic, additional processing is done on the message */
27
+ isDebezium?: boolean;
28
+ }
29
+
30
+ export type PubSubMessageHandler<T> = (
31
+ message: T,
32
+ attributes: Attributes,
33
+ publishedAt: Date
34
+ ) => void | Promise<void>;
35
+
36
+ /** Debezium create event payload */
37
+ interface PubSubDebeziumCreatePayload<T> {
38
+ /** The instance properties before the operation */
39
+ before: null;
40
+ /** The instance properties after the operation */
41
+ after: T;
42
+ /** The operation that was executed */
43
+ op: DebeziumEvent.Create;
44
+ /** List of fields that have changed */
45
+ diff: Array<string>;
46
+ }
47
+
48
+ /** Debezium update event payload */
49
+ interface PubSubDebeziumUpdatePayload<T> {
50
+ /** The instance properties before the operation */
51
+ before: T;
52
+ /** The instance properties after the operation */
53
+ after: T;
54
+ /** The operation that was executed */
55
+ op: DebeziumEvent.Update;
56
+ /** List of fields that have changed */
57
+ diff: Array<string>;
58
+ }
59
+
60
+ /** Debezium delete event payload */
61
+ interface PubSubDebeziumDeletePayload<T> {
62
+ /** The instance properties before the operation */
63
+ before: T;
64
+ /** The instance properties after the operation */
65
+ after: null;
66
+ /** The operation that was executed */
67
+ op: DebeziumEvent.Delete;
68
+ /** List of fields that have changed */
69
+ diff: Array<string>;
70
+ }
71
+
72
+ /** Payload of Debezium messages */
73
+ export type PubSubDebeziumPayload<T> =
74
+ | PubSubDebeziumCreatePayload<T>
75
+ | PubSubDebeziumUpdatePayload<T>
76
+ | PubSubDebeziumDeletePayload<T>;