@comasoft/nestjs 0.0.97 → 0.1.0

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 (470) hide show
  1. package/README.md +29 -0
  2. package/dist/aws/aws-s3.service.d.ts +17 -0
  3. package/dist/aws/aws-s3.service.js +1 -0
  4. package/dist/aws/aws.module.d.ts +2 -0
  5. package/dist/aws/aws.module.js +1 -0
  6. package/dist/aws/aws.service.d.ts +3 -0
  7. package/dist/aws/aws.service.js +1 -0
  8. package/dist/aws/constants/storage.constant.d.ts +4 -0
  9. package/dist/aws/constants/storage.constant.js +1 -0
  10. package/dist/aws/dto/create-s3-presigned.dto.d.ts +12 -0
  11. package/dist/aws/dto/create-s3-presigned.dto.js +1 -0
  12. package/dist/aws/dto/index.d.ts +2 -0
  13. package/dist/aws/dto/index.js +1 -0
  14. package/dist/aws/dto/response-s3-presigned.dto.d.ts +30 -0
  15. package/dist/aws/dto/response-s3-presigned.dto.js +1 -0
  16. package/dist/aws/index.d.ts +4 -0
  17. package/dist/aws/index.js +1 -0
  18. package/dist/aws/types/s3.interface.d.ts +14 -0
  19. package/dist/aws/types/s3.interface.js +1 -0
  20. package/dist/aws/types/storage.interface.d.ts +19 -0
  21. package/dist/aws/types/storage.interface.js +1 -0
  22. package/dist/category/category.module.d.ts +2 -0
  23. package/dist/category/category.module.js +1 -0
  24. package/dist/category/category.service.d.ts +13 -0
  25. package/dist/category/category.service.js +1 -0
  26. package/dist/category/dto/create-category.dto.d.ts +7 -0
  27. package/dist/category/dto/create-category.dto.js +1 -0
  28. package/dist/category/dto/delete-category.dto.d.ts +3 -0
  29. package/dist/category/dto/delete-category.dto.js +1 -0
  30. package/dist/category/dto/index.d.ts +5 -0
  31. package/dist/category/dto/index.js +1 -0
  32. package/dist/category/dto/response-categories.dto.d.ts +12 -0
  33. package/dist/category/dto/response-categories.dto.js +1 -0
  34. package/dist/category/dto/update-category-sort.dto.d.ts +9 -0
  35. package/dist/category/dto/update-category-sort.dto.js +1 -0
  36. package/dist/category/dto/update-category.dto.d.ts +6 -0
  37. package/dist/category/dto/update-category.dto.js +1 -0
  38. package/dist/category/index.d.ts +3 -0
  39. package/dist/category/index.js +1 -0
  40. package/dist/comment/comment.module.d.ts +2 -0
  41. package/dist/comment/comment.module.js +1 -0
  42. package/dist/comment/comment.service.d.ts +33 -0
  43. package/dist/comment/comment.service.js +1 -0
  44. package/dist/comment/dto/create-comment.dto.d.ts +7 -0
  45. package/dist/comment/dto/create-comment.dto.js +1 -0
  46. package/dist/comment/dto/index.d.ts +3 -0
  47. package/dist/comment/dto/index.js +1 -0
  48. package/dist/comment/dto/response-comment.dto.d.ts +26 -0
  49. package/dist/comment/dto/response-comment.dto.js +1 -0
  50. package/dist/comment/dto/update-comment.dto.d.ts +4 -0
  51. package/dist/comment/dto/update-comment.dto.js +1 -0
  52. package/dist/comment/index.d.ts +3 -0
  53. package/dist/comment/index.js +1 -0
  54. package/dist/database/entities/category.entity.d.ts +14 -0
  55. package/dist/database/entities/category.entity.js +1 -0
  56. package/dist/database/entities/comment.entity.d.ts +16 -0
  57. package/dist/database/entities/comment.entity.js +1 -0
  58. package/dist/database/entities/config.entity.d.ts +8 -0
  59. package/dist/database/entities/config.entity.js +1 -0
  60. package/dist/database/entities/file.entity.d.ts +20 -0
  61. package/dist/database/entities/file.entity.js +1 -0
  62. package/dist/database/entities/index.d.ts +10 -0
  63. package/dist/database/entities/index.js +1 -0
  64. package/dist/database/entities/like.entity.d.ts +10 -0
  65. package/dist/database/entities/like.entity.js +1 -0
  66. package/dist/database/entities/logs-audit.entity.d.ts +16 -0
  67. package/dist/database/entities/logs-audit.entity.js +1 -0
  68. package/dist/database/entities/logs-event.entity.d.ts +16 -0
  69. package/dist/database/entities/logs-event.entity.js +1 -0
  70. package/dist/database/entities/notification-recipient.entity.d.ts +19 -0
  71. package/dist/database/entities/notification-recipient.entity.js +1 -0
  72. package/dist/database/entities/notification.entity.d.ts +18 -0
  73. package/dist/database/entities/notification.entity.js +1 -0
  74. package/dist/database/entities/role.entity.d.ts +13 -0
  75. package/dist/database/entities/role.entity.js +1 -0
  76. package/dist/database/entities/roles.entity.d.ts +12 -0
  77. package/dist/database/entities/roles.entity.js +1 -0
  78. package/dist/decorators/api-custom-params.decorator.js +1 -35
  79. package/dist/decorators/auth.decorator.factory.d.ts +1 -1
  80. package/dist/decorators/auth.decorator.factory.js +1 -12
  81. package/dist/decorators/cookies.decorator.js +1 -9
  82. package/dist/decorators/custom-params.decorator.js +1 -16
  83. package/dist/decorators/delete-columns.decorator.js +1 -33
  84. package/dist/decorators/index.js +1 -24
  85. package/dist/decorators/patch-body.decorator.js +1 -30
  86. package/dist/decorators/soft-delete.decorator.js +1 -24
  87. package/dist/decorators/timestamps.decorator.js +1 -31
  88. package/dist/decorators/user.decorator.js +1 -8
  89. package/dist/dto/auth-user-local.dto.js +1 -26
  90. package/dist/dto/auth-user-sso.dto.js +1 -21
  91. package/dist/dto/custom-params.dto.js +1 -46
  92. package/dist/dto/file.dto.d.ts +18 -0
  93. package/dist/dto/file.dto.js +1 -0
  94. package/dist/dto/index.d.ts +2 -0
  95. package/dist/dto/index.js +1 -24
  96. package/dist/dto/jwt-user.dto.js +1 -6
  97. package/dist/dto/pagination.dto.js +1 -36
  98. package/dist/dto/remove-ids.dto.js +1 -23
  99. package/dist/dto/response-access-token.dto.js +1 -24
  100. package/dist/dto/response-id.dto.js +1 -35
  101. package/dist/dto/response-uid.dto.d.ts +2 -0
  102. package/dist/dto/response-uid.dto.js +1 -27
  103. package/dist/dto/update-ids.dto.d.ts +6 -1
  104. package/dist/dto/update-ids.dto.js +1 -31
  105. package/dist/dto/update-sort.dto.d.ts +9 -0
  106. package/dist/dto/update-sort.dto.js +1 -0
  107. package/dist/enums.common.d.ts +23 -0
  108. package/dist/enums.common.js +1 -35
  109. package/dist/events/event-bus.module.d.ts +2 -0
  110. package/dist/events/event-bus.module.js +1 -0
  111. package/dist/events/index.d.ts +4 -0
  112. package/dist/events/index.js +1 -0
  113. package/dist/events/listeners/audit-event.listener.d.ts +9 -0
  114. package/dist/events/listeners/audit-event.listener.js +1 -0
  115. package/dist/events/listeners/index.d.ts +1 -0
  116. package/dist/events/listeners/index.js +1 -0
  117. package/dist/events/listeners/system-event.listener.d.ts +9 -0
  118. package/dist/events/listeners/system-event.listener.js +1 -0
  119. package/dist/events/services/event-logger.service.d.ts +5 -0
  120. package/dist/events/services/event-logger.service.js +1 -0
  121. package/dist/events/services/event-notification.service.d.ts +7 -0
  122. package/dist/events/services/event-notification.service.js +1 -0
  123. package/dist/events/services/event-storage.service.d.ts +11 -0
  124. package/dist/events/services/event-storage.service.js +1 -0
  125. package/dist/events/services/index.d.ts +4 -0
  126. package/dist/events/services/index.js +1 -0
  127. package/dist/events/services/token.service.d.ts +23 -0
  128. package/dist/events/services/token.service.js +1 -0
  129. package/dist/events/types/audit-events.type.d.ts +12 -0
  130. package/dist/events/types/audit-events.type.js +1 -0
  131. package/dist/events/types/index.d.ts +18 -0
  132. package/dist/events/types/index.js +1 -0
  133. package/dist/filters/http-exception.filter.d.ts +4 -0
  134. package/dist/filters/http-exception.filter.js +1 -53
  135. package/dist/filters/index.js +1 -17
  136. package/dist/guards/auth.guard.d.ts +3 -1
  137. package/dist/guards/auth.guard.js +1 -38
  138. package/dist/guards/jwt.guard.js +1 -17
  139. package/dist/index.d.ts +20 -8
  140. package/dist/index.js +1 -24
  141. package/dist/interceptors/error.interceptor.js +1 -26
  142. package/dist/interceptors/index.js +1 -18
  143. package/dist/interceptors/success.interceptor.js +1 -30
  144. package/dist/library.module.d.ts +2 -0
  145. package/dist/library.module.js +1 -0
  146. package/dist/like/dto/create-like.dto.d.ts +7 -0
  147. package/dist/like/dto/create-like.dto.js +1 -0
  148. package/dist/like/dto/index.d.ts +2 -0
  149. package/dist/like/dto/index.js +1 -0
  150. package/dist/like/dto/response-like.dto.d.ts +19 -0
  151. package/dist/like/dto/response-like.dto.js +1 -0
  152. package/dist/like/index.d.ts +3 -0
  153. package/dist/like/index.js +1 -0
  154. package/dist/like/like.module.d.ts +2 -0
  155. package/dist/like/like.module.js +1 -0
  156. package/dist/like/like.service.d.ts +13 -0
  157. package/dist/like/like.service.js +1 -0
  158. package/dist/logger/index.d.ts +2 -0
  159. package/dist/logger/index.js +1 -0
  160. package/dist/logger/pino-options.d.ts +31 -0
  161. package/dist/logger/pino-options.js +1 -0
  162. package/dist/logger/pino-pretty-transport.d.ts +1 -0
  163. package/dist/logger/pino-pretty-transport.js +1 -0
  164. package/dist/modules/index.d.ts +1 -0
  165. package/dist/modules/index.js +1 -0
  166. package/dist/modules/redis.module.d.ts +9 -0
  167. package/dist/modules/redis.module.js +1 -0
  168. package/dist/notifications/index.d.ts +70 -0
  169. package/dist/notifications/index.js +1 -0
  170. package/dist/notifications/notification.module.d.ts +2 -0
  171. package/dist/notifications/notification.module.js +1 -0
  172. package/dist/notifications/services/email.service.d.ts +31 -0
  173. package/dist/notifications/services/email.service.js +1 -0
  174. package/dist/notifications/services/index.d.ts +7 -0
  175. package/dist/notifications/services/index.js +1 -0
  176. package/dist/notifications/services/kakao.service.d.ts +41 -0
  177. package/dist/notifications/services/kakao.service.js +1 -0
  178. package/dist/notifications/services/message-template.service.d.ts +15 -0
  179. package/dist/notifications/services/message-template.service.js +1 -0
  180. package/dist/notifications/services/notification-send.service.d.ts +30 -0
  181. package/dist/notifications/services/notification-send.service.js +1 -0
  182. package/dist/notifications/services/notification.service.d.ts +37 -0
  183. package/dist/notifications/services/notification.service.js +1 -0
  184. package/dist/notifications/services/slack.service.d.ts +11 -0
  185. package/dist/notifications/services/slack.service.js +1 -0
  186. package/dist/notifications/services/sms.service.d.ts +19 -0
  187. package/dist/notifications/services/sms.service.js +1 -0
  188. package/dist/passport/jwt.strategy.js +1 -55
  189. package/dist/passport/kakao.strategy.js +1 -36
  190. package/dist/passport/local.strategy.js +1 -41
  191. package/dist/redis/index.d.ts +2 -0
  192. package/dist/redis/index.js +1 -0
  193. package/dist/redis/redis-constraint.d.ts +1 -0
  194. package/dist/redis/redis-constraint.js +1 -0
  195. package/dist/redis/redis.module.d.ts +8 -0
  196. package/dist/redis/redis.module.js +1 -0
  197. package/dist/redis/redis.service.d.ts +12 -0
  198. package/dist/redis/redis.service.js +1 -0
  199. package/dist/role/dto/create-role.dto.d.ts +5 -0
  200. package/dist/role/dto/create-role.dto.js +1 -0
  201. package/dist/role/dto/index.d.ts +3 -0
  202. package/dist/role/dto/index.js +1 -0
  203. package/dist/role/dto/response-roles.dto.d.ts +15 -0
  204. package/dist/role/dto/response-roles.dto.js +1 -0
  205. package/dist/role/dto/update-role.dto.d.ts +6 -0
  206. package/dist/role/dto/update-role.dto.js +1 -0
  207. package/dist/role/index.d.ts +3 -0
  208. package/dist/role/index.js +1 -0
  209. package/dist/role/role.module.d.ts +2 -0
  210. package/dist/role/role.module.js +1 -0
  211. package/dist/role/role.service.d.ts +17 -0
  212. package/dist/role/role.service.js +1 -0
  213. package/dist/services/file.service.d.ts +55 -0
  214. package/dist/services/file.service.js +1 -0
  215. package/dist/services/index.d.ts +2 -0
  216. package/dist/services/index.js +1 -0
  217. package/dist/services/message-template.service.d.ts +15 -0
  218. package/dist/services/message-template.service.js +1 -0
  219. package/dist/services/permission-checker.service.d.ts +38 -0
  220. package/dist/services/permission-checker.service.js +1 -0
  221. package/dist/setup-swagger.js +1 -32
  222. package/dist/shared/error-codes.d.ts +5 -0
  223. package/dist/shared/error-codes.js +1 -0
  224. package/dist/utils/common.utils.d.ts +2 -0
  225. package/dist/utils/common.utils.js +1 -32
  226. package/dist/utils/enum.utils.js +1 -8
  227. package/dist/utils/index.d.ts +1 -0
  228. package/dist/utils/index.js +1 -20
  229. package/dist/utils/object-diff.d.ts +1 -0
  230. package/dist/utils/object-diff.js +1 -0
  231. package/dist/utils/pagination-qb.utils.js +1 -154
  232. package/dist/utils/pagination.utils.js +1 -32
  233. package/jest.config.js +11 -0
  234. package/package/dist/aws/dto/index.d.ts +2 -0
  235. package/package/dist/aws/dto/index.js +18 -0
  236. package/package/dist/aws/index.d.ts +4 -0
  237. package/package/dist/aws/index.js +20 -0
  238. package/package/dist/database/entities/index.d.ts +7 -0
  239. package/package/dist/database/entities/index.js +23 -0
  240. package/package/dist/decorators/index.d.ts +8 -0
  241. package/package/dist/decorators/index.js +24 -0
  242. package/package/dist/dto/index.d.ts +10 -0
  243. package/package/dist/dto/index.js +26 -0
  244. package/package/dist/events/index.d.ts +4 -0
  245. package/package/dist/events/index.js +20 -0
  246. package/package/dist/events/listeners/index.d.ts +1 -0
  247. package/package/dist/events/listeners/index.js +17 -0
  248. package/package/dist/events/services/index.d.ts +3 -0
  249. package/package/dist/events/services/index.js +19 -0
  250. package/package/dist/events/types/index.d.ts +18 -0
  251. package/package/dist/events/types/index.js +17 -0
  252. package/package/dist/filters/index.d.ts +1 -0
  253. package/package/dist/filters/index.js +17 -0
  254. package/package/dist/index.d.ts +16 -0
  255. package/package/dist/index.js +32 -0
  256. package/package/dist/interceptors/index.d.ts +2 -0
  257. package/package/dist/interceptors/index.js +18 -0
  258. package/package/dist/logger/index.d.ts +2 -0
  259. package/package/dist/logger/index.js +18 -0
  260. package/package/dist/modules/index.d.ts +1 -0
  261. package/package/dist/modules/index.js +17 -0
  262. package/package/dist/notifications/index.d.ts +53 -0
  263. package/package/dist/notifications/index.js +18 -0
  264. package/package/dist/notifications/services/index.d.ts +5 -0
  265. package/package/dist/notifications/services/index.js +21 -0
  266. package/package/dist/redis/index.d.ts +2 -0
  267. package/package/dist/redis/index.js +18 -0
  268. package/package/dist/services/index.d.ts +2 -0
  269. package/package/dist/services/index.js +18 -0
  270. package/package/dist/utils/index.d.ts +5 -0
  271. package/package/dist/utils/index.js +21 -0
  272. package/package/index.d.ts +1 -0
  273. package/package/index.js +17 -0
  274. package/package.json +61 -16
  275. package/untitled folder/package/README.md +29 -0
  276. package/untitled folder/package/dist/aws/aws-s3.service.d.ts +17 -0
  277. package/untitled folder/package/dist/aws/aws-s3.service.js +158 -0
  278. package/untitled folder/package/dist/aws/aws.module.d.ts +2 -0
  279. package/untitled folder/package/dist/aws/aws.module.js +25 -0
  280. package/untitled folder/package/dist/aws/aws.service.d.ts +3 -0
  281. package/untitled folder/package/dist/aws/aws.service.js +21 -0
  282. package/untitled folder/package/dist/aws/constants/storage.constant.d.ts +4 -0
  283. package/untitled folder/package/dist/aws/constants/storage.constant.js +25 -0
  284. package/untitled folder/package/dist/aws/dto/create-s3-presigned.dto.d.ts +12 -0
  285. package/untitled folder/package/dist/aws/dto/create-s3-presigned.dto.js +78 -0
  286. package/untitled folder/package/dist/aws/dto/index.d.ts +2 -0
  287. package/untitled folder/package/dist/aws/dto/index.js +18 -0
  288. package/untitled folder/package/dist/aws/dto/response-s3-presigned.dto.d.ts +30 -0
  289. package/untitled folder/package/dist/aws/dto/response-s3-presigned.dto.js +110 -0
  290. package/untitled folder/package/dist/aws/index.d.ts +4 -0
  291. package/untitled folder/package/dist/aws/index.js +20 -0
  292. package/untitled folder/package/dist/aws/types/s3.interface.d.ts +14 -0
  293. package/untitled folder/package/dist/aws/types/s3.interface.js +2 -0
  294. package/untitled folder/package/dist/aws/types/storage.interface.d.ts +19 -0
  295. package/untitled folder/package/dist/aws/types/storage.interface.js +2 -0
  296. package/untitled folder/package/dist/database/entities/category.entity.d.ts +13 -0
  297. package/untitled folder/package/dist/database/entities/category.entity.js +66 -0
  298. package/untitled folder/package/dist/database/entities/config.entity.d.ts +8 -0
  299. package/untitled folder/package/dist/database/entities/config.entity.js +44 -0
  300. package/untitled folder/package/dist/database/entities/file.entity.d.ts +20 -0
  301. package/untitled folder/package/dist/database/entities/file.entity.js +91 -0
  302. package/untitled folder/package/dist/database/entities/index.d.ts +7 -0
  303. package/untitled folder/package/dist/database/entities/index.js +23 -0
  304. package/untitled folder/package/dist/database/entities/like.entity.d.ts +10 -0
  305. package/untitled folder/package/dist/database/entities/like.entity.js +49 -0
  306. package/untitled folder/package/dist/database/entities/logs-audit.entity.d.ts +16 -0
  307. package/untitled folder/package/dist/database/entities/logs-audit.entity.js +72 -0
  308. package/untitled folder/package/dist/database/entities/logs-event.entity.d.ts +16 -0
  309. package/untitled folder/package/dist/database/entities/logs-event.entity.js +72 -0
  310. package/untitled folder/package/dist/database/entities/notification.entity.d.ts +16 -0
  311. package/untitled folder/package/dist/database/entities/notification.entity.js +75 -0
  312. package/untitled folder/package/dist/database/entities/roles.entity.d.ts +12 -0
  313. package/untitled folder/package/dist/database/entities/roles.entity.js +50 -0
  314. package/untitled folder/package/dist/decorators/api-custom-params.decorator.d.ts +7 -0
  315. package/untitled folder/package/dist/decorators/api-custom-params.decorator.js +35 -0
  316. package/untitled folder/package/dist/decorators/auth.decorator.factory.d.ts +1 -0
  317. package/untitled folder/package/dist/decorators/auth.decorator.factory.js +33 -0
  318. package/untitled folder/package/dist/decorators/cookies.decorator.d.ts +1 -0
  319. package/untitled folder/package/dist/decorators/cookies.decorator.js +9 -0
  320. package/untitled folder/package/dist/decorators/custom-params.decorator.d.ts +1 -0
  321. package/untitled folder/package/dist/decorators/custom-params.decorator.js +16 -0
  322. package/untitled folder/package/dist/decorators/delete-columns.decorator.d.ts +1 -0
  323. package/untitled folder/package/dist/decorators/delete-columns.decorator.js +33 -0
  324. package/untitled folder/package/dist/decorators/index.d.ts +8 -0
  325. package/untitled folder/package/dist/decorators/index.js +24 -0
  326. package/untitled folder/package/dist/decorators/patch-body.decorator.d.ts +1 -0
  327. package/untitled folder/package/dist/decorators/patch-body.decorator.js +38 -0
  328. package/untitled folder/package/dist/decorators/soft-delete.decorator.d.ts +1 -0
  329. package/untitled folder/package/dist/decorators/soft-delete.decorator.js +10 -0
  330. package/untitled folder/package/dist/decorators/timestamps.decorator.d.ts +6 -0
  331. package/untitled folder/package/dist/decorators/timestamps.decorator.js +23 -0
  332. package/untitled folder/package/dist/decorators/user.decorator.d.ts +1 -0
  333. package/untitled folder/package/dist/decorators/user.decorator.js +8 -0
  334. package/untitled folder/package/dist/dto/auth-user-local.dto.d.ts +4 -0
  335. package/untitled folder/package/dist/dto/auth-user-local.dto.js +26 -0
  336. package/untitled folder/package/dist/dto/auth-user-sso.dto.d.ts +3 -0
  337. package/untitled folder/package/dist/dto/auth-user-sso.dto.js +21 -0
  338. package/untitled folder/package/dist/dto/custom-params.dto.d.ts +7 -0
  339. package/untitled folder/package/dist/dto/custom-params.dto.js +46 -0
  340. package/untitled folder/package/dist/dto/file.dto.d.ts +18 -0
  341. package/untitled folder/package/dist/dto/file.dto.js +67 -0
  342. package/untitled folder/package/dist/dto/index.d.ts +10 -0
  343. package/untitled folder/package/dist/dto/index.js +26 -0
  344. package/untitled folder/package/dist/dto/jwt-user.dto.d.ts +6 -0
  345. package/untitled folder/package/dist/dto/jwt-user.dto.js +6 -0
  346. package/untitled folder/package/dist/dto/pagination.dto.d.ts +8 -0
  347. package/untitled folder/package/dist/dto/pagination.dto.js +36 -0
  348. package/untitled folder/package/dist/dto/remove-ids.dto.d.ts +3 -0
  349. package/untitled folder/package/dist/dto/remove-ids.dto.js +23 -0
  350. package/untitled folder/package/dist/dto/response-access-token.dto.d.ts +3 -0
  351. package/untitled folder/package/dist/dto/response-access-token.dto.js +24 -0
  352. package/untitled folder/package/dist/dto/response-id.dto.d.ts +8 -0
  353. package/untitled folder/package/dist/dto/response-id.dto.js +35 -0
  354. package/untitled folder/package/dist/dto/response-uid.dto.d.ts +6 -0
  355. package/untitled folder/package/dist/dto/response-uid.dto.js +27 -0
  356. package/untitled folder/package/dist/dto/update-ids.dto.d.ts +5 -0
  357. package/untitled folder/package/dist/dto/update-ids.dto.js +31 -0
  358. package/untitled folder/package/dist/dto/update-sort.dto.d.ts +9 -0
  359. package/untitled folder/package/dist/dto/update-sort.dto.js +50 -0
  360. package/untitled folder/package/dist/enums.common.d.ts +52 -0
  361. package/untitled folder/package/dist/enums.common.js +62 -0
  362. package/untitled folder/package/dist/events/event-bus.module.d.ts +2 -0
  363. package/untitled folder/package/dist/events/event-bus.module.js +44 -0
  364. package/untitled folder/package/dist/events/index.d.ts +4 -0
  365. package/untitled folder/package/dist/events/index.js +20 -0
  366. package/untitled folder/package/dist/events/listeners/audit-event.listener.d.ts +9 -0
  367. package/untitled folder/package/dist/events/listeners/audit-event.listener.js +58 -0
  368. package/untitled folder/package/dist/events/listeners/index.d.ts +1 -0
  369. package/untitled folder/package/dist/events/listeners/index.js +17 -0
  370. package/untitled folder/package/dist/events/listeners/system-event.listener.d.ts +9 -0
  371. package/untitled folder/package/dist/events/listeners/system-event.listener.js +58 -0
  372. package/untitled folder/package/dist/events/services/event-logger.service.d.ts +5 -0
  373. package/untitled folder/package/dist/events/services/event-logger.service.js +34 -0
  374. package/untitled folder/package/dist/events/services/event-notification.service.d.ts +6 -0
  375. package/untitled folder/package/dist/events/services/event-notification.service.js +74 -0
  376. package/untitled folder/package/dist/events/services/event-storage.service.d.ts +11 -0
  377. package/untitled folder/package/dist/events/services/event-storage.service.js +79 -0
  378. package/untitled folder/package/dist/events/services/index.d.ts +3 -0
  379. package/untitled folder/package/dist/events/services/index.js +19 -0
  380. package/untitled folder/package/dist/events/types/audit-events.type.d.ts +12 -0
  381. package/untitled folder/package/dist/events/types/audit-events.type.js +2 -0
  382. package/untitled folder/package/dist/events/types/index.d.ts +18 -0
  383. package/untitled folder/package/dist/events/types/index.js +17 -0
  384. package/untitled folder/package/dist/filters/http-exception.filter.d.ts +8 -0
  385. package/untitled folder/package/dist/filters/http-exception.filter.js +71 -0
  386. package/untitled folder/package/dist/filters/index.d.ts +1 -0
  387. package/untitled folder/package/dist/filters/index.js +17 -0
  388. package/untitled folder/package/dist/guards/auth.guard.d.ts +10 -0
  389. package/untitled folder/package/dist/guards/auth.guard.js +63 -0
  390. package/untitled folder/package/dist/guards/jwt.guard.d.ts +4 -0
  391. package/untitled folder/package/dist/guards/jwt.guard.js +17 -0
  392. package/untitled folder/package/dist/index.d.ts +16 -0
  393. package/untitled folder/package/dist/index.js +32 -0
  394. package/untitled folder/package/dist/interceptors/error.interceptor.d.ts +5 -0
  395. package/untitled folder/package/dist/interceptors/error.interceptor.js +26 -0
  396. package/untitled folder/package/dist/interceptors/index.d.ts +2 -0
  397. package/untitled folder/package/dist/interceptors/index.js +18 -0
  398. package/untitled folder/package/dist/interceptors/success.interceptor.d.ts +5 -0
  399. package/untitled folder/package/dist/interceptors/success.interceptor.js +30 -0
  400. package/untitled folder/package/dist/library.module.d.ts +2 -0
  401. package/untitled folder/package/dist/library.module.js +20 -0
  402. package/untitled folder/package/dist/logger/index.d.ts +2 -0
  403. package/untitled folder/package/dist/logger/index.js +18 -0
  404. package/untitled folder/package/dist/logger/pino-options.d.ts +31 -0
  405. package/untitled folder/package/dist/logger/pino-options.js +77 -0
  406. package/untitled folder/package/dist/logger/pino-pretty-transport.d.ts +1 -0
  407. package/untitled folder/package/dist/logger/pino-pretty-transport.js +155 -0
  408. package/untitled folder/package/dist/modules/index.d.ts +1 -0
  409. package/untitled folder/package/dist/modules/index.js +17 -0
  410. package/untitled folder/package/dist/modules/redis.module.d.ts +9 -0
  411. package/untitled folder/package/dist/modules/redis.module.js +60 -0
  412. package/untitled folder/package/dist/notifications/index.d.ts +53 -0
  413. package/untitled folder/package/dist/notifications/index.js +18 -0
  414. package/untitled folder/package/dist/notifications/notification.module.d.ts +2 -0
  415. package/untitled folder/package/dist/notifications/notification.module.js +36 -0
  416. package/untitled folder/package/dist/notifications/services/email.service.d.ts +7 -0
  417. package/untitled folder/package/dist/notifications/services/email.service.js +49 -0
  418. package/untitled folder/package/dist/notifications/services/index.d.ts +5 -0
  419. package/untitled folder/package/dist/notifications/services/index.js +21 -0
  420. package/untitled folder/package/dist/notifications/services/kakao.service.d.ts +8 -0
  421. package/untitled folder/package/dist/notifications/services/kakao.service.js +57 -0
  422. package/untitled folder/package/dist/notifications/services/notification.service.d.ts +15 -0
  423. package/untitled folder/package/dist/notifications/services/notification.service.js +83 -0
  424. package/untitled folder/package/dist/notifications/services/slack.service.d.ts +6 -0
  425. package/untitled folder/package/dist/notifications/services/slack.service.js +41 -0
  426. package/untitled folder/package/dist/notifications/services/sms.service.d.ts +6 -0
  427. package/untitled folder/package/dist/notifications/services/sms.service.js +41 -0
  428. package/untitled folder/package/dist/passport/jwt.strategy.d.ts +6 -0
  429. package/untitled folder/package/dist/passport/jwt.strategy.js +55 -0
  430. package/untitled folder/package/dist/passport/kakao.strategy.d.ts +12 -0
  431. package/untitled folder/package/dist/passport/kakao.strategy.js +36 -0
  432. package/untitled folder/package/dist/passport/local.strategy.d.ts +6 -0
  433. package/untitled folder/package/dist/passport/local.strategy.js +41 -0
  434. package/untitled folder/package/dist/redis/index.d.ts +2 -0
  435. package/untitled folder/package/dist/redis/index.js +18 -0
  436. package/untitled folder/package/dist/redis/redis-constraint.d.ts +1 -0
  437. package/untitled folder/package/dist/redis/redis-constraint.js +4 -0
  438. package/untitled folder/package/dist/redis/redis.module.d.ts +8 -0
  439. package/untitled folder/package/dist/redis/redis.module.js +62 -0
  440. package/untitled folder/package/dist/redis/redis.service.d.ts +12 -0
  441. package/untitled folder/package/dist/redis/redis.service.js +76 -0
  442. package/untitled folder/package/dist/services/file.service.d.ts +55 -0
  443. package/untitled folder/package/dist/services/file.service.js +76 -0
  444. package/untitled folder/package/dist/services/index.d.ts +2 -0
  445. package/untitled folder/package/dist/services/index.js +18 -0
  446. package/untitled folder/package/dist/services/message-template.service.d.ts +15 -0
  447. package/untitled folder/package/dist/services/message-template.service.js +74 -0
  448. package/untitled folder/package/dist/services/permission-checker.service.d.ts +38 -0
  449. package/untitled folder/package/dist/services/permission-checker.service.js +64 -0
  450. package/untitled folder/package/dist/setup-swagger.d.ts +9 -0
  451. package/untitled folder/package/dist/setup-swagger.js +32 -0
  452. package/untitled folder/package/dist/utils/common.utils.d.ts +5 -0
  453. package/untitled folder/package/dist/utils/common.utils.js +42 -0
  454. package/untitled folder/package/dist/utils/enum.utils.d.ts +1 -0
  455. package/untitled folder/package/dist/utils/enum.utils.js +8 -0
  456. package/untitled folder/package/dist/utils/index.d.ts +5 -0
  457. package/untitled folder/package/dist/utils/index.js +21 -0
  458. package/untitled folder/package/dist/utils/object-diff.d.ts +1 -0
  459. package/untitled folder/package/dist/utils/object-diff.js +30 -0
  460. package/untitled folder/package/dist/utils/pagination-qb.utils.d.ts +9 -0
  461. package/untitled folder/package/dist/utils/pagination-qb.utils.js +150 -0
  462. package/untitled folder/package/dist/utils/pagination.utils.d.ts +21 -0
  463. package/untitled folder/package/dist/utils/pagination.utils.js +32 -0
  464. package/untitled folder/package/eslint.config.js +31 -0
  465. package/untitled folder/package/index.d.ts +1 -0
  466. package/untitled folder/package/index.js +17 -0
  467. package/untitled folder/package/jest.config.js +11 -0
  468. package/untitled folder/package/package.json +86 -0
  469. package/untitled folder/package/tsconfig.build.json +19 -0
  470. package/untitled folder/package/tsconfig.json +18 -0
