@solidstarters/solid-code-builder 1.0.10 → 1.0.12

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 (307) hide show
  1. package/dist/code-builder/lib/field/FieldManager.d.ts +2 -1
  2. package/dist/code-builder/lib/field/FieldManager.js +18 -5
  3. package/dist/code-builder/lib/field/FieldManager.js.map +1 -1
  4. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +1 -1
  5. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js.map +1 -1
  6. package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +8 -9
  7. package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js.map +1 -1
  8. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.d.ts +3 -0
  9. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +15 -3
  10. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -1
  11. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.d.ts +13 -0
  12. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.js +33 -0
  13. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.js.map +1 -0
  14. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.d.ts +4 -0
  15. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.js +9 -0
  16. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.js.map +1 -0
  17. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.d.ts +4 -0
  18. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.js +8 -0
  19. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.js.map +1 -0
  20. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.d.ts +1 -16
  21. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +15 -156
  22. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js.map +1 -1
  23. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.d.ts +1 -20
  24. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +0 -109
  25. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js.map +1 -1
  26. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.d.ts +2 -17
  27. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +4 -175
  28. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js.map +1 -1
  29. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.d.ts +1 -22
  30. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +1 -133
  31. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js.map +1 -1
  32. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.d.ts +13 -0
  33. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.js +33 -0
  34. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.js.map +1 -0
  35. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.d.ts +34 -0
  36. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.js +202 -0
  37. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.js.map +1 -0
  38. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.d.ts +9 -0
  39. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.js +43 -0
  40. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.js.map +1 -0
  41. package/package.json +1 -1
  42. package/src/code-builder/index.d.ts +9 -0
  43. package/src/code-builder/index.js +178 -0
  44. package/src/code-builder/index.js.map +1 -0
  45. package/src/code-builder/index_spec.d.ts +1 -0
  46. package/src/code-builder/index_spec.js +46 -0
  47. package/src/code-builder/index_spec.js.map +1 -0
  48. package/src/code-builder/lib/field/FieldManager.d.ts +106 -0
  49. package/src/code-builder/lib/field/FieldManager.js +236 -0
  50. package/src/code-builder/lib/field/FieldManager.js.map +1 -0
  51. package/src/code-builder/lib/field/FieldManager.ts +19 -6
  52. package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.d.ts +26 -0
  53. package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js +107 -0
  54. package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js.map +1 -0
  55. package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.d.ts +24 -0
  56. package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js +100 -0
  57. package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js.map +1 -0
  58. package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.d.ts +24 -0
  59. package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js +102 -0
  60. package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js.map +1 -0
  61. package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.d.ts +24 -0
  62. package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js +106 -0
  63. package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js.map +1 -0
  64. package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.d.ts +24 -0
  65. package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js +112 -0
  66. package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js.map +1 -0
  67. package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.d.ts +24 -0
  68. package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js +99 -0
  69. package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js.map +1 -0
  70. package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.d.ts +24 -0
  71. package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js +100 -0
  72. package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js.map +1 -0
  73. package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.d.ts +24 -0
  74. package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js +100 -0
  75. package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js.map +1 -0
  76. package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.d.ts +25 -0
  77. package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js +104 -0
  78. package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js.map +1 -0
  79. package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.d.ts +25 -0
  80. package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js +103 -0
  81. package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js.map +1 -0
  82. package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.d.ts +25 -0
  83. package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js +103 -0
  84. package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js.map +1 -0
  85. package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.d.ts +25 -0
  86. package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js +102 -0
  87. package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js.map +1 -0
  88. package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.d.ts +25 -0
  89. package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js +103 -0
  90. package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js.map +1 -0
  91. package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.d.ts +24 -0
  92. package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js +112 -0
  93. package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js.map +1 -0
  94. package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.d.ts +26 -0
  95. package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js +104 -0
  96. package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js.map +1 -0
  97. package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.d.ts +25 -0
  98. package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js +102 -0
  99. package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js.map +1 -0
  100. package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.d.ts +25 -0
  101. package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js +100 -0
  102. package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js.map +1 -0
  103. package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.d.ts +24 -0
  104. package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js +99 -0
  105. package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js.map +1 -0
  106. package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.d.ts +25 -0
  107. package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js +102 -0
  108. package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js.map +1 -0
  109. package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.d.ts +30 -0
  110. package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js +140 -0
  111. package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js.map +1 -0
  112. package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.d.ts +34 -0
  113. package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js +178 -0
  114. package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js.map +1 -0
  115. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.d.ts +24 -0
  116. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +79 -0
  117. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js.map +1 -0
  118. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.ts +1 -1
  119. package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.d.ts +29 -0
  120. package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js +118 -0
  121. package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js.map +1 -0
  122. package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.d.ts +37 -0
  123. package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js +175 -0
  124. package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js.map +1 -0
  125. package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.d.ts +34 -0
  126. package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +179 -0
  127. package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js.map +1 -0
  128. package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.d.ts +33 -0
  129. package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js +155 -0
  130. package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js.map +1 -0
  131. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.d.ts +31 -0
  132. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +174 -0
  133. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js.map +1 -0
  134. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.ts +8 -9
  135. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.d.ts +51 -0
  136. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +345 -0
  137. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js.map +1 -0
  138. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.d.ts +58 -0
  139. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +373 -0
  140. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -0
  141. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.ts +19 -3
  142. package/src/code-builder/lib/field/field-managers/base/DeleteType.d.ts +6 -0
  143. package/src/code-builder/lib/field/field-managers/base/DeleteType.js +11 -0
  144. package/src/code-builder/lib/field/field-managers/base/DeleteType.js.map +1 -0
  145. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.d.ts +13 -0
  146. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +33 -0
  147. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js.map +1 -0
  148. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.d.ts +23 -0
  149. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js +81 -0
  150. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js.map +1 -0
  151. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.d.ts +13 -0
  152. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +55 -0
  153. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js.map +1 -0
  154. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.d.ts +13 -0
  155. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +33 -0
  156. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js.map +1 -0
  157. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.d.ts +22 -0
  158. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js +75 -0
  159. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js.map +1 -0
  160. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.d.ts +13 -0
  161. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +51 -0
  162. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js.map +1 -0
  163. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.d.ts +14 -0
  164. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +30 -0
  165. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js.map +1 -0
  166. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.d.ts +11 -0
  167. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +33 -0
  168. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js.map +1 -0
  169. package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.d.ts +13 -0
  170. package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js +33 -0
  171. package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js.map +1 -0
  172. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.d.ts +22 -0
  173. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js +81 -0
  174. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js.map +1 -0
  175. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.d.ts +13 -0
  176. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +59 -0
  177. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js.map +1 -0
  178. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.d.ts +13 -0
  179. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +33 -0
  180. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js.map +1 -0
  181. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.d.ts +22 -0
  182. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js +77 -0
  183. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js.map +1 -0
  184. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.d.ts +13 -0
  185. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +53 -0
  186. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js.map +1 -0
  187. package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.d.ts +14 -0
  188. package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +34 -0
  189. package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js.map +1 -0
  190. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.d.ts +22 -0
  191. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js +72 -0
  192. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js.map +1 -0
  193. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.d.ts +12 -0
  194. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +44 -0
  195. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js.map +1 -0
  196. package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.d.ts +13 -0
  197. package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js +33 -0
  198. package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js.map +1 -0
  199. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.d.ts +22 -0
  200. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js +76 -0
  201. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js.map +1 -0
  202. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.d.ts +13 -0
  203. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +52 -0
  204. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js.map +1 -0
  205. package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.d.ts +14 -0
  206. package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +34 -0
  207. package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js.map +1 -0
  208. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.d.ts +20 -0
  209. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js +57 -0
  210. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js.map +1 -0
  211. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.d.ts +9 -0
  212. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +21 -0
  213. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js.map +1 -0
  214. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.d.ts +14 -0
  215. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +34 -0
  216. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js.map +1 -0
  217. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.d.ts +22 -0
  218. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js +63 -0
  219. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js.map +1 -0
  220. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.d.ts +11 -0
  221. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +34 -0
  222. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js.map +1 -0
  223. package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.d.ts +13 -0
  224. package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js +33 -0
  225. package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js.map +1 -0
  226. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.d.ts +23 -0
  227. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js +72 -0
  228. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js.map +1 -0
  229. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.d.ts +12 -0
  230. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js +57 -0
  231. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js.map +1 -0
  232. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.d.ts +13 -0
  233. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js +27 -0
  234. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js.map +1 -0
  235. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.d.ts +24 -0
  236. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js +75 -0
  237. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js.map +1 -0
  238. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.d.ts +12 -0
  239. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js +35 -0
  240. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js.map +1 -0
  241. package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.d.ts +14 -0
  242. package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +34 -0
  243. package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js.map +1 -0
  244. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.d.ts +29 -0
  245. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js +121 -0
  246. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js.map +1 -0
  247. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.d.ts +11 -0
  248. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +37 -0
  249. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js.map +1 -0
  250. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.ts +52 -0
  251. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.ts +8 -0
  252. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.ts +8 -0
  253. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.d.ts +13 -0
  254. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +33 -0
  255. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js.map +1 -0
  256. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.d.ts +51 -0
  257. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +366 -0
  258. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js.map +1 -0
  259. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.ts +16 -189
  260. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.d.ts +30 -0
  261. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +158 -0
  262. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js.map +1 -0
  263. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.ts +2 -147
  264. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.d.ts +13 -0
  265. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +33 -0
  266. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js.map +1 -0
  267. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.d.ts +43 -0
  268. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +294 -0
  269. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js.map +1 -0
  270. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.ts +6 -215
  271. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.d.ts +31 -0
  272. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +177 -0
  273. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js.map +1 -0
  274. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.ts +3 -174
  275. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.ts +52 -0
  276. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.ts +247 -0
  277. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.ts +51 -0
  278. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.d.ts +14 -0
  279. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +34 -0
  280. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js.map +1 -0
  281. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.d.ts +22 -0
  282. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js +63 -0
  283. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js.map +1 -0
  284. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.d.ts +11 -0
  285. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +34 -0
  286. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js.map +1 -0
  287. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.d.ts +14 -0
  288. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +34 -0
  289. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js.map +1 -0
  290. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.d.ts +22 -0
  291. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js +63 -0
  292. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js.map +1 -0
  293. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.d.ts +11 -0
  294. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +37 -0
  295. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js.map +1 -0
  296. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.d.ts +14 -0
  297. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +34 -0
  298. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js.map +1 -0
  299. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.d.ts +8 -0
  300. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js +15 -0
  301. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js.map +1 -0
  302. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.d.ts +11 -0
  303. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +33 -0
  304. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js.map +1 -0
  305. package/src/code-builder/lib/model/helpers.d.ts +49 -0
  306. package/src/code-builder/lib/model/helpers.js +407 -0
  307. package/src/code-builder/lib/model/helpers.js.map +1 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TransformDecoratorManager = void 0;
