@scpxl/nodejs-framework 1.0.13

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 (411) hide show
  1. package/README.md +195 -0
  2. package/dist/api-requester/api-requester.d.ts +11 -0
  3. package/dist/api-requester/api-requester.d.ts.map +1 -0
  4. package/dist/api-requester/api-requester.js +59 -0
  5. package/dist/api-requester/api-requester.js.map +7 -0
  6. package/dist/api-requester/index.d.ts +2 -0
  7. package/dist/api-requester/index.d.ts.map +1 -0
  8. package/dist/api-requester/index.js +5 -0
  9. package/dist/api-requester/index.js.map +7 -0
  10. package/dist/application/base-application.d.ts +110 -0
  11. package/dist/application/base-application.d.ts.map +1 -0
  12. package/dist/application/base-application.interface.d.ts +161 -0
  13. package/dist/application/base-application.interface.d.ts.map +1 -0
  14. package/dist/application/base-application.interface.js +1 -0
  15. package/dist/application/base-application.interface.js.map +7 -0
  16. package/dist/application/base-application.js +350 -0
  17. package/dist/application/base-application.js.map +7 -0
  18. package/dist/application/command-application.d.ts +18 -0
  19. package/dist/application/command-application.d.ts.map +1 -0
  20. package/dist/application/command-application.interface.d.ts +26 -0
  21. package/dist/application/command-application.interface.d.ts.map +1 -0
  22. package/dist/application/command-application.interface.js +1 -0
  23. package/dist/application/command-application.interface.js.map +7 -0
  24. package/dist/application/command-application.js +110 -0
  25. package/dist/application/command-application.js.map +7 -0
  26. package/dist/application/index.d.ts +5 -0
  27. package/dist/application/index.d.ts.map +1 -0
  28. package/dist/application/index.js +7 -0
  29. package/dist/application/index.js.map +7 -0
  30. package/dist/application/web-application.d.ts +43 -0
  31. package/dist/application/web-application.d.ts.map +1 -0
  32. package/dist/application/web-application.interface.d.ts +21 -0
  33. package/dist/application/web-application.interface.d.ts.map +1 -0
  34. package/dist/application/web-application.interface.js +1 -0
  35. package/dist/application/web-application.interface.js.map +7 -0
  36. package/dist/application/web-application.js +176 -0
  37. package/dist/application/web-application.js.map +7 -0
  38. package/dist/auth/index.d.ts +2 -0
  39. package/dist/auth/index.d.ts.map +1 -0
  40. package/dist/auth/index.js +5 -0
  41. package/dist/auth/index.js.map +7 -0
  42. package/dist/auth/jwt.d.ts +25 -0
  43. package/dist/auth/jwt.d.ts.map +1 -0
  44. package/dist/auth/jwt.js +51 -0
  45. package/dist/auth/jwt.js.map +7 -0
  46. package/dist/cache/index.d.ts +2 -0
  47. package/dist/cache/index.d.ts.map +1 -0
  48. package/dist/cache/index.js +5 -0
  49. package/dist/cache/index.js.map +7 -0
  50. package/dist/cache/manager.d.ts +26 -0
  51. package/dist/cache/manager.d.ts.map +1 -0
  52. package/dist/cache/manager.js +54 -0
  53. package/dist/cache/manager.js.map +7 -0
  54. package/dist/cluster/cluster-manager.d.ts +15 -0
  55. package/dist/cluster/cluster-manager.d.ts.map +1 -0
  56. package/dist/cluster/cluster-manager.interface.d.ts +23 -0
  57. package/dist/cluster/cluster-manager.interface.d.ts.map +1 -0
  58. package/dist/cluster/cluster-manager.interface.js +1 -0
  59. package/dist/cluster/cluster-manager.interface.js.map +7 -0
  60. package/dist/cluster/cluster-manager.js +106 -0
  61. package/dist/cluster/cluster-manager.js.map +7 -0
  62. package/dist/cluster/index.d.ts +2 -0
  63. package/dist/cluster/index.d.ts.map +1 -0
  64. package/dist/cluster/index.js +13 -0
  65. package/dist/cluster/index.js.map +7 -0
  66. package/dist/command/command-manager.d.ts +19 -0
  67. package/dist/command/command-manager.d.ts.map +1 -0
  68. package/dist/command/command-manager.js +42 -0
  69. package/dist/command/command-manager.js.map +7 -0
  70. package/dist/command/command.d.ts +27 -0
  71. package/dist/command/command.d.ts.map +1 -0
  72. package/dist/command/command.interface.d.ts +11 -0
  73. package/dist/command/command.interface.d.ts.map +1 -0
  74. package/dist/command/command.interface.js +1 -0
  75. package/dist/command/command.interface.js.map +7 -0
  76. package/dist/command/command.js +37 -0
  77. package/dist/command/command.js.map +7 -0
  78. package/dist/command/index.d.ts +3 -0
  79. package/dist/command/index.d.ts.map +1 -0
  80. package/dist/command/index.js +7 -0
  81. package/dist/command/index.js.map +7 -0
  82. package/dist/database/dynamic-entity-form-decorators.d.ts +31 -0
  83. package/dist/database/dynamic-entity-form-decorators.d.ts.map +1 -0
  84. package/dist/database/dynamic-entity-form-decorators.js +62 -0
  85. package/dist/database/dynamic-entity-form-decorators.js.map +7 -0
  86. package/dist/database/dynamic-entity.d.ts +15 -0
  87. package/dist/database/dynamic-entity.d.ts.map +1 -0
  88. package/dist/database/dynamic-entity.js +42 -0
  89. package/dist/database/dynamic-entity.js.map +7 -0
  90. package/dist/database/index.d.ts +5 -0
  91. package/dist/database/index.d.ts.map +1 -0
  92. package/dist/database/index.js +12 -0
  93. package/dist/database/index.js.map +7 -0
  94. package/dist/database/instance.d.ts +36 -0
  95. package/dist/database/instance.d.ts.map +1 -0
  96. package/dist/database/instance.interface.d.ts +5 -0
  97. package/dist/database/instance.interface.d.ts.map +1 -0
  98. package/dist/database/instance.interface.js +1 -0
  99. package/dist/database/instance.interface.js.map +7 -0
  100. package/dist/database/instance.js +57 -0
  101. package/dist/database/instance.js.map +7 -0
  102. package/dist/database/manager.d.ts +27 -0
  103. package/dist/database/manager.d.ts.map +1 -0
  104. package/dist/database/manager.interface.d.ts +18 -0
  105. package/dist/database/manager.interface.d.ts.map +1 -0
  106. package/dist/database/manager.interface.js +1 -0
  107. package/dist/database/manager.interface.js.map +7 -0
  108. package/dist/database/manager.js +49 -0
  109. package/dist/database/manager.js.map +7 -0
  110. package/dist/event/controller/base.d.ts +23 -0
  111. package/dist/event/controller/base.d.ts.map +1 -0
  112. package/dist/event/controller/base.interface.d.ts +11 -0
  113. package/dist/event/controller/base.interface.d.ts.map +1 -0
  114. package/dist/event/controller/base.interface.js +1 -0
  115. package/dist/event/controller/base.interface.js.map +7 -0
  116. package/dist/event/controller/base.js +51 -0
  117. package/dist/event/controller/base.js.map +7 -0
  118. package/dist/event/index.d.ts +5 -0
  119. package/dist/event/index.d.ts.map +1 -0
  120. package/dist/event/index.js +9 -0
  121. package/dist/event/index.js.map +7 -0
  122. package/dist/event/manager.d.ts +21 -0
  123. package/dist/event/manager.d.ts.map +1 -0
  124. package/dist/event/manager.interface.d.ts +134 -0
  125. package/dist/event/manager.interface.d.ts.map +1 -0
  126. package/dist/event/manager.interface.js +1 -0
  127. package/dist/event/manager.interface.js.map +7 -0
  128. package/dist/event/manager.js +134 -0
  129. package/dist/event/manager.js.map +7 -0
  130. package/dist/index.d.ts +18 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +23 -0
  133. package/dist/index.js.map +7 -0
  134. package/dist/logger/index.d.ts +2 -0
  135. package/dist/logger/index.d.ts.map +1 -0
  136. package/dist/logger/index.js +5 -0
  137. package/dist/logger/index.js.map +7 -0
  138. package/dist/logger/logger.d.ts +51 -0
  139. package/dist/logger/logger.d.ts.map +1 -0
  140. package/dist/logger/logger.interface.d.ts +2 -0
  141. package/dist/logger/logger.interface.d.ts.map +1 -0
  142. package/dist/logger/logger.interface.js +1 -0
  143. package/dist/logger/logger.interface.js.map +7 -0
  144. package/dist/logger/logger.js +168 -0
  145. package/dist/logger/logger.js.map +7 -0
  146. package/dist/performance/cache-performance.d.ts +58 -0
  147. package/dist/performance/cache-performance.d.ts.map +1 -0
  148. package/dist/performance/cache-performance.js +199 -0
  149. package/dist/performance/cache-performance.js.map +7 -0
  150. package/dist/performance/database-performance.d.ts +40 -0
  151. package/dist/performance/database-performance.d.ts.map +1 -0
  152. package/dist/performance/database-performance.js +132 -0
  153. package/dist/performance/database-performance.js.map +7 -0
  154. package/dist/performance/index.d.ts +7 -0
  155. package/dist/performance/index.d.ts.map +1 -0
  156. package/dist/performance/index.js +7 -0
  157. package/dist/performance/index.js.map +7 -0
  158. package/dist/performance/performance-monitor.d.ts +68 -0
  159. package/dist/performance/performance-monitor.d.ts.map +1 -0
  160. package/dist/performance/performance-monitor.js +270 -0
  161. package/dist/performance/performance-monitor.js.map +7 -0
  162. package/dist/performance/queue-performance.d.ts +46 -0
  163. package/dist/performance/queue-performance.d.ts.map +1 -0
  164. package/dist/performance/queue-performance.js +144 -0
  165. package/dist/performance/queue-performance.js.map +7 -0
  166. package/dist/performance/webserver-performance.d.ts +69 -0
  167. package/dist/performance/webserver-performance.d.ts.map +1 -0
  168. package/dist/performance/webserver-performance.js +164 -0
  169. package/dist/performance/webserver-performance.js.map +7 -0
  170. package/dist/performance/websocket-performance.d.ts +44 -0
  171. package/dist/performance/websocket-performance.d.ts.map +1 -0
  172. package/dist/performance/websocket-performance.js +139 -0
  173. package/dist/performance/websocket-performance.js.map +7 -0
  174. package/dist/queue/index.d.ts +6 -0
  175. package/dist/queue/index.d.ts.map +1 -0
  176. package/dist/queue/index.interface.d.ts +10 -0
  177. package/dist/queue/index.interface.d.ts.map +1 -0
  178. package/dist/queue/index.interface.js +1 -0
  179. package/dist/queue/index.interface.js.map +7 -0
  180. package/dist/queue/index.js +7 -0
  181. package/dist/queue/index.js.map +7 -0
  182. package/dist/queue/job.interface.d.ts +42 -0
  183. package/dist/queue/job.interface.d.ts.map +1 -0
  184. package/dist/queue/job.interface.js +1 -0
  185. package/dist/queue/job.interface.js.map +7 -0
  186. package/dist/queue/manager.d.ts +36 -0
  187. package/dist/queue/manager.d.ts.map +1 -0
  188. package/dist/queue/manager.interface.d.ts +18 -0
  189. package/dist/queue/manager.interface.d.ts.map +1 -0
  190. package/dist/queue/manager.interface.js +1 -0
  191. package/dist/queue/manager.interface.js.map +7 -0
  192. package/dist/queue/manager.js +244 -0
  193. package/dist/queue/manager.js.map +7 -0
  194. package/dist/queue/processor/base.d.ts +28 -0
  195. package/dist/queue/processor/base.d.ts.map +1 -0
  196. package/dist/queue/processor/base.js +46 -0
  197. package/dist/queue/processor/base.js.map +7 -0
  198. package/dist/queue/processor/processor.interface.d.ts +15 -0
  199. package/dist/queue/processor/processor.interface.d.ts.map +1 -0
  200. package/dist/queue/processor/processor.interface.js +1 -0
  201. package/dist/queue/processor/processor.interface.js.map +7 -0
  202. package/dist/queue/worker.d.ts +14 -0
  203. package/dist/queue/worker.d.ts.map +1 -0
  204. package/dist/queue/worker.interface.d.ts +13 -0
  205. package/dist/queue/worker.interface.d.ts.map +1 -0
  206. package/dist/queue/worker.interface.js +1 -0
  207. package/dist/queue/worker.interface.js.map +7 -0
  208. package/dist/queue/worker.js +72 -0
  209. package/dist/queue/worker.js.map +7 -0
  210. package/dist/redis/index.d.ts +3 -0
  211. package/dist/redis/index.d.ts.map +1 -0
  212. package/dist/redis/index.js +7 -0
  213. package/dist/redis/index.js.map +7 -0
  214. package/dist/redis/instance.d.ts +32 -0
  215. package/dist/redis/instance.d.ts.map +1 -0
  216. package/dist/redis/instance.interface.d.ts +9 -0
  217. package/dist/redis/instance.interface.d.ts.map +1 -0
  218. package/dist/redis/instance.interface.js +1 -0
  219. package/dist/redis/instance.interface.js.map +7 -0
  220. package/dist/redis/instance.js +92 -0
  221. package/dist/redis/instance.js.map +7 -0
  222. package/dist/redis/manager.d.ts +15 -0
  223. package/dist/redis/manager.d.ts.map +1 -0
  224. package/dist/redis/manager.interface.d.ts +8 -0
  225. package/dist/redis/manager.interface.d.ts.map +1 -0
  226. package/dist/redis/manager.interface.js +1 -0
  227. package/dist/redis/manager.interface.js.map +7 -0
  228. package/dist/redis/manager.js +65 -0
  229. package/dist/redis/manager.js.map +7 -0
  230. package/dist/services/aws/index.d.ts +2 -0
  231. package/dist/services/aws/index.d.ts.map +1 -0
  232. package/dist/services/aws/index.js +5 -0
  233. package/dist/services/aws/index.js.map +7 -0
  234. package/dist/services/aws/s3.d.ts +54 -0
  235. package/dist/services/aws/s3.d.ts.map +1 -0
  236. package/dist/services/aws/s3.interface.d.ts +14 -0
  237. package/dist/services/aws/s3.interface.d.ts.map +1 -0
  238. package/dist/services/aws/s3.interface.js +1 -0
  239. package/dist/services/aws/s3.interface.js.map +7 -0
  240. package/dist/services/aws/s3.js +236 -0
  241. package/dist/services/aws/s3.js.map +7 -0
  242. package/dist/services/index.d.ts +2 -0
  243. package/dist/services/index.d.ts.map +1 -0
  244. package/dist/services/index.js +2 -0
  245. package/dist/services/index.js.map +7 -0
  246. package/dist/util/file.d.ts +45 -0
  247. package/dist/util/file.d.ts.map +1 -0
  248. package/dist/util/file.js +105 -0
  249. package/dist/util/file.js.map +7 -0
  250. package/dist/util/helper.d.ts +37 -0
  251. package/dist/util/helper.d.ts.map +1 -0
  252. package/dist/util/helper.js +73 -0
  253. package/dist/util/helper.js.map +7 -0
  254. package/dist/util/image.d.ts +12 -0
  255. package/dist/util/image.d.ts.map +1 -0
  256. package/dist/util/image.js +35 -0
  257. package/dist/util/image.js.map +7 -0
  258. package/dist/util/index.d.ts +10 -0
  259. package/dist/util/index.d.ts.map +1 -0
  260. package/dist/util/index.js +21 -0
  261. package/dist/util/index.js.map +7 -0
  262. package/dist/util/loader.d.ts +19 -0
  263. package/dist/util/loader.d.ts.map +1 -0
  264. package/dist/util/loader.js +84 -0
  265. package/dist/util/loader.js.map +7 -0
  266. package/dist/util/num.d.ts +13 -0
  267. package/dist/util/num.d.ts.map +1 -0
  268. package/dist/util/num.js +16 -0
  269. package/dist/util/num.js.map +7 -0
  270. package/dist/util/os.d.ts +6 -0
  271. package/dist/util/os.d.ts.map +1 -0
  272. package/dist/util/os.js +32 -0
  273. package/dist/util/os.js.map +7 -0
  274. package/dist/util/str.d.ts +39 -0
  275. package/dist/util/str.d.ts.map +1 -0
  276. package/dist/util/str.js +34 -0
  277. package/dist/util/str.js.map +7 -0
  278. package/dist/util/time.d.ts +13 -0
  279. package/dist/util/time.d.ts.map +1 -0
  280. package/dist/util/time.interface.d.ts +12 -0
  281. package/dist/util/time.interface.d.ts.map +1 -0
  282. package/dist/util/time.interface.js +1 -0
  283. package/dist/util/time.interface.js.map +7 -0
  284. package/dist/util/time.js +90 -0
  285. package/dist/util/time.js.map +7 -0
  286. package/dist/util/url.d.ts +7 -0
  287. package/dist/util/url.d.ts.map +1 -0
  288. package/dist/util/url.js +12 -0
  289. package/dist/util/url.js.map +7 -0
  290. package/dist/webserver/controller/auth-middleware.d.ts +21 -0
  291. package/dist/webserver/controller/auth-middleware.d.ts.map +1 -0
  292. package/dist/webserver/controller/auth-middleware.js +33 -0
  293. package/dist/webserver/controller/auth-middleware.js.map +7 -0
  294. package/dist/webserver/controller/base.d.ts +39 -0
  295. package/dist/webserver/controller/base.d.ts.map +1 -0
  296. package/dist/webserver/controller/base.interface.d.ts +45 -0
  297. package/dist/webserver/controller/base.interface.d.ts.map +1 -0
  298. package/dist/webserver/controller/base.interface.js +1 -0
  299. package/dist/webserver/controller/base.interface.js.map +7 -0
  300. package/dist/webserver/controller/base.js +188 -0
  301. package/dist/webserver/controller/base.js.map +7 -0
  302. package/dist/webserver/controller/entity.d.ts +94 -0
  303. package/dist/webserver/controller/entity.d.ts.map +1 -0
  304. package/dist/webserver/controller/entity.js +361 -0
  305. package/dist/webserver/controller/entity.js.map +7 -0
  306. package/dist/webserver/controller/example-auth.d.ts +12 -0
  307. package/dist/webserver/controller/example-auth.d.ts.map +1 -0
  308. package/dist/webserver/controller/example-auth.js +53 -0
  309. package/dist/webserver/controller/example-auth.js.map +7 -0
  310. package/dist/webserver/controller/health.d.ts +8 -0
  311. package/dist/webserver/controller/health.d.ts.map +1 -0
  312. package/dist/webserver/controller/health.js +50 -0
  313. package/dist/webserver/controller/health.js.map +7 -0
  314. package/dist/webserver/index.d.ts +12 -0
  315. package/dist/webserver/index.d.ts.map +1 -0
  316. package/dist/webserver/index.js +19 -0
  317. package/dist/webserver/index.js.map +7 -0
  318. package/dist/webserver/util.d.ts +10 -0
  319. package/dist/webserver/util.d.ts.map +1 -0
  320. package/dist/webserver/util.js +63 -0
  321. package/dist/webserver/util.js.map +7 -0
  322. package/dist/webserver/webserver.d.ts +65 -0
  323. package/dist/webserver/webserver.d.ts.map +1 -0
  324. package/dist/webserver/webserver.interface.d.ts +118 -0
  325. package/dist/webserver/webserver.interface.d.ts.map +1 -0
  326. package/dist/webserver/webserver.interface.js +9 -0
  327. package/dist/webserver/webserver.interface.js.map +7 -0
  328. package/dist/webserver/webserver.js +347 -0
  329. package/dist/webserver/webserver.js.map +7 -0
  330. package/dist/websocket/controller/client/base.d.ts +12 -0
  331. package/dist/websocket/controller/client/base.d.ts.map +1 -0
  332. package/dist/websocket/controller/client/base.interface.d.ts +12 -0
  333. package/dist/websocket/controller/client/base.interface.d.ts.map +1 -0
  334. package/dist/websocket/controller/client/base.interface.js +1 -0
  335. package/dist/websocket/controller/client/base.interface.js.map +7 -0
  336. package/dist/websocket/controller/client/base.js +26 -0
  337. package/dist/websocket/controller/client/base.js.map +7 -0
  338. package/dist/websocket/controller/server/base.d.ts +13 -0
  339. package/dist/websocket/controller/server/base.d.ts.map +1 -0
  340. package/dist/websocket/controller/server/base.interface.d.ts +13 -0
  341. package/dist/websocket/controller/server/base.interface.d.ts.map +1 -0
  342. package/dist/websocket/controller/server/base.interface.js +1 -0
  343. package/dist/websocket/controller/server/base.interface.js.map +7 -0
  344. package/dist/websocket/controller/server/base.js +26 -0
  345. package/dist/websocket/controller/server/base.js.map +7 -0
  346. package/dist/websocket/controllers/client/system.d.ts +6 -0
  347. package/dist/websocket/controllers/client/system.d.ts.map +1 -0
  348. package/dist/websocket/controllers/client/system.js +14 -0
  349. package/dist/websocket/controllers/client/system.js.map +7 -0
  350. package/dist/websocket/controllers/server/system.d.ts +7 -0
  351. package/dist/websocket/controllers/server/system.d.ts.map +1 -0
  352. package/dist/websocket/controllers/server/system.js +87 -0
  353. package/dist/websocket/controllers/server/system.js.map +7 -0
  354. package/dist/websocket/index.d.ts +7 -0
  355. package/dist/websocket/index.d.ts.map +1 -0
  356. package/dist/websocket/index.js +11 -0
  357. package/dist/websocket/index.js.map +7 -0
  358. package/dist/websocket/routes/client/system.d.ts +3 -0
  359. package/dist/websocket/routes/client/system.d.ts.map +1 -0
  360. package/dist/websocket/routes/client/system.js +11 -0
  361. package/dist/websocket/routes/client/system.js.map +7 -0
  362. package/dist/websocket/routes/server/system.d.ts +3 -0
  363. package/dist/websocket/routes/server/system.d.ts.map +1 -0
  364. package/dist/websocket/routes/server/system.js +16 -0
  365. package/dist/websocket/routes/server/system.js.map +7 -0
  366. package/dist/websocket/utils.d.ts +9 -0
  367. package/dist/websocket/utils.d.ts.map +1 -0
  368. package/dist/websocket/utils.js +39 -0
  369. package/dist/websocket/utils.js.map +7 -0
  370. package/dist/websocket/websocket-base.d.ts +15 -0
  371. package/dist/websocket/websocket-base.d.ts.map +1 -0
  372. package/dist/websocket/websocket-base.js +104 -0
  373. package/dist/websocket/websocket-base.js.map +7 -0
  374. package/dist/websocket/websocket-client-manager.d.ts +53 -0
  375. package/dist/websocket/websocket-client-manager.d.ts.map +1 -0
  376. package/dist/websocket/websocket-client-manager.interface.d.ts +8 -0
  377. package/dist/websocket/websocket-client-manager.interface.d.ts.map +1 -0
  378. package/dist/websocket/websocket-client-manager.interface.js +1 -0
  379. package/dist/websocket/websocket-client-manager.interface.js.map +7 -0
  380. package/dist/websocket/websocket-client-manager.js +225 -0
  381. package/dist/websocket/websocket-client-manager.js.map +7 -0
  382. package/dist/websocket/websocket-client.d.ts +35 -0
  383. package/dist/websocket/websocket-client.d.ts.map +1 -0
  384. package/dist/websocket/websocket-client.interface.d.ts +14 -0
  385. package/dist/websocket/websocket-client.interface.d.ts.map +1 -0
  386. package/dist/websocket/websocket-client.interface.js +1 -0
  387. package/dist/websocket/websocket-client.interface.js.map +7 -0
  388. package/dist/websocket/websocket-client.js +158 -0
  389. package/dist/websocket/websocket-client.js.map +7 -0
  390. package/dist/websocket/websocket-room-manager.d.ts +32 -0
  391. package/dist/websocket/websocket-room-manager.d.ts.map +1 -0
  392. package/dist/websocket/websocket-room-manager.js +130 -0
  393. package/dist/websocket/websocket-room-manager.js.map +7 -0
  394. package/dist/websocket/websocket-server.d.ts +92 -0
  395. package/dist/websocket/websocket-server.d.ts.map +1 -0
  396. package/dist/websocket/websocket-server.interface.d.ts +16 -0
  397. package/dist/websocket/websocket-server.interface.d.ts.map +1 -0
  398. package/dist/websocket/websocket-server.interface.js +1 -0
  399. package/dist/websocket/websocket-server.interface.js.map +7 -0
  400. package/dist/websocket/websocket-server.js +686 -0
  401. package/dist/websocket/websocket-server.js.map +7 -0
  402. package/dist/websocket/websocket-service.d.ts +44 -0
  403. package/dist/websocket/websocket-service.d.ts.map +1 -0
  404. package/dist/websocket/websocket-service.js +99 -0
  405. package/dist/websocket/websocket-service.js.map +7 -0
  406. package/dist/websocket/websocket.interface.d.ts +119 -0
  407. package/dist/websocket/websocket.interface.d.ts.map +1 -0
  408. package/dist/websocket/websocket.interface.js +18 -0
  409. package/dist/websocket/websocket.interface.js.map +7 -0
  410. package/package.json +159 -0
  411. package/pxl.js +4 -0
