@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,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiBooleanProperty = ApiBooleanProperty;
4
+ exports.ApiBooleanPropertyOptional = ApiBooleanPropertyOptional;
5
+ exports.ApiUUIDProperty = ApiUUIDProperty;
6
+ exports.ApiUUIDPropertyOptional = ApiUUIDPropertyOptional;
7
+ exports.ApiEnumProperty = ApiEnumProperty;
8
+ exports.ApiEnumPropertyOptional = ApiEnumPropertyOptional;
9
+ const swagger_1 = require("@nestjs/swagger");
10
+ const utils_1 = require("../common/utils");
11
+ const field_decorators_1 = require("../decorators/field.decorators");
12
+ function ApiBooleanProperty(options = {}) {
13
+ return (0, swagger_1.ApiProperty)(Object.assign({ type: Boolean }, options));
14
+ }
15
+ function ApiBooleanPropertyOptional(options = {}) {
16
+ return ApiBooleanProperty(Object.assign({ required: false }, options));
17
+ }
18
+ function ApiUUIDProperty(options = {}) {
19
+ return (0, swagger_1.ApiProperty)(Object.assign({ type: options.each ? [String] : String, format: 'uuid', isArray: options.each }, options));
20
+ }
21
+ function ApiUUIDPropertyOptional(options = {}) {
22
+ return ApiUUIDProperty(Object.assign({ required: false }, options));
23
+ }
24
+ function ApiEnumProperty(getEnum, options = {}) {
25
+ const enumValue = getEnum();
26
+ options.description = (0, field_decorators_1.getEnumDescription)(enumValue);
27
+ return (0, swagger_1.ApiProperty)(Object.assign({ enum: enumValue, enumName: (0, utils_1.getVariableName)(getEnum) }, options));
28
+ }
29
+ function ApiEnumPropertyOptional(getEnum, options = {}) {
30
+ return ApiEnumProperty(getEnum, Object.assign({ required: false }, options));
31
+ }
@@ -0,0 +1,3 @@
1
+ import type { CustomDecorator } from '@nestjs/common';
2
+ export declare const PUBLIC_ROUTE_KEY = "public_route";
3
+ export declare const PublicRoute: (isPublic?: boolean) => CustomDecorator;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublicRoute = exports.PUBLIC_ROUTE_KEY = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.PUBLIC_ROUTE_KEY = 'public_route';
6
+ const PublicRoute = (isPublic = false) => (0, common_1.SetMetadata)(exports.PUBLIC_ROUTE_KEY, isPublic);
7
+ exports.PublicRoute = PublicRoute;
@@ -0,0 +1,5 @@
1
+ import _ from 'lodash';
2
+ import type { IApiFile } from '../interfaces';
3
+ export declare function ApiFile(files: _.Many<IApiFile>, options?: Partial<{
4
+ isRequired: boolean;
5
+ }>): MethodDecorator;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiFile = ApiFile;
4
+ const common_1 = require("@nestjs/common");
5
+ const constants_1 = require("@nestjs/common/constants");
6
+ const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum");
7
+ const platform_express_1 = require("@nestjs/platform-express");
8
+ const swagger_1 = require("@nestjs/swagger");
9
+ const reverse_object_keys_util_1 = require("@nestjs/swagger/dist/utils/reverse-object-keys.util");
10
+ const lodash_1 = require("lodash");
11
+ function explore(instance, propertyKey) {
12
+ const types = Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, instance, propertyKey);
13
+ const routeArgsMetadata = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, instance.constructor, propertyKey) || {};
14
+ const parametersWithType = lodash_1.default.mapValues((0, reverse_object_keys_util_1.reverseObjectKeys)(routeArgsMetadata), (param) => ({
15
+ type: types[param.index],
16
+ name: param.data,
17
+ required: true,
18
+ }));
19
+ for (const [key, value] of Object.entries(parametersWithType)) {
20
+ const keyPair = key.split(':');
21
+ if (Number(keyPair[0]) === route_paramtypes_enum_1.RouteParamtypes.BODY) {
22
+ return value.type;
23
+ }
24
+ }
25
+ }
26
+ function RegisterModels() {
27
+ return (target, propertyKey, descriptor) => {
28
+ const body = explore(target, propertyKey);
29
+ return body && (0, swagger_1.ApiExtraModels)(body)(target, propertyKey, descriptor);
30
+ };
31
+ }
32
+ function ApiFileDecorator(files = [], options = {}) {
33
+ return (target, propertyKey, descriptor) => {
34
+ const { isRequired = false } = options;
35
+ const fileSchema = {
36
+ type: 'string',
37
+ format: 'binary',
38
+ };
39
+ const properties = {};
40
+ for (const file of files) {
41
+ if (file.isArray) {
42
+ properties[file.name] = {
43
+ type: 'array',
44
+ items: fileSchema,
45
+ };
46
+ }
47
+ else {
48
+ properties[file.name] = fileSchema;
49
+ }
50
+ }
51
+ let schema = {
52
+ properties,
53
+ type: 'object',
54
+ };
55
+ const body = explore(target, propertyKey);
56
+ if (body) {
57
+ schema = {
58
+ allOf: [
59
+ {
60
+ $ref: (0, swagger_1.getSchemaPath)(body),
61
+ },
62
+ { properties, type: 'object' },
63
+ ],
64
+ };
65
+ }
66
+ return (0, swagger_1.ApiBody)({
67
+ schema,
68
+ required: isRequired,
69
+ })(target, propertyKey, descriptor);
70
+ };
71
+ }
72
+ function ApiFile(files, options = {}) {
73
+ const filesArray = lodash_1.default.castArray(files);
74
+ const apiFileInterceptors = filesArray.map((file) => file.isArray
75
+ ? (0, common_1.UseInterceptors)((0, platform_express_1.FilesInterceptor)(file.name))
76
+ : (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)(file.name)));
77
+ return (0, common_1.applyDecorators)(RegisterModels(), (0, swagger_1.ApiConsumes)('multipart/form-data'), ApiFileDecorator(filesArray, options), ...apiFileInterceptors);
78
+ }
@@ -0,0 +1 @@
1
+ export declare function TimestampColumn(name: string, description?: string): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimestampColumn = TimestampColumn;
4
+ const common_1 = require("@nestjs/common");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const typeorm_1 = require("typeorm");
7
+ const helpers_1 = require("../helpers");
8
+ function TimestampColumn(name, description) {
9
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiProperty)({
10
+ required: false,
11
+ type: 'string',
12
+ format: 'date-time',
13
+ example: '2018-10-01 12:18:48',
14
+ description,
15
+ }), (0, typeorm_1.Column)({
16
+ type: 'int',
17
+ name,
18
+ nullable: false,
19
+ unsigned: true,
20
+ default: 0,
21
+ comment: description,
22
+ transformer: {
23
+ to: (value) => value === 0 || /\d{10}/.test(value) ? value : (0, helpers_1.strToTimeStamp)(value),
24
+ from: (value) => (0, helpers_1.formatDateTime)(value),
25
+ },
26
+ }));
27
+ }
@@ -0,0 +1,8 @@
1
+ export declare function Trim(): PropertyDecorator;
2
+ export declare function ToBoolean(): PropertyDecorator;
3
+ export declare function ToInt(): PropertyDecorator;
4
+ export declare function ToArray(): PropertyDecorator;
5
+ export declare function ToLowerCase(): PropertyDecorator;
6
+ export declare function ToUpperCase(): PropertyDecorator;
7
+ export declare function S3UrlParser(): PropertyDecorator;
8
+ export declare function PhoneNumberSerializer(): PropertyDecorator;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Trim = Trim;
4
+ exports.ToBoolean = ToBoolean;
5
+ exports.ToInt = ToInt;
6
+ exports.ToArray = ToArray;
7
+ exports.ToLowerCase = ToLowerCase;
8
+ exports.ToUpperCase = ToUpperCase;
9
+ exports.S3UrlParser = S3UrlParser;
10
+ exports.PhoneNumberSerializer = PhoneNumberSerializer;
11
+ const class_transformer_1 = require("class-transformer");
12
+ const libphonenumber_js_1 = require("libphonenumber-js");
13
+ const lodash_1 = require("lodash");
14
+ const providers_1 = require("../providers");
15
+ function Trim() {
16
+ return (0, class_transformer_1.Transform)((params) => {
17
+ const value = params.value;
18
+ if ((0, lodash_1.isArray)(value)) {
19
+ return (0, lodash_1.map)(value, (v) => (0, lodash_1.trim)(v).replaceAll(/\s\s+/g, ' '));
20
+ }
21
+ return (0, lodash_1.trim)(value).replaceAll(/\s\s+/g, ' ');
22
+ });
23
+ }
24
+ function ToBoolean() {
25
+ return (0, class_transformer_1.Transform)((params) => {
26
+ switch (params.value) {
27
+ case 'true': {
28
+ return true;
29
+ }
30
+ case 'false': {
31
+ return false;
32
+ }
33
+ default: {
34
+ return params.value;
35
+ }
36
+ }
37
+ }, { toClassOnly: true });
38
+ }
39
+ function ToInt() {
40
+ return (0, class_transformer_1.Transform)((params) => {
41
+ const value = params.value;
42
+ return Number.parseInt(value, 10);
43
+ }, { toClassOnly: true });
44
+ }
45
+ function ToArray() {
46
+ return (0, class_transformer_1.Transform)((params) => {
47
+ const value = params.value;
48
+ if (!value) {
49
+ return value;
50
+ }
51
+ return (0, lodash_1.castArray)(value);
52
+ }, { toClassOnly: true });
53
+ }
54
+ function ToLowerCase() {
55
+ return (0, class_transformer_1.Transform)((params) => {
56
+ const value = params.value;
57
+ if (!value) {
58
+ return;
59
+ }
60
+ if (!Array.isArray(value)) {
61
+ return value.toLowerCase();
62
+ }
63
+ return value.map((v) => v.toLowerCase());
64
+ }, {
65
+ toClassOnly: true,
66
+ });
67
+ }
68
+ function ToUpperCase() {
69
+ return (0, class_transformer_1.Transform)((params) => {
70
+ const value = params.value;
71
+ if (!value) {
72
+ return;
73
+ }
74
+ if (!Array.isArray(value)) {
75
+ return value.toUpperCase();
76
+ }
77
+ return value.map((v) => v.toUpperCase());
78
+ }, {
79
+ toClassOnly: true,
80
+ });
81
+ }
82
+ function S3UrlParser() {
83
+ return (0, class_transformer_1.Transform)((params) => {
84
+ const key = params.value;
85
+ switch (params.type) {
86
+ case class_transformer_1.TransformationType.CLASS_TO_PLAIN: {
87
+ return providers_1.GeneratorProvider.getS3PublicUrl(key);
88
+ }
89
+ case class_transformer_1.TransformationType.PLAIN_TO_CLASS: {
90
+ return providers_1.GeneratorProvider.getS3Key(key);
91
+ }
92
+ default: {
93
+ return key;
94
+ }
95
+ }
96
+ });
97
+ }
98
+ function PhoneNumberSerializer() {
99
+ return (0, class_transformer_1.Transform)((params) => (0, libphonenumber_js_1.parsePhoneNumber)(params.value).number);
100
+ }
@@ -0,0 +1,5 @@
1
+ import type { ITranslationDecoratorInterface } from '../interfaces';
2
+ export declare const STATIC_TRANSLATION_DECORATOR_KEY = "custom:static-translate";
3
+ export declare const DYNAMIC_TRANSLATION_DECORATOR_KEY = "custom:dynamic-translate";
4
+ export declare function StaticTranslate(data?: ITranslationDecoratorInterface): PropertyDecorator;
5
+ export declare function DynamicTranslate(): PropertyDecorator;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DYNAMIC_TRANSLATION_DECORATOR_KEY = exports.STATIC_TRANSLATION_DECORATOR_KEY = void 0;
4
+ exports.StaticTranslate = StaticTranslate;
5
+ exports.DynamicTranslate = DynamicTranslate;
6
+ exports.STATIC_TRANSLATION_DECORATOR_KEY = 'custom:static-translate';
7
+ exports.DYNAMIC_TRANSLATION_DECORATOR_KEY = 'custom:dynamic-translate';
8
+ function StaticTranslate(data = {}) {
9
+ return (target, key) => {
10
+ Reflect.defineMetadata(exports.STATIC_TRANSLATION_DECORATOR_KEY, data, target, key);
11
+ };
12
+ }
13
+ function DynamicTranslate() {
14
+ return (target, key) => {
15
+ Reflect.defineMetadata(exports.DYNAMIC_TRANSLATION_DECORATOR_KEY, {}, target, key);
16
+ };
17
+ }
@@ -0,0 +1,4 @@
1
+ import type { AbstractEntity } from '../common/abstract.entity';
2
+ import type { AbstractDto } from '../common/dto/abstract.dto';
3
+ import type { Constructor } from '../common/types';
4
+ export declare function UseDto(dtoClass: Constructor<AbstractDto, [AbstractEntity, unknown]>): ClassDecorator;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseDto = UseDto;
4
+ function UseDto(dtoClass) {
5
+ return (ctor) => {
6
+ ctor.prototype.dtoClass = dtoClass;
7
+ };
8
+ }
@@ -0,0 +1,6 @@
1
+ export interface IUser {
2
+ uid: number;
3
+ username: string;
4
+ }
5
+ export declare const User: (...dataOrPipes: (string | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
6
+ export declare function getUserData(req: any, data?: string): IUser | null;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.User = void 0;
4
+ exports.getUserData = getUserData;
5
+ const common_1 = require("@nestjs/common");
6
+ const lodash = require("lodash");
7
+ exports.User = (0, common_1.createParamDecorator)((data, ctx) => {
8
+ return getUserData(ctx.switchToHttp().getRequest(), data);
9
+ });
10
+ function getUserData(req, data) {
11
+ const headers = req.headers;
12
+ if (lodash.isEmpty(headers['x-user-id']) ||
13
+ lodash.isEmpty(headers['x-username'])) {
14
+ return null;
15
+ }
16
+ const user = {
17
+ uid: headers['x-user-id'],
18
+ username: headers['x-username'],
19
+ };
20
+ return data ? user[data] : user;
21
+ }
@@ -0,0 +1,12 @@
1
+ export interface IUser {
2
+ uid: string;
3
+ username: string;
4
+ tenantId: string;
5
+ appId: string;
6
+ admin: boolean;
7
+ role: string;
8
+ }
9
+ export declare const User: (...dataOrPipes: (import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>> | keyof IUser)[]) => ParameterDecorator;
10
+ export declare function getOmniAuthData<T extends keyof IUser>(request: {
11
+ headers: Record<string, string>;
12
+ }, key?: T): IUser[T] | IUser;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.User = void 0;
4
+ exports.getOmniAuthData = getOmniAuthData;
5
+ const common_1 = require("@nestjs/common");
6
+ const lodash_1 = require("lodash");
7
+ const config_1 = require("@nestjs/config");
8
+ const providers_1 = require("../providers");
9
+ exports.User = (0, common_1.createParamDecorator)((key) => {
10
+ const authUser = providers_1.ContextProvider.getAuthUser();
11
+ return key ? authUser[key] : authUser;
12
+ });
13
+ function getOmniAuthData(request, key) {
14
+ const headers = request.headers;
15
+ let user;
16
+ const configService = new config_1.ConfigService(request);
17
+ if ((0, lodash_1.isEmpty)(headers['x-user-id']) && (0, lodash_1.isEmpty)(headers['x-app-id'])) {
18
+ if (process.env.NODE_ENV === 'dev' || process.env.MOCK_ENABLED === 'true') {
19
+ user = {
20
+ uid: configService.get('MOCK_UID'),
21
+ username: configService.get('MOCK_USERNAME'),
22
+ appId: configService.get('MOCK_APP_ID'),
23
+ tenantId: configService.get('MOCK_TENANT_ID'),
24
+ admin: configService.get('MOCK_ADMIN', false),
25
+ role: configService.get('MOCK_ROLE', ''),
26
+ };
27
+ }
28
+ else {
29
+ console.debug('User information is not transparently transmitted through the gateway: ' +
30
+ JSON.stringify(headers));
31
+ }
32
+ }
33
+ else {
34
+ user = {
35
+ uid: headers['x-user-id'] || '',
36
+ username: headers['x-username'] || '',
37
+ appId: headers['x-app-id'] || '',
38
+ tenantId: headers['x-tenant-id'] || '',
39
+ admin: headers['x-admin'] === '1',
40
+ role: headers['x-role'] || '',
41
+ };
42
+ }
43
+ return key ? user[key] : user;
44
+ }
@@ -0,0 +1 @@
1
+ export declare function UserFilter(field: string): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserFilter = UserFilter;
4
+ const common_1 = require("@nestjs/common");
5
+ const crud_1 = require("@dataui/crud");
6
+ const user_decorator_1 = require("./user.decorator");
7
+ function UserFilter(field) {
8
+ const obj = {};
9
+ return (0, common_1.applyDecorators)((0, crud_1.CrudAuth)({
10
+ filter: (req) => {
11
+ obj[field] = (0, user_decorator_1.getOmniAuthData)(req, 'uid');
12
+ return obj;
13
+ },
14
+ }));
15
+ }
@@ -0,0 +1,18 @@
1
+ import type { ValidationOptions } from 'class-validator';
2
+ import { IsPhoneNumber as isPhoneNumber, ValidationArguments, ValidatorConstraintInterface } from 'class-validator';
3
+ export declare function IsPassword(validationOptions?: ValidationOptions): PropertyDecorator;
4
+ export declare function IsPhoneNumber(validationOptions?: ValidationOptions & {
5
+ region?: Parameters<typeof isPhoneNumber>[0];
6
+ }): PropertyDecorator;
7
+ export declare function IsTmpKey(validationOptions?: ValidationOptions): PropertyDecorator;
8
+ export declare function IsUndefinable(options?: ValidationOptions): PropertyDecorator;
9
+ export declare function IsEmptyable(options?: ValidationOptions): PropertyDecorator;
10
+ export declare function IsNullable(options?: ValidationOptions): PropertyDecorator;
11
+ export declare function IsHttpUrl(validationOptions?: ValidationOptions): (object: any, propertyName: string) => void;
12
+ export declare class AtLeastOneFieldConstraint implements ValidatorConstraintInterface {
13
+ validate(value: any, args: ValidationArguments): boolean;
14
+ defaultMessage(args: ValidationArguments): string;
15
+ }
16
+ export declare function AtLeastOneField(properties: string[], validationOptions?: ValidationOptions): PropertyDecorator;
17
+ export declare function CustomValidation<T = any>(validationCallback: (value: T, args: ValidationArguments) => boolean | Promise<boolean>, validationOptions?: ValidationOptions): PropertyDecorator;
18
+ export declare function CustomValidationMethod(methodName: string, validationOptions?: ValidationOptions): PropertyDecorator;
@@ -0,0 +1,193 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.AtLeastOneFieldConstraint = void 0;
19
+ exports.IsPassword = IsPassword;
20
+ exports.IsPhoneNumber = IsPhoneNumber;
21
+ exports.IsTmpKey = IsTmpKey;
22
+ exports.IsUndefinable = IsUndefinable;
23
+ exports.IsEmptyable = IsEmptyable;
24
+ exports.IsNullable = IsNullable;
25
+ exports.IsHttpUrl = IsHttpUrl;
26
+ exports.AtLeastOneField = AtLeastOneField;
27
+ exports.CustomValidation = CustomValidation;
28
+ exports.CustomValidationMethod = CustomValidationMethod;
29
+ const class_validator_1 = require("class-validator");
30
+ const lodash_1 = require("lodash");
31
+ const nestjs_i18n_1 = require("nestjs-i18n");
32
+ function IsPassword(validationOptions) {
33
+ return (object, propertyName) => {
34
+ (0, class_validator_1.registerDecorator)({
35
+ propertyName,
36
+ name: 'isPassword',
37
+ target: object.constructor,
38
+ constraints: [],
39
+ options: validationOptions,
40
+ validator: {
41
+ validate(value) {
42
+ return /^[\d!#$%&*@A-Z^a-z]*$/.test(value);
43
+ },
44
+ },
45
+ });
46
+ };
47
+ }
48
+ function IsPhoneNumber(validationOptions) {
49
+ return (0, class_validator_1.IsPhoneNumber)(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.region, Object.assign({ message: 'error.phoneNumber' }, validationOptions));
50
+ }
51
+ function IsTmpKey(validationOptions) {
52
+ return (object, propertyName) => {
53
+ (0, class_validator_1.registerDecorator)({
54
+ propertyName,
55
+ name: 'tmpKey',
56
+ target: object.constructor,
57
+ options: validationOptions,
58
+ validator: {
59
+ validate(value) {
60
+ return (0, lodash_1.isString)(value) && /^tmp\//.test(value);
61
+ },
62
+ defaultMessage() {
63
+ return 'error.invalidTmpKey';
64
+ },
65
+ },
66
+ });
67
+ };
68
+ }
69
+ function IsUndefinable(options) {
70
+ return (0, class_validator_1.ValidateIf)((obj, value) => value !== undefined, options);
71
+ }
72
+ function IsEmptyable(options) {
73
+ return (0, class_validator_1.ValidateIf)((obj, value) => !(value === null ||
74
+ value === undefined ||
75
+ ((0, lodash_1.isString)(value) && value.trim() === '')), options);
76
+ }
77
+ function IsNullable(options) {
78
+ return (0, class_validator_1.ValidateIf)((obj, value) => value !== null, options);
79
+ }
80
+ function IsHttpUrl(validationOptions) {
81
+ return function (object, propertyName) {
82
+ (0, class_validator_1.registerDecorator)({
83
+ name: 'isHttpUrl',
84
+ target: object.constructor,
85
+ propertyName: propertyName,
86
+ options: validationOptions,
87
+ validator: {
88
+ validate(value) {
89
+ const httpUrlPattern = /^(https?:\/\/)/i;
90
+ return typeof value === 'string' && httpUrlPattern.test(value);
91
+ },
92
+ defaultMessage() {
93
+ return 'URL must start with http:// or https://';
94
+ },
95
+ },
96
+ });
97
+ };
98
+ }
99
+ let AtLeastOneFieldConstraint = class AtLeastOneFieldConstraint {
100
+ validate(value, args) {
101
+ const object = args.object;
102
+ const [requiredProperties] = args.constraints;
103
+ return requiredProperties.some((property) => {
104
+ const propValue = object[property];
105
+ return (propValue !== null &&
106
+ propValue !== undefined &&
107
+ propValue !== '' &&
108
+ !(Array.isArray(propValue) && propValue.length === 0));
109
+ });
110
+ }
111
+ defaultMessage(args) {
112
+ const [requiredProperties] = args.constraints;
113
+ return `At least one of the following fields must be provided: ${requiredProperties.join(', ')}`;
114
+ }
115
+ };
116
+ exports.AtLeastOneFieldConstraint = AtLeastOneFieldConstraint;
117
+ exports.AtLeastOneFieldConstraint = AtLeastOneFieldConstraint = __decorate([
118
+ (0, class_validator_1.ValidatorConstraint)({ name: 'atLeastOneField', async: false })
119
+ ], AtLeastOneFieldConstraint);
120
+ function AtLeastOneField(properties, validationOptions) {
121
+ return function (object, propertyName) {
122
+ (0, class_validator_1.registerDecorator)({
123
+ target: object.constructor,
124
+ propertyName: propertyName,
125
+ options: Object.assign({ message: (0, nestjs_i18n_1.i18nValidationMessage)('validation.AT_LEAST_ONE_FIELD', {
126
+ properties: properties.join(', '),
127
+ }) }, validationOptions),
128
+ constraints: [properties],
129
+ validator: AtLeastOneFieldConstraint,
130
+ });
131
+ };
132
+ }
133
+ function CustomValidation(validationCallback, validationOptions) {
134
+ return function (object, propertyName) {
135
+ (0, class_validator_1.registerDecorator)({
136
+ name: 'customValidation',
137
+ target: object.constructor,
138
+ propertyName,
139
+ options: Object.assign({ message: (0, nestjs_i18n_1.i18nValidationMessage)('validation.CUSTOM_VALIDATION') }, validationOptions),
140
+ validator: {
141
+ validate(value, args) {
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ try {
144
+ return yield validationCallback(value, args);
145
+ }
146
+ catch (error) {
147
+ console.error('CustomValidation error:', error);
148
+ return false;
149
+ }
150
+ });
151
+ },
152
+ defaultMessage(args) {
153
+ return `Validation failed for ${args.property}`;
154
+ },
155
+ },
156
+ });
157
+ };
158
+ }
159
+ function CustomValidationMethod(methodName, validationOptions) {
160
+ return function (object, propertyName) {
161
+ (0, class_validator_1.registerDecorator)({
162
+ name: 'customValidationMethod',
163
+ target: object.constructor,
164
+ propertyName,
165
+ constraints: [methodName],
166
+ options: Object.assign({ message: (0, nestjs_i18n_1.i18nValidationMessage)('validation.CUSTOM_VALIDATION_METHOD') }, validationOptions),
167
+ validator: {
168
+ validate(value, args) {
169
+ return __awaiter(this, void 0, void 0, function* () {
170
+ const [method] = args.constraints;
171
+ const object = args.object;
172
+ if (typeof object[method] !== 'function') {
173
+ console.error(`CustomValidationMethod: Method '${method}' not found on object`);
174
+ return false;
175
+ }
176
+ try {
177
+ const result = yield object[method](value, args);
178
+ return Boolean(result);
179
+ }
180
+ catch (error) {
181
+ console.error(`CustomValidationMethod error in '${method}':`, error);
182
+ return false;
183
+ }
184
+ });
185
+ },
186
+ defaultMessage(args) {
187
+ const [method] = args.constraints;
188
+ return `Validation failed for ${args.property} using method ${method}`;
189
+ },
190
+ },
191
+ });
192
+ };
193
+ }
@@ -0,0 +1,4 @@
1
+ import { BadRequestException } from '@nestjs/common';
2
+ export declare class FileNotImageException extends BadRequestException {
3
+ constructor(error?: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileNotImageException = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ class FileNotImageException extends common_1.BadRequestException {
6
+ constructor(error) {
7
+ super('error.fileNotImage', error);
8
+ }
9
+ }
10
+ exports.FileNotImageException = FileNotImageException;
@@ -0,0 +1,2 @@
1
+ export * from './file-not-image.exception';
2
+ export * from './user-not-found.exception';