mvc-common-toolkit 1.43.9 → 1.43.11

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 (201) hide show
  1. package/dist/src/constants.d.ts +42 -0
  2. package/dist/src/constants.js +50 -0
  3. package/dist/src/constants.js.map +1 -0
  4. package/dist/src/gateways/alibaba-cloud-gateway.d.ts +30 -0
  5. package/dist/src/gateways/alibaba-cloud-gateway.js +120 -0
  6. package/dist/src/gateways/alibaba-cloud-gateway.js.map +1 -0
  7. package/dist/src/gateways/http-audit-gateway.d.ts +20 -0
  8. package/dist/src/gateways/http-audit-gateway.js +76 -0
  9. package/dist/src/gateways/http-audit-gateway.js.map +1 -0
  10. package/dist/src/gateways/index.d.ts +5 -0
  11. package/dist/src/gateways/index.js +22 -0
  12. package/dist/src/gateways/index.js.map +1 -0
  13. package/dist/src/gateways/internal-auth-gateway.d.ts +8 -0
  14. package/dist/src/gateways/internal-auth-gateway.js +40 -0
  15. package/dist/src/gateways/internal-auth-gateway.js.map +1 -0
  16. package/dist/src/gateways/stdout-audit-gateway.d.ts +7 -0
  17. package/dist/src/gateways/stdout-audit-gateway.js +25 -0
  18. package/dist/src/gateways/stdout-audit-gateway.js.map +1 -0
  19. package/dist/src/gateways/webhook-audit-gateway.d.ts +14 -0
  20. package/dist/src/gateways/webhook-audit-gateway.js +27 -0
  21. package/dist/src/gateways/webhook-audit-gateway.js.map +1 -0
  22. package/dist/src/interfaces.d.ts +218 -0
  23. package/dist/src/interfaces.js +3 -0
  24. package/dist/src/interfaces.js.map +1 -0
  25. package/dist/src/models/audit-log.d.ts +77 -0
  26. package/dist/src/models/audit-log.js +92 -0
  27. package/dist/src/models/audit-log.js.map +1 -0
  28. package/dist/src/models/index.d.ts +1 -0
  29. package/dist/src/models/index.js +18 -0
  30. package/dist/src/models/index.js.map +1 -0
  31. package/dist/src/pkg/array-helper.d.ts +1 -0
  32. package/dist/src/pkg/array-helper.js +12 -0
  33. package/dist/src/pkg/array-helper.js.map +1 -0
  34. package/dist/src/pkg/bcrypt-helper.d.ts +2 -0
  35. package/dist/src/pkg/bcrypt-helper.js +36 -0
  36. package/dist/src/pkg/bcrypt-helper.js.map +1 -0
  37. package/dist/src/pkg/crypto-helper.d.ts +2 -0
  38. package/dist/src/pkg/crypto-helper.js +16 -0
  39. package/dist/src/pkg/crypto-helper.js.map +1 -0
  40. package/dist/src/pkg/encryption-helper.d.ts +18 -0
  41. package/dist/src/pkg/encryption-helper.js +89 -0
  42. package/dist/src/pkg/encryption-helper.js.map +1 -0
  43. package/dist/src/pkg/encryption-helper.spec.d.ts +1 -0
  44. package/dist/src/pkg/encryption-helper.spec.js +238 -0
  45. package/dist/src/pkg/encryption-helper.spec.js.map +1 -0
  46. package/dist/src/pkg/filter-helper.d.ts +2 -0
  47. package/dist/src/pkg/filter-helper.js +102 -0
  48. package/dist/src/pkg/filter-helper.js.map +1 -0
  49. package/dist/src/pkg/filter-helper.spec.d.ts +1 -0
  50. package/dist/src/pkg/filter-helper.spec.js +94 -0
  51. package/dist/src/pkg/filter-helper.spec.js.map +1 -0
  52. package/dist/src/pkg/geoip-helper.d.ts +2 -0
  53. package/dist/src/pkg/geoip-helper.js +32 -0
  54. package/dist/src/pkg/geoip-helper.js.map +1 -0
  55. package/dist/src/pkg/hash-helper.d.ts +1 -0
  56. package/dist/src/pkg/hash-helper.js +37 -0
  57. package/dist/src/pkg/hash-helper.js.map +1 -0
  58. package/dist/src/pkg/http-request-utils.d.ts +4 -0
  59. package/dist/src/pkg/http-request-utils.js +55 -0
  60. package/dist/src/pkg/http-request-utils.js.map +1 -0
  61. package/dist/src/pkg/index.d.ts +18 -0
  62. package/dist/src/pkg/index.js +45 -0
  63. package/dist/src/pkg/index.js.map +1 -0
  64. package/dist/src/pkg/key-helper.d.ts +2 -0
  65. package/dist/src/pkg/key-helper.js +20 -0
  66. package/dist/src/pkg/key-helper.js.map +1 -0
  67. package/dist/src/pkg/logger.d.ts +9 -0
  68. package/dist/src/pkg/logger.js +23 -0
  69. package/dist/src/pkg/logger.js.map +1 -0
  70. package/dist/src/pkg/object-helper.d.ts +2 -0
  71. package/dist/src/pkg/object-helper.js +37 -0
  72. package/dist/src/pkg/object-helper.js.map +1 -0
  73. package/dist/src/pkg/paginated-cache-registry.d.ts +8 -0
  74. package/dist/src/pkg/paginated-cache-registry.js +23 -0
  75. package/dist/src/pkg/paginated-cache-registry.js.map +1 -0
  76. package/dist/src/pkg/query-helper.d.ts +3 -0
  77. package/dist/src/pkg/query-helper.js +60 -0
  78. package/dist/src/pkg/query-helper.js.map +1 -0
  79. package/dist/src/pkg/referral-tree-utils.d.ts +33 -0
  80. package/dist/src/pkg/referral-tree-utils.js +71 -0
  81. package/dist/src/pkg/referral-tree-utils.js.map +1 -0
  82. package/dist/src/pkg/scripts/index.d.ts +1 -0
  83. package/dist/src/pkg/scripts/index.js +28 -0
  84. package/dist/src/pkg/scripts/index.js.map +1 -0
  85. package/dist/src/pkg/scripts/lua.d.ts +10 -0
  86. package/dist/src/pkg/scripts/lua.js +109 -0
  87. package/dist/src/pkg/scripts/lua.js.map +1 -0
  88. package/dist/src/pkg/sort-helper.d.ts +3 -0
  89. package/dist/src/pkg/sort-helper.js +18 -0
  90. package/dist/src/pkg/sort-helper.js.map +1 -0
  91. package/dist/src/pkg/string-utils.d.ts +10 -0
  92. package/dist/src/pkg/string-utils.js +79 -0
  93. package/dist/src/pkg/string-utils.js.map +1 -0
  94. package/dist/src/pkg/task-helper.d.ts +2 -0
  95. package/dist/src/pkg/task-helper.js +30 -0
  96. package/dist/src/pkg/task-helper.js.map +1 -0
  97. package/dist/src/pkg/workflow/delayed-task-registry.d.ts +10 -0
  98. package/dist/src/pkg/workflow/delayed-task-registry.js +67 -0
  99. package/dist/src/pkg/workflow/delayed-task-registry.js.map +1 -0
  100. package/dist/src/pkg/workflow/delayed-task.d.ts +18 -0
  101. package/dist/src/pkg/workflow/delayed-task.js +95 -0
  102. package/dist/src/pkg/workflow/delayed-task.js.map +1 -0
  103. package/dist/src/pkg/workflow/index.d.ts +5 -0
  104. package/dist/src/pkg/workflow/index.js +22 -0
  105. package/dist/src/pkg/workflow/index.js.map +1 -0
  106. package/dist/src/pkg/workflow/processing-milestone.d.ts +18 -0
  107. package/dist/src/pkg/workflow/processing-milestone.js +39 -0
  108. package/dist/src/pkg/workflow/processing-milestone.js.map +1 -0
  109. package/dist/src/pkg/workflow/retry-task.d.ts +24 -0
  110. package/dist/src/pkg/workflow/retry-task.js +89 -0
  111. package/dist/src/pkg/workflow/retry-task.js.map +1 -0
  112. package/dist/src/pkg/workflow/retry-task.spec.d.ts +1 -0
  113. package/dist/src/pkg/workflow/retry-task.spec.js +145 -0
  114. package/dist/src/pkg/workflow/retry-task.spec.js.map +1 -0
  115. package/dist/src/pkg/workflow/sync-taskqueue.d.ts +32 -0
  116. package/dist/src/pkg/workflow/sync-taskqueue.js +108 -0
  117. package/dist/src/pkg/workflow/sync-taskqueue.js.map +1 -0
  118. package/dist/src/pkg/worksheet.utils.d.ts +27 -0
  119. package/dist/src/pkg/worksheet.utils.js +116 -0
  120. package/dist/src/pkg/worksheet.utils.js.map +1 -0
  121. package/dist/src/services/audit-service.d.ts +7 -0
  122. package/dist/src/services/audit-service.js +32 -0
  123. package/dist/src/services/audit-service.js.map +1 -0
  124. package/dist/src/services/excel.service.d.ts +25 -0
  125. package/dist/src/services/excel.service.js +95 -0
  126. package/dist/src/services/excel.service.js.map +1 -0
  127. package/dist/src/services/http-service.d.ts +7 -0
  128. package/dist/src/services/http-service.js +67 -0
  129. package/dist/src/services/http-service.js.map +1 -0
  130. package/dist/src/services/index.d.ts +8 -0
  131. package/dist/src/services/index.js +25 -0
  132. package/dist/src/services/index.js.map +1 -0
  133. package/dist/src/services/kafka-service.d.ts +15 -0
  134. package/dist/src/services/kafka-service.js +68 -0
  135. package/dist/src/services/kafka-service.js.map +1 -0
  136. package/dist/src/services/mailer-service.d.ts +15 -0
  137. package/dist/src/services/mailer-service.js +44 -0
  138. package/dist/src/services/mailer-service.js.map +1 -0
  139. package/dist/src/services/paginated-cache.d.ts +16 -0
  140. package/dist/src/services/paginated-cache.js +115 -0
  141. package/dist/src/services/paginated-cache.js.map +1 -0
  142. package/dist/src/services/paginated-cache.spec.d.ts +1 -0
  143. package/dist/src/services/paginated-cache.spec.js +284 -0
  144. package/dist/src/services/paginated-cache.spec.js.map +1 -0
  145. package/dist/src/services/redis-service.d.ts +33 -0
  146. package/dist/src/services/redis-service.js +230 -0
  147. package/dist/src/services/redis-service.js.map +1 -0
  148. package/dist/src/services/security-service.d.ts +11 -0
  149. package/dist/src/services/security-service.js +68 -0
  150. package/dist/src/services/security-service.js.map +1 -0
  151. package/package.json +1 -1
  152. package/src/constants.ts +47 -0
  153. package/src/gateways/alibaba-cloud-gateway.ts +127 -0
  154. package/src/gateways/http-audit-gateway.ts +104 -0
  155. package/src/gateways/index.ts +5 -0
  156. package/src/gateways/internal-auth-gateway.ts +42 -0
  157. package/src/gateways/stdout-audit-gateway.ts +23 -0
  158. package/src/gateways/webhook-audit-gateway.ts +33 -0
  159. package/src/interfaces.ts +304 -0
  160. package/src/models/audit-log.ts +126 -0
  161. package/src/models/index.ts +1 -0
  162. package/src/pkg/array-helper.ts +7 -0
  163. package/src/pkg/bcrypt-helper.ts +9 -0
  164. package/src/pkg/crypto-helper.ts +18 -0
  165. package/src/pkg/encryption-helper.spec.ts +423 -0
  166. package/src/pkg/encryption-helper.ts +155 -0
  167. package/src/pkg/filter-helper.spec.ts +105 -0
  168. package/src/pkg/filter-helper.ts +139 -0
  169. package/src/pkg/geoip-helper.ts +5 -0
  170. package/src/pkg/hash-helper.ts +12 -0
  171. package/src/pkg/http-request-utils.ts +75 -0
  172. package/src/pkg/index.ts +18 -0
  173. package/src/pkg/key-helper.ts +20 -0
  174. package/src/pkg/logger.ts +23 -0
  175. package/src/pkg/object-helper.ts +42 -0
  176. package/src/pkg/paginated-cache-registry.ts +25 -0
  177. package/src/pkg/query-helper.ts +79 -0
  178. package/src/pkg/referral-tree-utils.ts +165 -0
  179. package/src/pkg/scripts/index.ts +1 -0
  180. package/src/pkg/scripts/lua.ts +112 -0
  181. package/src/pkg/sort-helper.ts +19 -0
  182. package/src/pkg/string-utils.ts +104 -0
  183. package/src/pkg/task-helper.ts +25 -0
  184. package/src/pkg/workflow/delayed-task-registry.ts +54 -0
  185. package/src/pkg/workflow/delayed-task.ts +106 -0
  186. package/src/pkg/workflow/index.ts +5 -0
  187. package/src/pkg/workflow/processing-milestone.ts +54 -0
  188. package/src/pkg/workflow/retry-task.spec.ts +194 -0
  189. package/src/pkg/workflow/retry-task.ts +119 -0
  190. package/src/pkg/workflow/sync-taskqueue.ts +118 -0
  191. package/src/pkg/worksheet.utils.ts +178 -0
  192. package/src/services/audit-service.ts +22 -0
  193. package/src/services/excel.service.ts +103 -0
  194. package/src/services/http-service.ts +71 -0
  195. package/src/services/index.ts +8 -0
  196. package/src/services/kafka-service.ts +81 -0
  197. package/src/services/mailer-service.ts +43 -0
  198. package/src/services/paginated-cache.spec.ts +519 -0
  199. package/src/services/paginated-cache.ts +122 -0
  200. package/src/services/redis-service.ts +238 -0
  201. package/src/services/security-service.ts +80 -0
