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 +1 @@
1
- {"version":3,"file":"jwt.js","names":["_jsonwebtoken","require","_fs","_interopRequireDefault","_const","_EngineError","_KeySet","_WebError","_checkEnvironment","_envAssert","_report","keySet","exports","adminKeySet","namespace","initKeySets","process","env","CHART","ECDSA_PUBLIC_KEY","EngineError","message","KeySet","file","AUTH_SERVICE_URL","internal","promise","init","bind","ADMIN_API_ECDSA_PUBLIC_KEY","pem","push","Promise","all","shutdownKeySets","shutdown","jwtGetKey","header","callback","NODE_ENV","JWT_SECRET","kid","data","reportDebug","key","getKey","error","Error","WebError","statusCode","errorCode","jwtVerify","token","issuer","TokenIssuer","AUTH_SERVICE","algorithms","assertEnvironment","envAssert","isString","ACCESS_TOKEN_AUDIENCE","ACCESS_TOKEN_ISSUER","ADMIN_API_ACCESS_TOKEN_AUDIENCE","ADMIN_ACCESS_TOKEN_ISSUER","options","audience","ADMIN_API","resolve","reject","verify","result","undefined","generateJwtToken","user","signOptions","algorithm","expiresIn","keyid","Object","keys","getKeys","privateKey","fs","readFileSync","PRIVATE_KEY_PATH","sign"],"sources":["../../../src/utils/jwt/jwt.ts"],"sourcesContent":["import {\n verify,\n JwtHeader,\n SigningKeyCallback,\n Algorithm,\n VerifyOptions,\n sign\n} from 'jsonwebtoken';\nimport fs from 'fs';\nimport path from 'path';\nimport { UserTokenPayload } from './jwt.types';\nimport { TokenIssuer } from 'const';\nimport { EngineError } from 'entities/EngineError';\nimport { KeySet } from 'entities/KeySet';\nimport { WebError } from 'entities/WebError';\nimport { assertEnvironment } from 'utils/checkEnvironment';\nimport { envAssert } from 'utils/envAssert';\nimport { reportDebug } from 'utils/report';\n\nexport let keySet: KeySet | undefined;\nexport let adminKeySet: KeySet | undefined;\n\nconst namespace = 'engine:utils:jwt';\n\n/** Initiate key fetching mechanism */\nexport async function initKeySets(): Promise<void> {\n // Create the KeySet instance\n // The auth-service fetches its key from its disk and not from a network request\n // This prevents fetch failures the first time the auth-service is started\n if (process.env.CHART === 'auth-service') {\n if (!process.env.ECDSA_PUBLIC_KEY)\n throw new EngineError({\n message: 'Environment variable \"ECDSA_PUBLIC_KEY\" is not defined'\n });\n keySet = new KeySet(process.env.ECDSA_PUBLIC_KEY, { file: true });\n } else {\n if (process.env.AUTH_SERVICE_URL)\n keySet = new KeySet(\n `${process.env.AUTH_SERVICE_URL}/.well-known/jwks.json`,\n { internal: true }\n );\n else\n keySet = new KeySet(`./keys/jwks.json`, { internal: true, file: true });\n\n if (!keySet)\n throw new EngineError({\n message:\n 'Environment variable \"AUTH_SERVICE_URL\" is not defined or JWKS not found'\n });\n }\n const promise = [keySet.init.bind(keySet)()];\n\n // Load the key set for the admin api\n if (!process.env.ADMIN_API_ECDSA_PUBLIC_KEY)\n throw new EngineError({\n message:\n \"Admin API's authentication JWT signing public key is not defined\"\n });\n adminKeySet = new KeySet(process.env.ADMIN_API_ECDSA_PUBLIC_KEY, {\n pem: true\n });\n promise.push(adminKeySet.init.bind(adminKeySet)());\n\n await Promise.all(promise);\n}\n\n/** Stop fetching keys regularly */\nexport function shutdownKeySets(): void {\n if (keySet) keySet.shutdown.bind(keySet)();\n if (adminKeySet) adminKeySet.shutdown.bind(adminKeySet)();\n}\n\n/** Get the JWT public key */\nfunction jwtGetKey(header: JwtHeader, callback: SigningKeyCallback): void {\n // In test environment we return the symmetric signature secret\n if (process.env.NODE_ENV === 'test') {\n callback(null, process.env.JWT_SECRET);\n return;\n }\n // Check that KeySet has been initialized\n if (!keySet || !adminKeySet) {\n callback(new EngineError({ message: 'KeySet has not been initialized' }));\n return;\n }\n // Check that the token has a key ID\n if (!header.kid) {\n callback(\n new EngineError({\n message:\n 'Token has not key ID in header, impossible to match with known key',\n data: header\n })\n );\n return;\n }\n\n // In test environment we use a symmetrical secret bases signature\n if (process.env.NODE_ENV === 'test') {\n callback(null, process.env.JWT_SECRET);\n return;\n }\n reportDebug({\n namespace,\n message: `Looking for key with ID \"${header.kid}\"`\n });\n // Go through each key set to check if the token's key is in one of them\n let key;\n try {\n key = keySet.getKey(header.kid);\n } catch (error: Error | null | unknown) {\n callback(error instanceof Error ? error : null);\n return;\n }\n\n if (key) {\n reportDebug({ namespace, message: `Found key with ID \"${header.kid}\"` });\n callback(null, key);\n return;\n }\n callback(\n new WebError({\n statusCode: 401,\n errorCode: 'unauthorized',\n message: 'Could not find the tokens key in any key set',\n data: { kid: header.kid }\n })\n );\n}\n\n/** Verify an user Json Web Token */\nexport async function jwtVerify(\n token: string,\n issuer: TokenIssuer = TokenIssuer.AUTH_SERVICE\n): Promise<UserTokenPayload> {\n let algorithms = ['ES256' as Algorithm];\n if (process.env.NODE_ENV === 'test') {\n assertEnvironment({ JWT_SECRET: envAssert.isString() });\n algorithms = ['HS256' as Algorithm];\n }\n assertEnvironment({\n ACCESS_TOKEN_AUDIENCE: envAssert.isString(),\n ACCESS_TOKEN_ISSUER: envAssert.isString(),\n ADMIN_API_ACCESS_TOKEN_AUDIENCE: envAssert.isString(),\n ADMIN_ACCESS_TOKEN_ISSUER: envAssert.isString()\n });\n let options: VerifyOptions | undefined;\n\n switch (issuer) {\n case TokenIssuer.AUTH_SERVICE:\n options = {\n audience: [process.env.ACCESS_TOKEN_AUDIENCE as string],\n issuer: [process.env.ACCESS_TOKEN_ISSUER as string],\n algorithms\n };\n break;\n case TokenIssuer.ADMIN_API:\n options = {\n audience: [process.env.ADMIN_API_ACCESS_TOKEN_AUDIENCE as string],\n issuer: [process.env.ADMIN_ACCESS_TOKEN_ISSUER as string],\n algorithms\n };\n break;\n default:\n throw new EngineError({\n message: `Invalid token issuer specified \"${issuer as string}\"`\n });\n }\n\n return new Promise<UserTokenPayload>((resolve, reject) => {\n verify(token, jwtGetKey, options, (error, result) => {\n if (error) {\n reject(\n new WebError({\n errorCode: 'unauthorized',\n statusCode: 401,\n message: 'Invalid token supplied',\n data: { token },\n error: error instanceof Error ? error : undefined\n })\n );\n return;\n }\n resolve(result as UserTokenPayload);\n });\n });\n}\n\nexport function generateJwtToken(user: unknown) {\n const signOptions = {\n algorithm: 'ES256' as const, // or 'ES256' as Algorithm\n expiresIn: '1h',\n issuer: process.env.ACCESS_TOKEN_ISSUER,\n audience: process.env.ACCESS_TOKEN_AUDIENCE,\n keyid: Object.keys(keySet?.getKeys() ?? {})[0]\n };\n\n const privateKey = fs.readFileSync(\n process.env.PRIVATE_KEY_PATH ?? 'keys/private-key.pem',\n 'utf8'\n );\n const token = sign({ user }, privateKey, signOptions);\n\n return token;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"jwt.js","names":["_jsonwebtoken","require","_fs","_interopRequireDefault","_const","_EngineError","_KeySet","_WebError","_checkEnvironment","_envAssert","_report","keySet","exports","adminKeySet","namespace","initKeySets","process","env","CHART","ECDSA_PUBLIC_KEY","EngineError","message","KeySet","file","AUTH_SERVICE_URL","internal","promise","init","bind","ADMIN_API_ECDSA_PUBLIC_KEY","pem","push","Promise","all","shutdownKeySets","shutdown","jwtGetKey","header","callback","NODE_ENV","JWT_SECRET","kid","data","reportDebug","key","getKey","error","Error","WebError","statusCode","errorCode","jwtVerify","token","issuer","TokenIssuer","AUTH_SERVICE","algorithms","assertEnvironment","envAssert","isString","ACCESS_TOKEN_AUDIENCE","ACCESS_TOKEN_ISSUER","ADMIN_API_ACCESS_TOKEN_AUDIENCE","ADMIN_ACCESS_TOKEN_ISSUER","options","audience","ADMIN_API","resolve","reject","verify","result","undefined","generateJwtToken","user","signOptions","algorithm","expiresIn","keyid","Object","keys","getKeys","privateKey","fs","readFileSync","PRIVATE_KEY_PATH","sign"],"sources":["../../../src/utils/jwt/jwt.ts"],"sourcesContent":["import {\r\n verify,\r\n JwtHeader,\r\n SigningKeyCallback,\r\n Algorithm,\r\n VerifyOptions,\r\n sign\r\n} from 'jsonwebtoken';\r\nimport fs from 'fs';\r\nimport path from 'path';\r\nimport { UserTokenPayload } from './jwt.types';\r\nimport { TokenIssuer } from 'const';\r\nimport { EngineError } from 'entities/EngineError';\r\nimport { KeySet } from 'entities/KeySet';\r\nimport { WebError } from 'entities/WebError';\r\nimport { assertEnvironment } from 'utils/checkEnvironment';\r\nimport { envAssert } from 'utils/envAssert';\r\nimport { reportDebug } from 'utils/report';\r\n\r\nexport let keySet: KeySet | undefined;\r\nexport let adminKeySet: KeySet | undefined;\r\n\r\nconst namespace = 'engine:utils:jwt';\r\n\r\n/** Initiate key fetching mechanism */\r\nexport async function initKeySets(): Promise<void> {\r\n // Create the KeySet instance\r\n // The auth-service fetches its key from its disk and not from a network request\r\n // This prevents fetch failures the first time the auth-service is started\r\n if (process.env.CHART === 'auth-service') {\r\n if (!process.env.ECDSA_PUBLIC_KEY)\r\n throw new EngineError({\r\n message: 'Environment variable \"ECDSA_PUBLIC_KEY\" is not defined'\r\n });\r\n keySet = new KeySet(process.env.ECDSA_PUBLIC_KEY, { file: true });\r\n } else {\r\n if (process.env.AUTH_SERVICE_URL)\r\n keySet = new KeySet(\r\n `${process.env.AUTH_SERVICE_URL}/.well-known/jwks.json`,\r\n { internal: true }\r\n );\r\n else\r\n keySet = new KeySet(`./keys/jwks.json`, { internal: true, file: true });\r\n\r\n if (!keySet)\r\n throw new EngineError({\r\n message:\r\n 'Environment variable \"AUTH_SERVICE_URL\" is not defined or JWKS not found'\r\n });\r\n }\r\n const promise = [keySet.init.bind(keySet)()];\r\n\r\n // Load the key set for the admin api\r\n if (!process.env.ADMIN_API_ECDSA_PUBLIC_KEY)\r\n throw new EngineError({\r\n message:\r\n \"Admin API's authentication JWT signing public key is not defined\"\r\n });\r\n adminKeySet = new KeySet(process.env.ADMIN_API_ECDSA_PUBLIC_KEY, {\r\n pem: true\r\n });\r\n promise.push(adminKeySet.init.bind(adminKeySet)());\r\n\r\n await Promise.all(promise);\r\n}\r\n\r\n/** Stop fetching keys regularly */\r\nexport function shutdownKeySets(): void {\r\n if (keySet) keySet.shutdown.bind(keySet)();\r\n if (adminKeySet) adminKeySet.shutdown.bind(adminKeySet)();\r\n}\r\n\r\n/** Get the JWT public key */\r\nfunction jwtGetKey(header: JwtHeader, callback: SigningKeyCallback): void {\r\n // In test environment we return the symmetric signature secret\r\n if (process.env.NODE_ENV === 'test') {\r\n callback(null, process.env.JWT_SECRET);\r\n return;\r\n }\r\n // Check that KeySet has been initialized\r\n if (!keySet || !adminKeySet) {\r\n callback(new EngineError({ message: 'KeySet has not been initialized' }));\r\n return;\r\n }\r\n // Check that the token has a key ID\r\n if (!header.kid) {\r\n callback(\r\n new EngineError({\r\n message:\r\n 'Token has not key ID in header, impossible to match with known key',\r\n data: header\r\n })\r\n );\r\n return;\r\n }\r\n\r\n // In test environment we use a symmetrical secret bases signature\r\n if (process.env.NODE_ENV === 'test') {\r\n callback(null, process.env.JWT_SECRET);\r\n return;\r\n }\r\n reportDebug({\r\n namespace,\r\n message: `Looking for key with ID \"${header.kid}\"`\r\n });\r\n // Go through each key set to check if the token's key is in one of them\r\n let key;\r\n try {\r\n key = keySet.getKey(header.kid);\r\n } catch (error: Error | null | unknown) {\r\n callback(error instanceof Error ? error : null);\r\n return;\r\n }\r\n\r\n if (key) {\r\n reportDebug({ namespace, message: `Found key with ID \"${header.kid}\"` });\r\n callback(null, key);\r\n return;\r\n }\r\n callback(\r\n new WebError({\r\n statusCode: 401,\r\n errorCode: 'unauthorized',\r\n message: 'Could not find the tokens key in any key set',\r\n data: { kid: header.kid }\r\n })\r\n );\r\n}\r\n\r\n/** Verify an user Json Web Token */\r\nexport async function jwtVerify(\r\n token: string,\r\n issuer: TokenIssuer = TokenIssuer.AUTH_SERVICE\r\n): Promise<UserTokenPayload> {\r\n let algorithms = ['ES256' as Algorithm];\r\n if (process.env.NODE_ENV === 'test') {\r\n assertEnvironment({ JWT_SECRET: envAssert.isString() });\r\n algorithms = ['HS256' as Algorithm];\r\n }\r\n assertEnvironment({\r\n ACCESS_TOKEN_AUDIENCE: envAssert.isString(),\r\n ACCESS_TOKEN_ISSUER: envAssert.isString(),\r\n ADMIN_API_ACCESS_TOKEN_AUDIENCE: envAssert.isString(),\r\n ADMIN_ACCESS_TOKEN_ISSUER: envAssert.isString()\r\n });\r\n let options: VerifyOptions | undefined;\r\n\r\n switch (issuer) {\r\n case TokenIssuer.AUTH_SERVICE:\r\n options = {\r\n audience: [process.env.ACCESS_TOKEN_AUDIENCE as string],\r\n issuer: [process.env.ACCESS_TOKEN_ISSUER as string],\r\n algorithms\r\n };\r\n break;\r\n case TokenIssuer.ADMIN_API:\r\n options = {\r\n audience: [process.env.ADMIN_API_ACCESS_TOKEN_AUDIENCE as string],\r\n issuer: [process.env.ADMIN_ACCESS_TOKEN_ISSUER as string],\r\n algorithms\r\n };\r\n break;\r\n default:\r\n throw new EngineError({\r\n message: `Invalid token issuer specified \"${issuer as string}\"`\r\n });\r\n }\r\n\r\n return new Promise<UserTokenPayload>((resolve, reject) => {\r\n verify(token, jwtGetKey, options, (error, result) => {\r\n if (error) {\r\n reject(\r\n new WebError({\r\n errorCode: 'unauthorized',\r\n statusCode: 401,\r\n message: 'Invalid token supplied',\r\n data: { token },\r\n error: error instanceof Error ? error : undefined\r\n })\r\n );\r\n return;\r\n }\r\n resolve(result as UserTokenPayload);\r\n });\r\n });\r\n}\r\n\r\nexport function generateJwtToken(user: unknown) {\r\n const signOptions = {\r\n algorithm: 'ES256' as const, // or 'ES256' as Algorithm\r\n expiresIn: '1h',\r\n issuer: process.env.ACCESS_TOKEN_ISSUER,\r\n audience: process.env.ACCESS_TOKEN_AUDIENCE,\r\n keyid: Object.keys(keySet?.getKeys() ?? {})[0]\r\n };\r\n\r\n const privateKey = fs.readFileSync(\r\n process.env.PRIVATE_KEY_PATH ?? 'keys/private-key.pem',\r\n 'utf8'\r\n );\r\n const token = sign({ user }, privateKey, signOptions);\r\n\r\n return token;\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.types.js","names":[],"sources":["../../../src/utils/jwt/jwt.types.ts"],"sourcesContent":["\n/** Content of the payload of user authentication tokens */\nexport interface UserTokenPayload {\n /** ID of the user */\n sub: string;\n /** URL of the service that issued the token */\n iss: string;\n /** URL of the services that can consume the token */\n aud: Array<string> | string;\n /** Unique ID of the token */\n jti: string;\n /** ID of the device the token was issued to */\n dev: string;\n /** Timestamp at which the token will expire */\n exp: number;\n /** List of permissions that the user has (only on the admin API) */\n per?: Array<string> | string;\n /** User */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n user: Record<string, any> | undefined;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"jwt.types.js","names":[],"sources":["../../../src/utils/jwt/jwt.types.ts"],"sourcesContent":["\r\n/** Content of the payload of user authentication tokens */\r\nexport interface UserTokenPayload {\r\n /** ID of the user */\r\n sub: string;\r\n /** URL of the service that issued the token */\r\n iss: string;\r\n /** URL of the services that can consume the token */\r\n aud: Array<string> | string;\r\n /** Unique ID of the token */\r\n jti: string;\r\n /** ID of the device the token was issued to */\r\n dev: string;\r\n /** Timestamp at which the token will expire */\r\n exp: number;\r\n /** List of permissions that the user has (only on the admin API) */\r\n per?: Array<string> | string;\r\n /** User */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n user: Record<string, any> | undefined;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_report","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_output","_report2"],"sources":["../../../src/utils/report/index.ts"],"sourcesContent":["export * from './report';\nexport * from './output.types';\nexport * from './report.types';\n"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,QAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,QAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,QAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,QAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_report","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_output","_report2"],"sources":["../../../src/utils/report/index.ts"],"sourcesContent":["export * from './report';\r\nexport * from './output.types';\r\nexport * from './report.types';\r\n"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,OAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,OAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,OAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,QAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,QAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,QAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,QAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","names":["_crypto","require","_callsite","_interopRequireDefault","_jsonStringifySafe","INSTANCE_ID","exports","randomUUID","output","data","call","callsite","fullEntry","lineNumber","getLineNumber","fileName","getFileName","replace","serviceContext","service","process","env","CHART","HOSTNAME","version","BUILD_ID","environment","NODE_ENV","instance","KUBERNETES_POD_NAME","entry","stringify","SILENCE_REPORT","console","dir","depth","statusCode","error","log"],"sources":["../../../src/utils/report/output.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport callsite from 'callsite';\nimport stringify from 'json-stringify-safe';\nimport { LogEntry, FullLogEntry } from './output.types';\n\n// NOTE: Server instance id (helpful for distributed logs)\nexport const INSTANCE_ID = randomUUID();\n\n/** Add metadata to the log entry and print it */\nexport function output(data: LogEntry): FullLogEntry {\n // Gather useful information about where the logger was called from\n const call = callsite()[2];\n\n // Append additional metadata to the log entry\n const fullEntry: FullLogEntry = {\n ...data,\n lineNumber: call.getLineNumber(),\n fileName: call\n .getFileName()\n .replace(/.*node_modules\\//, '')\n .replace(/.*src\\//, 'src/'),\n serviceContext: {\n service: process.env.CHART ?? process.env.HOSTNAME,\n version: process.env.BUILD_ID,\n environment: process.env.NODE_ENV,\n instance: process.env.KUBERNETES_POD_NAME ?? INSTANCE_ID\n }\n };\n\n const entry = stringify(fullEntry);\n // Ignore when silenced\n if (process.env.SILENCE_REPORT) return fullEntry;\n\n if (process.env.NODE_ENV === 'test') {\n // In test mode pretty print\n console.dir(fullEntry, { depth: 5 });\n } else if (data.statusCode && data.statusCode >= 500) {\n // Log to stderr when it is a 500+ error\n console.error(entry);\n } else {\n // Default to regular logging\n console.log(entry);\n }\n return fullEntry;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAGA;AACO,MAAMI,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,kBAAU,EAAC,CAAC;;AAEvC;AACO,SAASC,MAAMA,CAACC,IAAc,EAAgB;EACnD;EACA,MAAMC,IAAI,GAAG,IAAAC,iBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC;;EAE1B;EACA,MAAMC,SAAuB,GAAG;IAC9B,GAAGH,IAAI;IACPI,UAAU,EAAEH,IAAI,CAACI,aAAa,CAAC,CAAC;IAChCC,QAAQ,EAAEL,IAAI,CACXM,WAAW,CAAC,CAAC,CACbC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAC/BA,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC7BC,cAAc,EAAE;MACdC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,KAAK,IAAIF,OAAO,CAACC,GAAG,CAACE,QAAQ;MAClDC,OAAO,EAAEJ,OAAO,CAACC,GAAG,CAACI,QAAQ;MAC7BC,WAAW,EAAEN,OAAO,CAACC,GAAG,CAACM,QAAQ;MACjCC,QAAQ,EAAER,OAAO,CAACC,GAAG,CAACQ,mBAAmB,IAAIxB;IAC/C;EACF,CAAC;EAED,MAAMyB,KAAK,GAAG,IAAAC,0BAAS,EAACnB,SAAS,CAAC;EAClC;EACA,IAAIQ,OAAO,CAACC,GAAG,CAACW,cAAc,EAAE,OAAOpB,SAAS;EAEhD,IAAIQ,OAAO,CAACC,GAAG,CAACM,QAAQ,KAAK,MAAM,EAAE;IACnC;IACAM,OAAO,CAACC,GAAG,CAACtB,SAAS,EAAE;MAAEuB,KAAK,EAAE;IAAE,CAAC,CAAC;EACtC,CAAC,MAAM,IAAI1B,IAAI,CAAC2B,UAAU,IAAI3B,IAAI,CAAC2B,UAAU,IAAI,GAAG,EAAE;IACpD;IACAH,OAAO,CAACI,KAAK,CAACP,KAAK,CAAC;EACtB,CAAC,MAAM;IACL;IACAG,OAAO,CAACK,GAAG,CAACR,KAAK,CAAC;EACpB;EACA,OAAOlB,SAAS;AAClB","ignoreList":[]}
1
+ {"version":3,"file":"output.js","names":["_crypto","require","_callsite","_interopRequireDefault","_jsonStringifySafe","INSTANCE_ID","exports","randomUUID","output","data","call","callsite","fullEntry","lineNumber","getLineNumber","fileName","getFileName","replace","serviceContext","service","process","env","CHART","HOSTNAME","version","BUILD_ID","environment","NODE_ENV","instance","KUBERNETES_POD_NAME","entry","stringify","SILENCE_REPORT","console","dir","depth","statusCode","error","log"],"sources":["../../../src/utils/report/output.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\r\nimport callsite from 'callsite';\r\nimport stringify from 'json-stringify-safe';\r\nimport { LogEntry, FullLogEntry } from './output.types';\r\n\r\n// NOTE: Server instance id (helpful for distributed logs)\r\nexport const INSTANCE_ID = randomUUID();\r\n\r\n/** Add metadata to the log entry and print it */\r\nexport function output(data: LogEntry): FullLogEntry {\r\n // Gather useful information about where the logger was called from\r\n const call = callsite()[2];\r\n\r\n // Append additional metadata to the log entry\r\n const fullEntry: FullLogEntry = {\r\n ...data,\r\n lineNumber: call.getLineNumber(),\r\n fileName: call\r\n .getFileName()\r\n .replace(/.*node_modules\\//, '')\r\n .replace(/.*src\\//, 'src/'),\r\n serviceContext: {\r\n service: process.env.CHART ?? process.env.HOSTNAME,\r\n version: process.env.BUILD_ID,\r\n environment: process.env.NODE_ENV,\r\n instance: process.env.KUBERNETES_POD_NAME ?? INSTANCE_ID\r\n }\r\n };\r\n\r\n const entry = stringify(fullEntry);\r\n // Ignore when silenced\r\n if (process.env.SILENCE_REPORT) return fullEntry;\r\n\r\n if (process.env.NODE_ENV === 'test') {\r\n // In test mode pretty print\r\n console.dir(fullEntry, { depth: 5 });\r\n } else if (data.statusCode && data.statusCode >= 500) {\r\n // Log to stderr when it is a 500+ error\r\n console.error(entry);\r\n } else {\r\n // Default to regular logging\r\n console.log(entry);\r\n }\r\n return fullEntry;\r\n}\r\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAGA;AACO,MAAMI,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,IAAAE,kBAAU,EAAC,CAAC;;AAEvC;AACO,SAASC,MAAMA,CAACC,IAAc,EAAgB;EACnD;EACA,MAAMC,IAAI,GAAG,IAAAC,iBAAQ,EAAC,CAAC,CAAC,CAAC,CAAC;;EAE1B;EACA,MAAMC,SAAuB,GAAG;IAC9B,GAAGH,IAAI;IACPI,UAAU,EAAEH,IAAI,CAACI,aAAa,CAAC,CAAC;IAChCC,QAAQ,EAAEL,IAAI,CACXM,WAAW,CAAC,CAAC,CACbC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAC/BA,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC7BC,cAAc,EAAE;MACdC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,KAAK,IAAIF,OAAO,CAACC,GAAG,CAACE,QAAQ;MAClDC,OAAO,EAAEJ,OAAO,CAACC,GAAG,CAACI,QAAQ;MAC7BC,WAAW,EAAEN,OAAO,CAACC,GAAG,CAACM,QAAQ;MACjCC,QAAQ,EAAER,OAAO,CAACC,GAAG,CAACQ,mBAAmB,IAAIxB;IAC/C;EACF,CAAC;EAED,MAAMyB,KAAK,GAAG,IAAAC,0BAAS,EAACnB,SAAS,CAAC;EAClC;EACA,IAAIQ,OAAO,CAACC,GAAG,CAACW,cAAc,EAAE,OAAOpB,SAAS;EAEhD,IAAIQ,OAAO,CAACC,GAAG,CAACM,QAAQ,KAAK,MAAM,EAAE;IACnC;IACAM,OAAO,CAACC,GAAG,CAACtB,SAAS,EAAE;MAAEuB,KAAK,EAAE;IAAE,CAAC,CAAC;EACtC,CAAC,MAAM,IAAI1B,IAAI,CAAC2B,UAAU,IAAI3B,IAAI,CAAC2B,UAAU,IAAI,GAAG,EAAE;IACpD;IACAH,OAAO,CAACI,KAAK,CAACP,KAAK,CAAC;EACtB,CAAC,MAAM;IACL;IACAG,OAAO,CAACK,GAAG,CAACR,KAAK,CAAC;EACpB;EACA,OAAOlB,SAAS;AAClB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"output.types.js","names":[],"sources":["../../../src/utils/report/output.types.ts"],"sourcesContent":["import { LogSeverity } from 'const';\n\n/** Structure of the request reporting in log entries */\ninterface LogEntryRequest {\n /** Requested URL */\n url: string;\n /** HTTP method used */\n method: string;\n /** Referer website */\n referrer?: string;\n /** User-Agent of the connected client */\n userAgent?: string;\n /** IP address of the client */\n remoteIp: string | undefined;\n /** HTTP status code returned to the client */\n responseStatusCode?: number;\n}\n\n/** Structure of the context entry in log entries */\ninterface LogEntryContext {\n /** User that made a request */\n user?: string;\n /** Info on the processed HTTP request */\n httpRequest?: LogEntryRequest;\n}\n\n/** Structure of a log entry */\nexport interface LogEntry {\n /** Severity level at which the entry should be logged */\n severity: LogSeverity;\n /** Type of error */\n errorType?: string;\n /** Human readable error message that will be logged */\n message: string;\n /** Stack-trace of the error */\n\n stack_trace?: string;\n /** Additional data that accompanies the error in the logs */\n data?: unknown;\n /** Machine readable error code that is returned to the client */\n errorCode?: string;\n /** HTTP status code that is returned to the client */\n statusCode?: number;\n /** GCP error type */\n '@type'?: string;\n /** Error context */\n context?: LogEntryContext;\n}\n\n/** Stricture of a log entry context entry */\ninterface LogEntryServiceContext {\n /** Name of the service in which the error ocurred */\n service?: string;\n /** Version of the service in which the error ocurred */\n version?: string;\n /** Environment in which the error ocurred (dev/staging/prod) */\n environment?: string;\n /** ID of the instance that got the error */\n instance?: string;\n}\n\n/** Complete log entry with call-stack */\nexport interface FullLogEntry extends LogEntry {\n /** Line at which the error was thrown */\n lineNumber: number;\n /** Name of the file in which the error was thrown */\n fileName: string;\n /** Context of the error */\n serviceContext: LogEntryServiceContext;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"output.types.js","names":[],"sources":["../../../src/utils/report/output.types.ts"],"sourcesContent":["import { LogSeverity } from 'const';\r\n\r\n/** Structure of the request reporting in log entries */\r\ninterface LogEntryRequest {\r\n /** Requested URL */\r\n url: string;\r\n /** HTTP method used */\r\n method: string;\r\n /** Referer website */\r\n referrer?: string;\r\n /** User-Agent of the connected client */\r\n userAgent?: string;\r\n /** IP address of the client */\r\n remoteIp: string | undefined;\r\n /** HTTP status code returned to the client */\r\n responseStatusCode?: number;\r\n}\r\n\r\n/** Structure of the context entry in log entries */\r\ninterface LogEntryContext {\r\n /** User that made a request */\r\n user?: string;\r\n /** Info on the processed HTTP request */\r\n httpRequest?: LogEntryRequest;\r\n}\r\n\r\n/** Structure of a log entry */\r\nexport interface LogEntry {\r\n /** Severity level at which the entry should be logged */\r\n severity: LogSeverity;\r\n /** Type of error */\r\n errorType?: string;\r\n /** Human readable error message that will be logged */\r\n message: string;\r\n /** Stack-trace of the error */\r\n\r\n stack_trace?: string;\r\n /** Additional data that accompanies the error in the logs */\r\n data?: unknown;\r\n /** Machine readable error code that is returned to the client */\r\n errorCode?: string;\r\n /** HTTP status code that is returned to the client */\r\n statusCode?: number;\r\n /** GCP error type */\r\n '@type'?: string;\r\n /** Error context */\r\n context?: LogEntryContext;\r\n}\r\n\r\n/** Stricture of a log entry context entry */\r\ninterface LogEntryServiceContext {\r\n /** Name of the service in which the error ocurred */\r\n service?: string;\r\n /** Version of the service in which the error ocurred */\r\n version?: string;\r\n /** Environment in which the error ocurred (dev/staging/prod) */\r\n environment?: string;\r\n /** ID of the instance that got the error */\r\n instance?: string;\r\n}\r\n\r\n/** Complete log entry with call-stack */\r\nexport interface FullLogEntry extends LogEntry {\r\n /** Line at which the error was thrown */\r\n lineNumber: number;\r\n /** Name of the file in which the error was thrown */\r\n fileName: string;\r\n /** Context of the error */\r\n serviceContext: LogEntryServiceContext;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","names":["_output","require","_const","_EngineError","_WebError","reportInfo","data","output","severity","LogSeverity","INFO","message","reportError","error","request","logEntry","Error","stack_trace","stack","ERROR","CRITICAL","EngineError","errorType","constructor","name","WebError","statusCode","undefined","errorCode","context","user","id","hosts","join","admin","email","httpRequest","url","originalUrl","method","referrer","header","userAgent","remoteIp","ip","responseStatusCode","NAMESPACE_SELECTORS","exports","initNamespaceSelector","process","env","DEBUG","split","map","namespace","RegExp","replace","resetNamespaceSelector","debugNamespace","reportDebug","isEngineReport","startsWith","match","some","selector","test","spaces","prefix","length","setNameSpace","globalNamespace","clearNamespace"],"sources":["../../../src/utils/report/report.ts"],"sourcesContent":["import { Request } from 'express';\nimport { output } from './output';\nimport { LogEntry, FullLogEntry } from './output.types';\nimport { DebugLogEntry, InfoLogEntry } from './report.types';\nimport { LogSeverity } from 'const';\nimport { EngineError } from 'entities/EngineError';\nimport { WebError } from 'entities/WebError';\nimport {} from 'middleware/authHmac/authHmac.types';\nimport {} from 'middleware/authJwt/authJwt.types';\nimport {} from 'middleware/authTls/authTls.types';\nimport {} from 'middleware/authAdmin/authAdmin.types';\n\n/** Default generic logger */\nexport function reportInfo(data: InfoLogEntry | string): FullLogEntry {\n return output({\n severity: LogSeverity.INFO,\n ...(typeof data === 'string' ? { message: data } : data)\n });\n}\n\n/** Error specific logger */\nexport function reportError(\n error: unknown | Error | EngineError | WebError,\n request?: Request\n): FullLogEntry {\n let logEntry: LogEntry =\n error instanceof Error\n ? {\n message: error.message,\n stack_trace: error.stack,\n severity: LogSeverity.ERROR\n }\n : {\n message: 'An unknown error occurred',\n data: error,\n severity: LogSeverity.CRITICAL\n };\n\n if (error instanceof EngineError) {\n logEntry = {\n ...logEntry,\n severity: error.severity,\n errorType: error.constructor.name,\n data: error.data,\n '@type':\n !(error instanceof WebError) || error.statusCode >= 500\n ? 'type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent'\n : undefined\n };\n }\n\n if (error instanceof WebError) {\n logEntry = {\n ...logEntry,\n errorCode: error.errorCode,\n statusCode: error.statusCode\n };\n }\n\n if (request) {\n logEntry = {\n ...logEntry,\n context: {\n user:\n request.user?.id ?? request.hosts?.join(',') ?? request.admin?.email,\n httpRequest: {\n url: request.originalUrl,\n method: request.method,\n referrer: request.header('Referer'),\n userAgent: request.header('User-Agent'),\n remoteIp: request.ip,\n responseStatusCode:\n error instanceof WebError ? error.statusCode : undefined\n }\n }\n };\n }\n\n return output(logEntry);\n}\n\nexport let NAMESPACE_SELECTORS: undefined | Array<RegExp>;\n\n/** Generate the namespace selectors based on the debug variable */\nfunction initNamespaceSelector(): void {\n if (process.env.DEBUG)\n NAMESPACE_SELECTORS = process.env.DEBUG.split(',').map(\n (namespace) => new RegExp('^' + namespace.replace(/\\*/g, '.*?') + '$')\n );\n}\n\n/** Reset the namespace selectors */\nexport function resetNamespaceSelector(): void {\n NAMESPACE_SELECTORS = undefined;\n}\n\nlet debugNamespace: string | undefined;\n\n/** Log a message for debugging purpose, based on a namespace specified in an environment variable */\nexport function reportDebug(data: DebugLogEntry): FullLogEntry | undefined {\n if (!NAMESPACE_SELECTORS) initNamespaceSelector();\n let { namespace } = data;\n const isEngineReport = namespace ? namespace.startsWith('engine') : false;\n\n if (debugNamespace && !isEngineReport) {\n namespace = debugNamespace + ':' + namespace;\n }\n\n const match =\n namespace &&\n NAMESPACE_SELECTORS &&\n NAMESPACE_SELECTORS.some((selector) => selector.test(namespace));\n if (!match) return;\n\n // Generate a prefix with the right most part of the namespace\n const spaces = namespace.split(':');\n const prefix = spaces[spaces.length - 1];\n\n return output({\n severity: LogSeverity.DEBUG,\n ...data,\n message: `[${prefix}] ${data.message}`\n });\n}\n\n/** Specify a global debugging namespace */\nreportDebug.setNameSpace = function (globalNamespace: string): void {\n debugNamespace = globalNamespace;\n};\n\n/** Remove any defined global namespace */\nreportDebug.clearNamespace = function (): void {\n debugNamespace = undefined;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"report.js","names":["_output","require","_const","_EngineError","_WebError","reportInfo","data","output","severity","LogSeverity","INFO","message","reportError","error","request","logEntry","Error","stack_trace","stack","ERROR","CRITICAL","EngineError","errorType","constructor","name","WebError","statusCode","undefined","errorCode","context","user","id","hosts","join","admin","email","httpRequest","url","originalUrl","method","referrer","header","userAgent","remoteIp","ip","responseStatusCode","NAMESPACE_SELECTORS","exports","initNamespaceSelector","process","env","DEBUG","split","map","namespace","RegExp","replace","resetNamespaceSelector","debugNamespace","reportDebug","isEngineReport","startsWith","match","some","selector","test","spaces","prefix","length","setNameSpace","globalNamespace","clearNamespace"],"sources":["../../../src/utils/report/report.ts"],"sourcesContent":["import { Request } from 'express';\r\nimport { output } from './output';\r\nimport { LogEntry, FullLogEntry } from './output.types';\r\nimport { DebugLogEntry, InfoLogEntry } from './report.types';\r\nimport { LogSeverity } from 'const';\r\nimport { EngineError } from 'entities/EngineError';\r\nimport { WebError } from 'entities/WebError';\r\nimport {} from 'middleware/authHmac/authHmac.types';\r\nimport {} from 'middleware/authJwt/authJwt.types';\r\nimport {} from 'middleware/authTls/authTls.types';\r\nimport {} from 'middleware/authAdmin/authAdmin.types';\r\n\r\n/** Default generic logger */\r\nexport function reportInfo(data: InfoLogEntry | string): FullLogEntry {\r\n return output({\r\n severity: LogSeverity.INFO,\r\n ...(typeof data === 'string' ? { message: data } : data)\r\n });\r\n}\r\n\r\n/** Error specific logger */\r\nexport function reportError(\r\n error: unknown | Error | EngineError | WebError,\r\n request?: Request\r\n): FullLogEntry {\r\n let logEntry: LogEntry =\r\n error instanceof Error\r\n ? {\r\n message: error.message,\r\n stack_trace: error.stack,\r\n severity: LogSeverity.ERROR\r\n }\r\n : {\r\n message: 'An unknown error occurred',\r\n data: error,\r\n severity: LogSeverity.CRITICAL\r\n };\r\n\r\n if (error instanceof EngineError) {\r\n logEntry = {\r\n ...logEntry,\r\n severity: error.severity,\r\n errorType: error.constructor.name,\r\n data: error.data,\r\n '@type':\r\n !(error instanceof WebError) || error.statusCode >= 500\r\n ? 'type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent'\r\n : undefined\r\n };\r\n }\r\n\r\n if (error instanceof WebError) {\r\n logEntry = {\r\n ...logEntry,\r\n errorCode: error.errorCode,\r\n statusCode: error.statusCode\r\n };\r\n }\r\n\r\n if (request) {\r\n logEntry = {\r\n ...logEntry,\r\n context: {\r\n user:\r\n request.user?.id ?? request.hosts?.join(',') ?? request.admin?.email,\r\n httpRequest: {\r\n url: request.originalUrl,\r\n method: request.method,\r\n referrer: request.header('Referer'),\r\n userAgent: request.header('User-Agent'),\r\n remoteIp: request.ip,\r\n responseStatusCode:\r\n error instanceof WebError ? error.statusCode : undefined\r\n }\r\n }\r\n };\r\n }\r\n\r\n return output(logEntry);\r\n}\r\n\r\nexport let NAMESPACE_SELECTORS: undefined | Array<RegExp>;\r\n\r\n/** Generate the namespace selectors based on the debug variable */\r\nfunction initNamespaceSelector(): void {\r\n if (process.env.DEBUG)\r\n NAMESPACE_SELECTORS = process.env.DEBUG.split(',').map(\r\n (namespace) => new RegExp('^' + namespace.replace(/\\*/g, '.*?') + '$')\r\n );\r\n}\r\n\r\n/** Reset the namespace selectors */\r\nexport function resetNamespaceSelector(): void {\r\n NAMESPACE_SELECTORS = undefined;\r\n}\r\n\r\nlet debugNamespace: string | undefined;\r\n\r\n/** Log a message for debugging purpose, based on a namespace specified in an environment variable */\r\nexport function reportDebug(data: DebugLogEntry): FullLogEntry | undefined {\r\n if (!NAMESPACE_SELECTORS) initNamespaceSelector();\r\n let { namespace } = data;\r\n const isEngineReport = namespace ? namespace.startsWith('engine') : false;\r\n\r\n if (debugNamespace && !isEngineReport) {\r\n namespace = debugNamespace + ':' + namespace;\r\n }\r\n\r\n const match =\r\n namespace &&\r\n NAMESPACE_SELECTORS &&\r\n NAMESPACE_SELECTORS.some((selector) => selector.test(namespace));\r\n if (!match) return;\r\n\r\n // Generate a prefix with the right most part of the namespace\r\n const spaces = namespace.split(':');\r\n const prefix = spaces[spaces.length - 1];\r\n\r\n return output({\r\n severity: LogSeverity.DEBUG,\r\n ...data,\r\n message: `[${prefix}] ${data.message}`\r\n });\r\n}\r\n\r\n/** Specify a global debugging namespace */\r\nreportDebug.setNameSpace = function (globalNamespace: string): void {\r\n debugNamespace = globalNamespace;\r\n};\r\n\r\n/** Remove any defined global namespace */\r\nreportDebug.clearNamespace = function (): void {\r\n debugNamespace = undefined;\r\n};\r\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"report.types.js","names":[],"sources":["../../../src/utils/report/report.types.ts"],"sourcesContent":["import { LogEntry } from './output.types';\nimport { LogSeverity } from 'const';\n\n/** Structure of debug logs */\nexport interface DebugLogEntry extends Omit<LogEntry, 'severity'> {\n /** Debugging namespace in which the entry is */\n namespace: string;\n}\n\nexport type InfoLogEntry = Omit<LogEntry, 'severity'> & {\n /** Severity level of the entries */\n severity?: LogSeverity;\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"report.types.js","names":[],"sources":["../../../src/utils/report/report.types.ts"],"sourcesContent":["import { LogEntry } from './output.types';\r\nimport { LogSeverity } from 'const';\r\n\r\n/** Structure of debug logs */\r\nexport interface DebugLogEntry extends Omit<LogEntry, 'severity'> {\r\n /** Debugging namespace in which the entry is */\r\n namespace: string;\r\n}\r\n\r\nexport type InfoLogEntry = Omit<LogEntry, 'severity'> & {\r\n /** Severity level of the entries */\r\n severity?: LogSeverity;\r\n};\r\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_request","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/request/index.ts"],"sourcesContent":["export * from './request';\n"],"mappings":";;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,QAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,QAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,QAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_request","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/request/index.ts"],"sourcesContent":["export * from './request';\r\n"],"mappings":";;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,QAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,QAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,QAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","names":["_axios","_interopRequireDefault","require","_const","_EngineError","request","options","tryCount","axios","error","isAxiosError","code","includes","errorOptions","message","Error","severity","LogSeverity","CRITICAL","data","response","status","headers","EngineError"],"sources":["../../../src/utils/request/request.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';\nimport { LogSeverity } from 'const';\nimport { EngineError, EngineErrorOptions } from 'entities/EngineError';\n\n/** Make a http(s) request through axios with proper error handling */\nexport async function request<T = unknown>(\n options: AxiosRequestConfig,\n tryCount = 1\n): Promise<AxiosResponse<T>> {\n try {\n return await axios.request<T, AxiosResponse<T>>(options);\n } catch (error: unknown) {\n // In case of networking error, we attempt to retry the connection if we did less than 5 attempts\n if (\n tryCount < 5 &&\n axios.isAxiosError(error) &&\n error.code &&\n ['ECONNABORTED', 'ECONNREFUSED', 'ECONNRESET', 'EAI_AGAIN'].includes(\n error.code\n )\n ) {\n return request<T>(options, tryCount + 1);\n }\n const errorOptions: EngineErrorOptions = {\n message:\n error instanceof Error\n ? error.message\n : typeof error === 'string'\n ? error\n : 'An unknown error occurred',\n severity: LogSeverity.CRITICAL,\n data: { error }\n };\n if (error instanceof Error) {\n errorOptions.message = error.message;\n errorOptions.error = error;\n }\n // A response was returned but it was not a 200\n if (axios.isAxiosError(error) && error.response) {\n errorOptions.data = {\n data: error.response.data as unknown,\n status: error.response.status,\n headers: error.response.headers as unknown\n };\n }\n throw new EngineError(errorOptions);\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA;AACO,eAAeG,OAAOA,CAC3BC,OAA2B,EAC3BC,QAAQ,GAAG,CAAC,EACe;EAC3B,IAAI;IACF,OAAO,MAAMC,cAAK,CAACH,OAAO,CAAsBC,OAAO,CAAC;EAC1D,CAAC,CAAC,OAAOG,KAAc,EAAE;IACvB;IACA,IACEF,QAAQ,GAAG,CAAC,IACZC,cAAK,CAACE,YAAY,CAACD,KAAK,CAAC,IACzBA,KAAK,CAACE,IAAI,IACV,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,CAAC,CAACC,QAAQ,CAClEH,KAAK,CAACE,IACR,CAAC,EACD;MACA,OAAON,OAAO,CAAIC,OAAO,EAAEC,QAAQ,GAAG,CAAC,CAAC;IAC1C;IACA,MAAMM,YAAgC,GAAG;MACvCC,OAAO,EACLL,KAAK,YAAYM,KAAK,GAClBN,KAAK,CAACK,OAAO,GACb,OAAOL,KAAK,KAAK,QAAQ,GACvBA,KAAK,GACL,2BAA2B;MACnCO,QAAQ,EAAEC,kBAAW,CAACC,QAAQ;MAC9BC,IAAI,EAAE;QAAEV;MAAM;IAChB,CAAC;IACD,IAAIA,KAAK,YAAYM,KAAK,EAAE;MAC1BF,YAAY,CAACC,OAAO,GAAGL,KAAK,CAACK,OAAO;MACpCD,YAAY,CAACJ,KAAK,GAAGA,KAAK;IAC5B;IACA;IACA,IAAID,cAAK,CAACE,YAAY,CAACD,KAAK,CAAC,IAAIA,KAAK,CAACW,QAAQ,EAAE;MAC/CP,YAAY,CAACM,IAAI,GAAG;QAClBA,IAAI,EAAEV,KAAK,CAACW,QAAQ,CAACD,IAAe;QACpCE,MAAM,EAAEZ,KAAK,CAACW,QAAQ,CAACC,MAAM;QAC7BC,OAAO,EAAEb,KAAK,CAACW,QAAQ,CAACE;MAC1B,CAAC;IACH;IACA,MAAM,IAAIC,wBAAW,CAACV,YAAY,CAAC;EACrC;AACF","ignoreList":[]}
1
+ {"version":3,"file":"request.js","names":["_axios","_interopRequireDefault","require","_const","_EngineError","request","options","tryCount","axios","error","isAxiosError","code","includes","errorOptions","message","Error","severity","LogSeverity","CRITICAL","data","response","status","headers","EngineError"],"sources":["../../../src/utils/request/request.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';\r\nimport { LogSeverity } from 'const';\r\nimport { EngineError, EngineErrorOptions } from 'entities/EngineError';\r\n\r\n/** Make a http(s) request through axios with proper error handling */\r\nexport async function request<T = unknown>(\r\n options: AxiosRequestConfig,\r\n tryCount = 1\r\n): Promise<AxiosResponse<T>> {\r\n try {\r\n return await axios.request<T, AxiosResponse<T>>(options);\r\n } catch (error: unknown) {\r\n // In case of networking error, we attempt to retry the connection if we did less than 5 attempts\r\n if (\r\n tryCount < 5 &&\r\n axios.isAxiosError(error) &&\r\n error.code &&\r\n ['ECONNABORTED', 'ECONNREFUSED', 'ECONNRESET', 'EAI_AGAIN'].includes(\r\n error.code\r\n )\r\n ) {\r\n return request<T>(options, tryCount + 1);\r\n }\r\n const errorOptions: EngineErrorOptions = {\r\n message:\r\n error instanceof Error\r\n ? error.message\r\n : typeof error === 'string'\r\n ? error\r\n : 'An unknown error occurred',\r\n severity: LogSeverity.CRITICAL,\r\n data: { error }\r\n };\r\n if (error instanceof Error) {\r\n errorOptions.message = error.message;\r\n errorOptions.error = error;\r\n }\r\n // A response was returned but it was not a 200\r\n if (axios.isAxiosError(error) && error.response) {\r\n errorOptions.data = {\r\n data: error.response.data as unknown,\r\n status: error.response.status,\r\n headers: error.response.headers as unknown\r\n };\r\n }\r\n throw new EngineError(errorOptions);\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA;AACO,eAAeG,OAAOA,CAC3BC,OAA2B,EAC3BC,QAAQ,GAAG,CAAC,EACe;EAC3B,IAAI;IACF,OAAO,MAAMC,cAAK,CAACH,OAAO,CAAsBC,OAAO,CAAC;EAC1D,CAAC,CAAC,OAAOG,KAAc,EAAE;IACvB;IACA,IACEF,QAAQ,GAAG,CAAC,IACZC,cAAK,CAACE,YAAY,CAACD,KAAK,CAAC,IACzBA,KAAK,CAACE,IAAI,IACV,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,CAAC,CAACC,QAAQ,CAClEH,KAAK,CAACE,IACR,CAAC,EACD;MACA,OAAON,OAAO,CAAIC,OAAO,EAAEC,QAAQ,GAAG,CAAC,CAAC;IAC1C;IACA,MAAMM,YAAgC,GAAG;MACvCC,OAAO,EACLL,KAAK,YAAYM,KAAK,GAClBN,KAAK,CAACK,OAAO,GACb,OAAOL,KAAK,KAAK,QAAQ,GACvBA,KAAK,GACL,2BAA2B;MACnCO,QAAQ,EAAEC,kBAAW,CAACC,QAAQ;MAC9BC,IAAI,EAAE;QAAEV;MAAM;IAChB,CAAC;IACD,IAAIA,KAAK,YAAYM,KAAK,EAAE;MAC1BF,YAAY,CAACC,OAAO,GAAGL,KAAK,CAACK,OAAO;MACpCD,YAAY,CAACJ,KAAK,GAAGA,KAAK;IAC5B;IACA;IACA,IAAID,cAAK,CAACE,YAAY,CAACD,KAAK,CAAC,IAAIA,KAAK,CAACW,QAAQ,EAAE;MAC/CP,YAAY,CAACM,IAAI,GAAG;QAClBA,IAAI,EAAEV,KAAK,CAACW,QAAQ,CAACD,IAAe;QACpCE,MAAM,EAAEZ,KAAK,CAACW,QAAQ,CAACC,MAAM;QAC7BC,OAAO,EAAEb,KAAK,CAACW,QAAQ,CAACE;MAC1B,CAAC;IACH;IACA,MAAM,IAAIC,wBAAW,CAACV,YAAY,CAAC;EACrC;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_semverCompare","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/semverCompare/index.ts"],"sourcesContent":["export * from './semverCompare';\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_semverCompare","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/semverCompare/index.ts"],"sourcesContent":["export * from './semverCompare';\r\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -10,11 +10,11 @@ var _EngineError = require("../../entities/EngineError");
10
10
  // Regex to validate our SemVer style and capture the different parts
11
11
  const SEMVER_REGEX = /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-(?:(alpha|beta|rc)(?:\.(0|[1-9]\d*))))?$/;
12
12
 
13
- /**
14
- * Comparison function for our SemVer strings, includes support ofr pre-releases
15
- * @param {string} v1
16
- * @param {string} v2
17
- * @return {number} - -1 if v1 < v2, 0 if v1 = v2, +1 if v1 > v2
13
+ /**
14
+ * Comparison function for our SemVer strings, includes support ofr pre-releases
15
+ * @param {string} v1
16
+ * @param {string} v2
17
+ * @return {number} - -1 if v1 < v2, 0 if v1 = v2, +1 if v1 > v2
18
18
  */
19
19
  function semverCompare(v1, v2) {
20
20
  const [match1, match2] = [v1, v2].map(v => v.match(SEMVER_REGEX));
@@ -1 +1 @@
1
- {"version":3,"file":"semverCompare.js","names":["_validator","_interopRequireDefault","require","_EngineError","SEMVER_REGEX","semverCompare","v1","v2","match1","match2","map","v","match","EngineError","message","data","_1","major1","minor1","patch1","preType1","preVersion1","_2","major2","minor2","patch2","preType2","preVersion2","group","item","validator","isInt","parseInt"],"sources":["../../../src/utils/semverCompare/semverCompare.ts"],"sourcesContent":["import validator from 'validator';\nimport { EngineError } from 'entities/EngineError';\n\n// Regex to validate our SemVer style and capture the different parts\nconst SEMVER_REGEX =\n /^v?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:(alpha|beta|rc)(?:\\.(0|[1-9]\\d*))))?$/;\n\n/**\n * Comparison function for our SemVer strings, includes support ofr pre-releases\n * @param {string} v1\n * @param {string} v2\n * @return {number} - -1 if v1 < v2, 0 if v1 = v2, +1 if v1 > v2\n */\nexport function semverCompare(v1: string, v2: string): 1 | -1 | 0 {\n const [match1, match2] = [v1, v2].map((v) => v.match(SEMVER_REGEX));\n if (!match1 || !match2)\n throw new EngineError({\n message: 'Provided invalid SemVer string, can not compare',\n data: { v1, v2 }\n });\n const [\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [_1, major1, minor1, patch1, preType1, preVersion1],\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n [_2, major2, minor2, patch2, preType2, preVersion2]\n ] = [match1, match2].map((group) =>\n // We parse to int the parts that can be\n group.map((item) => (item && validator.isInt(item) ? parseInt(item) : item))\n );\n\n // Compare majors first\n if (major1 < major2) return -1;\n if (major1 > major2) return 1;\n\n // Compare minors second\n if (minor1 < minor2) return -1;\n if (minor1 > minor2) return 1;\n\n // Compare patch third\n if (patch1 < patch2) return -1;\n if (patch1 > patch2) return 1;\n\n // Compare pre-release type\n // Release > pre-release\n if (!preType1 && !preType2) return 0;\n if (preType1 && !preType2) return -1;\n if (!preType1 && preType2) return 1;\n\n // RC > Beta > Alpha\n if (preType1 !== 'rc' && preType2 === 'rc') return -1;\n if (preType1 === 'rc' && preType2 !== 'rc') return 1;\n if (preType1 !== 'beta' && preType2 === 'beta') return -1;\n if (preType1 === 'beta' && preType2 !== 'beta') return 1;\n\n // Finally compare the pre-release versions\n if (preVersion1 < preVersion2) return -1;\n if (preVersion1 > preVersion2) return 1;\n\n return 0;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA;AACA,MAAME,YAAY,GAChB,yFAAyF;;AAE3F;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,EAAU,EAAEC,EAAU,EAAc;EAChE,MAAM,CAACC,MAAM,EAAEC,MAAM,CAAC,GAAG,CAACH,EAAE,EAAEC,EAAE,CAAC,CAACG,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACR,YAAY,CAAC,CAAC;EACnE,IAAI,CAACI,MAAM,IAAI,CAACC,MAAM,EACpB,MAAM,IAAII,wBAAW,CAAC;IACpBC,OAAO,EAAE,iDAAiD;IAC1DC,IAAI,EAAE;MAAET,EAAE;MAAEC;IAAG;EACjB,CAAC,CAAC;EACJ,MAAM;EACJ;EACA,CAACS,EAAE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,CAAC;EACnD;EACA,CAACC,EAAE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,CAAC,CACpD,GAAG,CAACnB,MAAM,EAAEC,MAAM,CAAC,CAACC,GAAG,CAAEkB,KAAK;EAC7B;EACAA,KAAK,CAAClB,GAAG,CAAEmB,IAAI,IAAMA,IAAI,IAAIC,kBAAS,CAACC,KAAK,CAACF,IAAI,CAAC,GAAGG,QAAQ,CAACH,IAAI,CAAC,GAAGA,IAAK,CAC7E,CAAC;;EAED;EACA,IAAIZ,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9B,IAAIN,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC;;EAE7B;EACA,IAAIL,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9B,IAAIN,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC;;EAE7B;EACA,IAAIL,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9B,IAAIN,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC;;EAE7B;EACA;EACA,IAAI,CAACL,QAAQ,IAAI,CAACM,QAAQ,EAAE,OAAO,CAAC;EACpC,IAAIN,QAAQ,IAAI,CAACM,QAAQ,EAAE,OAAO,CAAC,CAAC;EACpC,IAAI,CAACN,QAAQ,IAAIM,QAAQ,EAAE,OAAO,CAAC;;EAEnC;EACA,IAAIN,QAAQ,KAAK,IAAI,IAAIM,QAAQ,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;EACrD,IAAIN,QAAQ,KAAK,IAAI,IAAIM,QAAQ,KAAK,IAAI,EAAE,OAAO,CAAC;EACpD,IAAIN,QAAQ,KAAK,MAAM,IAAIM,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC;EACzD,IAAIN,QAAQ,KAAK,MAAM,IAAIM,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC;;EAExD;EACA,IAAIL,WAAW,GAAGM,WAAW,EAAE,OAAO,CAAC,CAAC;EACxC,IAAIN,WAAW,GAAGM,WAAW,EAAE,OAAO,CAAC;EAEvC,OAAO,CAAC;AACV","ignoreList":[]}
1
+ {"version":3,"file":"semverCompare.js","names":["_validator","_interopRequireDefault","require","_EngineError","SEMVER_REGEX","semverCompare","v1","v2","match1","match2","map","v","match","EngineError","message","data","_1","major1","minor1","patch1","preType1","preVersion1","_2","major2","minor2","patch2","preType2","preVersion2","group","item","validator","isInt","parseInt"],"sources":["../../../src/utils/semverCompare/semverCompare.ts"],"sourcesContent":["import validator from 'validator';\r\nimport { EngineError } from 'entities/EngineError';\r\n\r\n// Regex to validate our SemVer style and capture the different parts\r\nconst SEMVER_REGEX =\r\n /^v?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:(alpha|beta|rc)(?:\\.(0|[1-9]\\d*))))?$/;\r\n\r\n/**\r\n * Comparison function for our SemVer strings, includes support ofr pre-releases\r\n * @param {string} v1\r\n * @param {string} v2\r\n * @return {number} - -1 if v1 < v2, 0 if v1 = v2, +1 if v1 > v2\r\n */\r\nexport function semverCompare(v1: string, v2: string): 1 | -1 | 0 {\r\n const [match1, match2] = [v1, v2].map((v) => v.match(SEMVER_REGEX));\r\n if (!match1 || !match2)\r\n throw new EngineError({\r\n message: 'Provided invalid SemVer string, can not compare',\r\n data: { v1, v2 }\r\n });\r\n const [\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n [_1, major1, minor1, patch1, preType1, preVersion1],\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n [_2, major2, minor2, patch2, preType2, preVersion2]\r\n ] = [match1, match2].map((group) =>\r\n // We parse to int the parts that can be\r\n group.map((item) => (item && validator.isInt(item) ? parseInt(item) : item))\r\n );\r\n\r\n // Compare majors first\r\n if (major1 < major2) return -1;\r\n if (major1 > major2) return 1;\r\n\r\n // Compare minors second\r\n if (minor1 < minor2) return -1;\r\n if (minor1 > minor2) return 1;\r\n\r\n // Compare patch third\r\n if (patch1 < patch2) return -1;\r\n if (patch1 > patch2) return 1;\r\n\r\n // Compare pre-release type\r\n // Release > pre-release\r\n if (!preType1 && !preType2) return 0;\r\n if (preType1 && !preType2) return -1;\r\n if (!preType1 && preType2) return 1;\r\n\r\n // RC > Beta > Alpha\r\n if (preType1 !== 'rc' && preType2 === 'rc') return -1;\r\n if (preType1 === 'rc' && preType2 !== 'rc') return 1;\r\n if (preType1 !== 'beta' && preType2 === 'beta') return -1;\r\n if (preType1 === 'beta' && preType2 !== 'beta') return 1;\r\n\r\n // Finally compare the pre-release versions\r\n if (preVersion1 < preVersion2) return -1;\r\n if (preVersion1 > preVersion2) return 1;\r\n\r\n return 0;\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA;AACA,MAAME,YAAY,GAChB,yFAAyF;;AAE3F;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,EAAU,EAAEC,EAAU,EAAc;EAChE,MAAM,CAACC,MAAM,EAAEC,MAAM,CAAC,GAAG,CAACH,EAAE,EAAEC,EAAE,CAAC,CAACG,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACR,YAAY,CAAC,CAAC;EACnE,IAAI,CAACI,MAAM,IAAI,CAACC,MAAM,EACpB,MAAM,IAAII,wBAAW,CAAC;IACpBC,OAAO,EAAE,iDAAiD;IAC1DC,IAAI,EAAE;MAAET,EAAE;MAAEC;IAAG;EACjB,CAAC,CAAC;EACJ,MAAM;EACJ;EACA,CAACS,EAAE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,CAAC;EACnD;EACA,CAACC,EAAE,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,CAAC,CACpD,GAAG,CAACnB,MAAM,EAAEC,MAAM,CAAC,CAACC,GAAG,CAAEkB,KAAK;EAC7B;EACAA,KAAK,CAAClB,GAAG,CAAEmB,IAAI,IAAMA,IAAI,IAAIC,kBAAS,CAACC,KAAK,CAACF,IAAI,CAAC,GAAGG,QAAQ,CAACH,IAAI,CAAC,GAAGA,IAAK,CAC7E,CAAC;;EAED;EACA,IAAIZ,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9B,IAAIN,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC;;EAE7B;EACA,IAAIL,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9B,IAAIN,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC;;EAE7B;EACA,IAAIL,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC,CAAC;EAC9B,IAAIN,MAAM,GAAGM,MAAM,EAAE,OAAO,CAAC;;EAE7B;EACA;EACA,IAAI,CAACL,QAAQ,IAAI,CAACM,QAAQ,EAAE,OAAO,CAAC;EACpC,IAAIN,QAAQ,IAAI,CAACM,QAAQ,EAAE,OAAO,CAAC,CAAC;EACpC,IAAI,CAACN,QAAQ,IAAIM,QAAQ,EAAE,OAAO,CAAC;;EAEnC;EACA,IAAIN,QAAQ,KAAK,IAAI,IAAIM,QAAQ,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;EACrD,IAAIN,QAAQ,KAAK,IAAI,IAAIM,QAAQ,KAAK,IAAI,EAAE,OAAO,CAAC;EACpD,IAAIN,QAAQ,KAAK,MAAM,IAAIM,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC;EACzD,IAAIN,QAAQ,KAAK,MAAM,IAAIM,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC;;EAExD;EACA,IAAIL,WAAW,GAAGM,WAAW,EAAE,OAAO,CAAC,CAAC;EACxC,IAAIN,WAAW,GAAGM,WAAW,EAAE,OAAO,CAAC;EAEvC,OAAO,CAAC;AACV","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_sendEmail","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/sendEmail/index.ts"],"sourcesContent":["export * from './sendEmail';\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_sendEmail","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/sendEmail/index.ts"],"sourcesContent":["export * from './sendEmail';\r\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.sendEmail = sendEmail;
7
7
  var _tlsRequest = require("../tlsRequest");
8
- /**
9
- * Send an email through the email service
10
- * @param userId - ID of the user that should receive the email
11
- * @param template - Email template to use
12
- * @param translationKey - Key used to get localized strings
13
- * @param parameters - Variables that can be inserted in the email template and localized strings
14
- * @param tags - Data injected in the localized strings as HTML tags
15
- * @param to - Users to which the email should be sent
8
+ /**
9
+ * Send an email through the email service
10
+ * @param userId - ID of the user that should receive the email
11
+ * @param template - Email template to use
12
+ * @param translationKey - Key used to get localized strings
13
+ * @param parameters - Variables that can be inserted in the email template and localized strings
14
+ * @param tags - Data injected in the localized strings as HTML tags
15
+ * @param to - Users to which the email should be sent
16
16
  */
17
17
  async function sendEmail(userId, template, translationKey, parameters, tags, to) {
18
18
  return (0, _tlsRequest.tlsRequest)({
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.js","names":["_tlsRequest","require","sendEmail","userId","template","translationKey","parameters","tags","to","tlsRequest","method","url","baseURL","process","env","EMAIL_SERVICE_URL","data"],"sources":["../../../src/utils/sendEmail/sendEmail.ts"],"sourcesContent":["import { EmailRecipient } from './sendEmail.types';\nimport { tlsRequest } from 'utils/tlsRequest';\n\n/**\n * Send an email through the email service\n * @param userId - ID of the user that should receive the email\n * @param template - Email template to use\n * @param translationKey - Key used to get localized strings\n * @param parameters - Variables that can be inserted in the email template and localized strings\n * @param tags - Data injected in the localized strings as HTML tags\n * @param to - Users to which the email should be sent\n */\nexport async function sendEmail(\n userId: string,\n template: string,\n translationKey: string,\n parameters?: unknown,\n tags?: unknown,\n to?: Array<EmailRecipient>\n): Promise<unknown> {\n return tlsRequest({\n method: 'post',\n url: '/send',\n baseURL: process.env.EMAIL_SERVICE_URL,\n data: { userId, template, translationKey, parameters, tags, to }\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,SAASA,CAC7BC,MAAc,EACdC,QAAgB,EAChBC,cAAsB,EACtBC,UAAoB,EACpBC,IAAc,EACdC,EAA0B,EACR;EAClB,OAAO,IAAAC,sBAAU,EAAC;IAChBC,MAAM,EAAE,MAAM;IACdC,GAAG,EAAE,OAAO;IACZC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,iBAAiB;IACtCC,IAAI,EAAE;MAAEb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC,UAAU;MAAEC,IAAI;MAAEC;IAAG;EACjE,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"sendEmail.js","names":["_tlsRequest","require","sendEmail","userId","template","translationKey","parameters","tags","to","tlsRequest","method","url","baseURL","process","env","EMAIL_SERVICE_URL","data"],"sources":["../../../src/utils/sendEmail/sendEmail.ts"],"sourcesContent":["import { EmailRecipient } from './sendEmail.types';\r\nimport { tlsRequest } from 'utils/tlsRequest';\r\n\r\n/**\r\n * Send an email through the email service\r\n * @param userId - ID of the user that should receive the email\r\n * @param template - Email template to use\r\n * @param translationKey - Key used to get localized strings\r\n * @param parameters - Variables that can be inserted in the email template and localized strings\r\n * @param tags - Data injected in the localized strings as HTML tags\r\n * @param to - Users to which the email should be sent\r\n */\r\nexport async function sendEmail(\r\n userId: string,\r\n template: string,\r\n translationKey: string,\r\n parameters?: unknown,\r\n tags?: unknown,\r\n to?: Array<EmailRecipient>\r\n): Promise<unknown> {\r\n return tlsRequest({\r\n method: 'post',\r\n url: '/send',\r\n baseURL: process.env.EMAIL_SERVICE_URL,\r\n data: { userId, template, translationKey, parameters, tags, to }\r\n });\r\n}\r\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,SAASA,CAC7BC,MAAc,EACdC,QAAgB,EAChBC,cAAsB,EACtBC,UAAoB,EACpBC,IAAc,EACdC,EAA0B,EACR;EAClB,OAAO,IAAAC,sBAAU,EAAC;IAChBC,MAAM,EAAE,MAAM;IACdC,GAAG,EAAE,OAAO;IACZC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,iBAAiB;IACtCC,IAAI,EAAE;MAAEb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC,UAAU;MAAEC,IAAI;MAAEC;IAAG;EACjE,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.types.js","names":[],"sources":["../../../src/utils/sendEmail/sendEmail.types.ts"],"sourcesContent":["/** Structure representing an email recipient */\nexport interface EmailRecipient {\n /** Email of the person to which the email should be sent */\n email: string;\n /** Name of the person receiving the email */\n name?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"sendEmail.types.js","names":[],"sources":["../../../src/utils/sendEmail/sendEmail.types.ts"],"sourcesContent":["/** Structure representing an email recipient */\r\nexport interface EmailRecipient {\r\n /** Email of the person to which the email should be sent */\r\n email: string;\r\n /** Name of the person receiving the email */\r\n name?: string;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_sendPush","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_sendPush2"],"sources":["../../../src/utils/sendPush/index.ts"],"sourcesContent":["export * from './sendPush';\nexport * from './sendPush.types';\n"],"mappings":";;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,SAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,SAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,SAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_sendPush","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_sendPush2"],"sources":["../../../src/utils/sendPush/index.ts"],"sourcesContent":["export * from './sendPush';\r\nexport * from './sendPush.types';\r\n"],"mappings":";;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,SAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,SAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,SAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.sendPush = sendPush;
7
7
  var _tlsRequest = require("../tlsRequest");
8
- /**
9
- * Send a push notification through the push service
10
- * @param userId - ID of the user that should receive the notification
11
- * @param notification - Notification that should be sent
12
- * @return Push service response
8
+ /**
9
+ * Send a push notification through the push service
10
+ * @param userId - ID of the user that should receive the notification
11
+ * @param notification - Notification that should be sent
12
+ * @return Push service response
13
13
  */
14
14
  async function sendPush(userId, notification) {
15
15
  return (0, _tlsRequest.tlsRequest)({
@@ -1 +1 @@
1
- {"version":3,"file":"sendPush.js","names":["_tlsRequest","require","sendPush","userId","notification","tlsRequest","method","url","baseURL","process","env","PUSH_SERVICE_URL","data"],"sources":["../../../src/utils/sendPush/sendPush.ts"],"sourcesContent":["import { SendPushNotification } from './sendPush.types';\nimport { tlsRequest } from 'utils/tlsRequest';\n\n/**\n * Send a push notification through the push service\n * @param userId - ID of the user that should receive the notification\n * @param notification - Notification that should be sent\n * @return Push service response\n */\nexport async function sendPush(\n userId: string,\n notification: SendPushNotification\n): Promise<unknown> {\n return tlsRequest({\n method: 'post',\n url: '/push',\n baseURL: process.env.PUSH_SERVICE_URL,\n data: { userId, ...notification }\n });\n}\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,QAAQA,CAC5BC,MAAc,EACdC,YAAkC,EAChB;EAClB,OAAO,IAAAC,sBAAU,EAAC;IAChBC,MAAM,EAAE,MAAM;IACdC,GAAG,EAAE,OAAO;IACZC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,gBAAgB;IACrCC,IAAI,EAAE;MAAET,MAAM;MAAE,GAAGC;IAAa;EAClC,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"sendPush.js","names":["_tlsRequest","require","sendPush","userId","notification","tlsRequest","method","url","baseURL","process","env","PUSH_SERVICE_URL","data"],"sources":["../../../src/utils/sendPush/sendPush.ts"],"sourcesContent":["import { SendPushNotification } from './sendPush.types';\r\nimport { tlsRequest } from 'utils/tlsRequest';\r\n\r\n/**\r\n * Send a push notification through the push service\r\n * @param userId - ID of the user that should receive the notification\r\n * @param notification - Notification that should be sent\r\n * @return Push service response\r\n */\r\nexport async function sendPush(\r\n userId: string,\r\n notification: SendPushNotification\r\n): Promise<unknown> {\r\n return tlsRequest({\r\n method: 'post',\r\n url: '/push',\r\n baseURL: process.env.PUSH_SERVICE_URL,\r\n data: { userId, ...notification }\r\n });\r\n}\r\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeC,QAAQA,CAC5BC,MAAc,EACdC,YAAkC,EAChB;EAClB,OAAO,IAAAC,sBAAU,EAAC;IAChBC,MAAM,EAAE,MAAM;IACdC,GAAG,EAAE,OAAO;IACZC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,gBAAgB;IACrCC,IAAI,EAAE;MAAET,MAAM;MAAE,GAAGC;IAAa;EAClC,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sendPush.types.js","names":[],"sources":["../../../src/utils/sendPush/sendPush.types.ts"],"sourcesContent":["/** Stricture representing a push notification to send */\nexport interface SendPushNotification {\n /** Title of the notification */\n title?: string;\n /** Body of the notification */\n body?: string;\n /** Data payload of the notification */\n payload?: unknown;\n /** Indicates that the notification is a VOIP notification */\n voip?: boolean;\n /** Indicate that it is a background notification (data only, low priority) */\n background?: boolean;\n /** Push token can be specified here is we want to send to a given user */\n token?: string;\n /** Indicates that the data content can be mutated by the client (iOS) */\n mutable?: boolean;\n /** Indicates that the notification requires some client side processing to be displayed (iOS) */\n contentAvailable?: boolean;\n /** Time to live of the notification in seconds. After this the notification will not be distributed */\n ttl?: number;\n /** Indicate that it is a high priority notification */\n priority?: boolean;\n /** Notifications with the same string here will be collapsed in the system tray */\n collapseId?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"sendPush.types.js","names":[],"sources":["../../../src/utils/sendPush/sendPush.types.ts"],"sourcesContent":["/** Stricture representing a push notification to send */\r\nexport interface SendPushNotification {\r\n /** Title of the notification */\r\n title?: string;\r\n /** Body of the notification */\r\n body?: string;\r\n /** Data payload of the notification */\r\n payload?: unknown;\r\n /** Indicates that the notification is a VOIP notification */\r\n voip?: boolean;\r\n /** Indicate that it is a background notification (data only, low priority) */\r\n background?: boolean;\r\n /** Push token can be specified here is we want to send to a given user */\r\n token?: string;\r\n /** Indicates that the data content can be mutated by the client (iOS) */\r\n mutable?: boolean;\r\n /** Indicates that the notification requires some client side processing to be displayed (iOS) */\r\n contentAvailable?: boolean;\r\n /** Time to live of the notification in seconds. After this the notification will not be distributed */\r\n ttl?: number;\r\n /** Indicate that it is a high priority notification */\r\n priority?: boolean;\r\n /** Notifications with the same string here will be collapsed in the system tray */\r\n collapseId?: string;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_tlsConfig","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_tlsConfig2"],"sources":["../../../src/utils/tlsConfig/index.ts"],"sourcesContent":["export * from './tlsConfig';\nexport * from './tlsConfig.types';\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_tlsConfig","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_tlsConfig2"],"sources":["../../../src/utils/tlsConfig/index.ts"],"sourcesContent":["export * from './tlsConfig';\r\nexport * from './tlsConfig.types';\r\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -14,8 +14,8 @@ var _EngineError = require("../../entities/EngineError");
14
14
  let tlsConfig = exports.tlsConfig = void 0;
15
15
  let httpsAgent = exports.httpsAgent = void 0;
16
16
 
17
- /**
18
- * Load TLS config by its Environment setting.
17
+ /**
18
+ * Load TLS config by its Environment setting.
19
19
  */
20
20
  function loadTlsConfig() {
21
21
  // Check that environment variables are correctly set
@@ -1 +1 @@
1
- {"version":3,"file":"tlsConfig.js","names":["_fs","_interopRequireDefault","require","_https","_tlsConfig","_EngineError","tlsConfig","exports","httpsAgent","loadTlsConfig","validateTlsConfig","undefined","process","env","TLS_REQUEST_KEY","TLS_SERVER_KEY","key","fs","readFileSync","cert","TLS_REQUEST_CERT","TLS_SERVER_CERT","ca","TLS_REQUEST_CA","TLS_CA","passphrase","TLS_REQUEST_KEY_PASSPHRASE","TLS_SERVER_KEY_PASSPHRASE","https","Agent","EngineError","message"],"sources":["../../../src/utils/tlsConfig/tlsConfig.ts"],"sourcesContent":["import fs from 'fs';\nimport https, { Agent } from 'https';\nimport { TlsConfig } from './tlsConfig.types';\nimport { validateTlsConfig } from './tlsConfig.validate';\nimport { EngineError } from 'entities/EngineError';\n\nexport let tlsConfig: undefined | TlsConfig;\nexport let httpsAgent: undefined | Agent;\n\n/**\n * Load TLS config by its Environment setting.\n */\nexport function loadTlsConfig(): void {\n // Check that environment variables are correctly set\n validateTlsConfig();\n tlsConfig = undefined;\n\n if (process.env.TLS_REQUEST_KEY || process.env.TLS_SERVER_KEY) {\n tlsConfig = {\n key: fs.readFileSync(\n (process.env.TLS_REQUEST_KEY ?? process.env.TLS_SERVER_KEY) as string,\n 'utf-8'\n ),\n cert: fs.readFileSync(\n (process.env.TLS_REQUEST_CERT ?? process.env.TLS_SERVER_CERT) as string,\n 'utf-8'\n ),\n ca: fs.readFileSync(\n (process.env.TLS_REQUEST_CA ?? process.env.TLS_CA) as string,\n 'utf-8'\n ),\n passphrase: (process.env.TLS_REQUEST_KEY_PASSPHRASE ??\n process.env.TLS_SERVER_KEY_PASSPHRASE) as string\n } as TlsConfig;\n httpsAgent = new https.Agent({\n key: tlsConfig.key,\n cert: tlsConfig.cert,\n ca: tlsConfig.ca,\n passphrase: tlsConfig.passphrase\n });\n }\n if (!tlsConfig || !(tlsConfig.ca && tlsConfig.cert && tlsConfig.key)) {\n throw new EngineError({\n message: 'TLS environment variables are not set correctly'\n });\n }\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEO,IAAII,SAAgC,GAAAC,OAAA,CAAAD,SAAA;AACpC,IAAIE,UAA6B,GAAAD,OAAA,CAAAC,UAAA;;AAExC;AACA;AACA;AACO,SAASC,aAAaA,CAAA,EAAS;EACpC;EACA,IAAAC,4BAAiB,EAAC,CAAC;EACnBH,OAAA,CAAAD,SAAA,GAAAA,SAAS,GAAGK,SAAS;EAErB,IAAIC,OAAO,CAACC,GAAG,CAACC,eAAe,IAAIF,OAAO,CAACC,GAAG,CAACE,cAAc,EAAE;IAC7DR,OAAA,CAAAD,SAAA,GAAAA,SAAS,GAAG;MACVU,GAAG,EAAEC,WAAE,CAACC,YAAY,CACjBN,OAAO,CAACC,GAAG,CAACC,eAAe,IAAIF,OAAO,CAACC,GAAG,CAACE,cAAc,EAC1D,OACF,CAAC;MACDI,IAAI,EAAEF,WAAE,CAACC,YAAY,CAClBN,OAAO,CAACC,GAAG,CAACO,gBAAgB,IAAIR,OAAO,CAACC,GAAG,CAACQ,eAAe,EAC5D,OACF,CAAC;MACDC,EAAE,EAAEL,WAAE,CAACC,YAAY,CAChBN,OAAO,CAACC,GAAG,CAACU,cAAc,IAAIX,OAAO,CAACC,GAAG,CAACW,MAAM,EACjD,OACF,CAAC;MACDC,UAAU,EAAGb,OAAO,CAACC,GAAG,CAACa,0BAA0B,IACjDd,OAAO,CAACC,GAAG,CAACc;IAChB,CAAc;IACdpB,OAAA,CAAAC,UAAA,GAAAA,UAAU,GAAG,IAAIoB,cAAK,CAACC,KAAK,CAAC;MAC3Bb,GAAG,EAAEV,SAAS,CAACU,GAAG;MAClBG,IAAI,EAAEb,SAAS,CAACa,IAAI;MACpBG,EAAE,EAAEhB,SAAS,CAACgB,EAAE;MAChBG,UAAU,EAAEnB,SAAS,CAACmB;IACxB,CAAC,CAAC;EACJ;EACA,IAAI,CAACnB,SAAS,IAAI,EAAEA,SAAS,CAACgB,EAAE,IAAIhB,SAAS,CAACa,IAAI,IAAIb,SAAS,CAACU,GAAG,CAAC,EAAE;IACpE,MAAM,IAAIc,wBAAW,CAAC;MACpBC,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
1
+ {"version":3,"file":"tlsConfig.js","names":["_fs","_interopRequireDefault","require","_https","_tlsConfig","_EngineError","tlsConfig","exports","httpsAgent","loadTlsConfig","validateTlsConfig","undefined","process","env","TLS_REQUEST_KEY","TLS_SERVER_KEY","key","fs","readFileSync","cert","TLS_REQUEST_CERT","TLS_SERVER_CERT","ca","TLS_REQUEST_CA","TLS_CA","passphrase","TLS_REQUEST_KEY_PASSPHRASE","TLS_SERVER_KEY_PASSPHRASE","https","Agent","EngineError","message"],"sources":["../../../src/utils/tlsConfig/tlsConfig.ts"],"sourcesContent":["import fs from 'fs';\r\nimport https, { Agent } from 'https';\r\nimport { TlsConfig } from './tlsConfig.types';\r\nimport { validateTlsConfig } from './tlsConfig.validate';\r\nimport { EngineError } from 'entities/EngineError';\r\n\r\nexport let tlsConfig: undefined | TlsConfig;\r\nexport let httpsAgent: undefined | Agent;\r\n\r\n/**\r\n * Load TLS config by its Environment setting.\r\n */\r\nexport function loadTlsConfig(): void {\r\n // Check that environment variables are correctly set\r\n validateTlsConfig();\r\n tlsConfig = undefined;\r\n\r\n if (process.env.TLS_REQUEST_KEY || process.env.TLS_SERVER_KEY) {\r\n tlsConfig = {\r\n key: fs.readFileSync(\r\n (process.env.TLS_REQUEST_KEY ?? process.env.TLS_SERVER_KEY) as string,\r\n 'utf-8'\r\n ),\r\n cert: fs.readFileSync(\r\n (process.env.TLS_REQUEST_CERT ?? process.env.TLS_SERVER_CERT) as string,\r\n 'utf-8'\r\n ),\r\n ca: fs.readFileSync(\r\n (process.env.TLS_REQUEST_CA ?? process.env.TLS_CA) as string,\r\n 'utf-8'\r\n ),\r\n passphrase: (process.env.TLS_REQUEST_KEY_PASSPHRASE ??\r\n process.env.TLS_SERVER_KEY_PASSPHRASE) as string\r\n } as TlsConfig;\r\n httpsAgent = new https.Agent({\r\n key: tlsConfig.key,\r\n cert: tlsConfig.cert,\r\n ca: tlsConfig.ca,\r\n passphrase: tlsConfig.passphrase\r\n });\r\n }\r\n if (!tlsConfig || !(tlsConfig.ca && tlsConfig.cert && tlsConfig.key)) {\r\n throw new EngineError({\r\n message: 'TLS environment variables are not set correctly'\r\n });\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEO,IAAII,SAAgC,GAAAC,OAAA,CAAAD,SAAA;AACpC,IAAIE,UAA6B,GAAAD,OAAA,CAAAC,UAAA;;AAExC;AACA;AACA;AACO,SAASC,aAAaA,CAAA,EAAS;EACpC;EACA,IAAAC,4BAAiB,EAAC,CAAC;EACnBH,OAAA,CAAAD,SAAA,GAAAA,SAAS,GAAGK,SAAS;EAErB,IAAIC,OAAO,CAACC,GAAG,CAACC,eAAe,IAAIF,OAAO,CAACC,GAAG,CAACE,cAAc,EAAE;IAC7DR,OAAA,CAAAD,SAAA,GAAAA,SAAS,GAAG;MACVU,GAAG,EAAEC,WAAE,CAACC,YAAY,CACjBN,OAAO,CAACC,GAAG,CAACC,eAAe,IAAIF,OAAO,CAACC,GAAG,CAACE,cAAc,EAC1D,OACF,CAAC;MACDI,IAAI,EAAEF,WAAE,CAACC,YAAY,CAClBN,OAAO,CAACC,GAAG,CAACO,gBAAgB,IAAIR,OAAO,CAACC,GAAG,CAACQ,eAAe,EAC5D,OACF,CAAC;MACDC,EAAE,EAAEL,WAAE,CAACC,YAAY,CAChBN,OAAO,CAACC,GAAG,CAACU,cAAc,IAAIX,OAAO,CAACC,GAAG,CAACW,MAAM,EACjD,OACF,CAAC;MACDC,UAAU,EAAGb,OAAO,CAACC,GAAG,CAACa,0BAA0B,IACjDd,OAAO,CAACC,GAAG,CAACc;IAChB,CAAc;IACdpB,OAAA,CAAAC,UAAA,GAAAA,UAAU,GAAG,IAAIoB,cAAK,CAACC,KAAK,CAAC;MAC3Bb,GAAG,EAAEV,SAAS,CAACU,GAAG;MAClBG,IAAI,EAAEb,SAAS,CAACa,IAAI;MACpBG,EAAE,EAAEhB,SAAS,CAACgB,EAAE;MAChBG,UAAU,EAAEnB,SAAS,CAACmB;IACxB,CAAC,CAAC;EACJ;EACA,IAAI,CAACnB,SAAS,IAAI,EAAEA,SAAS,CAACgB,EAAE,IAAIhB,SAAS,CAACa,IAAI,IAAIb,SAAS,CAACU,GAAG,CAAC,EAAE;IACpE,MAAM,IAAIc,wBAAW,CAAC;MACpBC,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"tlsConfig.types.js","names":[],"sources":["../../../src/utils/tlsConfig/tlsConfig.types.ts"],"sourcesContent":["/** TLS properties */\nexport interface TlsConfig {\n /** Path to the private key file */\n key: string;\n /** Path to the certificate file */\n cert: string;\n /** Path to the CA certificate file */\n ca: string;\n /** Passphrase to use to unwrap the private key */\n passphrase?: string;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"tlsConfig.types.js","names":[],"sources":["../../../src/utils/tlsConfig/tlsConfig.types.ts"],"sourcesContent":["/** TLS properties */\r\nexport interface TlsConfig {\r\n /** Path to the private key file */\r\n key: string;\r\n /** Path to the certificate file */\r\n cert: string;\r\n /** Path to the CA certificate file */\r\n ca: string;\r\n /** Passphrase to use to unwrap the private key */\r\n passphrase?: string;\r\n}\r\n"],"mappings":"","ignoreList":[]}
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.validateTlsConfig = validateTlsConfig;
7
7
  var _ = require("./..");
8
- /**
9
- * Verify that the environment variables
8
+ /**
9
+ * Verify that the environment variables
10
10
  */
11
11
  function validateTlsConfig() {
12
12
  // We only check if there is at least the host specified
@@ -1 +1 @@
1
- {"version":3,"file":"tlsConfig.validate.js","names":["_","require","validateTlsConfig","process","env","TLS_REQUEST_CERT","assertEnvironment","TLS_REQUEST_KEY","envAssert","isPath","TLS_REQUEST_CA","TLS_REQUEST_KEY_PASSPHRASE","isString","TLS_SERVER_CERT","TLS_SERVER_KEY","TLS_CA","TLS_SERVER_KEY_PASSPHRASE"],"sources":["../../../src/utils/tlsConfig/tlsConfig.validate.ts"],"sourcesContent":["import { assertEnvironment, envAssert } from 'utils';\n/**\n * Verify that the environment variables\n */\nexport function validateTlsConfig(): void {\n // We only check if there is at least the host specified\n if (process.env.TLS_REQUEST_CERT) {\n assertEnvironment({ TLS_REQUEST_KEY: envAssert.isPath() });\n assertEnvironment({ TLS_REQUEST_CERT: envAssert.isPath() });\n assertEnvironment({ TLS_REQUEST_CA: envAssert.isPath() });\n // Optional variables\n if (process.env.TLS_REQUEST_KEY_PASSPHRASE) {\n assertEnvironment({ TLS_REQUEST_KEY_PASSPHRASE: envAssert.isString() });\n }\n } else if (process.env.TLS_SERVER_CERT) {\n // if no TLS Request setting, TLS Server setting is essential.\n assertEnvironment({ TLS_SERVER_KEY: envAssert.isPath() });\n assertEnvironment({ TLS_SERVER_CERT: envAssert.isPath() });\n assertEnvironment({ TLS_CA: envAssert.isPath() });\n // Optional variables\n if (process.env.TLS_SERVER_KEY_PASSPHRASE) {\n assertEnvironment({ TLS_SERVER_KEY_PASSPHRASE: envAssert.isString() });\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,CAAA,GAAAC,OAAA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAA,EAAS;EACxC;EACA,IAAIC,OAAO,CAACC,GAAG,CAACC,gBAAgB,EAAE;IAChC,IAAAC,mBAAiB,EAAC;MAAEC,eAAe,EAAEC,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IAC1D,IAAAH,mBAAiB,EAAC;MAAED,gBAAgB,EAAEG,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IAC3D,IAAAH,mBAAiB,EAAC;MAAEI,cAAc,EAAEF,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IACzD;IACA,IAAIN,OAAO,CAACC,GAAG,CAACO,0BAA0B,EAAE;MAC1C,IAAAL,mBAAiB,EAAC;QAAEK,0BAA0B,EAAEH,WAAS,CAACI,QAAQ,CAAC;MAAE,CAAC,CAAC;IACzE;EACF,CAAC,MAAM,IAAIT,OAAO,CAACC,GAAG,CAACS,eAAe,EAAE;IACtC;IACA,IAAAP,mBAAiB,EAAC;MAAEQ,cAAc,EAAEN,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IACzD,IAAAH,mBAAiB,EAAC;MAAEO,eAAe,EAAEL,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IAC1D,IAAAH,mBAAiB,EAAC;MAAES,MAAM,EAAEP,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IACjD;IACA,IAAIN,OAAO,CAACC,GAAG,CAACY,yBAAyB,EAAE;MACzC,IAAAV,mBAAiB,EAAC;QAAEU,yBAAyB,EAAER,WAAS,CAACI,QAAQ,CAAC;MAAE,CAAC,CAAC;IACxE;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"tlsConfig.validate.js","names":["_","require","validateTlsConfig","process","env","TLS_REQUEST_CERT","assertEnvironment","TLS_REQUEST_KEY","envAssert","isPath","TLS_REQUEST_CA","TLS_REQUEST_KEY_PASSPHRASE","isString","TLS_SERVER_CERT","TLS_SERVER_KEY","TLS_CA","TLS_SERVER_KEY_PASSPHRASE"],"sources":["../../../src/utils/tlsConfig/tlsConfig.validate.ts"],"sourcesContent":["import { assertEnvironment, envAssert } from 'utils';\r\n/**\r\n * Verify that the environment variables\r\n */\r\nexport function validateTlsConfig(): void {\r\n // We only check if there is at least the host specified\r\n if (process.env.TLS_REQUEST_CERT) {\r\n assertEnvironment({ TLS_REQUEST_KEY: envAssert.isPath() });\r\n assertEnvironment({ TLS_REQUEST_CERT: envAssert.isPath() });\r\n assertEnvironment({ TLS_REQUEST_CA: envAssert.isPath() });\r\n // Optional variables\r\n if (process.env.TLS_REQUEST_KEY_PASSPHRASE) {\r\n assertEnvironment({ TLS_REQUEST_KEY_PASSPHRASE: envAssert.isString() });\r\n }\r\n } else if (process.env.TLS_SERVER_CERT) {\r\n // if no TLS Request setting, TLS Server setting is essential.\r\n assertEnvironment({ TLS_SERVER_KEY: envAssert.isPath() });\r\n assertEnvironment({ TLS_SERVER_CERT: envAssert.isPath() });\r\n assertEnvironment({ TLS_CA: envAssert.isPath() });\r\n // Optional variables\r\n if (process.env.TLS_SERVER_KEY_PASSPHRASE) {\r\n assertEnvironment({ TLS_SERVER_KEY_PASSPHRASE: envAssert.isString() });\r\n }\r\n }\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,CAAA,GAAAC,OAAA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAA,EAAS;EACxC;EACA,IAAIC,OAAO,CAACC,GAAG,CAACC,gBAAgB,EAAE;IAChC,IAAAC,mBAAiB,EAAC;MAAEC,eAAe,EAAEC,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IAC1D,IAAAH,mBAAiB,EAAC;MAAED,gBAAgB,EAAEG,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IAC3D,IAAAH,mBAAiB,EAAC;MAAEI,cAAc,EAAEF,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IACzD;IACA,IAAIN,OAAO,CAACC,GAAG,CAACO,0BAA0B,EAAE;MAC1C,IAAAL,mBAAiB,EAAC;QAAEK,0BAA0B,EAAEH,WAAS,CAACI,QAAQ,CAAC;MAAE,CAAC,CAAC;IACzE;EACF,CAAC,MAAM,IAAIT,OAAO,CAACC,GAAG,CAACS,eAAe,EAAE;IACtC;IACA,IAAAP,mBAAiB,EAAC;MAAEQ,cAAc,EAAEN,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IACzD,IAAAH,mBAAiB,EAAC;MAAEO,eAAe,EAAEL,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IAC1D,IAAAH,mBAAiB,EAAC;MAAES,MAAM,EAAEP,WAAS,CAACC,MAAM,CAAC;IAAE,CAAC,CAAC;IACjD;IACA,IAAIN,OAAO,CAACC,GAAG,CAACY,yBAAyB,EAAE;MACzC,IAAAV,mBAAiB,EAAC;QAAEU,yBAAyB,EAAER,WAAS,CAACI,QAAQ,CAAC;MAAE,CAAC,CAAC;IACxE;EACF;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_tlsRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/tlsRequest/index.ts"],"sourcesContent":["export * from './tlsRequest';\n"],"mappings":";;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_tlsRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/tlsRequest/index.ts"],"sourcesContent":["export * from './tlsRequest';\r\n"],"mappings":";;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"tlsRequest.js","names":["_request","require","_tlsConfig","tlsRequest","options","httpsAgent","loadTlsConfig","request"],"sources":["../../../src/utils/tlsRequest/tlsRequest.ts"],"sourcesContent":["import { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { request } from 'utils/request';\nimport { httpsAgent, loadTlsConfig } from 'utils/tlsConfig';\n\n/** Make a network request using TLS, this exposes the server client certificates to the destination */\nexport async function tlsRequest<T = unknown>(\n options: AxiosRequestConfig\n): Promise<AxiosResponse<T>> {\n // if the config is not initial, will do that.\n if (!httpsAgent) loadTlsConfig();\n return request<T>({ httpsAgent, ...options });\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA;AACO,eAAeE,UAAUA,CAC9BC,OAA2B,EACA;EAC3B;EACA,IAAI,CAACC,qBAAU,EAAE,IAAAC,wBAAa,EAAC,CAAC;EAChC,OAAO,IAAAC,gBAAO,EAAI;IAAEF,UAAU,EAAVA,qBAAU;IAAE,GAAGD;EAAQ,CAAC,CAAC;AAC/C","ignoreList":[]}
1
+ {"version":3,"file":"tlsRequest.js","names":["_request","require","_tlsConfig","tlsRequest","options","httpsAgent","loadTlsConfig","request"],"sources":["../../../src/utils/tlsRequest/tlsRequest.ts"],"sourcesContent":["import { AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { request } from 'utils/request';\r\nimport { httpsAgent, loadTlsConfig } from 'utils/tlsConfig';\r\n\r\n/** Make a network request using TLS, this exposes the server client certificates to the destination */\r\nexport async function tlsRequest<T = unknown>(\r\n options: AxiosRequestConfig\r\n): Promise<AxiosResponse<T>> {\r\n // if the config is not initial, will do that.\r\n if (!httpsAgent) loadTlsConfig();\r\n return request<T>({ httpsAgent, ...options });\r\n}\r\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA;AACO,eAAeE,UAAUA,CAC9BC,OAA2B,EACA;EAC3B;EACA,IAAI,CAACC,qBAAU,EAAE,IAAAC,wBAAa,EAAC,CAAC;EAChC,OAAO,IAAAC,gBAAO,EAAI;IAAEF,UAAU,EAAVA,qBAAU;IAAE,GAAGD;EAAQ,CAAC,CAAC;AAC/C","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_trimPathSlash","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/trimPathSlash/index.ts"],"sourcesContent":["export * from './trimPathSlash';\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_trimPathSlash","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../../src/utils/trimPathSlash/index.ts"],"sourcesContent":["export * from './trimPathSlash';\r\n"],"mappings":";;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,cAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,cAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,cAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.trimPathSlash = trimPathSlash;
7
- /**
8
- * Remove slashes if they are the first or last chars of a string
9
- * @param url - URL to which slashes should be stripped
10
- * @return Cleaned-up string
7
+ /**
8
+ * Remove slashes if they are the first or last chars of a string
9
+ * @param url - URL to which slashes should be stripped
10
+ * @return Cleaned-up string
11
11
  */
12
12
  function trimPathSlash(url) {
13
13
  return url.replace(/\/$/, '').replace(/^\//, '');
@@ -1 +1 @@
1
- {"version":3,"file":"trimPathSlash.js","names":["trimPathSlash","url","replace"],"sources":["../../../src/utils/trimPathSlash/trimPathSlash.ts"],"sourcesContent":["/**\n * Remove slashes if they are the first or last chars of a string\n * @param url - URL to which slashes should be stripped\n * @return Cleaned-up string\n */\nexport function trimPathSlash(url: string): string {\n return url.replace(/\\/$/, '').replace(/^\\//, '');\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAaA,CAACC,GAAW,EAAU;EACjD,OAAOA,GAAG,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClD","ignoreList":[]}
1
+ {"version":3,"file":"trimPathSlash.js","names":["trimPathSlash","url","replace"],"sources":["../../../src/utils/trimPathSlash/trimPathSlash.ts"],"sourcesContent":["/**\r\n * Remove slashes if they are the first or last chars of a string\r\n * @param url - URL to which slashes should be stripped\r\n * @return Cleaned-up string\r\n */\r\nexport function trimPathSlash(url: string): string {\r\n return url.replace(/\\/$/, '').replace(/^\\//, '');\r\n}\r\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,aAAaA,CAACC,GAAW,EAAU;EACjD,OAAOA,GAAG,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClD","ignoreList":[]}
package/eslint.config.mjs CHANGED
@@ -1,11 +1,11 @@
1
- import globals from 'globals';
2
- import pluginJs from '@eslint/js';
3
- import tseslint from 'typescript-eslint';
4
-
5
- export default [
6
- { files: ['.src/', '**/*.{js,mjs,cjs,ts}'] },
7
- { languageOptions: { globals: { ...globals.browser, ...globals.node } } },
8
- pluginJs.configs.recommended,
9
- { ignores: ['**/*.test.ts', '**/*.d.ts'] },
10
- ...tseslint.configs.recommended
11
- ];
1
+ import globals from 'globals';
2
+ import pluginJs from '@eslint/js';
3
+ import tseslint from 'typescript-eslint';
4
+
5
+ export default [
6
+ { files: ['.src/', '**/*.{js,mjs,cjs,ts}'] },
7
+ { languageOptions: { globals: { ...globals.browser, ...globals.node } } },
8
+ pluginJs.configs.recommended,
9
+ { ignores: ['**/*.test.ts', '**/*.d.ts'] },
10
+ ...tseslint.configs.recommended
11
+ ];