node-server-engine 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (772) hide show
  1. package/.env.example +191 -0
  2. package/.mocharc.js +13 -0
  3. package/.nycrc +18 -0
  4. package/.prettierrc +7 -0
  5. package/Dockerfile +31 -0
  6. package/README.md +960 -0
  7. package/babel.config.json +35 -0
  8. package/dist/const/DebeziumEvent.d.ts +6 -0
  9. package/dist/const/DebeziumEvent.js +14 -0
  10. package/dist/const/DebeziumEvent.js.map +1 -0
  11. package/dist/const/LogSeverity.d.ts +7 -0
  12. package/dist/const/LogSeverity.js +15 -0
  13. package/dist/const/LogSeverity.js.map +1 -0
  14. package/dist/const/index.d.ts +5 -0
  15. package/dist/const/index.js +61 -0
  16. package/dist/const/index.js.map +1 -0
  17. package/dist/const/metrics.d.ts +3 -0
  18. package/dist/const/metrics.js +12 -0
  19. package/dist/const/metrics.js.map +1 -0
  20. package/dist/const/mime.d.ts +9 -0
  21. package/dist/const/mime.js +16 -0
  22. package/dist/const/mime.js.map +1 -0
  23. package/dist/const/tokenIssuer.d.ts +8 -0
  24. package/dist/const/tokenIssuer.js +14 -0
  25. package/dist/const/tokenIssuer.js.map +1 -0
  26. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.d.ts +3 -0
  27. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js +32 -0
  28. package/dist/db/migrations/20241030121500-create-sequelize-meta-table.js.map +1 -0
  29. package/dist/db/models/SequelizeMeta.d.ts +5 -0
  30. package/dist/db/models/SequelizeMeta.js +48 -0
  31. package/dist/db/models/SequelizeMeta.js.map +1 -0
  32. package/dist/db/models/index.d.ts +1 -0
  33. package/dist/db/models/index.js +17 -0
  34. package/dist/db/models/index.js.map +1 -0
  35. package/dist/entities/ElasticSearch/ElasticSearch.d.ts +15 -0
  36. package/dist/entities/ElasticSearch/ElasticSearch.js +114 -0
  37. package/dist/entities/ElasticSearch/ElasticSearch.js.map +1 -0
  38. package/dist/entities/ElasticSearch/ElasticSearch.types.d.ts +6 -0
  39. package/dist/entities/ElasticSearch/ElasticSearch.types.js +2 -0
  40. package/dist/entities/ElasticSearch/ElasticSearch.types.js.map +1 -0
  41. package/dist/entities/ElasticSearch/index.d.ts +2 -0
  42. package/dist/entities/ElasticSearch/index.js +28 -0
  43. package/dist/entities/ElasticSearch/index.js.map +1 -0
  44. package/dist/entities/Endpoint/Endpoint.d.ts +39 -0
  45. package/dist/entities/Endpoint/Endpoint.js +174 -0
  46. package/dist/entities/Endpoint/Endpoint.js.map +1 -0
  47. package/dist/entities/Endpoint/Endpoint.types.d.ts +133 -0
  48. package/dist/entities/Endpoint/Endpoint.types.js +63 -0
  49. package/dist/entities/Endpoint/Endpoint.types.js.map +1 -0
  50. package/dist/entities/Endpoint/index.d.ts +2 -0
  51. package/dist/entities/Endpoint/index.js +28 -0
  52. package/dist/entities/Endpoint/index.js.map +1 -0
  53. package/dist/entities/EngineError/EngineError.d.ts +17 -0
  54. package/dist/entities/EngineError/EngineError.js +46 -0
  55. package/dist/entities/EngineError/EngineError.js.map +1 -0
  56. package/dist/entities/EngineError/EngineError.types.d.ts +14 -0
  57. package/dist/entities/EngineError/EngineError.types.js +2 -0
  58. package/dist/entities/EngineError/EngineError.types.js.map +1 -0
  59. package/dist/entities/EngineError/index.d.ts +2 -0
  60. package/dist/entities/EngineError/index.js +28 -0
  61. package/dist/entities/EngineError/index.js.map +1 -0
  62. package/dist/entities/KeySet/KeySet.d.ts +33 -0
  63. package/dist/entities/KeySet/KeySet.js +201 -0
  64. package/dist/entities/KeySet/KeySet.js.map +1 -0
  65. package/dist/entities/KeySet/KeySet.types.d.ts +25 -0
  66. package/dist/entities/KeySet/KeySet.types.js +2 -0
  67. package/dist/entities/KeySet/KeySet.types.js.map +1 -0
  68. package/dist/entities/KeySet/index.d.ts +2 -0
  69. package/dist/entities/KeySet/index.js +28 -0
  70. package/dist/entities/KeySet/index.js.map +1 -0
  71. package/dist/entities/LifecycleController/LifecycleController.d.ts +10 -0
  72. package/dist/entities/LifecycleController/LifecycleController.js +28 -0
  73. package/dist/entities/LifecycleController/LifecycleController.js.map +1 -0
  74. package/dist/entities/LifecycleController/LifecycleController.types.d.ts +5 -0
  75. package/dist/entities/LifecycleController/LifecycleController.types.js +2 -0
  76. package/dist/entities/LifecycleController/LifecycleController.types.js.map +1 -0
  77. package/dist/entities/LifecycleController/index.d.ts +2 -0
  78. package/dist/entities/LifecycleController/index.js +28 -0
  79. package/dist/entities/LifecycleController/index.js.map +1 -0
  80. package/dist/entities/Localizator/Localizator.d.ts +28 -0
  81. package/dist/entities/Localizator/Localizator.js +128 -0
  82. package/dist/entities/Localizator/Localizator.js.map +1 -0
  83. package/dist/entities/Localizator/Localizator.types.d.ts +48 -0
  84. package/dist/entities/Localizator/Localizator.types.js +2 -0
  85. package/dist/entities/Localizator/Localizator.types.js.map +1 -0
  86. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.d.ts +8 -0
  87. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js +48 -0
  88. package/dist/entities/Localizator/guessNamingConvention/guessNamingConvention.js.map +1 -0
  89. package/dist/entities/Localizator/guessNamingConvention/index.d.ts +1 -0
  90. package/dist/entities/Localizator/guessNamingConvention/index.js +17 -0
  91. package/dist/entities/Localizator/guessNamingConvention/index.js.map +1 -0
  92. package/dist/entities/Localizator/index.d.ts +2 -0
  93. package/dist/entities/Localizator/index.js +28 -0
  94. package/dist/entities/Localizator/index.js.map +1 -0
  95. package/dist/entities/MessageHandler/MessageHandler.d.ts +20 -0
  96. package/dist/entities/MessageHandler/MessageHandler.js +65 -0
  97. package/dist/entities/MessageHandler/MessageHandler.js.map +1 -0
  98. package/dist/entities/MessageHandler/MessageHandler.types.d.ts +10 -0
  99. package/dist/entities/MessageHandler/MessageHandler.types.js +2 -0
  100. package/dist/entities/MessageHandler/MessageHandler.types.js.map +1 -0
  101. package/dist/entities/MessageHandler/index.d.ts +2 -0
  102. package/dist/entities/MessageHandler/index.js +28 -0
  103. package/dist/entities/MessageHandler/index.js.map +1 -0
  104. package/dist/entities/PubSub/PubSub.d.ts +36 -0
  105. package/dist/entities/PubSub/PubSub.js +167 -0
  106. package/dist/entities/PubSub/PubSub.js.map +1 -0
  107. package/dist/entities/PubSub/PubSub.types.d.ts +61 -0
  108. package/dist/entities/PubSub/PubSub.types.js +2 -0
  109. package/dist/entities/PubSub/PubSub.types.js.map +1 -0
  110. package/dist/entities/PubSub/handleMessage/handleMessage.d.ts +10 -0
  111. package/dist/entities/PubSub/handleMessage/handleMessage.js +63 -0
  112. package/dist/entities/PubSub/handleMessage/handleMessage.js.map +1 -0
  113. package/dist/entities/PubSub/handleMessage/index.d.ts +1 -0
  114. package/dist/entities/PubSub/handleMessage/index.js +17 -0
  115. package/dist/entities/PubSub/handleMessage/index.js.map +1 -0
  116. package/dist/entities/PubSub/index.d.ts +2 -0
  117. package/dist/entities/PubSub/index.js +28 -0
  118. package/dist/entities/PubSub/index.js.map +1 -0
  119. package/dist/entities/PushNotification/PushNotification.d.ts +11 -0
  120. package/dist/entities/PushNotification/PushNotification.js +44 -0
  121. package/dist/entities/PushNotification/PushNotification.js.map +1 -0
  122. package/dist/entities/PushNotification/PushNotification.types.d.ts +25 -0
  123. package/dist/entities/PushNotification/PushNotification.types.js +2 -0
  124. package/dist/entities/PushNotification/PushNotification.types.js.map +1 -0
  125. package/dist/entities/PushNotification/index.d.ts +2 -0
  126. package/dist/entities/PushNotification/index.js +28 -0
  127. package/dist/entities/PushNotification/index.js.map +1 -0
  128. package/dist/entities/Redis/Redis.d.ts +19 -0
  129. package/dist/entities/Redis/Redis.js +75 -0
  130. package/dist/entities/Redis/Redis.js.map +1 -0
  131. package/dist/entities/Redis/Redis.types.d.ts +16 -0
  132. package/dist/entities/Redis/Redis.types.js +2 -0
  133. package/dist/entities/Redis/Redis.types.js.map +1 -0
  134. package/dist/entities/Redis/Redis.validate.d.ts +5 -0
  135. package/dist/entities/Redis/Redis.validate.js +21 -0
  136. package/dist/entities/Redis/Redis.validate.js.map +1 -0
  137. package/dist/entities/Redis/index.d.ts +2 -0
  138. package/dist/entities/Redis/index.js +35 -0
  139. package/dist/entities/Redis/index.js.map +1 -0
  140. package/dist/entities/Sequelize/Sequelize.config.d.ts +7 -0
  141. package/dist/entities/Sequelize/Sequelize.config.js +32 -0
  142. package/dist/entities/Sequelize/Sequelize.config.js.map +1 -0
  143. package/dist/entities/Sequelize/Sequelize.d.ts +14 -0
  144. package/dist/entities/Sequelize/Sequelize.js +70 -0
  145. package/dist/entities/Sequelize/Sequelize.js.map +1 -0
  146. package/dist/entities/Sequelize/Sequelize.types.d.ts +9 -0
  147. package/dist/entities/Sequelize/Sequelize.types.js +2 -0
  148. package/dist/entities/Sequelize/Sequelize.types.js.map +1 -0
  149. package/dist/entities/Sequelize/Sequelize.validate.d.ts +4 -0
  150. package/dist/entities/Sequelize/Sequelize.validate.js +27 -0
  151. package/dist/entities/Sequelize/Sequelize.validate.js.map +1 -0
  152. package/dist/entities/Sequelize/index.d.ts +2 -0
  153. package/dist/entities/Sequelize/index.js +28 -0
  154. package/dist/entities/Sequelize/index.js.map +1 -0
  155. package/dist/entities/Server/Server.const.d.ts +5 -0
  156. package/dist/entities/Server/Server.const.js +45 -0
  157. package/dist/entities/Server/Server.const.js.map +1 -0
  158. package/dist/entities/Server/Server.d.ts +61 -0
  159. package/dist/entities/Server/Server.js +380 -0
  160. package/dist/entities/Server/Server.js.map +1 -0
  161. package/dist/entities/Server/Server.types.d.ts +75 -0
  162. package/dist/entities/Server/Server.types.js +2 -0
  163. package/dist/entities/Server/Server.types.js.map +1 -0
  164. package/dist/entities/Server/index.d.ts +2 -0
  165. package/dist/entities/Server/index.js +28 -0
  166. package/dist/entities/Server/index.js.map +1 -0
  167. package/dist/entities/SocketClient/SocketClient.d.ts +79 -0
  168. package/dist/entities/SocketClient/SocketClient.js +394 -0
  169. package/dist/entities/SocketClient/SocketClient.js.map +1 -0
  170. package/dist/entities/SocketClient/SocketClient.types.d.ts +53 -0
  171. package/dist/entities/SocketClient/SocketClient.types.js +2 -0
  172. package/dist/entities/SocketClient/SocketClient.types.js.map +1 -0
  173. package/dist/entities/SocketClient/index.d.ts +2 -0
  174. package/dist/entities/SocketClient/index.js +28 -0
  175. package/dist/entities/SocketClient/index.js.map +1 -0
  176. package/dist/entities/SocketClient/parseMessage/index.d.ts +1 -0
  177. package/dist/entities/SocketClient/parseMessage/index.js +17 -0
  178. package/dist/entities/SocketClient/parseMessage/index.js.map +1 -0
  179. package/dist/entities/SocketClient/parseMessage/parseMessage.d.ts +5 -0
  180. package/dist/entities/SocketClient/parseMessage/parseMessage.js +34 -0
  181. package/dist/entities/SocketClient/parseMessage/parseMessage.js.map +1 -0
  182. package/dist/entities/Storage/Storage.d.ts +38 -0
  183. package/dist/entities/Storage/Storage.js +214 -0
  184. package/dist/entities/Storage/Storage.js.map +1 -0
  185. package/dist/entities/Storage/Storage.types.d.ts +52 -0
  186. package/dist/entities/Storage/Storage.types.js +2 -0
  187. package/dist/entities/Storage/Storage.types.js.map +1 -0
  188. package/dist/entities/Storage/index.d.ts +2 -0
  189. package/dist/entities/Storage/index.js +28 -0
  190. package/dist/entities/Storage/index.js.map +1 -0
  191. package/dist/entities/ValidationError/ValidationError.d.ts +7 -0
  192. package/dist/entities/ValidationError/ValidationError.js +44 -0
  193. package/dist/entities/ValidationError/ValidationError.js.map +1 -0
  194. package/dist/entities/ValidationError/index.d.ts +1 -0
  195. package/dist/entities/ValidationError/index.js +17 -0
  196. package/dist/entities/ValidationError/index.js.map +1 -0
  197. package/dist/entities/WebError/WebError.d.ts +15 -0
  198. package/dist/entities/WebError/WebError.js +42 -0
  199. package/dist/entities/WebError/WebError.js.map +1 -0
  200. package/dist/entities/WebError/WebError.types.d.ts +8 -0
  201. package/dist/entities/WebError/WebError.types.js +2 -0
  202. package/dist/entities/WebError/WebError.types.js.map +1 -0
  203. package/dist/entities/WebError/index.d.ts +2 -0
  204. package/dist/entities/WebError/index.js +28 -0
  205. package/dist/entities/WebError/index.js.map +1 -0
  206. package/dist/entities/index.d.ts +16 -0
  207. package/dist/entities/index.js +182 -0
  208. package/dist/entities/index.js.map +1 -0
  209. package/dist/index.d.ts +4 -0
  210. package/dist/index.js +50 -0
  211. package/dist/index.js.map +1 -0
  212. package/dist/metrics/debug.d.ts +2 -0
  213. package/dist/metrics/debug.js +15 -0
  214. package/dist/metrics/debug.js.map +1 -0
  215. package/dist/metrics/index.d.ts +2 -0
  216. package/dist/metrics/index.js +28 -0
  217. package/dist/metrics/index.js.map +1 -0
  218. package/dist/metrics/request.d.ts +3 -0
  219. package/dist/metrics/request.js +22 -0
  220. package/dist/metrics/request.js.map +1 -0
  221. package/dist/middleware/authAdmin/authAdmin.d.ts +4 -0
  222. package/dist/middleware/authAdmin/authAdmin.js +105 -0
  223. package/dist/middleware/authAdmin/authAdmin.js.map +1 -0
  224. package/dist/middleware/authAdmin/authAdmin.types.d.ts +16 -0
  225. package/dist/middleware/authAdmin/authAdmin.types.js +2 -0
  226. package/dist/middleware/authAdmin/authAdmin.types.js.map +1 -0
  227. package/dist/middleware/authAdmin/index.d.ts +2 -0
  228. package/dist/middleware/authAdmin/index.js +28 -0
  229. package/dist/middleware/authAdmin/index.js.map +1 -0
  230. package/dist/middleware/authHmac/authHmac.d.ts +4 -0
  231. package/dist/middleware/authHmac/authHmac.js +57 -0
  232. package/dist/middleware/authHmac/authHmac.js.map +1 -0
  233. package/dist/middleware/authHmac/authHmac.types.d.ts +7 -0
  234. package/dist/middleware/authHmac/authHmac.types.js +2 -0
  235. package/dist/middleware/authHmac/authHmac.types.js.map +1 -0
  236. package/dist/middleware/authHmac/index.d.ts +2 -0
  237. package/dist/middleware/authHmac/index.js +28 -0
  238. package/dist/middleware/authHmac/index.js.map +1 -0
  239. package/dist/middleware/authJwt/authJwt.d.ts +3 -0
  240. package/dist/middleware/authJwt/authJwt.js +56 -0
  241. package/dist/middleware/authJwt/authJwt.js.map +1 -0
  242. package/dist/middleware/authJwt/authJwt.types.d.ts +22 -0
  243. package/dist/middleware/authJwt/authJwt.types.js +2 -0
  244. package/dist/middleware/authJwt/authJwt.types.js.map +1 -0
  245. package/dist/middleware/authJwt/index.d.ts +2 -0
  246. package/dist/middleware/authJwt/index.js +28 -0
  247. package/dist/middleware/authJwt/index.js.map +1 -0
  248. package/dist/middleware/authStatic/authStatic.d.ts +6 -0
  249. package/dist/middleware/authStatic/authStatic.js +54 -0
  250. package/dist/middleware/authStatic/authStatic.js.map +1 -0
  251. package/dist/middleware/authStatic/index.d.ts +1 -0
  252. package/dist/middleware/authStatic/index.js +17 -0
  253. package/dist/middleware/authStatic/index.js.map +1 -0
  254. package/dist/middleware/authTls/authTls.d.ts +16 -0
  255. package/dist/middleware/authTls/authTls.js +102 -0
  256. package/dist/middleware/authTls/authTls.js.map +1 -0
  257. package/dist/middleware/authTls/authTls.types.d.ts +10 -0
  258. package/dist/middleware/authTls/authTls.types.js +6 -0
  259. package/dist/middleware/authTls/authTls.types.js.map +1 -0
  260. package/dist/middleware/authTls/index.d.ts +2 -0
  261. package/dist/middleware/authTls/index.js +18 -0
  262. package/dist/middleware/authTls/index.js.map +1 -0
  263. package/dist/middleware/error/error.d.ts +3 -0
  264. package/dist/middleware/error/error.js +34 -0
  265. package/dist/middleware/error/error.js.map +1 -0
  266. package/dist/middleware/error/index.d.ts +1 -0
  267. package/dist/middleware/error/index.js +17 -0
  268. package/dist/middleware/error/index.js.map +1 -0
  269. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.d.ts +6 -0
  270. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js +28 -0
  271. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.js.map +1 -0
  272. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.d.ts +12 -0
  273. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js +2 -0
  274. package/dist/middleware/fileUploader/compressAvatar/compressAvatar.types.js.map +1 -0
  275. package/dist/middleware/fileUploader/compressAvatar/index.d.ts +2 -0
  276. package/dist/middleware/fileUploader/compressAvatar/index.js +28 -0
  277. package/dist/middleware/fileUploader/compressAvatar/index.js.map +1 -0
  278. package/dist/middleware/fileUploader/fileUploader.d.ts +10 -0
  279. package/dist/middleware/fileUploader/fileUploader.js +296 -0
  280. package/dist/middleware/fileUploader/fileUploader.js.map +1 -0
  281. package/dist/middleware/fileUploader/fileUploader.types.d.ts +49 -0
  282. package/dist/middleware/fileUploader/fileUploader.types.js +2 -0
  283. package/dist/middleware/fileUploader/fileUploader.types.js.map +1 -0
  284. package/dist/middleware/fileUploader/index.d.ts +2 -0
  285. package/dist/middleware/fileUploader/index.js +28 -0
  286. package/dist/middleware/fileUploader/index.js.map +1 -0
  287. package/dist/middleware/fileUploader/isMultiPart/index.d.ts +1 -0
  288. package/dist/middleware/fileUploader/isMultiPart/index.js +17 -0
  289. package/dist/middleware/fileUploader/isMultiPart/index.js.map +1 -0
  290. package/dist/middleware/fileUploader/isMultiPart/isMultipart.d.ts +3 -0
  291. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js +14 -0
  292. package/dist/middleware/fileUploader/isMultiPart/isMultipart.js.map +1 -0
  293. package/dist/middleware/fileUploader/validate/index.d.ts +1 -0
  294. package/dist/middleware/fileUploader/validate/index.js +17 -0
  295. package/dist/middleware/fileUploader/validate/index.js.map +1 -0
  296. package/dist/middleware/fileUploader/validate/validate.d.ts +4 -0
  297. package/dist/middleware/fileUploader/validate/validate.js +28 -0
  298. package/dist/middleware/fileUploader/validate/validate.js.map +1 -0
  299. package/dist/middleware/fourOhFour/fourOhFour.d.ts +3 -0
  300. package/dist/middleware/fourOhFour/fourOhFour.js +18 -0
  301. package/dist/middleware/fourOhFour/fourOhFour.js.map +1 -0
  302. package/dist/middleware/fourOhFour/index.d.ts +1 -0
  303. package/dist/middleware/fourOhFour/index.js +17 -0
  304. package/dist/middleware/fourOhFour/index.js.map +1 -0
  305. package/dist/middleware/healthCheck/healthCheck.d.ts +5 -0
  306. package/dist/middleware/healthCheck/healthCheck.js +18 -0
  307. package/dist/middleware/healthCheck/healthCheck.js.map +1 -0
  308. package/dist/middleware/healthCheck/index.d.ts +1 -0
  309. package/dist/middleware/healthCheck/index.js +17 -0
  310. package/dist/middleware/healthCheck/index.js.map +1 -0
  311. package/dist/middleware/index.d.ts +15 -0
  312. package/dist/middleware/index.js +171 -0
  313. package/dist/middleware/index.js.map +1 -0
  314. package/dist/middleware/metrics/index.d.ts +1 -0
  315. package/dist/middleware/metrics/index.js +17 -0
  316. package/dist/middleware/metrics/index.js.map +1 -0
  317. package/dist/middleware/metrics/metrics.d.ts +3 -0
  318. package/dist/middleware/metrics/metrics.js +28 -0
  319. package/dist/middleware/metrics/metrics.js.map +1 -0
  320. package/dist/middleware/requestMetrics/index.d.ts +1 -0
  321. package/dist/middleware/requestMetrics/index.js +17 -0
  322. package/dist/middleware/requestMetrics/index.js.map +1 -0
  323. package/dist/middleware/requestMetrics/requestMetrics.d.ts +2 -0
  324. package/dist/middleware/requestMetrics/requestMetrics.js +21 -0
  325. package/dist/middleware/requestMetrics/requestMetrics.js.map +1 -0
  326. package/dist/middleware/swaggerDocs/index.d.ts +2 -0
  327. package/dist/middleware/swaggerDocs/index.js +28 -0
  328. package/dist/middleware/swaggerDocs/index.js.map +1 -0
  329. package/dist/middleware/swaggerDocs/swaggerDocs.d.ts +6 -0
  330. package/dist/middleware/swaggerDocs/swaggerDocs.js +103 -0
  331. package/dist/middleware/swaggerDocs/swaggerDocs.js.map +1 -0
  332. package/dist/middleware/swaggerDocs/swaggerDocs.types.d.ts +37 -0
  333. package/dist/middleware/swaggerDocs/swaggerDocs.types.js +2 -0
  334. package/dist/middleware/swaggerDocs/swaggerDocs.types.js.map +1 -0
  335. package/dist/middleware/userResolver/index.d.ts +1 -0
  336. package/dist/middleware/userResolver/index.js +17 -0
  337. package/dist/middleware/userResolver/index.js.map +1 -0
  338. package/dist/middleware/userResolver/userResolver.d.ts +3 -0
  339. package/dist/middleware/userResolver/userResolver.js +41 -0
  340. package/dist/middleware/userResolver/userResolver.js.map +1 -0
  341. package/dist/middleware/validate/index.d.ts +1 -0
  342. package/dist/middleware/validate/index.js +17 -0
  343. package/dist/middleware/validate/index.js.map +1 -0
  344. package/dist/middleware/validate/validate.d.ts +4 -0
  345. package/dist/middleware/validate/validate.js +19 -0
  346. package/dist/middleware/validate/validate.js.map +1 -0
  347. package/dist/middleware/version/index.d.ts +1 -0
  348. package/dist/middleware/version/index.js +17 -0
  349. package/dist/middleware/version/index.js.map +1 -0
  350. package/dist/middleware/version/version.d.ts +6 -0
  351. package/dist/middleware/version/version.js +21 -0
  352. package/dist/middleware/version/version.js.map +1 -0
  353. package/dist/utils/checkEnvironment/index.d.ts +13 -0
  354. package/dist/utils/checkEnvironment/index.js +62 -0
  355. package/dist/utils/checkEnvironment/index.js.map +1 -0
  356. package/dist/utils/createHttpServer/createHttpServer.d.ts +5 -0
  357. package/dist/utils/createHttpServer/createHttpServer.js +30 -0
  358. package/dist/utils/createHttpServer/createHttpServer.js.map +1 -0
  359. package/dist/utils/createHttpServer/createHttpServer.validate.d.ts +4 -0
  360. package/dist/utils/createHttpServer/createHttpServer.validate.js +31 -0
  361. package/dist/utils/createHttpServer/createHttpServer.validate.js.map +1 -0
  362. package/dist/utils/createHttpServer/index.d.ts +1 -0
  363. package/dist/utils/createHttpServer/index.js +17 -0
  364. package/dist/utils/createHttpServer/index.js.map +1 -0
  365. package/dist/utils/createSortedObject/createSortedObject.d.ts +2 -0
  366. package/dist/utils/createSortedObject/createSortedObject.js +21 -0
  367. package/dist/utils/createSortedObject/createSortedObject.js.map +1 -0
  368. package/dist/utils/createSortedObject/index.d.ts +1 -0
  369. package/dist/utils/createSortedObject/index.js +17 -0
  370. package/dist/utils/createSortedObject/index.js.map +1 -0
  371. package/dist/utils/dbMigration/dbMigration.d.ts +17 -0
  372. package/dist/utils/dbMigration/dbMigration.js +207 -0
  373. package/dist/utils/dbMigration/dbMigration.js.map +1 -0
  374. package/dist/utils/dbMigration/dbMigration.types.d.ts +10 -0
  375. package/dist/utils/dbMigration/dbMigration.types.js +2 -0
  376. package/dist/utils/dbMigration/dbMigration.types.js.map +1 -0
  377. package/dist/utils/dbMigration/index.d.ts +2 -0
  378. package/dist/utils/dbMigration/index.js +28 -0
  379. package/dist/utils/dbMigration/index.js.map +1 -0
  380. package/dist/utils/dbMigration/migrateMetadataTable/index.d.ts +1 -0
  381. package/dist/utils/dbMigration/migrateMetadataTable/index.js +17 -0
  382. package/dist/utils/dbMigration/migrateMetadataTable/index.js.map +1 -0
  383. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.d.ts +7 -0
  384. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js +63 -0
  385. package/dist/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.js.map +1 -0
  386. package/dist/utils/envAssert/envAssert.d.ts +21 -0
  387. package/dist/utils/envAssert/envAssert.js +30 -0
  388. package/dist/utils/envAssert/envAssert.js.map +1 -0
  389. package/dist/utils/envAssert/index.d.ts +1 -0
  390. package/dist/utils/envAssert/index.js +17 -0
  391. package/dist/utils/envAssert/index.js.map +1 -0
  392. package/dist/utils/envAssert/validators/hostList.d.ts +4 -0
  393. package/dist/utils/envAssert/validators/hostList.js +22 -0
  394. package/dist/utils/envAssert/validators/hostList.js.map +1 -0
  395. package/dist/utils/envAssert/validators/index.d.ts +5 -0
  396. package/dist/utils/envAssert/validators/index.js +61 -0
  397. package/dist/utils/envAssert/validators/index.js.map +1 -0
  398. package/dist/utils/envAssert/validators/ipList.d.ts +4 -0
  399. package/dist/utils/envAssert/validators/ipList.js +20 -0
  400. package/dist/utils/envAssert/validators/ipList.js.map +1 -0
  401. package/dist/utils/envAssert/validators/path.d.ts +4 -0
  402. package/dist/utils/envAssert/validators/path.js +19 -0
  403. package/dist/utils/envAssert/validators/path.js.map +1 -0
  404. package/dist/utils/envAssert/validators/string.d.ts +4 -0
  405. package/dist/utils/envAssert/validators/string.js +15 -0
  406. package/dist/utils/envAssert/validators/string.js.map +1 -0
  407. package/dist/utils/envAssert/validators/stringList.d.ts +5 -0
  408. package/dist/utils/envAssert/validators/stringList.js +19 -0
  409. package/dist/utils/envAssert/validators/stringList.js.map +1 -0
  410. package/dist/utils/filter/filter.d.ts +6 -0
  411. package/dist/utils/filter/filter.js +21 -0
  412. package/dist/utils/filter/filter.js.map +1 -0
  413. package/dist/utils/filter/index.d.ts +1 -0
  414. package/dist/utils/filter/index.js +17 -0
  415. package/dist/utils/filter/index.js.map +1 -0
  416. package/dist/utils/getDynamicLink/getDynamicLink.d.ts +3 -0
  417. package/dist/utils/getDynamicLink/getDynamicLink.js +28 -0
  418. package/dist/utils/getDynamicLink/getDynamicLink.js.map +1 -0
  419. package/dist/utils/getDynamicLink/getDynamicLink.types.d.ts +10 -0
  420. package/dist/utils/getDynamicLink/getDynamicLink.types.js +2 -0
  421. package/dist/utils/getDynamicLink/getDynamicLink.types.js.map +1 -0
  422. package/dist/utils/getDynamicLink/getDynamicLink.validate.d.ts +2 -0
  423. package/dist/utils/getDynamicLink/getDynamicLink.validate.js +14 -0
  424. package/dist/utils/getDynamicLink/getDynamicLink.validate.js.map +1 -0
  425. package/dist/utils/getDynamicLink/index.d.ts +2 -0
  426. package/dist/utils/getDynamicLink/index.js +28 -0
  427. package/dist/utils/getDynamicLink/index.js.map +1 -0
  428. package/dist/utils/hmac/checkEnv/checkEnv.d.ts +4 -0
  429. package/dist/utils/hmac/checkEnv/checkEnv.js +17 -0
  430. package/dist/utils/hmac/checkEnv/checkEnv.js.map +1 -0
  431. package/dist/utils/hmac/checkEnv/index.d.ts +1 -0
  432. package/dist/utils/hmac/checkEnv/index.js +17 -0
  433. package/dist/utils/hmac/checkEnv/index.js.map +1 -0
  434. package/dist/utils/hmac/createHmac/createHmac.d.ts +3 -0
  435. package/dist/utils/hmac/createHmac/createHmac.js +33 -0
  436. package/dist/utils/hmac/createHmac/createHmac.js.map +1 -0
  437. package/dist/utils/hmac/createHmac/index.d.ts +1 -0
  438. package/dist/utils/hmac/createHmac/index.js +17 -0
  439. package/dist/utils/hmac/createHmac/index.js.map +1 -0
  440. package/dist/utils/hmac/index.d.ts +4 -0
  441. package/dist/utils/hmac/index.js +50 -0
  442. package/dist/utils/hmac/index.js.map +1 -0
  443. package/dist/utils/hmac/index.types.d.ts +12 -0
  444. package/dist/utils/hmac/index.types.js +2 -0
  445. package/dist/utils/hmac/index.types.js.map +1 -0
  446. package/dist/utils/hmac/signPayload/index.d.ts +1 -0
  447. package/dist/utils/hmac/signPayload/index.js +17 -0
  448. package/dist/utils/hmac/signPayload/index.js.map +1 -0
  449. package/dist/utils/hmac/signPayload/signPayload.d.ts +6 -0
  450. package/dist/utils/hmac/signPayload/signPayload.js +18 -0
  451. package/dist/utils/hmac/signPayload/signPayload.js.map +1 -0
  452. package/dist/utils/hmac/verifySignature/index.d.ts +1 -0
  453. package/dist/utils/hmac/verifySignature/index.js +17 -0
  454. package/dist/utils/hmac/verifySignature/index.js.map +1 -0
  455. package/dist/utils/hmac/verifySignature/verifySignature.d.ts +3 -0
  456. package/dist/utils/hmac/verifySignature/verifySignature.js +23 -0
  457. package/dist/utils/hmac/verifySignature/verifySignature.js.map +1 -0
  458. package/dist/utils/index.d.ts +17 -0
  459. package/dist/utils/index.js +193 -0
  460. package/dist/utils/index.js.map +1 -0
  461. package/dist/utils/jwt/index.d.ts +2 -0
  462. package/dist/utils/jwt/index.js +28 -0
  463. package/dist/utils/jwt/index.js.map +1 -0
  464. package/dist/utils/jwt/jwt.d.ts +12 -0
  465. package/dist/utils/jwt/jwt.js +195 -0
  466. package/dist/utils/jwt/jwt.js.map +1 -0
  467. package/dist/utils/jwt/jwt.types.d.ts +20 -0
  468. package/dist/utils/jwt/jwt.types.js +2 -0
  469. package/dist/utils/jwt/jwt.types.js.map +1 -0
  470. package/dist/utils/report/index.d.ts +3 -0
  471. package/dist/utils/report/index.js +39 -0
  472. package/dist/utils/report/index.js.map +1 -0
  473. package/dist/utils/report/output.d.ts +4 -0
  474. package/dist/utils/report/output.js +49 -0
  475. package/dist/utils/report/output.js.map +1 -0
  476. package/dist/utils/report/output.types.d.ts +65 -0
  477. package/dist/utils/report/output.types.js +2 -0
  478. package/dist/utils/report/output.types.js.map +1 -0
  479. package/dist/utils/report/report.d.ts +18 -0
  480. package/dist/utils/report/report.js +119 -0
  481. package/dist/utils/report/report.js.map +1 -0
  482. package/dist/utils/report/report.types.d.ts +11 -0
  483. package/dist/utils/report/report.types.js +2 -0
  484. package/dist/utils/report/report.types.js.map +1 -0
  485. package/dist/utils/request/index.d.ts +1 -0
  486. package/dist/utils/request/index.js +17 -0
  487. package/dist/utils/request/index.js.map +1 -0
  488. package/dist/utils/request/request.d.ts +3 -0
  489. package/dist/utils/request/request.js +42 -0
  490. package/dist/utils/request/request.js.map +1 -0
  491. package/dist/utils/semverCompare/index.d.ts +1 -0
  492. package/dist/utils/semverCompare/index.js +17 -0
  493. package/dist/utils/semverCompare/index.js.map +1 -0
  494. package/dist/utils/semverCompare/semverCompare.d.ts +7 -0
  495. package/dist/utils/semverCompare/semverCompare.js +65 -0
  496. package/dist/utils/semverCompare/semverCompare.js.map +1 -0
  497. package/dist/utils/sendEmail/index.d.ts +1 -0
  498. package/dist/utils/sendEmail/index.js +17 -0
  499. package/dist/utils/sendEmail/index.js.map +1 -0
  500. package/dist/utils/sendEmail/sendEmail.d.ts +11 -0
  501. package/dist/utils/sendEmail/sendEmail.js +32 -0
  502. package/dist/utils/sendEmail/sendEmail.js.map +1 -0
  503. package/dist/utils/sendEmail/sendEmail.types.d.ts +7 -0
  504. package/dist/utils/sendEmail/sendEmail.types.js +2 -0
  505. package/dist/utils/sendEmail/sendEmail.types.js.map +1 -0
  506. package/dist/utils/sendPush/index.d.ts +2 -0
  507. package/dist/utils/sendPush/index.js +28 -0
  508. package/dist/utils/sendPush/index.js.map +1 -0
  509. package/dist/utils/sendPush/sendPush.d.ts +8 -0
  510. package/dist/utils/sendPush/sendPush.js +25 -0
  511. package/dist/utils/sendPush/sendPush.js.map +1 -0
  512. package/dist/utils/sendPush/sendPush.types.d.ts +25 -0
  513. package/dist/utils/sendPush/sendPush.types.js +2 -0
  514. package/dist/utils/sendPush/sendPush.types.js.map +1 -0
  515. package/dist/utils/tlsConfig/index.d.ts +2 -0
  516. package/dist/utils/tlsConfig/index.js +28 -0
  517. package/dist/utils/tlsConfig/index.js.map +1 -0
  518. package/dist/utils/tlsConfig/tlsConfig.d.ts +8 -0
  519. package/dist/utils/tlsConfig/tlsConfig.js +44 -0
  520. package/dist/utils/tlsConfig/tlsConfig.js.map +1 -0
  521. package/dist/utils/tlsConfig/tlsConfig.types.d.ts +11 -0
  522. package/dist/utils/tlsConfig/tlsConfig.types.js +2 -0
  523. package/dist/utils/tlsConfig/tlsConfig.types.js.map +1 -0
  524. package/dist/utils/tlsConfig/tlsConfig.validate.d.ts +4 -0
  525. package/dist/utils/tlsConfig/tlsConfig.validate.js +48 -0
  526. package/dist/utils/tlsConfig/tlsConfig.validate.js.map +1 -0
  527. package/dist/utils/tlsRequest/index.d.ts +1 -0
  528. package/dist/utils/tlsRequest/index.js +17 -0
  529. package/dist/utils/tlsRequest/index.js.map +1 -0
  530. package/dist/utils/tlsRequest/tlsRequest.d.ts +3 -0
  531. package/dist/utils/tlsRequest/tlsRequest.js +18 -0
  532. package/dist/utils/tlsRequest/tlsRequest.js.map +1 -0
  533. package/dist/utils/trimPathSlash/index.d.ts +1 -0
  534. package/dist/utils/trimPathSlash/index.js +17 -0
  535. package/dist/utils/trimPathSlash/index.js.map +1 -0
  536. package/dist/utils/trimPathSlash/trimPathSlash.d.ts +6 -0
  537. package/dist/utils/trimPathSlash/trimPathSlash.js +15 -0
  538. package/dist/utils/trimPathSlash/trimPathSlash.js.map +1 -0
  539. package/eslint.config.mjs +11 -0
  540. package/package.json +157 -0
  541. package/src/const/DebeziumEvent.ts +6 -0
  542. package/src/const/LogSeverity.ts +7 -0
  543. package/src/const/index.ts +5 -0
  544. package/src/const/metrics.ts +6 -0
  545. package/src/const/mime.ts +37 -0
  546. package/src/const/tokenIssuer.ts +9 -0
  547. package/src/db/migrations/20241030121500-create-sequelize-meta-table.ts +29 -0
  548. package/src/db/models/SequelizeMeta.ts +16 -0
  549. package/src/db/models/index.ts +2 -0
  550. package/src/entities/ElasticSearch/ElasticSearch.ts +103 -0
  551. package/src/entities/ElasticSearch/ElasticSearch.types.ts +7 -0
  552. package/src/entities/ElasticSearch/index.ts +2 -0
  553. package/src/entities/Endpoint/Endpoint.test.ts +337 -0
  554. package/src/entities/Endpoint/Endpoint.ts +202 -0
  555. package/src/entities/Endpoint/Endpoint.types.ts +205 -0
  556. package/src/entities/Endpoint/index.ts +2 -0
  557. package/src/entities/EngineError/EngineError.ts +28 -0
  558. package/src/entities/EngineError/EngineError.types.ts +15 -0
  559. package/src/entities/EngineError/index.ts +2 -0
  560. package/src/entities/KeySet/KeySet.test.ts +126 -0
  561. package/src/entities/KeySet/KeySet.ts +172 -0
  562. package/src/entities/KeySet/KeySet.types.ts +28 -0
  563. package/src/entities/KeySet/index.ts +2 -0
  564. package/src/entities/LifecycleController/LifecycleController.test.ts +48 -0
  565. package/src/entities/LifecycleController/LifecycleController.ts +24 -0
  566. package/src/entities/LifecycleController/LifecycleController.types.ts +5 -0
  567. package/src/entities/LifecycleController/index.ts +2 -0
  568. package/src/entities/Localizator/Localizator.ts +139 -0
  569. package/src/entities/Localizator/Localizator.types.ts +52 -0
  570. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.test.ts +165 -0
  571. package/src/entities/Localizator/guessNamingConvention/guessNamingConvention.ts +58 -0
  572. package/src/entities/Localizator/guessNamingConvention/index.ts +1 -0
  573. package/src/entities/Localizator/index.ts +2 -0
  574. package/src/entities/MessageHandler/MessageHandler.test.ts +130 -0
  575. package/src/entities/MessageHandler/MessageHandler.ts +72 -0
  576. package/src/entities/MessageHandler/MessageHandler.types.ts +15 -0
  577. package/src/entities/MessageHandler/index.ts +2 -0
  578. package/src/entities/PubSub/PubSub.test.ts +297 -0
  579. package/src/entities/PubSub/PubSub.ts +202 -0
  580. package/src/entities/PubSub/PubSub.types.ts +76 -0
  581. package/src/entities/PubSub/handleMessage/handleMessage.test.ts +102 -0
  582. package/src/entities/PubSub/handleMessage/handleMessage.ts +65 -0
  583. package/src/entities/PubSub/handleMessage/index.ts +1 -0
  584. package/src/entities/PubSub/index.ts +2 -0
  585. package/src/entities/PushNotification/PushNotification.test.ts +35 -0
  586. package/src/entities/PushNotification/PushNotification.ts +44 -0
  587. package/src/entities/PushNotification/PushNotification.types.ts +25 -0
  588. package/src/entities/PushNotification/index.ts +2 -0
  589. package/src/entities/Redis/Redis.ts +71 -0
  590. package/src/entities/Redis/Redis.types.ts +19 -0
  591. package/src/entities/Redis/Redis.validate.ts +17 -0
  592. package/src/entities/Redis/index.ts +2 -0
  593. package/src/entities/Sequelize/Sequelize.config.ts +29 -0
  594. package/src/entities/Sequelize/Sequelize.test.ts +21 -0
  595. package/src/entities/Sequelize/Sequelize.ts +75 -0
  596. package/src/entities/Sequelize/Sequelize.types.ts +10 -0
  597. package/src/entities/Sequelize/Sequelize.validate.ts +15 -0
  598. package/src/entities/Sequelize/index.ts +2 -0
  599. package/src/entities/Server/Server.const.ts +56 -0
  600. package/src/entities/Server/Server.test.ts +272 -0
  601. package/src/entities/Server/Server.ts +445 -0
  602. package/src/entities/Server/Server.types.ts +88 -0
  603. package/src/entities/Server/index.ts +2 -0
  604. package/src/entities/SocketClient/SocketClient.test.ts +392 -0
  605. package/src/entities/SocketClient/SocketClient.ts +401 -0
  606. package/src/entities/SocketClient/SocketClient.types.ts +62 -0
  607. package/src/entities/SocketClient/index.ts +2 -0
  608. package/src/entities/SocketClient/parseMessage/index.ts +1 -0
  609. package/src/entities/SocketClient/parseMessage/parseMessage.test.ts +20 -0
  610. package/src/entities/SocketClient/parseMessage/parseMessage.ts +26 -0
  611. package/src/entities/Storage/Storage.test.ts +58 -0
  612. package/src/entities/Storage/Storage.ts +219 -0
  613. package/src/entities/Storage/Storage.types.ts +57 -0
  614. package/src/entities/Storage/index.ts +2 -0
  615. package/src/entities/ValidationError/ValidationError.ts +34 -0
  616. package/src/entities/ValidationError/index.ts +1 -0
  617. package/src/entities/WebError/WebError.test.ts +18 -0
  618. package/src/entities/WebError/WebError.ts +23 -0
  619. package/src/entities/WebError/WebError.types.ts +9 -0
  620. package/src/entities/WebError/index.ts +2 -0
  621. package/src/entities/index.ts +16 -0
  622. package/src/index.ts +4 -0
  623. package/src/metrics/debug.ts +10 -0
  624. package/src/metrics/index.ts +2 -0
  625. package/src/metrics/request.ts +17 -0
  626. package/src/middleware/authAdmin/authAdmin.test.ts +199 -0
  627. package/src/middleware/authAdmin/authAdmin.ts +114 -0
  628. package/src/middleware/authAdmin/authAdmin.types.ts +19 -0
  629. package/src/middleware/authAdmin/index.ts +2 -0
  630. package/src/middleware/authHmac/authHmac.test.ts +86 -0
  631. package/src/middleware/authHmac/authHmac.ts +56 -0
  632. package/src/middleware/authHmac/authHmac.types.ts +7 -0
  633. package/src/middleware/authHmac/index.ts +2 -0
  634. package/src/middleware/authJwt/authJwt.test.ts +54 -0
  635. package/src/middleware/authJwt/authJwt.ts +55 -0
  636. package/src/middleware/authJwt/authJwt.types.ts +25 -0
  637. package/src/middleware/authJwt/index.ts +2 -0
  638. package/src/middleware/authStatic/authStatic.test.ts +36 -0
  639. package/src/middleware/authStatic/authStatic.ts +45 -0
  640. package/src/middleware/authStatic/index.ts +1 -0
  641. package/src/middleware/authTls/authTls.test.ts +138 -0
  642. package/src/middleware/authTls/authTls.ts +106 -0
  643. package/src/middleware/authTls/authTls.types.ts +13 -0
  644. package/src/middleware/authTls/index.ts +2 -0
  645. package/src/middleware/error/error.test.ts +60 -0
  646. package/src/middleware/error/error.ts +25 -0
  647. package/src/middleware/error/index.ts +1 -0
  648. package/src/middleware/fileUploader/compressAvatar/compressAvatar.ts +25 -0
  649. package/src/middleware/fileUploader/compressAvatar/compressAvatar.types.ts +12 -0
  650. package/src/middleware/fileUploader/compressAvatar/index.ts +2 -0
  651. package/src/middleware/fileUploader/fileUploader.test.ts +310 -0
  652. package/src/middleware/fileUploader/fileUploader.ts +303 -0
  653. package/src/middleware/fileUploader/fileUploader.types.ts +52 -0
  654. package/src/middleware/fileUploader/index.ts +2 -0
  655. package/src/middleware/fileUploader/isMultiPart/index.ts +1 -0
  656. package/src/middleware/fileUploader/isMultiPart/isMultipart.ts +9 -0
  657. package/src/middleware/fileUploader/validate/index.ts +1 -0
  658. package/src/middleware/fileUploader/validate/validate.ts +27 -0
  659. package/src/middleware/fourOhFour/fourOhFour.test.ts +14 -0
  660. package/src/middleware/fourOhFour/fourOhFour.ts +13 -0
  661. package/src/middleware/fourOhFour/index.ts +1 -0
  662. package/src/middleware/healthCheck/healthCheck.test.ts +12 -0
  663. package/src/middleware/healthCheck/healthCheck.ts +14 -0
  664. package/src/middleware/healthCheck/index.ts +1 -0
  665. package/src/middleware/index.ts +15 -0
  666. package/src/middleware/metrics/index.ts +1 -0
  667. package/src/middleware/metrics/metrics.test.ts +46 -0
  668. package/src/middleware/metrics/metrics.ts +24 -0
  669. package/src/middleware/requestMetrics/index.ts +1 -0
  670. package/src/middleware/requestMetrics/requestMetrics.test.ts +77 -0
  671. package/src/middleware/requestMetrics/requestMetrics.ts +20 -0
  672. package/src/middleware/swaggerDocs/index.ts +2 -0
  673. package/src/middleware/swaggerDocs/swaggerDocs.ts +114 -0
  674. package/src/middleware/swaggerDocs/swaggerDocs.types.ts +41 -0
  675. package/src/middleware/userResolver/index.ts +1 -0
  676. package/src/middleware/userResolver/userResolver.test.ts +35 -0
  677. package/src/middleware/userResolver/userResolver.ts +36 -0
  678. package/src/middleware/validate/index.ts +1 -0
  679. package/src/middleware/validate/validate.test.ts +43 -0
  680. package/src/middleware/validate/validate.ts +25 -0
  681. package/src/middleware/version/index.ts +1 -0
  682. package/src/middleware/version/version.test.ts +23 -0
  683. package/src/middleware/version/version.ts +12 -0
  684. package/src/utils/checkEnvironment/index.ts +49 -0
  685. package/src/utils/createHttpServer/createHttpServer.test.ts +24 -0
  686. package/src/utils/createHttpServer/createHttpServer.ts +34 -0
  687. package/src/utils/createHttpServer/createHttpServer.validate.ts +17 -0
  688. package/src/utils/createHttpServer/index.ts +1 -0
  689. package/src/utils/createSortedObject/createSortedObject.ts +20 -0
  690. package/src/utils/createSortedObject/createSortedObjet.test.ts +47 -0
  691. package/src/utils/createSortedObject/index.ts +1 -0
  692. package/src/utils/dbMigration/dbMigration.test.ts +209 -0
  693. package/src/utils/dbMigration/dbMigration.ts +196 -0
  694. package/src/utils/dbMigration/dbMigration.types.ts +11 -0
  695. package/src/utils/dbMigration/index.ts +2 -0
  696. package/src/utils/dbMigration/migrateMetadataTable/index.ts +1 -0
  697. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.test.ts +59 -0
  698. package/src/utils/dbMigration/migrateMetadataTable/migrateMetadataTable.ts +70 -0
  699. package/src/utils/envAssert/envAssert.ts +31 -0
  700. package/src/utils/envAssert/index.ts +1 -0
  701. package/src/utils/envAssert/validators/hostList.ts +17 -0
  702. package/src/utils/envAssert/validators/index.ts +5 -0
  703. package/src/utils/envAssert/validators/ipList.ts +13 -0
  704. package/src/utils/envAssert/validators/path.ts +13 -0
  705. package/src/utils/envAssert/validators/string.ts +9 -0
  706. package/src/utils/envAssert/validators/stringList.ts +13 -0
  707. package/src/utils/filter/filter.ts +17 -0
  708. package/src/utils/filter/index.ts +1 -0
  709. package/src/utils/getDynamicLink/getDynamicLink.test.ts +51 -0
  710. package/src/utils/getDynamicLink/getDynamicLink.ts +28 -0
  711. package/src/utils/getDynamicLink/getDynamicLink.types.ts +11 -0
  712. package/src/utils/getDynamicLink/getDynamicLink.validate.ts +6 -0
  713. package/src/utils/getDynamicLink/index.ts +2 -0
  714. package/src/utils/hmac/checkEnv/checkEnv.test.ts +18 -0
  715. package/src/utils/hmac/checkEnv/checkEnv.ts +9 -0
  716. package/src/utils/hmac/checkEnv/index.ts +1 -0
  717. package/src/utils/hmac/createHmac/createHmac.ts +33 -0
  718. package/src/utils/hmac/createHmac/index.ts +1 -0
  719. package/src/utils/hmac/index.ts +4 -0
  720. package/src/utils/hmac/index.types.ts +13 -0
  721. package/src/utils/hmac/signPayload/index.ts +1 -0
  722. package/src/utils/hmac/signPayload/signPayload.ts +16 -0
  723. package/src/utils/hmac/verifySignature/index.ts +1 -0
  724. package/src/utils/hmac/verifySignature/verifySignature.ts +24 -0
  725. package/src/utils/index.ts +26 -0
  726. package/src/utils/jwt/index.ts +2 -0
  727. package/src/utils/jwt/jwt.test.ts +41 -0
  728. package/src/utils/jwt/jwt.ts +204 -0
  729. package/src/utils/jwt/jwt.types.ts +21 -0
  730. package/src/utils/report/index.ts +3 -0
  731. package/src/utils/report/output.ts +45 -0
  732. package/src/utils/report/output.types.ts +70 -0
  733. package/src/utils/report/report.test.ts +133 -0
  734. package/src/utils/report/report.ts +134 -0
  735. package/src/utils/report/report.types.ts +13 -0
  736. package/src/utils/request/index.ts +1 -0
  737. package/src/utils/request/request.test.ts +26 -0
  738. package/src/utils/request/request.ts +48 -0
  739. package/src/utils/semverCompare/index.ts +1 -0
  740. package/src/utils/semverCompare/semverCompare.test.ts +49 -0
  741. package/src/utils/semverCompare/semverCompare.ts +60 -0
  742. package/src/utils/sendEmail/index.ts +1 -0
  743. package/src/utils/sendEmail/sendEmail.ts +27 -0
  744. package/src/utils/sendEmail/sendEmail.types.ts +7 -0
  745. package/src/utils/sendPush/index.ts +2 -0
  746. package/src/utils/sendPush/sendPush.ts +20 -0
  747. package/src/utils/sendPush/sendPush.types.ts +25 -0
  748. package/src/utils/tlsConfig/index.ts +2 -0
  749. package/src/utils/tlsConfig/tlsConfig.test.ts +32 -0
  750. package/src/utils/tlsConfig/tlsConfig.ts +47 -0
  751. package/src/utils/tlsConfig/tlsConfig.types.ts +11 -0
  752. package/src/utils/tlsConfig/tlsConfig.validate.ts +25 -0
  753. package/src/utils/tlsRequest/index.ts +1 -0
  754. package/src/utils/tlsRequest/tlsRequest.test.ts +63 -0
  755. package/src/utils/tlsRequest/tlsRequest.ts +12 -0
  756. package/src/utils/trimPathSlash/index.ts +1 -0
  757. package/src/utils/trimPathSlash/trimPathSlash.test.ts +26 -0
  758. package/src/utils/trimPathSlash/trimPathSlash.ts +8 -0
  759. package/test/env.ts +56 -0
  760. package/test/factory/index.ts +8 -0
  761. package/test/factory/sequelizeMeta.ts +12 -0
  762. package/test/hooks.ts +37 -0
  763. package/test/index.ts +3 -0
  764. package/test/stub/index.ts +3 -0
  765. package/test/stub/stubLocales.ts +68 -0
  766. package/test/stub/stubPubSub.ts +7 -0
  767. package/test/stub/stubStorage.ts +77 -0
  768. package/test/stub/stubStorage.types.ts +11 -0
  769. package/test/utils/app.ts +31 -0
  770. package/test/utils/index.ts +1 -0
  771. package/tsconfig.build.json +5 -0
  772. package/tsconfig.json +32 -0