@@ -0,0 +1,92 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { Logger } from "../logger/index.js";
4
+ class RedisInstance {
5
+ static {
6
+ __name(this, "RedisInstance");
7
+ }
8
+ redisManager;
9
+ client;
10
+ publisherClient;
11
+ subscriberClient;
12
+ constructor({ redisManager, client, publisherClient, subscriberClient }) {
13
+ this.redisManager = redisManager;
14
+ this.client = client;
15
+ this.publisherClient = publisherClient;
16
+ this.subscriberClient = subscriberClient;
17
+ }
18
+ async disconnect() {
19
+ try {
20
+ this.subscriberClient.disconnect();
21
+ } catch (error) {
22
+ Logger.error({ error, message: "Could not disconnect Redis subscriber client" });
23
+ }
24
+ try {
25
+ this.publisherClient.disconnect();
26
+ } catch (error) {
27
+ Logger.error({ error, message: "Could not disconnect Redis publisherClient" });
28
+ }
29
+ try {
30
+ this.client.disconnect();
31
+ } catch (error) {
32
+ Logger.error({ error, message: "Could not disconnect Redis client" });
33
+ }
34
+ this.redisManager.log("Disconnected");
35
+ }
36
+ isConnected() {
37
+ return new Promise((resolve, reject) => {
38
+ if (this.client) {
39
+ this.client.ping((error) => {
40
+ if (error) {
41
+ reject(error);
42
+ } else {
43
+ resolve(true);
44
+ }
45
+ });
46
+ } else {
47
+ resolve(false);
48
+ }
49
+ });
50
+ }
51
+ /**
52
+ * Sets a value in the cache with an optional expiration time.
53
+ *
54
+ * @param key - The key to set in the cache.
55
+ * @param value - The value to set in the cache.
56
+ * @param expiration - The expiration time in seconds (optional).
57
+ * @throws Error if the value type is not supported.
58
+ * @returns A Promise that resolves when the value is set in the cache.
59
+ */
60
+ async setCache({
61
+ key,
62
+ value,
63
+ expiration
64
+ }) {
65
+ let formattedValue;
66
+ if (typeof value === "object") {
67
+ formattedValue = JSON.stringify(value);
68
+ } else if (typeof value === "number") {
69
+ formattedValue = value;
70
+ } else if (typeof value === "string") {
71
+ formattedValue = value;
72
+ } else {
73
+ throw new Error("Unsupported value type");
74
+ }
75
+ if (expiration) {
76
+ await this.client.set(key, formattedValue, "EX", expiration);
77
+ } else {
78
+ await this.client.set(key, formattedValue);
79
+ }
80
+ }
81
+ async getCache({ key }) {
82
+ const cacheValue = this.client.get(key);
83
+ return cacheValue;
84
+ }
85
+ async deleteCache({ key }) {
86
+ await this.client.del(key);
87
+ }
88
+ }
89
+ export {
90
+ RedisInstance as default
91
+ };
92
+ //# sourceMappingURL=instance.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/redis/instance.ts"],
4
+ "sourcesContent": ["import type { Redis } from 'ioredis';\nimport { Logger } from '../logger/index.js';\nimport type { RedisInstanceProps } from './instance.interface.js';\nimport type RedisManager from './manager.js';\n\nexport default class RedisInstance {\n private redisManager: RedisManager;\n\n public client: Redis;\n public publisherClient: Redis;\n public subscriberClient: Redis;\n\n constructor({ redisManager, client, publisherClient, subscriberClient }: RedisInstanceProps) {\n this.redisManager = redisManager;\n\n this.client = client;\n this.publisherClient = publisherClient;\n this.subscriberClient = subscriberClient;\n }\n\n public async disconnect(): Promise<void> {\n try {\n this.subscriberClient.disconnect();\n } catch (error) {\n Logger.error({ error, message: 'Could not disconnect Redis subscriber client' });\n }\n\n try {\n this.publisherClient.disconnect();\n } catch (error) {\n Logger.error({ error, message: 'Could not disconnect Redis publisherClient' });\n }\n\n try {\n this.client.disconnect();\n } catch (error) {\n Logger.error({ error, message: 'Could not disconnect Redis client' });\n }\n\n this.redisManager.log('Disconnected');\n }\n\n public isConnected(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n if (this.client) {\n this.client.ping(error => {\n if (error) {\n reject(error);\n } else {\n resolve(true);\n }\n });\n } else {\n resolve(false);\n }\n });\n }\n\n /**\n * Sets a value in the cache with an optional expiration time.\n *\n * @param key - The key to set in the cache.\n * @param value - The value to set in the cache.\n * @param expiration - The expiration time in seconds (optional).\n * @throws Error if the value type is not supported.\n * @returns A Promise that resolves when the value is set in the cache.\n */\n public async setCache({\n key,\n value,\n expiration,\n }: {\n key: string;\n value: unknown;\n expiration?: number;\n }): Promise<void> {\n let formattedValue: string | number | Buffer;\n\n if (typeof value === 'object') {\n formattedValue = JSON.stringify(value);\n } else if (typeof value === 'number') {\n formattedValue = value;\n } else if (typeof value === 'string') {\n formattedValue = value;\n } else {\n throw new Error('Unsupported value type');\n }\n\n if (expiration) {\n await this.client.set(key, formattedValue, 'EX', expiration);\n } else {\n await this.client.set(key, formattedValue);\n }\n }\n\n public async getCache({ key }: { key: string }): Promise<string | null> {\n const cacheValue = this.client.get(key);\n\n return cacheValue;\n }\n\n public async deleteCache({ key }: { key: string }): Promise<void> {\n await this.client.del(key);\n }\n}\n"],
5
+ "mappings": ";;AACA,SAAS,cAAc;AAIvB,MAAO,cAA4B;AAAA,EALnC,OAKmC;AAAA;AAAA;AAAA,EACzB;AAAA,EAED;AAAA,EACA;AAAA,EACA;AAAA,EAEP,YAAY,EAAE,cAAc,QAAQ,iBAAiB,iBAAiB,GAAuB;AAC3F,SAAK,eAAe;AAEpB,SAAK,SAAS;AACd,SAAK,kBAAkB;AACvB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAa,aAA4B;AACvC,QAAI;AACF,WAAK,iBAAiB,WAAW;AAAA,IACnC,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,+CAA+C,CAAC;AAAA,IACjF;AAEA,QAAI;AACF,WAAK,gBAAgB,WAAW;AAAA,IAClC,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,6CAA6C,CAAC;AAAA,IAC/E;AAEA,QAAI;AACF,WAAK,OAAO,WAAW;AAAA,IACzB,SAAS,OAAO;AACd,aAAO,MAAM,EAAE,OAAO,SAAS,oCAAoC,CAAC;AAAA,IACtE;AAEA,SAAK,aAAa,IAAI,cAAc;AAAA,EACtC;AAAA,EAEO,cAAgC;AACrC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,KAAK,QAAQ;AACf,aAAK,OAAO,KAAK,WAAS;AACxB,cAAI,OAAO;AACT,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,oBAAQ,IAAI;AAAA,UACd;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,SAAS;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIkB;AAChB,QAAI;AAEJ,QAAI,OAAO,UAAU,UAAU;AAC7B,uBAAiB,KAAK,UAAU,KAAK;AAAA,IACvC,WAAW,OAAO,UAAU,UAAU;AACpC,uBAAiB;AAAA,IACnB,WAAW,OAAO,UAAU,UAAU;AACpC,uBAAiB;AAAA,IACnB,OAAO;AACL,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAEA,QAAI,YAAY;AACd,YAAM,KAAK,OAAO,IAAI,KAAK,gBAAgB,MAAM,UAAU;AAAA,IAC7D,OAAO;AACL,YAAM,KAAK,OAAO,IAAI,KAAK,cAAc;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,EAAE,IAAI,GAA4C;AACtE,UAAM,aAAa,KAAK,OAAO,IAAI,GAAG;AAEtC,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,YAAY,EAAE,IAAI,GAAmC;AAChE,UAAM,KAAK,OAAO,IAAI,GAAG;AAAA,EAC3B;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,15 @@
1
+ import type { RedisManagerConfig as RedisManagerOptions } from './manager.interface.js';
2
+ import RedisInstance from './instance.js';
3
+ export default class RedisManager {
4
+ private logger;
5
+ private options;
6
+ instances: RedisInstance[];
7
+ constructor(config: RedisManagerOptions);
8
+ connect(): Promise<RedisInstance>;
9
+ disconnect(): Promise<void>;
10
+ /**
11
+ * Log Redis message
12
+ */
13
+ log(message: string, meta?: Record<string, unknown>): void;
14
+ }
15
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/redis/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,aAAa,MAAM,eAAe,CAAC;AAG1C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAyB;IAEvC,OAAO,CAAC,OAAO,CAAsB;IAE9B,SAAS,EAAE,aAAa,EAAE,CAAM;gBAE3B,MAAM,EAAE,mBAAmB;IAIhC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IA4C3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlE"}
@@ -0,0 +1,8 @@
1
+ import type { ApplicationConfig } from '../application/base-application.interface.js';
2
+ export interface RedisManagerConfig {
3
+ applicationConfig: ApplicationConfig;
4
+ host: string;
5
+ port: number;
6
+ password?: string;
7
+ }
8
+ //# sourceMappingURL=manager.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.interface.d.ts","sourceRoot":"","sources":["../../src/redis/manager.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEtF,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=manager.interface.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,65 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { Redis } from "ioredis";
4
+ import RedisInstance from "./instance.js";
5
+ import { Logger } from "../logger/index.js";
6
+ class RedisManager {
7
+ static {
8
+ __name(this, "RedisManager");
9
+ }
10
+ logger = Logger;
11
+ options;
12
+ instances = [];
13
+ constructor(config) {
14
+ this.options = config;
15
+ }
16
+ connect() {
17
+ return new Promise((resolve, reject) => {
18
+ const redisOptions = {
19
+ host: this.options.host,
20
+ port: this.options.port,
21
+ password: this.options.password,
22
+ maxRetriesPerRequest: null
23
+ // Needed for bullmq
24
+ };
25
+ const client = new Redis(redisOptions);
26
+ const publisherClient = new Redis(redisOptions);
27
+ const subscriberClient = new Redis(redisOptions);
28
+ const handleConnect = /* @__PURE__ */ __name(() => {
29
+ const redisInstance = new RedisInstance({
30
+ redisManager: this,
31
+ client,
32
+ publisherClient,
33
+ subscriberClient
34
+ });
35
+ this.instances.push(redisInstance);
36
+ if (this.options.applicationConfig.log?.startUp) {
37
+ this.log("Connected", {
38
+ Host: this.options.host,
39
+ Port: this.options.port
40
+ });
41
+ }
42
+ resolve(redisInstance);
43
+ }, "handleConnect");
44
+ const handleError = /* @__PURE__ */ __name((error) => {
45
+ Logger.error({ error });
46
+ reject(error);
47
+ }, "handleError");
48
+ client.on("connect", handleConnect);
49
+ client.on("error", handleError);
50
+ });
51
+ }
52
+ async disconnect() {
53
+ await Promise.all(this.instances.map((instance) => instance.disconnect()));
54
+ }
55
+ /**
56
+ * Log Redis message
57
+ */
58
+ log(message, meta) {
59
+ this.logger.custom({ level: "redis", message, meta });
60
+ }
61
+ }
62
+ export {
63
+ RedisManager as default
64
+ };
65
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/redis/manager.ts"],
4
+ "sourcesContent": ["import { Redis, type RedisOptions } from 'ioredis';\nimport type { RedisManagerConfig as RedisManagerOptions } from './manager.interface.js';\nimport RedisInstance from './instance.js';\nimport { Logger } from '../logger/index.js';\n\nexport default class RedisManager {\n private logger: typeof Logger = Logger;\n\n private options: RedisManagerOptions;\n\n public instances: RedisInstance[] = [];\n\n constructor(config: RedisManagerOptions) {\n this.options = config;\n }\n\n public connect(): Promise<RedisInstance> {\n return new Promise((resolve, reject) => {\n const redisOptions: RedisOptions = {\n host: this.options.host,\n port: this.options.port,\n password: this.options.password,\n maxRetriesPerRequest: null, // Needed for bullmq\n };\n\n const client = new Redis(redisOptions);\n const publisherClient = new Redis(redisOptions);\n const subscriberClient = new Redis(redisOptions);\n\n const handleConnect = (): void => {\n const redisInstance = new RedisInstance({\n redisManager: this,\n client,\n publisherClient,\n subscriberClient,\n });\n\n this.instances.push(redisInstance);\n\n if (this.options.applicationConfig.log?.startUp) {\n this.log('Connected', {\n Host: this.options.host,\n Port: this.options.port,\n });\n }\n\n resolve(redisInstance);\n };\n\n const handleError = (error: Error): void => {\n Logger.error({ error });\n\n reject(error);\n };\n\n client.on('connect', handleConnect);\n client.on('error', handleError);\n });\n }\n\n public async disconnect(): Promise<void> {\n await Promise.all(this.instances.map(instance => instance.disconnect()));\n }\n\n /**\n * Log Redis message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({ level: 'redis', message, meta });\n }\n}\n"],
5
+ "mappings": ";;AAAA,SAAS,aAAgC;AAEzC,OAAO,mBAAmB;AAC1B,SAAS,cAAc;AAEvB,MAAO,aAA2B;AAAA,EALlC,OAKkC;AAAA;AAAA;AAAA,EACxB,SAAwB;AAAA,EAExB;AAAA,EAED,YAA6B,CAAC;AAAA,EAErC,YAAY,QAA6B;AACvC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEO,UAAkC;AACvC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,YAAM,eAA6B;AAAA,QACjC,MAAM,KAAK,QAAQ;AAAA,QACnB,MAAM,KAAK,QAAQ;AAAA,QACnB,UAAU,KAAK,QAAQ;AAAA,QACvB,sBAAsB;AAAA;AAAA,MACxB;AAEA,YAAM,SAAS,IAAI,MAAM,YAAY;AACrC,YAAM,kBAAkB,IAAI,MAAM,YAAY;AAC9C,YAAM,mBAAmB,IAAI,MAAM,YAAY;AAE/C,YAAM,gBAAgB,6BAAY;AAChC,cAAM,gBAAgB,IAAI,cAAc;AAAA,UACtC,cAAc;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAED,aAAK,UAAU,KAAK,aAAa;AAEjC,YAAI,KAAK,QAAQ,kBAAkB,KAAK,SAAS;AAC/C,eAAK,IAAI,aAAa;AAAA,YACpB,MAAM,KAAK,QAAQ;AAAA,YACnB,MAAM,KAAK,QAAQ;AAAA,UACrB,CAAC;AAAA,QACH;AAEA,gBAAQ,aAAa;AAAA,MACvB,GAlBsB;AAoBtB,YAAM,cAAc,wBAAC,UAAuB;AAC1C,eAAO,MAAM,EAAE,MAAM,CAAC;AAEtB,eAAO,KAAK;AAAA,MACd,GAJoB;AAMpB,aAAO,GAAG,WAAW,aAAa;AAClC,aAAO,GAAG,SAAS,WAAW;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,aAA4B;AACvC,UAAM,QAAQ,IAAI,KAAK,UAAU,IAAI,cAAY,SAAS,WAAW,CAAC,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKO,IAAI,SAAiB,MAAsC;AAChE,SAAK,OAAO,OAAO,EAAE,OAAO,SAAS,SAAS,KAAK,CAAC;AAAA,EACtD;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default as AwsS3 } from './s3.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/aws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { default as default2 } from "./s3.js";
2
+ export {
3
+ default2 as AwsS3
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/aws/index.ts"],
4
+ "sourcesContent": ["export { default as AwsS3 } from './s3.js';\n"],
5
+ "mappings": "AAAA,SAAoB,WAAXA,gBAAwB;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,54 @@
1
+ import { S3Client } from '@aws-sdk/client-s3';
2
+ import type { AwsS3ConstructorOptions } from './s3.interface.js';
3
+ interface DownloadFileOptions {
4
+ bucketName: string;
5
+ key: string;
6
+ destinationFilePath: string;
7
+ }
8
+ export default class AwsS3 {
9
+ client: S3Client;
10
+ private options;
11
+ constructor(options: Partial<AwsS3ConstructorOptions>);
12
+ private getBucketUrl;
13
+ uploadFile({ bucketName, path, body, contentType, forceDownload, publicRead, }: {
14
+ bucketName: string;
15
+ path: string;
16
+ body: Buffer;
17
+ contentType?: string;
18
+ forceDownload?: boolean;
19
+ publicRead?: boolean;
20
+ }): Promise<string>;
21
+ startMultipartUpload({ bucketName, path, publicRead, }: {
22
+ bucketName: string;
23
+ path: string;
24
+ publicRead?: boolean;
25
+ }): Promise<string | undefined>;
26
+ uploadPart({ bucketName, path, partNumber, uploadId, body, }: {
27
+ bucketName: string;
28
+ path: string;
29
+ partNumber: number;
30
+ uploadId: string;
31
+ body: any;
32
+ }): Promise<string | undefined>;
33
+ completeMultipartUpload({ bucketName, path, uploadId, parts, }: {
34
+ bucketName: string;
35
+ path: string;
36
+ uploadId: string;
37
+ parts: {
38
+ PartNumber: number;
39
+ ETag: string;
40
+ }[];
41
+ }): Promise<string>;
42
+ downloadFile({ bucketName, key, destinationFilePath, onStart, onProgress, onComplete, onError, }: DownloadFileOptions & {
43
+ onStart?: () => void;
44
+ onProgress?: (progress: number) => void;
45
+ onComplete?: () => void;
46
+ onError?: (error: Error) => void;
47
+ }): Promise<void>;
48
+ generateSignedUrl({ bucket, key }: {
49
+ bucket: string;
50
+ key: string;
51
+ }): Promise<string>;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../../src/services/aws/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,QAAQ,EAGT,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AASjE,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACjB,MAAM,EAAE,QAAQ,CAAC;IAExB,OAAO,CAAC,OAAO,CAA0B;gBAE7B,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC;IA4CrD,OAAO,CAAC,YAAY;IAYP,UAAU,CAAC,EACtB,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,aAAa,EACb,UAAU,GACX,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBN,oBAAoB,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,UAAU,GACX,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB;IAYY,UAAU,CAAC,EACtB,UAAU,EACV,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,IAAI,GACL,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG,CAAC;KACX,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAclB,uBAAuB,CAAC,EACnC,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,EAAE;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC/C;IA0BK,YAAY,CAAC,EACjB,UAAU,EACV,GAAG,EACH,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,UAAU,EACV,OAAO,GACR,EAAE,mBAAmB,GAAG;QACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;QACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC;IA+EJ,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BlG"}
@@ -0,0 +1,14 @@
1
+ export interface AwsS3LocalstackOptions {
2
+ enabled?: boolean;
3
+ port?: number;
4
+ }
5
+ export interface AwsS3ConstructorOptions {
6
+ region: string;
7
+ localstack: AwsS3LocalstackOptions;
8
+ credentials?: {
9
+ accessKeyId?: string;
10
+ secretAccessKey?: string;
11
+ };
12
+ endpoint?: string;
13
+ }
14
+ //# sourceMappingURL=s3.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.interface.d.ts","sourceRoot":"","sources":["../../../src/services/aws/s3.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,CAAC,EAAE;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=s3.interface.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,236 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import {
4
+ CompleteMultipartUploadCommand,
5
+ CreateMultipartUploadCommand,
6
+ GetObjectCommand,
7
+ PutObjectCommand,
8
+ S3Client,
9
+ UploadPartCommand
10
+ } from "@aws-sdk/client-s3";
11
+ import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
12
+ import { Helper } from "../../util/index.js";
13
+ import { createWriteStream, existsSync, mkdirSync } from "fs";
14
+ import { Readable, pipeline } from "stream";
15
+ import { promisify } from "node:util";
16
+ import { Logger } from "../../logger/index.js";
17
+ import { dirname } from "path";
18
+ const asyncPipeline = promisify(pipeline);
19
+ class AwsS3 {
20
+ static {
21
+ __name(this, "AwsS3");
22
+ }
23
+ client;
24
+ options;
25
+ constructor(options) {
26
+ const defaultOptions = {
27
+ region: "us-east-1",
28
+ localstack: {
29
+ enabled: false,
30
+ port: 4566
31
+ }
32
+ };
33
+ this.options = Helper.defaultsDeep(options, defaultOptions);
34
+ const s3ClientConfig = {
35
+ region: this.options.region
36
+ };
37
+ if (this.options.localstack.enabled) {
38
+ s3ClientConfig.forcePathStyle = true;
39
+ if (!this.options.endpoint) {
40
+ throw new Error("Endpoint is required when using LocalStack");
41
+ }
42
+ s3ClientConfig.endpoint = this.options.endpoint;
43
+ s3ClientConfig.credentials = {
44
+ accessKeyId: "test",
45
+ secretAccessKey: "test"
46
+ };
47
+ } else {
48
+ if (this.options.credentials?.accessKeyId && this.options.credentials?.secretAccessKey) {
49
+ s3ClientConfig.credentials = {
50
+ accessKeyId: this.options.credentials.accessKeyId,
51
+ secretAccessKey: this.options.credentials.secretAccessKey
52
+ };
53
+ }
54
+ }
55
+ this.client = new S3Client(s3ClientConfig);
56
+ }
57
+ getBucketUrl({ bucketName, path }) {
58
+ let url;
59
+ if (this.options.localstack.enabled) {
60
+ url = `http://localhost:${this.options.localstack.port}/${bucketName}/${path}`;
61
+ } else {
62
+ url = `https://${bucketName}.s3.amazonaws.com/${path}`;
63
+ }
64
+ return url;
65
+ }
66
+ async uploadFile({
67
+ bucketName,
68
+ path,
69
+ body,
70
+ contentType,
71
+ forceDownload,
72
+ publicRead
73
+ }) {
74
+ let contentDisposition = forceDownload ? "attachment" : "inline";
75
+ contentDisposition += `; filename="${path.split("/").pop()}"`;
76
+ const putObjectOptions = {
77
+ Bucket: bucketName,
78
+ Key: path,
79
+ Body: body,
80
+ ContentDisposition: contentDisposition,
81
+ ACL: publicRead ? "public-read" : "private"
82
+ };
83
+ if (contentType) {
84
+ putObjectOptions.ContentType = contentType;
85
+ }
86
+ const command = new PutObjectCommand(putObjectOptions);
87
+ await this.client.send(command);
88
+ return this.getBucketUrl({ bucketName, path });
89
+ }
90
+ async startMultipartUpload({
91
+ bucketName,
92
+ path,
93
+ publicRead
94
+ }) {
95
+ const command = new CreateMultipartUploadCommand({
96
+ Bucket: bucketName,
97
+ Key: path,
98
+ ACL: publicRead ? "public-read" : "private"
99
+ });
100
+ const response = await this.client.send(command);
101
+ return response.UploadId;
102
+ }
103
+ async uploadPart({
104
+ bucketName,
105
+ path,
106
+ partNumber,
107
+ uploadId,
108
+ body
109
+ }) {
110
+ const command = new UploadPartCommand({
111
+ Bucket: bucketName,
112
+ Key: path,
113
+ PartNumber: partNumber,
114
+ UploadId: uploadId,
115
+ Body: body
116
+ });
117
+ const response = await this.client.send(command);
118
+ return response.ETag;
119
+ }
120
+ async completeMultipartUpload({
121
+ bucketName,
122
+ path,
123
+ uploadId,
124
+ parts
125
+ }) {
126
+ parts.sort((a, b) => a.PartNumber - b.PartNumber);
127
+ const command = new CompleteMultipartUploadCommand({
128
+ Bucket: bucketName,
129
+ Key: path,
130
+ UploadId: uploadId,
131
+ MultipartUpload: {
132
+ Parts: parts
133
+ }
134
+ });
135
+ const response = await this.client.send(command);
136
+ if (!response.Location) {
137
+ throw new Error("Failed to complete multipart upload");
138
+ }
139
+ return this.getBucketUrl({
140
+ bucketName,
141
+ path
142
+ });
143
+ }
144
+ async downloadFile({
145
+ bucketName,
146
+ key,
147
+ destinationFilePath,
148
+ onStart,
149
+ onProgress,
150
+ onComplete,
151
+ onError
152
+ }) {
153
+ const decodedKey = decodeURIComponent(key);
154
+ const bucketKey = decodedKey;
155
+ Logger.info({
156
+ message: "Downloading file from S3",
157
+ meta: {
158
+ bucketName,
159
+ Key: bucketKey
160
+ }
161
+ });
162
+ const getObjectParams = {
163
+ Bucket: bucketName,
164
+ Key: bucketKey
165
+ };
166
+ try {
167
+ const command = new GetObjectCommand(getObjectParams);
168
+ const response = await this.client.send(command);
169
+ if (!response.Body || !(response.Body instanceof Readable)) {
170
+ throw new Error("Expected Body to be a readable stream!");
171
+ }
172
+ if (onStart) {
173
+ onStart();
174
+ }
175
+ const directoryPath = dirname(destinationFilePath);
176
+ if (!existsSync(directoryPath)) {
177
+ mkdirSync(directoryPath, { recursive: true });
178
+ }
179
+ const fileStream = createWriteStream(destinationFilePath);
180
+ const totalSize = parseInt(response.ContentLength?.toString() ?? "0", 10);
181
+ let bytesRead = 0;
182
+ response.Body.on("data", (chunk) => {
183
+ bytesRead += chunk.length;
184
+ if (onProgress && totalSize > 0) {
185
+ const progress = Math.min(bytesRead / totalSize * 100, 100);
186
+ const formattedProgress = parseFloat(progress.toFixed(1));
187
+ onProgress(formattedProgress);
188
+ }
189
+ });
190
+ await asyncPipeline(response.Body, fileStream);
191
+ if (!existsSync(destinationFilePath)) {
192
+ throw new Error(`Could not find downloaded file at ${destinationFilePath}`);
193
+ }
194
+ Logger.info({
195
+ message: "File successfully downloaded",
196
+ meta: {
197
+ Path: destinationFilePath
198
+ }
199
+ });
200
+ if (onComplete) {
201
+ onComplete();
202
+ }
203
+ } catch (error) {
204
+ Logger.error({ error });
205
+ if (onError) {
206
+ onError(error);
207
+ }
208
+ throw error;
209
+ }
210
+ }
211
+ async generateSignedUrl({ bucket, key }) {
212
+ try {
213
+ const command = new GetObjectCommand({
214
+ Bucket: bucket,
215
+ Key: key
216
+ });
217
+ const signedUrl = await getSignedUrl(this.client, command, {
218
+ expiresIn: 3600
219
+ });
220
+ Logger.info({
221
+ message: "Generated signed URL",
222
+ meta: {
223
+ URL: signedUrl
224
+ }
225
+ });
226
+ return signedUrl;
227
+ } catch (error) {
228
+ Logger.error({ error });
229
+ throw error;
230
+ }
231
+ }
232
+ }
233
+ export {
234
+ AwsS3 as default
235
+ };
236
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/aws/s3.ts"],
4
+ "sourcesContent": ["import {\n CompleteMultipartUploadCommand,\n CreateMultipartUploadCommand,\n GetObjectCommand,\n PutObjectCommand,\n type PutObjectCommandInput,\n S3Client,\n type S3ClientConfig,\n UploadPartCommand,\n} from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { Helper } from '../../util/index.js';\nimport type { AwsS3ConstructorOptions } from './s3.interface.js';\nimport { createWriteStream, existsSync, mkdirSync } from 'fs';\nimport { Readable, pipeline } from 'stream';\nimport { promisify } from 'node:util';\nimport { Logger } from '../../logger/index.js';\nimport { dirname } from 'path';\n\nconst asyncPipeline = promisify(pipeline);\n\ninterface DownloadFileOptions {\n bucketName: string;\n key: string;\n destinationFilePath: string;\n}\n\nexport default class AwsS3 {\n public client: S3Client;\n\n private options: AwsS3ConstructorOptions;\n\n constructor(options: Partial<AwsS3ConstructorOptions>) {\n // Define default options\n const defaultOptions: Partial<AwsS3ConstructorOptions> = {\n region: 'us-east-1',\n localstack: {\n enabled: false,\n port: 4566,\n },\n };\n\n this.options = Helper.defaultsDeep(options, defaultOptions);\n\n const s3ClientConfig: S3ClientConfig = {\n region: this.options.region,\n };\n\n if (this.options.localstack.enabled) {\n s3ClientConfig.forcePathStyle = true;\n\n if (!this.options.endpoint) {\n throw new Error('Endpoint is required when using LocalStack');\n }\n\n // s3ClientConfig.endpoint = `http://s3.localhost.localstack.cloud:${this.options.localstack.port}`; // Works when the Node.js API is calling from within the Docker container\n // s3ClientConfig.endpoint = `http://localhost:${this.options.localstack.port}`; // works out side of the container (media generator example)\n\n s3ClientConfig.endpoint = this.options.endpoint;\n\n s3ClientConfig.credentials = {\n accessKeyId: 'test',\n secretAccessKey: 'test',\n };\n } else {\n if (this.options.credentials?.accessKeyId && this.options.credentials?.secretAccessKey) {\n s3ClientConfig.credentials = {\n accessKeyId: this.options.credentials.accessKeyId,\n secretAccessKey: this.options.credentials.secretAccessKey,\n };\n }\n }\n\n this.client = new S3Client(s3ClientConfig);\n }\n\n private getBucketUrl({ bucketName, path }: { bucketName: string; path: string }) {\n let url;\n\n if (this.options.localstack.enabled) {\n url = `http://localhost:${this.options.localstack.port}/${bucketName}/${path}`;\n } else {\n url = `https://${bucketName}.s3.amazonaws.com/${path}`;\n }\n\n return url;\n }\n\n public async uploadFile({\n bucketName,\n path,\n body,\n contentType,\n forceDownload,\n publicRead,\n }: {\n bucketName: string;\n path: string;\n body: Buffer;\n contentType?: string;\n forceDownload?: boolean;\n publicRead?: boolean;\n }): Promise<string> {\n let contentDisposition = forceDownload ? 'attachment' : 'inline';\n contentDisposition += `; filename=\"${path.split('/').pop()}\"`;\n\n const putObjectOptions: PutObjectCommandInput = {\n Bucket: bucketName,\n Key: path,\n Body: body,\n ContentDisposition: contentDisposition,\n ACL: publicRead ? 'public-read' : 'private',\n };\n\n if (contentType) {\n putObjectOptions.ContentType = contentType;\n }\n\n const command = new PutObjectCommand(putObjectOptions);\n\n await this.client.send(command);\n\n return this.getBucketUrl({ bucketName, path });\n }\n\n public async startMultipartUpload({\n bucketName,\n path,\n publicRead,\n }: {\n bucketName: string;\n path: string;\n publicRead?: boolean;\n }) {\n const command = new CreateMultipartUploadCommand({\n Bucket: bucketName,\n Key: path,\n ACL: publicRead ? 'public-read' : 'private',\n });\n\n const response = await this.client.send(command);\n\n return response.UploadId;\n }\n\n public async uploadPart({\n bucketName,\n path,\n partNumber,\n uploadId,\n body,\n }: {\n bucketName: string;\n path: string;\n partNumber: number;\n uploadId: string;\n body: any;\n }): Promise<string | undefined> {\n const command = new UploadPartCommand({\n Bucket: bucketName,\n Key: path,\n PartNumber: partNumber,\n UploadId: uploadId,\n Body: body,\n });\n\n const response = await this.client.send(command);\n\n return response.ETag;\n }\n\n public async completeMultipartUpload({\n bucketName,\n path,\n uploadId,\n parts,\n }: {\n bucketName: string;\n path: string;\n uploadId: string;\n parts: { PartNumber: number; ETag: string }[];\n }) {\n // Sort parts by PartNumber\n parts.sort((a, b) => a.PartNumber - b.PartNumber);\n\n const command = new CompleteMultipartUploadCommand({\n Bucket: bucketName,\n Key: path,\n UploadId: uploadId,\n MultipartUpload: {\n Parts: parts,\n },\n });\n\n const response = await this.client.send(command);\n\n if (!response.Location) {\n throw new Error('Failed to complete multipart upload');\n }\n\n // return response.Location;\n return this.getBucketUrl({\n bucketName,\n path,\n });\n }\n\n async downloadFile({\n bucketName,\n key,\n destinationFilePath,\n onStart,\n onProgress,\n onComplete,\n onError,\n }: DownloadFileOptions & {\n onStart?: () => void;\n onProgress?: (progress: number) => void;\n onComplete?: () => void;\n onError?: (error: Error) => void;\n }): Promise<void> {\n const decodedKey = decodeURIComponent(key);\n const bucketKey = decodedKey;\n\n Logger.info({\n message: 'Downloading file from S3',\n meta: {\n bucketName,\n Key: bucketKey,\n },\n });\n\n const getObjectParams = {\n Bucket: bucketName,\n Key: bucketKey,\n };\n\n try {\n const command = new GetObjectCommand(getObjectParams);\n\n const response = await this.client.send(command);\n\n if (!response.Body || !(response.Body instanceof Readable)) {\n throw new Error('Expected Body to be a readable stream!');\n }\n\n if (onStart) {\n onStart();\n }\n\n const directoryPath = dirname(destinationFilePath);\n\n if (!existsSync(directoryPath)) {\n mkdirSync(directoryPath, { recursive: true });\n }\n\n const fileStream = createWriteStream(destinationFilePath);\n const totalSize = parseInt(response.ContentLength?.toString() ?? '0', 10);\n\n let bytesRead = 0;\n\n response.Body.on('data', (chunk: Buffer) => {\n bytesRead += chunk.length;\n\n if (onProgress && totalSize > 0) {\n const progress = Math.min((bytesRead / totalSize) * 100, 100);\n const formattedProgress = parseFloat(progress.toFixed(1));\n\n onProgress(formattedProgress);\n }\n });\n\n await asyncPipeline(response.Body, fileStream);\n\n if (!existsSync(destinationFilePath)) {\n throw new Error(`Could not find downloaded file at ${destinationFilePath}`);\n }\n\n Logger.info({\n message: 'File successfully downloaded',\n meta: {\n Path: destinationFilePath,\n },\n });\n\n if (onComplete) {\n onComplete();\n }\n } catch (error) {\n Logger.error({ error });\n\n if (onError) {\n onError(error as Error);\n }\n\n throw error as Error;\n }\n }\n\n public async generateSignedUrl({ bucket, key }: { bucket: string; key: string }): Promise<string> {\n try {\n const command = new GetObjectCommand({\n Bucket: bucket,\n Key: key,\n });\n\n // Set the expiration for the signed URL to 1 hour\n const signedUrl = await getSignedUrl(this.client, command, {\n expiresIn: 3600,\n });\n\n // Log the signed URL\n Logger.info({\n message: 'Generated signed URL',\n meta: {\n URL: signedUrl,\n },\n });\n\n return signedUrl;\n } catch (error) {\n Logger.error({ error });\n\n throw error;\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './aws/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./aws/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/services/index.ts"],
4
+ "sourcesContent": ["export * from './aws/index.js';\n"],
5
+ "mappings": "AAAA,cAAc;",
6
+ "names": []
7
+ }