node-server-engine 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) 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.d.ts +3 -1
  115. package/dist/middleware/checkPermission/checkPermission.js +2 -2
  116. package/dist/middleware/checkPermission/checkPermission.js.map +1 -1
  117. package/dist/middleware/error/error.js.map +1 -1
  118. package/dist/middleware/error/index.js.map +1 -1
  119. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +2 -2
  120. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -1
  121. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -1
  122. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -1
  123. package/dist/middleware/fileUploader/fileUploader.js +12 -12
  124. package/dist/middleware/fileUploader/fileUploader.js.map +1 -1
  125. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -1
  126. package/dist/middleware/fileUploader/index.js.map +1 -1
  127. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -1
  128. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -1
  129. package/dist/middleware/fileUploader/validate/index.js.map +1 -1
  130. package/dist/middleware/fileUploader/validate/validate.js.map +1 -1
  131. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -1
  132. package/dist/middleware/fourOhFour/index.js.map +1 -1
  133. package/dist/middleware/geminiFileUploader/geminiFileUploader.js.map +1 -1
  134. package/dist/middleware/geminiFileUploader/index.js.map +1 -1
  135. package/dist/middleware/healthCheck/healthCheck.js +2 -2
  136. package/dist/middleware/healthCheck/healthCheck.js.map +1 -1
  137. package/dist/middleware/healthCheck/index.js.map +1 -1
  138. package/dist/middleware/index.js.map +1 -1
  139. package/dist/middleware/metrics/index.js.map +1 -1
  140. package/dist/middleware/metrics/metrics.js.map +1 -1
  141. package/dist/middleware/requestMetrics/index.js.map +1 -1
  142. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -1
  143. package/dist/middleware/swaggerDocs/index.js.map +1 -1
  144. package/dist/middleware/swaggerDocs/swaggerDocs.js +7 -7
  145. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -1
  146. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -1
  147. package/dist/middleware/userResolver/index.js.map +1 -1
  148. package/dist/middleware/userResolver/userResolver.js.map +1 -1
  149. package/dist/middleware/validate/index.js.map +1 -1
  150. package/dist/middleware/validate/validate.js.map +1 -1
  151. package/dist/middleware/version/index.js.map +1 -1
  152. package/dist/middleware/version/version.js +3 -3
  153. package/dist/middleware/version/version.js.map +1 -1
  154. package/dist/utils/checkEnvironment/index.js +13 -13
  155. package/dist/utils/checkEnvironment/index.js.map +1 -1
  156. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -1
  157. package/dist/utils/createHttpServer/createHttpServer.validate.js +2 -2
  158. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -1
  159. package/dist/utils/createHttpServer/index.js.map +1 -1
  160. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -1
  161. package/dist/utils/createSortedObject/index.js.map +1 -1
  162. package/dist/utils/dbMigration/dbMigration.js +8 -8
  163. package/dist/utils/dbMigration/dbMigration.js.map +1 -1
  164. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -1
  165. package/dist/utils/dbMigration/index.js.map +1 -1
  166. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -1
  167. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.d.ts +2 -2
  168. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +47 -15
  169. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -1
  170. package/dist/utils/envAssert/envAssert.js +6 -6
  171. package/dist/utils/envAssert/envAssert.js.map +1 -1
  172. package/dist/utils/envAssert/index.js.map +1 -1
  173. package/dist/utils/envAssert/validators/hostList.js +2 -2
  174. package/dist/utils/envAssert/validators/hostList.js.map +1 -1
  175. package/dist/utils/envAssert/validators/index.js.map +1 -1
  176. package/dist/utils/envAssert/validators/ipList.js +2 -2
  177. package/dist/utils/envAssert/validators/ipList.js.map +1 -1
  178. package/dist/utils/envAssert/validators/path.js +2 -2
  179. package/dist/utils/envAssert/validators/path.js.map +1 -1
  180. package/dist/utils/envAssert/validators/string.js +2 -2
  181. package/dist/utils/envAssert/validators/string.js.map +1 -1
  182. package/dist/utils/envAssert/validators/stringList.js +3 -3
  183. package/dist/utils/envAssert/validators/stringList.js.map +1 -1
  184. package/dist/utils/filter/filter.js +4 -4
  185. package/dist/utils/filter/filter.js.map +1 -1
  186. package/dist/utils/filter/index.js.map +1 -1
  187. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -1
  188. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -1
  189. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -1
  190. package/dist/utils/getDynamicLink/index.js.map +1 -1
  191. package/dist/utils/hmac/checkEnv/checkEnv.js +2 -2
  192. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -1
  193. package/dist/utils/hmac/checkEnv/index.js.map +1 -1
  194. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -1
  195. package/dist/utils/hmac/createHmac/index.js.map +1 -1
  196. package/dist/utils/hmac/index.js.map +1 -1
  197. package/dist/utils/hmac/index.types.js.map +1 -1
  198. package/dist/utils/hmac/signPayload/index.js.map +1 -1
  199. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -1
  200. package/dist/utils/hmac/verifySignature/index.js.map +1 -1
  201. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -1
  202. package/dist/utils/index.js.map +1 -1
  203. package/dist/utils/jwt/index.js.map +1 -1
  204. package/dist/utils/jwt/jwt.js.map +1 -1
  205. package/dist/utils/jwt/jwt.types.js.map +1 -1
  206. package/dist/utils/report/index.js.map +1 -1
  207. package/dist/utils/report/output.js.map +1 -1
  208. package/dist/utils/report/output.types.js.map +1 -1
  209. package/dist/utils/report/report.js.map +1 -1
  210. package/dist/utils/report/report.types.js.map +1 -1
  211. package/dist/utils/request/index.js.map +1 -1
  212. package/dist/utils/request/request.js.map +1 -1
  213. package/dist/utils/semverCompare/index.js.map +1 -1
  214. package/dist/utils/semverCompare/semverCompare.js +5 -5
  215. package/dist/utils/semverCompare/semverCompare.js.map +1 -1
  216. package/dist/utils/sendEmail/index.js.map +1 -1
  217. package/dist/utils/sendEmail/sendEmail.js +8 -8
  218. package/dist/utils/sendEmail/sendEmail.js.map +1 -1
  219. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -1
  220. package/dist/utils/sendPush/index.js.map +1 -1
  221. package/dist/utils/sendPush/sendPush.js +5 -5
  222. package/dist/utils/sendPush/sendPush.js.map +1 -1
  223. package/dist/utils/sendPush/sendPush.types.js.map +1 -1
  224. package/dist/utils/tlsConfig/index.js.map +1 -1
  225. package/dist/utils/tlsConfig/tlsConfig.js +2 -2
  226. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -1
  227. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -1
  228. package/dist/utils/tlsConfig/tlsConfig.validate.js +2 -2
  229. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -1
  230. package/dist/utils/tlsRequest/index.js.map +1 -1
  231. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -1
  232. package/dist/utils/trimPathSlash/index.js.map +1 -1
  233. package/dist/utils/trimPathSlash/trimPathSlash.js +4 -4
  234. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -1
  235. package/eslint.config.mjs +11 -11
  236. package/package.json +164 -161
  237. package/src/const/DebeziumEvent.ts +6 -6
  238. package/src/const/LogSeverity.ts +7 -7
  239. package/src/const/index.ts +5 -5
  240. package/src/const/metrics.ts +6 -6
  241. package/src/const/mime.ts +37 -37
  242. package/src/const/tokenIssuer.ts +9 -9
  243. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -29
  244. package/src/db/models/SequelizeMeta.ts +16 -16
  245. package/src/db/models/index.ts +2 -2
  246. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -103
  247. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -7
  248. package/src/entities/ElasticSearch/index.ts +2 -2
  249. package/src/entities/Endpoint/Endpoint.test.ts +337 -337
  250. package/src/entities/Endpoint/Endpoint.ts +202 -202
  251. package/src/entities/Endpoint/Endpoint.types.ts +205 -205
  252. package/src/entities/Endpoint/index.ts +2 -2
  253. package/src/entities/EngineError/EngineError.ts +28 -28
  254. package/src/entities/EngineError/EngineError.types.ts +15 -15
  255. package/src/entities/EngineError/index.ts +2 -2
  256. package/src/entities/KeySet/KeySet.test.ts +126 -126
  257. package/src/entities/KeySet/KeySet.ts +172 -172
  258. package/src/entities/KeySet/KeySet.types.ts +28 -28
  259. package/src/entities/KeySet/index.ts +2 -2
  260. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -48
  261. package/src/entities/LifecycleController/LifecycleController.ts +24 -24
  262. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -5
  263. package/src/entities/LifecycleController/index.ts +2 -2
  264. package/src/entities/Localizator/Localizator.ts +139 -139
  265. package/src/entities/Localizator/Localizator.types.ts +52 -52
  266. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -165
  267. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -58
  268. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -1
  269. package/src/entities/Localizator/index.ts +2 -2
  270. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -130
  271. package/src/entities/MessageHandler/MessageHandler.ts +72 -72
  272. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -15
  273. package/src/entities/MessageHandler/index.ts +2 -2
  274. package/src/entities/PubSub/PubSub.test.ts +297 -297
  275. package/src/entities/PubSub/PubSub.ts +202 -202
  276. package/src/entities/PubSub/PubSub.types.ts +76 -76
  277. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -102
  278. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -65
  279. package/src/entities/PubSub/handleMessage/index.ts +1 -1
  280. package/src/entities/PubSub/index.ts +2 -2
  281. package/src/entities/PushNotification/PushNotification.test.ts +35 -35
  282. package/src/entities/PushNotification/PushNotification.ts +44 -44
  283. package/src/entities/PushNotification/PushNotification.types.ts +25 -25
  284. package/src/entities/PushNotification/index.ts +2 -2
  285. package/src/entities/Redis/Redis.ts +71 -71
  286. package/src/entities/Redis/Redis.types.ts +19 -19
  287. package/src/entities/Redis/Redis.validate.ts +17 -17
  288. package/src/entities/Redis/index.ts +2 -2
  289. package/src/entities/Sequelize/Sequelize.config.ts +59 -29
  290. package/src/entities/Sequelize/Sequelize.test.ts +21 -21
  291. package/src/entities/Sequelize/Sequelize.ts +75 -75
  292. package/src/entities/Sequelize/Sequelize.types.ts +10 -10
  293. package/src/entities/Sequelize/Sequelize.validate.ts +15 -15
  294. package/src/entities/Sequelize/index.ts +2 -2
  295. package/src/entities/Server/Server.const.ts +56 -56
  296. package/src/entities/Server/Server.test.ts +272 -272
  297. package/src/entities/Server/Server.ts +445 -445
  298. package/src/entities/Server/Server.types.ts +88 -88
  299. package/src/entities/Server/index.ts +2 -2
  300. package/src/entities/SocketClient/SocketClient.test.ts +392 -392
  301. package/src/entities/SocketClient/SocketClient.ts +401 -401
  302. package/src/entities/SocketClient/SocketClient.types.ts +62 -62
  303. package/src/entities/SocketClient/index.ts +2 -2
  304. package/src/entities/SocketClient/parseMessage/index.ts +1 -1
  305. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -20
  306. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -26
  307. package/src/entities/Storage/Storage.test.ts +58 -58
  308. package/src/entities/Storage/Storage.ts +219 -219
  309. package/src/entities/Storage/Storage.types.ts +57 -57
  310. package/src/entities/Storage/index.ts +2 -2
  311. package/src/entities/ValidationError/ValidationError.ts +34 -34
  312. package/src/entities/ValidationError/index.ts +1 -1
  313. package/src/entities/WebError/WebError.test.ts +18 -18
  314. package/src/entities/WebError/WebError.ts +23 -23
  315. package/src/entities/WebError/WebError.types.ts +9 -9
  316. package/src/entities/WebError/index.ts +2 -2
  317. package/src/entities/index.ts +16 -16
  318. package/src/index.ts +4 -4
  319. package/src/metrics/debug.ts +10 -10
  320. package/src/metrics/index.ts +2 -2
  321. package/src/metrics/request.ts +17 -17
  322. package/src/middleware/authAdmin/authAdmin.test.ts +199 -199
  323. package/src/middleware/authAdmin/authAdmin.ts +114 -114
  324. package/src/middleware/authAdmin/authAdmin.types.ts +19 -19
  325. package/src/middleware/authAdmin/index.ts +2 -2
  326. package/src/middleware/authHmac/authHmac.test.ts +86 -86
  327. package/src/middleware/authHmac/authHmac.ts +56 -56
  328. package/src/middleware/authHmac/authHmac.types.ts +7 -7
  329. package/src/middleware/authHmac/index.ts +2 -2
  330. package/src/middleware/authJwt/authJwt.test.ts +54 -54
  331. package/src/middleware/authJwt/authJwt.ts +55 -55
  332. package/src/middleware/authJwt/authJwt.types.ts +14 -14
  333. package/src/middleware/authJwt/index.ts +2 -2
  334. package/src/middleware/authStatic/authStatic.test.ts +36 -36
  335. package/src/middleware/authStatic/authStatic.ts +45 -45
  336. package/src/middleware/authStatic/index.ts +1 -1
  337. package/src/middleware/authTls/authTls.test.ts +138 -138
  338. package/src/middleware/authTls/authTls.ts +106 -106
  339. package/src/middleware/authTls/authTls.types.ts +13 -13
  340. package/src/middleware/authTls/index.ts +2 -2
  341. package/src/middleware/checkPermission/checkPermission.ts +33 -35
  342. package/src/middleware/error/error.test.ts +60 -60
  343. package/src/middleware/error/error.ts +25 -25
  344. package/src/middleware/error/index.ts +1 -1
  345. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -25
  346. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -12
  347. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -2
  348. package/src/middleware/fileUploader/fileUploader.test.ts +310 -310
  349. package/src/middleware/fileUploader/fileUploader.ts +303 -303
  350. package/src/middleware/fileUploader/fileUploader.types.ts +52 -52
  351. package/src/middleware/fileUploader/index.ts +2 -2
  352. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -1
  353. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -9
  354. package/src/middleware/fileUploader/validate/index.ts +1 -1
  355. package/src/middleware/fileUploader/validate/validate.ts +27 -27
  356. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -14
  357. package/src/middleware/fourOhFour/fourOhFour.ts +13 -13
  358. package/src/middleware/fourOhFour/index.ts +1 -1
  359. package/src/middleware/geminiFileUploader/geminiFileUploader.ts +117 -117
  360. package/src/middleware/geminiFileUploader/index.ts +1 -1
  361. package/src/middleware/healthCheck/healthCheck.test.ts +12 -12
  362. package/src/middleware/healthCheck/healthCheck.ts +14 -14
  363. package/src/middleware/healthCheck/index.ts +1 -1
  364. package/src/middleware/index.ts +17 -17
  365. package/src/middleware/metrics/index.ts +1 -1
  366. package/src/middleware/metrics/metrics.test.ts +46 -46
  367. package/src/middleware/metrics/metrics.ts +24 -24
  368. package/src/middleware/requestMetrics/index.ts +1 -1
  369. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -77
  370. package/src/middleware/requestMetrics/requestMetrics.ts +20 -20
  371. package/src/middleware/swaggerDocs/index.ts +2 -2
  372. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -114
  373. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -41
  374. package/src/middleware/userResolver/index.ts +1 -1
  375. package/src/middleware/userResolver/userResolver.test.ts +35 -35
  376. package/src/middleware/userResolver/userResolver.ts +35 -35
  377. package/src/middleware/validate/index.ts +1 -1
  378. package/src/middleware/validate/validate.test.ts +43 -43
  379. package/src/middleware/validate/validate.ts +25 -25
  380. package/src/middleware/version/index.ts +1 -1
  381. package/src/middleware/version/version.test.ts +23 -23
  382. package/src/middleware/version/version.ts +12 -12
  383. package/src/utils/checkEnvironment/index.ts +49 -49
  384. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -24
  385. package/src/utils/createHttpServer/createHttpServer.ts +34 -34
  386. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -17
  387. package/src/utils/createHttpServer/index.ts +1 -1
  388. package/src/utils/createSortedObject/createSortedObject.ts +20 -20
  389. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -47
  390. package/src/utils/createSortedObject/index.ts +1 -1
  391. package/src/utils/dbMigration/dbMigration.test.ts +209 -209
  392. package/src/utils/dbMigration/dbMigration.ts +199 -199
  393. package/src/utils/dbMigration/dbMigration.types.ts +11 -11
  394. package/src/utils/dbMigration/index.ts +2 -2
  395. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -1
  396. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -59
  397. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +102 -70
  398. package/src/utils/envAssert/envAssert.ts +31 -31
  399. package/src/utils/envAssert/index.ts +1 -1
  400. package/src/utils/envAssert/validators/hostList.ts +17 -17
  401. package/src/utils/envAssert/validators/index.ts +5 -5
  402. package/src/utils/envAssert/validators/ipList.ts +13 -13
  403. package/src/utils/envAssert/validators/path.ts +13 -13
  404. package/src/utils/envAssert/validators/string.ts +9 -9
  405. package/src/utils/envAssert/validators/stringList.ts +13 -13
  406. package/src/utils/filter/filter.ts +17 -17
  407. package/src/utils/filter/index.ts +1 -1
  408. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -51
  409. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -28
  410. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -11
  411. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -6
  412. package/src/utils/getDynamicLink/index.ts +2 -2
  413. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -18
  414. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -9
  415. package/src/utils/hmac/checkEnv/index.ts +1 -1
  416. package/src/utils/hmac/createHmac/createHmac.ts +33 -33
  417. package/src/utils/hmac/createHmac/index.ts +1 -1
  418. package/src/utils/hmac/index.ts +4 -4
  419. package/src/utils/hmac/index.types.ts +13 -13
  420. package/src/utils/hmac/signPayload/index.ts +1 -1
  421. package/src/utils/hmac/signPayload/signPayload.ts +16 -16
  422. package/src/utils/hmac/verifySignature/index.ts +1 -1
  423. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -24
  424. package/src/utils/index.ts +26 -26
  425. package/src/utils/jwt/index.ts +2 -2
  426. package/src/utils/jwt/jwt.test.ts +41 -41
  427. package/src/utils/jwt/jwt.ts +204 -204
  428. package/src/utils/jwt/jwt.types.ts +21 -21
  429. package/src/utils/report/index.ts +3 -3
  430. package/src/utils/report/output.ts +45 -45
  431. package/src/utils/report/output.types.ts +70 -70
  432. package/src/utils/report/report.test.ts +133 -133
  433. package/src/utils/report/report.ts +134 -134
  434. package/src/utils/report/report.types.ts +13 -13
  435. package/src/utils/request/index.ts +1 -1
  436. package/src/utils/request/request.test.ts +26 -26
  437. package/src/utils/request/request.ts +48 -48
  438. package/src/utils/semverCompare/index.ts +1 -1
  439. package/src/utils/semverCompare/semverCompare.test.ts +49 -49
  440. package/src/utils/semverCompare/semverCompare.ts +60 -60
  441. package/src/utils/sendEmail/index.ts +1 -1
  442. package/src/utils/sendEmail/sendEmail.ts +27 -27
  443. package/src/utils/sendEmail/sendEmail.types.ts +7 -7
  444. package/src/utils/sendPush/index.ts +2 -2
  445. package/src/utils/sendPush/sendPush.ts +20 -20
  446. package/src/utils/sendPush/sendPush.types.ts +25 -25
  447. package/src/utils/tlsConfig/index.ts +2 -2
  448. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -32
  449. package/src/utils/tlsConfig/tlsConfig.ts +47 -47
  450. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -11
  451. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -25
  452. package/src/utils/tlsRequest/index.ts +1 -1
  453. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -63
  454. package/src/utils/tlsRequest/tlsRequest.ts +12 -12
  455. package/src/utils/trimPathSlash/index.ts +1 -1
  456. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -26
  457. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -8
  458. package/test/env.ts +56 -56
  459. package/test/factory/index.ts +8 -8
  460. package/test/factory/sequelizeMeta.ts +12 -12
  461. package/test/hooks.ts +37 -37
  462. package/test/index.ts +3 -3
  463. package/test/stub/index.ts +3 -3
  464. package/test/stub/stubLocales.ts +68 -68
  465. package/test/stub/stubPubSub.ts +7 -7
  466. package/test/stub/stubStorage.ts +77 -77
  467. package/test/stub/stubStorage.types.ts +11 -11
  468. package/test/utils/app.ts +31 -31
  469. package/test/utils/index.ts +1 -1
  470. package/tsconfig.build.json +5 -5
  471. package/tsconfig.json +32 -32