7
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
8
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
9
+ class TransformDecoratorManager {
10
+ constructor(options, fieldNode) {
11
+ this.options = options;
12
+ this.fieldNode = fieldNode;
13
+ }
14
+ isApplyDecorator() {
15
+ return this.options.isTransform;
16
+ }
17
+ buildDecorator() {
18
+ const fieldSourceLines = [];
19
+ const changes = [];
20
+ fieldSourceLines.push(`@${this.decoratorName()}(() => ${this.options.type})`);
21
+ changes.push(...this.decoratorImports());
22
+ return {
23
+ filePath: this.options.source.fileName,
24
+ field: this.options.field,
25
+ changes: changes,
26
+ fieldSourceLines: fieldSourceLines,
27
+ };
28
+ }
29
+ setFieldNode(fieldNode) {
30
+ this.fieldNode = fieldNode;
31
+ }
32
+ decoratorName() {
33
+ return 'Type';
34
+ }
35
+ decoratorImports() {
36
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'class-transformer')];
37
+ }
38
+ updateDecorator() {
39
+ if (!this.fieldNode)
40
+ throw new Error(`Field node is required for updating the ${this.decoratorName()} decorator`);
41
+ let newModifiers = [];
42
+ let existingModifiers = this.fieldNode.modifiers;
43
+ // Check if the field has an Transform decorator.
44
+ //@ts-ignore
45
+ const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
46
+ //Remove the decorator if the decorator exists
47
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
48
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
49
+ //Add the decorator, if it is required
50
+ const changes = [];
51
+ if (this.isApplyDecorator()) {
52
+ newModifiers = [...newModifiers, this.createDecorator(existingDecorator)];
53
+ changes.push(...this.decoratorImports());
54
+ }
55
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
56
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
57
+ return [updatedProperty, changes];
58
+ }
59
+ createDecorator(existingDecorator) {
60
+ // Capture the existing column decorator options
61
+ const validationOptions = [];
62
+ if (existingDecorator !== undefined) {
63
+ //Pre-set the column options from the existing column decorator
64
+ const existingCallExpression = existingDecorator.expression;
65
+ // Check if call expression has at least 2 arguments
66
+ if (existingCallExpression.arguments.length > 1) {
67
+ if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[1])) {
68
+ throw new Error('Transform decorator 1st argument must be an object literal containing the validation options');
69
+ }
70
+ const existingObjectLiteralExpression = existingCallExpression.arguments[1];
71
+ validationOptions.push(...existingObjectLiteralExpression.properties);
72
+ }
73
+ }
74
+ // Re-create the column decorator with the merged column decorator options
75
+ const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
76
+ const argumentsArray = [];
77
+ const transformFunction = typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createIdentifier(this.options.type));
78
+ argumentsArray.push(transformFunction);
79
+ if (validationOptions.length > 0) {
80
+ const validationOptionsObjectLiteral = typescript_1.default.factory.createObjectLiteralExpression(validationOptions);
81
+ argumentsArray.push(validationOptionsObjectLiteral);
82
+ }
83
+ const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, argumentsArray);
84
+ return typescript_1.default.factory.createDecorator(call);
85
+ }
86
+ findDecorator(name, existingModifiers) {
87
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
88
+ }
89
+ filterOtherDecorators(name, existingModifiers) {
90
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
91
+ }
92
+ filterNonDecorators(existingModifiers) {
93
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
94
+ }
95
+ containsIdentifierName(m, identifierName) {
96
+ const callExpression = m.expression;
97
+ const identifier = callExpression.expression;
98
+ return identifier.text === identifierName;
99
+ }
100
+ }
101
+ exports.TransformDecoratorManager = TransformDecoratorManager;
102
+ //# sourceMappingURL=TransformDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransformDecoratorManager.js","sourceRoot":"","sources":["TransformDecoratorManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import ts, { PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
2
+ import { DecoratorManager, PartialAddFieldChange } from "../../FieldManager";
3
+ import { Change } from "@schematics/angular/utility/change";
4
+ export interface ValidateNestedDecoratorOptions {
5
+ isValidateNested: boolean;
6
+ source: ts.SourceFile;
7
+ field: any;
8
+ }
9
+ export declare class ValidateNestedDecoratorManager implements DecoratorManager {
10
+ options: ValidateNestedDecoratorOptions;
11
+ fieldNode?: ts.PropertyDeclaration | undefined;
12
+ constructor(options: ValidateNestedDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
13
+ isApplyDecorator(): boolean;
14
+ buildDecorator(): PartialAddFieldChange;
15
+ setFieldNode(fieldNode: ts.PropertyDeclaration): void;
16
+ decoratorName(): string;
17
+ decoratorImports(): Change[];
18
+ private buildValidationOptionsCode;
19
+ updateDecorator(): [PropertyDeclaration, Change[]];
20
+ createDecorator(existingDecorator: ts.Decorator | undefined): ts.Decorator;
21
+ private mergeExistingAndNewValidationOptions;
22
+ private createValidationDecoratorOptions;
23
+ private optionsToPropertyAssignmentsOrNull;
24
+ private createDecoratorArguments;
25
+ private existingValidationOptions;
26
+ private findDecorator;
27
+ private filterOtherDecorators;
28
+ private filterNonDecorators;
29
+ private containsIdentifierName;
30
+ }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ValidateNestedDecoratorManager = void 0;
7
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
8
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
9
+ class ValidateNestedDecoratorManager {
10
+ constructor(options, fieldNode) {
11
+ this.options = options;
12
+ this.fieldNode = fieldNode;
13
+ }
14
+ isApplyDecorator() {
15
+ return this.options.isValidateNested;
16
+ }
17
+ buildDecorator() {
18
+ const fieldSourceLines = [];
19
+ const changes = [];
20
+ fieldSourceLines.push(`@${this.decoratorName()}(${this.buildValidationOptionsCode()})`);
21
+ changes.push(...this.decoratorImports());
22
+ return {
23
+ filePath: this.options.source.fileName,
24
+ field: this.options.field,
25
+ changes: changes,
26
+ fieldSourceLines: fieldSourceLines,
27
+ };
28
+ }
29
+ setFieldNode(fieldNode) {
30
+ this.fieldNode = fieldNode;
31
+ }
32
+ decoratorName() {
33
+ return 'ValidateNested';
34
+ }
35
+ decoratorImports() {
36
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'class-validator')];
37
+ }
38
+ buildValidationOptionsCode() {
39
+ return `{ each : true }`;
40
+ }
41
+ updateDecorator() {
42
+ if (!this.fieldNode)
43
+ throw new Error(`Field node is required for updating the ${this.decoratorName()} decorator`);
44
+ let newModifiers = [];
45
+ let existingModifiers = this.fieldNode.modifiers;
46
+ // Check if the field has an IsArray decorator.
47
+ const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
48
+ //Remove the decorator if the decorator exists
49
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
50
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
51
+ //Add the decorator, if it is required
52
+ const changes = [];
53
+ if (this.isApplyDecorator()) {
54
+ newModifiers = [...newModifiers, this.createDecorator(existingDecorator)];
55
+ changes.push(...this.decoratorImports());
56
+ }
57
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
58
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
59
+ return [updatedProperty, changes];
60
+ }
61
+ createDecorator(existingDecorator) {
62
+ // Capture the existing isArray decorator options
63
+ const validationOptions = this.existingValidationOptions(existingDecorator);
64
+ //Merge the options with the existing options
65
+ const mergedValidationOptions = this.mergeExistingAndNewValidationOptions(validationOptions);
66
+ // Re-create the isArray decorator with the existing isArray decorator options
67
+ const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
68
+ const argumentsArray = this.createDecoratorArguments(mergedValidationOptions);
69
+ const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, argumentsArray);
70
+ return typescript_1.default.factory.createDecorator(call);
71
+ }
72
+ mergeExistingAndNewValidationOptions(validationOptions) {
73
+ const decoratorOptions = this.createValidationDecoratorOptions();
74
+ const mergedValidationOptions = Array.from(decoratorOptions.values()).filter(p => p !== null);
75
+ // console.log('mergedValidationOptions', mergedValidationOptions.map(p => JSON.stringify(p.name)).join(', '));
76
+ // Add the other unhandled column decorator options
77
+ const handledDecoratorOptions = Array.from(decoratorOptions.keys());
78
+ //@ts-ignore
79
+ const otherPropertyAssignments = validationOptions.filter(ps => { var _a; return !handledDecoratorOptions.includes((_a = ps.name) === null || _a === void 0 ? void 0 : _a.escapedText); });
80
+ mergedValidationOptions.push(...otherPropertyAssignments);
81
+ return mergedValidationOptions;
82
+ }
83
+ createValidationDecoratorOptions() {
84
+ const options = new Map();
85
+ options.set('each', typescript_1.default.factory.createTrue());
86
+ return this.optionsToPropertyAssignmentsOrNull(options);
87
+ }
88
+ optionsToPropertyAssignmentsOrNull(options) {
89
+ const decoratorOptions = new Map();
90
+ options.forEach((value, key) => {
91
+ if (value !== null) {
92
+ decoratorOptions.set(key, typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), value));
93
+ }
94
+ else {
95
+ decoratorOptions.set(key, null);
96
+ }
97
+ });
98
+ return decoratorOptions;
99
+ }
100
+ createDecoratorArguments(validationOptions) {
101
+ const argumentsArray = [];
102
+ if (validationOptions.length > 0) {
103
+ const validationOptionsObjectLiteral = typescript_1.default.factory.createObjectLiteralExpression(validationOptions);
104
+ argumentsArray.push(validationOptionsObjectLiteral);
105
+ }
106
+ return argumentsArray;
107
+ }
108
+ existingValidationOptions(existingDecorator) {
109
+ const validationOptions = [];
110
+ if (existingDecorator !== undefined) {
111
+ //Pre-set the isArray options from the existing IsArray decorator
112
+ const existingCallExpression = existingDecorator.expression;
113
+ // Check if call expression has at least 1 argument
114
+ if (existingCallExpression.arguments.length > 0) {
115
+ if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[0])) {
116
+ throw new Error('ValidateNested decorator 1st argument must be an object literal containing the validation options');
117
+ }
118
+ const existingObjectLiteralExpression = existingCallExpression.arguments[0];
119
+ validationOptions.push(...existingObjectLiteralExpression.properties);
120
+ }
121
+ }
122
+ return validationOptions;
123
+ }
124
+ findDecorator(name, existingModifiers) {
125
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
126
+ }
127
+ filterOtherDecorators(name, existingModifiers) {
128
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
129
+ }
130
+ filterNonDecorators(existingModifiers) {
131
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
132
+ }
133
+ containsIdentifierName(m, identifierName) {
134
+ const callExpression = m.expression;
135
+ const identifier = callExpression.expression;
136
+ return identifier.text === identifierName;
137
+ }
138
+ }
139
+ exports.ValidateNestedDecoratorManager = ValidateNestedDecoratorManager;
140
+ //# sourceMappingURL=ValidateNestedDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidateNestedDecoratorManager.js","sourceRoot":"","sources":["ValidateNestedDecoratorManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import ts, { PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
2
+ import { DecoratorManager, PartialAddFieldChange } from "../../FieldManager";
3
+ import { Change } from "@schematics/angular/utility/change";
4
+ interface ColumnDecoratorOptions {
5
+ isColumn: boolean;
6
+ columnName: string;
7
+ type: string;
8
+ required: boolean;
9
+ otherOptions: Map<string, any>;
10
+ otherOptionExpressions: Map<string, ts.Expression | null>;
11
+ source: ts.SourceFile;
12
+ field: any;
13
+ }
14
+ export declare class ColumnDecoratorManager implements DecoratorManager {
15
+ options: ColumnDecoratorOptions;
16
+ fieldNode?: ts.PropertyDeclaration | undefined;
17
+ constructor(options: ColumnDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
18
+ isApplyDecorator(): boolean;
19
+ decoratorName(): string;
20
+ setFieldNode(fieldNode: ts.PropertyDeclaration): void;
21
+ buildDecorator(): PartialAddFieldChange;
22
+ decoratorImports(): Change[];
23
+ updateDecorator(): [PropertyDeclaration, Change[]];
24
+ private findDecorator;
25
+ private filterOtherDecorators;
26
+ private filterNonDecorators;
27
+ private containsIdentifierName;
28
+ private createColumnDecorator;
29
+ private createColumnDecoratorOptions;
30
+ private optionsToPropertyAssignmentsOrNull;
31
+ private buildColumnDecoratorOptions;
32
+ private buildColumnOptionsCode;
33
+ }
34
+ export {};
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ColumnDecoratorManager = void 0;
7
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
10
+ class ColumnDecoratorManager {
11
+ constructor(options, fieldNode) {
12
+ this.options = options;
13
+ this.fieldNode = fieldNode;
14
+ }
15
+ isApplyDecorator() {
16
+ return this.options.isColumn;
17
+ }
18
+ decoratorName() {
19
+ return 'Column';
20
+ }
21
+ setFieldNode(fieldNode) {
22
+ this.fieldNode = fieldNode;
23
+ }
24
+ buildDecorator() {
25
+ const fieldSourceLines = [];
26
+ const changes = [];
27
+ //Add the Column decorator to the field
28
+ const columnDecoratorLine = `@${this.decoratorName()}(${this.buildColumnOptionsCode()})`;
29
+ fieldSourceLines.push(columnDecoratorLine);
30
+ changes.push(...this.decoratorImports());
31
+ return {
32
+ filePath: this.options.source.fileName,
33
+ field: this.options.field,
34
+ changes: changes,
35
+ fieldSourceLines: fieldSourceLines,
36
+ };
37
+ }
38
+ decoratorImports() {
39
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
40
+ }
41
+ updateDecorator() {
42
+ if (!this.fieldNode)
43
+ throw new Error('Field node is required for updating the index decorator');
44
+ let newModifiers = [];
45
+ let existingModifiers = this.fieldNode.modifiers;
46
+ // Check if the field has an Column decorator.
47
+ const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
48
+ //Remove the column decorator if the column decorator exists
49
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
50
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
51
+ //Add the column decorator if column decorator is required
52
+ const changes = [];
53
+ if (this.isApplyDecorator()) {
54
+ newModifiers = [...newModifiers, this.createColumnDecorator(existingDecorator)];
55
+ changes.push(...this.decoratorImports());
56
+ }
57
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
58
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
59
+ return [updatedProperty, changes];
60
+ }
61
+ findDecorator(name, existingModifiers) {
62
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
63
+ }
64
+ filterOtherDecorators(name, existingModifiers) {
65
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
66
+ }
67
+ filterNonDecorators(existingModifiers) {
68
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
69
+ }
70
+ containsIdentifierName(m, identifierName) {
71
+ const callExpression = m.expression;
72
+ const identifier = callExpression.expression;
73
+ return identifier.text === identifierName;
74
+ }
75
+ createColumnDecorator(existingColumnDecorator) {
76
+ // Capture the existing column decorator options
77
+ let existingColumnDecoratorPropertyAssignments = [];
78
+ if (existingColumnDecorator !== undefined) {
79
+ //Pre-set the column options from the existing column decorator
80
+ const existingCallExpression = existingColumnDecorator.expression;
81
+ // Check if call expression has at least 1 arguments
82
+ if (existingCallExpression.arguments.length > 0) {
83
+ if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[0])) {
84
+ throw new Error('Column decorator 1st arguments must be an object literal containing the column options');
85
+ }
86
+ const existingObjectLiteralExpression = existingCallExpression.arguments[0];
87
+ existingColumnDecoratorPropertyAssignments.push(...existingObjectLiteralExpression.properties);
88
+ }
89
+ }
90
+ // Create the new column decorator options as property assignments, if the option is not null
91
+ const columnDecoratorOptions = this.createColumnDecoratorOptions();
92
+ const newPropertyAssignments = Array.from(columnDecoratorOptions.values()).filter(p => p !== null);
93
+ // console.log('newPropertyAssignments', newPropertyAssignments.map(p => JSON.stringify(p.name)).join(', '));
94
+ // Add the other unhandled column decorator options
95
+ const handledColumnDecoratorOptions = Array.from(columnDecoratorOptions.keys());
96
+ //@ts-ignore
97
+ const otherPropertyAssignments = existingColumnDecoratorPropertyAssignments.filter(ps => { var _a; return !handledColumnDecoratorOptions.includes((_a = ps.name) === null || _a === void 0 ? void 0 : _a.escapedText); });
98
+ newPropertyAssignments.push(...otherPropertyAssignments);
99
+ // Re-create the column decorator with the merged column decorator options
100
+ const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
101
+ const decoratorOptions = typescript_1.default.factory.createObjectLiteralExpression(newPropertyAssignments);
102
+ const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, [decoratorOptions]);
103
+ return typescript_1.default.factory.createDecorator(call);
104
+ }
105
+ createColumnDecoratorOptions() {
106
+ const options = new Map();
107
+ //Set common options
108
+ //TODO Proper types to be used e.g ColumnCommonOptions
109
+ // if (this.field.defaultValue) {
110
+ // options.set('default', this.field.defaultValue);
111
+ // }
112
+ (!lodash_1.default.isEmpty(this.options.columnName)) ? options.set('name', typescript_1.default.factory.createStringLiteral(this.options.columnName)) : options.set('name', null);
113
+ (this.options.type) ? options.set('type', typescript_1.default.factory.createStringLiteral(this.options.type)) : options.set('type', null);
114
+ if (!this.options.required) {
115
+ options.set('nullable', typescript_1.default.factory.createTrue());
116
+ }
117
+ //Set additional options
118
+ this.options.otherOptionExpressions.forEach((value, key) => {
119
+ options.set(key, value);
120
+ });
121
+ return this.optionsToPropertyAssignmentsOrNull(options);
122
+ }
123
+ optionsToPropertyAssignmentsOrNull(options) {
124
+ const decoratorOptions = new Map();
125
+ options.forEach((value, key) => {
126
+ if (value !== null) {
127
+ decoratorOptions.set(key, typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), value));
128
+ }
129
+ else {
130
+ decoratorOptions.set(key, null);
131
+ }
132
+ });
133
+ return decoratorOptions;
134
+ }
135
+ buildColumnDecoratorOptions() {
136
+ const options = new Map();
137
+ //Set common options
138
+ //TODO Proper types to be used e.g ColumnCommonOptions
139
+ // if (this.options.field.defaultValue) {
140
+ // options.set('default', this.options.field.defaultValue);
141
+ // }
142
+ if (!lodash_1.default.isEmpty(this.options.columnName)) {
143
+ options.set('name', `${this.options.columnName}`);
144
+ }
145
+ if (!lodash_1.default.isEmpty(this.options.type)) {
146
+ options.set('type', `${this.options.type}`);
147
+ }
148
+ if (!this.options.required) {
149
+ options.set('nullable', true);
150
+ }
151
+ // Set some keys as null, to indicate they are handled i.e they will be removed & recreated, if required
152
+ //Handled keys
153
+ // options.set('length', null) //TODO Can be improved, since handled keys needs to be managed in this decorator. Ideally it should be managed in the corresponding field
154
+ //Set additional options
155
+ this.options.otherOptions.forEach((value, key) => {
156
+ options.set(key, value);
157
+ });
158
+ return options;
159
+ }
160
+ buildColumnOptionsCode() {
161
+ const options = this.buildColumnDecoratorOptions();
162
+ const keys = Array.from(options.keys());
163
+ const optionsString = keys
164
+ .filter((key) => options.get(key) !== null)
165
+ .map((key) => {
166
+ if (typeof options.get(key) === 'string') {
167
+ return `${key}: "${options.get(key)}"`;
168
+ }
169
+ else {
170
+ return `${key}: ${options.get(key)}`;
171
+ }
172
+ })
173
+ .join(', ');
174
+ return `{ ${optionsString} }`;
175
+ }
176
+ }
177
+ exports.ColumnDecoratorManager = ColumnDecoratorManager;
178
+ //# sourceMappingURL=ColumnDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnDecoratorManager.js","sourceRoot":"","sources":["ColumnDecoratorManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import ts, { PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
2
+ import { DecoratorManager, PartialAddFieldChange } from "../../FieldManager";
3
+ import { Change } from "@schematics/angular/utility/change";
4
+ interface IndexDecoratorOptions {
5
+ index: boolean;
6
+ source: ts.SourceFile;
7
+ field: any;
8
+ }
9
+ export declare class IndexDecoratorManager implements DecoratorManager {
10
+ options: IndexDecoratorOptions;
11
+ fieldNode?: ts.PropertyDeclaration | undefined;
12
+ constructor(options: IndexDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
13
+ isApplyDecorator(): boolean;
14
+ decoratorName(): string;
15
+ setFieldNode(fieldNode: ts.PropertyDeclaration): void;
16
+ buildDecorator(): PartialAddFieldChange;
17
+ decoratorImports(): Change[];
18
+ updateDecorator(): [PropertyDeclaration, Change[]];
19
+ private createIndexDecorator;
20
+ private filterOtherDecorators;
21
+ private filterNonDecorators;
22
+ private containsIdentifierName;
23
+ }
24
+ export {};
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IndexDecoratorManager = void 0;
7
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
8
+ const FieldManager_1 = require("../../FieldManager");
9
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
10
+ class IndexDecoratorManager {
11
+ constructor(options, fieldNode) {
12
+ this.options = options;
13
+ this.fieldNode = fieldNode;
14
+ }
15
+ isApplyDecorator() {
16
+ return this.options.index && this.options.field.relationType !== FieldManager_1.RelationType.ManyToMany;
17
+ }
18
+ decoratorName() {
19
+ return 'Index';
20
+ }
21
+ setFieldNode(fieldNode) {
22
+ this.fieldNode = fieldNode;
23
+ }
24
+ buildDecorator() {
25
+ const fieldSourceLines = [];
26
+ const changes = [];
27
+ // if (this.field.index) {
28
+ const indexDecoratorLine = `@Index()`;
29
+ fieldSourceLines.push(indexDecoratorLine);
30
+ changes.push(...this.decoratorImports());
31
+ // }
32
+ return {
33
+ filePath: this.options.source.fileName,
34
+ field: this.options.field,
35
+ changes: changes,
36
+ fieldSourceLines: fieldSourceLines,
37
+ };
38
+ }
39
+ decoratorImports() {
40
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
41
+ }
42
+ //Updates the index decorator for the fieldNode based on the options provided
43
+ // @returns the updated property declaration
44
+ updateDecorator() {
45
+ if (!this.fieldNode)
46
+ throw new Error('Field node is required for updating the index decorator');
47
+ let newModifiers = [];
48
+ let existingModifiers = this.fieldNode.modifiers;
49
+ //Remove the Index decorator if the Index decorator exists
50
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
51
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
52
+ //Add the column decorator if column decorator is required
53
+ const changes = [];
54
+ if (this.isApplyDecorator()) {
55
+ newModifiers = [...newModifiers, this.createIndexDecorator()];
56
+ changes.push(...this.decoratorImports());
57
+ }
58
+ //If index decorator is present & index is required, no need to update the index decorator
59
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //newModifiers contains the updated index decorator
60
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
61
+ return [updatedProperty, changes];
62
+ }
63
+ createIndexDecorator() {
64
+ return typescript_1.default.factory.createDecorator(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier('Index'), undefined, []));
65
+ }
66
+ filterOtherDecorators(name, existingModifiers) {
67
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
68
+ }
69
+ filterNonDecorators(existingModifiers) {
70
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
71
+ }
72
+ containsIdentifierName(m, identifierName) {
73
+ const callExpression = m.expression;
74
+ const identifier = callExpression.expression;
75
+ return identifier.text === identifierName;
76
+ }
77
+ }
78
+ exports.IndexDecoratorManager = IndexDecoratorManager;
79
+ //# sourceMappingURL=IndexDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexDecoratorManager.js","sourceRoot":"","sources":["IndexDecoratorManager.ts"],"names":[],"mappings":"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"}