@comasoft/nestjs 0.0.97 → 0.1.2

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 (211) hide show
  1. package/README.md +31 -0
  2. package/dist/aws/aws-s3.service.d.ts +17 -0
  3. package/dist/aws/aws-s3.service.js +158 -0
  4. package/dist/aws/aws.module.d.ts +2 -0
  5. package/dist/aws/aws.module.js +25 -0
  6. package/dist/aws/aws.service.d.ts +3 -0
  7. package/dist/aws/aws.service.js +21 -0
  8. package/dist/aws/constants/storage.constant.d.ts +4 -0
  9. package/dist/aws/constants/storage.constant.js +25 -0
  10. package/dist/aws/dto/create-s3-presigned.dto.d.ts +12 -0
  11. package/dist/aws/dto/create-s3-presigned.dto.js +78 -0
  12. package/dist/aws/dto/index.d.ts +2 -0
  13. package/dist/aws/dto/index.js +18 -0
  14. package/dist/aws/dto/response-s3-presigned.dto.d.ts +30 -0
  15. package/dist/aws/dto/response-s3-presigned.dto.js +110 -0
  16. package/dist/aws/index.d.ts +4 -0
  17. package/dist/aws/index.js +20 -0
  18. package/dist/aws/types/s3.interface.d.ts +14 -0
  19. package/dist/aws/types/s3.interface.js +2 -0
  20. package/dist/aws/types/storage.interface.d.ts +19 -0
  21. package/dist/aws/types/storage.interface.js +2 -0
  22. package/dist/category/category.module.d.ts +2 -0
  23. package/dist/category/category.module.js +23 -0
  24. package/dist/category/category.service.d.ts +13 -0
  25. package/dist/category/category.service.js +124 -0
  26. package/dist/category/dto/create-category.dto.d.ts +7 -0
  27. package/dist/category/dto/create-category.dto.js +34 -0
  28. package/dist/category/dto/delete-category.dto.d.ts +3 -0
  29. package/dist/category/dto/delete-category.dto.js +6 -0
  30. package/dist/category/dto/index.d.ts +5 -0
  31. package/dist/category/dto/index.js +21 -0
  32. package/dist/category/dto/response-categories.dto.d.ts +12 -0
  33. package/dist/category/dto/response-categories.dto.js +52 -0
  34. package/dist/category/dto/update-category-sort.dto.d.ts +9 -0
  35. package/dist/category/dto/update-category-sort.dto.js +33 -0
  36. package/dist/category/dto/update-category.dto.d.ts +6 -0
  37. package/dist/category/dto/update-category.dto.js +9 -0
  38. package/dist/category/index.d.ts +3 -0
  39. package/dist/category/index.js +19 -0
  40. package/dist/comment/comment.module.d.ts +2 -0
  41. package/dist/comment/comment.module.js +23 -0
  42. package/dist/comment/comment.service.d.ts +33 -0
  43. package/dist/comment/comment.service.js +240 -0
  44. package/dist/comment/dto/create-comment.dto.d.ts +7 -0
  45. package/dist/comment/dto/create-comment.dto.js +41 -0
  46. package/dist/comment/dto/index.d.ts +3 -0
  47. package/dist/comment/dto/index.js +19 -0
  48. package/dist/comment/dto/response-comment.dto.d.ts +26 -0
  49. package/dist/comment/dto/response-comment.dto.js +97 -0
  50. package/dist/comment/dto/update-comment.dto.d.ts +4 -0
  51. package/dist/comment/dto/update-comment.dto.js +22 -0
  52. package/dist/comment/index.d.ts +3 -0
  53. package/dist/comment/index.js +19 -0
  54. package/dist/database/entities/category.entity.d.ts +14 -0
  55. package/dist/database/entities/category.entity.js +70 -0
  56. package/dist/database/entities/comment.entity.d.ts +16 -0
  57. package/dist/database/entities/comment.entity.js +77 -0
  58. package/dist/database/entities/config.entity.d.ts +8 -0
  59. package/dist/database/entities/config.entity.js +44 -0
  60. package/dist/database/entities/file.entity.d.ts +20 -0
  61. package/dist/database/entities/file.entity.js +91 -0
  62. package/dist/database/entities/index.d.ts +10 -0
  63. package/dist/database/entities/index.js +26 -0
  64. package/dist/database/entities/like.entity.d.ts +10 -0
  65. package/dist/database/entities/like.entity.js +49 -0
  66. package/dist/database/entities/logs-audit.entity.d.ts +16 -0
  67. package/dist/database/entities/logs-audit.entity.js +72 -0
  68. package/dist/database/entities/logs-event.entity.d.ts +16 -0
  69. package/dist/database/entities/logs-event.entity.js +72 -0
  70. package/dist/database/entities/notification-recipient.entity.d.ts +19 -0
  71. package/dist/database/entities/notification-recipient.entity.js +74 -0
  72. package/dist/database/entities/notification.entity.d.ts +18 -0
  73. package/dist/database/entities/notification.entity.js +69 -0
  74. package/dist/database/entities/role.entity.d.ts +13 -0
  75. package/dist/database/entities/role.entity.js +54 -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/auth.decorator.factory.d.ts +1 -1
  79. package/dist/decorators/auth.decorator.factory.js +23 -2
  80. package/dist/decorators/delete-columns.decorator.js +1 -33
  81. package/dist/decorators/patch-body.decorator.js +20 -12
  82. package/dist/decorators/soft-delete.decorator.js +1 -15
  83. package/dist/decorators/timestamps.decorator.js +5 -13
  84. package/dist/dto/file.dto.d.ts +18 -0
  85. package/dist/dto/file.dto.js +70 -0
  86. package/dist/dto/index.d.ts +2 -0
  87. package/dist/dto/index.js +2 -0
  88. package/dist/dto/response-uid.dto.d.ts +2 -0
  89. package/dist/dto/response-uid.dto.js +8 -0
  90. package/dist/dto/update-ids.dto.d.ts +6 -1
  91. package/dist/dto/update-ids.dto.js +24 -10
  92. package/dist/dto/update-sort.dto.d.ts +9 -0
  93. package/dist/dto/update-sort.dto.js +50 -0
  94. package/dist/enums.common.d.ts +23 -0
  95. package/dist/enums.common.js +28 -1
  96. package/dist/events/event-bus.module.d.ts +2 -0
  97. package/dist/events/event-bus.module.js +44 -0
  98. package/dist/events/index.d.ts +4 -0
  99. package/dist/events/index.js +20 -0
  100. package/dist/events/listeners/audit-event.listener.d.ts +9 -0
  101. package/dist/events/listeners/audit-event.listener.js +58 -0
  102. package/dist/events/listeners/index.d.ts +1 -0
  103. package/dist/events/listeners/index.js +17 -0
  104. package/dist/events/listeners/system-event.listener.d.ts +9 -0
  105. package/dist/events/listeners/system-event.listener.js +58 -0
  106. package/dist/events/services/event-logger.service.d.ts +5 -0
  107. package/dist/events/services/event-logger.service.js +34 -0
  108. package/dist/events/services/event-notification.service.d.ts +7 -0
  109. package/dist/events/services/event-notification.service.js +104 -0
  110. package/dist/events/services/event-storage.service.d.ts +11 -0
  111. package/dist/events/services/event-storage.service.js +79 -0
  112. package/dist/events/services/index.d.ts +4 -0
  113. package/dist/events/services/index.js +20 -0
  114. package/dist/events/services/token.service.d.ts +23 -0
  115. package/dist/events/services/token.service.js +88 -0
  116. package/dist/events/types/audit-events.type.d.ts +12 -0
  117. package/dist/events/types/audit-events.type.js +2 -0
  118. package/dist/events/types/index.d.ts +18 -0
  119. package/dist/events/types/index.js +17 -0
  120. package/dist/filters/http-exception.filter.d.ts +4 -0
  121. package/dist/filters/http-exception.filter.js +26 -4
  122. package/dist/guards/auth.guard.d.ts +3 -1
  123. package/dist/guards/auth.guard.js +33 -11
  124. package/dist/index.d.ts +20 -8
  125. package/dist/index.js +12 -0
  126. package/dist/library.module.d.ts +2 -0
  127. package/dist/library.module.js +20 -0
  128. package/dist/like/dto/create-like.dto.d.ts +7 -0
  129. package/dist/like/dto/create-like.dto.js +47 -0
  130. package/dist/like/dto/index.d.ts +2 -0
  131. package/dist/like/dto/index.js +18 -0
  132. package/dist/like/dto/response-like.dto.d.ts +19 -0
  133. package/dist/like/dto/response-like.dto.js +79 -0
  134. package/dist/like/index.d.ts +3 -0
  135. package/dist/like/index.js +19 -0
  136. package/dist/like/like.module.d.ts +2 -0
  137. package/dist/like/like.module.js +23 -0
  138. package/dist/like/like.service.d.ts +13 -0
  139. package/dist/like/like.service.js +155 -0
  140. package/dist/logger/index.d.ts +2 -0
  141. package/dist/logger/index.js +18 -0
  142. package/dist/logger/pino-options.d.ts +31 -0
  143. package/dist/logger/pino-options.js +77 -0
  144. package/dist/logger/pino-pretty-transport.d.ts +1 -0
  145. package/dist/logger/pino-pretty-transport.js +164 -0
  146. package/dist/modules/index.d.ts +1 -0
  147. package/dist/modules/index.js +1 -0
  148. package/dist/modules/redis.module.d.ts +9 -0
  149. package/dist/modules/redis.module.js +1 -0
  150. package/dist/notifications/index.d.ts +70 -0
  151. package/dist/notifications/index.js +18 -0
  152. package/dist/notifications/notification.module.d.ts +2 -0
  153. package/dist/notifications/notification.module.js +32 -0
  154. package/dist/notifications/services/email.service.d.ts +31 -0
  155. package/dist/notifications/services/email.service.js +69 -0
  156. package/dist/notifications/services/index.d.ts +7 -0
  157. package/dist/notifications/services/index.js +23 -0
  158. package/dist/notifications/services/kakao.service.d.ts +41 -0
  159. package/dist/notifications/services/kakao.service.js +94 -0
  160. package/dist/notifications/services/message-template.service.d.ts +15 -0
  161. package/dist/notifications/services/message-template.service.js +74 -0
  162. package/dist/notifications/services/notification-send.service.d.ts +30 -0
  163. package/dist/notifications/services/notification-send.service.js +146 -0
  164. package/dist/notifications/services/notification.service.d.ts +37 -0
  165. package/dist/notifications/services/notification.service.js +125 -0
  166. package/dist/notifications/services/slack.service.d.ts +11 -0
  167. package/dist/notifications/services/slack.service.js +53 -0
  168. package/dist/notifications/services/sms.service.d.ts +19 -0
  169. package/dist/notifications/services/sms.service.js +62 -0
  170. package/dist/redis/index.d.ts +2 -0
  171. package/dist/redis/index.js +18 -0
  172. package/dist/redis/redis-constraint.d.ts +1 -0
  173. package/dist/redis/redis-constraint.js +4 -0
  174. package/dist/redis/redis.module.d.ts +8 -0
  175. package/dist/redis/redis.module.js +62 -0
  176. package/dist/redis/redis.service.d.ts +12 -0
  177. package/dist/redis/redis.service.js +76 -0
  178. package/dist/role/dto/create-role.dto.d.ts +5 -0
  179. package/dist/role/dto/create-role.dto.js +41 -0
  180. package/dist/role/dto/index.d.ts +3 -0
  181. package/dist/role/dto/index.js +19 -0
  182. package/dist/role/dto/response-roles.dto.d.ts +15 -0
  183. package/dist/role/dto/response-roles.dto.js +62 -0
  184. package/dist/role/dto/update-role.dto.d.ts +6 -0
  185. package/dist/role/dto/update-role.dto.js +9 -0
  186. package/dist/role/index.d.ts +3 -0
  187. package/dist/role/index.js +19 -0
  188. package/dist/role/role.module.d.ts +2 -0
  189. package/dist/role/role.module.js +23 -0
  190. package/dist/role/role.service.d.ts +17 -0
  191. package/dist/role/role.service.js +144 -0
  192. package/dist/services/file.service.d.ts +55 -0
  193. package/dist/services/file.service.js +82 -0
  194. package/dist/services/index.d.ts +2 -0
  195. package/dist/services/index.js +18 -0
  196. package/dist/services/message-template.service.d.ts +15 -0
  197. package/dist/services/message-template.service.js +1 -0
  198. package/dist/services/permission-checker.service.d.ts +38 -0
  199. package/dist/services/permission-checker.service.js +65 -0
  200. package/dist/shared/error-codes.d.ts +5 -0
  201. package/dist/shared/error-codes.js +9 -0
  202. package/dist/utils/common.utils.d.ts +2 -0
  203. package/dist/utils/common.utils.js +11 -1
  204. package/dist/utils/index.d.ts +1 -0
  205. package/dist/utils/index.js +1 -0
  206. package/dist/utils/object-diff.d.ts +1 -0
  207. package/dist/utils/object-diff.js +33 -0
  208. package/package.json +61 -16
  209. package/eslint.config.js +0 -31
  210. package/tsconfig.build.json +0 -19
  211. package/tsconfig.json +0 -18