@@ -0,0 +1,304 @@
1
+ import { Borders, CellValue, Style } from "exceljs";
2
+ import {
3
+ Consumer,
4
+ ConsumerConfig,
5
+ ConsumerRunConfig,
6
+ ConsumerSubscribeTopics,
7
+ Producer,
8
+ ProducerConfig,
9
+ ProducerRecord,
10
+ TopicPartitionOffsetAndMetadata,
11
+ } from "kafkajs";
12
+
13
+ import {
14
+ FILTER_OPERATOR,
15
+ HttpMethod,
16
+ LOG_LEVEL,
17
+ SET_CACHE_POLICY,
18
+ } from "./constants";
19
+ import { AxiosRequestConfig } from "axios";
20
+
21
+ export interface Subscription {
22
+ unsubscribe(): Promise<void>;
23
+ }
24
+
25
+ export interface DelayedTaskOps {
26
+ callback: () => void;
27
+ startOnCreate?: boolean;
28
+ timeout: number;
29
+ }
30
+
31
+ export interface TaskRescheduleOps {
32
+ msFromNow?: number;
33
+ runTime?: Date;
34
+ }
35
+
36
+ export interface TaskQueue {
37
+ push<T = any>(queueName: string, name: string, handler: any): Promise<T>;
38
+ }
39
+
40
+ export type DelayFn = (callback: () => void, timeout: number) => Subscription;
41
+
42
+ export type TaskFn = () => any | Promise<any>;
43
+
44
+ export interface ITask {
45
+ id: string;
46
+ isRunning: boolean;
47
+ isCancelled: boolean;
48
+ isCron: boolean;
49
+ start(): Promise<void>;
50
+ cancel(): Promise<void>;
51
+ lastRun(): Promise<Date>;
52
+ nextRun(): Promise<Date>;
53
+ reschedule(options: TaskRescheduleOps): Promise<void>;
54
+ }
55
+
56
+ export interface TaskRegistry {
57
+ register(options: DelayedTaskOps): Promise<ITask>;
58
+ count(): Promise<number>;
59
+ getTasks(): Promise<ITask[]>;
60
+ getTaskById(id: string): Promise<ITask>;
61
+ cancelTaskById(id: string): Promise<void>;
62
+ startTaskById(id: string): Promise<void>;
63
+ }
64
+
65
+ export interface SQLRunner {
66
+ query<T = any>(sql: string, ...args: any[]): Promise<T>;
67
+ }
68
+
69
+ export interface HttpRequestOption extends AxiosRequestConfig {
70
+ serviceName?: string;
71
+ body?: any;
72
+ query?: any;
73
+ headers?: Record<string, string>;
74
+ reqId?: string;
75
+ }
76
+
77
+ export interface Logger {
78
+ info(message: string, ...args: any[]): void;
79
+ error(message: string, ...args: any[]): void;
80
+ warn(message: string, ...args: any[]): void;
81
+ }
82
+
83
+ export interface HttpService {
84
+ send<T = any>(
85
+ method: HttpMethod,
86
+ url: string,
87
+ options: HttpRequestOption
88
+ ): Promise<OperationResult<T>>;
89
+ }
90
+
91
+ export interface InternalAuthGatewayOptions {
92
+ endpointURL: string;
93
+ secret: string;
94
+ serviceName?: string;
95
+ }
96
+
97
+ export interface InternalAuthLoginResult {
98
+ accessToken?: string;
99
+ code?: string;
100
+ }
101
+
102
+ export interface InternalServiceAuthResult {
103
+ name: string;
104
+ type: "internal" | "external";
105
+ }
106
+
107
+ export interface DeleteByPatternOptions {
108
+ includePrefixInScanPattern: boolean;
109
+ }
110
+
111
+ export interface CacheService {
112
+ ttl(key: string): Promise<number>;
113
+ get(key: string): Promise<any>;
114
+ set(key: string, value: any, option?: SetCacheOption): Promise<any>;
115
+ del(...keys: string[]): Promise<void>;
116
+ incrBy(key: string, value?: number): Promise<number>;
117
+ incrByFloat(key: string, value: number): Promise<number>;
118
+ decrBy(key: string, value: number): Promise<number>;
119
+ deleteByPattern(pattern: string): Promise<void>;
120
+ getNumber(key: string): Promise<number | undefined>;
121
+ expire(key: string, ttl: number): Promise<number>;
122
+ }
123
+
124
+ export interface IPaginatedDataCache<T = any> {
125
+ generateCacheKey(
126
+ filter?: Record<string, any>,
127
+ limit?: number,
128
+ offset?: number
129
+ ): string;
130
+ getCurrentVersion(): Promise<number>;
131
+ getCachedPaginatedData(
132
+ filter: Record<string, any>,
133
+ limit: number,
134
+ offset: number
135
+ ): Promise<PaginationResult<T>>;
136
+ setCachedPaginatedData(
137
+ filter: Record<string, any>,
138
+ limit: number,
139
+ offset: number,
140
+ data: PaginationResult<T>,
141
+ ttlInSecs?: number
142
+ ): Promise<any>;
143
+ incrementCacheVersion(ttl?: number): Promise<number>;
144
+ }
145
+ export interface PaginationResult<T = any> {
146
+ rows: T[];
147
+ total: number;
148
+ limit: number;
149
+ offset: number;
150
+ }
151
+
152
+ export interface HashCacheService {
153
+ hset(key: string, field: string, value: any): Promise<void>;
154
+ hget(key: string, field: string): Promise<string>;
155
+ hlen(key: string): Promise<number>;
156
+ hincrbyfloat(key: string, field: string, value?: number): Promise<string>;
157
+ hincrby(key: string, field: string, value?: number): Promise<number>;
158
+ hkeys(key: string): Promise<string[]>;
159
+ }
160
+
161
+ export interface ListCacheService {
162
+ lpush(key: string, value: any): Promise<void>;
163
+ lset(key: string, index: number, value: any): Promise<void>;
164
+ lrem(
165
+ key: string,
166
+ count: string | number,
167
+ element: string | Buffer | number
168
+ ): Promise<number>;
169
+ rpush(key: string, value: any): Promise<void>;
170
+ lrange(key: string, start: number, end: number): Promise<string[]>;
171
+ lindex(key: string, index: number): Promise<string>;
172
+ llen(key: string): Promise<number>;
173
+ }
174
+
175
+ export type LuaCall = [script: string, numberOfKeys: number, ...args: any[]];
176
+
177
+ export interface CacheScriptEvaluator {
178
+ eval(script: string, numberOfKeys: number, ...args: any[]): Promise<any>;
179
+ multiEval(calls: LuaCall[]): Promise<any[]>;
180
+ }
181
+
182
+ export interface LockResult {
183
+ isLocked: boolean;
184
+ attemptsLeft: number;
185
+ }
186
+
187
+ export interface CRUDService<T = any> {
188
+ findById(userId: any, ...options: any[]): Promise<T>;
189
+ }
190
+
191
+ export interface SetCacheOption<Policy = SET_CACHE_POLICY> {
192
+ policy: Policy;
193
+ value?: any;
194
+ }
195
+ export interface IMessageQueueService {
196
+ initProducer(config?: any): Promise<void>;
197
+ initConsumer(config?: any): Promise<void>;
198
+ listen(subscribeConfig: any, runConfig: any): Promise<void>;
199
+ publish(record: any): Promise<void>;
200
+ commitOffsets(data: TopicPartitionOffsetAndMetadata[]): Promise<void>;
201
+ producer: Producer;
202
+ consumer: Consumer;
203
+ }
204
+
205
+ export interface HttpResponse<T = any> {
206
+ success?: boolean;
207
+ code?: string;
208
+ httpCode?: number;
209
+ message?: string;
210
+ data?: T;
211
+ }
212
+
213
+ export interface IKafkaService extends IMessageQueueService {
214
+ initProducer(config?: ProducerConfig): Promise<void>;
215
+ initConsumer(config?: ConsumerConfig): Promise<void>;
216
+ listen(
217
+ subscribeConfig: ConsumerSubscribeTopics,
218
+ runConfig: ConsumerRunConfig
219
+ ): Promise<void>;
220
+ publish(record: ProducerRecord): Promise<void>;
221
+ }
222
+
223
+ export interface PutObjectOption {
224
+ domain: string;
225
+ timeout?: number;
226
+ }
227
+
228
+ export interface CloudStorageClient {
229
+ generateTmpCredentials(sessionId: string): Promise<any>;
230
+ getObjectReadStream(fileName: string): Promise<any>;
231
+ deleteObject(filePath: string): Promise<void>;
232
+ uploadLocalToBucket(
233
+ fileName: string,
234
+ fileData: Buffer,
235
+ options?: PutObjectOption
236
+ ): Promise<string>;
237
+ uploadRemoteObjectToBucket(
238
+ fileName: string,
239
+ remoteUrl: string,
240
+ options?: PutObjectOption
241
+ ): Promise<string>;
242
+ }
243
+
244
+ export interface IFilter {
245
+ field: string;
246
+ operator: FILTER_OPERATOR;
247
+ value: any;
248
+ }
249
+
250
+ export type SORT_DIRECTION = "ASC" | "DESC";
251
+
252
+ export interface ISort {
253
+ columnName: string;
254
+ direction: SORT_DIRECTION;
255
+ }
256
+
257
+ export interface EmailSender {
258
+ send(mailOptions: SendMailOptions): Promise<void>;
259
+ }
260
+
261
+ export interface SendMailOptions {
262
+ from?: string;
263
+ to?: string | string[];
264
+ cc?: string | string[];
265
+ bcc?: string | string[];
266
+ subject: string;
267
+ text?: string;
268
+ html?: string;
269
+ }
270
+
271
+ export interface ICellOptions {
272
+ style?: Partial<Style>;
273
+ border?: Partial<Borders>;
274
+ }
275
+
276
+ export interface ICellData {
277
+ value: CellValue;
278
+ options?: ICellOptions;
279
+ }
280
+
281
+ export interface STSResponse {
282
+ RequestId: string;
283
+ AssumedRoleUser: any;
284
+ Credentials: {
285
+ SecurityToken: string;
286
+ AccessKeyId: string;
287
+ AccessKeySecret: string;
288
+ Expiration: string;
289
+ };
290
+ }
291
+
292
+ export interface AuditGateway {
293
+ publish(logId: string, level: LOG_LEVEL, content: any): Promise<any>;
294
+ }
295
+
296
+ export interface OperationResult<T = any> {
297
+ success: boolean;
298
+ data?: T;
299
+ message?: string;
300
+ code?: string;
301
+ httpCode?: number;
302
+ metadata?: any;
303
+ action?: string;
304
+ }
@@ -0,0 +1,126 @@
1
+ import { LOG_LEVEL } from "../constants";
2
+
3
+ export type LogObject = ErrorLog | InfoLog | DebugLog;
4
+
5
+ export interface LogObjectData {
6
+ logId: string;
7
+ userId?: string;
8
+ level: LOG_LEVEL;
9
+ action: string;
10
+ message?: any;
11
+ payload?: any;
12
+ metadata?: any;
13
+ }
14
+
15
+ export abstract class BaseLog {
16
+ public logId: string;
17
+ public userId: string;
18
+ public level: LOG_LEVEL;
19
+ public action: string;
20
+ public message?: any;
21
+ public payload?: any;
22
+ public metadata?: any;
23
+
24
+ constructor(data: Omit<LogObjectData, "level">) {
25
+ this.logId = data.logId;
26
+ this.userId = data.userId;
27
+ this.action = data.action;
28
+ this.message = data.message;
29
+ this.metadata = data.metadata;
30
+ this.payload = data.payload;
31
+ }
32
+
33
+ public abstract toJSON(): Record<string, any>;
34
+ }
35
+
36
+ export class ErrorLog extends BaseLog {
37
+ constructor(data: Omit<LogObjectData, "level">) {
38
+ super(data);
39
+
40
+ this.level = LOG_LEVEL.ERROR;
41
+ }
42
+
43
+ public toJSON() {
44
+ return {
45
+ logId: this.logId,
46
+ userId: this.userId,
47
+ level: this.level,
48
+ action: this.action,
49
+ message: this.message,
50
+ metadata: this.metadata,
51
+ payload: this.payload,
52
+ };
53
+ }
54
+ }
55
+
56
+ export class FatalLog extends BaseLog {
57
+ constructor(data: Omit<LogObjectData, "level">) {
58
+ super(data);
59
+
60
+ this.level = LOG_LEVEL.FATAL;
61
+ }
62
+
63
+ public toJSON() {
64
+ return {
65
+ logId: this.logId,
66
+ userId: this.userId,
67
+ level: this.level,
68
+ action: this.action,
69
+ message: this.message,
70
+ metadata: this.metadata,
71
+ payload: this.payload,
72
+ };
73
+ }
74
+ }
75
+
76
+ export class InfoLog extends BaseLog {
77
+ constructor(data: Omit<LogObjectData, "level">) {
78
+ super(data);
79
+
80
+ this.level = LOG_LEVEL.INFO;
81
+ }
82
+
83
+ public toJSON() {
84
+ return {
85
+ logId: this.logId,
86
+ userId: this.userId,
87
+ level: this.level,
88
+ action: this.action,
89
+ message: this.message,
90
+ metadata: this.metadata,
91
+ payload: this.payload,
92
+ };
93
+ }
94
+ }
95
+
96
+ export class DebugLog extends BaseLog {
97
+ parentLogId?: string;
98
+ parentLogType?: LOG_LEVEL;
99
+
100
+ constructor(
101
+ data: Omit<LogObjectData, "level"> & {
102
+ parentLogId?: string;
103
+ parentLogType?: LOG_LEVEL;
104
+ }
105
+ ) {
106
+ super(data);
107
+
108
+ this.level = LOG_LEVEL.DEBUG;
109
+ this.parentLogId = data.parentLogId;
110
+ this.parentLogType = data.parentLogType;
111
+ }
112
+
113
+ public toJSON() {
114
+ return {
115
+ logId: this.logId,
116
+ userId: this.userId,
117
+ level: this.level,
118
+ action: this.action,
119
+ message: this.message,
120
+ metadata: this.metadata,
121
+ payload: this.payload,
122
+ parentLogId: this.parentLogId,
123
+ parentLogType: this.parentLogType,
124
+ };
125
+ }
126
+ }
@@ -0,0 +1 @@
1
+ export * from "./audit-log";
@@ -0,0 +1,7 @@
1
+ export function shuffle<T>(array: T[]): T[] {
2
+ for (let i = array.length - 1; i > 0; i--) {
3
+ const j = Math.floor(Math.random() * (i + 1));
4
+ [array[i], array[j]] = [array[j], array[i]];
5
+ }
6
+ return array;
7
+ }
@@ -0,0 +1,9 @@
1
+ import * as bcrypt from "bcrypt";
2
+
3
+ export function hash(data: string, salt?: string | number): Promise<string> {
4
+ return bcrypt.hash(data, salt || 12);
5
+ }
6
+
7
+ export function compare(raw: string, hashed: string): Promise<boolean> {
8
+ return bcrypt.compare(raw, hashed);
9
+ }
@@ -0,0 +1,18 @@
1
+ import { createHash } from "crypto";
2
+
3
+ export const sha512Encrypt = (data: string, privateKey: string) => {
4
+ const sha512Hasher = createHash("sha512");
5
+ const finalData = `${data}_${privateKey}`;
6
+
7
+ return sha512Hasher.update(finalData).digest("hex");
8
+ };
9
+
10
+ export const sha512Verify = (
11
+ hashedToVerify: string,
12
+ data: string,
13
+ privateKey: string
14
+ ): boolean => {
15
+ const hashed = sha512Encrypt(data, privateKey);
16
+
17
+ return hashedToVerify === hashed;
18
+ };