@aenode/prop 0.0.21 → 0.0.37

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 (193) hide show
  1. package/README.md +12 -16
  2. package/assets/favicon.svg +1 -1
  3. package/bin/prop.mjs +3 -0
  4. package/dist/index.d.ts +2 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/common/base-dto-class.d.ts +4 -0
  9. package/dist/lib/common/base-dto-class.d.ts.map +1 -0
  10. package/dist/lib/common/base-dto-class.js +7 -0
  11. package/dist/lib/common/base-dto-class.js.map +1 -0
  12. package/dist/lib/common/global-validation-pipe.d.ts +3 -0
  13. package/dist/lib/common/global-validation-pipe.d.ts.map +1 -0
  14. package/dist/lib/common/global-validation-pipe.js +34 -0
  15. package/dist/lib/common/global-validation-pipe.js.map +1 -0
  16. package/dist/lib/common/message.dto.d.ts +4 -0
  17. package/dist/lib/common/message.dto.d.ts.map +1 -0
  18. package/dist/lib/common/message.dto.js +11 -0
  19. package/dist/lib/common/message.dto.js.map +1 -0
  20. package/dist/lib/common/validation-error-response.dto.d.ts +10 -0
  21. package/dist/lib/common/validation-error-response.dto.d.ts.map +1 -0
  22. package/dist/lib/common/validation-error-response.dto.js +44 -0
  23. package/dist/lib/common/validation-error-response.dto.js.map +1 -0
  24. package/dist/lib/default-value-transformer.d.ts +9 -0
  25. package/dist/lib/default-value-transformer.d.ts.map +1 -0
  26. package/dist/lib/default-value-transformer.js +22 -0
  27. package/dist/lib/default-value-transformer.js.map +1 -0
  28. package/dist/lib/index.d.ts +27 -0
  29. package/dist/lib/index.d.ts.map +1 -0
  30. package/dist/lib/index.js +29 -0
  31. package/dist/lib/index.js.map +1 -0
  32. package/dist/lib/json-transformer.d.ts +2 -0
  33. package/dist/lib/json-transformer.d.ts.map +1 -0
  34. package/dist/lib/json-transformer.js +14 -0
  35. package/dist/lib/json-transformer.js.map +1 -0
  36. package/dist/lib/prop-boolean.d.ts +17 -0
  37. package/dist/lib/prop-boolean.d.ts.map +1 -0
  38. package/dist/lib/prop-boolean.js +39 -0
  39. package/dist/lib/prop-boolean.js.map +1 -0
  40. package/dist/lib/prop-common.d.ts +15 -0
  41. package/dist/lib/prop-common.d.ts.map +1 -0
  42. package/dist/lib/prop-common.js +43 -0
  43. package/dist/lib/prop-common.js.map +1 -0
  44. package/dist/lib/prop-date.d.ts +17 -0
  45. package/dist/lib/prop-date.d.ts.map +1 -0
  46. package/dist/lib/prop-date.js +41 -0
  47. package/dist/lib/prop-date.js.map +1 -0
  48. package/dist/lib/prop-enum.d.ts +17 -0
  49. package/dist/lib/prop-enum.d.ts.map +1 -0
  50. package/dist/lib/prop-enum.js +36 -0
  51. package/dist/lib/prop-enum.js.map +1 -0
  52. package/dist/lib/prop-number.d.ts +19 -0
  53. package/dist/lib/prop-number.d.ts.map +1 -0
  54. package/dist/lib/prop-number.js +62 -0
  55. package/dist/lib/prop-number.js.map +1 -0
  56. package/dist/lib/prop-object-validation.d.ts +9 -0
  57. package/dist/lib/prop-object-validation.d.ts.map +1 -0
  58. package/dist/lib/prop-object-validation.js +24 -0
  59. package/dist/lib/prop-object-validation.js.map +1 -0
  60. package/dist/lib/prop-object.d.ts +18 -0
  61. package/dist/lib/prop-object.d.ts.map +1 -0
  62. package/dist/lib/prop-object.js +53 -0
  63. package/dist/lib/prop-object.js.map +1 -0
  64. package/dist/lib/prop-options.d.ts +67 -0
  65. package/dist/lib/prop-options.d.ts.map +1 -0
  66. package/dist/lib/prop-options.js +3 -0
  67. package/dist/lib/prop-options.js.map +1 -0
  68. package/dist/lib/prop-string.d.ts +19 -0
  69. package/dist/lib/prop-string.d.ts.map +1 -0
  70. package/dist/lib/prop-string.js +112 -0
  71. package/dist/lib/prop-string.js.map +1 -0
  72. package/dist/lib/prop-validation.d.ts +10 -0
  73. package/dist/lib/prop-validation.d.ts.map +1 -0
  74. package/dist/lib/prop-validation.js +75 -0
  75. package/dist/lib/prop-validation.js.map +1 -0
  76. package/dist/lib/prop.d.ts +3 -0
  77. package/dist/lib/prop.d.ts.map +1 -0
  78. package/dist/lib/prop.js +13 -0
  79. package/dist/lib/prop.js.map +1 -0
  80. package/dist/lib/test-helpers.d.ts +3 -0
  81. package/dist/lib/test-helpers.d.ts.map +1 -0
  82. package/dist/lib/test-helpers.js +19 -0
  83. package/dist/lib/test-helpers.js.map +1 -0
  84. package/dist/lib/to-api-property-optionts.d.ts +4 -0
  85. package/dist/lib/to-api-property-optionts.d.ts.map +1 -0
  86. package/dist/lib/to-api-property-optionts.js +29 -0
  87. package/dist/lib/to-api-property-optionts.js.map +1 -0
  88. package/dist/lib/validators/index.d.ts +8 -0
  89. package/dist/lib/validators/index.d.ts.map +1 -0
  90. package/dist/lib/validators/index.js +10 -0
  91. package/dist/lib/validators/index.js.map +1 -0
  92. package/dist/lib/validators/is-relative-path.d.ts +3 -0
  93. package/dist/lib/validators/is-relative-path.d.ts.map +1 -0
  94. package/dist/lib/validators/is-relative-path.js +26 -0
  95. package/dist/lib/validators/is-relative-path.js.map +1 -0
  96. package/dist/lib/validators/less-than.d.ts +3 -0
  97. package/dist/lib/validators/less-than.d.ts.map +1 -0
  98. package/dist/lib/validators/less-than.js +26 -0
  99. package/dist/lib/validators/less-than.js.map +1 -0
  100. package/dist/lib/validators/max-properties.d.ts +3 -0
  101. package/dist/lib/validators/max-properties.d.ts.map +1 -0
  102. package/dist/lib/validators/max-properties.js +29 -0
  103. package/dist/lib/validators/max-properties.js.map +1 -0
  104. package/dist/lib/validators/min-properties.d.ts +3 -0
  105. package/dist/lib/validators/min-properties.d.ts.map +1 -0
  106. package/dist/lib/validators/min-properties.js +29 -0
  107. package/dist/lib/validators/min-properties.js.map +1 -0
  108. package/dist/lib/validators/more-than.d.ts +3 -0
  109. package/dist/lib/validators/more-than.d.ts.map +1 -0
  110. package/dist/lib/validators/more-than.js +26 -0
  111. package/dist/lib/validators/more-than.js.map +1 -0
  112. package/dist/lib/validators/not-with.d.ts +2 -0
  113. package/dist/lib/validators/not-with.d.ts.map +1 -0
  114. package/dist/lib/validators/not-with.js +25 -0
  115. package/dist/lib/validators/not-with.js.map +1 -0
  116. package/dist/lib/validators/not-without.d.ts +2 -0
  117. package/dist/lib/validators/not-without.d.ts.map +1 -0
  118. package/dist/lib/validators/not-without.js +25 -0
  119. package/dist/lib/validators/not-without.js.map +1 -0
  120. package/dist/main.d.ts +3 -0
  121. package/dist/main.d.ts.map +1 -0
  122. package/dist/main.js +4 -0
  123. package/dist/main.js.map +1 -0
  124. package/package.json +24 -41
  125. package/dist/graphql/filter-dtos.d.ts +0 -69
  126. package/dist/graphql/filter-dtos.d.ts.map +0 -1
  127. package/dist/graphql/filter-dtos.js +0 -370
  128. package/dist/graphql/filter-dtos.js.map +0 -1
  129. package/dist/graphql/index.d.ts +0 -10
  130. package/dist/graphql/index.d.ts.map +0 -1
  131. package/dist/graphql/index.js +0 -12
  132. package/dist/graphql/index.js.map +0 -1
  133. package/dist/graphql/input-type.d.ts +0 -2
  134. package/dist/graphql/input-type.d.ts.map +0 -1
  135. package/dist/graphql/input-type.js +0 -8
  136. package/dist/graphql/input-type.js.map +0 -1
  137. package/dist/graphql/object-type.d.ts +0 -2
  138. package/dist/graphql/object-type.d.ts.map +0 -1
  139. package/dist/graphql/object-type.js +0 -8
  140. package/dist/graphql/object-type.js.map +0 -1
  141. package/dist/graphql/prop-order-count.d.ts +0 -2
  142. package/dist/graphql/prop-order-count.d.ts.map +0 -1
  143. package/dist/graphql/prop-order-count.js +0 -11
  144. package/dist/graphql/prop-order-count.js.map +0 -1
  145. package/dist/graphql/prop-order.d.ts +0 -2
  146. package/dist/graphql/prop-order.d.ts.map +0 -1
  147. package/dist/graphql/prop-order.js +0 -11
  148. package/dist/graphql/prop-order.js.map +0 -1
  149. package/dist/graphql/prop.d.ts +0 -9
  150. package/dist/graphql/prop.d.ts.map +0 -1
  151. package/dist/graphql/prop.js +0 -29
  152. package/dist/graphql/prop.js.map +0 -1
  153. package/dist/graphql/register-enums.d.ts +0 -2
  154. package/dist/graphql/register-enums.d.ts.map +0 -1
  155. package/dist/graphql/register-enums.js +0 -11
  156. package/dist/graphql/register-enums.js.map +0 -1
  157. package/dist/graphql/sort-count.dto.d.ts +0 -5
  158. package/dist/graphql/sort-count.dto.d.ts.map +0 -1
  159. package/dist/graphql/sort-count.dto.js +0 -22
  160. package/dist/graphql/sort-count.dto.js.map +0 -1
  161. package/dist/peers.d.ts +0 -2
  162. package/dist/peers.d.ts.map +0 -1
  163. package/dist/peers.js +0 -3
  164. package/dist/peers.js.map +0 -1
  165. package/dist/restapi/filter-dtos.d.ts +0 -44
  166. package/dist/restapi/filter-dtos.d.ts.map +0 -1
  167. package/dist/restapi/filter-dtos.js +0 -202
  168. package/dist/restapi/filter-dtos.js.map +0 -1
  169. package/dist/restapi/index.d.ts +0 -7
  170. package/dist/restapi/index.d.ts.map +0 -1
  171. package/dist/restapi/index.js +0 -9
  172. package/dist/restapi/index.js.map +0 -1
  173. package/dist/restapi/prop-order-count.d.ts +0 -2
  174. package/dist/restapi/prop-order-count.d.ts.map +0 -1
  175. package/dist/restapi/prop-order-count.js +0 -11
  176. package/dist/restapi/prop-order-count.js.map +0 -1
  177. package/dist/restapi/prop-order.d.ts +0 -2
  178. package/dist/restapi/prop-order.d.ts.map +0 -1
  179. package/dist/restapi/prop-order.js +0 -11
  180. package/dist/restapi/prop-order.js.map +0 -1
  181. package/dist/restapi/prop.d.ts +0 -3
  182. package/dist/restapi/prop.d.ts.map +0 -1
  183. package/dist/restapi/prop.js +0 -11
  184. package/dist/restapi/prop.js.map +0 -1
  185. package/dist/restapi/sort-count.dto.d.ts +0 -5
  186. package/dist/restapi/sort-count.dto.d.ts.map +0 -1
  187. package/dist/restapi/sort-count.dto.js +0 -18
  188. package/dist/restapi/sort-count.dto.js.map +0 -1
  189. package/dist/restapi/to-api-property-options.d.ts +0 -4
  190. package/dist/restapi/to-api-property-options.d.ts.map +0 -1
  191. package/dist/restapi/to-api-property-options.js +0 -37
  192. package/dist/restapi/to-api-property-options.js.map +0 -1
  193. package/license +0 -70