@@ -1,204 +1,204 @@
1
- import {
2
- verify,
3
- JwtHeader,
4
- SigningKeyCallback,
5
- Algorithm,
6
- VerifyOptions,
7
- sign
8
- } from 'jsonwebtoken';
9
- import fs from 'fs';
10
- import path from 'path';
11
- import { UserTokenPayload } from './jwt.types';
12
- import { TokenIssuer } from 'const';
13
- import { EngineError } from 'entities/EngineError';
14
- import { KeySet } from 'entities/KeySet';
15
- import { WebError } from 'entities/WebError';
16
- import { assertEnvironment } from 'utils/checkEnvironment';
17
- import { envAssert } from 'utils/envAssert';
18
- import { reportDebug } from 'utils/report';
19
-
20
- export let keySet: KeySet | undefined;
21
- export let adminKeySet: KeySet | undefined;
22
-
23
- const namespace = 'engine:utils:jwt';
24
-
25
- /** Initiate key fetching mechanism */
26
- export async function initKeySets(): Promise<void> {
27
- // Create the KeySet instance
28
- // The auth-service fetches its key from its disk and not from a network request
29
- // This prevents fetch failures the first time the auth-service is started
30
- if (process.env.CHART === 'auth-service') {
31
- if (!process.env.ECDSA_PUBLIC_KEY)
32
- throw new EngineError({
33
- message: 'Environment variable "ECDSA_PUBLIC_KEY" is not defined'
34
- });
35
- keySet = new KeySet(process.env.ECDSA_PUBLIC_KEY, { file: true });
36
- } else {
37
- if (process.env.AUTH_SERVICE_URL)
38
- keySet = new KeySet(
39
- `${process.env.AUTH_SERVICE_URL}/.well-known/jwks.json`,
40
- { internal: true }
41
- );
42
- else
43
- keySet = new KeySet(`./keys/jwks.json`, { internal: true, file: true });
44
-
45
- if (!keySet)
46
- throw new EngineError({
47
- message:
48
- 'Environment variable "AUTH_SERVICE_URL" is not defined or JWKS not found'
49
- });
50
- }
51
- const promise = [keySet.init.bind(keySet)()];
52
-
53
- // Load the key set for the admin api
54
- if (!process.env.ADMIN_API_ECDSA_PUBLIC_KEY)
55
- throw new EngineError({
56
- message:
57
- "Admin API's authentication JWT signing public key is not defined"
58
- });
59
- adminKeySet = new KeySet(process.env.ADMIN_API_ECDSA_PUBLIC_KEY, {
60
- pem: true
61
- });
62
- promise.push(adminKeySet.init.bind(adminKeySet)());
63
-
64
- await Promise.all(promise);
65
- }
66
-
67
- /** Stop fetching keys regularly */
68
- export function shutdownKeySets(): void {
69
- if (keySet) keySet.shutdown.bind(keySet)();
70
- if (adminKeySet) adminKeySet.shutdown.bind(adminKeySet)();
71
- }
72
-
73
- /** Get the JWT public key */
74
- function jwtGetKey(header: JwtHeader, callback: SigningKeyCallback): void {
75
- // In test environment we return the symmetric signature secret
76
- if (process.env.NODE_ENV === 'test') {
77
- callback(null, process.env.JWT_SECRET);
78
- return;
79
- }
80
- // Check that KeySet has been initialized
81
- if (!keySet || !adminKeySet) {
82
- callback(new EngineError({ message: 'KeySet has not been initialized' }));
83
- return;
84
- }
85
- // Check that the token has a key ID
86
- if (!header.kid) {
87
- callback(
88
- new EngineError({
89
- message:
90
- 'Token has not key ID in header, impossible to match with known key',
91
- data: header
92
- })
93
- );
94
- return;
95
- }
96
-
97
- // In test environment we use a symmetrical secret bases signature
98
- if (process.env.NODE_ENV === 'test') {
99
- callback(null, process.env.JWT_SECRET);
100
- return;
101
- }
102
- reportDebug({
103
- namespace,
104
- message: `Looking for key with ID "${header.kid}"`
105
- });
106
- // Go through each key set to check if the token's key is in one of them
107
- let key;
108
- try {
109
- key = keySet.getKey(header.kid);
110
- } catch (error: Error | null | unknown) {
111
- callback(error instanceof Error ? error : null);
112
- return;
113
- }
114
-
115
- if (key) {
116
- reportDebug({ namespace, message: `Found key with ID "${header.kid}"` });
117
- callback(null, key);
118
- return;
119
- }
120
- callback(
121
- new WebError({
122
- statusCode: 401,
123
- errorCode: 'unauthorized',
124
- message: 'Could not find the tokens key in any key set',
125
- data: { kid: header.kid }
126
- })
127
- );
128
- }
129
-
130
- /** Verify an user Json Web Token */
131
- export async function jwtVerify(
132
- token: string,
133
- issuer: TokenIssuer = TokenIssuer.AUTH_SERVICE
134
- ): Promise<UserTokenPayload> {
135
- let algorithms = ['ES256' as Algorithm];
136
- if (process.env.NODE_ENV === 'test') {
137
- assertEnvironment({ JWT_SECRET: envAssert.isString() });
138
- algorithms = ['HS256' as Algorithm];
139
- }
140
- assertEnvironment({
141
- ACCESS_TOKEN_AUDIENCE: envAssert.isString(),
142
- ACCESS_TOKEN_ISSUER: envAssert.isString(),
143
- ADMIN_API_ACCESS_TOKEN_AUDIENCE: envAssert.isString(),
144
- ADMIN_ACCESS_TOKEN_ISSUER: envAssert.isString()
145
- });
146
- let options: VerifyOptions | undefined;
147
-
148
- switch (issuer) {
149
- case TokenIssuer.AUTH_SERVICE:
150
- options = {
151
- audience: [process.env.ACCESS_TOKEN_AUDIENCE as string],
152
- issuer: [process.env.ACCESS_TOKEN_ISSUER as string],
153
- algorithms
154
- };
155
- break;
156
- case TokenIssuer.ADMIN_API:
157
- options = {
158
- audience: [process.env.ADMIN_API_ACCESS_TOKEN_AUDIENCE as string],
159
- issuer: [process.env.ADMIN_ACCESS_TOKEN_ISSUER as string],
160
- algorithms
161
- };
162
- break;
163
- default:
164
- throw new EngineError({
165
- message: `Invalid token issuer specified "${issuer as string}"`
166
- });
167
- }
168
-
169
- return new Promise<UserTokenPayload>((resolve, reject) => {
170
- verify(token, jwtGetKey, options, (error, result) => {
171
- if (error) {
172
- reject(
173
- new WebError({
174
- errorCode: 'unauthorized',
175
- statusCode: 401,
176
- message: 'Invalid token supplied',
177
- data: { token },
178
- error: error instanceof Error ? error : undefined
179
- })
180
- );
181
- return;
182
- }
183
- resolve(result as UserTokenPayload);
184
- });
185
- });
186
- }
187
-
188
- export function generateJwtToken(user: unknown) {
189
- const signOptions = {
190
- algorithm: 'ES256' as const, // or 'ES256' as Algorithm
191
- expiresIn: '1h',
192
- issuer: process.env.ACCESS_TOKEN_ISSUER,
193
- audience: process.env.ACCESS_TOKEN_AUDIENCE,
194
- keyid: Object.keys(keySet?.getKeys() ?? {})[0]
195
- };
196
-
197
- const privateKey = fs.readFileSync(
198
- process.env.PRIVATE_KEY_PATH ?? 'keys/private-key.pem',
199
- 'utf8'
200
- );
201
- const token = sign({ user }, privateKey, signOptions);
202
-
203
- return token;
204
- }
1
+ import {
2
+ verify,
3
+ JwtHeader,
4
+ SigningKeyCallback,
5
+ Algorithm,
6
+ VerifyOptions,
7
+ sign
8
+ } from 'jsonwebtoken';
9
+ import fs from 'fs';
10
+ import path from 'path';
11
+ import { UserTokenPayload } from './jwt.types';
12
+ import { TokenIssuer } from 'const';
13
+ import { EngineError } from 'entities/EngineError';
14
+ import { KeySet } from 'entities/KeySet';
15
+ import { WebError } from 'entities/WebError';
16
+ import { assertEnvironment } from 'utils/checkEnvironment';
17
+ import { envAssert } from 'utils/envAssert';
18
+ import { reportDebug } from 'utils/report';
19
+
20
+ export let keySet: KeySet | undefined;
21
+ export let adminKeySet: KeySet | undefined;
22
+
23
+ const namespace = 'engine:utils:jwt';
24
+
25
+ /** Initiate key fetching mechanism */
26
+ export async function initKeySets(): Promise<void> {
27
+ // Create the KeySet instance
28
+ // The auth-service fetches its key from its disk and not from a network request
29
+ // This prevents fetch failures the first time the auth-service is started
30
+ if (process.env.CHART === 'auth-service') {
31
+ if (!process.env.ECDSA_PUBLIC_KEY)
32
+ throw new EngineError({
33
+ message: 'Environment variable "ECDSA_PUBLIC_KEY" is not defined'
34
+ });
35
+ keySet = new KeySet(process.env.ECDSA_PUBLIC_KEY, { file: true });
36
+ } else {
37
+ if (process.env.AUTH_SERVICE_URL)
38
+ keySet = new KeySet(
39
+ `${process.env.AUTH_SERVICE_URL}/.well-known/jwks.json`,
40
+ { internal: true }
41
+ );
42
+ else
43
+ keySet = new KeySet(`./keys/jwks.json`, { internal: true, file: true });
44
+
45
+ if (!keySet)
46
+ throw new EngineError({
47
+ message:
48
+ 'Environment variable "AUTH_SERVICE_URL" is not defined or JWKS not found'
49
+ });
50
+ }
51
+ const promise = [keySet.init.bind(keySet)()];
52
+
53
+ // Load the key set for the admin api
54
+ if (!process.env.ADMIN_API_ECDSA_PUBLIC_KEY)
55
+ throw new EngineError({
56
+ message:
57
+ "Admin API's authentication JWT signing public key is not defined"
58
+ });
59
+ adminKeySet = new KeySet(process.env.ADMIN_API_ECDSA_PUBLIC_KEY, {
60
+ pem: true
61
+ });
62
+ promise.push(adminKeySet.init.bind(adminKeySet)());
63
+
64
+ await Promise.all(promise);
65
+ }
66
+
67
+ /** Stop fetching keys regularly */
68
+ export function shutdownKeySets(): void {
69
+ if (keySet) keySet.shutdown.bind(keySet)();
70
+ if (adminKeySet) adminKeySet.shutdown.bind(adminKeySet)();
71
+ }
72
+
73
+ /** Get the JWT public key */
74
+ function jwtGetKey(header: JwtHeader, callback: SigningKeyCallback): void {
75
+ // In test environment we return the symmetric signature secret
76
+ if (process.env.NODE_ENV === 'test') {
77
+ callback(null, process.env.JWT_SECRET);
78
+ return;
79
+ }
80
+ // Check that KeySet has been initialized
81
+ if (!keySet || !adminKeySet) {
82
+ callback(new EngineError({ message: 'KeySet has not been initialized' }));
83
+ return;
84
+ }
85
+ // Check that the token has a key ID
86
+ if (!header.kid) {
87
+ callback(
88
+ new EngineError({
89
+ message:
90
+ 'Token has not key ID in header, impossible to match with known key',
91
+ data: header
92
+ })
93
+ );
94
+ return;
95
+ }
96
+
97
+ // In test environment we use a symmetrical secret bases signature
98
+ if (process.env.NODE_ENV === 'test') {
99
+ callback(null, process.env.JWT_SECRET);
100
+ return;
101
+ }
102
+ reportDebug({
103
+ namespace,
104
+ message: `Looking for key with ID "${header.kid}"`
105
+ });
106
+ // Go through each key set to check if the token's key is in one of them
107
+ let key;
108
+ try {
109
+ key = keySet.getKey(header.kid);
110
+ } catch (error: Error | null | unknown) {
111
+ callback(error instanceof Error ? error : null);
112
+ return;
113
+ }
114
+
115
+ if (key) {
116
+ reportDebug({ namespace, message: `Found key with ID "${header.kid}"` });
117
+ callback(null, key);
118
+ return;
119
+ }
120
+ callback(
121
+ new WebError({
122
+ statusCode: 401,
123
+ errorCode: 'unauthorized',
124
+ message: 'Could not find the tokens key in any key set',
125
+ data: { kid: header.kid }
126
+ })
127
+ );
128
+ }
129
+
130
+ /** Verify an user Json Web Token */
131
+ export async function jwtVerify(
132
+ token: string,
133
+ issuer: TokenIssuer = TokenIssuer.AUTH_SERVICE
134
+ ): Promise<UserTokenPayload> {
135
+ let algorithms = ['ES256' as Algorithm];
136
+ if (process.env.NODE_ENV === 'test') {
137
+ assertEnvironment({ JWT_SECRET: envAssert.isString() });
138
+ algorithms = ['HS256' as Algorithm];
139
+ }
140
+ assertEnvironment({
141
+ ACCESS_TOKEN_AUDIENCE: envAssert.isString(),
142
+ ACCESS_TOKEN_ISSUER: envAssert.isString(),
143
+ ADMIN_API_ACCESS_TOKEN_AUDIENCE: envAssert.isString(),
144
+ ADMIN_ACCESS_TOKEN_ISSUER: envAssert.isString()
145
+ });
146
+ let options: VerifyOptions | undefined;
147
+
148
+ switch (issuer) {
149
+ case TokenIssuer.AUTH_SERVICE:
150
+ options = {
151
+ audience: [process.env.ACCESS_TOKEN_AUDIENCE as string],
152
+ issuer: [process.env.ACCESS_TOKEN_ISSUER as string],
153
+ algorithms
154
+ };
155
+ break;
156
+ case TokenIssuer.ADMIN_API:
157
+ options = {
158
+ audience: [process.env.ADMIN_API_ACCESS_TOKEN_AUDIENCE as string],
159
+ issuer: [process.env.ADMIN_ACCESS_TOKEN_ISSUER as string],
160
+ algorithms
161
+ };
162
+ break;
163
+ default:
164
+ throw new EngineError({
165
+ message: `Invalid token issuer specified "${issuer as string}"`
166
+ });
167
+ }
168
+
169
+ return new Promise<UserTokenPayload>((resolve, reject) => {
170
+ verify(token, jwtGetKey, options, (error, result) => {
171
+ if (error) {
172
+ reject(
173
+ new WebError({
174
+ errorCode: 'unauthorized',
175
+ statusCode: 401,
176
+ message: 'Invalid token supplied',
177
+ data: { token },
178
+ error: error instanceof Error ? error : undefined
179
+ })
180
+ );
181
+ return;
182
+ }
183
+ resolve(result as UserTokenPayload);
184
+ });
185
+ });
186
+ }
187
+
188
+ export function generateJwtToken(user: unknown) {
189
+ const signOptions = {
190
+ algorithm: 'ES256' as const, // or 'ES256' as Algorithm
191
+ expiresIn: '1h',
192
+ issuer: process.env.ACCESS_TOKEN_ISSUER,
193
+ audience: process.env.ACCESS_TOKEN_AUDIENCE,
194
+ keyid: Object.keys(keySet?.getKeys() ?? {})[0]
195
+ };
196
+
197
+ const privateKey = fs.readFileSync(
198
+ process.env.PRIVATE_KEY_PATH ?? 'keys/private-key.pem',
199
+ 'utf8'
200
+ );
201
+ const token = sign({ user }, privateKey, signOptions);
202
+
203
+ return token;
204
+ }
@@ -1,21 +1,21 @@
1
-
2
- /** Content of the payload of user authentication tokens */
3
- export interface UserTokenPayload {
4
- /** ID of the user */
5
- sub: string;
6
- /** URL of the service that issued the token */
7
- iss: string;
8
- /** URL of the services that can consume the token */
9
- aud: Array<string> | string;
10
- /** Unique ID of the token */
11
- jti: string;
12
- /** ID of the device the token was issued to */
13
- dev: string;
14
- /** Timestamp at which the token will expire */
15
- exp: number;
16
- /** List of permissions that the user has (only on the admin API) */
17
- per?: Array<string> | string;
18
- /** User */
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- user: Record<string, any> | undefined;
21
- }
1
+
2
+ /** Content of the payload of user authentication tokens */
3
+ export interface UserTokenPayload {
4
+ /** ID of the user */
5
+ sub: string;
6
+ /** URL of the service that issued the token */
7
+ iss: string;
8
+ /** URL of the services that can consume the token */
9
+ aud: Array<string> | string;
10
+ /** Unique ID of the token */
11
+ jti: string;
12
+ /** ID of the device the token was issued to */
13
+ dev: string;
14
+ /** Timestamp at which the token will expire */
15
+ exp: number;
16
+ /** List of permissions that the user has (only on the admin API) */
17
+ per?: Array<string> | string;
18
+ /** User */
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ user: Record<string, any> | undefined;
21
+ }
@@ -1,3 +1,3 @@
1
- export * from './report';
2
- export * from './output.types';
3
- export * from './report.types';
1
+ export * from './report';
2
+ export * from './output.types';
3
+ export * from './report.types';
@@ -1,45 +1,45 @@
1
- import { randomUUID } from 'crypto';
2
- import callsite from 'callsite';
3
- import stringify from 'json-stringify-safe';
4
- import { LogEntry, FullLogEntry } from './output.types';
5
-
6
- // NOTE: Server instance id (helpful for distributed logs)
7
- export const INSTANCE_ID = randomUUID();
8
-
9
- /** Add metadata to the log entry and print it */
10
- export function output(data: LogEntry): FullLogEntry {
11
- // Gather useful information about where the logger was called from
12
- const call = callsite()[2];
13
-
14
- // Append additional metadata to the log entry
15
- const fullEntry: FullLogEntry = {
16
- ...data,
17
- lineNumber: call.getLineNumber(),
18
- fileName: call
19
- .getFileName()
20
- .replace(/.*node_modules\//, '')
21
- .replace(/.*src\//, 'src/'),
22
- serviceContext: {
23
- service: process.env.CHART ?? process.env.HOSTNAME,
24
- version: process.env.BUILD_ID,
25
- environment: process.env.NODE_ENV,
26
- instance: process.env.KUBERNETES_POD_NAME ?? INSTANCE_ID
27
- }
28
- };
29
-
30
- const entry = stringify(fullEntry);
31
- // Ignore when silenced
32
- if (process.env.SILENCE_REPORT) return fullEntry;
33
-
34
- if (process.env.NODE_ENV === 'test') {
35
- // In test mode pretty print
36
- console.dir(fullEntry, { depth: 5 });
37
- } else if (data.statusCode && data.statusCode >= 500) {
38
- // Log to stderr when it is a 500+ error
39
- console.error(entry);
40
- } else {
41
- // Default to regular logging
42
- console.log(entry);
43
- }
44
- return fullEntry;
45
- }
1
+ import { randomUUID } from 'crypto';
2
+ import callsite from 'callsite';
3
+ import stringify from 'json-stringify-safe';
4
+ import { LogEntry, FullLogEntry } from './output.types';
5
+
6
+ // NOTE: Server instance id (helpful for distributed logs)
7
+ export const INSTANCE_ID = randomUUID();
8
+
9
+ /** Add metadata to the log entry and print it */
10
+ export function output(data: LogEntry): FullLogEntry {
11
+ // Gather useful information about where the logger was called from
12
+ const call = callsite()[2];
13
+
14
+ // Append additional metadata to the log entry
15
+ const fullEntry: FullLogEntry = {
16
+ ...data,
17
+ lineNumber: call.getLineNumber(),
18
+ fileName: call
19
+ .getFileName()
20
+ .replace(/.*node_modules\//, '')
21
+ .replace(/.*src\//, 'src/'),
22
+ serviceContext: {
23
+ service: process.env.CHART ?? process.env.HOSTNAME,
24
+ version: process.env.BUILD_ID,
25
+ environment: process.env.NODE_ENV,
26
+ instance: process.env.KUBERNETES_POD_NAME ?? INSTANCE_ID
27
+ }
28
+ };
29
+
30
+ const entry = stringify(fullEntry);
31
+ // Ignore when silenced
32
+ if (process.env.SILENCE_REPORT) return fullEntry;
33
+
34
+ if (process.env.NODE_ENV === 'test') {
35
+ // In test mode pretty print
36
+ console.dir(fullEntry, { depth: 5 });
37
+ } else if (data.statusCode && data.statusCode >= 500) {
38
+ // Log to stderr when it is a 500+ error
39
+ console.error(entry);
40
+ } else {
41
+ // Default to regular logging
42
+ console.log(entry);
43
+ }
44
+ return fullEntry;
45
+ }