@@ -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,53 @@
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.SlackService = void 0;
22
+ const common_1 = require("@nestjs/common");
23
+ const config_1 = require("@nestjs/config");
24
+ let SlackService = class SlackService {
25
+ constructor(configService) {
26
+ this.configService = configService;
27
+ }
28
+ send(channel, message) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ if (!this.configService.get('SLACK_CHANNEL') || !this.configService.get('SLACK_WEBHOOK_URL')) {
31
+ throw new Error('SLACK_CHANNEL or SLACK_WEBHOOK_URL is not set');
32
+ }
33
+ console.log('📢 [SLACK] 발송:', {
34
+ channel,
35
+ message,
36
+ webhook_url: this.configService.get('SLACK_WEBHOOK_URL'),
37
+ default_channel: this.configService.get('SLACK_CHANNEL'),
38
+ timestamp: new Date().toISOString()
39
+ });
40
+ return {
41
+ channel,
42
+ success: true,
43
+ messageId: `slack-${Date.now()}`,
44
+ status: 'sent'
45
+ };
46
+ });
47
+ }
48
+ };
49
+ exports.SlackService = SlackService;
50
+ exports.SlackService = SlackService = __decorate([
51
+ (0, common_1.Injectable)(),
52
+ __metadata("design:paramtypes", [config_1.ConfigService])
53
+ ], SlackService);
@@ -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,62 @@
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.SmsService = void 0;
22
+ const common_1 = require("@nestjs/common");
23
+ const config_1 = require("@nestjs/config");
24
+ const notification_service_1 = require("./notification.service");
25
+ let SmsService = class SmsService {
26
+ constructor(configService, notificationService) {
27
+ this.configService = configService;
28
+ this.notificationService = notificationService;
29
+ }
30
+ send(recipients) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ if (!this.configService.get('SMS_FROM')) {
33
+ throw new Error('SMS_FROM is not set');
34
+ }
35
+ console.log('📱 [SMS] 배열 발송:', {
36
+ count: recipients.length,
37
+ from: this.configService.get('SMS_FROM'),
38
+ provider: this.configService.get('SMS_PROVIDER') || 'default',
39
+ recipients: recipients.map((r) => ({
40
+ user_id: r.user_id,
41
+ recipient: r.recipient,
42
+ message: r.message,
43
+ variables: r.variables,
44
+ })),
45
+ timestamp: new Date().toISOString(),
46
+ });
47
+ return recipients.map((r) => ({
48
+ user_id: r.user_id,
49
+ recipient: r.recipient,
50
+ success: true,
51
+ messageId: `sms-${Date.now()}-${r.user_id}`,
52
+ status: 'sent',
53
+ }));
54
+ });
55
+ }
56
+ };
57
+ exports.SmsService = SmsService;
58
+ exports.SmsService = SmsService = __decorate([
59
+ (0, common_1.Injectable)(),
60
+ __metadata("design:paramtypes", [config_1.ConfigService,
61
+ notification_service_1.NotificationService])
62
+ ], SmsService);
@@ -0,0 +1,2 @@
1
+ export * from './redis.module';
2
+ export * from './redis.service';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./redis.module"), exports);
18
+ __exportStar(require("./redis.service"), exports);
@@ -0,0 +1 @@
1
+ export declare const REDIS_CLIENT = "REDIS_CLIENT";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REDIS_CLIENT = void 0;
4
+ 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,62 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ var RedisModule_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.RedisModule = void 0;
20
+ const common_1 = require("@nestjs/common");
21
+ const config_1 = require("@nestjs/config");
22
+ const ioredis_1 = require("ioredis");
23
+ const redis_service_1 = require("./redis.service");
24
+ const redis_constraint_1 = require("./redis-constraint");
25
+ let RedisModule = RedisModule_1 = class RedisModule {
26
+ static forRootAsync(options) {
27
+ return {
28
+ module: RedisModule_1,
29
+ imports: [config_1.ConfigModule],
30
+ providers: [
31
+ {
32
+ provide: redis_constraint_1.REDIS_CLIENT,
33
+ useFactory: (...args) => __awaiter(this, void 0, void 0, function* () {
34
+ const config = options.useFactory(...args);
35
+ config.retryStrategy = (times) => {
36
+ const logger = new common_1.Logger('Redis');
37
+ if (times > 5) {
38
+ logger.error('Redis Reconnect Max Times, Stop Reconnect');
39
+ return null;
40
+ }
41
+ return 2000;
42
+ };
43
+ const redis = new ioredis_1.default(config);
44
+ const logger = new common_1.Logger('Redis');
45
+ redis.on('ready', () => logger.log('Redis Ready'));
46
+ redis.on('error', (err) => logger.error('Redis Error: ' + err));
47
+ redis.on('reconnecting', () => logger.warn('Redis Reconnecting'));
48
+ return redis;
49
+ }),
50
+ inject: options.inject || [],
51
+ },
52
+ redis_service_1.RedisService,
53
+ ],
54
+ exports: [redis_constraint_1.REDIS_CLIENT, redis_service_1.RedisService],
55
+ };
56
+ }
57
+ };
58
+ exports.RedisModule = RedisModule;
59
+ exports.RedisModule = RedisModule = RedisModule_1 = __decorate([
60
+ (0, common_1.Global)(),
61
+ (0, common_1.Module)({})
62
+ ], RedisModule);
@@ -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,76 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.RedisService = void 0;
25
+ const common_1 = require("@nestjs/common");
26
+ const ioredis_1 = require("ioredis");
27
+ const redis_constraint_1 = require("./redis-constraint");
28
+ let RedisService = class RedisService {
29
+ constructor(redisClient) {
30
+ this.redisClient = redisClient;
31
+ }
32
+ set(key, value, expireSeconds) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ if (expireSeconds) {
35
+ return this.redisClient.set(key, value, 'EX', expireSeconds);
36
+ }
37
+ return this.redisClient.set(key, value);
38
+ });
39
+ }
40
+ get(key) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ return this.redisClient.get(key);
43
+ });
44
+ }
45
+ del(key) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ return this.redisClient.del(key);
48
+ });
49
+ }
50
+ hset(key, field, value) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ return this.redisClient.hset(key, field, value);
53
+ });
54
+ }
55
+ hget(key, field) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return this.redisClient.hget(key, field);
58
+ });
59
+ }
60
+ hgetall(key) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ return this.redisClient.hgetall(key);
63
+ });
64
+ }
65
+ hdel(key, field) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ return this.redisClient.hdel(key, field);
68
+ });
69
+ }
70
+ };
71
+ exports.RedisService = RedisService;
72
+ exports.RedisService = RedisService = __decorate([
73
+ (0, common_1.Injectable)(),
74
+ __param(0, (0, common_1.Inject)(redis_constraint_1.REDIS_CLIENT)),
75
+ __metadata("design:paramtypes", [ioredis_1.default])
76
+ ], RedisService);
@@ -0,0 +1,5 @@
1
+ export declare class CreateRoleBaseDto {
2
+ name: string;
3
+ description: string;
4
+ permissions?: string[];
5
+ }
@@ -0,0 +1,41 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateRoleBaseDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class CreateRoleBaseDto {
16
+ }
17
+ exports.CreateRoleBaseDto = CreateRoleBaseDto;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({
20
+ example: 'Manager',
21
+ }),
22
+ (0, class_validator_1.IsString)(),
23
+ __metadata("design:type", String)
24
+ ], CreateRoleBaseDto.prototype, "name", void 0);
25
+ __decorate([
26
+ (0, swagger_1.ApiProperty)({
27
+ example: 'Manager permissions',
28
+ }),
29
+ (0, class_validator_1.IsString)(),
30
+ (0, class_validator_1.IsOptional)(),
31
+ __metadata("design:type", String)
32
+ ], CreateRoleBaseDto.prototype, "description", void 0);
33
+ __decorate([
34
+ (0, swagger_1.ApiProperty)({
35
+ example: ['user:list', 'user:read', 'blog:*'],
36
+ }),
37
+ (0, class_validator_1.IsArray)(),
38
+ (0, class_validator_1.IsString)({ each: true }),
39
+ (0, class_validator_1.IsOptional)(),
40
+ __metadata("design:type", Array)
41
+ ], 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,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./create-role.dto"), exports);
18
+ __exportStar(require("./update-role.dto"), exports);
19
+ __exportStar(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,62 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ResponseRolesBaseDto = exports.ResponseRoleBaseDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const dto_1 = require("../../dto");
15
+ class ResponseRoleBaseDto {
16
+ }
17
+ exports.ResponseRoleBaseDto = ResponseRoleBaseDto;
18
+ __decorate([
19
+ (0, class_transformer_1.Expose)(),
20
+ __metadata("design:type", Number)
21
+ ], ResponseRoleBaseDto.prototype, "id", void 0);
22
+ __decorate([
23
+ (0, class_transformer_1.Expose)(),
24
+ __metadata("design:type", String)
25
+ ], ResponseRoleBaseDto.prototype, "name", void 0);
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", String)
29
+ ], ResponseRoleBaseDto.prototype, "description", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", Array)
33
+ ], ResponseRoleBaseDto.prototype, "permissions", void 0);
34
+ __decorate([
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", Boolean)
37
+ ], ResponseRoleBaseDto.prototype, "is_default", void 0);
38
+ __decorate([
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", Boolean)
41
+ ], ResponseRoleBaseDto.prototype, "is_system", void 0);
42
+ __decorate([
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", Number)
45
+ ], ResponseRoleBaseDto.prototype, "sort", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", Date)
49
+ ], ResponseRoleBaseDto.prototype, "created_at", void 0);
50
+ class ResponseRolesBaseDto {
51
+ }
52
+ exports.ResponseRolesBaseDto = ResponseRolesBaseDto;
53
+ __decorate([
54
+ (0, class_transformer_1.Expose)(),
55
+ (0, class_transformer_1.Type)(() => ResponseRoleBaseDto),
56
+ __metadata("design:type", Array)
57
+ ], ResponseRolesBaseDto.prototype, "items", void 0);
58
+ __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ (0, class_transformer_1.Type)(() => dto_1.PaginationDto),
61
+ __metadata("design:type", dto_1.PaginationDto)
62
+ ], 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,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateRoleBaseDto = void 0;
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ const create_role_dto_1 = require("./create-role.dto");
6
+ class UpdateRoleBaseDto extends (0, swagger_1.PartialType)(create_role_dto_1.CreateRoleBaseDto) {
7
+ }
8
+ exports.UpdateRoleBaseDto = UpdateRoleBaseDto;
9
+ 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,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./role.module"), exports);
18
+ __exportStar(require("./role.service"), exports);
19
+ __exportStar(require("./dto"), exports);
@@ -0,0 +1,2 @@
1
+ export declare class RoleModule {
2
+ }
@@ -0,0 +1,23 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RoleModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const typeorm_1 = require("@nestjs/typeorm");
12
+ const entities_1 = require("../database/entities");
13
+ const role_service_1 = require("./role.service");
14
+ let RoleModule = class RoleModule {
15
+ };
16
+ exports.RoleModule = RoleModule;
17
+ exports.RoleModule = RoleModule = __decorate([
18
+ (0, common_1.Module)({
19
+ imports: [typeorm_1.TypeOrmModule.forFeature([entities_1.Role])],
20
+ providers: [role_service_1.RoleService],
21
+ exports: [role_service_1.RoleService],
22
+ })
23
+ ], RoleModule);
@@ -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
+ }