package/README.md CHANGED
@@ -1,33 +1,29 @@
1
1
  ![Version](https://img.shields.io/npm/v/@aenode/prop) ![Downloads](https://img.shields.io/npm/dm/@aenode/prop) ![Status](https://img.shields.io/github/actions/workflow/status/aenode/aenode/ci.yml) ![Size](https://img.shields.io/bundlephobia/min/@aenode/prop)
2
2
 
3
-
4
3
  <p align="center">
5
- <img src="https://aenode.github.io/aenode/modules/prop/assets/favicon.svg" alt="App logo" height="128" width="128" style="border-radius: 32px;" />
4
+ <img src="https://aenode.github.io/aenode/libs/prop/assets/favicon.svg" alt="aenode Logo" height="128" width="128" style="border-radius: 32px;"/>
6
5
  </p>
7
6
 
8
7
  ## @aenode/prop
9
8
 
10
- Nestjs/Graphql data transfer object property decorators
11
-
9
+ Nestjs input validation and swagger property decorator
12
10
 
13
11
  ## Install
14
12
 
15
13
  ```sh
16
- pnpm add @aenode/prop
14
+ bun add @aenode/prop
17
15
  ```
18
16
 
19
- ## 💖 Support My Work
20
-
21
- If you find my open-source contributions or the **@aenode/prop** project helpful, consider supporting my work. Your sponsorship helps me maintain these projects and explore new enterprise patterns.
17
+ ## Examples
22
18
 
23
- [![FundMe](https://img.shields.io/badge/Sponsor%20me-%23EA4AAA.svg?style=for-the-badge&logo=github-sponsors&logoColor=white)](https://cash.app/$puqlib)
19
+ ```ts
20
+ export class User {
21
+ @Prop({ required: true, format: 'email' }) username: string;
22
+ @Prop({ format: 'password' }) password: string;
23
+ @Prop({ minimum: 17 }) age: number;
24
+ }
25
+ ```
24
26
 
25
27
  ---
26
28
 
27
- ## 🤝 Connect with Me
28
-
29
- <p align="left">
30
- <a href="mailto:aenode+aenode+prop@proton.me">
31
- <img src="https://img.shields.io/badge/Email-D14836?style=for-the-badge&logo=proton&logoColor=white" />
32
- </a>
33
- </p>
29
+ [![CashUp](https://img.shields.io/badge/Cash%20Up-%23EA4AAA.svg?style=for-the-badge&logo=github-sponsors&logoColor=white)](https://cash.app/$puqlib) [![EmainMe](https://img.shields.io/badge/Email-D14836?style=for-the-badge&logo=proton&logoColor=white)](mailto:aenode+aenode+aenode-prop@proton.me)
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 -960 960 960" width="48px" fill="#5985E1"><path d="M180-180h560v-173q0-9 4.5-16t12.5-11l24-11q19-8 30.5-27t11.5-40q0-21.43-11.5-39.72Q800-516 781-525l-24-11q-8.13-3.75-12.57-10.88Q740-554 740-563v-177H564q-10.66 0-18.83-7-8.17-7-10.17-18.33L530-791q-5-27-24.67-45.5-19.68-18.5-45.91-18.5Q432-855 412-836.5T387-791l-5 25.67Q380-754 371.83-747q-8.17 7-18.83 7H181v110q55 20 89 66.78t34 105.5q0 59.72-34 107.22T180-287v107Zm11 60q-29 0-50-21t-21-51v-121q0-8 5-13t13-7q45-9 75.5-43.08T244-458q0-48.03-30-82.52Q184-575 139-583q-8-2-13-7t-5-13v-126q0-30 20.5-50.5T192-800h136q6.63-48.88 43.58-81.94Q408.53-915 458.74-915q49.26 0 86.45 33.06Q582.37-848.88 590-800h139q30 0 50.5 20.5T800-729v147q38 18 60.5 49.5T883-458q0 43-22.5 75T800-334v142q0 30-20.5 51T729-120H191Zm311-338Z"/></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" height="48px" width="48px" fill="#5985E1"><path d="M22.93,41.57Q22.5,41.14 22.5,40.5V27.6l-9.1,9.1q-0.44,0.45-1.04,0.45T11.3,36.71t-0.45-1.05T11.3,34.6l9.1-9.1H7.5q-0.64,0-1.07-0.43T6,23.99t0.43-1.07T7.5,22.5H20.45L11.3,13.35q-0.45-0.44-0.45-1.05t0.44-1.05t1.05-0.45t1.06,0.45l9.1,9.1V7.5q0-0.64 0.43-1.07T24.01,6t1.07,0.43T25.5,7.5V20.4l9.15-9.15q0.44-0.45 1.05-0.45t1.05,0.44t0.45,1.05t-0.45,1.06L27.6,22.5H40.5q0.64,0 1.07,0.43T42,24.01t-0.43,1.07T40.5,25.5H27.65l9.1,9.1q0.45,0.44 0.45,1.04T36.76,36.7t-1.05,0.45T34.65,36.7L25.5,27.55V40.5q0,0.64-0.43,1.07T23.99,42t-1.07-0.43Z"/></svg>
package/bin/prop.mjs ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../dist/main.js';
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from './restapi/index.js';
1
+ import '@aenode/nest/meta';
2
+ export * from './lib/index.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAE3B,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // @index(['./restapi/index.ts', '!./**/*.spec.ts'], f => `export * from '${f.path}.js'`)
2
- export * from './restapi/index.js';
1
+ import '@aenode/nest/meta';
2
+ export * from './lib/index.js';
3
3
 
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @index(['./restapi/index.ts', '!./**/*.spec.ts'], f => `export * from '${f.path}.js'`)\nexport * from './restapi/index.js';\n"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,cAAc,qBAAqB"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import '@aenode/nest/meta';\n\nexport * from './lib/index.js';\n"],"names":[],"mappings":"AAAA,OAAO,oBAAoB;AAE3B,cAAc,iBAAiB"}
@@ -0,0 +1,4 @@
1
+ export declare class BaseDtoClass<T> {
2
+ constructor(value: T);
3
+ }
4
+ //# sourceMappingURL=base-dto-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-dto-class.d.ts","sourceRoot":"","sources":["../../../src/lib/common/base-dto-class.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY,CAAC,CAAC;gBACb,KAAK,EAAE,CAAC;CAGrB"}
@@ -0,0 +1,7 @@
1
+ export class BaseDtoClass {
2
+ constructor(value){
3
+ Object.assign(this, value);
4
+ }
5
+ }
6
+
7
+ //# sourceMappingURL=base-dto-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/common/base-dto-class.ts"],"sourcesContent":["export class BaseDtoClass<T> {\n constructor(value: T) {\n Object.assign(this, value);\n }\n}\n"],"names":["BaseDtoClass","value","Object","assign"],"mappings":"AAAA,OAAO,MAAMA;IACX,YAAYC,KAAQ,CAAE;QACpBC,OAAOC,MAAM,CAAC,IAAI,EAAEF;IACtB;AACF"}
@@ -0,0 +1,3 @@
1
+ import { ValidationPipe } from '@aenode/nest/common';
2
+ export declare const globalValidationPipe: ValidationPipe;
3
+ //# sourceMappingURL=global-validation-pipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-validation-pipe.d.ts","sourceRoot":"","sources":["../../../src/lib/common/global-validation-pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAqB7B,eAAO,MAAM,oBAAoB,gBAe/B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { UnprocessableEntityException, ValidationPipe } from '@aenode/nest/common';
2
+ import { inspect } from 'node:util';
3
+ function toValidationErrorDto(error) {
4
+ const children = error.children ? error.children.flatMap((c)=>toValidationErrorDto(c)) : [];
5
+ return [
6
+ ...children,
7
+ ...Object.entries(error.constraints ?? {}).map(([constraint, message])=>{
8
+ return {
9
+ property: error.property,
10
+ constraint,
11
+ message
12
+ };
13
+ })
14
+ ];
15
+ }
16
+ export const globalValidationPipe = new ValidationPipe({
17
+ transform: true,
18
+ transformOptions: {
19
+ excludeExtraneousValues: true,
20
+ exposeDefaultValues: false,
21
+ exposeUnsetFields: false
22
+ },
23
+ exceptionFactory (validationErrors) {
24
+ console.log(inspect(validationErrors, true, 100));
25
+ const errors = validationErrors.flatMap((error)=>{
26
+ return toValidationErrorDto(error);
27
+ });
28
+ throw new UnprocessableEntityException({
29
+ errors
30
+ });
31
+ }
32
+ });
33
+
34
+ //# sourceMappingURL=global-validation-pipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/common/global-validation-pipe.ts"],"sourcesContent":["import {\n UnprocessableEntityException,\n ValidationPipe,\n type ValidationError,\n} from '@aenode/nest/common';\nimport { inspect } from 'node:util';\nimport type { ValidationErrorDto } from './validation-error-response.dto.js';\n\nfunction toValidationErrorDto(error: ValidationError): ValidationErrorDto[] {\n const children: ValidationErrorDto[] = error.children\n ? error.children.flatMap((c) => toValidationErrorDto(c))\n : [];\n\n return [\n ...children,\n ...Object.entries(error.constraints ?? {}).map(([constraint, message]) => {\n return {\n property: error.property,\n constraint,\n message,\n } as ValidationErrorDto;\n }),\n ];\n}\n\nexport const globalValidationPipe = new ValidationPipe({\n transform: true,\n transformOptions: {\n excludeExtraneousValues: true,\n exposeDefaultValues: false,\n exposeUnsetFields: false,\n },\n exceptionFactory(validationErrors) {\n console.log(inspect(validationErrors, true, 100));\n const errors = validationErrors.flatMap((error) => {\n return toValidationErrorDto(error);\n });\n\n throw new UnprocessableEntityException({ errors });\n },\n});\n"],"names":["UnprocessableEntityException","ValidationPipe","inspect","toValidationErrorDto","error","children","flatMap","c","Object","entries","constraints","map","constraint","message","property","globalValidationPipe","transform","transformOptions","excludeExtraneousValues","exposeDefaultValues","exposeUnsetFields","exceptionFactory","validationErrors","console","log","errors"],"mappings":"AAAA,SACEA,4BAA4B,EAC5BC,cAAc,QAET,sBAAsB;AAC7B,SAASC,OAAO,QAAQ,YAAY;AAGpC,SAASC,qBAAqBC,KAAsB;IAClD,MAAMC,WAAiCD,MAAMC,QAAQ,GACjDD,MAAMC,QAAQ,CAACC,OAAO,CAAC,CAACC,IAAMJ,qBAAqBI,MACnD,EAAE;IAEN,OAAO;WACFF;WACAG,OAAOC,OAAO,CAACL,MAAMM,WAAW,IAAI,CAAC,GAAGC,GAAG,CAAC,CAAC,CAACC,YAAYC,QAAQ;YACnE,OAAO;gBACLC,UAAUV,MAAMU,QAAQ;gBACxBF;gBACAC;YACF;QACF;KACD;AACH;AAEA,OAAO,MAAME,uBAAuB,IAAId,eAAe;IACrDe,WAAW;IACXC,kBAAkB;QAChBC,yBAAyB;QACzBC,qBAAqB;QACrBC,mBAAmB;IACrB;IACAC,kBAAiBC,gBAAgB;QAC/BC,QAAQC,GAAG,CAACtB,QAAQoB,kBAAkB,MAAM;QAC5C,MAAMG,SAASH,iBAAiBhB,OAAO,CAAC,CAACF;YACvC,OAAOD,qBAAqBC;QAC9B;QAEA,MAAM,IAAIJ,6BAA6B;YAAEyB;QAAO;IAClD;AACF,GAAG"}
@@ -0,0 +1,4 @@
1
+ export declare class MessageDto {
2
+ message: string;
3
+ }
4
+ //# sourceMappingURL=message.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.dto.d.ts","sourceRoot":"","sources":["../../../src/lib/common/message.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACb,OAAO,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,11 @@
1
+ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
+ import { _ as _ts_metadata } from "@swc/helpers/_/_ts_metadata";
3
+ import { Prop } from '../prop.js';
4
+ export class MessageDto {
5
+ }
6
+ _ts_decorate([
7
+ Prop(),
8
+ _ts_metadata("design:type", String)
9
+ ], MessageDto.prototype, "message", void 0);
10
+
11
+ //# sourceMappingURL=message.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/common/message.dto.ts"],"sourcesContent":["import { Prop } from '../prop.js';\n\nexport class MessageDto {\n @Prop() message: string;\n}\n"],"names":["Prop","MessageDto"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,aAAa;AAElC,OAAO,MAAMC;AAEb"}
@@ -0,0 +1,10 @@
1
+ export declare class ValidationErrorDto {
2
+ property: string;
3
+ constraint: string;
4
+ message: string;
5
+ constructor(value: ValidationErrorDto);
6
+ }
7
+ export declare class ValidationErrorResponseDto {
8
+ errors: ValidationErrorDto[];
9
+ }
10
+ //# sourceMappingURL=validation-error-response.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-error-response.dto.d.ts","sourceRoot":"","sources":["../../../src/lib/common/validation-error-response.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,kBAAkB;IACF,QAAQ,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IAEnD,OAAO,EAAE,MAAM,CAAC;gBAEJ,KAAK,EAAE,kBAAkB;CAGtC;AAED,qBAAa,0BAA0B;IAYrC,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B"}
@@ -0,0 +1,44 @@
1
+ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
+ import { _ as _ts_metadata } from "@swc/helpers/_/_ts_metadata";
3
+ import { Prop } from '../prop.js';
4
+ export class ValidationErrorDto {
5
+ constructor(value){
6
+ Object.assign(this, value);
7
+ }
8
+ }
9
+ _ts_decorate([
10
+ Prop({
11
+ example: 'name'
12
+ }),
13
+ _ts_metadata("design:type", String)
14
+ ], ValidationErrorDto.prototype, "property", void 0);
15
+ _ts_decorate([
16
+ Prop({
17
+ example: 'minLength'
18
+ }),
19
+ _ts_metadata("design:type", String)
20
+ ], ValidationErrorDto.prototype, "constraint", void 0);
21
+ _ts_decorate([
22
+ Prop({
23
+ example: 'name must be longer than or equal to 3 characters.'
24
+ }),
25
+ _ts_metadata("design:type", String)
26
+ ], ValidationErrorDto.prototype, "message", void 0);
27
+ export class ValidationErrorResponseDto {
28
+ }
29
+ _ts_decorate([
30
+ Prop({
31
+ type: ()=>ValidationErrorDto,
32
+ isArray: true,
33
+ example: [
34
+ new ValidationErrorDto({
35
+ property: 'name',
36
+ constraint: 'minLength',
37
+ message: 'name must be longer than or equal to 3 characters'
38
+ })
39
+ ]
40
+ }),
41
+ _ts_metadata("design:type", Array)
42
+ ], ValidationErrorResponseDto.prototype, "errors", void 0);
43
+
44
+ //# sourceMappingURL=validation-error-response.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/common/validation-error-response.dto.ts"],"sourcesContent":["import { Prop } from '../prop.js';\n\nexport class ValidationErrorDto {\n @Prop({ example: 'name' }) property: string;\n @Prop({ example: 'minLength' }) constraint: string;\n @Prop({ example: 'name must be longer than or equal to 3 characters.' })\n message: string;\n\n constructor(value: ValidationErrorDto) {\n Object.assign(this, value);\n }\n}\n\nexport class ValidationErrorResponseDto {\n @Prop({\n type: () => ValidationErrorDto,\n isArray: true,\n example: [\n new ValidationErrorDto({\n property: 'name',\n constraint: 'minLength',\n message: 'name must be longer than or equal to 3 characters',\n }),\n ],\n })\n errors: ValidationErrorDto[];\n}\n"],"names":["Prop","ValidationErrorDto","value","Object","assign","example","ValidationErrorResponseDto","type","isArray","property","constraint","message"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,aAAa;AAElC,OAAO,MAAMC;IAMX,YAAYC,KAAyB,CAAE;QACrCC,OAAOC,MAAM,CAAC,IAAI,EAAEF;IACtB;AACF;;;QARUG,SAAS;;;;;;QACTA,SAAS;;;;;;QACTA,SAAS;;;;AAQnB,OAAO,MAAMC;AAab;;;QAXIC,MAAM,IAAMN;QACZO,SAAS;QACTH,SAAS;YACP,IAAIJ,mBAAmB;gBACrBQ,UAAU;gBACVC,YAAY;gBACZC,SAAS;YACX;SACD"}
@@ -0,0 +1,9 @@
1
+ import type { PropValidationOptions } from './prop-options.js';
2
+ /**
3
+ * Property value transformer for default values.
4
+ *
5
+ * @param options
6
+ * @returns a property decorator
7
+ */
8
+ export declare function DefaultValueTransformer(options?: Pick<PropValidationOptions, 'defaultValue'>): PropertyDecorator;
9
+ //# sourceMappingURL=default-value-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-value-transformer.d.ts","sourceRoot":"","sources":["../../src/lib/default-value-transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,GACpD,iBAAiB,CAcnB"}
@@ -0,0 +1,22 @@
1
+ import { Transform } from '@aenode/nest/transformer';
2
+ /**
3
+ * Property value transformer for default values.
4
+ *
5
+ * @param options
6
+ * @returns a property decorator
7
+ */ export function DefaultValueTransformer(options) {
8
+ return (...args)=>{
9
+ options ??= {};
10
+ const { defaultValue } = options;
11
+ if (defaultValue) {
12
+ Transform(({ value })=>{
13
+ if (value !== undefined && value !== null) {
14
+ return value;
15
+ }
16
+ return defaultValue;
17
+ })(...args);
18
+ }
19
+ };
20
+ }
21
+
22
+ //# sourceMappingURL=default-value-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/default-value-transformer.ts"],"sourcesContent":["import { Transform } from '@aenode/nest/transformer';\nimport type { PropValidationOptions } from './prop-options.js';\n\n/**\n * Property value transformer for default values.\n *\n * @param options\n * @returns a property decorator\n */\nexport function DefaultValueTransformer(\n options?: Pick<PropValidationOptions, 'defaultValue'>,\n): PropertyDecorator {\n return (...args) => {\n options ??= {};\n\n const { defaultValue } = options;\n if (defaultValue) {\n Transform(({ value }) => {\n if (value !== undefined && value !== null) {\n return value;\n }\n return defaultValue;\n })(...args);\n }\n };\n}\n"],"names":["Transform","DefaultValueTransformer","options","args","defaultValue","value","undefined"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA2B;AAGrD;;;;;CAKC,GACD,OAAO,SAASC,wBACdC,OAAqD;IAErD,OAAO,CAAC,GAAGC;QACTD,YAAY,CAAC;QAEb,MAAM,EAAEE,YAAY,EAAE,GAAGF;QACzB,IAAIE,cAAc;YAChBJ,UAAU,CAAC,EAAEK,KAAK,EAAE;gBAClB,IAAIA,UAAUC,aAAaD,UAAU,MAAM;oBACzC,OAAOA;gBACT;gBACA,OAAOD;YACT,MAAMD;QACR;IACF;AACF"}
@@ -0,0 +1,27 @@
1
+ export * from './common/base-dto-class.js';
2
+ export * from './common/global-validation-pipe.js';
3
+ export * from './common/message.dto.js';
4
+ export * from './common/validation-error-response.dto.js';
5
+ export * from './default-value-transformer.js';
6
+ export * from './json-transformer.js';
7
+ export * from './prop-boolean.js';
8
+ export * from './prop-common.js';
9
+ export * from './prop-date.js';
10
+ export * from './prop-enum.js';
11
+ export * from './prop-number.js';
12
+ export * from './prop-object-validation.js';
13
+ export * from './prop-object.js';
14
+ export * from './prop-options.js';
15
+ export * from './prop-string.js';
16
+ export * from './prop-validation.js';
17
+ export * from './prop.js';
18
+ export * from './test-helpers.js';
19
+ export * from './to-api-property-optionts.js';
20
+ export * from './validators/is-relative-path.js';
21
+ export * from './validators/less-than.js';
22
+ export * from './validators/max-properties.js';
23
+ export * from './validators/min-properties.js';
24
+ export * from './validators/more-than.js';
25
+ export * from './validators/not-with.js';
26
+ export * from './validators/not-without.js';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,29 @@
1
+ // @index(['./**/*.ts', '!./**/*.spec.ts','!./**/index.ts', '!./**/_*.ts','!./**/main.ts', '!./**/generated/**'], f => `export * from '${f.path}.js'`)
2
+ export * from './common/base-dto-class.js';
3
+ export * from './common/global-validation-pipe.js';
4
+ export * from './common/message.dto.js';
5
+ export * from './common/validation-error-response.dto.js';
6
+ export * from './default-value-transformer.js';
7
+ export * from './json-transformer.js';
8
+ export * from './prop-boolean.js';
9
+ export * from './prop-common.js';
10
+ export * from './prop-date.js';
11
+ export * from './prop-enum.js';
12
+ export * from './prop-number.js';
13
+ export * from './prop-object-validation.js';
14
+ export * from './prop-object.js';
15
+ export * from './prop-options.js';
16
+ export * from './prop-string.js';
17
+ export * from './prop-validation.js';
18
+ export * from './prop.js';
19
+ export * from './test-helpers.js';
20
+ export * from './to-api-property-optionts.js';
21
+ export * from './validators/is-relative-path.js';
22
+ export * from './validators/less-than.js';
23
+ export * from './validators/max-properties.js';
24
+ export * from './validators/min-properties.js';
25
+ export * from './validators/more-than.js';
26
+ export * from './validators/not-with.js';
27
+ export * from './validators/not-without.js';
28
+
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// @index(['./**/*.ts', '!./**/*.spec.ts','!./**/index.ts', '!./**/_*.ts','!./**/main.ts', '!./**/generated/**'], f => `export * from '${f.path}.js'`)\nexport * from './common/base-dto-class.js';\nexport * from './common/global-validation-pipe.js';\nexport * from './common/message.dto.js';\nexport * from './common/validation-error-response.dto.js';\nexport * from './default-value-transformer.js';\nexport * from './json-transformer.js';\nexport * from './prop-boolean.js';\nexport * from './prop-common.js';\nexport * from './prop-date.js';\nexport * from './prop-enum.js';\nexport * from './prop-number.js';\nexport * from './prop-object-validation.js';\nexport * from './prop-object.js';\nexport * from './prop-options.js';\nexport * from './prop-string.js';\nexport * from './prop-validation.js';\nexport * from './prop.js';\nexport * from './test-helpers.js';\nexport * from './to-api-property-optionts.js';\nexport * from './validators/is-relative-path.js';\nexport * from './validators/less-than.js';\nexport * from './validators/max-properties.js';\nexport * from './validators/min-properties.js';\nexport * from './validators/more-than.js';\nexport * from './validators/not-with.js';\nexport * from './validators/not-without.js';\n"],"names":[],"mappings":"AAAA,sJAAsJ;AACtJ,cAAc,6BAA6B;AAC3C,cAAc,qCAAqC;AACnD,cAAc,0BAA0B;AACxC,cAAc,4CAA4C;AAC1D,cAAc,iCAAiC;AAC/C,cAAc,wBAAwB;AACtC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,iBAAiB;AAC/B,cAAc,iBAAiB;AAC/B,cAAc,mBAAmB;AACjC,cAAc,8BAA8B;AAC5C,cAAc,mBAAmB;AACjC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,uBAAuB;AACrC,cAAc,YAAY;AAC1B,cAAc,oBAAoB;AAClC,cAAc,gCAAgC;AAC9C,cAAc,mCAAmC;AACjD,cAAc,4BAA4B;AAC1C,cAAc,iCAAiC;AAC/C,cAAc,iCAAiC;AAC/C,cAAc,4BAA4B;AAC1C,cAAc,2BAA2B;AACzC,cAAc,8BAA8B"}
@@ -0,0 +1,2 @@
1
+ export declare function JsonTransformer(): PropertyDecorator;
2
+ //# sourceMappingURL=json-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-transformer.d.ts","sourceRoot":"","sources":["../../src/lib/json-transformer.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,IAAI,iBAAiB,CASnD"}
@@ -0,0 +1,14 @@
1
+ import { Transform } from '@aenode/nest/transformer';
2
+ import { isJSON } from '@aenode/nest/validator';
3
+ export function JsonTransformer() {
4
+ return (...args)=>{
5
+ Transform(({ value })=>{
6
+ if (isJSON(value)) {
7
+ return JSON.parse(value);
8
+ }
9
+ return value;
10
+ })(...args);
11
+ };
12
+ }
13
+
14
+ //# sourceMappingURL=json-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/json-transformer.ts"],"sourcesContent":["import { Transform } from '@aenode/nest/transformer';\nimport { isJSON } from '@aenode/nest/validator';\n\nexport function JsonTransformer(): PropertyDecorator {\n return (...args) => {\n Transform(({ value }) => {\n if (isJSON(value)) {\n return JSON.parse(value);\n }\n return value;\n })(...args);\n };\n}\n"],"names":["Transform","isJSON","JsonTransformer","args","value","JSON","parse"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SAASC,MAAM,QAAQ,yBAAyB;AAEhD,OAAO,SAASC;IACd,OAAO,CAAC,GAAGC;QACTH,UAAU,CAAC,EAAEI,KAAK,EAAE;YAClB,IAAIH,OAAOG,QAAQ;gBACjB,OAAOC,KAAKC,KAAK,CAACF;YACpB;YACA,OAAOA;QACT,MAAMD;IACR;AACF"}
@@ -0,0 +1,17 @@
1
+ import { type ValidationOptions } from '@aenode/nest/validator';
2
+ import type { BooleanValidationOptions } from './prop-options.js';
3
+ /**
4
+ * Boolean property validation decorator
5
+ *
6
+ * @param options boolean validation options
7
+ * @returns a property decorator
8
+ */
9
+ export declare function PropBoolean(options: BooleanValidationOptions): PropertyDecorator;
10
+ /**
11
+ * Boolean property validation decorator
12
+ *
13
+ * @param options boolean validation options
14
+ * @returns a property decorator
15
+ */
16
+ export declare function __PropBoolean(options: BooleanValidationOptions, validationOptions?: ValidationOptions): PropertyDecorator;
17
+ //# sourceMappingURL=prop-boolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prop-boolean.d.ts","sourceRoot":"","sources":["../../src/lib/prop-boolean.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,wBAAwB,GAChC,iBAAiB,CAInB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,wBAAwB,EACjC,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CAkBnB"}
@@ -0,0 +1,39 @@
1
+ import { Transform } from '@aenode/nest/transformer';
2
+ import { IsBoolean } from '@aenode/nest/validator';
3
+ import { __PropCommon } from './prop-common.js';
4
+ /**
5
+ * Boolean property validation decorator
6
+ *
7
+ * @param options boolean validation options
8
+ * @returns a property decorator
9
+ */ export function PropBoolean(options) {
10
+ return (...args)=>{
11
+ __PropBoolean(options)(...args);
12
+ };
13
+ }
14
+ /**
15
+ * Boolean property validation decorator
16
+ *
17
+ * @param options boolean validation options
18
+ * @returns a property decorator
19
+ */ export function __PropBoolean(options, validationOptions) {
20
+ return (...args)=>{
21
+ const inferedType = Reflect.getMetadata('design:type', ...args);
22
+ validationOptions ??= {
23
+ each: inferedType === Array,
24
+ groups: options?.groups
25
+ };
26
+ Transform(({ value })=>{
27
+ if (value === 'true') {
28
+ return true;
29
+ } else if (value === 'false') {
30
+ return false;
31
+ }
32
+ return value;
33
+ })(...args);
34
+ __PropCommon(options, validationOptions)(...args);
35
+ IsBoolean(validationOptions)(...args);
36
+ };
37
+ }
38
+
39
+ //# sourceMappingURL=prop-boolean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/prop-boolean.ts"],"sourcesContent":["import { Transform } from '@aenode/nest/transformer';\nimport { IsBoolean, type ValidationOptions } from '@aenode/nest/validator';\nimport { __PropCommon } from './prop-common.js';\nimport type { BooleanValidationOptions } from './prop-options.js';\n/**\n * Boolean property validation decorator\n *\n * @param options boolean validation options\n * @returns a property decorator\n */\nexport function PropBoolean(\n options: BooleanValidationOptions,\n): PropertyDecorator {\n return (...args) => {\n __PropBoolean(options)(...args);\n };\n}\n\n/**\n * Boolean property validation decorator\n *\n * @param options boolean validation options\n * @returns a property decorator\n */\nexport function __PropBoolean(\n options: BooleanValidationOptions,\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (...args) => {\n const inferedType = Reflect.getMetadata('design:type', ...args);\n validationOptions ??= {\n each: inferedType === Array,\n groups: options?.groups,\n };\n Transform(({ value }) => {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n return value;\n })(...args);\n __PropCommon(options, validationOptions)(...args);\n IsBoolean(validationOptions)(...args);\n };\n}\n"],"names":["Transform","IsBoolean","__PropCommon","PropBoolean","options","args","__PropBoolean","validationOptions","inferedType","Reflect","getMetadata","each","Array","groups","value"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SAASC,SAAS,QAAgC,yBAAyB;AAC3E,SAASC,YAAY,QAAQ,mBAAmB;AAEhD;;;;;CAKC,GACD,OAAO,SAASC,YACdC,OAAiC;IAEjC,OAAO,CAAC,GAAGC;QACTC,cAAcF,YAAYC;IAC5B;AACF;AAEA;;;;;CAKC,GACD,OAAO,SAASC,cACdF,OAAiC,EACjCG,iBAAqC;IAErC,OAAO,CAAC,GAAGF;QACT,MAAMG,cAAcC,QAAQC,WAAW,CAAC,kBAAkBL;QAC1DE,sBAAsB;YACpBI,MAAMH,gBAAgBI;YACtBC,QAAQT,SAASS;QACnB;QACAb,UAAU,CAAC,EAAEc,KAAK,EAAE;YAClB,IAAIA,UAAU,QAAQ;gBACpB,OAAO;YACT,OAAO,IAAIA,UAAU,SAAS;gBAC5B,OAAO;YACT;YACA,OAAOA;QACT,MAAMT;QACNH,aAAaE,SAASG,sBAAsBF;QAC5CJ,UAAUM,sBAAsBF;IAClC;AACF"}
@@ -0,0 +1,15 @@
1
+ import { type ValidationOptions } from '@aenode/nest/validator';
2
+ import type { PropValidationOptions } from './prop-options.js';
3
+ /**
4
+ * Common validations and transform decorators including
5
+ * - Expose
6
+ * - IsDefined
7
+ * - IsOptional
8
+ * - DefaultValueTransformer
9
+ *
10
+ * @param options property validation options
11
+ * @param validationOptions class-validator validation options
12
+ * @returns
13
+ */
14
+ export declare function __PropCommon(options: PropValidationOptions, validationOptions: ValidationOptions): PropertyDecorator;
15
+ //# sourceMappingURL=prop-common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prop-common.d.ts","sourceRoot":"","sources":["../../src/lib/prop-common.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,iBAAiB,EAAc,MAAM,wBAAwB,CAAC;AAE5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM/D;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,qBAAqB,EAC9B,iBAAiB,EAAE,iBAAiB,GACnC,iBAAiB,CA4BnB"}
@@ -0,0 +1,43 @@
1
+ import { Expose } from '@aenode/nest/transformer';
2
+ import { IsOptional } from '@aenode/nest/validator';
3
+ import { DefaultValueTransformer } from './default-value-transformer.js';
4
+ import { LessThan } from './validators/less-than.js';
5
+ import { MoreThan } from './validators/more-than.js';
6
+ import { NotWith } from './validators/not-with.js';
7
+ import { NotWithout } from './validators/not-without.js';
8
+ /**
9
+ * Common validations and transform decorators including
10
+ * - Expose
11
+ * - IsDefined
12
+ * - IsOptional
13
+ * - DefaultValueTransformer
14
+ *
15
+ * @param options property validation options
16
+ * @param validationOptions class-validator validation options
17
+ * @returns
18
+ */ export function __PropCommon(options, validationOptions) {
19
+ return (...args)=>{
20
+ const { required } = options;
21
+ Expose({
22
+ groups: options.groups
23
+ })(...args);
24
+ if (options.notWith) {
25
+ NotWith(options.notWith)(...args);
26
+ }
27
+ if (options.notWithout) {
28
+ NotWithout(options.notWithout)(...args);
29
+ }
30
+ if (options.moreThan) {
31
+ MoreThan(options.moreThan, validationOptions)(...args);
32
+ }
33
+ if (options.lessThan) {
34
+ LessThan(options.lessThan, validationOptions)(...args);
35
+ }
36
+ DefaultValueTransformer(options)(...args);
37
+ if (required !== true) {
38
+ IsOptional(validationOptions)(...args);
39
+ }
40
+ };
41
+ }
42
+
43
+ //# sourceMappingURL=prop-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/prop-common.ts"],"sourcesContent":["import { Expose } from '@aenode/nest/transformer';\nimport { type ValidationOptions, IsOptional } from '@aenode/nest/validator';\nimport { DefaultValueTransformer } from './default-value-transformer.js';\nimport type { PropValidationOptions } from './prop-options.js';\nimport { LessThan } from './validators/less-than.js';\nimport { MoreThan } from './validators/more-than.js';\nimport { NotWith } from './validators/not-with.js';\nimport { NotWithout } from './validators/not-without.js';\n\n/**\n * Common validations and transform decorators including\n * - Expose\n * - IsDefined\n * - IsOptional\n * - DefaultValueTransformer\n *\n * @param options property validation options\n * @param validationOptions class-validator validation options\n * @returns\n */\nexport function __PropCommon(\n options: PropValidationOptions,\n validationOptions: ValidationOptions,\n): PropertyDecorator {\n return (...args) => {\n const { required } = options;\n\n Expose({ groups: options.groups })(...args);\n\n if (options.notWith) {\n NotWith(options.notWith)(...args);\n }\n\n if (options.notWithout) {\n NotWithout(options.notWithout)(...args);\n }\n\n if (options.moreThan) {\n MoreThan(options.moreThan, validationOptions)(...args);\n }\n\n if (options.lessThan) {\n LessThan(options.lessThan, validationOptions)(...args);\n }\n\n DefaultValueTransformer(options)(...args);\n\n if (required !== true) {\n IsOptional(validationOptions)(...args);\n }\n };\n}\n"],"names":["Expose","IsOptional","DefaultValueTransformer","LessThan","MoreThan","NotWith","NotWithout","__PropCommon","options","validationOptions","args","required","groups","notWith","notWithout","moreThan","lessThan"],"mappings":"AAAA,SAASA,MAAM,QAAQ,2BAA2B;AAClD,SAAiCC,UAAU,QAAQ,yBAAyB;AAC5E,SAASC,uBAAuB,QAAQ,iCAAiC;AAEzE,SAASC,QAAQ,QAAQ,4BAA4B;AACrD,SAASC,QAAQ,QAAQ,4BAA4B;AACrD,SAASC,OAAO,QAAQ,2BAA2B;AACnD,SAASC,UAAU,QAAQ,8BAA8B;AAEzD;;;;;;;;;;CAUC,GACD,OAAO,SAASC,aACdC,OAA8B,EAC9BC,iBAAoC;IAEpC,OAAO,CAAC,GAAGC;QACT,MAAM,EAAEC,QAAQ,EAAE,GAAGH;QAErBR,OAAO;YAAEY,QAAQJ,QAAQI,MAAM;QAAC,MAAMF;QAEtC,IAAIF,QAAQK,OAAO,EAAE;YACnBR,QAAQG,QAAQK,OAAO,KAAKH;QAC9B;QAEA,IAAIF,QAAQM,UAAU,EAAE;YACtBR,WAAWE,QAAQM,UAAU,KAAKJ;QACpC;QAEA,IAAIF,QAAQO,QAAQ,EAAE;YACpBX,SAASI,QAAQO,QAAQ,EAAEN,sBAAsBC;QACnD;QAEA,IAAIF,QAAQQ,QAAQ,EAAE;YACpBb,SAASK,QAAQQ,QAAQ,EAAEP,sBAAsBC;QACnD;QAEAR,wBAAwBM,YAAYE;QAEpC,IAAIC,aAAa,MAAM;YACrBV,WAAWQ,sBAAsBC;QACnC;IACF;AACF"}
@@ -0,0 +1,17 @@
1
+ import { type ValidationOptions } from '@aenode/nest/validator';
2
+ import type { DateValidationOptions } from './prop-options.js';
3
+ /**
4
+ * Date property validation decorator
5
+ *
6
+ * @param options date validation options
7
+ * @returns a property decorator
8
+ */
9
+ export declare function PropDate(options: DateValidationOptions): PropertyDecorator;
10
+ /**
11
+ * Date property validation decorator
12
+ *
13
+ * @param options date validation options
14
+ * @returns a property decorator
15
+ */
16
+ export declare function __PropDate(options?: DateValidationOptions, validationOptions?: ValidationOptions): PropertyDecorator;
17
+ //# sourceMappingURL=prop-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prop-date.d.ts","sourceRoot":"","sources":["../../src/lib/prop-date.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAI1E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,CAAC,EAAE,qBAAqB,EAC/B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CAwBnB"}
@@ -0,0 +1,41 @@
1
+ import { Transform } from '@aenode/nest/transformer';
2
+ import { IsDate, MaxDate, MinDate, isISO8601 } from '@aenode/nest/validator';
3
+ import { __PropCommon } from './prop-common.js';
4
+ /**
5
+ * Date property validation decorator
6
+ *
7
+ * @param options date validation options
8
+ * @returns a property decorator
9
+ */ export function PropDate(options) {
10
+ return (...args)=>{
11
+ __PropDate(options)(...args);
12
+ };
13
+ }
14
+ /**
15
+ * Date property validation decorator
16
+ *
17
+ * @param options date validation options
18
+ * @returns a property decorator
19
+ */ export function __PropDate(options, validationOptions) {
20
+ return (...args)=>{
21
+ options ??= {};
22
+ const inferedType = Reflect.getMetadata('design:type', ...args);
23
+ validationOptions ??= {
24
+ each: inferedType === Array,
25
+ groups: options?.groups
26
+ };
27
+ const { minDate: min, maxDate: max } = options ?? {};
28
+ __PropCommon(options, validationOptions)(...args);
29
+ Transform(({ value })=>{
30
+ if (isISO8601(value)) {
31
+ return new Date(value);
32
+ }
33
+ return value;
34
+ })(...args);
35
+ IsDate(validationOptions)(...args);
36
+ if (min) MinDate(min, validationOptions)(...args);
37
+ if (max) MaxDate(max, validationOptions)(...args);
38
+ };
39
+ }
40
+
41
+ //# sourceMappingURL=prop-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/prop-date.ts"],"sourcesContent":["import { Transform } from '@aenode/nest/transformer';\nimport {\n IsDate,\n MaxDate,\n MinDate,\n type ValidationOptions,\n isISO8601,\n} from '@aenode/nest/validator';\nimport { __PropCommon } from './prop-common.js';\nimport type { DateValidationOptions } from './prop-options.js';\n\n/**\n * Date property validation decorator\n *\n * @param options date validation options\n * @returns a property decorator\n */\nexport function PropDate(options: DateValidationOptions): PropertyDecorator {\n return (...args) => {\n __PropDate(options)(...args);\n };\n}\n\n/**\n * Date property validation decorator\n *\n * @param options date validation options\n * @returns a property decorator\n */\nexport function __PropDate(\n options?: DateValidationOptions,\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (...args) => {\n options ??= {};\n const inferedType = Reflect.getMetadata('design:type', ...args);\n validationOptions ??= {\n each: inferedType === Array,\n groups: options?.groups,\n };\n\n const { minDate: min, maxDate: max } = options ?? {};\n\n __PropCommon(options, validationOptions)(...args);\n\n Transform(({ value }) => {\n if (isISO8601(value)) {\n return new Date(value);\n }\n return value;\n })(...args);\n IsDate(validationOptions)(...args);\n\n if (min) MinDate(min, validationOptions)(...args);\n if (max) MaxDate(max, validationOptions)(...args);\n };\n}\n"],"names":["Transform","IsDate","MaxDate","MinDate","isISO8601","__PropCommon","PropDate","options","args","__PropDate","validationOptions","inferedType","Reflect","getMetadata","each","Array","groups","minDate","min","maxDate","max","value","Date"],"mappings":"AAAA,SAASA,SAAS,QAAQ,2BAA2B;AACrD,SACEC,MAAM,EACNC,OAAO,EACPC,OAAO,EAEPC,SAAS,QACJ,yBAAyB;AAChC,SAASC,YAAY,QAAQ,mBAAmB;AAGhD;;;;;CAKC,GACD,OAAO,SAASC,SAASC,OAA8B;IACrD,OAAO,CAAC,GAAGC;QACTC,WAAWF,YAAYC;IACzB;AACF;AAEA;;;;;CAKC,GACD,OAAO,SAASC,WACdF,OAA+B,EAC/BG,iBAAqC;IAErC,OAAO,CAAC,GAAGF;QACTD,YAAY,CAAC;QACb,MAAMI,cAAcC,QAAQC,WAAW,CAAC,kBAAkBL;QAC1DE,sBAAsB;YACpBI,MAAMH,gBAAgBI;YACtBC,QAAQT,SAASS;QACnB;QAEA,MAAM,EAAEC,SAASC,GAAG,EAAEC,SAASC,GAAG,EAAE,GAAGb,WAAW,CAAC;QAEnDF,aAAaE,SAASG,sBAAsBF;QAE5CR,UAAU,CAAC,EAAEqB,KAAK,EAAE;YAClB,IAAIjB,UAAUiB,QAAQ;gBACpB,OAAO,IAAIC,KAAKD;YAClB;YACA,OAAOA;QACT,MAAMb;QACNP,OAAOS,sBAAsBF;QAE7B,IAAIU,KAAKf,QAAQe,KAAKR,sBAAsBF;QAC5C,IAAIY,KAAKlB,QAAQkB,KAAKV,sBAAsBF;IAC9C;AACF"}