@nest-omni/core 3.1.1-9 → 3.1.2-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 (310) hide show
  1. package/.hygen/new/crud/controller.ejs.t +82 -0
  2. package/.hygen/new/crud/create.dto.ejs.t +12 -0
  3. package/.hygen/new/crud/entity.ejs.t +26 -0
  4. package/.hygen/new/crud/get.dto.ejs.t +19 -0
  5. package/.hygen/new/crud/index-dto.ejs.t +29 -0
  6. package/.hygen/new/crud/index-response.dto.ejs.t +18 -0
  7. package/.hygen/new/crud/module.ejs.t +32 -0
  8. package/.hygen/new/crud/prompt.js +89 -0
  9. package/.hygen/new/crud/service.ejs.t +76 -0
  10. package/.hygen/new/crud/update.dto.ejs.t +11 -0
  11. package/.hygen/new/module/controller.ejs.t +93 -0
  12. package/.hygen/new/module/create-command.ejs.t +90 -0
  13. package/.hygen/new/module/create.dto.ejs.t +11 -0
  14. package/.hygen/new/module/dto.ejs.t +24 -0
  15. package/.hygen/new/module/entity.ejs.t +33 -0
  16. package/.hygen/new/module/get-query.ejs.t +57 -0
  17. package/.hygen/new/module/module.ejs.t +44 -0
  18. package/.hygen/new/module/not-found.exception.ejs.t +18 -0
  19. package/.hygen/new/module/page-options.dto.ejs.t +12 -0
  20. package/.hygen/new/module/prompt.js +104 -0
  21. package/.hygen/new/module/repository.ejs.t +16 -0
  22. package/.hygen/new/module/service.ejs.t +139 -0
  23. package/.hygen/new/module/translation-dto.ejs.t +27 -0
  24. package/.hygen/new/module/translation-entity.ejs.t +40 -0
  25. package/.hygen/new/module/translation-repository.ejs.t +16 -0
  26. package/.hygen/new/module/update.dto.ejs.t +10 -0
  27. package/.hygen.js +116 -0
  28. package/cache/cache-metrics.service.d.ts +83 -0
  29. package/cache/cache-metrics.service.js +298 -0
  30. package/cache/cache-serialization.service.d.ts +22 -0
  31. package/cache/cache-serialization.service.js +122 -0
  32. package/cache/cache.constants.d.ts +2 -0
  33. package/cache/cache.constants.js +5 -0
  34. package/cache/cache.health.d.ts +35 -0
  35. package/cache/cache.health.js +193 -0
  36. package/cache/cache.module.d.ts +26 -0
  37. package/cache/cache.module.js +155 -0
  38. package/cache/cache.service.d.ts +37 -0
  39. package/cache/cache.service.js +308 -0
  40. package/cache/cache.warmup.service.d.ts +34 -0
  41. package/cache/cache.warmup.service.js +199 -0
  42. package/cache/decorators/cache-evict.decorator.d.ts +2 -0
  43. package/cache/decorators/cache-evict.decorator.js +72 -0
  44. package/cache/decorators/cache-put.decorator.d.ts +2 -0
  45. package/cache/decorators/cache-put.decorator.js +48 -0
  46. package/cache/decorators/cacheable.decorator.d.ts +4 -0
  47. package/cache/decorators/cacheable.decorator.js +68 -0
  48. package/cache/decorators/index.d.ts +3 -0
  49. package/cache/decorators/index.js +11 -0
  50. package/cache/dependencies/callback.dependency.d.ts +11 -0
  51. package/cache/dependencies/callback.dependency.js +92 -0
  52. package/cache/dependencies/chain.dependency.d.ts +20 -0
  53. package/cache/dependencies/chain.dependency.js +113 -0
  54. package/cache/dependencies/db.dependency.d.ts +15 -0
  55. package/cache/dependencies/db.dependency.js +71 -0
  56. package/cache/dependencies/file.dependency.d.ts +17 -0
  57. package/cache/dependencies/file.dependency.js +63 -0
  58. package/cache/dependencies/index.d.ts +6 -0
  59. package/cache/dependencies/index.js +22 -0
  60. package/cache/dependencies/tag.dependency.d.ts +16 -0
  61. package/cache/dependencies/tag.dependency.js +75 -0
  62. package/cache/dependencies/time.dependency.d.ts +19 -0
  63. package/cache/dependencies/time.dependency.js +71 -0
  64. package/cache/examples/basic-usage.d.ts +58 -0
  65. package/cache/examples/basic-usage.js +379 -0
  66. package/cache/index.d.ts +15 -0
  67. package/cache/index.js +44 -0
  68. package/cache/interfaces/cache-dependency.interface.d.ts +11 -0
  69. package/cache/interfaces/cache-dependency.interface.js +2 -0
  70. package/cache/interfaces/cache-options.interface.d.ts +32 -0
  71. package/cache/interfaces/cache-options.interface.js +9 -0
  72. package/cache/interfaces/cache-provider.interface.d.ts +28 -0
  73. package/cache/interfaces/cache-provider.interface.js +2 -0
  74. package/cache/interfaces/index.d.ts +3 -0
  75. package/cache/interfaces/index.js +19 -0
  76. package/cache/providers/base-cache.provider.d.ts +16 -0
  77. package/cache/providers/base-cache.provider.js +32 -0
  78. package/cache/providers/cls-cache.provider.d.ts +16 -0
  79. package/cache/providers/cls-cache.provider.js +140 -0
  80. package/cache/providers/index.d.ts +4 -0
  81. package/cache/providers/index.js +23 -0
  82. package/cache/providers/memory-cache.provider.d.ts +26 -0
  83. package/cache/providers/memory-cache.provider.js +171 -0
  84. package/cache/providers/redis-cache.provider.d.ts +23 -0
  85. package/cache/providers/redis-cache.provider.js +215 -0
  86. package/cache/utils/dependency-manager.util.d.ts +15 -0
  87. package/cache/utils/dependency-manager.util.js +141 -0
  88. package/cache/utils/index.d.ts +2 -0
  89. package/cache/utils/index.js +18 -0
  90. package/cache/utils/key-generator.util.d.ts +13 -0
  91. package/cache/utils/key-generator.util.js +74 -0
  92. package/common/abstract.entity.d.ts +20 -0
  93. package/common/abstract.entity.js +81 -0
  94. package/common/boilerplate.polyfill.d.ts +50 -0
  95. package/common/boilerplate.polyfill.js +152 -0
  96. package/common/dto/abstract.dto.d.ts +13 -0
  97. package/common/dto/abstract.dto.js +59 -0
  98. package/common/dto/bulk-id.dto.d.ts +3 -0
  99. package/common/dto/bulk-id.dto.js +27 -0
  100. package/common/dto/create-translation.dto.d.ts +5 -0
  101. package/common/dto/create-translation.dto.js +25 -0
  102. package/common/dto/dto-container.d.ts +9 -0
  103. package/common/dto/dto-container.js +59 -0
  104. package/common/dto/dto-decorators.d.ts +18 -0
  105. package/common/dto/dto-decorators.js +59 -0
  106. package/common/dto/dto-extensions.d.ts +12 -0
  107. package/common/dto/dto-extensions.js +63 -0
  108. package/common/dto/dto-service-accessor.d.ts +7 -0
  109. package/common/dto/dto-service-accessor.js +49 -0
  110. package/common/dto/dto-transformer.d.ts +11 -0
  111. package/common/dto/dto-transformer.js +49 -0
  112. package/common/dto/index.d.ts +12 -0
  113. package/common/dto/index.js +28 -0
  114. package/common/dto/page-meta.dto.d.ts +15 -0
  115. package/common/dto/page-meta.dto.js +48 -0
  116. package/common/dto/page-options.dto.d.ts +5 -0
  117. package/common/dto/page-options.dto.js +40 -0
  118. package/common/dto/page.dto.d.ts +11 -0
  119. package/common/dto/page.dto.js +53 -0
  120. package/common/examples/paginate-and-map.example.d.ts +14 -0
  121. package/common/examples/paginate-and-map.example.js +158 -0
  122. package/common/index.d.ts +6 -0
  123. package/common/index.js +22 -0
  124. package/common/snake-naming.strategy.d.ts +11 -0
  125. package/common/snake-naming.strategy.js +37 -0
  126. package/common/types.d.ts +9 -0
  127. package/common/types.js +2 -0
  128. package/common/utils.d.ts +3 -0
  129. package/common/utils.js +24 -0
  130. package/constants/index.d.ts +2 -0
  131. package/constants/index.js +18 -0
  132. package/constants/language-code.d.ts +5 -0
  133. package/constants/language-code.js +9 -0
  134. package/constants/order.d.ts +4 -0
  135. package/constants/order.js +8 -0
  136. package/decorators/api-page-ok-response.decorator.d.ts +5 -0
  137. package/decorators/api-page-ok-response.decorator.js +24 -0
  138. package/decorators/api-paginated-response.decorator.d.ts +2 -0
  139. package/decorators/api-paginated-response.decorator.js +9 -0
  140. package/decorators/auth-user.decorator.d.ts +1 -0
  141. package/decorators/auth-user.decorator.js +14 -0
  142. package/decorators/controller.decorator.d.ts +1 -0
  143. package/decorators/controller.decorator.js +10 -0
  144. package/decorators/examples/validation-decorators.example.d.ts +69 -0
  145. package/decorators/examples/validation-decorators.example.js +331 -0
  146. package/decorators/field.decorators.d.ts +79 -0
  147. package/decorators/field.decorators.js +499 -0
  148. package/decorators/http.decorators.d.ts +3 -0
  149. package/decorators/http.decorators.js +7 -0
  150. package/decorators/index.d.ts +14 -0
  151. package/decorators/index.js +30 -0
  152. package/decorators/operation.decorator.d.ts +1 -0
  153. package/decorators/operation.decorator.js +6 -0
  154. package/decorators/paginated-response.decorator.d.ts +11 -0
  155. package/decorators/paginated-response.decorator.js +60 -0
  156. package/decorators/property.decorators.d.ts +15 -0
  157. package/decorators/property.decorators.js +31 -0
  158. package/decorators/public-route.decorator.d.ts +3 -0
  159. package/decorators/public-route.decorator.js +7 -0
  160. package/decorators/swagger.schema.d.ts +5 -0
  161. package/decorators/swagger.schema.js +78 -0
  162. package/decorators/timestamp-column.decorator.d.ts +1 -0
  163. package/decorators/timestamp-column.decorator.js +27 -0
  164. package/decorators/transform.decorators.d.ts +8 -0
  165. package/decorators/transform.decorators.js +100 -0
  166. package/decorators/translate.decorator.d.ts +5 -0
  167. package/decorators/translate.decorator.js +17 -0
  168. package/decorators/use-dto.decorator.d.ts +4 -0
  169. package/decorators/use-dto.decorator.js +8 -0
  170. package/decorators/user-check.decorator.d.ts +6 -0
  171. package/decorators/user-check.decorator.js +21 -0
  172. package/decorators/user.decorator.d.ts +12 -0
  173. package/decorators/user.decorator.js +44 -0
  174. package/decorators/user_auth.decorator.d.ts +1 -0
  175. package/decorators/user_auth.decorator.js +15 -0
  176. package/decorators/validator.decorators.d.ts +18 -0
  177. package/decorators/validator.decorators.js +193 -0
  178. package/exceptions/file-not-image.exception.d.ts +4 -0
  179. package/exceptions/file-not-image.exception.js +10 -0
  180. package/exceptions/index.d.ts +2 -0
  181. package/exceptions/index.js +18 -0
  182. package/exceptions/page-type.exception.d.ts +4 -0
  183. package/exceptions/page-type.exception.js +10 -0
  184. package/exceptions/user-not-found.exception.d.ts +4 -0
  185. package/exceptions/user-not-found.exception.js +10 -0
  186. package/filters/bad-request.filter.d.ts +5 -0
  187. package/filters/bad-request.filter.js +71 -0
  188. package/filters/constraint-errors.d.ts +1 -0
  189. package/filters/constraint-errors.js +6 -0
  190. package/filters/index.d.ts +3 -0
  191. package/filters/index.js +19 -0
  192. package/filters/query-failed.filter.d.ts +10 -0
  193. package/filters/query-failed.filter.js +42 -0
  194. package/health-checker/health-checker.controller.d.ts +13 -0
  195. package/health-checker/health-checker.controller.js +69 -0
  196. package/health-checker/health-checker.module.d.ts +2 -0
  197. package/health-checker/health-checker.module.js +24 -0
  198. package/health-checker/index.d.ts +2 -0
  199. package/health-checker/index.js +18 -0
  200. package/helpers/common.helper.d.ts +3 -0
  201. package/helpers/common.helper.js +36 -0
  202. package/helpers/date.helper.d.ts +10 -0
  203. package/helpers/date.helper.js +57 -0
  204. package/helpers/index.d.ts +2 -0
  205. package/helpers/index.js +18 -0
  206. package/i18n/en_US/validation.json +44 -0
  207. package/i18n/zh_CN/validation.json +44 -0
  208. package/index.d.ts +18 -0
  209. package/index.js +3 -0
  210. package/interceptors/index.d.ts +2 -0
  211. package/interceptors/index.js +18 -0
  212. package/interceptors/language-interceptor.service.d.ts +6 -0
  213. package/interceptors/language-interceptor.service.js +29 -0
  214. package/interceptors/translation-interceptor.service.d.ts +5 -0
  215. package/interceptors/translation-interceptor.service.js +34 -0
  216. package/interfaces/IApiFile.d.ts +4 -0
  217. package/interfaces/IApiFile.js +2 -0
  218. package/interfaces/IFile.d.ts +8 -0
  219. package/interfaces/IFile.js +2 -0
  220. package/interfaces/ITranslationDecoratorInterface.d.ts +3 -0
  221. package/interfaces/ITranslationDecoratorInterface.js +2 -0
  222. package/interfaces/index.d.ts +3 -0
  223. package/interfaces/index.js +19 -0
  224. package/interfaces/response.d.ts +25 -0
  225. package/interfaces/response.js +2 -0
  226. package/middlewares/index.d.ts +4 -0
  227. package/middlewares/index.js +20 -0
  228. package/middlewares/omni-auth.middleware.d.ts +1 -0
  229. package/middlewares/omni-auth.middleware.js +13 -0
  230. package/middlewares/powerby.middleware.d.ts +1 -0
  231. package/middlewares/powerby.middleware.js +10 -0
  232. package/middlewares/request-id.middleware.d.ts +7 -0
  233. package/middlewares/request-id.middleware.js +22 -0
  234. package/middlewares/xml.middleware.d.ts +4 -0
  235. package/middlewares/xml.middleware.js +24 -0
  236. package/package.json +41 -116
  237. package/providers/context.provider.d.ts +34 -0
  238. package/providers/context.provider.js +80 -0
  239. package/providers/generator.provider.d.ts +9 -0
  240. package/providers/generator.provider.js +50 -0
  241. package/providers/index.d.ts +2 -0
  242. package/providers/index.js +18 -0
  243. package/redis-lock/examples/lock-strategy.examples.d.ts +73 -0
  244. package/redis-lock/examples/lock-strategy.examples.js +387 -0
  245. package/redis-lock/index.d.ts +4 -0
  246. package/redis-lock/index.js +16 -0
  247. package/redis-lock/redis-lock.decorator.d.ts +12 -0
  248. package/redis-lock/redis-lock.decorator.js +125 -0
  249. package/redis-lock/redis-lock.module.d.ts +23 -0
  250. package/redis-lock/redis-lock.module.js +117 -0
  251. package/redis-lock/redis-lock.service.d.ts +66 -0
  252. package/redis-lock/redis-lock.service.js +413 -0
  253. package/setup/bootstrap.setup.d.ts +2 -0
  254. package/setup/bootstrap.setup.js +184 -0
  255. package/setup/index.d.ts +4 -0
  256. package/setup/index.js +20 -0
  257. package/setup/mode.setup.d.ts +12 -0
  258. package/setup/mode.setup.js +60 -0
  259. package/setup/schedule.decorator.d.ts +23 -0
  260. package/setup/schedule.decorator.js +233 -0
  261. package/setup/worker.decorator.d.ts +14 -0
  262. package/setup/worker.decorator.js +130 -0
  263. package/shared/index.d.ts +2 -0
  264. package/shared/index.js +18 -0
  265. package/shared/serviceRegistryModule.d.ts +2 -0
  266. package/shared/serviceRegistryModule.js +170 -0
  267. package/shared/services/api-config.service.d.ts +54 -0
  268. package/shared/services/api-config.service.js +287 -0
  269. package/shared/services/generator.service.d.ts +4 -0
  270. package/shared/services/generator.service.js +23 -0
  271. package/shared/services/index.d.ts +4 -0
  272. package/shared/services/index.js +20 -0
  273. package/shared/services/translation.service.d.ts +9 -0
  274. package/shared/services/translation.service.js +70 -0
  275. package/shared/services/validator.service.d.ts +3 -0
  276. package/shared/services/validator.service.js +20 -0
  277. package/validator-json/decorators.d.ts +6 -0
  278. package/validator-json/decorators.js +22 -0
  279. package/validator-json/default.d.ts +6 -0
  280. package/validator-json/default.js +138 -0
  281. package/validator-json/defaultConverters.d.ts +8 -0
  282. package/validator-json/defaultConverters.js +376 -0
  283. package/validator-json/index.d.ts +4 -0
  284. package/validator-json/index.js +20 -0
  285. package/validator-json/options.d.ts +11 -0
  286. package/validator-json/options.js +10 -0
  287. package/validators/file-mimetype.validator.d.ts +13 -0
  288. package/validators/file-mimetype.validator.js +21 -0
  289. package/validators/index.d.ts +6 -0
  290. package/validators/index.js +22 -0
  291. package/validators/is-exists.validator.d.ts +18 -0
  292. package/validators/is-exists.validator.js +60 -0
  293. package/validators/is-unique.validator.d.ts +17 -0
  294. package/validators/is-unique.validator.js +91 -0
  295. package/validators/phone-country-code.validator.d.ts +2 -0
  296. package/validators/phone-country-code.validator.js +29 -0
  297. package/validators/same-as.validator.d.ts +2 -0
  298. package/validators/same-as.validator.js +24 -0
  299. package/validators/skip-empty.validator.d.ts +1 -0
  300. package/validators/skip-empty.validator.js +17 -0
  301. package/vault/index.d.ts +4 -0
  302. package/vault/index.js +20 -0
  303. package/vault/interfaces/vault-options.interface.d.ts +22 -0
  304. package/vault/interfaces/vault-options.interface.js +2 -0
  305. package/vault/vault-config.loader.d.ts +13 -0
  306. package/vault/vault-config.loader.js +246 -0
  307. package/vault/vault-config.service.d.ts +18 -0
  308. package/vault/vault-config.service.js +174 -0
  309. package/vault/vault.module.d.ts +2 -0
  310. package/vault/vault.module.js +21 -0