@@ -0,0 +1,33 @@
1
+ import { KeySetOptions, KeySetValues } from './KeySet.types';
2
+ /**
3
+ * Fetch Json Web Key Sets and cache them
4
+ * Keys can then be used for Json Web Token authentication
5
+ */
6
+ export declare class KeySet {
7
+ /** Latest known value for the keys in the set, indexed by the key id */
8
+ private keySet;
9
+ /** URL at which the key set can be fetched */
10
+ private url;
11
+ /** This resource is located on a service inside of our private cluster */
12
+ private internal;
13
+ /** This URL is actually a path to a local key file encoded in PEM */
14
+ private file;
15
+ /** This input is actually a full PEM string representation of a key */
16
+ private pem;
17
+ /** Timer for the key fetching interval */
18
+ private interval?;
19
+ /** Create a new Key Set */
20
+ constructor(url: string, options?: KeySetOptions);
21
+ /** Calculate key ID from PEM string */
22
+ private static calculateKeyId;
23
+ /** Initialize a KeySet, should be run on server startup to avoid any misconfiguration */
24
+ init(): Promise<void>;
25
+ /** Clear any pending timers to avoid pending process */
26
+ shutdown(): void;
27
+ /** Get the PEM encoded version of a key by its id */
28
+ getKey(keyId: string): string | undefined;
29
+ /** Get all the keys in the set mapped by their ID */
30
+ getKeys(): KeySetValues;
31
+ /** Fetch the latest version of the key set */
32
+ private fetch;
33
+ }
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.KeySet = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _crypto = require("crypto");
11
+ var _fs = require("fs");
12
+ var _const = require("../../const");
13
+ var _EngineError = require("../EngineError");
14
+ var _report = require("../../utils/report");
15
+ var _request = require("../../utils/request");
16
+ var _tlsRequest = require("../../utils/tlsRequest");
17
+ const namespace = 'engine:keySet';
18
+
19
+ // Number of seconds between each key refresh
20
+ const KEY_REFRESH_INTERVAL = 300;
21
+
22
+ /**
23
+ * Fetch Json Web Key Sets and cache them
24
+ * Keys can then be used for Json Web Token authentication
25
+ */
26
+ let KeySet = exports.KeySet = /*#__PURE__*/function () {
27
+ /** Create a new Key Set */
28
+ function KeySet(url, options = {}) {
29
+ (0, _classCallCheck2.default)(this, KeySet);
30
+ /** Latest known value for the keys in the set, indexed by the key id */
31
+ this.keySet = {};
32
+ /** URL at which the key set can be fetched */
33
+ this.url = void 0;
34
+ /** This resource is located on a service inside of our private cluster */
35
+ this.internal = void 0;
36
+ /** This URL is actually a path to a local key file encoded in PEM */
37
+ this.file = void 0;
38
+ /** This input is actually a full PEM string representation of a key */
39
+ this.pem = void 0;
40
+ /** Timer for the key fetching interval */
41
+ this.interval = void 0;
42
+ this.url = url;
43
+ this.internal = options.internal ?? false;
44
+ this.file = options.file ?? false;
45
+ this.pem = options.pem ?? false;
46
+ }
47
+
48
+ /** Calculate key ID from PEM string */
49
+ return (0, _createClass2.default)(KeySet, [{
50
+ key: "init",
51
+ value: /** Initialize a KeySet, should be run on server startup to avoid any misconfiguration */
52
+ async function init() {
53
+ await this.fetch();
54
+ this.interval = setInterval(() => {
55
+ (async () => {
56
+ try {
57
+ await this.fetch();
58
+ } catch (error) {
59
+ (0, _report.reportError)(error);
60
+ }
61
+ })().catch(error => {
62
+ (0, _report.reportError)(error);
63
+ });
64
+ }, KEY_REFRESH_INTERVAL * 1000);
65
+ }
66
+
67
+ /** Clear any pending timers to avoid pending process */
68
+ }, {
69
+ key: "shutdown",
70
+ value: function shutdown() {
71
+ if (this.interval) clearInterval(this.interval);
72
+ }
73
+
74
+ /** Get the PEM encoded version of a key by its id */
75
+ }, {
76
+ key: "getKey",
77
+ value: function getKey(keyId) {
78
+ return this.keySet[keyId];
79
+ }
80
+
81
+ /** Get all the keys in the set mapped by their ID */
82
+ }, {
83
+ key: "getKeys",
84
+ value: function getKeys() {
85
+ return this.keySet;
86
+ }
87
+
88
+ /** Fetch the latest version of the key set */
89
+ }, {
90
+ key: "fetch",
91
+ value: async function fetch() {
92
+ (0, _report.reportDebug)({
93
+ namespace,
94
+ message: `Fetching JWKS`,
95
+ data: {
96
+ url: this.url
97
+ }
98
+ });
99
+ if (this.pem) {
100
+ // Read the key from the parameter directly
101
+ (0, _report.reportDebug)({
102
+ namespace,
103
+ message: 'Processing key from given PEM string'
104
+ });
105
+ const kid = KeySet.calculateKeyId(this.url);
106
+ this.keySet = {
107
+ [kid]: this.url
108
+ };
109
+ } else if (this.file) {
110
+ // Read the key from a file
111
+ (0, _report.reportDebug)({
112
+ namespace,
113
+ message: `Reading key on disk at path "${this.url}"`
114
+ });
115
+ const set = JSON.parse((0, _fs.readFileSync)(this.url, 'utf-8'));
116
+
117
+ // Check that the returned data has the shape of a JWKS
118
+ if (!(set.keys && set.keys instanceof Array)) throw new _EngineError.EngineError({
119
+ severity: _const.LogSeverity.ERROR,
120
+ message: 'Fetched key set is not in an appropriate format',
121
+ data: {
122
+ url: this.url,
123
+ set
124
+ }
125
+ });
126
+
127
+ // Create a node.crypto public key object for each key in the set
128
+ this.keySet = set.keys.reduce((set, key) => {
129
+ set[key.kid] = (0, _crypto.createPublicKey)({
130
+ key,
131
+ format: 'jwk'
132
+ }).export({
133
+ format: 'pem',
134
+ type: 'spki'
135
+ });
136
+ return set;
137
+ }, {});
138
+ } else {
139
+ // Fetch key by making a network request
140
+ (0, _report.reportDebug)({
141
+ namespace,
142
+ message: `Making network request to "${this.url}"`
143
+ });
144
+ const requestOptions = {
145
+ url: this.url,
146
+ method: 'get'
147
+ };
148
+ // For services inside of our cluster we use the TLS authenticated request method
149
+ const {
150
+ data: set
151
+ } = await (this.internal ? (0, _tlsRequest.tlsRequest)(requestOptions) : (0, _request.request)(requestOptions));
152
+
153
+ // Check that the returned data has the shape of a JWKS
154
+ if (!(set.keys && set.keys instanceof Array)) throw new _EngineError.EngineError({
155
+ severity: _const.LogSeverity.ERROR,
156
+ message: 'Fetched key set is not in an appropriate format',
157
+ data: {
158
+ url: this.url,
159
+ set
160
+ }
161
+ });
162
+
163
+ // Create a node.crypto public key object for each key in the set
164
+ this.keySet = set.keys.reduce((set, key) => {
165
+ set[key.kid] = (0, _crypto.createPublicKey)({
166
+ key,
167
+ format: 'jwk'
168
+ }).export({
169
+ format: 'pem',
170
+ type: 'spki'
171
+ });
172
+ return set;
173
+ }, {});
174
+ }
175
+ (0, _report.reportDebug)({
176
+ namespace,
177
+ message: `Stored ${Object.keys(this.keySet).length} keys`,
178
+ data: {
179
+ keyIds: Object.keys(this.keySet)
180
+ }
181
+ });
182
+ }
183
+ }], [{
184
+ key: "calculateKeyId",
185
+ value: function calculateKeyId(pem) {
186
+ // We use the md5 hash of the PEM file to defined the key ID
187
+ const hash = (0, _crypto.createHash)('md5');
188
+ hash.update(pem.trim());
189
+ const kid = hash.digest('base64url');
190
+ (0, _report.reportDebug)({
191
+ namespace,
192
+ message: `Calculated Key ID: "${kid}"`,
193
+ data: {
194
+ key: pem
195
+ }
196
+ });
197
+ return kid;
198
+ }
199
+ }]);
200
+ }();
201
+ //# sourceMappingURL=KeySet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeySet.js","names":["_crypto","require","_fs","_const","_EngineError","_report","_request","_tlsRequest","namespace","KEY_REFRESH_INTERVAL","KeySet","exports","url","options","_classCallCheck2","default","keySet","internal","file","pem","interval","_createClass2","key","value","init","fetch","setInterval","error","reportError","catch","shutdown","clearInterval","getKey","keyId","getKeys","reportDebug","message","data","kid","calculateKeyId","set","JSON","parse","readFileSync","keys","Array","EngineError","severity","LogSeverity","ERROR","reduce","createPublicKey","format","export","type","requestOptions","method","tlsRequest","request","Object","length","keyIds","hash","createHash","update","trim","digest"],"sources":["../../../src/entities/KeySet/KeySet.ts"],"sourcesContent":["import { createPublicKey, createHash } from 'crypto';\nimport { readFileSync } from 'fs';\nimport { Method } from 'axios';\nimport { KeySetOptions, KeySetValues, JWKS } from './KeySet.types';\nimport { LogSeverity } from 'const';\nimport { EngineError } from 'entities/EngineError';\nimport { reportDebug, reportError } from 'utils/report';\nimport { request } from 'utils/request';\nimport { tlsRequest } from 'utils/tlsRequest';\n\nconst namespace = 'engine:keySet';\n\n// Number of seconds between each key refresh\nconst KEY_REFRESH_INTERVAL = 300;\n\n/**\n * Fetch Json Web Key Sets and cache them\n * Keys can then be used for Json Web Token authentication\n */\nexport class KeySet {\n /** Latest known value for the keys in the set, indexed by the key id */\n private keySet: KeySetValues = {};\n /** URL at which the key set can be fetched */\n private url: string;\n /** This resource is located on a service inside of our private cluster */\n private internal: boolean;\n /** This URL is actually a path to a local key file encoded in PEM */\n private file: boolean;\n /** This input is actually a full PEM string representation of a key */\n private pem: boolean;\n /** Timer for the key fetching interval */\n private interval?: NodeJS.Timeout | string | number | undefined;\n\n /** Create a new Key Set */\n public constructor(url: string, options: KeySetOptions = {}) {\n this.url = url;\n this.internal = options.internal ?? false;\n this.file = options.file ?? false;\n this.pem = options.pem ?? false;\n }\n\n /** Calculate key ID from PEM string */\n private static calculateKeyId(pem: string): string {\n // We use the md5 hash of the PEM file to defined the key ID\n const hash = createHash('md5');\n hash.update(pem.trim());\n const kid = hash.digest('base64url');\n reportDebug({\n namespace,\n message: `Calculated Key ID: \"${kid}\"`,\n data: { key: pem }\n });\n return kid;\n }\n\n /** Initialize a KeySet, should be run on server startup to avoid any misconfiguration */\n public async init(): Promise<void> {\n await this.fetch();\n this.interval = setInterval(() => {\n (async (): Promise<void> => {\n try {\n await this.fetch();\n } catch (error) {\n reportError(error);\n }\n })().catch((error) => {\n reportError(error);\n });\n }, KEY_REFRESH_INTERVAL * 1000);\n }\n\n /** Clear any pending timers to avoid pending process */\n public shutdown(): void {\n if (this.interval) clearInterval(this.interval);\n }\n\n /** Get the PEM encoded version of a key by its id */\n public getKey(keyId: string): string | undefined {\n return this.keySet[keyId];\n }\n\n /** Get all the keys in the set mapped by their ID */\n public getKeys(): KeySetValues {\n return this.keySet;\n }\n\n /** Fetch the latest version of the key set */\n private async fetch(): Promise<void> {\n reportDebug({\n namespace,\n message: `Fetching JWKS`,\n data: { url: this.url }\n });\n\n if (this.pem) {\n // Read the key from the parameter directly\n reportDebug({\n namespace,\n message: 'Processing key from given PEM string'\n });\n\n const kid = KeySet.calculateKeyId(this.url);\n\n this.keySet = { [kid]: this.url };\n } else if (this.file) {\n // Read the key from a file\n reportDebug({\n namespace,\n message: `Reading key on disk at path \"${this.url}\"`\n });\n const set = JSON.parse(readFileSync(this.url, 'utf-8'));\n\n // Check that the returned data has the shape of a JWKS\n if (!(set.keys && set.keys instanceof Array))\n throw new EngineError({\n severity: LogSeverity.ERROR,\n message: 'Fetched key set is not in an appropriate format',\n data: { url: this.url, set }\n });\n\n // Create a node.crypto public key object for each key in the set\n this.keySet = set.keys.reduce(\n (set: { [x: string]: string; }, key: { kid: string | number; }) => {\n set[key.kid] = createPublicKey({ key, format: 'jwk' }).export({\n format: 'pem',\n type: 'spki'\n }) as string;\n return set;\n },\n {} as Record<string, string>\n );\n } else {\n // Fetch key by making a network request\n reportDebug({\n namespace,\n message: `Making network request to \"${this.url}\"`\n });\n\n const requestOptions = { url: this.url, method: 'get' as Method };\n // For services inside of our cluster we use the TLS authenticated request method\n const { data: set } = await (this.internal\n ? tlsRequest<JWKS>(requestOptions)\n : request<JWKS>(requestOptions));\n\n // Check that the returned data has the shape of a JWKS\n if (!(set.keys && set.keys instanceof Array))\n throw new EngineError({\n severity: LogSeverity.ERROR,\n message: 'Fetched key set is not in an appropriate format',\n data: { url: this.url, set }\n });\n\n // Create a node.crypto public key object for each key in the set\n this.keySet = set.keys.reduce(\n (set, key) => {\n set[key.kid] = createPublicKey({ key, format: 'jwk' }).export({\n format: 'pem',\n type: 'spki'\n }) as string;\n return set;\n },\n {} as Record<string, string>\n );\n }\n\n reportDebug({\n namespace,\n message: `Stored ${Object.keys(this.keySet).length} keys`,\n data: { keyIds: Object.keys(this.keySet) }\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ import { JsonWebKey } from 'crypto';
2
+ /** KeySet initialization options */
3
+ export interface KeySetOptions {
4
+ /** This resource is located on a service inside of our private cluster */
5
+ internal?: boolean;
6
+ /** This URL is actually a path to a local key file encoded in PEM */
7
+ file?: boolean;
8
+ /** This input is actually a full PEM string representation of a key */
9
+ pem?: boolean;
10
+ }
11
+ /** Keep a mapping ok keyId => PEM */
12
+ export interface KeySetValues {
13
+ [id: string]: string;
14
+ }
15
+ /** Object holding JWK keys */
16
+ export interface JWKS {
17
+ /** Key set is JWKS format */
18
+ keys: Array<JWK>;
19
+ }
20
+ /** JWK key with custom claims */
21
+ interface JWK extends JsonWebKey {
22
+ /** ID of the key */
23
+ kid: string;
24
+ }
25
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=KeySet.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeySet.types.js","names":[],"sources":["../../../src/entities/KeySet/KeySet.types.ts"],"sourcesContent":["import { JsonWebKey } from 'crypto';\n\n/** KeySet initialization options */\nexport interface KeySetOptions {\n /** This resource is located on a service inside of our private cluster */\n internal?: boolean;\n /** This URL is actually a path to a local key file encoded in PEM */\n file?: boolean;\n /** This input is actually a full PEM string representation of a key */\n pem?: boolean;\n}\n\n/** Keep a mapping ok keyId => PEM */\nexport interface KeySetValues {\n [id: string]: string;\n}\n\n/** Object holding JWK keys */\nexport interface JWKS {\n /** Key set is JWKS format */\n keys: Array<JWK>;\n}\n\n/** JWK key with custom claims */\ninterface JWK extends JsonWebKey {\n /** ID of the key */\n kid: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from './KeySet';
2
+ export * from './KeySet.types';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _KeySet = require("./KeySet");
7
+ Object.keys(_KeySet).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _KeySet[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _KeySet[key];
14
+ }
15
+ });
16
+ });
17
+ var _KeySet2 = require("./KeySet.types");
18
+ Object.keys(_KeySet2).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _KeySet2[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _KeySet2[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_KeySet","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_KeySet2"],"sources":["../../../src/entities/KeySet/index.ts"],"sourcesContent":["export * from './KeySet';\nexport * from './KeySet.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,QAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,QAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,QAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,QAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { LifecycleControlledInstance } from './LifecycleController.types';
2
+ /** List of initialized entities */
3
+ export declare const runningInstances: Set<LifecycleControlledInstance>;
4
+ /** LifecycleController is used to shutdown all the entities on server shutdown */
5
+ export declare const LifecycleController: {
6
+ /** Add the initialized instances into the runningInstance property */
7
+ register(instance: LifecycleControlledInstance): void;
8
+ /** Shutdown all the running instances */
9
+ shutdownRunningInstances(): Promise<void>;
10
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.runningInstances = exports.LifecycleController = void 0;
7
+ /** List of initialized entities */
8
+ const runningInstances = exports.runningInstances = new Set();
9
+
10
+ /** LifecycleController is used to shutdown all the entities on server shutdown */
11
+ const LifecycleController = exports.LifecycleController = {
12
+ /** Add the initialized instances into the runningInstance property */
13
+ register(instance) {
14
+ runningInstances.add(instance);
15
+ },
16
+ /** Shutdown all the running instances */
17
+ async shutdownRunningInstances() {
18
+ const promises = [];
19
+ for (const instance of runningInstances) {
20
+ if (instance) {
21
+ promises.push(instance.shutdown.bind(instance)());
22
+ }
23
+ }
24
+ await Promise.all(promises);
25
+ runningInstances.clear();
26
+ }
27
+ };
28
+ //# sourceMappingURL=LifecycleController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleController.js","names":["runningInstances","exports","Set","LifecycleController","register","instance","add","shutdownRunningInstances","promises","push","shutdown","bind","Promise","all","clear"],"sources":["../../../src/entities/LifecycleController/LifecycleController.ts"],"sourcesContent":["import { LifecycleControlledInstance } from './LifecycleController.types';\n\n/** List of initialized entities */\nexport const runningInstances: Set<LifecycleControlledInstance> = new Set();\n\n/** LifecycleController is used to shutdown all the entities on server shutdown */\nexport const LifecycleController = {\n /** Add the initialized instances into the runningInstance property */\n register(instance: LifecycleControlledInstance): void {\n runningInstances.add(instance);\n },\n\n /** Shutdown all the running instances */\n async shutdownRunningInstances(): Promise<void> {\n const promises = [];\n for (const instance of runningInstances) {\n if (instance) {\n promises.push(instance.shutdown.bind(instance)());\n }\n }\n await Promise.all(promises);\n runningInstances.clear();\n }\n};\n"],"mappings":";;;;;;AAEA;AACO,MAAMA,gBAAkD,GAAAC,OAAA,CAAAD,gBAAA,GAAG,IAAIE,GAAG,CAAC,CAAC;;AAE3E;AACO,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAG;EACjC;EACAC,QAAQA,CAACC,QAAqC,EAAQ;IACpDL,gBAAgB,CAACM,GAAG,CAACD,QAAQ,CAAC;EAChC,CAAC;EAED;EACA,MAAME,wBAAwBA,CAAA,EAAkB;IAC9C,MAAMC,QAAQ,GAAG,EAAE;IACnB,KAAK,MAAMH,QAAQ,IAAIL,gBAAgB,EAAE;MACvC,IAAIK,QAAQ,EAAE;QACZG,QAAQ,CAACC,IAAI,CAACJ,QAAQ,CAACK,QAAQ,CAACC,IAAI,CAACN,QAAQ,CAAC,CAAC,CAAC,CAAC;MACnD;IACF;IACA,MAAMO,OAAO,CAACC,GAAG,CAACL,QAAQ,CAAC;IAC3BR,gBAAgB,CAACc,KAAK,CAAC,CAAC;EAC1B;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ /** Service instance that can be auto-shutdown by the Lifecycle Controller */
2
+ export interface LifecycleControlledInstance {
3
+ /** Function that will be called on server shutdown, should trigger the instance cleanup */
4
+ shutdown: () => void | Promise<void>;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=LifecycleController.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleController.types.js","names":[],"sources":["../../../src/entities/LifecycleController/LifecycleController.types.ts"],"sourcesContent":["/** Service instance that can be auto-shutdown by the Lifecycle Controller */\nexport interface LifecycleControlledInstance {\n /** Function that will be called on server shutdown, should trigger the instance cleanup */\n shutdown: () => void | Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { LifecycleController } from './LifecycleController';
2
+ export * from './LifecycleController.types';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ LifecycleController: true
8
+ };
9
+ Object.defineProperty(exports, "LifecycleController", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _LifecycleController.LifecycleController;
13
+ }
14
+ });
15
+ var _LifecycleController = require("./LifecycleController");
16
+ var _LifecycleController2 = require("./LifecycleController.types");
17
+ Object.keys(_LifecycleController2).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
+ if (key in exports && exports[key] === _LifecycleController2[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _LifecycleController2[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_LifecycleController","require","_LifecycleController2","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["../../../src/entities/LifecycleController/index.ts"],"sourcesContent":["export { LifecycleController } from './LifecycleController';\nexport * from './LifecycleController.types';\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,qBAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,qBAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,qBAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ import { LocalizatorLocalizationDataElement, LocalizatorScripts, LocalizatorNamingConventions } from './Localizator.types';
2
+ /** Service handling contextual localization */
3
+ export declare const Localizator: {
4
+ init(): Promise<void>;
5
+ /**
6
+ * Fetch a JSON file from the locales bucket
7
+ */
8
+ getLocaleFile<T>(file: string): Promise<T>;
9
+ /**
10
+ * Synchronizes the localeData and scripts files
11
+ * Should be called only once on startup
12
+ */
13
+ synchronize(): Promise<void>;
14
+ /** Transform unicode ranges in scripts data to regex */
15
+ buildRangeRegex(script: LocalizatorScripts): LocalizatorScripts;
16
+ /** Guess the naming convention to use for a given name and locale */
17
+ guessNamingConvention(firstName: string, lastName: string, locale: string): LocalizatorNamingConventions;
18
+ /**
19
+ * Calculate the different display names for a user
20
+ */
21
+ getDisplayNames(firstName: string, lastName: string, locale: string): LocalizatorNamingConventions;
22
+ /** Get the localization data for a locale */
23
+ getLocaleData(locale: string): LocalizatorLocalizationDataElement;
24
+ /** Check if a locale exists */
25
+ isValidLocale(locale: string): boolean;
26
+ /** Cleanup the instance */
27
+ shutdown(): void;
28
+ };
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Localizator = void 0;
7
+ var _guessNamingConvention = require("./guessNamingConvention");
8
+ var _EngineError = require("../EngineError");
9
+ var _LifecycleController = require("../LifecycleController");
10
+ var _Storage = require("../Storage");
11
+ var _checkEnvironment = require("../../utils/checkEnvironment");
12
+ var _envAssert = require("../../utils/envAssert");
13
+ var _report = require("../../utils/report");
14
+ const namespace = 'engine:localizator';
15
+ const REFRESH_FREQUENCY = 10 * 60 * 1000;
16
+ let localeData;
17
+ let scripts;
18
+ let interval;
19
+
20
+ /** Service handling contextual localization */
21
+ const Localizator = exports.Localizator = {
22
+ async init() {
23
+ (0, _checkEnvironment.checkEnvironment)({
24
+ LOCALES_BUCKET: _envAssert.envAssert.isString()
25
+ });
26
+ await Localizator.synchronize();
27
+ // Keep synchronizing
28
+ interval = setInterval(() => {
29
+ Localizator.synchronize().catch(error => {
30
+ (0, _report.reportError)(error);
31
+ });
32
+ }, REFRESH_FREQUENCY);
33
+ _LifecycleController.LifecycleController.register(Localizator);
34
+ },
35
+ /**
36
+ * Fetch a JSON file from the locales bucket
37
+ */
38
+ async getLocaleFile(file) {
39
+ (0, _report.reportDebug)({
40
+ namespace,
41
+ message: `Starting download of localization file [${file}]`,
42
+ data: {
43
+ bucket: process.env.LOCALES_BUCKET,
44
+ file
45
+ }
46
+ });
47
+ const {
48
+ data
49
+ } = await _Storage.Storage.get(process.env.LOCALES_BUCKET, file);
50
+ const stringified = data.toString('utf-8');
51
+ const result = JSON.parse(stringified);
52
+ (0, _report.reportDebug)({
53
+ namespace,
54
+ message: `Fetched localization file [${file}]`,
55
+ data: {
56
+ bucket: process.env.LOCALES_BUCKET,
57
+ file,
58
+ result
59
+ }
60
+ });
61
+ return result;
62
+ },
63
+ /**
64
+ * Synchronizes the localeData and scripts files
65
+ * Should be called only once on startup
66
+ */
67
+ async synchronize() {
68
+ (0, _report.reportDebug)({
69
+ namespace,
70
+ message: `Starting synchronizing`
71
+ });
72
+ const [fetchedLocaleData, fetchedScripts] = await Promise.all([Localizator.getLocaleFile('localeData.json'), Localizator.getLocaleFile('scripts.json')]);
73
+ localeData = fetchedLocaleData;
74
+ scripts = Localizator.buildRangeRegex(fetchedScripts);
75
+ (0, _report.reportDebug)({
76
+ namespace,
77
+ message: `Finished synchronizing`
78
+ });
79
+ },
80
+ /** Transform unicode ranges in scripts data to regex */
81
+ buildRangeRegex(script) {
82
+ for (const i of Object.keys(script)) {
83
+ const ranges = script[i].ranges;
84
+ if (ranges) {
85
+ script[i].rangeRegex = new RegExp(`[${ranges.join('')}]`, 'u');
86
+ }
87
+ }
88
+ return script;
89
+ },
90
+ /** Guess the naming convention to use for a given name and locale */
91
+ guessNamingConvention(firstName, lastName, locale) {
92
+ if (!scripts || !localeData) throw new _EngineError.EngineError({
93
+ message: 'Localizator is not initialized'
94
+ });
95
+ const name = firstName + lastName; // merge two names if possible
96
+ return (0, _guessNamingConvention.guessNamingConvention)(scripts, localeData, name, locale);
97
+ },
98
+ /**
99
+ * Calculate the different display names for a user
100
+ */
101
+ getDisplayNames(firstName, lastName, locale) {
102
+ const convention = Localizator.guessNamingConvention(firstName, lastName, locale);
103
+ return Object.keys(convention).reduce((convention, type) => {
104
+ const safeType = type;
105
+ convention[safeType] = convention[safeType].replace('{firstName}', firstName).replace('{lastName}', lastName ?? '').trim();
106
+ return convention;
107
+ }, convention);
108
+ },
109
+ /** Get the localization data for a locale */
110
+ getLocaleData(locale) {
111
+ if (!localeData) throw new _EngineError.EngineError({
112
+ message: 'Localizator is not initialized'
113
+ });
114
+ return localeData[locale];
115
+ },
116
+ /** Check if a locale exists */
117
+ isValidLocale(locale) {
118
+ if (!localeData) throw new _EngineError.EngineError({
119
+ message: 'Localizator is not initialized'
120
+ });
121
+ return localeData[locale] !== undefined;
122
+ },
123
+ /** Cleanup the instance */
124
+ shutdown() {
125
+ if (interval) clearTimeout(interval);
126
+ }
127
+ };
128
+ //# sourceMappingURL=Localizator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Localizator.js","names":["_guessNamingConvention","require","_EngineError","_LifecycleController","_Storage","_checkEnvironment","_envAssert","_report","namespace","REFRESH_FREQUENCY","localeData","scripts","interval","Localizator","exports","init","checkEnvironment","LOCALES_BUCKET","envAssert","isString","synchronize","setInterval","catch","error","reportError","LifecycleController","register","getLocaleFile","file","reportDebug","message","data","bucket","process","env","Storage","get","stringified","toString","result","JSON","parse","fetchedLocaleData","fetchedScripts","Promise","all","buildRangeRegex","script","i","Object","keys","ranges","rangeRegex","RegExp","join","guessNamingConvention","firstName","lastName","locale","EngineError","name","getDisplayNames","convention","reduce","type","safeType","replace","trim","getLocaleData","isValidLocale","undefined","shutdown","clearTimeout"],"sources":["../../../src/entities/Localizator/Localizator.ts"],"sourcesContent":["import { guessNamingConvention } from './guessNamingConvention';\nimport {\n LocalizatorLocalizationData,\n LocalizatorLocalizationDataElement,\n LocalizatorScripts,\n LocalizatorNamingConventions\n} from './Localizator.types';\nimport { EngineError } from 'entities/EngineError';\nimport { LifecycleController } from 'entities/LifecycleController';\nimport { Storage } from 'entities/Storage';\nimport { checkEnvironment } from 'utils/checkEnvironment';\nimport { envAssert } from 'utils/envAssert';\nimport { reportError, reportDebug } from 'utils/report';\n\nconst namespace = 'engine:localizator';\n\nconst REFRESH_FREQUENCY = 10 * 60 * 1000;\n\nlet localeData: undefined | LocalizatorLocalizationData;\nlet scripts: undefined | LocalizatorScripts;\nlet interval: NodeJS.Timeout | string | number | undefined;\n\n/** Service handling contextual localization */\nexport const Localizator = {\n async init(): Promise<void> {\n checkEnvironment({ LOCALES_BUCKET: envAssert.isString() });\n await Localizator.synchronize();\n // Keep synchronizing\n interval = setInterval(() => {\n Localizator.synchronize().catch((error) => {\n reportError(error);\n });\n }, REFRESH_FREQUENCY);\n LifecycleController.register(Localizator);\n },\n\n /**\n * Fetch a JSON file from the locales bucket\n */\n async getLocaleFile<T>(file: string): Promise<T> {\n reportDebug({\n namespace,\n message: `Starting download of localization file [${file}]`,\n data: { bucket: process.env.LOCALES_BUCKET, file }\n });\n const { data } = await Storage.get(\n process.env.LOCALES_BUCKET as string,\n file\n );\n const stringified = data.toString('utf-8');\n const result = JSON.parse(stringified) as T;\n reportDebug({\n namespace,\n message: `Fetched localization file [${file}]`,\n data: { bucket: process.env.LOCALES_BUCKET, file, result }\n });\n return result;\n },\n\n /**\n * Synchronizes the localeData and scripts files\n * Should be called only once on startup\n */\n async synchronize(): Promise<void> {\n reportDebug({ namespace, message: `Starting synchronizing` });\n const [fetchedLocaleData, fetchedScripts] = await Promise.all([\n Localizator.getLocaleFile<LocalizatorLocalizationData>('localeData.json'),\n Localizator.getLocaleFile<LocalizatorScripts>('scripts.json')\n ]);\n localeData = fetchedLocaleData;\n scripts = Localizator.buildRangeRegex(fetchedScripts);\n reportDebug({ namespace, message: `Finished synchronizing` });\n },\n\n /** Transform unicode ranges in scripts data to regex */\n buildRangeRegex(script: LocalizatorScripts): LocalizatorScripts {\n for (const i of Object.keys(script)) {\n const ranges = script[i].ranges;\n if (ranges) {\n script[i].rangeRegex = new RegExp(`[${ranges.join('')}]`, 'u');\n }\n }\n return script;\n },\n\n /** Guess the naming convention to use for a given name and locale */\n guessNamingConvention(\n firstName: string,\n lastName: string,\n locale: string\n ): LocalizatorNamingConventions {\n if (!scripts || !localeData)\n throw new EngineError({ message: 'Localizator is not initialized' });\n const name = firstName + lastName; // merge two names if possible\n return guessNamingConvention(scripts, localeData, name, locale);\n },\n\n /**\n * Calculate the different display names for a user\n */\n getDisplayNames(\n firstName: string,\n lastName: string,\n locale: string\n ): LocalizatorNamingConventions {\n const convention = Localizator.guessNamingConvention(\n firstName,\n lastName,\n locale\n );\n return Object.keys(convention).reduce((convention, type) => {\n const safeType = type as keyof LocalizatorNamingConventions;\n convention[safeType] = convention[safeType]\n .replace('{firstName}', firstName)\n .replace('{lastName}', lastName ?? '')\n .trim();\n return convention;\n }, convention);\n },\n\n /** Get the localization data for a locale */\n getLocaleData(locale: string): LocalizatorLocalizationDataElement {\n if (!localeData)\n throw new EngineError({ message: 'Localizator is not initialized' });\n return localeData[locale];\n },\n\n /** Check if a locale exists */\n isValidLocale(locale: string): boolean {\n if (!localeData)\n throw new EngineError({ message: 'Localizator is not initialized' });\n return localeData[locale] !== undefined;\n },\n\n /** Cleanup the instance */\n shutdown(): void {\n if (interval) clearTimeout(interval);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AAOA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAEA,MAAMO,SAAS,GAAG,oBAAoB;AAEtC,MAAMC,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AAExC,IAAIC,UAAmD;AACvD,IAAIC,OAAuC;AAC3C,IAAIC,QAAsD;;AAE1D;AACO,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzB,MAAME,IAAIA,CAAA,EAAkB;IAC1B,IAAAC,kCAAgB,EAAC;MAAEC,cAAc,EAAEC,oBAAS,CAACC,QAAQ,CAAC;IAAE,CAAC,CAAC;IAC1D,MAAMN,WAAW,CAACO,WAAW,CAAC,CAAC;IAC/B;IACAR,QAAQ,GAAGS,WAAW,CAAC,MAAM;MAC3BR,WAAW,CAACO,WAAW,CAAC,CAAC,CAACE,KAAK,CAAEC,KAAK,IAAK;QACzC,IAAAC,mBAAW,EAACD,KAAK,CAAC;MACpB,CAAC,CAAC;IACJ,CAAC,EAAEd,iBAAiB,CAAC;IACrBgB,wCAAmB,CAACC,QAAQ,CAACb,WAAW,CAAC;EAC3C,CAAC;EAED;AACF;AACA;EACE,MAAMc,aAAaA,CAAIC,IAAY,EAAc;IAC/C,IAAAC,mBAAW,EAAC;MACVrB,SAAS;MACTsB,OAAO,EAAE,2CAA2CF,IAAI,GAAG;MAC3DG,IAAI,EAAE;QAAEC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACjB,cAAc;QAAEW;MAAK;IACnD,CAAC,CAAC;IACF,MAAM;MAAEG;IAAK,CAAC,GAAG,MAAMI,gBAAO,CAACC,GAAG,CAChCH,OAAO,CAACC,GAAG,CAACjB,cAAc,EAC1BW,IACF,CAAC;IACD,MAAMS,WAAW,GAAGN,IAAI,CAACO,QAAQ,CAAC,OAAO,CAAC;IAC1C,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACJ,WAAW,CAAM;IAC3C,IAAAR,mBAAW,EAAC;MACVrB,SAAS;MACTsB,OAAO,EAAE,8BAA8BF,IAAI,GAAG;MAC9CG,IAAI,EAAE;QAAEC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACjB,cAAc;QAAEW,IAAI;QAAEW;MAAO;IAC3D,CAAC,CAAC;IACF,OAAOA,MAAM;EACf,CAAC;EAED;AACF;AACA;AACA;EACE,MAAMnB,WAAWA,CAAA,EAAkB;IACjC,IAAAS,mBAAW,EAAC;MAAErB,SAAS;MAAEsB,OAAO,EAAE;IAAyB,CAAC,CAAC;IAC7D,MAAM,CAACY,iBAAiB,EAAEC,cAAc,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CAC5DhC,WAAW,CAACc,aAAa,CAA8B,iBAAiB,CAAC,EACzEd,WAAW,CAACc,aAAa,CAAqB,cAAc,CAAC,CAC9D,CAAC;IACFjB,UAAU,GAAGgC,iBAAiB;IAC9B/B,OAAO,GAAGE,WAAW,CAACiC,eAAe,CAACH,cAAc,CAAC;IACrD,IAAAd,mBAAW,EAAC;MAAErB,SAAS;MAAEsB,OAAO,EAAE;IAAyB,CAAC,CAAC;EAC/D,CAAC;EAED;EACAgB,eAAeA,CAACC,MAA0B,EAAsB;IAC9D,KAAK,MAAMC,CAAC,IAAIC,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,EAAE;MACnC,MAAMI,MAAM,GAAGJ,MAAM,CAACC,CAAC,CAAC,CAACG,MAAM;MAC/B,IAAIA,MAAM,EAAE;QACVJ,MAAM,CAACC,CAAC,CAAC,CAACI,UAAU,GAAG,IAAIC,MAAM,CAAC,IAAIF,MAAM,CAACG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;MAChE;IACF;IACA,OAAOP,MAAM;EACf,CAAC;EAED;EACAQ,qBAAqBA,CACnBC,SAAiB,EACjBC,QAAgB,EAChBC,MAAc,EACgB;IAC9B,IAAI,CAAC/C,OAAO,IAAI,CAACD,UAAU,EACzB,MAAM,IAAIiD,wBAAW,CAAC;MAAE7B,OAAO,EAAE;IAAiC,CAAC,CAAC;IACtE,MAAM8B,IAAI,GAAGJ,SAAS,GAAGC,QAAQ,CAAC,CAAC;IACnC,OAAO,IAAAF,4CAAqB,EAAC5C,OAAO,EAAED,UAAU,EAAEkD,IAAI,EAAEF,MAAM,CAAC;EACjE,CAAC;EAED;AACF;AACA;EACEG,eAAeA,CACbL,SAAiB,EACjBC,QAAgB,EAChBC,MAAc,EACgB;IAC9B,MAAMI,UAAU,GAAGjD,WAAW,CAAC0C,qBAAqB,CAClDC,SAAS,EACTC,QAAQ,EACRC,MACF,CAAC;IACD,OAAOT,MAAM,CAACC,IAAI,CAACY,UAAU,CAAC,CAACC,MAAM,CAAC,CAACD,UAAU,EAAEE,IAAI,KAAK;MAC1D,MAAMC,QAAQ,GAAGD,IAA0C;MAC3DF,UAAU,CAACG,QAAQ,CAAC,GAAGH,UAAU,CAACG,QAAQ,CAAC,CACxCC,OAAO,CAAC,aAAa,EAAEV,SAAS,CAAC,CACjCU,OAAO,CAAC,YAAY,EAAET,QAAQ,IAAI,EAAE,CAAC,CACrCU,IAAI,CAAC,CAAC;MACT,OAAOL,UAAU;IACnB,CAAC,EAAEA,UAAU,CAAC;EAChB,CAAC;EAED;EACAM,aAAaA,CAACV,MAAc,EAAsC;IAChE,IAAI,CAAChD,UAAU,EACb,MAAM,IAAIiD,wBAAW,CAAC;MAAE7B,OAAO,EAAE;IAAiC,CAAC,CAAC;IACtE,OAAOpB,UAAU,CAACgD,MAAM,CAAC;EAC3B,CAAC;EAED;EACAW,aAAaA,CAACX,MAAc,EAAW;IACrC,IAAI,CAAChD,UAAU,EACb,MAAM,IAAIiD,wBAAW,CAAC;MAAE7B,OAAO,EAAE;IAAiC,CAAC,CAAC;IACtE,OAAOpB,UAAU,CAACgD,MAAM,CAAC,KAAKY,SAAS;EACzC,CAAC;EAED;EACAC,QAAQA,CAAA,EAAS;IACf,IAAI3D,QAAQ,EAAE4D,YAAY,CAAC5D,QAAQ,CAAC;EACtC;AACF,CAAC","ignoreList":[]}