@nest-omni/core 1.0.3 → 1.0.6

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 (265) hide show
  1. package/package.json +1 -4
  2. package/src/boilerplate.polyfill.d.ts +39 -0
  3. package/src/boilerplate.polyfill.js +78 -0
  4. package/src/boilerplate.polyfill.ts +202 -0
  5. package/src/common/abstract-client.service.d.ts +20 -0
  6. package/src/common/abstract-client.service.js +39 -0
  7. package/src/common/abstract-client.service.ts +56 -0
  8. package/src/common/abstract.entity.d.ts +24 -0
  9. package/src/common/abstract.entity.js +152 -0
  10. package/src/common/abstract.entity.ts +73 -0
  11. package/src/common/dto/abstract.dto.d.ts +13 -0
  12. package/src/common/dto/abstract.dto.js +96 -0
  13. package/src/common/dto/abstract.dto.ts +64 -0
  14. package/src/common/dto/bulk-id.dto.d.ts +3 -0
  15. package/src/common/dto/bulk-id.dto.js +63 -0
  16. package/src/common/dto/bulk-id.dto.ts +13 -0
  17. package/src/common/dto/create-translation.dto.d.ts +5 -0
  18. package/src/common/dto/create-translation.dto.js +63 -0
  19. package/src/common/dto/create-translation.dto.ts +10 -0
  20. package/src/common/dto/page-meta.dto.d.ts +15 -0
  21. package/src/common/dto/page-meta.dto.js +88 -0
  22. package/src/common/dto/page-meta.dto.ts +37 -0
  23. package/src/common/dto/page-options.dto.d.ts +8 -0
  24. package/src/common/dto/page-options.dto.js +87 -0
  25. package/src/common/dto/page-options.dto.ts +35 -0
  26. package/src/common/dto/page.dto.d.ts +11 -0
  27. package/src/common/dto/page.dto.js +94 -0
  28. package/src/common/dto/page.dto.ts +36 -0
  29. package/src/common/utils.d.ts +14 -0
  30. package/src/common/utils.js +39 -0
  31. package/src/common/utils.ts +45 -0
  32. package/src/constants/index.d.ts +4 -0
  33. package/src/constants/index.js +20 -0
  34. package/src/constants/index.ts +4 -0
  35. package/src/constants/language-code.d.ts +5 -0
  36. package/src/constants/language-code.js +10 -0
  37. package/src/constants/language-code.ts +7 -0
  38. package/src/constants/order.d.ts +4 -0
  39. package/src/constants/order.js +8 -0
  40. package/src/constants/order.ts +4 -0
  41. package/src/constants/role-type.d.ts +4 -0
  42. package/src/constants/role-type.js +8 -0
  43. package/src/constants/role-type.ts +4 -0
  44. package/src/constants/token-type.d.ts +4 -0
  45. package/src/constants/token-type.js +8 -0
  46. package/src/constants/token-type.ts +4 -0
  47. package/src/decorators/api-page-ok-response.decorator.d.ts +5 -0
  48. package/src/decorators/api-page-ok-response.decorator.js +25 -0
  49. package/src/decorators/api-page-ok-response.decorator.ts +31 -0
  50. package/src/decorators/auth-user.decorator.d.ts +1 -0
  51. package/src/decorators/auth-user.decorator.js +15 -0
  52. package/src/decorators/auth-user.decorator.ts +16 -0
  53. package/src/decorators/controller.decorator.d.ts +1 -0
  54. package/src/decorators/controller.decorator.js +34 -0
  55. package/src/decorators/controller.decorator.ts +8 -0
  56. package/src/decorators/field.decorators.d.ts +71 -0
  57. package/src/decorators/field.decorators.js +455 -0
  58. package/src/decorators/field.decorators.ts +773 -0
  59. package/src/decorators/http.decorators.d.ts +3 -0
  60. package/src/decorators/http.decorators.js +8 -0
  61. package/src/decorators/http.decorators.ts +10 -0
  62. package/src/decorators/index.d.ts +12 -0
  63. package/src/decorators/index.js +28 -0
  64. package/src/decorators/index.ts +12 -0
  65. package/src/decorators/omni-auth.decorator.d.ts +8 -0
  66. package/src/decorators/omni-auth.decorator.js +60 -0
  67. package/src/decorators/omni-auth.decorator.ts +46 -0
  68. package/src/decorators/operation.decorator.d.ts +1 -0
  69. package/src/decorators/operation.decorator.js +6 -0
  70. package/src/decorators/operation.decorator.ts +4 -0
  71. package/src/decorators/property.decorators.d.ts +15 -0
  72. package/src/decorators/property.decorators.js +36 -0
  73. package/src/decorators/property.decorators.ts +62 -0
  74. package/src/decorators/public-route.decorator.d.ts +3 -0
  75. package/src/decorators/public-route.decorator.js +8 -0
  76. package/src/decorators/public-route.decorator.ts +8 -0
  77. package/src/decorators/swagger.schema.d.ts +5 -0
  78. package/src/decorators/swagger.schema.js +82 -0
  79. package/src/decorators/swagger.schema.ts +117 -0
  80. package/src/decorators/timestamp-column.decorator.d.ts +1 -0
  81. package/src/decorators/timestamp-column.decorator.js +28 -0
  82. package/src/decorators/timestamp-column.decorator.ts +29 -0
  83. package/src/decorators/transform.decorators.d.ts +35 -0
  84. package/src/decorators/transform.decorators.js +122 -0
  85. package/src/decorators/transform.decorators.ts +147 -0
  86. package/src/decorators/translate.decorator.d.ts +5 -0
  87. package/src/decorators/translate.decorator.js +18 -0
  88. package/src/decorators/translate.decorator.ts +19 -0
  89. package/src/decorators/use-dto.decorator.d.ts +4 -0
  90. package/src/decorators/use-dto.decorator.js +9 -0
  91. package/src/decorators/use-dto.decorator.ts +11 -0
  92. package/src/decorators/user-check.decorator.d.ts +6 -0
  93. package/src/decorators/user-check.decorator.js +44 -0
  94. package/src/decorators/user-check.decorator.ts +30 -0
  95. package/src/decorators/user.decorator.d.ts +8 -0
  96. package/src/decorators/user.decorator.js +62 -0
  97. package/src/decorators/user.decorator.ts +48 -0
  98. package/src/decorators/user_auth.decorator.d.ts +1 -0
  99. package/src/decorators/user_auth.decorator.js +16 -0
  100. package/src/decorators/user_auth.decorator.ts +15 -0
  101. package/src/decorators/validator.decorators.d.ts +10 -0
  102. package/src/decorators/validator.decorators.js +59 -0
  103. package/src/decorators/validator.decorators.ts +78 -0
  104. package/src/exceptions/file-not-image.exception.d.ts +4 -0
  105. package/src/exceptions/file-not-image.exception.js +10 -0
  106. package/src/exceptions/file-not-image.exception.ts +7 -0
  107. package/src/exceptions/index.d.ts +2 -0
  108. package/src/exceptions/index.js +18 -0
  109. package/src/exceptions/index.ts +2 -0
  110. package/src/exceptions/page-type.exception.d.ts +4 -0
  111. package/src/exceptions/page-type.exception.js +10 -0
  112. package/src/exceptions/page-type.exception.ts +7 -0
  113. package/src/exceptions/user-not-found.exception.d.ts +4 -0
  114. package/src/exceptions/user-not-found.exception.js +10 -0
  115. package/src/exceptions/user-not-found.exception.ts +7 -0
  116. package/src/filters/bad-request.filter.d.ts +5 -0
  117. package/src/filters/bad-request.filter.js +104 -0
  118. package/src/filters/bad-request.filter.ts +67 -0
  119. package/src/filters/constraint-errors.d.ts +1 -0
  120. package/src/filters/constraint-errors.js +7 -0
  121. package/src/filters/constraint-errors.ts +5 -0
  122. package/src/filters/index.d.ts +3 -0
  123. package/src/filters/index.js +19 -0
  124. package/src/filters/index.ts +3 -0
  125. package/src/filters/query-failed.filter.d.ts +10 -0
  126. package/src/filters/query-failed.filter.js +81 -0
  127. package/src/filters/query-failed.filter.ts +32 -0
  128. package/src/health-checker/health-checker.controller.d.ts +15 -0
  129. package/src/health-checker/health-checker.controller.js +104 -0
  130. package/src/health-checker/health-checker.controller.ts +51 -0
  131. package/src/health-checker/health-checker.module.d.ts +2 -0
  132. package/src/health-checker/health-checker.module.js +69 -0
  133. package/src/health-checker/health-checker.module.ts +13 -0
  134. package/src/health-checker/health-indicators/service.indicator.d.ts +8 -0
  135. package/src/health-checker/health-indicators/service.indicator.js +102 -0
  136. package/src/health-checker/health-indicators/service.indicator.ts +44 -0
  137. package/src/helpers/common.helper.d.ts +16 -0
  138. package/src/helpers/common.helper.js +49 -0
  139. package/src/helpers/common.helper.ts +49 -0
  140. package/src/helpers/date.helper.d.ts +10 -0
  141. package/src/helpers/date.helper.js +81 -0
  142. package/src/helpers/date.helper.ts +64 -0
  143. package/src/helpers/excel.helper.d.ts +27 -0
  144. package/src/helpers/excel.helper.js +338 -0
  145. package/src/helpers/index.d.ts +3 -0
  146. package/src/helpers/index.js +19 -0
  147. package/src/helpers/index.ts +3 -0
  148. package/src/i18n/en_US/validation.json +38 -0
  149. package/src/i18n/zh_CN/validation.json +38 -0
  150. package/src/index.d.ts +11 -0
  151. package/src/index.js +28 -0
  152. package/src/index.ts +12 -0
  153. package/src/interceptors/auth-user.interceptor.d.ts +4 -0
  154. package/src/interceptors/auth-user.interceptor.js +68 -0
  155. package/src/interceptors/auth-user.interceptor.ts +20 -0
  156. package/src/interceptors/index.d.ts +2 -0
  157. package/src/interceptors/index.js +18 -0
  158. package/src/interceptors/index.ts +2 -0
  159. package/src/interceptors/language-interceptor.service.d.ts +6 -0
  160. package/src/interceptors/language-interceptor.service.js +74 -0
  161. package/src/interceptors/language-interceptor.service.ts +31 -0
  162. package/src/interceptors/translation-interceptor.service.d.ts +5 -0
  163. package/src/interceptors/translation-interceptor.service.js +83 -0
  164. package/src/interceptors/translation-interceptor.service.ts +43 -0
  165. package/src/interfaces/IApiFile.d.ts +4 -0
  166. package/src/interfaces/IApiFile.js +2 -0
  167. package/src/interfaces/IApiFile.ts +4 -0
  168. package/src/interfaces/IFile.d.ts +9 -0
  169. package/src/interfaces/IFile.js +2 -0
  170. package/src/interfaces/IFile.ts +8 -0
  171. package/src/interfaces/ITranslationDecoratorInterface.d.ts +3 -0
  172. package/src/interfaces/ITranslationDecoratorInterface.js +2 -0
  173. package/src/interfaces/ITranslationDecoratorInterface.ts +3 -0
  174. package/src/interfaces/index.d.ts +3 -0
  175. package/src/interfaces/index.js +19 -0
  176. package/src/interfaces/index.ts +3 -0
  177. package/src/interfaces/response.d.ts +25 -0
  178. package/src/interfaces/response.js +2 -0
  179. package/src/interfaces/response.ts +37 -0
  180. package/src/middlewares/index.d.ts +3 -0
  181. package/src/middlewares/index.js +19 -0
  182. package/src/middlewares/index.ts +3 -0
  183. package/src/middlewares/omni-auth.middleware.d.ts +1 -0
  184. package/src/middlewares/omni-auth.middleware.js +13 -0
  185. package/src/middlewares/omni-auth.middleware.ts +10 -0
  186. package/src/middlewares/powerby.middleware.d.ts +1 -0
  187. package/src/middlewares/powerby.middleware.js +10 -0
  188. package/src/middlewares/powerby.middleware.ts +6 -0
  189. package/src/middlewares/request-id.middleware.d.ts +7 -0
  190. package/src/middlewares/request-id.middleware.js +22 -0
  191. package/src/middlewares/request-id.middleware.ts +28 -0
  192. package/src/providers/context.provider.d.ts +32 -0
  193. package/src/providers/context.provider.js +73 -0
  194. package/src/providers/context.provider.ts +98 -0
  195. package/src/providers/generator.provider.d.ts +13 -0
  196. package/src/providers/generator.provider.js +54 -0
  197. package/src/providers/generator.provider.ts +66 -0
  198. package/src/providers/index.d.ts +2 -0
  199. package/src/providers/index.js +18 -0
  200. package/src/providers/index.ts +2 -0
  201. package/src/setup/bootstrap.setup.d.ts +5 -0
  202. package/src/setup/bootstrap.setup.js +138 -0
  203. package/src/setup/bootstrap.setup.ts +139 -0
  204. package/src/setup/index.d.ts +1 -0
  205. package/src/setup/index.js +17 -0
  206. package/src/setup/index.ts +1 -0
  207. package/src/setup/microservices.setup.js +55 -0
  208. package/src/setup-swagger.d.ts +2 -0
  209. package/src/setup-swagger.js +62 -0
  210. package/src/setup-swagger.ts +67 -0
  211. package/src/shared/index.d.ts +2 -0
  212. package/src/shared/index.js +18 -0
  213. package/src/shared/index.ts +2 -0
  214. package/src/shared/serviceRegistryModule.d.ts +2 -0
  215. package/src/shared/serviceRegistryModule.js +176 -0
  216. package/src/shared/serviceRegistryModule.ts +110 -0
  217. package/src/shared/services/api-config.service.d.ts +73 -0
  218. package/src/shared/services/api-config.service.js +335 -0
  219. package/src/shared/services/api-config.service.ts +319 -0
  220. package/src/shared/services/aws-s3.service.d.ts +10 -0
  221. package/src/shared/services/aws-s3.service.js +96 -0
  222. package/src/shared/services/aws-s3.service.ts +39 -0
  223. package/src/shared/services/generator.service.d.ts +4 -0
  224. package/src/shared/services/generator.service.js +67 -0
  225. package/src/shared/services/generator.service.ts +13 -0
  226. package/src/shared/services/index.d.ts +5 -0
  227. package/src/shared/services/index.js +21 -0
  228. package/src/shared/services/index.ts +5 -0
  229. package/src/shared/services/translation.service.d.ts +9 -0
  230. package/src/shared/services/translation.service.js +109 -0
  231. package/src/shared/services/translation.service.ts +59 -0
  232. package/src/shared/services/validator.service.d.ts +3 -0
  233. package/src/shared/services/validator.service.js +64 -0
  234. package/src/shared/services/validator.service.ts +10 -0
  235. package/src/snake-naming.strategy.d.ts +11 -0
  236. package/src/snake-naming.strategy.js +37 -0
  237. package/src/snake-naming.strategy.ts +64 -0
  238. package/src/types.d.ts +9 -0
  239. package/src/types.js +2 -0
  240. package/src/types.ts +44 -0
  241. package/src/validators/file-mimetype.validator.d.ts +13 -0
  242. package/src/validators/file-mimetype.validator.js +21 -0
  243. package/src/validators/file-mimetype.validator.ts +34 -0
  244. package/src/validators/index.d.ts +3 -0
  245. package/src/validators/index.js +19 -0
  246. package/src/validators/index.ts +3 -0
  247. package/src/validators/is-exists.validator.d.ts +18 -0
  248. package/src/validators/is-exists.validator.js +99 -0
  249. package/src/validators/is-exists.validator.ts +60 -0
  250. package/src/validators/is-unique.validator.d.ts +17 -0
  251. package/src/validators/is-unique.validator.js +131 -0
  252. package/src/validators/is-unique.validator.ts +93 -0
  253. package/src/validators/phone-country-code.validator.d.ts +2 -0
  254. package/src/validators/phone-country-code.validator.js +30 -0
  255. package/src/validators/phone-country-code.validator.ts +36 -0
  256. package/src/validators/same-as.validator.d.ts +2 -0
  257. package/src/validators/same-as.validator.js +25 -0
  258. package/src/validators/same-as.validator.ts +27 -0
  259. package/src/validators/skip-empty.validator.d.ts +6 -0
  260. package/src/validators/skip-empty.validator.js +23 -0
  261. package/src/validators/skip-empty.validator.ts +25 -0
  262. package/tsconfig.json +26 -0
  263. package/tsconfig.lib.json +16 -0
  264. package/tsconfig.tsbuildinfo +1 -0
  265. /package/{README → README.md} +0 -0
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhoneNumberSerializer = exports.S3UrlParser = exports.ToUpperCase = exports.ToLowerCase = exports.ToArray = exports.ToInt = exports.ToBoolean = exports.Trim = void 0;
4
+ const class_transformer_1 = require("class-transformer");
5
+ const lodash_1 = require("lodash");
6
+ const providers_1 = require("../providers");
7
+ const libphonenumber_js_1 = require("libphonenumber-js");
8
+ /**
9
+ * @description trim spaces from start and end, replace multiple spaces with one.
10
+ * @example
11
+ * @ApiProperty()
12
+ * @IsString()
13
+ * @Trim()
14
+ * name: string;
15
+ * @returns PropertyDecorator
16
+ * @constructor
17
+ */
18
+ function Trim() {
19
+ return (0, class_transformer_1.Transform)((params) => {
20
+ const value = params.value;
21
+ if ((0, lodash_1.isArray)(value)) {
22
+ return (0, lodash_1.map)(value, (v) => (0, lodash_1.trim)(v).replace(/\s\s+/g, ' '));
23
+ }
24
+ return (0, lodash_1.trim)(value).replace(/\s\s+/g, ' ');
25
+ });
26
+ }
27
+ exports.Trim = Trim;
28
+ function ToBoolean() {
29
+ return (0, class_transformer_1.Transform)((params) => {
30
+ switch (params.value) {
31
+ case 'true':
32
+ return true;
33
+ case 'false':
34
+ return false;
35
+ default:
36
+ return params.value;
37
+ }
38
+ }, { toClassOnly: true });
39
+ }
40
+ exports.ToBoolean = ToBoolean;
41
+ /**
42
+ * @description convert string or number to integer
43
+ * @example
44
+ * @NumberField()
45
+ * @ToInt()
46
+ * name: number;
47
+ * @returns PropertyDecorator
48
+ * @constructor
49
+ */
50
+ function ToInt() {
51
+ return (0, class_transformer_1.Transform)((params) => {
52
+ const value = params.value;
53
+ return Number.parseInt(value, 10);
54
+ }, { toClassOnly: true });
55
+ }
56
+ exports.ToInt = ToInt;
57
+ /**
58
+ * @description transforms to array, specially for query params
59
+ * @example
60
+ * @NumberField()
61
+ * @ToArray()
62
+ * name: number;
63
+ * @constructor
64
+ */
65
+ function ToArray() {
66
+ return (0, class_transformer_1.Transform)((params) => {
67
+ const value = params.value;
68
+ if ((0, lodash_1.isNil)(value)) {
69
+ return [];
70
+ }
71
+ return (0, lodash_1.castArray)(value);
72
+ }, { toClassOnly: true });
73
+ }
74
+ exports.ToArray = ToArray;
75
+ function ToLowerCase() {
76
+ return (0, class_transformer_1.Transform)((params) => {
77
+ const value = params.value;
78
+ if (!value) {
79
+ return;
80
+ }
81
+ if (!Array.isArray(value)) {
82
+ return value.toLowerCase();
83
+ }
84
+ return value.map((v) => v.toLowerCase());
85
+ }, {
86
+ toClassOnly: true,
87
+ });
88
+ }
89
+ exports.ToLowerCase = ToLowerCase;
90
+ function ToUpperCase() {
91
+ return (0, class_transformer_1.Transform)((params) => {
92
+ const value = params.value;
93
+ if (!value) {
94
+ return;
95
+ }
96
+ if (!Array.isArray(value)) {
97
+ return value.toUpperCase();
98
+ }
99
+ return value.map((v) => v.toUpperCase());
100
+ }, {
101
+ toClassOnly: true,
102
+ });
103
+ }
104
+ exports.ToUpperCase = ToUpperCase;
105
+ function S3UrlParser() {
106
+ return (0, class_transformer_1.Transform)((params) => {
107
+ const key = params.value;
108
+ switch (params.type) {
109
+ case class_transformer_1.TransformationType.CLASS_TO_PLAIN:
110
+ return providers_1.GeneratorProvider.getS3PublicUrl(key);
111
+ case class_transformer_1.TransformationType.PLAIN_TO_CLASS:
112
+ return providers_1.GeneratorProvider.getS3Key(key);
113
+ default:
114
+ return key;
115
+ }
116
+ });
117
+ }
118
+ exports.S3UrlParser = S3UrlParser;
119
+ function PhoneNumberSerializer() {
120
+ return (0, class_transformer_1.Transform)((params) => (0, libphonenumber_js_1.parsePhoneNumber)(params.value).number);
121
+ }
122
+ exports.PhoneNumberSerializer = PhoneNumberSerializer;
@@ -0,0 +1,147 @@
1
+ import { Transform, TransformationType } from 'class-transformer';
2
+ import { castArray, isArray, isNil, map, trim } from 'lodash';
3
+
4
+ import { GeneratorProvider } from '../providers';
5
+ import { parsePhoneNumber } from 'libphonenumber-js';
6
+
7
+ /**
8
+ * @description trim spaces from start and end, replace multiple spaces with one.
9
+ * @example
10
+ * @ApiProperty()
11
+ * @IsString()
12
+ * @Trim()
13
+ * name: string;
14
+ * @returns PropertyDecorator
15
+ * @constructor
16
+ */
17
+ export function Trim(): PropertyDecorator {
18
+ return Transform((params) => {
19
+ const value = params.value as string[] | string;
20
+
21
+ if (isArray(value)) {
22
+ return map(value, (v) => trim(v).replace(/\s\s+/g, ' '));
23
+ }
24
+
25
+ return trim(value).replace(/\s\s+/g, ' ');
26
+ });
27
+ }
28
+
29
+ export function ToBoolean(): PropertyDecorator {
30
+ return Transform(
31
+ (params) => {
32
+ switch (params.value) {
33
+ case 'true':
34
+ return true;
35
+ case 'false':
36
+ return false;
37
+ default:
38
+ return params.value;
39
+ }
40
+ },
41
+ { toClassOnly: true },
42
+ );
43
+ }
44
+
45
+ /**
46
+ * @description convert string or number to integer
47
+ * @example
48
+ * @NumberField()
49
+ * @ToInt()
50
+ * name: number;
51
+ * @returns PropertyDecorator
52
+ * @constructor
53
+ */
54
+ export function ToInt(): PropertyDecorator {
55
+ return Transform(
56
+ (params) => {
57
+ const value = params.value as string;
58
+
59
+ return Number.parseInt(value, 10);
60
+ },
61
+ { toClassOnly: true },
62
+ );
63
+ }
64
+
65
+ /**
66
+ * @description transforms to array, specially for query params
67
+ * @example
68
+ * @NumberField()
69
+ * @ToArray()
70
+ * name: number;
71
+ * @constructor
72
+ */
73
+ export function ToArray(): PropertyDecorator {
74
+ return Transform(
75
+ (params) => {
76
+ const value = params.value;
77
+
78
+ if (isNil(value)) {
79
+ return [];
80
+ }
81
+
82
+ return castArray(value);
83
+ },
84
+ { toClassOnly: true },
85
+ );
86
+ }
87
+
88
+ export function ToLowerCase(): PropertyDecorator {
89
+ return Transform(
90
+ (params) => {
91
+ const value = params.value;
92
+
93
+ if (!value) {
94
+ return;
95
+ }
96
+
97
+ if (!Array.isArray(value)) {
98
+ return value.toLowerCase();
99
+ }
100
+
101
+ return value.map((v) => v.toLowerCase());
102
+ },
103
+ {
104
+ toClassOnly: true,
105
+ },
106
+ );
107
+ }
108
+
109
+ export function ToUpperCase(): PropertyDecorator {
110
+ return Transform(
111
+ (params) => {
112
+ const value = params.value;
113
+
114
+ if (!value) {
115
+ return;
116
+ }
117
+
118
+ if (!Array.isArray(value)) {
119
+ return value.toUpperCase();
120
+ }
121
+
122
+ return value.map((v) => v.toUpperCase());
123
+ },
124
+ {
125
+ toClassOnly: true,
126
+ },
127
+ );
128
+ }
129
+
130
+ export function S3UrlParser(): PropertyDecorator {
131
+ return Transform((params) => {
132
+ const key = params.value as string;
133
+
134
+ switch (params.type) {
135
+ case TransformationType.CLASS_TO_PLAIN:
136
+ return GeneratorProvider.getS3PublicUrl(key);
137
+ case TransformationType.PLAIN_TO_CLASS:
138
+ return GeneratorProvider.getS3Key(key);
139
+ default:
140
+ return key;
141
+ }
142
+ });
143
+ }
144
+
145
+ export function PhoneNumberSerializer(): PropertyDecorator {
146
+ return Transform((params) => parsePhoneNumber(params.value as string).number);
147
+ }
@@ -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,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamicTranslate = exports.StaticTranslate = exports.DYNAMIC_TRANSLATION_DECORATOR_KEY = exports.STATIC_TRANSLATION_DECORATOR_KEY = void 0;
4
+ exports.STATIC_TRANSLATION_DECORATOR_KEY = 'custom:static-translate';
5
+ exports.DYNAMIC_TRANSLATION_DECORATOR_KEY = 'custom:dynamic-translate';
6
+ // FIXME: This is a temporary solution to get the translation decorator working.
7
+ function StaticTranslate(data = {}) {
8
+ return (target, key) => {
9
+ Reflect.defineMetadata(exports.STATIC_TRANSLATION_DECORATOR_KEY, data, target, key);
10
+ };
11
+ }
12
+ exports.StaticTranslate = StaticTranslate;
13
+ function DynamicTranslate() {
14
+ return (target, key) => {
15
+ Reflect.defineMetadata(exports.DYNAMIC_TRANSLATION_DECORATOR_KEY, {}, target, key);
16
+ };
17
+ }
18
+ exports.DynamicTranslate = DynamicTranslate;
@@ -0,0 +1,19 @@
1
+ import type { ITranslationDecoratorInterface } from '../interfaces';
2
+
3
+ export const STATIC_TRANSLATION_DECORATOR_KEY = 'custom:static-translate';
4
+ export const DYNAMIC_TRANSLATION_DECORATOR_KEY = 'custom:dynamic-translate';
5
+
6
+ // FIXME: This is a temporary solution to get the translation decorator working.
7
+ export function StaticTranslate(
8
+ data: ITranslationDecoratorInterface = {},
9
+ ): PropertyDecorator {
10
+ return (target, key) => {
11
+ Reflect.defineMetadata(STATIC_TRANSLATION_DECORATOR_KEY, data, target, key);
12
+ };
13
+ }
14
+
15
+ export function DynamicTranslate(): PropertyDecorator {
16
+ return (target, key) => {
17
+ Reflect.defineMetadata(DYNAMIC_TRANSLATION_DECORATOR_KEY, {}, target, key);
18
+ };
19
+ }
@@ -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 '../types';
4
+ export declare function UseDto(dtoClass: Constructor<AbstractDto, [AbstractEntity, unknown]>): ClassDecorator;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UseDto = void 0;
4
+ function UseDto(dtoClass) {
5
+ return (ctor) => {
6
+ ctor.prototype.dtoClass = dtoClass;
7
+ };
8
+ }
9
+ exports.UseDto = UseDto;
@@ -0,0 +1,11 @@
1
+ import type { AbstractEntity } from '../common/abstract.entity';
2
+ import type { AbstractDto } from '../common/dto/abstract.dto';
3
+ import type { Constructor } from '../types';
4
+
5
+ export function UseDto(
6
+ dtoClass: Constructor<AbstractDto, [AbstractEntity, unknown]>,
7
+ ): ClassDecorator {
8
+ return (ctor) => {
9
+ ctor.prototype.dtoClass = dtoClass;
10
+ };
11
+ }
@@ -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,44 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getUserData = exports.User = void 0;
27
+ const common_1 = require("@nestjs/common");
28
+ const lodash = __importStar(require("lodash"));
29
+ exports.User = (0, common_1.createParamDecorator)((data, ctx) => {
30
+ return getUserData(ctx.switchToHttp().getRequest(), data);
31
+ });
32
+ function getUserData(req, data) {
33
+ const headers = req.headers;
34
+ if (lodash.isEmpty(headers['x-userid']) ||
35
+ lodash.isEmpty(headers['x-username'])) {
36
+ return null;
37
+ }
38
+ const user = {
39
+ uid: headers['x-userid'],
40
+ username: headers['x-username'],
41
+ };
42
+ return data ? user[data] : user;
43
+ }
44
+ exports.getUserData = getUserData;
@@ -0,0 +1,30 @@
1
+ import { createParamDecorator, ExecutionContext } from '@nestjs/common';
2
+ import * as lodash from 'lodash';
3
+
4
+ export interface IUser {
5
+ uid: number;
6
+ username: string;
7
+ }
8
+
9
+ export const User = createParamDecorator(
10
+ (data: string, ctx: ExecutionContext): IUser => {
11
+ return getUserData(ctx.switchToHttp().getRequest(), data);
12
+ },
13
+ );
14
+
15
+ export function getUserData(req, data?: string): IUser | null {
16
+ const headers = req.headers;
17
+ if (
18
+ lodash.isEmpty(headers['x-userid']) ||
19
+ lodash.isEmpty(headers['x-username'])
20
+ ) {
21
+ return null;
22
+ }
23
+
24
+ const user = {
25
+ uid: headers['x-userid'],
26
+ username: headers['x-username'],
27
+ };
28
+
29
+ return data ? user[data] : user;
30
+ }
@@ -0,0 +1,8 @@
1
+ export interface IUser {
2
+ uid: number;
3
+ username: string;
4
+ tenantId?: string;
5
+ appId?: string;
6
+ }
7
+ export declare const User: (...dataOrPipes: (string | import("@nestjs/common").PipeTransform<any, any> | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
8
+ export declare function getUserData(req: any, data?: string): IUser;
@@ -0,0 +1,62 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getUserData = exports.User = void 0;
27
+ const common_1 = require("@nestjs/common");
28
+ const lodash = __importStar(require("lodash"));
29
+ const config_1 = require("@nestjs/config");
30
+ exports.User = (0, common_1.createParamDecorator)((data, ctx) => {
31
+ return getUserData(ctx.switchToHttp().getRequest(), data);
32
+ });
33
+ function getUserData(req, data) {
34
+ const headers = req.headers;
35
+ let user = {
36
+ uid: 0,
37
+ username: '',
38
+ };
39
+ const configService = new config_1.ConfigService(req);
40
+ // 未通过网关透传用户信息且处于local开发环境,则从配置获取用户信息
41
+ if (lodash.isEmpty(headers['x-userid']) ||
42
+ lodash.isEmpty(headers['x-username'])) {
43
+ if (process.env.NODE_ENV === 'dev') {
44
+ user = {
45
+ uid: configService.get('MOCK_UID'),
46
+ username: configService.get('MOCK_USERNAME'),
47
+ appId: configService.get('MOCK_APP_ID'),
48
+ tenantId: configService.get('MOCK_TENANT_ID'),
49
+ };
50
+ }
51
+ }
52
+ else {
53
+ user = {
54
+ uid: headers['x-userid'],
55
+ username: headers['x-username'],
56
+ appId: headers['x-appid'],
57
+ tenantId: headers['x-tenantid'],
58
+ };
59
+ return data ? user[data] : user;
60
+ }
61
+ }
62
+ exports.getUserData = getUserData;
@@ -0,0 +1,48 @@
1
+ import { createParamDecorator, ExecutionContext } from '@nestjs/common';
2
+ import * as lodash from 'lodash';
3
+ import { ConfigService } from '@nestjs/config';
4
+
5
+ export interface IUser {
6
+ uid: number;
7
+ username: string;
8
+ tenantId?: string;
9
+ appId?: string;
10
+ }
11
+
12
+ export const User = createParamDecorator(
13
+ (data: string, ctx: ExecutionContext): IUser => {
14
+ return getUserData(ctx.switchToHttp().getRequest(), data);
15
+ },
16
+ );
17
+
18
+ export function getUserData(req, data?: string): IUser {
19
+ const headers = req.headers;
20
+ let user: IUser = {
21
+ uid: 0,
22
+ username: '',
23
+ };
24
+ const configService = new ConfigService(req);
25
+ // 未通过网关透传用户信息且处于local开发环境,则从配置获取用户信息
26
+ if (
27
+ lodash.isEmpty(headers['x-userid']) ||
28
+ lodash.isEmpty(headers['x-username'])
29
+ ) {
30
+ if (process.env.NODE_ENV === 'dev') {
31
+ user = {
32
+ uid: configService.get('MOCK_UID'),
33
+ username: configService.get('MOCK_USERNAME'),
34
+ appId: configService.get('MOCK_APP_ID'),
35
+ tenantId: configService.get('MOCK_TENANT_ID'),
36
+ };
37
+ }
38
+ } else {
39
+ user = {
40
+ uid: headers['x-userid'],
41
+ username: headers['x-username'],
42
+ appId: headers['x-appid'],
43
+ tenantId: headers['x-tenantid'],
44
+ };
45
+
46
+ return data ? user[data] : user;
47
+ }
48
+ }
@@ -0,0 +1 @@
1
+ export declare function UserFilter(field: string): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserFilter = void 0;
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.getUserData)(req, 'uid');
12
+ return obj;
13
+ },
14
+ }));
15
+ }
16
+ exports.UserFilter = UserFilter;
@@ -0,0 +1,15 @@
1
+ import { applyDecorators } from '@nestjs/common';
2
+ import { CrudAuth } from '@dataui/crud';
3
+ import { getUserData } from './user.decorator';
4
+
5
+ export function UserFilter(field: string) {
6
+ const obj = {};
7
+ return applyDecorators(
8
+ CrudAuth({
9
+ filter: (req) => {
10
+ obj[field] = getUserData(req, 'uid');
11
+ return obj;
12
+ },
13
+ }),
14
+ );
15
+ }
@@ -0,0 +1,10 @@
1
+ import type { ValidationOptions } from 'class-validator';
2
+ import { IsPhoneNumber as isPhoneNumber } 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;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IsNullable = exports.IsEmptyable = exports.IsUndefinable = exports.IsTmpKey = exports.IsPhoneNumber = exports.IsPassword = void 0;
4
+ const class_validator_1 = require("class-validator");
5
+ const lodash_1 = require("lodash");
6
+ function IsPassword(validationOptions) {
7
+ return (object, propertyName) => {
8
+ (0, class_validator_1.registerDecorator)({
9
+ propertyName,
10
+ name: 'isPassword',
11
+ target: object.constructor,
12
+ constraints: [],
13
+ options: validationOptions,
14
+ validator: {
15
+ validate(value) {
16
+ return /^[\d!#$%&*@A-Z^a-z]*$/.test(value);
17
+ },
18
+ },
19
+ });
20
+ };
21
+ }
22
+ exports.IsPassword = IsPassword;
23
+ function IsPhoneNumber(validationOptions) {
24
+ return (0, class_validator_1.IsPhoneNumber)(validationOptions === null || validationOptions === void 0 ? void 0 : validationOptions.region, Object.assign({ message: 'error.phoneNumber' }, validationOptions));
25
+ }
26
+ exports.IsPhoneNumber = IsPhoneNumber;
27
+ function IsTmpKey(validationOptions) {
28
+ return (object, propertyName) => {
29
+ (0, class_validator_1.registerDecorator)({
30
+ propertyName,
31
+ name: 'tmpKey',
32
+ target: object.constructor,
33
+ options: validationOptions,
34
+ validator: {
35
+ validate(value) {
36
+ return (0, lodash_1.isString)(value) && /^tmp\//.test(value);
37
+ },
38
+ defaultMessage() {
39
+ return 'error.invalidTmpKey';
40
+ },
41
+ },
42
+ });
43
+ };
44
+ }
45
+ exports.IsTmpKey = IsTmpKey;
46
+ function IsUndefinable(options) {
47
+ return (0, class_validator_1.ValidateIf)((obj, value) => value !== undefined, options);
48
+ }
49
+ exports.IsUndefinable = IsUndefinable;
50
+ function IsEmptyable(options) {
51
+ return (0, class_validator_1.ValidateIf)((obj, value) => !(value === null ||
52
+ value === undefined ||
53
+ ((0, lodash_1.isString)(value) && value.trim() === '')), options);
54
+ }
55
+ exports.IsEmptyable = IsEmptyable;
56
+ function IsNullable(options) {
57
+ return (0, class_validator_1.ValidateIf)((obj, value) => value !== null, options);
58
+ }
59
+ exports.IsNullable = IsNullable;