@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
@@ -13,7 +13,7 @@ export class IndexDecoratorManager implements DecoratorManager {
13
13
 
14
14
  constructor(public options: IndexDecoratorOptions, public fieldNode?: PropertyDeclaration) { }
15
15
  isApplyDecorator(): boolean {
16
- return this.options.index && this.options.field.relationType !== RelationType.ManyToMany;
16
+ return this.options.index && this.options.field.relationType !== RelationType.ManyToMany && this.options.field.relationType !== RelationType.OneToMany;
17
17
  }
18
18
  decoratorName(): string {
19
19
  return 'Index';
@@ -0,0 +1,29 @@
1
+ import ts, { PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
2
+ import { Change } from "@schematics/angular/utility/change";
3
+ import { DecoratorManager, PartialAddFieldChange } from "../../FieldManager";
4
+ interface JoinTableDecoratorOptions {
5
+ isManyToManyRelationOwner: boolean;
6
+ source: ts.SourceFile;
7
+ field: any;
8
+ fieldName: string;
9
+ modelName: string;
10
+ }
11
+ export declare class JoinTableDecoratorManager implements DecoratorManager {
12
+ options: JoinTableDecoratorOptions;
13
+ fieldNode?: ts.PropertyDeclaration | undefined;
14
+ constructor(options: JoinTableDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
15
+ isApplyDecorator(): boolean;
16
+ decoratorName(): string;
17
+ buildDecorator(): PartialAddFieldChange;
18
+ decoratorImports(): Change[];
19
+ setFieldNode(fieldNode: PropertyDeclaration): void;
20
+ updateDecorator(): [PropertyDeclaration, Change[]];
21
+ private createDecorator;
22
+ private createDecoratorArguments;
23
+ private existingDecoratorOptions;
24
+ private findDecorator;
25
+ private filterOtherDecorators;
26
+ private filterNonDecorators;
27
+ private containsIdentifierName;
28
+ }
29
+ export {};
@@ -0,0 +1,118 @@
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.JoinTableDecoratorManager = 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 JoinTableDecoratorManager {
10
+ constructor(options, fieldNode) {
11
+ this.options = options;
12
+ this.fieldNode = fieldNode;
13
+ }
14
+ isApplyDecorator() {
15
+ return this.options.isManyToManyRelationOwner;
16
+ }
17
+ decoratorName() {
18
+ return 'JoinTable';
19
+ }
20
+ buildDecorator() {
21
+ const changes = [];
22
+ const fieldSourceLines = [];
23
+ // Add the many-to-many import
24
+ // const decoratorImport = insertImport(
25
+ // this.options.source,
26
+ // this.options.source.fileName,
27
+ // this.decoratorName(),
28
+ // 'typeorm',
29
+ // );
30
+ // if (decoratorImport) {
31
+ // changes.push(decoratorImport);
32
+ // }
33
+ fieldSourceLines.push(`@${this.decoratorName()}()`);
34
+ changes.push(...this.decoratorImports());
35
+ return {
36
+ filePath: this.options.source.fileName,
37
+ field: this.options.field,
38
+ changes: changes,
39
+ fieldSourceLines: fieldSourceLines,
40
+ };
41
+ }
42
+ decoratorImports() {
43
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
44
+ }
45
+ setFieldNode(fieldNode) {
46
+ this.fieldNode = fieldNode;
47
+ }
48
+ updateDecorator() {
49
+ // Check if the field property declaration exists, if not throw an error
50
+ if (!this.fieldNode)
51
+ throw new Error('Field node is required for updating the one to many decorator');
52
+ let newModifiers = [];
53
+ let existingModifiers = this.fieldNode.modifiers;
54
+ // Check if field has an existing one-to-many relation decorator
55
+ const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
56
+ //Remove the many-to-one decorator if it exists
57
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
58
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
59
+ //Add the one-to-many decorator if it is required
60
+ const changes = [];
61
+ if (this.isApplyDecorator()) {
62
+ newModifiers = [...newModifiers, this.createDecorator(existingDecorator)];
63
+ changes.push(...this.decoratorImports());
64
+ }
65
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
66
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
67
+ return [updatedProperty, changes];
68
+ }
69
+ createDecorator(existingDecorator) {
70
+ let existingRelationOptions = this.existingDecoratorOptions(existingDecorator);
71
+ // const mergedRelationOptions: ObjectLiteralElementLike[] = this.mergeNewAndExistingDecoratorOptions(existingRelationOptions);
72
+ // Re-create the decorator with the merged decorator options
73
+ const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
74
+ const argumentsArray = this.createDecoratorArguments(existingRelationOptions);
75
+ const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, argumentsArray);
76
+ return typescript_1.default.factory.createDecorator(call);
77
+ }
78
+ createDecoratorArguments(joinTableOptions) {
79
+ const argumentsArray = [];
80
+ if (joinTableOptions.length > 0) {
81
+ const validationOptionsObjectLiteral = typescript_1.default.factory.createObjectLiteralExpression(joinTableOptions);
82
+ argumentsArray.push(validationOptionsObjectLiteral);
83
+ }
84
+ return argumentsArray;
85
+ }
86
+ existingDecoratorOptions(existingDecorator) {
87
+ let existingDecoratorPropertyAssignments = [];
88
+ if (existingDecorator !== undefined) {
89
+ //Pre-set the relation options from the existing relation decorator
90
+ const existingCallExpression = existingDecorator.expression;
91
+ // Check if call expression has at least 1 arguments
92
+ if (existingCallExpression.arguments.length > 0) { //Because we are interested in the 1st argument, we check for length > 0
93
+ if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[0])) {
94
+ throw new Error('JoinTable decorator 1st argument must be an object literal containing the joinTable options');
95
+ }
96
+ const existingObjectLiteralExpression = existingCallExpression.arguments[0];
97
+ existingDecoratorPropertyAssignments.push(...existingObjectLiteralExpression.properties);
98
+ }
99
+ }
100
+ return existingDecoratorPropertyAssignments;
101
+ }
102
+ findDecorator(name, existingModifiers) {
103
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
104
+ }
105
+ filterOtherDecorators(name, existingModifiers) {
106
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
107
+ }
108
+ filterNonDecorators(existingModifiers) {
109
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
110
+ }
111
+ containsIdentifierName(m, identifierName) {
112
+ const callExpression = m.expression;
113
+ const identifier = callExpression.expression;
114
+ return identifier.text === identifierName;
115
+ }
116
+ }
117
+ exports.JoinTableDecoratorManager = JoinTableDecoratorManager;
118
+ //# sourceMappingURL=JoinTableDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JoinTableDecoratorManager.js","sourceRoot":"","sources":["JoinTableDecoratorManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import ts, { PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
2
+ import { Change } from "@schematics/angular/utility/change";
3
+ import { DecoratorManager, DeleteType, PartialAddFieldChange } from "../../FieldManager";
4
+ interface ManyToManyDecoratorOptions {
5
+ isManyToMany: boolean;
6
+ relationModelName: string;
7
+ relationInverseFieldName: string;
8
+ relationCascade: DeleteType;
9
+ owner: boolean;
10
+ source: ts.SourceFile;
11
+ field: any;
12
+ fieldName: string;
13
+ modelName: string;
14
+ }
15
+ export declare class ManyToManyDecoratorManager implements DecoratorManager {
16
+ options: ManyToManyDecoratorOptions;
17
+ fieldNode?: ts.PropertyDeclaration | undefined;
18
+ constructor(options: ManyToManyDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
19
+ isApplyDecorator(): boolean;
20
+ decoratorName(): string;
21
+ buildDecorator(): PartialAddFieldChange;
22
+ setFieldNode(fieldNode: PropertyDeclaration): void;
23
+ decoratorImports(): Change[];
24
+ updateDecorator(): [PropertyDeclaration, Change[]];
25
+ private buildRelationOptionsCode;
26
+ private createRelationDecorator;
27
+ private mergeNewAndExistingDecoratorOptions;
28
+ private createDecoratorArguments;
29
+ private existingDecoratorOptions;
30
+ private createRelationDecoratorOptions;
31
+ private optionsToPropertyAssignmentsOrNull;
32
+ private findDecorator;
33
+ private filterOtherDecorators;
34
+ private filterNonDecorators;
35
+ private containsIdentifierName;
36
+ }
37
+ export {};
@@ -0,0 +1,175 @@
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.ManyToManyDecoratorManager = void 0;
7
+ const strings_1 = require("@angular-devkit/core/src/utils/strings");
8
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
9
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
10
+ class ManyToManyDecoratorManager {
11
+ constructor(options, fieldNode) {
12
+ this.options = options;
13
+ this.fieldNode = fieldNode;
14
+ }
15
+ isApplyDecorator() {
16
+ return this.options.isManyToMany;
17
+ }
18
+ decoratorName() {
19
+ return 'ManyToMany';
20
+ }
21
+ buildDecorator() {
22
+ const changes = [];
23
+ const fieldSourceLines = [];
24
+ // Add the many-to-many import
25
+ // const decoratorImport = insertImport(
26
+ // this.options.source,
27
+ // this.options.source.fileName,
28
+ // this.decoratorName(),
29
+ // 'typeorm',
30
+ // );
31
+ changes.push(...this.decoratorImports());
32
+ // if (decoratorImport) {
33
+ // changes.push(decoratorImport);
34
+ // }
35
+ const fieldSourceLineComponents = [];
36
+ fieldSourceLineComponents.push(`() => ${(0, strings_1.classify)(this.options.relationModelName)}`);
37
+ this.options.relationInverseFieldName ? fieldSourceLineComponents.push(`${(0, strings_1.camelize)(this.options.relationModelName)} => ${(0, strings_1.camelize)(this.options.relationModelName)}.${this.options.relationInverseFieldName}`) : "no-ops";
38
+ fieldSourceLineComponents.push(`${this.buildRelationOptionsCode()}`);
39
+ fieldSourceLines.push(`@${this.decoratorName()}(${fieldSourceLineComponents.join(', ')})`);
40
+ return {
41
+ filePath: this.options.source.fileName,
42
+ field: this.options.field,
43
+ changes: changes,
44
+ fieldSourceLines: fieldSourceLines,
45
+ };
46
+ }
47
+ setFieldNode(fieldNode) {
48
+ this.fieldNode = fieldNode;
49
+ }
50
+ decoratorImports() {
51
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
52
+ }
53
+ updateDecorator() {
54
+ // Check if the field property declaration exists, if not throw an error
55
+ if (!this.fieldNode)
56
+ throw new Error('Field node is required for updating the one to many decorator');
57
+ let newModifiers = [];
58
+ let existingModifiers = this.fieldNode.modifiers;
59
+ // Check if field has an existing one-to-many relation decorator
60
+ const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
61
+ //Remove the many-to-one decorator if it exists
62
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
63
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
64
+ //Add the one-to-many decorator if it is required
65
+ const changes = [];
66
+ if (this.isApplyDecorator()) {
67
+ newModifiers = [...newModifiers, this.createRelationDecorator(existingDecorator)];
68
+ changes.push(...this.decoratorImports());
69
+ }
70
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
71
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
72
+ return [updatedProperty, changes];
73
+ }
74
+ buildRelationOptionsCode() {
75
+ const relationOptions = new Map();
76
+ // this.options.owner ? relationOptions.set('cascade', true): "no-ops";
77
+ this.options.owner ? relationOptions.set('cascade', true) : relationOptions.set('cascade', ['insert', 'update']);
78
+ const decoratorArgs = Array.from(relationOptions)
79
+ .map(([key, value]) => {
80
+ if (Array.isArray(value)) {
81
+ return `${key}: [${value.map(v => `'${v}'`).join(', ')}]`;
82
+ }
83
+ return `${key}: ${value}`;
84
+ })
85
+ .join(', ');
86
+ // Convert the map to a string
87
+ return `{ ${decoratorArgs} }`;
88
+ }
89
+ createRelationDecorator(existingRelationDecorator) {
90
+ let existingRelationOptions = this.existingDecoratorOptions(existingRelationDecorator);
91
+ const mergedRelationOptions = this.mergeNewAndExistingDecoratorOptions(existingRelationOptions);
92
+ // Re-create the decorator with the merged decorator options
93
+ const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
94
+ const argumentsArray = this.createDecoratorArguments(mergedRelationOptions);
95
+ const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, argumentsArray);
96
+ return typescript_1.default.factory.createDecorator(call);
97
+ }
98
+ mergeNewAndExistingDecoratorOptions(existingRelationOptions) {
99
+ const decoratorOptions = this.createRelationDecoratorOptions();
100
+ const newPropertyAssignments = Array.from(decoratorOptions.values()).filter(p => p !== null);
101
+ // console.log('newPropertyAssignments', newPropertyAssignments.map(p => JSON.stringify(p.name)).join(', '));
102
+ // Add the other unhandled column decorator options
103
+ const handledDecoratorOptions = Array.from(decoratorOptions.keys());
104
+ //@ts-ignore
105
+ const otherPropertyAssignments = existingRelationOptions.filter(ps => { var _a; return !handledDecoratorOptions.includes((_a = ps.name) === null || _a === void 0 ? void 0 : _a.escapedText); });
106
+ newPropertyAssignments.push(...otherPropertyAssignments);
107
+ return newPropertyAssignments;
108
+ }
109
+ createDecoratorArguments(newPropertyAssignments) {
110
+ const argumentsArray = [];
111
+ // 1st Argument: Target
112
+ const typeFunctionOrTarget = typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createIdentifier((0, strings_1.classify)(this.options.relationModelName)));
113
+ argumentsArray.push(typeFunctionOrTarget);
114
+ if (this.options.relationInverseFieldName) {
115
+ // 2nd Argument: Inverse side
116
+ const inverseSide = typescript_1.default.factory.createArrowFunction(undefined, undefined, [typescript_1.default.factory.createParameterDeclaration(undefined, undefined, typescript_1.default.factory.createIdentifier((0, strings_1.camelize)(this.options.relationModelName)), undefined, undefined, undefined)], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createPropertyAccessExpression(typescript_1.default.factory.createIdentifier((0, strings_1.camelize)(this.options.relationModelName)), typescript_1.default.factory.createIdentifier(this.options.relationInverseFieldName)));
117
+ argumentsArray.push(inverseSide);
118
+ }
119
+ // 3rd Argument: Options. This argument is optional
120
+ if (newPropertyAssignments.length > 0) {
121
+ const decoratorOptions = typescript_1.default.factory.createObjectLiteralExpression(newPropertyAssignments);
122
+ argumentsArray.push(decoratorOptions);
123
+ }
124
+ return argumentsArray;
125
+ }
126
+ existingDecoratorOptions(existingRelationDecorator) {
127
+ let existingRelationDecoratorPropertyAssignments = [];
128
+ if (existingRelationDecorator !== undefined) {
129
+ //Pre-set the relation options from the existing relation decorator
130
+ const existingCallExpression = existingRelationDecorator.expression;
131
+ // Check if call expression has at least 1 arguments
132
+ if (existingCallExpression.arguments.length > 2) { //Because we are interested in the 2nd argument, we check for length > 1
133
+ if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[2])) {
134
+ throw new Error('Many-to-Many decorator 3rd argument must be an object literal containing the relation options');
135
+ }
136
+ const existingObjectLiteralExpression = existingCallExpression.arguments[2];
137
+ existingRelationDecoratorPropertyAssignments.push(...existingObjectLiteralExpression.properties);
138
+ }
139
+ }
140
+ return existingRelationDecoratorPropertyAssignments;
141
+ }
142
+ createRelationDecoratorOptions() {
143
+ const relationOptions = new Map();
144
+ this.options.owner ? relationOptions.set('cascade', typescript_1.default.factory.createTrue()) : "no-ops";
145
+ return this.optionsToPropertyAssignmentsOrNull(relationOptions);
146
+ }
147
+ optionsToPropertyAssignmentsOrNull(options) {
148
+ const decoratorOptions = new Map();
149
+ options.forEach((value, key) => {
150
+ if (value !== null) {
151
+ decoratorOptions.set(key, typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), value));
152
+ }
153
+ else {
154
+ decoratorOptions.set(key, null);
155
+ }
156
+ });
157
+ return decoratorOptions;
158
+ }
159
+ findDecorator(name, existingModifiers) {
160
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
161
+ }
162
+ filterOtherDecorators(name, existingModifiers) {
163
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
164
+ }
165
+ filterNonDecorators(existingModifiers) {
166
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
167
+ }
168
+ containsIdentifierName(m, identifierName) {
169
+ const callExpression = m.expression;
170
+ const identifier = callExpression.expression;
171
+ return identifier.text === identifierName;
172
+ }
173
+ }
174
+ exports.ManyToManyDecoratorManager = ManyToManyDecoratorManager;
175
+ //# sourceMappingURL=ManyToManyDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManyToManyDecoratorManager.js","sourceRoot":"","sources":["ManyToManyDecoratorManager.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 { Change } from "@schematics/angular/utility/change";
3
+ import { DecoratorManager, DeleteType, PartialAddFieldChange } from "../../FieldManager";
4
+ interface ManyToOneDecoratorOptions {
5
+ isManyToOne: boolean;
6
+ relationModelSingularName: string;
7
+ relationCascade: DeleteType;
8
+ required: boolean;
9
+ source: ts.SourceFile;
10
+ field: any;
11
+ fieldName: string;
12
+ modelName: string;
13
+ }
14
+ export declare class ManyToOneDecoratorManager implements DecoratorManager {
15
+ options: ManyToOneDecoratorOptions;
16
+ fieldNode?: ts.PropertyDeclaration | undefined;
17
+ constructor(options: ManyToOneDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
18
+ isApplyDecorator(): boolean;
19
+ decoratorName(): string;
20
+ buildDecorator(): PartialAddFieldChange;
21
+ setFieldNode(fieldNode: PropertyDeclaration): void;
22
+ decoratorImports(): Change[];
23
+ updateDecorator(): [PropertyDeclaration, Change[]];
24
+ private buildRelationOptionsCode;
25
+ private buildRelationDecoratorOptions;
26
+ private createRelationDecorator;
27
+ private createRelationDecoratorOptions;
28
+ private optionsToPropertyAssignmentsOrNull;
29
+ private findDecorator;
30
+ private filterOtherDecorators;
31
+ private filterNonDecorators;
32
+ private containsIdentifierName;
33
+ }
34
+ export {};
@@ -0,0 +1,179 @@
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.ManyToOneDecoratorManager = void 0;
7
+ const strings_1 = require("@angular-devkit/core/src/utils/strings");
8
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
9
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ class ManyToOneDecoratorManager {
12
+ constructor(options, fieldNode) {
13
+ this.options = options;
14
+ this.fieldNode = fieldNode;
15
+ }
16
+ isApplyDecorator() {
17
+ return this.options.isManyToOne;
18
+ }
19
+ decoratorName() {
20
+ return 'ManyToOne';
21
+ }
22
+ buildDecorator() {
23
+ const changes = [];
24
+ const fieldSourceLines = [];
25
+ // Add the ManyToOne import
26
+ // const relationImports = insertImport(
27
+ // this.options.source,
28
+ // this.options.source.fileName,
29
+ // this.decoratorName(),
30
+ // 'typeorm',
31
+ // );
32
+ // if (relationImports) {
33
+ // changes.push(relationImports);
34
+ // }
35
+ // Add the relation decorator
36
+ fieldSourceLines.push(`@${this.decoratorName()}(() => ${(0, strings_1.classify)(this.options.relationModelSingularName)}, ${this.buildRelationOptionsCode()})`);
37
+ changes.push(...this.decoratorImports());
38
+ return {
39
+ filePath: this.options.source.fileName,
40
+ field: this.options.field,
41
+ changes: changes,
42
+ fieldSourceLines: fieldSourceLines,
43
+ };
44
+ }
45
+ setFieldNode(fieldNode) {
46
+ this.fieldNode = fieldNode;
47
+ }
48
+ decoratorImports() {
49
+ return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
50
+ }
51
+ updateDecorator() {
52
+ // Check if the field property declaration exists, if not throw an error
53
+ if (!this.fieldNode)
54
+ throw new Error('Field node is required for updating the index decorator');
55
+ let newModifiers = [];
56
+ let existingModifiers = this.fieldNode.modifiers;
57
+ // Check if field has an existing many-to-one relation decorator
58
+ const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
59
+ //Remove the many-to-one decorator if it exists
60
+ //TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
61
+ newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
62
+ //Add the many-to-one decorator if it is required
63
+ const changes = [];
64
+ if (this.isApplyDecorator()) {
65
+ newModifiers = [...newModifiers, this.createRelationDecorator(existingDecorator)];
66
+ changes.push(...this.decoratorImports());
67
+ }
68
+ const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
69
+ this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
70
+ return [updatedProperty, changes];
71
+ }
72
+ buildRelationOptionsCode() {
73
+ const options = this.buildRelationDecoratorOptions();
74
+ const keys = Array.from(options.keys());
75
+ const optionsString = keys
76
+ .filter((key) => options.get(key) !== null)
77
+ .map((key) => {
78
+ if (typeof options.get(key) === 'string') {
79
+ return `${key}: "${options.get(key)}"`;
80
+ }
81
+ else {
82
+ return `${key}: ${options.get(key)}`;
83
+ }
84
+ })
85
+ .join(', ');
86
+ return `{ ${optionsString} }`;
87
+ }
88
+ buildRelationDecoratorOptions() {
89
+ const options = new Map();
90
+ //Set common options
91
+ // onDelete option
92
+ if (!lodash_1.default.isEmpty(this.options.relationCascade)) {
93
+ const cascade = this.options.relationCascade.toUpperCase();
94
+ const onDeleteType = cascade;
95
+ options.set('onDelete', onDeleteType);
96
+ }
97
+ // nullable option
98
+ if (!this.options.required) {
99
+ options.set('nullable', true);
100
+ }
101
+ else {
102
+ options.set('nullable', false);
103
+ }
104
+ return options;
105
+ }
106
+ createRelationDecorator(existingRelationDecorator) {
107
+ // console.log('createRelationDecorator called with ....', existingRelationDecorator?.getText());
108
+ // Capture the existing relation decorator options
109
+ let existingRelationDecoratorPropertyAssignments = [];
110
+ if (existingRelationDecorator !== undefined) {
111
+ //Pre-set the relation options from the existing relation decorator
112
+ const existingCallExpression = existingRelationDecorator.expression;
113
+ // Check if call expression has at least 1 arguments
114
+ if (existingCallExpression.arguments.length > 1) { //Because we are interested in the 2nd argument, we check for length > 1
115
+ if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[1])) {
116
+ throw new Error('ManyToOne decorator 2nd arguments must be an object literal containing the relation options');
117
+ }
118
+ const existingObjectLiteralExpression = existingCallExpression.arguments[1];
119
+ existingRelationDecoratorPropertyAssignments.push(...existingObjectLiteralExpression.properties);
120
+ }
121
+ }
122
+ // Create the new relation decorator options
123
+ const decoratorOptions = this.createRelationDecoratorOptions();
124
+ const newPropertyAssignments = Array.from(decoratorOptions.values()).filter(p => p !== null);
125
+ // console.log('newPropertyAssignments', newPropertyAssignments.map(p => JSON.stringify(p.name)).join(', '));
126
+ // Add the other unhandled column decorator options
127
+ const handledDecoratorOptions = Array.from(decoratorOptions.keys());
128
+ //@ts-ignore
129
+ const otherPropertyAssignments = existingRelationDecoratorPropertyAssignments.filter(ps => { var _a; return !handledDecoratorOptions.includes((_a = ps.name) === null || _a === void 0 ? void 0 : _a.escapedText); });
130
+ newPropertyAssignments.push(...otherPropertyAssignments);
131
+ // Re-create the relation decorator with the merged relation decorator options
132
+ const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
133
+ const typeFunctionOrTarget = typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.EqualsGreaterThanToken), typescript_1.default.factory.createIdentifier((0, strings_1.classify)(this.options.relationModelSingularName)));
134
+ const decoratorOptionsExpression = typescript_1.default.factory.createObjectLiteralExpression(newPropertyAssignments);
135
+ const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, [typeFunctionOrTarget, decoratorOptionsExpression]);
136
+ return typescript_1.default.factory.createDecorator(call);
137
+ }
138
+ createRelationDecoratorOptions() {
139
+ const options = new Map();
140
+ const cascade = this.options.relationCascade.toUpperCase();
141
+ const onDeleteType = cascade;
142
+ options.set('onDelete', typescript_1.default.factory.createStringLiteral(onDeleteType));
143
+ if (!this.options.required) {
144
+ options.set('nullable', typescript_1.default.factory.createTrue());
145
+ }
146
+ else {
147
+ options.set('nullable', typescript_1.default.factory.createFalse());
148
+ }
149
+ return this.optionsToPropertyAssignmentsOrNull(options);
150
+ }
151
+ optionsToPropertyAssignmentsOrNull(options) {
152
+ const decoratorOptions = new Map();
153
+ options.forEach((value, key) => {
154
+ if (value !== null) {
155
+ decoratorOptions.set(key, typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), value));
156
+ }
157
+ else {
158
+ decoratorOptions.set(key, null);
159
+ }
160
+ });
161
+ return decoratorOptions;
162
+ }
163
+ findDecorator(name, existingModifiers) {
164
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
165
+ }
166
+ filterOtherDecorators(name, existingModifiers) {
167
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
168
+ }
169
+ filterNonDecorators(existingModifiers) {
170
+ return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
171
+ }
172
+ containsIdentifierName(m, identifierName) {
173
+ const callExpression = m.expression;
174
+ const identifier = callExpression.expression;
175
+ return identifier.text === identifierName;
176
+ }
177
+ }
178
+ exports.ManyToOneDecoratorManager = ManyToOneDecoratorManager;
179
+ //# sourceMappingURL=ManyToOneDecoratorManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManyToOneDecoratorManager.js","sourceRoot":"","sources":["ManyToOneDecoratorManager.ts"],"names":[],"mappings":"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"}