node-server-engine 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +5 -5
  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 { Sequelize, QueryTypes } from 'sequelize';
2
- import { SequelizeMeta } from 'db/models';
3
- import { reportDebug } from 'utils/report';
4
-
5
- const namespace = 'engine:utils:dbMigration';
6
-
7
- /**
8
- * Run migrations on the metadata table
9
- * The table containing the migrations metadata cannot be handled through migrations
10
- * Therefore, we use a more classic approach with this function and pure SQL queries
11
- */
12
- export async function migrateMetadataTable(
13
- sequelize: Sequelize
14
- ): Promise<void> {
15
- reportDebug({ namespace, message: 'Executing metadata migration routine' });
16
-
17
- const query = `SELECT table_name FROM information_schema.tables WHERE table_schema = '${process.env.SQL_DB}'`;
18
-
19
- // We check if we have a custom sequelize_meta table yet
20
- const tables = await sequelize.query<Array<string>>(query, {
21
- type: QueryTypes.SELECT
22
- });
23
-
24
- const hasCustomSequelizeMeta =
25
- process.env.SQL_TYPE === 'postgres'
26
- ? tables.some((table) => table[0] === 'sequelize_meta')
27
- : tables.some((table) => Object.values(table)[0] === 'sequelize_meta');
28
- const hasLegacySequelizeMeta =
29
- process.env.SQL_TYPE === 'postgres'
30
- ? tables.some((table) => table[0] === 'SequelizeMeta')
31
- : tables.some((table) => Object.values(table)[0] === 'SequelizeMeta');
32
- if (!hasCustomSequelizeMeta) {
33
- reportDebug({
34
- namespace,
35
- message: 'No metadata table found, creating new one'
36
- });
37
-
38
- // Define SQL for creating the table based on the database type
39
- let createTableQuery = '';
40
-
41
- switch (process.env.SQL_TYPE) {
42
- case 'mysql':
43
- case 'postgres':
44
- createTableQuery = `
45
- CREATE TABLE sequelize_meta (
46
- name VARCHAR(100) PRIMARY KEY,
47
- version VARCHAR(25),
48
- createdAt TIMESTAMP NOT NULL,
49
- updatedAt TIMESTAMP NOT NULL
50
- )`;
51
- break;
52
- case 'mssql':
53
- createTableQuery = `
54
- CREATE TABLE sequelize_meta (
55
- name VARCHAR(100) PRIMARY KEY,
56
- version VARCHAR(25),
57
- createdAt DATETIME NOT NULL,
58
- updatedAt DATETIME NOT NULL
59
- )`;
60
- break;
61
- default:
62
- throw new Error('Unsupported SQL type');
63
- }
64
-
65
- // Create the new sequelize_meta table if it does not exist
66
- await sequelize.query(createTableQuery, { type: QueryTypes.RAW });
67
-
68
- // Migrate the data from the old table to the new one if needed
69
- if (hasLegacySequelizeMeta) {
70
- reportDebug({
71
- namespace,
72
- message: 'Legacy metadata table found, migrating data'
73
- });
74
-
75
- const migrations = await sequelize.query<SequelizeMeta>(
76
- 'SELECT name FROM SequelizeMeta ORDER BY name',
77
- {
78
- type: QueryTypes.SELECT
79
- }
80
- );
81
-
82
- const insertQuery = `
83
- INSERT INTO sequelize_meta (name, version, createdAt, updatedAt) VALUES
84
- ${migrations
85
- .map((migration) => {
86
- switch (process.env.SQL_TYPE) {
87
- case 'mysql':
88
- case 'postgres':
89
- return `('${migration.name}', NULL, NOW(), NOW())`;
90
- case 'mssql':
91
- return `('${migration.name}', NULL, GETDATE(), GETDATE())`;
92
- default:
93
- throw new Error('Unsupported SQL type');
94
- }
95
- })
96
- .join(',')}
97
- `;
98
-
99
- await sequelize.query(insertQuery, { type: QueryTypes.INSERT });
100
- }
101
- }
102
- }
1
+ import { Sequelize, QueryTypes } from 'sequelize';
2
+ import { SequelizeMeta } from 'db/models';
3
+ import { reportDebug } from 'utils/report';
4
+
5
+ const namespace = 'engine:utils:dbMigration';
6
+
7
+ /**
8
+ * Run migrations on the metadata table
9
+ * The table containing the migrations metadata cannot be handled through migrations
10
+ * Therefore, we use a more classic approach with this function and pure SQL queries
11
+ */
12
+ export async function migrateMetadataTable(
13
+ sequelize: Sequelize
14
+ ): Promise<void> {
15
+ reportDebug({ namespace, message: 'Executing metadata migration routine' });
16
+
17
+ const query = `SELECT table_name FROM information_schema.tables`;
18
+
19
+ // We check if we have a custom sequelize_meta table yet
20
+ const tables = await sequelize.query<Array<string>>(query, {
21
+ type: QueryTypes.SELECT
22
+ });
23
+
24
+ const hasCustomSequelizeMeta =
25
+ process.env.SQL_TYPE === 'postgres'
26
+ ? tables.some((table) => table[0] === 'sequelize_meta')
27
+ : tables.some((table) => Object.values(table)[0] === 'sequelize_meta');
28
+ const hasLegacySequelizeMeta =
29
+ process.env.SQL_TYPE === 'postgres'
30
+ ? tables.some((table) => table[0] === 'SequelizeMeta')
31
+ : tables.some((table) => Object.values(table)[0] === 'SequelizeMeta');
32
+ if (!hasCustomSequelizeMeta) {
33
+ reportDebug({
34
+ namespace,
35
+ message: 'No metadata table found, creating new one'
36
+ });
37
+
38
+ // Define SQL for creating the table based on the database type
39
+ let createTableQuery = '';
40
+
41
+ switch (process.env.SQL_TYPE) {
42
+ case 'mysql':
43
+ case 'postgres':
44
+ createTableQuery = `
45
+ CREATE TABLE sequelize_meta (
46
+ name VARCHAR(100) PRIMARY KEY,
47
+ version VARCHAR(25),
48
+ createdAt TIMESTAMP NOT NULL,
49
+ updatedAt TIMESTAMP NOT NULL
50
+ )`;
51
+ break;
52
+ case 'mssql':
53
+ createTableQuery = `
54
+ CREATE TABLE sequelize_meta (
55
+ name VARCHAR(100) PRIMARY KEY,
56
+ version VARCHAR(25),
57
+ createdAt DATETIME NOT NULL,
58
+ updatedAt DATETIME NOT NULL
59
+ )`;
60
+ break;
61
+ default:
62
+ throw new Error('Unsupported SQL type');
63
+ }
64
+
65
+ // Create the new sequelize_meta table if it does not exist
66
+ await sequelize.query(createTableQuery, { type: QueryTypes.RAW });
67
+
68
+ // Migrate the data from the old table to the new one if needed
69
+ if (hasLegacySequelizeMeta) {
70
+ reportDebug({
71
+ namespace,
72
+ message: 'Legacy metadata table found, migrating data'
73
+ });
74
+
75
+ const migrations = await sequelize.query<SequelizeMeta>(
76
+ 'SELECT name FROM SequelizeMeta ORDER BY name',
77
+ {
78
+ type: QueryTypes.SELECT
79
+ }
80
+ );
81
+
82
+ const insertQuery = `
83
+ INSERT INTO sequelize_meta (name, version, createdAt, updatedAt) VALUES
84
+ ${migrations
85
+ .map((migration) => {
86
+ switch (process.env.SQL_TYPE) {
87
+ case 'mysql':
88
+ case 'postgres':
89
+ return `('${migration.name}', NULL, NOW(), NOW())`;
90
+ case 'mssql':
91
+ return `('${migration.name}', NULL, GETDATE(), GETDATE())`;
92
+ default:
93
+ throw new Error('Unsupported SQL type');
94
+ }
95
+ })
96
+ .join(',')}
97
+ `;
98
+
99
+ await sequelize.query(insertQuery, { type: QueryTypes.INSERT });
100
+ }
101
+ }
102
+ }
@@ -1,31 +1,31 @@
1
- import { bool, num, host, email, port, url, json } from 'envalid';
2
-
3
- import {
4
- envIsIpList,
5
- envIsPath,
6
- envIsHostList,
7
- envIsStringList,
8
- envIsString
9
- } from './validators';
10
-
11
- /**
12
- * envalid validators to use with checkEnvironment made with evalid.makeValidator and validator.js
13
- * is* functions. + Also Added isString, isHost, and isIPList.
14
- *
15
- *
16
- * envalid docs: https://github.com/af/envalid
17
- */
18
- export const envAssert = {
19
- isString: envIsString,
20
- isBoolean: bool,
21
- isNumber: num,
22
- isEmail: email,
23
- isHost: host,
24
- isPort: port,
25
- isURL: url,
26
- isJSON: json,
27
- isIPList: envIsIpList,
28
- isPath: envIsPath,
29
- isHostList: envIsHostList,
30
- isStringList: envIsStringList
31
- };
1
+ import { bool, num, host, email, port, url, json } from 'envalid';
2
+
3
+ import {
4
+ envIsIpList,
5
+ envIsPath,
6
+ envIsHostList,
7
+ envIsStringList,
8
+ envIsString
9
+ } from './validators';
10
+
11
+ /**
12
+ * envalid validators to use with checkEnvironment made with evalid.makeValidator and validator.js
13
+ * is* functions. + Also Added isString, isHost, and isIPList.
14
+ *
15
+ *
16
+ * envalid docs: https://github.com/af/envalid
17
+ */
18
+ export const envAssert = {
19
+ isString: envIsString,
20
+ isBoolean: bool,
21
+ isNumber: num,
22
+ isEmail: email,
23
+ isHost: host,
24
+ isPort: port,
25
+ isURL: url,
26
+ isJSON: json,
27
+ isIPList: envIsIpList,
28
+ isPath: envIsPath,
29
+ isHostList: envIsHostList,
30
+ isStringList: envIsStringList
31
+ };
@@ -1 +1 @@
1
- export * from './envAssert';
1
+ export * from './envAssert';
@@ -1,17 +1,17 @@
1
- import { makeValidator } from 'envalid';
2
- import validator from 'validator';
3
-
4
- /**
5
- * Validate that a string is a list of comma separated host names
6
- */
7
- export const envIsHostList = makeValidator((value): boolean => {
8
- if (!value) throw new Error('expected a host name');
9
- const hosts = value.split(',');
10
- const valid = hosts.every(
11
- (host) =>
12
- validator.isIP(host.trim()) ||
13
- validator.isFQDN(host.trim(), { require_tld: false })
14
- );
15
- if (!valid) throw new Error('expected a host name');
16
- return valid;
17
- });
1
+ import { makeValidator } from 'envalid';
2
+ import validator from 'validator';
3
+
4
+ /**
5
+ * Validate that a string is a list of comma separated host names
6
+ */
7
+ export const envIsHostList = makeValidator((value): boolean => {
8
+ if (!value) throw new Error('expected a host name');
9
+ const hosts = value.split(',');
10
+ const valid = hosts.every(
11
+ (host) =>
12
+ validator.isIP(host.trim()) ||
13
+ validator.isFQDN(host.trim(), { require_tld: false })
14
+ );
15
+ if (!valid) throw new Error('expected a host name');
16
+ return valid;
17
+ });
@@ -1,5 +1,5 @@
1
- export * from './ipList';
2
- export * from './path';
3
- export * from './hostList';
4
- export * from './stringList';
5
- export * from './string';
1
+ export * from './ipList';
2
+ export * from './path';
3
+ export * from './hostList';
4
+ export * from './stringList';
5
+ export * from './string';
@@ -1,13 +1,13 @@
1
- import { makeValidator } from 'envalid';
2
- import validator from 'validator';
3
-
4
- /**
5
- * Validate that a string is a list of comma separated ip (V4/V6) addresses
6
- */
7
- export const envIsIpList = makeValidator((value): boolean => {
8
- if (!value) throw new Error('expected an ip address');
9
- const ips = value.split(',');
10
- const valid = ips.every((v) => validator.isIP(v));
11
- if (!valid) throw new Error('expected an ip address');
12
- return valid;
13
- });
1
+ import { makeValidator } from 'envalid';
2
+ import validator from 'validator';
3
+
4
+ /**
5
+ * Validate that a string is a list of comma separated ip (V4/V6) addresses
6
+ */
7
+ export const envIsIpList = makeValidator((value): boolean => {
8
+ if (!value) throw new Error('expected an ip address');
9
+ const ips = value.split(',');
10
+ const valid = ips.every((v) => validator.isIP(v));
11
+ if (!valid) throw new Error('expected an ip address');
12
+ return valid;
13
+ });
@@ -1,13 +1,13 @@
1
- import { makeValidator } from 'envalid';
2
-
3
- const pathRegex = /^(\.\.\/(?:\.\.\/)*)?(?!.*?\/\/)(?!(?:.*\/)?\.+(?:\/|$)).+$/;
4
-
5
- /**
6
- * Validate that a string is a system path (linux only)
7
- */
8
- export const envIsPath = makeValidator((value): boolean => {
9
- if (!value) throw new Error('expected a path');
10
- const valid = pathRegex.test(value);
11
- if (!valid) throw new Error('expected a path');
12
- return valid;
13
- });
1
+ import { makeValidator } from 'envalid';
2
+
3
+ const pathRegex = /^(\.\.\/(?:\.\.\/)*)?(?!.*?\/\/)(?!(?:.*\/)?\.+(?:\/|$)).+$/;
4
+
5
+ /**
6
+ * Validate that a string is a system path (linux only)
7
+ */
8
+ export const envIsPath = makeValidator((value): boolean => {
9
+ if (!value) throw new Error('expected a path');
10
+ const valid = pathRegex.test(value);
11
+ if (!valid) throw new Error('expected a path');
12
+ return valid;
13
+ });
@@ -1,9 +1,9 @@
1
- import { makeValidator } from 'envalid';
2
-
3
- /**
4
- * Validate that aa value is a string
5
- */
6
- export const envIsString = makeValidator((value): boolean => {
7
- if (!value || typeof value !== 'string') throw new Error('expected a string');
8
- return value.length > 0;
9
- });
1
+ import { makeValidator } from 'envalid';
2
+
3
+ /**
4
+ * Validate that aa value is a string
5
+ */
6
+ export const envIsString = makeValidator((value): boolean => {
7
+ if (!value || typeof value !== 'string') throw new Error('expected a string');
8
+ return value.length > 0;
9
+ });
@@ -1,13 +1,13 @@
1
- import { makeValidator } from 'envalid';
2
-
3
- /**
4
- * Validate that a string is a list of comma separated strings
5
-
6
- */
7
- export const envIsStringList = makeValidator((value): boolean => {
8
- if (!value) throw new Error('expected a string');
9
- const strings = value.split(',');
10
- const valid = strings.every((v) => typeof v === 'string');
11
- if (!valid) throw new Error('expected a string');
12
- return valid;
13
- });
1
+ import { makeValidator } from 'envalid';
2
+
3
+ /**
4
+ * Validate that a string is a list of comma separated strings
5
+
6
+ */
7
+ export const envIsStringList = makeValidator((value): boolean => {
8
+ if (!value) throw new Error('expected a string');
9
+ const strings = value.split(',');
10
+ const valid = strings.every((v) => typeof v === 'string');
11
+ if (!valid) throw new Error('expected a string');
12
+ return valid;
13
+ });
@@ -1,17 +1,17 @@
1
- /**
2
- * Filters an object, returns a copy of that object with only the keys specified in the whitelist
3
- * @param object - The object to filter
4
- * @param whitelist - A list of keys to keep
5
- */
6
- export function filter<T extends Record<string, unknown>>(
7
- object: T,
8
- whitelist: Array<string>
9
- ): T {
10
- const copy: Record<string, unknown> = {};
11
- for (const key of Object.keys(object)) {
12
- if (whitelist.includes(key)) {
13
- copy[key] = object[key];
14
- }
15
- }
16
- return copy as T;
17
- }
1
+ /**
2
+ * Filters an object, returns a copy of that object with only the keys specified in the whitelist
3
+ * @param object - The object to filter
4
+ * @param whitelist - A list of keys to keep
5
+ */
6
+ export function filter<T extends Record<string, unknown>>(
7
+ object: T,
8
+ whitelist: Array<string>
9
+ ): T {
10
+ const copy: Record<string, unknown> = {};
11
+ for (const key of Object.keys(object)) {
12
+ if (whitelist.includes(key)) {
13
+ copy[key] = object[key];
14
+ }
15
+ }
16
+ return copy as T;
17
+ }
@@ -1 +1 @@
1
- export * from './filter';
1
+ export * from './filter';
@@ -1,51 +1,51 @@
1
- import { AxiosRequestConfig, AxiosResponse } from 'axios';
2
- import chai, { expect } from 'chai';
3
- import { faker } from '@faker-js/faker';
4
- import { stub, SinonStub, match } from 'sinon';
5
- import sinonChai from 'sinon-chai';
6
- import { getDynamicLink } from './getDynamicLink';
7
- import { DynamicLinkResponseBody } from './getDynamicLink.types';
8
- import * as tlsRequest from 'utils/tlsRequest/tlsRequest';
9
-
10
- chai.use(sinonChai);
11
-
12
- describe('Utils - Get Dynamic Link', () => {
13
- let expectedPayload: AxiosRequestConfig;
14
- let path: string;
15
- let requestStub: SinonStub;
16
- let link: string;
17
-
18
- beforeEach(() => {
19
- link = faker.internet.url();
20
- requestStub = stub(tlsRequest, 'tlsRequest').resolves({
21
- data: { link }
22
- } as AxiosResponse<DynamicLinkResponseBody>);
23
- path = faker.system.directoryPath();
24
- expectedPayload = {
25
- method: 'get',
26
- url: '/link',
27
- baseURL: process.env.LINKS_SERVICE_URL,
28
- params: {
29
- path
30
- }
31
- };
32
- });
33
-
34
- it('should get a dynamic link', async () => {
35
- // should return a link from the res
36
- const dynamicLink = await getDynamicLink(path);
37
- expect(dynamicLink).to.equal(link);
38
- expect(requestStub).to.have.been.calledOnceWithExactly(
39
- match(expectedPayload)
40
- );
41
- });
42
-
43
- it('should get a dynamic link with custom settings', async () => {
44
- // should return a link from the res
45
- const dynamicLink = await getDynamicLink(path, { short: false });
46
- expect(dynamicLink).to.equal(link);
47
- expect(requestStub).to.have.been.calledOnceWithExactly(
48
- match({ ...expectedPayload, params: { path, short: false } })
49
- );
50
- });
51
- });
1
+ import { AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import chai, { expect } from 'chai';
3
+ import { faker } from '@faker-js/faker';
4
+ import { stub, SinonStub, match } from 'sinon';
5
+ import sinonChai from 'sinon-chai';
6
+ import { getDynamicLink } from './getDynamicLink';
7
+ import { DynamicLinkResponseBody } from './getDynamicLink.types';
8
+ import * as tlsRequest from 'utils/tlsRequest/tlsRequest';
9
+
10
+ chai.use(sinonChai);
11
+
12
+ describe('Utils - Get Dynamic Link', () => {
13
+ let expectedPayload: AxiosRequestConfig;
14
+ let path: string;
15
+ let requestStub: SinonStub;
16
+ let link: string;
17
+
18
+ beforeEach(() => {
19
+ link = faker.internet.url();
20
+ requestStub = stub(tlsRequest, 'tlsRequest').resolves({
21
+ data: { link }
22
+ } as AxiosResponse<DynamicLinkResponseBody>);
23
+ path = faker.system.directoryPath();
24
+ expectedPayload = {
25
+ method: 'get',
26
+ url: '/link',
27
+ baseURL: process.env.LINKS_SERVICE_URL,
28
+ params: {
29
+ path
30
+ }
31
+ };
32
+ });
33
+
34
+ it('should get a dynamic link', async () => {
35
+ // should return a link from the res
36
+ const dynamicLink = await getDynamicLink(path);
37
+ expect(dynamicLink).to.equal(link);
38
+ expect(requestStub).to.have.been.calledOnceWithExactly(
39
+ match(expectedPayload)
40
+ );
41
+ });
42
+
43
+ it('should get a dynamic link with custom settings', async () => {
44
+ // should return a link from the res
45
+ const dynamicLink = await getDynamicLink(path, { short: false });
46
+ expect(dynamicLink).to.equal(link);
47
+ expect(requestStub).to.have.been.calledOnceWithExactly(
48
+ match({ ...expectedPayload, params: { path, short: false } })
49
+ );
50
+ });
51
+ });
@@ -1,28 +1,28 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import {
3
- getDynamicLinksOptions,
4
- DynamicLinkResponseBody
5
- } from './getDynamicLink.types';
6
- import { validateDynamicLinkEnvironment } from './getDynamicLink.validate';
7
- import { tlsRequest } from 'utils/tlsRequest';
8
-
9
- /** Fetch a dynamic link from the links service */
10
- export async function getDynamicLink(
11
- path: string,
12
- options: getDynamicLinksOptions = {}
13
- ): Promise<string> {
14
- validateDynamicLinkEnvironment();
15
- const option: AxiosRequestConfig = {
16
- method: 'get',
17
- url: '/link',
18
- baseURL: process.env.LINKS_SERVICE_URL,
19
- params: {
20
- path,
21
- short: options.short ?? true
22
- }
23
- };
24
- const {
25
- data: { link }
26
- } = await tlsRequest<DynamicLinkResponseBody>(option);
27
- return link;
28
- }
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import {
3
+ getDynamicLinksOptions,
4
+ DynamicLinkResponseBody
5
+ } from './getDynamicLink.types';
6
+ import { validateDynamicLinkEnvironment } from './getDynamicLink.validate';
7
+ import { tlsRequest } from 'utils/tlsRequest';
8
+
9
+ /** Fetch a dynamic link from the links service */
10
+ export async function getDynamicLink(
11
+ path: string,
12
+ options: getDynamicLinksOptions = {}
13
+ ): Promise<string> {
14
+ validateDynamicLinkEnvironment();
15
+ const option: AxiosRequestConfig = {
16
+ method: 'get',
17
+ url: '/link',
18
+ baseURL: process.env.LINKS_SERVICE_URL,
19
+ params: {
20
+ path,
21
+ short: options.short ?? true
22
+ }
23
+ };
24
+ const {
25
+ data: { link }
26
+ } = await tlsRequest<DynamicLinkResponseBody>(option);
27
+ return link;
28
+ }
@@ -1,11 +1,11 @@
1
- /** Options to fetch dynamic links */
2
- export interface getDynamicLinksOptions {
3
- /** Make a shortened link */
4
- short?: boolean;
5
- }
6
-
7
- /** Dynamic link query server response */
8
- export interface DynamicLinkResponseBody {
9
- /** The generated dynamic link */
10
- link: string;
11
- }
1
+ /** Options to fetch dynamic links */
2
+ export interface getDynamicLinksOptions {
3
+ /** Make a shortened link */
4
+ short?: boolean;
5
+ }
6
+
7
+ /** Dynamic link query server response */
8
+ export interface DynamicLinkResponseBody {
9
+ /** The generated dynamic link */
10
+ link: string;
11
+ }
@@ -1,6 +1,6 @@
1
- import { assertEnvironment, envAssert } from 'utils';
2
-
3
- /** Environment variable validator for get dynamic link from LinkService */
4
- export function validateDynamicLinkEnvironment(): void {
5
- assertEnvironment({ LINKS_SERVICE_URL: envAssert.isURL() });
6
- }
1
+ import { assertEnvironment, envAssert } from 'utils';
2
+
3
+ /** Environment variable validator for get dynamic link from LinkService */
4
+ export function validateDynamicLinkEnvironment(): void {
5
+ assertEnvironment({ LINKS_SERVICE_URL: envAssert.isURL() });
6
+ }