@@ -0,0 +1,6 @@
1
+ import type { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import type { Observable } from 'rxjs';
3
+ export declare class LanguageInterceptor implements NestInterceptor {
4
+ intercept(context: ExecutionContext, next: CallHandler): Observable<undefined>;
5
+ }
6
+ export declare function UseLanguageInterceptor(): MethodDecorator & ClassDecorator;
@@ -0,0 +1,29 @@
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.LanguageInterceptor = void 0;
10
+ exports.UseLanguageInterceptor = UseLanguageInterceptor;
11
+ const common_1 = require("@nestjs/common");
12
+ const constants_1 = require("../constants");
13
+ const providers_1 = require("../providers");
14
+ let LanguageInterceptor = class LanguageInterceptor {
15
+ intercept(context, next) {
16
+ var _a;
17
+ const request = context.switchToHttp().getRequest();
18
+ const lang = (_a = request.headers['accept-language']) !== null && _a !== void 0 ? _a : constants_1.LanguageCode.en_US;
19
+ providers_1.ContextProvider.setLanguage(lang);
20
+ return next.handle();
21
+ }
22
+ };
23
+ exports.LanguageInterceptor = LanguageInterceptor;
24
+ exports.LanguageInterceptor = LanguageInterceptor = __decorate([
25
+ (0, common_1.Injectable)()
26
+ ], LanguageInterceptor);
27
+ function UseLanguageInterceptor() {
28
+ return (0, common_1.UseInterceptors)(LanguageInterceptor);
29
+ }
@@ -0,0 +1,5 @@
1
+ import type { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import type { Observable } from 'rxjs';
3
+ export declare class TranslationInterceptor implements NestInterceptor {
4
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
5
+ }
@@ -0,0 +1,34 @@
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.TranslationInterceptor = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const operators_1 = require("rxjs/operators");
12
+ let TranslationInterceptor = class TranslationInterceptor {
13
+ intercept(context, next) {
14
+ const ctx = context.switchToHttp();
15
+ const req = ctx.getRequest();
16
+ const res = ctx.getResponse();
17
+ return next.handle().pipe((0, operators_1.map)((data) => {
18
+ if (res.statusCode === common_1.HttpStatus.CREATED) {
19
+ res.status(common_1.HttpStatus.OK);
20
+ }
21
+ return {
22
+ code: 200,
23
+ data,
24
+ msg: 'success',
25
+ requestId: req.id,
26
+ timestamp: new Date().toISOString(),
27
+ };
28
+ }));
29
+ }
30
+ };
31
+ exports.TranslationInterceptor = TranslationInterceptor;
32
+ exports.TranslationInterceptor = TranslationInterceptor = __decorate([
33
+ (0, common_1.Injectable)()
34
+ ], TranslationInterceptor);
@@ -0,0 +1,4 @@
1
+ export interface IApiFile {
2
+ name: string;
3
+ isArray?: boolean;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface IFile {
2
+ encoding: string;
3
+ buffer: Buffer;
4
+ fieldname: string;
5
+ mimetype: string;
6
+ originalname: string;
7
+ size: number;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export interface ITranslationDecoratorInterface {
2
+ translationKey?: string;
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from './IApiFile';
2
+ export * from './IFile';
3
+ export * from './ITranslationDecoratorInterface';
@@ -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("./IApiFile"), exports);
18
+ __exportStar(require("./IFile"), exports);
19
+ __exportStar(require("./ITranslationDecoratorInterface"), exports);
@@ -0,0 +1,25 @@
1
+ export type TExceptionOption = string | {
2
+ code: number;
3
+ msg: string;
4
+ error?: any;
5
+ };
6
+ export interface IHttpResultPaginate<T> {
7
+ list: T;
8
+ total: number;
9
+ page: number;
10
+ pageCount: number;
11
+ count: number;
12
+ }
13
+ export interface IHttpResponseBase {
14
+ code: number;
15
+ msg: string;
16
+ timestamp: string;
17
+ requestId: string;
18
+ }
19
+ export type THttpErrorResponse = IHttpResponseBase & {
20
+ error: any;
21
+ };
22
+ export type THttpSuccessResponse<T> = IHttpResponseBase & {
23
+ data: T | IHttpResultPaginate<T>;
24
+ };
25
+ export type THttpResponse<T> = THttpErrorResponse | THttpSuccessResponse<T>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export * from './request-id.middleware';
2
+ export * from './powerby.middleware';
3
+ export * from './omni-auth.middleware';
4
+ export * from './xml.middleware';
@@ -0,0 +1,20 @@
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("./request-id.middleware"), exports);
18
+ __exportStar(require("./powerby.middleware"), exports);
19
+ __exportStar(require("./omni-auth.middleware"), exports);
20
+ __exportStar(require("./xml.middleware"), exports);
@@ -0,0 +1 @@
1
+ export declare const OmniAuthMiddleware: () => (req: any, res: any, next: any) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OmniAuthMiddleware = void 0;
4
+ const user_decorator_1 = require("../decorators/user.decorator");
5
+ const providers_1 = require("../providers");
6
+ const OmniAuthMiddleware = () => {
7
+ return (req, res, next) => {
8
+ req.user = (0, user_decorator_1.getOmniAuthData)(req);
9
+ providers_1.ContextProvider.setAuthUser(req.user);
10
+ next();
11
+ };
12
+ };
13
+ exports.OmniAuthMiddleware = OmniAuthMiddleware;
@@ -0,0 +1 @@
1
+ export declare const PowerByMiddleware: (by?: string) => (req: any, res: any, next: any) => void;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PowerByMiddleware = void 0;
4
+ const PowerByMiddleware = (by = 'KN') => {
5
+ return (req, res, next) => {
6
+ res.header('x-powered-by', by);
7
+ next();
8
+ };
9
+ };
10
+ exports.PowerByMiddleware = PowerByMiddleware;
@@ -0,0 +1,7 @@
1
+ import { NextFunction, Request, Response } from 'express';
2
+ export interface RequestIdConfig {
3
+ header: string;
4
+ idGenerator: () => string;
5
+ setHeader: boolean;
6
+ }
7
+ export declare const RequestIdMiddleware: (config?: RequestIdConfig) => (req: Request, res: Response, next: NextFunction) => void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestIdMiddleware = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const providers_1 = require("../providers");
6
+ const RequestIdMiddleware = (config = {
7
+ header: 'x-request-id',
8
+ idGenerator: uuid_1.v4,
9
+ setHeader: true,
10
+ }) => {
11
+ return (req, res, next) => {
12
+ const requestId = req.header(config.header) || config.idGenerator();
13
+ req.headers[config.header] = requestId;
14
+ req.id = requestId;
15
+ providers_1.ContextProvider.setRequestId(requestId);
16
+ if (config.setHeader) {
17
+ res.set(config.header, requestId);
18
+ }
19
+ next();
20
+ };
21
+ };
22
+ exports.RequestIdMiddleware = RequestIdMiddleware;
@@ -0,0 +1,4 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ export declare class XMLMiddleware implements NestMiddleware {
3
+ use(req: any, res: any, next: () => void): void;
4
+ }
@@ -0,0 +1,24 @@
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.XMLMiddleware = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const bodyParser = require("body-parser");
12
+ const bodyParserMiddleware = bodyParser.text({
13
+ limit: '1024kb',
14
+ type: 'application/xml',
15
+ });
16
+ let XMLMiddleware = class XMLMiddleware {
17
+ use(req, res, next) {
18
+ bodyParserMiddleware(req, res, next);
19
+ }
20
+ };
21
+ exports.XMLMiddleware = XMLMiddleware;
22
+ exports.XMLMiddleware = XMLMiddleware = __decorate([
23
+ (0, common_1.Injectable)()
24
+ ], XMLMiddleware);
package/package.json CHANGED
@@ -1,17 +1,15 @@
1
1
  {
2
2
  "name": "@nest-omni/core",
3
- "version": "3.1.1-9",
3
+ "version": "3.1.2-0",
4
4
  "description": "A comprehensive NestJS framework for building enterprise-grade applications with best practices",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
7
- "files": [
8
- "dist",
9
- "README.md",
10
- "LICENSE"
11
- ],
12
7
  "scripts": {
13
8
  "build": "tsc -p tsconfig.json",
14
9
  "test": "jest --passWithNoTests",
10
+ "test:cache": "jest src/cache --verbose",
11
+ "test:cache:watch": "jest src/cache --watch",
12
+ "test:cache:coverage": "jest src/cache --coverage",
15
13
  "lint": "eslint 'src/**/*.ts' --fix"
16
14
  },
17
15
  "bin": {
@@ -43,135 +41,62 @@
43
41
  },
44
42
  "devDependencies": {
45
43
  "@types/compression": "^1.8.1",
46
- "@types/express": "^5.0.3",
44
+ "@types/express": "^5.0.4",
47
45
  "@types/express-session": "^1.18.2",
48
46
  "@types/lodash": "^4.17.20",
49
47
  "@types/node": "^24.9.1",
50
48
  "@types/sprintf-js": "^1.1.4",
51
- "@types/uuid": "^10.0.0",
49
+ "@types/uuid": "^11.0.0",
52
50
  "typescript": "^5.9.3"
53
51
  },
54
52
  "dependencies": {
53
+ "@dataui/crud": "^5.3.4",
54
+ "@dataui/crud-typeorm": "^5.3.4",
55
55
  "@nestjs-cls/transactional": "^3.1.0",
56
56
  "@nestjs-cls/transactional-adapter-typeorm": "^1.3.0",
57
- "@sentry/nestjs": "^10.21.0",
58
- "@sentry/profiling-node": "^10.21.0",
57
+ "@nestjs/bull": "^11.0.4",
58
+ "@nestjs/common": "^11.1.7",
59
+ "@nestjs/config": "^4.0.2",
60
+ "@nestjs/core": "^11.1.7",
61
+ "@nestjs/platform-express": "^11.1.7",
62
+ "@nestjs/schedule": "^6.0.1",
63
+ "@nestjs/swagger": "^11.2.1",
64
+ "@nestjs/terminus": "^11.0.0",
65
+ "@nestjs/typeorm": "^11.0.0",
66
+ "@sentry/nestjs": "^10.22.0",
67
+ "@sentry/profiling-node": "^10.22.0",
68
+ "@songkeys/nestjs-redis": "^11.0.0",
69
+ "@songkeys/nestjs-redis-health": "^11.0.0",
59
70
  "axios": "^1.12.2",
60
71
  "axios-retry": "^4.5.0",
72
+ "bcrypt": "^6.0.0",
73
+ "body-parser": "^2.2.0",
74
+ "bull": "^4.16.5",
61
75
  "class-transformer": "^0.5.1",
62
76
  "class-validator": "^0.14.2",
63
77
  "compression": "^1.8.1",
78
+ "connect-redis": "^9.0.0",
79
+ "dotenv": "^17.2.3",
80
+ "express": "^5.1.0",
81
+ "express-session": "^1.18.2",
64
82
  "hygen": "^6.2.11",
65
- "libphonenumber-js": "^1.12.24",
83
+ "ioredis": "^5.8.2",
84
+ "libphonenumber-js": "^1.12.25",
66
85
  "lodash": "^4.17.21",
86
+ "mime-types": "^3.0.1",
67
87
  "moment": "^2.30.1",
88
+ "mysql2": "^3.15.3",
89
+ "nestjs-cls": "^6.0.1",
90
+ "nestjs-i18n": "^10.5.1",
91
+ "nestjs-pino": "^4.4.1",
92
+ "pino-http": "^11.0.0",
93
+ "pino-pretty": "^13.1.2",
68
94
  "reflect-metadata": "^0.2.2",
69
95
  "rxjs": "^7.8.2",
70
- "sprintf-js": "^1.1.3",
71
- "uuid": "^13.0.0"
72
- },
73
- "peerDependencies": {
74
- "@dataui/crud": "^5.3.0",
75
- "@dataui/crud-typeorm": "^5.3.0",
76
- "@keyv/redis": "^5.1.3",
77
- "@songkeys/nestjs-redis": "^11.0.0",
78
- "@songkeys/nestjs-redis-health": "^11.0.0",
79
- "@nestjs/bull": "^11.0.0",
80
- "@nestjs/cache-manager": "^3.0.0",
81
- "@nestjs/common": "^11.0.0",
82
- "@nestjs/config": "^4.0.0",
83
- "@nestjs/core": "^11.0.0",
84
- "@nestjs/platform-express": "^11.0.0",
85
- "@nestjs/schedule": "^6.0.0",
86
- "@nestjs/swagger": "^11.0.0",
87
- "@nestjs/terminus": "^11.0.0",
88
- "@nestjs/typeorm": "^11.0.0",
89
- "bcrypt": "^6.0.0",
90
- "bull": "^4.16.0",
91
- "cache-manager": "^7.0.0",
92
- "keyv": "^5.5.3",
93
- "connect-redis": "^9.0.0",
94
- "express": "^5.0.0",
95
- "express-session": "^1.18.0",
96
- "mime-types": "^3.0.0",
97
- "mysql2": "^3.0.0",
98
- "nestjs-cls": "^6.0.0",
99
- "nestjs-i18n": "^10.5.0",
100
- "nestjs-pino": "^4.0.0",
101
- "pino-http": "^11.0.0",
102
- "pino-pretty": "^13.0.0",
103
96
  "source-map-support": "^0.5.21",
104
- "typeorm": "^0.3.20"
105
- },
106
- "peerDependenciesMeta": {
107
- "@dataui/crud": {
108
- "optional": true
109
- },
110
- "@dataui/crud-typeorm": {
111
- "optional": true
112
- },
113
- "@keyv/redis": {
114
- "optional": true
115
- },
116
- "@songkeys/nestjs-redis": {
117
- "optional": true
118
- },
119
- "@songkeys/nestjs-redis-health": {
120
- "optional": true
121
- },
122
- "@nestjs/bull": {
123
- "optional": true
124
- },
125
- "@nestjs/cache-manager": {
126
- "optional": true
127
- },
128
- "@nestjs/microservices": {
129
- "optional": true
130
- },
131
- "@nestjs/schedule": {
132
- "optional": true
133
- },
134
- "@nestjs/swagger": {
135
- "optional": true
136
- },
137
- "bcrypt": {
138
- "optional": true
139
- },
140
- "bull": {
141
- "optional": true
142
- },
143
- "cache-manager": {
144
- "optional": true
145
- },
146
- "connect-redis": {
147
- "optional": true
148
- },
149
- "express-session": {
150
- "optional": true
151
- },
152
- "keyv": {
153
- "optional": true
154
- },
155
- "mysql2": {
156
- "optional": true
157
- },
158
- "nestjs-cls": {
159
- "optional": true
160
- },
161
- "nestjs-i18n": {
162
- "optional": true
163
- },
164
- "nestjs-pino": {
165
- "optional": true
166
- },
167
- "pino-http": {
168
- "optional": true
169
- },
170
- "pino-pretty": {
171
- "optional": true
172
- },
173
- "typeorm": {
174
- "optional": true
175
- }
97
+ "sprintf-js": "^1.1.3",
98
+ "typeorm": "^0.3.27",
99
+ "uuid": "^13.0.0",
100
+ "node-vault": "^0.10.9"
176
101
  }
177
102
  }
@@ -0,0 +1,34 @@
1
+ import { IUser } from '../decorators/user.decorator';
2
+ export declare class ContextProvider {
3
+ private static readonly nameSpace;
4
+ private static readonly authUserKey;
5
+ private static readonly routerKey;
6
+ private static readonly languageKey;
7
+ private static readonly requestKey;
8
+ static get<T>(key: string): import("nestjs-cls/dist/src/types/type-if-type.type").TypeIfUndefined<T, import("nestjs-cls").ClsStore, T>;
9
+ static set(key: string, value: any): void;
10
+ static getKeyWithNamespace(key: string): string;
11
+ static setRouter(user: any): void;
12
+ static getCanLog(): boolean;
13
+ static getRouter(): {
14
+ action: {
15
+ feature: string;
16
+ action: string;
17
+ };
18
+ id: string;
19
+ method: object;
20
+ ip: string;
21
+ canLog: boolean;
22
+ };
23
+ static setRequestId(id: string): void;
24
+ static getRequestId(): string;
25
+ static setAuthUser(user: IUser): void;
26
+ static setLanguage(language: string): void;
27
+ static getLanguage(): string;
28
+ static getAuthUserField<T extends keyof IUser>(field?: T): IUser[T];
29
+ static getAuthUser(): IUser;
30
+ static getAppId(): string;
31
+ static getRole(): string;
32
+ static getAdmin(): boolean;
33
+ static getTenantId(): string;
34
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextProvider = void 0;
4
+ const nestjs_cls_1 = require("nestjs-cls");
5
+ const common_1 = require("@nestjs/common");
6
+ class ContextProvider {
7
+ static get(key) {
8
+ const store = nestjs_cls_1.ClsServiceManager.getClsService();
9
+ return store.get(ContextProvider.getKeyWithNamespace(key));
10
+ }
11
+ static set(key, value) {
12
+ const store = nestjs_cls_1.ClsServiceManager.getClsService();
13
+ store.set(ContextProvider.getKeyWithNamespace(key), value);
14
+ }
15
+ static getKeyWithNamespace(key) {
16
+ return `${ContextProvider.nameSpace}.${key}`;
17
+ }
18
+ static setRouter(user) {
19
+ ContextProvider.set(ContextProvider.routerKey, user);
20
+ }
21
+ static getCanLog() {
22
+ return ContextProvider.getRouter().canLog;
23
+ }
24
+ static getRouter() {
25
+ const value = ContextProvider.get(ContextProvider.routerKey);
26
+ if (value) {
27
+ return value;
28
+ }
29
+ return {
30
+ action: { feature: '', action: '' },
31
+ id: '',
32
+ method: {},
33
+ ip: '',
34
+ canLog: false,
35
+ };
36
+ }
37
+ static setRequestId(id) {
38
+ ContextProvider.set(ContextProvider.requestKey, id);
39
+ }
40
+ static getRequestId() {
41
+ return ContextProvider.get(ContextProvider.requestKey);
42
+ }
43
+ static setAuthUser(user) {
44
+ ContextProvider.set(ContextProvider.authUserKey, user);
45
+ }
46
+ static setLanguage(language) {
47
+ ContextProvider.set(ContextProvider.languageKey, language);
48
+ }
49
+ static getLanguage() {
50
+ return ContextProvider.get(ContextProvider.languageKey);
51
+ }
52
+ static getAuthUserField(field) {
53
+ return ContextProvider.getAuthUser()[field];
54
+ }
55
+ static getAuthUser() {
56
+ const auth = ContextProvider.get(ContextProvider.authUserKey);
57
+ if (!auth) {
58
+ throw new common_1.BadGatewayException('User information not found.');
59
+ }
60
+ return auth;
61
+ }
62
+ static getAppId() {
63
+ return ContextProvider.getAuthUserField('appId');
64
+ }
65
+ static getRole() {
66
+ return ContextProvider.getAuthUserField('role');
67
+ }
68
+ static getAdmin() {
69
+ return ContextProvider.getAuthUserField('admin');
70
+ }
71
+ static getTenantId() {
72
+ return ContextProvider.getAuthUserField('tenantId');
73
+ }
74
+ }
75
+ exports.ContextProvider = ContextProvider;
76
+ ContextProvider.nameSpace = 'request';
77
+ ContextProvider.authUserKey = 'user_key';
78
+ ContextProvider.routerKey = 'router_key';
79
+ ContextProvider.languageKey = 'language_key';
80
+ ContextProvider.requestKey = 'request_key';
@@ -0,0 +1,9 @@
1
+ export declare class GeneratorProvider {
2
+ static uuid(): string;
3
+ static fileName(ext: string): string;
4
+ static getS3PublicUrl(key: string): string;
5
+ static getS3Key(publicUrl: string): string;
6
+ static generateVerificationCode(): string;
7
+ static generatePassword(): string;
8
+ static generateRandomString(length: number): string;
9
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeneratorProvider = void 0;
4
+ const uuid_1 = require("uuid");
5
+ class GeneratorProvider {
6
+ static uuid() {
7
+ return (0, uuid_1.v1)();
8
+ }
9
+ static fileName(ext) {
10
+ return GeneratorProvider.uuid() + '.' + ext;
11
+ }
12
+ static getS3PublicUrl(key) {
13
+ if (!key) {
14
+ throw new TypeError('key is required');
15
+ }
16
+ return `https://s3.${process.env.AWS_S3_BUCKET_NAME_REGION}.amazonaws.com/${process.env.AWS_S3_BUCKET_NAME}/${key}`;
17
+ }
18
+ static getS3Key(publicUrl) {
19
+ if (!publicUrl) {
20
+ throw new TypeError('key is required');
21
+ }
22
+ const exec = new RegExp(`(?<=https://s3.${process.env.AWS_S3_BUCKET_NAME_REGION}.amazonaws.com/${process.env.AWS_S3_BUCKET_NAME}/).*`).exec(publicUrl);
23
+ if (!exec) {
24
+ throw new TypeError('publicUrl is invalid');
25
+ }
26
+ return exec[0];
27
+ }
28
+ static generateVerificationCode() {
29
+ return Math.floor(1000 + Math.random() * 9000).toString();
30
+ }
31
+ static generatePassword() {
32
+ const lowercase = 'abcdefghijklmnopqrstuvwxyz';
33
+ const uppercase = lowercase.toUpperCase();
34
+ const numbers = '0123456789';
35
+ let text = '';
36
+ for (let i = 0; i < 12; i++) {
37
+ text += uppercase.charAt(Math.floor(Math.random() * uppercase.length));
38
+ text += lowercase.charAt(Math.floor(Math.random() * lowercase.length));
39
+ text += numbers.charAt(Math.floor(Math.random() * numbers.length));
40
+ }
41
+ return text;
42
+ }
43
+ static generateRandomString(length) {
44
+ return Math.random()
45
+ .toString(36)
46
+ .replace(/[^\dA-Za-z]+/g, '')
47
+ .slice(0, Math.max(0, length));
48
+ }
49
+ }
50
+ exports.GeneratorProvider = GeneratorProvider;