@@ -0,0 +1,30 @@
1
+ import { NotificationPayload } from '..';
2
+ import { EmailService } from './email.service';
3
+ import { KakaoService } from './kakao.service';
4
+ import { MessageTemplateService } from './message-template.service';
5
+ import { SlackService } from './slack.service';
6
+ import { SmsService } from './sms.service';
7
+ export declare class NotificationSendService {
8
+ private readonly emailService;
9
+ private readonly smsService;
10
+ private readonly kakaoService;
11
+ private readonly slackService;
12
+ private readonly messageTemplateService;
13
+ constructor(emailService: EmailService, smsService: SmsService, kakaoService: KakaoService, slackService: SlackService, messageTemplateService: MessageTemplateService);
14
+ send(payload: NotificationPayload): Promise<{
15
+ user_id: number;
16
+ recipient: string;
17
+ success: boolean;
18
+ messageId: string;
19
+ status: string;
20
+ }[] | {
21
+ channel: string;
22
+ success: boolean;
23
+ messageId: string;
24
+ status: string;
25
+ }[]>;
26
+ private sendEmail;
27
+ private sendSms;
28
+ private sendKakao;
29
+ private sendSlack;
30
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,i,s){var r,a=arguments.length,n=a<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,s);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(n=(a<3?r(n):a>3?r(t,i,n):r(t,i))||n);return a>3&&n&&Object.defineProperty(t,i,n),n},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__awaiter||function(e,t,i,s){return new(i||(i=Promise))(function(r,a){function fulfilled(e){try{step(s.next(e))}catch(e){a(e)}}function rejected(e){try{step(s.throw(e))}catch(e){a(e)}}function step(e){e.done?r(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((s=s.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.NotificationSendService=void 0;const s=require("@nestjs/common"),r=require("./email.service"),a=require("./kakao.service"),n=require("./message-template.service"),c=require("./slack.service"),o=require("./sms.service");let l=class NotificationSendService{constructor(e,t,i,s,r){this.emailService=e,this.smsService=t,this.kakaoService=i,this.slackService=s,this.messageTemplateService=r}send(e){return i(this,void 0,void 0,function*(){switch(e.type){case"email":return this.sendEmail(e);case"sms":return this.sendSms(e);case"kakao":return this.sendKakao(e);case"slack":return this.sendSlack(e)}})}sendEmail(e){return i(this,void 0,void 0,function*(){const t=[];for(const i of e.recipients){let s,r;if(e.template_key){const t=yield this.messageTemplateService.getTemplate("email",e.template_key);if(!t)throw new Error("Template not found");const a=Object.assign(Object.assign({},e.variables),i.variables);s=this.messageTemplateService.renderTemplate(t,a),r=t.subject}else{if(!e.subject||!e.body)throw new Error("subject, body is required");s=e.body,r=e.subject}t.push({recipient:i.recipient,user_id:i.user_id,subject:r,text:s,variables:i.variables})}return yield this.emailService.send(t)})}sendSms(e){return i(this,void 0,void 0,function*(){const t=[];for(const i of e.recipients){let s;if(e.template_key){const t=yield this.messageTemplateService.getTemplate("sms",e.template_key);if(!t)throw new Error("Template not found");const r=Object.assign(Object.assign({},e.variables),i.variables);s=this.messageTemplateService.renderTemplate(t,r)}else{if(!e.message)throw new Error("message is required");s=e.message}t.push({recipient:i.recipient,user_id:i.user_id,message:s,variables:i.variables})}return yield this.smsService.send(t)})}sendKakao(e){return i(this,void 0,void 0,function*(){const t=e.recipients.map(t=>({recipient:t.recipient,user_id:t.user_id,template_code:e.template_key,variables:Object.assign(Object.assign({},e.variables),t.variables)}));return yield this.kakaoService.send(t)})}sendSlack(e){return i(this,void 0,void 0,function*(){let t;if(e.template_key){const i=yield this.messageTemplateService.getTemplate("slack",e.template_key);if(!i)throw new Error("Template not found");t=this.messageTemplateService.renderTemplate(i,e.variables||{})}else{if(!e.message)throw new Error("message is required");t=e.message}return[yield this.slackService.send(e.channel,t)]})}};exports.NotificationSendService=l,exports.NotificationSendService=l=e([(0,s.Injectable)(),t("design:paramtypes",[r.EmailService,o.SmsService,a.KakaoService,c.SlackService,n.MessageTemplateService])],l);
@@ -0,0 +1,37 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ import { Repository } from 'typeorm';
3
+ import { Notification, NotificationRecipient } from '../../database/entities';
4
+ import { NOTIFICATION_STATUS } from '../../enums.common';
5
+ export declare class NotificationService {
6
+ private readonly notificationRepository;
7
+ private readonly notificationRecipientRepository;
8
+ private readonly configService;
9
+ constructor(notificationRepository: Repository<Notification>, notificationRecipientRepository: Repository<NotificationRecipient>, configService: ConfigService);
10
+ create({ type, template_key, title, content, recipients, variables, }: {
11
+ type: string;
12
+ template_key: string;
13
+ title?: string;
14
+ content?: string;
15
+ recipients: Array<{
16
+ user_id: number;
17
+ recipient: string;
18
+ variables?: Record<string, any>;
19
+ }>;
20
+ variables?: Record<string, any>;
21
+ }): Promise<{
22
+ notification: {
23
+ type: string;
24
+ template_key: string;
25
+ title: string;
26
+ content: string;
27
+ sender: string;
28
+ status: NOTIFICATION_STATUS.PENDING;
29
+ } & Notification;
30
+ recipients: NotificationRecipient[];
31
+ }>;
32
+ private getSenderByType;
33
+ findAll(): Promise<Notification[]>;
34
+ find(id: number): Promise<Notification>;
35
+ resend(notification_id: number, user_id?: number): Promise<NotificationRecipient[]>;
36
+ markAsRead(notification_id: number, user_id: number): Promise<NotificationRecipient>;
37
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,i,n){var o,r=arguments.length,c=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,i,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(c=(r<3?o(c):r>3?o(t,i,c):o(t,i))||c);return r>3&&c&&Object.defineProperty(t,i,c),c},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__param||function(e,t){return function(i,n){t(i,n,e)}},n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,r){function fulfilled(e){try{step(n.next(e))}catch(e){r(e)}}function rejected(e){try{step(n.throw(e))}catch(e){r(e)}}function step(e){e.done?o(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.NotificationService=void 0;const o=require("@nestjs/common"),r=require("@nestjs/typeorm"),c=require("@nestjs/config"),s=require("typeorm"),a=require("../../database/entities"),f=require("../../enums.common");let u=class NotificationService{constructor(e,t,i){this.notificationRepository=e,this.notificationRecipientRepository=t,this.configService=i}create(e){return n(this,arguments,void 0,function*({type:e,template_key:t,title:i,content:n,recipients:o,variables:r}){const c=this.getSenderByType(e),s=yield this.notificationRepository.save({type:e,template_key:t,title:i,content:n,sender:c,status:f.NOTIFICATION_STATUS.PENDING}),a=o.map(e=>this.notificationRecipientRepository.create({notification_id:s.id,user_id:e.user_id,recipient:e.recipient,variables:e.variables,status:f.NOTIFICATION_STATUS.PENDING}));return yield this.notificationRecipientRepository.save(a),{notification:s,recipients:a}})}getSenderByType(e){switch(e){case"email":return this.configService.get("EMAIL_FROM")||"noreply@example.com";case"sms":return this.configService.get("SMS_FROM")||"";case"kakao":return this.configService.get("KAKAO_FROM")||"";case"slack":return this.configService.get("SLACK_CHANNEL")||"";default:return""}}findAll(){return n(this,void 0,void 0,function*(){return this.notificationRepository.find({relations:["recipients"],order:{created_at:"DESC"}})})}find(e){return n(this,void 0,void 0,function*(){return this.notificationRepository.findOne({where:{id:e},relations:["recipients"]})})}resend(e,t){return n(this,void 0,void 0,function*(){const i=yield this.notificationRecipientRepository.find({where:t?{notification_id:e,user_id:t}:{notification_id:e}});for(const e of i)e.status=f.NOTIFICATION_STATUS.PENDING,e.failed_at=null,e.reason_failed=null,yield this.notificationRecipientRepository.save(e);return i})}markAsRead(e,t){return n(this,void 0,void 0,function*(){const i=yield this.notificationRecipientRepository.findOne({where:{notification_id:e,user_id:t}});return i&&(i.status=f.NOTIFICATION_STATUS.READ,i.read_at=new Date,yield this.notificationRecipientRepository.save(i)),i})}};exports.NotificationService=u,exports.NotificationService=u=e([(0,o.Injectable)(),i(0,(0,r.InjectRepository)(a.Notification)),i(1,(0,r.InjectRepository)(a.NotificationRecipient)),t("design:paramtypes",[s.Repository,s.Repository,c.ConfigService])],u);
@@ -0,0 +1,11 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ export declare class SlackService {
3
+ private readonly configService;
4
+ constructor(configService: ConfigService);
5
+ send(channel: string, message: string): Promise<{
6
+ channel: string;
7
+ success: boolean;
8
+ messageId: string;
9
+ status: string;
10
+ }>;
11
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,n,c){var o,r=arguments.length,i=r<3?t:null===c?c=Object.getOwnPropertyDescriptor(t,n):c;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,c);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(r<3?o(i):r>3?o(t,n,i):o(t,n))||i);return r>3&&i&&Object.defineProperty(t,n,i),i},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},n=this&&this.__awaiter||function(e,t,n,c){return new(n||(n=Promise))(function(o,r){function fulfilled(e){try{step(c.next(e))}catch(e){r(e)}}function rejected(e){try{step(c.throw(e))}catch(e){r(e)}}function step(e){e.done?o(e.value):function adopt(e){return e instanceof n?e:new n(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((c=c.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SlackService=void 0;const c=require("@nestjs/common"),o=require("@nestjs/config");let r=class SlackService{constructor(e){this.configService=e}send(e,t){return n(this,void 0,void 0,function*(){if(!this.configService.get("SLACK_CHANNEL")||!this.configService.get("SLACK_WEBHOOK_URL"))throw new Error("SLACK_CHANNEL or SLACK_WEBHOOK_URL is not set");return console.log("📢 [SLACK] 발송:",{channel:e,message:t,webhook_url:this.configService.get("SLACK_WEBHOOK_URL"),default_channel:this.configService.get("SLACK_CHANNEL"),timestamp:(new Date).toISOString()}),{channel:e,success:!0,messageId:`slack-${Date.now()}`,status:"sent"}})}};exports.SlackService=r,exports.SlackService=r=e([(0,c.Injectable)(),t("design:paramtypes",[o.ConfigService])],r);
@@ -0,0 +1,19 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ import { NotificationService } from './notification.service';
3
+ export declare class SmsService {
4
+ private readonly configService;
5
+ private readonly notificationService;
6
+ constructor(configService: ConfigService, notificationService: NotificationService);
7
+ send(recipients: Array<{
8
+ recipient: string;
9
+ user_id: number;
10
+ message: string;
11
+ variables?: Record<string, any>;
12
+ }>): Promise<{
13
+ user_id: number;
14
+ recipient: string;
15
+ success: boolean;
16
+ messageId: string;
17
+ status: string;
18
+ }[]>;
19
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,i,r){var n,c=arguments.length,o=c<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(o=(c<3?n(o):c>3?n(t,i,o):n(t,i))||o);return c>3&&o&&Object.defineProperty(t,i,o),o},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(n,c){function fulfilled(e){try{step(r.next(e))}catch(e){c(e)}}function rejected(e){try{step(r.throw(e))}catch(e){c(e)}}function step(e){e.done?n(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SmsService=void 0;const r=require("@nestjs/common"),n=require("@nestjs/config"),c=require("./notification.service");let o=class SmsService{constructor(e,t){this.configService=e,this.notificationService=t}send(e){return i(this,void 0,void 0,function*(){if(!this.configService.get("SMS_FROM"))throw new Error("SMS_FROM is not set");return console.log("📱 [SMS] 배열 발송:",{count:e.length,from:this.configService.get("SMS_FROM"),provider:this.configService.get("SMS_PROVIDER")||"default",recipients:e.map(e=>({user_id:e.user_id,recipient:e.recipient,message:e.message,variables:e.variables})),timestamp:(new Date).toISOString()}),e.map(e=>({user_id:e.user_id,recipient:e.recipient,success:!0,messageId:`sms-${Date.now()}-${e.user_id}`,status:"sent"}))})}};exports.SmsService=o,exports.SmsService=o=e([(0,r.Injectable)(),t("design:paramtypes",[n.ConfigService,c.NotificationService])],o);
@@ -1,55 +1 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
- return new (P || (P = Promise))(function (resolve, reject) {
14
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
- step((generator = generator.apply(thisArg, _arguments || [])).next());
18
- });
19
- };
20
- var __rest = (this && this.__rest) || function (s, e) {
21
- var t = {};
22
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
23
- t[p] = s[p];
24
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
25
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
26
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
27
- t[p[i]] = s[p[i]];
28
- }
29
- return t;
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.JwtStrategy = void 0;
33
- const passport_jwt_1 = require("passport-jwt");
34
- const passport_1 = require("@nestjs/passport");
35
- const common_1 = require("@nestjs/common");
36
- let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) {
37
- constructor(secretKey) {
38
- super({
39
- jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
40
- ignoreExpiration: false,
41
- secretOrKey: secretKey,
42
- });
43
- }
44
- validate(payload) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- const { sub } = payload, rest = __rest(payload, ["sub"]);
47
- return Object.assign({ sub }, rest);
48
- });
49
- }
50
- };
51
- exports.JwtStrategy = JwtStrategy;
52
- exports.JwtStrategy = JwtStrategy = __decorate([
53
- (0, common_1.Injectable)(),
54
- __metadata("design:paramtypes", [String])
55
- ], JwtStrategy);
1
+ var t=this&&this.__decorate||function(t,e,r,n){var o,s=arguments.length,a=s<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,r,n);else for(var c=t.length-1;c>=0;c--)(o=t[c])&&(a=(s<3?o(a):s>3?o(e,r,a):o(e,r))||a);return s>3&&a&&Object.defineProperty(e,r,a),a},e=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))(function(o,s){function fulfilled(t){try{step(n.next(t))}catch(t){s(t)}}function rejected(t){try{step(n.throw(t))}catch(t){s(t)}}function step(t){t.done?o(t.value):function adopt(t){return t instanceof r?t:new r(function(e){e(t)})}(t.value).then(fulfilled,rejected)}step((n=n.apply(t,e||[])).next())})},n=this&&this.__rest||function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(t);o<n.length;o++)e.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(r[n[o]]=t[n[o]])}return r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.JwtStrategy=void 0;const o=require("passport-jwt"),s=require("@nestjs/passport"),a=require("@nestjs/common");let c=class JwtStrategy extends((0,s.PassportStrategy)(o.Strategy)){constructor(t){super({jwtFromRequest:o.ExtractJwt.fromAuthHeaderAsBearerToken(),ignoreExpiration:!1,secretOrKey:t})}validate(t){return r(this,void 0,void 0,function*(){const{sub:e}=t,r=n(t,["sub"]);return Object.assign({sub:e},r)})}};exports.JwtStrategy=c,exports.JwtStrategy=c=t([(0,a.Injectable)(),e("design:paramtypes",[String])],c);
@@ -1,36 +1 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.KakaoStrategy = void 0;
13
- const passport_1 = require("@nestjs/passport");
14
- const passport_kakao_1 = require("passport-kakao");
15
- class KakaoStrategy extends (0, passport_1.PassportStrategy)(passport_kakao_1.Strategy, "kakao") {
16
- constructor() {
17
- super({
18
- clientID: process.env.KAKAO_CLIENT_ID,
19
- clientSecret: process.env.KAKAO_CLIENT_SECRET,
20
- callbackURL: process.env.KAKAO_CALLBACK_URL,
21
- });
22
- }
23
- validate(accessToken, refreshToken, profile) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- const { properties, kakao_account } = profile._json;
26
- return {
27
- vendor_id: profile.id,
28
- name: profile.displayName,
29
- nickname: properties === null || properties === void 0 ? void 0 : properties.nickname,
30
- email: kakao_account === null || kakao_account === void 0 ? void 0 : kakao_account.email,
31
- profile_image: properties === null || properties === void 0 ? void 0 : properties.profile_image,
32
- };
33
- });
34
- }
35
- }
36
- exports.KakaoStrategy = KakaoStrategy;
1
+ var e=this&&this.__awaiter||function(e,t,n,a){return new(n||(n=Promise))(function(o,r){function fulfilled(e){try{step(a.next(e))}catch(e){r(e)}}function rejected(e){try{step(a.throw(e))}catch(e){r(e)}}function step(e){e.done?o(e.value):function adopt(e){return e instanceof n?e:new n(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((a=a.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.KakaoStrategy=void 0;const t=require("@nestjs/passport"),n=require("passport-kakao");class KakaoStrategy extends((0,t.PassportStrategy)(n.Strategy,"kakao")){constructor(){super({clientID:process.env.KAKAO_CLIENT_ID,clientSecret:process.env.KAKAO_CLIENT_SECRET,callbackURL:process.env.KAKAO_CALLBACK_URL})}validate(t,n,a){return e(this,void 0,void 0,function*(){const{properties:e,kakao_account:t}=a._json;return{vendor_id:a.id,name:a.displayName,nickname:null==e?void 0:e.nickname,email:null==t?void 0:t.email,profile_image:null==e?void 0:e.profile_image}})}}exports.KakaoStrategy=KakaoStrategy;
@@ -1,41 +1 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
- return new (P || (P = Promise))(function (resolve, reject) {
14
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
- step((generator = generator.apply(thisArg, _arguments || [])).next());
18
- });
19
- };
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.LocalStrategy = void 0;
22
- const passport_local_1 = require("passport-local");
23
- const passport_1 = require("@nestjs/passport");
24
- const common_1 = require("@nestjs/common");
25
- let LocalStrategy = class LocalStrategy extends (0, passport_1.PassportStrategy)(passport_local_1.Strategy) {
26
- constructor() {
27
- super({
28
- usernameField: 'userid',
29
- passwordField: 'password',
30
- });
31
- }
32
- validate(userid, password) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- });
35
- }
36
- };
37
- exports.LocalStrategy = LocalStrategy;
38
- exports.LocalStrategy = LocalStrategy = __decorate([
39
- (0, common_1.Injectable)(),
40
- __metadata("design:paramtypes", [])
41
- ], LocalStrategy);
1
+ var e=this&&this.__decorate||function(e,t,r,o){var n,a=arguments.length,c=a<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,r,o);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(c=(a<3?n(c):a>3?n(t,r,c):n(t,r))||c);return a>3&&c&&Object.defineProperty(t,r,c),c},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))(function(n,a){function fulfilled(e){try{step(o.next(e))}catch(e){a(e)}}function rejected(e){try{step(o.throw(e))}catch(e){a(e)}}function step(e){e.done?n(e.value):function adopt(e){return e instanceof r?e:new r(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.LocalStrategy=void 0;const o=require("passport-local"),n=require("@nestjs/passport"),a=require("@nestjs/common");let c=class LocalStrategy extends((0,n.PassportStrategy)(o.Strategy)){constructor(){super({usernameField:"userid",passwordField:"password"})}validate(e,t){return r(this,void 0,void 0,function*(){})}};exports.LocalStrategy=c,exports.LocalStrategy=c=e([(0,a.Injectable)(),t("design:paramtypes",[])],c);
@@ -0,0 +1,2 @@
1
+ export * from './redis.module';
2
+ export * from './redis.service';
@@ -0,0 +1 @@
1
+ var e=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,o)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),r=this&&this.__exportStar||function(r,t){for(var i in r)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||e(t,r,i)};Object.defineProperty(exports,"__esModule",{value:!0}),r(require("./redis.module"),exports),r(require("./redis.service"),exports);
@@ -0,0 +1 @@
1
+ export declare const REDIS_CLIENT = "REDIS_CLIENT";
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.REDIS_CLIENT=void 0,exports.REDIS_CLIENT="REDIS_CLIENT";
@@ -0,0 +1,8 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { RedisOptions } from 'ioredis';
3
+ export declare class RedisModule {
4
+ static forRootAsync(options: {
5
+ useFactory: (...args: any[]) => RedisOptions;
6
+ inject?: any[];
7
+ }): DynamicModule;
8
+ }
@@ -0,0 +1 @@
1
+ var e,t=this&&this.__decorate||function(e,t,r,o){var n,i=arguments.length,c=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,r,o);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(c=(i<3?n(c):i>3?n(t,r,c):n(t,r))||c);return i>3&&c&&Object.defineProperty(t,r,c),c},r=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))(function(n,i){function fulfilled(e){try{step(o.next(e))}catch(e){i(e)}}function rejected(e){try{step(o.throw(e))}catch(e){i(e)}}function step(e){e.done?n(e.value):function adopt(e){return e instanceof r?e:new r(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.RedisModule=void 0;const o=require("@nestjs/common"),n=require("@nestjs/config"),i=require("ioredis"),c=require("./redis.service"),s=require("./redis-constraint");let d=e=class RedisModule{static forRootAsync(t){return{module:e,imports:[n.ConfigModule],providers:[{provide:s.REDIS_CLIENT,useFactory:(...e)=>r(this,void 0,void 0,function*(){const r=t.useFactory(...e);r.retryStrategy=e=>{const t=new o.Logger("Redis");return e>5?(t.error("Redis Reconnect Max Times, Stop Reconnect"),null):2e3};const n=new i.default(r),c=new o.Logger("Redis");return n.on("ready",()=>c.log("Redis Ready")),n.on("error",e=>c.error("Redis Error: "+e)),n.on("reconnecting",()=>c.warn("Redis Reconnecting")),n}),inject:t.inject||[]},c.RedisService],exports:[s.REDIS_CLIENT,c.RedisService]}}};exports.RedisModule=d,exports.RedisModule=d=e=t([(0,o.Global)(),(0,o.Module)({})],d);
@@ -0,0 +1,12 @@
1
+ import Redis from 'ioredis';
2
+ export declare class RedisService {
3
+ private readonly redisClient;
4
+ constructor(redisClient: Redis);
5
+ set(key: string, value: string, expireSeconds?: number): Promise<'OK' | null>;
6
+ get(key: string): Promise<string | null>;
7
+ del(key: string): Promise<number>;
8
+ hset(key: string, field: string, value: string): Promise<number>;
9
+ hget(key: string, field: string): Promise<string | null>;
10
+ hgetall(key: string): Promise<Record<string, string>>;
11
+ hdel(key: string, field: string): Promise<number>;
12
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,i,n){var r,o=arguments.length,s=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,n);else for(var c=e.length-1;c>=0;c--)(r=e[c])&&(s=(o<3?r(s):o>3?r(t,i,s):r(t,i))||s);return o>3&&s&&Object.defineProperty(t,i,s),s},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__param||function(e,t){return function(i,n){t(i,n,e)}},n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n.throw(e))}catch(e){o(e)}}function step(e){e.done?r(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.RedisService=void 0;const r=require("@nestjs/common"),o=require("ioredis"),s=require("./redis-constraint");let c=class RedisService{constructor(e){this.redisClient=e}set(e,t,i){return n(this,void 0,void 0,function*(){return i?this.redisClient.set(e,t,"EX",i):this.redisClient.set(e,t)})}get(e){return n(this,void 0,void 0,function*(){return this.redisClient.get(e)})}del(e){return n(this,void 0,void 0,function*(){return this.redisClient.del(e)})}hset(e,t,i){return n(this,void 0,void 0,function*(){return this.redisClient.hset(e,t,i)})}hget(e,t){return n(this,void 0,void 0,function*(){return this.redisClient.hget(e,t)})}hgetall(e){return n(this,void 0,void 0,function*(){return this.redisClient.hgetall(e)})}hdel(e,t){return n(this,void 0,void 0,function*(){return this.redisClient.hdel(e,t)})}};exports.RedisService=c,exports.RedisService=c=e([(0,r.Injectable)(),i(0,(0,r.Inject)(s.REDIS_CLIENT)),t("design:paramtypes",[o.default])],c);
@@ -0,0 +1,5 @@
1
+ export declare class CreateRoleBaseDto {
2
+ name: string;
3
+ description: string;
4
+ permissions?: string[];
5
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,r,o){var a,s=arguments.length,i=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(s<3?a(i):s>3?a(t,r,i):a(t,r))||i);return s>3&&i&&Object.defineProperty(t,r,i),i},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CreateRoleBaseDto=void 0;const r=require("@nestjs/swagger"),o=require("class-validator");class CreateRoleBaseDto{}exports.CreateRoleBaseDto=CreateRoleBaseDto,e([(0,r.ApiProperty)({example:"Manager"}),(0,o.IsString)(),t("design:type",String)],CreateRoleBaseDto.prototype,"name",void 0),e([(0,r.ApiProperty)({example:"Manager permissions"}),(0,o.IsString)(),(0,o.IsOptional)(),t("design:type",String)],CreateRoleBaseDto.prototype,"description",void 0),e([(0,r.ApiProperty)({example:["user:list","user:read","blog:*"]}),(0,o.IsArray)(),(0,o.IsString)({each:!0}),(0,o.IsOptional)(),t("design:type",Array)],CreateRoleBaseDto.prototype,"permissions",void 0);
@@ -0,0 +1,3 @@
1
+ export * from './create-role.dto';
2
+ export * from './update-role.dto';
3
+ export * from './response-roles.dto';
@@ -0,0 +1 @@
1
+ var e=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&!("get"in i?!r.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),r=this&&this.__exportStar||function(r,t){for(var o in r)"default"===o||Object.prototype.hasOwnProperty.call(t,o)||e(t,r,o)};Object.defineProperty(exports,"__esModule",{value:!0}),r(require("./create-role.dto"),exports),r(require("./update-role.dto"),exports),r(require("./response-roles.dto"),exports);
@@ -0,0 +1,15 @@
1
+ import { PaginationDto } from '../../dto';
2
+ export declare class ResponseRoleBaseDto {
3
+ id: number;
4
+ name: string;
5
+ description: string;
6
+ permissions: string[];
7
+ is_default: boolean;
8
+ is_system: boolean;
9
+ sort: number;
10
+ created_at: Date;
11
+ }
12
+ export declare class ResponseRolesBaseDto {
13
+ items: ResponseRoleBaseDto[];
14
+ pagination: PaginationDto;
15
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,o,s,t){var p,n=arguments.length,a=n<3?o:null===t?t=Object.getOwnPropertyDescriptor(o,s):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,o,s,t);else for(var r=e.length-1;r>=0;r--)(p=e[r])&&(a=(n<3?p(a):n>3?p(o,s,a):p(o,s))||a);return n>3&&a&&Object.defineProperty(o,s,a),a},o=this&&this.__metadata||function(e,o){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,o)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ResponseRolesBaseDto=exports.ResponseRoleBaseDto=void 0;const s=require("class-transformer"),t=require("../../dto");class ResponseRoleBaseDto{}exports.ResponseRoleBaseDto=ResponseRoleBaseDto,e([(0,s.Expose)(),o("design:type",Number)],ResponseRoleBaseDto.prototype,"id",void 0),e([(0,s.Expose)(),o("design:type",String)],ResponseRoleBaseDto.prototype,"name",void 0),e([(0,s.Expose)(),o("design:type",String)],ResponseRoleBaseDto.prototype,"description",void 0),e([(0,s.Expose)(),o("design:type",Array)],ResponseRoleBaseDto.prototype,"permissions",void 0),e([(0,s.Expose)(),o("design:type",Boolean)],ResponseRoleBaseDto.prototype,"is_default",void 0),e([(0,s.Expose)(),o("design:type",Boolean)],ResponseRoleBaseDto.prototype,"is_system",void 0),e([(0,s.Expose)(),o("design:type",Number)],ResponseRoleBaseDto.prototype,"sort",void 0),e([(0,s.Expose)(),o("design:type",Date)],ResponseRoleBaseDto.prototype,"created_at",void 0);class ResponseRolesBaseDto{}exports.ResponseRolesBaseDto=ResponseRolesBaseDto,e([(0,s.Expose)(),(0,s.Type)(()=>ResponseRoleBaseDto),o("design:type",Array)],ResponseRolesBaseDto.prototype,"items",void 0),e([(0,s.Expose)(),(0,s.Type)(()=>t.PaginationDto),o("design:type",t.PaginationDto)],ResponseRolesBaseDto.prototype,"pagination",void 0);
@@ -0,0 +1,6 @@
1
+ import { CreateRoleBaseDto } from './create-role.dto';
2
+ declare const UpdateRoleBaseDto_base: import("@nestjs/common").Type<Partial<CreateRoleBaseDto>>;
3
+ export declare class UpdateRoleBaseDto extends UpdateRoleBaseDto_base {
4
+ static readonly keys: readonly ["name", "description", "permissions"];
5
+ }
6
+ export {};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.UpdateRoleBaseDto=void 0;const e=require("@nestjs/swagger"),t=require("./create-role.dto");class UpdateRoleBaseDto extends((0,e.PartialType)(t.CreateRoleBaseDto)){}exports.UpdateRoleBaseDto=UpdateRoleBaseDto,UpdateRoleBaseDto.keys=["name","description","permissions"];
@@ -0,0 +1,3 @@
1
+ export * from './role.module';
2
+ export * from './role.service';
3
+ export * from './dto';
@@ -0,0 +1 @@
1
+ var e=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&!("get"in i?!r.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),r=this&&this.__exportStar||function(r,t){for(var o in r)"default"===o||Object.prototype.hasOwnProperty.call(t,o)||e(t,r,o)};Object.defineProperty(exports,"__esModule",{value:!0}),r(require("./role.module"),exports),r(require("./role.service"),exports),r(require("./dto"),exports);
@@ -0,0 +1,2 @@
1
+ export declare class RoleModule {
2
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,o,r,t){var l,s=arguments.length,i=s<3?o:null===t?t=Object.getOwnPropertyDescriptor(o,r):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,o,r,t);else for(var c=e.length-1;c>=0;c--)(l=e[c])&&(i=(s<3?l(i):s>3?l(o,r,i):l(o,r))||i);return s>3&&i&&Object.defineProperty(o,r,i),i};Object.defineProperty(exports,"__esModule",{value:!0}),exports.RoleModule=void 0;const o=require("@nestjs/common"),r=require("@nestjs/typeorm"),t=require("../database/entities"),l=require("./role.service");let s=class RoleModule{};exports.RoleModule=s,exports.RoleModule=s=e([(0,o.Module)({imports:[r.TypeOrmModule.forFeature([t.Role])],providers:[l.RoleService],exports:[l.RoleService]})],s);
@@ -0,0 +1,17 @@
1
+ import { DataSource, Repository } from 'typeorm';
2
+ import { Role } from '../database/entities';
3
+ import { CustomParamsDto } from '../dto';
4
+ import { CreateRoleBaseDto, ResponseRoleBaseDto, ResponseRolesBaseDto, UpdateRoleBaseDto } from './dto';
5
+ export declare class RoleService {
6
+ protected readonly repository: Repository<Role>;
7
+ protected readonly dataSource: DataSource;
8
+ constructor(repository: Repository<Role>, dataSource: DataSource);
9
+ protected validatePermissions(permissions: string[]): void;
10
+ protected validateRoleLimit(): Promise<void>;
11
+ protected checkRoleUsage(id: number): Promise<void>;
12
+ create(body: CreateRoleBaseDto): Promise<ResponseRoleBaseDto>;
13
+ findAll(c_params: CustomParamsDto): Promise<ResponseRolesBaseDto>;
14
+ findOne(id: number): Promise<ResponseRoleBaseDto>;
15
+ update(id: number, body: UpdateRoleBaseDto): Promise<ResponseRoleBaseDto>;
16
+ remove(id: number): Promise<void>;
17
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,i,o){var s,n=arguments.length,r=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(n<3?s(r):n>3?s(t,i,r):s(t,i))||r);return n>3&&r&&Object.defineProperty(t,i,r),r},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},i=this&&this.__param||function(e,t){return function(i,o){t(i,o,e)}},o=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(s,n){function fulfilled(e){try{step(o.next(e))}catch(e){n(e)}}function rejected(e){try{step(o.throw(e))}catch(e){n(e)}}function step(e){e.done?s(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((o=o.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.RoleService=void 0;const s=require("@nestjs/common"),n=require("@nestjs/typeorm"),r=require("class-transformer"),a=require("typeorm"),d=require("../database/entities"),l=require("../utils"),c=require("./dto");let p=class RoleService{constructor(e,t){this.repository=e,this.dataSource=t}validatePermissions(e){throw new s.BadRequestException("validatePermissions must be implemented in app service")}validateRoleLimit(){return o(this,void 0,void 0,function*(){throw new s.BadRequestException("validateRoleLimit must be implemented in app service")})}checkRoleUsage(e){return o(this,void 0,void 0,function*(){throw new s.BadRequestException("checkRoleUsage must be implemented in app service")})}create(e){return o(this,void 0,void 0,function*(){if(!e.permissions||0===e.permissions.length)throw new s.BadRequestException("Permissions are required");yield this.validateRoleLimit();if(yield this.repository.findOne({where:{name:e.name}}))throw new s.ConflictException("Role name already exists");this.validatePermissions(e.permissions);const t=(yield this.repository.count())+1,i=yield this.repository.save({name:e.name,description:e.description,permissions:e.permissions,sort:t});return(0,r.plainToClass)(c.ResponseRoleBaseDto,i)})}findAll(e){return o(this,void 0,void 0,function*(){const{_page:t,_limit:i,_keyword:o,_group:s,_sort:n}=e;let a=this.repository.createQueryBuilder("roles").select(["roles"]).orderBy("roles.sort","ASC");a=(0,l.applyFiltersAndSorting)(a,{_keyword:o,_group:s,_sort:n,keywordFields:["name"],aliasName:"roles"});const d=yield(0,l.paginate)(a,{page:t,limit:i});return(0,r.plainToClass)(c.ResponseRolesBaseDto,d)})}findOne(e){return o(this,void 0,void 0,function*(){const t=yield this.repository.findOne({where:{id:e}});if(!t)throw new s.NotFoundException(`Role with ID ${e} not found`);return(0,r.plainToClass)(c.ResponseRoleBaseDto,t)})}update(e,t){return o(this,void 0,void 0,function*(){const i=yield this.repository.findOne({where:{id:e}});if(!i)throw new s.NotFoundException(`Role with ID ${e} not found`);if(i.is_system)throw new s.BadRequestException("Cannot update system role");t.permissions&&this.validatePermissions(t.permissions),yield this.repository.update(e,{name:t.name,description:t.description,permissions:t.permissions||void 0});const o=yield this.repository.findOne({where:{id:e}});return(0,r.plainToClass)(c.ResponseRoleBaseDto,o)})}remove(e){return o(this,void 0,void 0,function*(){const t=yield this.repository.findOne({where:{id:e}});if(!t)throw new s.NotFoundException(`Role with ID ${e} not found`);if(t.is_system||t.is_default)throw new s.BadRequestException("Cannot delete system or default role");yield this.checkRoleUsage(e),yield this.repository.delete(e)})}};exports.RoleService=p,exports.RoleService=p=e([(0,s.Injectable)(),i(0,(0,n.InjectRepository)(d.Role)),t("design:paramtypes",[a.Repository,a.DataSource])],p);
@@ -0,0 +1,55 @@
1
+ import { DataSource, EntityManager } from 'typeorm';
2
+ import { S3Service } from '../aws/aws-s3.service';
3
+ import { FILE_STATUS } from '../enums.common';
4
+ import { File } from '../database/entities';
5
+ interface FileInput {
6
+ original_name: string;
7
+ file_name: string;
8
+ path: string;
9
+ mime_type: string;
10
+ size: number;
11
+ meta?: Record<string, any>;
12
+ sort?: number;
13
+ }
14
+ export interface CreateFileInput {
15
+ target: string;
16
+ group_number?: number;
17
+ user_id: number;
18
+ files: FileInput[];
19
+ manager?: EntityManager;
20
+ }
21
+ export type StatusCompletedInput = Omit<CreateFileInput, 'files'> & {
22
+ target_id: number;
23
+ file_ids?: number[];
24
+ };
25
+ export type SoftDeleteInput = Omit<CreateFileInput, 'files'> & {
26
+ target_id: number;
27
+ delete_file_ids: number[];
28
+ };
29
+ export declare class FileService {
30
+ private readonly dataSource;
31
+ private readonly s3Service;
32
+ constructor(dataSource: DataSource, s3Service: S3Service);
33
+ findAll({ target, target_id, group_number, }: {
34
+ target: string;
35
+ target_id: number;
36
+ group_number?: number;
37
+ }): Promise<File[]>;
38
+ createPending({ target, user_id, files, manager, group_number, }: CreateFileInput): Promise<({
39
+ sort: number;
40
+ group_number: number;
41
+ original_name: string;
42
+ file_name: string;
43
+ path: string;
44
+ mime_type: string;
45
+ size: number;
46
+ meta?: Record<string, any>;
47
+ status: FILE_STATUS.PENDING;
48
+ target: string;
49
+ target_id: number;
50
+ user_id: number;
51
+ } & File)[]>;
52
+ statusCompleted({ target, target_id, user_id, file_ids, manager, }: StatusCompletedInput): Promise<void>;
53
+ softDelete({ target, target_id, user_id, delete_file_ids, manager, }: SoftDeleteInput): Promise<void>;
54
+ }
55
+ export {};
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,r,i){var n,s=arguments.length,a=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var o=e.length-1;o>=0;o--)(n=e[o])&&(a=(s<3?n(a):s>3?n(t,r,a):n(t,r))||a);return s>3&&a&&Object.defineProperty(t,r,a),a},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}},i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))(function(n,s){function fulfilled(e){try{step(i.next(e))}catch(e){s(e)}}function rejected(e){try{step(i.throw(e))}catch(e){s(e)}}function step(e){e.done?n(e.value):function adopt(e){return e instanceof r?e:new r(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileService=void 0;const n=require("@nestjs/common"),s=require("typeorm"),a=require("../aws/aws-s3.service"),o=require("../enums.common"),c=require("../database/entities");let u=class FileService{constructor(e,t){this.dataSource=e,this.s3Service=t}findAll(e){return i(this,arguments,void 0,function*({target:e,target_id:t,group_number:r}){return this.dataSource.getRepository(c.File).find({where:{target:e,target_id:t,group_number:r}})})}createPending(e){return i(this,arguments,void 0,function*({target:e,user_id:t,files:r,manager:i,group_number:n}){const s=i?i.getRepository(c.File):this.dataSource.getRepository(c.File),a=yield s.save(r.map((r,i)=>{var s;return Object.assign(Object.assign({status:o.FILE_STATUS.PENDING,target:e,target_id:0,user_id:t},r),{sort:null!==(s=r.sort)&&void 0!==s?s:i+1,group_number:n})}));return a})}statusCompleted(e){return i(this,arguments,void 0,function*({target:e,target_id:t,user_id:r,file_ids:i,manager:n}){const a=n?n.getRepository(c.File):this.dataSource.getRepository(c.File);yield a.update({target:e,user_id:r,id:(0,s.In)(i)},{status:o.FILE_STATUS.COMPLETED,target_id:t})})}softDelete(e){return i(this,arguments,void 0,function*({target:e,target_id:t,user_id:r,delete_file_ids:i,manager:n}){const a=n?n.getRepository(c.File):this.dataSource.getRepository(c.File),u=yield a.find({where:{target:e,user_id:r,target_id:t,id:(0,s.In)(i)}});yield this.s3Service.deleteObjectsByKeys(u.map(e=>this.s3Service.getFileKey(e))),yield a.update({id:(0,s.In)(u.map(e=>e.id))},{status:o.FILE_STATUS.DELETED,deleted_at:new Date,is_active:!1})})}};exports.FileService=u,exports.FileService=u=e([(0,n.Injectable)(),r(1,(0,n.Inject)((0,n.forwardRef)(()=>a.S3Service))),t("design:paramtypes",[s.DataSource,a.S3Service])],u);
@@ -0,0 +1,2 @@
1
+ export * from './permission-checker.service';
2
+ export * from './file.service';
@@ -0,0 +1 @@
1
+ var e=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,o)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),r=this&&this.__exportStar||function(r,t){for(var i in r)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||e(t,r,i)};Object.defineProperty(exports,"__esModule",{value:!0}),r(require("./permission-checker.service"),exports),r(require("./file.service"),exports);
@@ -0,0 +1,15 @@
1
+ import { Repository } from 'typeorm';
2
+ import { Config } from '../database/entities';
3
+ export declare class MessageTemplateService {
4
+ private configRepository;
5
+ constructor(configRepository: Repository<Config>);
6
+ getTemplate(type: 'email' | 'sms' | 'slack' | 'kakao', templateKey: string): Promise<any>;
7
+ getTemplates(): Promise<Record<string, any>>;
8
+ updateTemplates(templates: any): Promise<void>;
9
+ renderTemplate(template: {
10
+ content: string;
11
+ variables: string[];
12
+ required_vars: string[];
13
+ default_vars: Record<string, any>;
14
+ }, variables: Record<string, any>): string;
15
+ }
@@ -0,0 +1 @@
1
+ var e=this&&this.__decorate||function(e,t,r,i){var n,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,i);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(a=(o<3?n(a):o>3?n(t,r,a):n(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},r=this&&this.__param||function(e,t){return function(r,i){t(r,i,e)}},i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))(function(n,o){function fulfilled(e){try{step(i.next(e))}catch(e){o(e)}}function rejected(e){try{step(i.throw(e))}catch(e){o(e)}}function step(e){e.done?n(e.value):function adopt(e){return e instanceof r?e:new r(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((i=i.apply(e,t||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MessageTemplateService=void 0;const n=require("@nestjs/common"),o=require("@nestjs/typeorm"),a=require("typeorm"),s=require("../database/entities");let c=class MessageTemplateService{constructor(e){this.configRepository=e}getTemplate(e,t){return i(this,void 0,void 0,function*(){var r;return null===(r=(yield this.getTemplates())[e])||void 0===r?void 0:r[t]})}getTemplates(){return i(this,void 0,void 0,function*(){const e=yield this.configRepository.findOne({where:{key:"message_templates",is_active:!0}});return(null==e?void 0:e.value)||{}})}updateTemplates(e){return i(this,void 0,void 0,function*(){yield this.configRepository.update({key:"message_templates"},{value:e,updated_at:new Date})})}renderTemplate(e,t){const r=e.required_vars.filter(r=>{var i;return void 0===t[r]&&void 0===(null===(i=e.default_vars)||void 0===i?void 0:i[r])});if(r.length>0)throw new Error(`Missing required variables: ${r.join(", ")}`);return e.content.replace(/\{\{(\w+)\}\}/g,(r,i)=>{var n;return void 0!==t[i]?t[i]:void 0!==(null===(n=e.default_vars)||void 0===n?void 0:n[i])?e.default_vars[i]:""})}};exports.MessageTemplateService=c,exports.MessageTemplateService=c=e([(0,n.Injectable)(),r(0,(0,o.InjectRepository)(s.Config)),t("design:paramtypes",[a.Repository])],c);
@@ -0,0 +1,38 @@
1
+ export declare const PERMISSIONS: {
2
+ readonly USER_LIST: "user:list";
3
+ readonly USER_READ: "user:read";
4
+ readonly USER_EDIT: "user:edit";
5
+ readonly USER_DELETE: "user:delete";
6
+ readonly USER_CREATE: "user:create";
7
+ readonly USER_LIST_DOWNLOAD: "user:list:download";
8
+ readonly USER_ROLE_ASSIGN: "user:role:assign";
9
+ readonly ADMIN: "admin:manage";
10
+ readonly PROGRAM: "program:manage";
11
+ readonly PROGRAM_COURSE: "program:course";
12
+ readonly PROGRAM_REQUEST_DOWNLOAD: "program:request:download";
13
+ readonly TEAM: "team:manage";
14
+ readonly TEAM_SUBMISSION: "team:submission";
15
+ readonly TEAM_USER_DOWNLOAD: "team:user:list:download";
16
+ readonly BLOG: "blog";
17
+ };
18
+ export declare const WILDCARD_PERMISSIONS: {
19
+ readonly ALL: "*";
20
+ readonly USER_ALL: "user:*";
21
+ readonly ADMIN_ALL: "admin:*";
22
+ readonly PROGRAM_ALL: "program:*";
23
+ readonly TEAM_ALL: "team:*";
24
+ readonly BLOG_ALL: "blog:*";
25
+ };
26
+ export interface UserMock {
27
+ id: number;
28
+ role: string;
29
+ permissions?: string[];
30
+ }
31
+ export declare abstract class PermissionCheckerService {
32
+ protected abstract getUserPermissions(user: UserMock): string[];
33
+ hasPermission(user: UserMock, requiredPermission: string): boolean;
34
+ hasAnyPermission(user: UserMock, requiredPermissions: string[]): boolean;
35
+ hasAllPermissions(user: UserMock, requiredPermissions: string[]): boolean;
36
+ private checkPermissionMatch;
37
+ protected matchesWildcard(wildcardPermission: string, requiredPermission: string): boolean;
38
+ }
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.PermissionCheckerService=exports.WILDCARD_PERMISSIONS=exports.PERMISSIONS=void 0,exports.PERMISSIONS={USER_LIST:"user:list",USER_READ:"user:read",USER_EDIT:"user:edit",USER_DELETE:"user:delete",USER_CREATE:"user:create",USER_LIST_DOWNLOAD:"user:list:download",USER_ROLE_ASSIGN:"user:role:assign",ADMIN:"admin:manage",PROGRAM:"program:manage",PROGRAM_COURSE:"program:course",PROGRAM_REQUEST_DOWNLOAD:"program:request:download",TEAM:"team:manage",TEAM_SUBMISSION:"team:submission",TEAM_USER_DOWNLOAD:"team:user:list:download",BLOG:"blog"},exports.WILDCARD_PERMISSIONS={ALL:"*",USER_ALL:"user:*",ADMIN_ALL:"admin:*",PROGRAM_ALL:"program:*",TEAM_ALL:"team:*",BLOG_ALL:"blog:*"};exports.PermissionCheckerService=class PermissionCheckerService{hasPermission(e,s){const r=this.getUserPermissions(e);return this.checkPermissionMatch(r,s)}hasAnyPermission(e,s){const r=this.getUserPermissions(e);return s.some(e=>this.checkPermissionMatch(r,e))}hasAllPermissions(e,s){const r=this.getUserPermissions(e);return s.every(e=>this.checkPermissionMatch(r,e))}checkPermissionMatch(e,s){if(e.includes(s))return!0;for(const r of e)if(this.matchesWildcard(r,s))return!0;return!1}matchesWildcard(e,s){if("*"===e)return!0;if(e.endsWith(":*")){const r=e.slice(0,-2);return s===r||s.startsWith(r+":")}return!1}};