@solidstarters/solid-code-builder 1.0.10 → 1.0.11
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.
- package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +8 -9
- package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js.map +1 -1
- package/package.json +1 -1
- package/src/code-builder/index.d.ts +9 -0
- package/src/code-builder/index.js +178 -0
- package/src/code-builder/index.js.map +1 -0
- package/src/code-builder/index_spec.d.ts +1 -0
- package/src/code-builder/index_spec.js +46 -0
- package/src/code-builder/index_spec.js.map +1 -0
- package/src/code-builder/lib/field/FieldManager.d.ts +106 -0
- package/src/code-builder/lib/field/FieldManager.js +236 -0
- package/src/code-builder/lib/field/FieldManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.d.ts +26 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js +107 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js +100 -0
- package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js +102 -0
- package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js +106 -0
- package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js +112 -0
- package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js +99 -0
- package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js +100 -0
- package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js +100 -0
- package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js +104 -0
- package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js +103 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js +103 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js +102 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js +103 -0
- package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js +112 -0
- package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.d.ts +26 -0
- package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js +104 -0
- package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js +102 -0
- package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js +100 -0
- package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js +99 -0
- package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.d.ts +25 -0
- package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js +102 -0
- package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.d.ts +30 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js +140 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.d.ts +34 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js +178 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.d.ts +24 -0
- package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +79 -0
- package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.d.ts +29 -0
- package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js +118 -0
- package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.d.ts +37 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js +175 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.d.ts +34 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +179 -0
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.d.ts +33 -0
- package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js +155 -0
- package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.d.ts +31 -0
- package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +174 -0
- package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js.map +1 -0
- package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.ts +8 -9
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.d.ts +51 -0
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +345 -0
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.d.ts +58 -0
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +373 -0
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/base/DeleteType.d.ts +6 -0
- package/src/code-builder/lib/field/field-managers/base/DeleteType.js +11 -0
- package/src/code-builder/lib/field/field-managers/base/DeleteType.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.d.ts +23 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js +81 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +55 -0
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js +75 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +51 -0
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +30 -0
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.d.ts +11 -0
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +33 -0
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js +81 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +59 -0
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js +77 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +53 -0
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js +72 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.d.ts +12 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +44 -0
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js +76 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +52 -0
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.d.ts +20 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js +57 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.d.ts +9 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +21 -0
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js +63 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.d.ts +11 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +34 -0
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.d.ts +23 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js +72 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.d.ts +12 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js +57 -0
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js +27 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.d.ts +24 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js +75 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.d.ts +12 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js +35 -0
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.d.ts +29 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js +121 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.d.ts +11 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +37 -0
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.d.ts +51 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +366 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.d.ts +30 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +158 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.d.ts +13 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +33 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.d.ts +43 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +294 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.d.ts +31 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +177 -0
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js +63 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.d.ts +11 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +34 -0
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.d.ts +22 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js +63 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.d.ts +11 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +37 -0
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.d.ts +14 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +34 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.d.ts +8 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js +15 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js.map +1 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.d.ts +11 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +33 -0
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js.map +1 -0
- package/src/code-builder/lib/model/helpers.d.ts +49 -0
- package/src/code-builder/lib/model/helpers.js +407 -0
- package/src/code-builder/lib/model/helpers.js.map +1 -0
|
@@ -0,0 +1,33 @@
|
|
|
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 OneToManyDecoratorOptions {
|
|
5
|
+
isOneToMany: boolean;
|
|
6
|
+
relationCascade: DeleteType;
|
|
7
|
+
source: ts.SourceFile;
|
|
8
|
+
field: any;
|
|
9
|
+
fieldName: string;
|
|
10
|
+
modelName: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class OneToManyDecoratorManager implements DecoratorManager {
|
|
13
|
+
options: OneToManyDecoratorOptions;
|
|
14
|
+
fieldNode?: ts.PropertyDeclaration | undefined;
|
|
15
|
+
constructor(options: OneToManyDecoratorOptions, fieldNode?: ts.PropertyDeclaration | undefined);
|
|
16
|
+
isApplyDecorator(): boolean;
|
|
17
|
+
decoratorName(): string;
|
|
18
|
+
buildDecorator(): PartialAddFieldChange;
|
|
19
|
+
setFieldNode(fieldNode: PropertyDeclaration): void;
|
|
20
|
+
decoratorImports(): Change[];
|
|
21
|
+
updateDecorator(): [PropertyDeclaration, Change[]];
|
|
22
|
+
private buildRelationOptionsCode;
|
|
23
|
+
private createRelationDecorator;
|
|
24
|
+
private createDecoratorArguments;
|
|
25
|
+
private existingDecoratorOptions;
|
|
26
|
+
private createRelationDecoratorOptions;
|
|
27
|
+
private optionsToPropertyAssignmentsOrNull;
|
|
28
|
+
private findDecorator;
|
|
29
|
+
private filterOtherDecorators;
|
|
30
|
+
private filterNonDecorators;
|
|
31
|
+
private containsIdentifierName;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,155 @@
|
|
|
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.OneToManyDecoratorManager = 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 OneToManyDecoratorManager {
|
|
11
|
+
constructor(options, fieldNode) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
this.fieldNode = fieldNode;
|
|
14
|
+
}
|
|
15
|
+
isApplyDecorator() {
|
|
16
|
+
return this.options.isOneToMany;
|
|
17
|
+
}
|
|
18
|
+
decoratorName() {
|
|
19
|
+
return 'OneToMany';
|
|
20
|
+
}
|
|
21
|
+
buildDecorator() {
|
|
22
|
+
const changes = [];
|
|
23
|
+
const fieldSourceLines = [];
|
|
24
|
+
// Add the one-to-many import
|
|
25
|
+
// const oneToManyImport = insertImport(
|
|
26
|
+
// this.options.source,
|
|
27
|
+
// this.options.source.fileName,
|
|
28
|
+
// this.decoratorName(),
|
|
29
|
+
// 'typeorm',
|
|
30
|
+
// );
|
|
31
|
+
// if (oneToManyImport) {
|
|
32
|
+
// changes.push(oneToManyImport);
|
|
33
|
+
// }
|
|
34
|
+
fieldSourceLines.push(`@${this.decoratorName()}(() => ${(0, strings_1.classify)(this.options.modelName)}, ${(0, strings_1.camelize)(this.options.modelName)} => ${(0, strings_1.camelize)(this.options.modelName)}.${this.options.fieldName}, ${this.buildRelationOptionsCode()})`);
|
|
35
|
+
changes.push(...this.decoratorImports());
|
|
36
|
+
return {
|
|
37
|
+
filePath: this.options.source.fileName,
|
|
38
|
+
field: this.options.field,
|
|
39
|
+
changes: changes,
|
|
40
|
+
fieldSourceLines: fieldSourceLines,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
setFieldNode(fieldNode) {
|
|
44
|
+
this.fieldNode = fieldNode;
|
|
45
|
+
}
|
|
46
|
+
decoratorImports() {
|
|
47
|
+
return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
|
|
48
|
+
}
|
|
49
|
+
updateDecorator() {
|
|
50
|
+
// Check if the field property declaration exists, if not throw an error
|
|
51
|
+
if (!this.fieldNode)
|
|
52
|
+
throw new Error('Field node is required for updating the one to many decorator');
|
|
53
|
+
let newModifiers = [];
|
|
54
|
+
let existingModifiers = this.fieldNode.modifiers;
|
|
55
|
+
// Check if field has an existing one-to-many relation decorator
|
|
56
|
+
const existingDecorator = this.findDecorator(this.decoratorName(), existingModifiers);
|
|
57
|
+
//Remove the many-to-one decorator if it exists
|
|
58
|
+
//TODO probably this too can be done in a lesser intrusive way i.e update everything instead of removing and adding
|
|
59
|
+
newModifiers = [...this.filterNonDecorators(existingModifiers), ...this.filterOtherDecorators(this.decoratorName(), existingModifiers)];
|
|
60
|
+
//Add the one-to-many decorator if it is required
|
|
61
|
+
const changes = [];
|
|
62
|
+
if (this.isApplyDecorator()) {
|
|
63
|
+
newModifiers = [...newModifiers, this.createRelationDecorator(existingDecorator)];
|
|
64
|
+
changes.push(...this.decoratorImports());
|
|
65
|
+
}
|
|
66
|
+
const updatedProperty = typescript_1.default.factory.updatePropertyDeclaration(this.fieldNode, newModifiers, //Replace with new modifiers
|
|
67
|
+
this.fieldNode.name, this.fieldNode.questionToken, this.fieldNode.type, this.fieldNode.initializer);
|
|
68
|
+
return [updatedProperty, changes];
|
|
69
|
+
}
|
|
70
|
+
buildRelationOptionsCode() {
|
|
71
|
+
return `{ cascade: true }`;
|
|
72
|
+
}
|
|
73
|
+
createRelationDecorator(existingRelationDecorator) {
|
|
74
|
+
// Capture the existing relation decorator options
|
|
75
|
+
let existingRelationDecoratorPropertyAssignments = this.existingDecoratorOptions(existingRelationDecorator);
|
|
76
|
+
// Create the new relation decorator options
|
|
77
|
+
const decoratorOptions = this.createRelationDecoratorOptions();
|
|
78
|
+
const newPropertyAssignments = Array.from(decoratorOptions.values()).filter(p => p !== null);
|
|
79
|
+
// console.log('newPropertyAssignments', newPropertyAssignments.map(p => JSON.stringify(p.name)).join(', '));
|
|
80
|
+
// Add the other unhandled column decorator options
|
|
81
|
+
const handledDecoratorOptions = Array.from(decoratorOptions.keys());
|
|
82
|
+
//@ts-ignore
|
|
83
|
+
const otherPropertyAssignments = existingRelationDecoratorPropertyAssignments.filter(ps => { var _a; return !handledDecoratorOptions.includes((_a = ps.name) === null || _a === void 0 ? void 0 : _a.escapedText); });
|
|
84
|
+
newPropertyAssignments.push(...otherPropertyAssignments);
|
|
85
|
+
// Re-create the relation decorator with the merged relation decorator options
|
|
86
|
+
const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
|
|
87
|
+
const argumentsArray = this.createDecoratorArguments(newPropertyAssignments);
|
|
88
|
+
const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, argumentsArray);
|
|
89
|
+
return typescript_1.default.factory.createDecorator(call);
|
|
90
|
+
}
|
|
91
|
+
createDecoratorArguments(newPropertyAssignments) {
|
|
92
|
+
const argumentsArray = [];
|
|
93
|
+
// 1st Argument: Target
|
|
94
|
+
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.modelName)));
|
|
95
|
+
argumentsArray.push(typeFunctionOrTarget);
|
|
96
|
+
// 2nd Argument: Inverse side
|
|
97
|
+
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.modelName)), 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.modelName)), typescript_1.default.factory.createIdentifier(this.options.fieldName)));
|
|
98
|
+
argumentsArray.push(inverseSide);
|
|
99
|
+
// 3rd Argument: Options. This argument is optional
|
|
100
|
+
if (newPropertyAssignments.length > 0) {
|
|
101
|
+
const decoratorOptions = typescript_1.default.factory.createObjectLiteralExpression(newPropertyAssignments);
|
|
102
|
+
argumentsArray.push(decoratorOptions);
|
|
103
|
+
}
|
|
104
|
+
return argumentsArray;
|
|
105
|
+
}
|
|
106
|
+
existingDecoratorOptions(existingRelationDecorator) {
|
|
107
|
+
let existingRelationDecoratorPropertyAssignments = [];
|
|
108
|
+
if (existingRelationDecorator !== undefined) {
|
|
109
|
+
//Pre-set the relation options from the existing relation decorator
|
|
110
|
+
const existingCallExpression = existingRelationDecorator.expression;
|
|
111
|
+
// Check if call expression has at least 1 arguments
|
|
112
|
+
if (existingCallExpression.arguments.length > 2) { //Because we are interested in the 2nd argument, we check for length > 1
|
|
113
|
+
if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[2])) {
|
|
114
|
+
throw new Error('OneToMany decorator 3rd argument must be an object literal containing the relation options');
|
|
115
|
+
}
|
|
116
|
+
const existingObjectLiteralExpression = existingCallExpression.arguments[2];
|
|
117
|
+
existingRelationDecoratorPropertyAssignments.push(...existingObjectLiteralExpression.properties);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return existingRelationDecoratorPropertyAssignments;
|
|
121
|
+
}
|
|
122
|
+
createRelationDecoratorOptions() {
|
|
123
|
+
const options = new Map();
|
|
124
|
+
options.set('cascade', typescript_1.default.factory.createTrue());
|
|
125
|
+
return this.optionsToPropertyAssignmentsOrNull(options);
|
|
126
|
+
}
|
|
127
|
+
optionsToPropertyAssignmentsOrNull(options) {
|
|
128
|
+
const decoratorOptions = new Map();
|
|
129
|
+
options.forEach((value, key) => {
|
|
130
|
+
if (value !== null) {
|
|
131
|
+
decoratorOptions.set(key, typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), value));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
decoratorOptions.set(key, null);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
return decoratorOptions;
|
|
138
|
+
}
|
|
139
|
+
findDecorator(name, existingModifiers) {
|
|
140
|
+
return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
|
|
141
|
+
}
|
|
142
|
+
filterOtherDecorators(name, existingModifiers) {
|
|
143
|
+
return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
|
|
144
|
+
}
|
|
145
|
+
filterNonDecorators(existingModifiers) {
|
|
146
|
+
return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
|
|
147
|
+
}
|
|
148
|
+
containsIdentifierName(m, identifierName) {
|
|
149
|
+
const callExpression = m.expression;
|
|
150
|
+
const identifier = callExpression.expression;
|
|
151
|
+
return identifier.text === identifierName;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.OneToManyDecoratorManager = OneToManyDecoratorManager;
|
|
155
|
+
//# sourceMappingURL=OneToManyDecoratorManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OneToManyDecoratorManager.js","sourceRoot":"","sources":["OneToManyDecoratorManager.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA4E;AAC5E,gIAAiK;AACjK,qEAAqE;AAarE,MAAa,yBAAyB;IAClC,YAAmB,OAAkC,EAAS,SAA+B;QAA1E,YAAO,GAAP,OAAO,CAA2B;QAAS,cAAS,GAAT,SAAS,CAAsB;IAAK,CAAC;IACnG,gBAAgB;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,CAAC;IACD,aAAa;QACT,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,cAAc;QACV,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,6BAA6B;QAC7B,wCAAwC;QACxC,+BAA+B;QAC/B,oCAAoC;QACpC,4BAA4B;QAC5B,iBAAiB;QACjB,KAAK;QACL,yBAAyB;QACzB,qCAAqC;QACrC,IAAI;QACJ,gBAAgB,CAAC,IAAI,CACjB,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAClN,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAEzC,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ;YACtC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,gBAAgB;SACrC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,SAA8B;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,gBAAgB;QACZ,OAAO,CAAC,IAAA,wBAAY,EAChB,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAC5B,IAAI,CAAC,aAAa,EAAE,EACpB,SAAS,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,eAAe;QACX,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAEtG,IAAI,YAAY,GAAmB,EAAE,CAAC;QACtC,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAEjD,gEAAgE;QAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAEtF,+CAA+C;QAC/C,mHAAmH;QACnH,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAExI,mDAAmD;QACnD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YACzB,YAAY,GAAG,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SAC5C;QAED,MAAM,eAAe,GAAG,oBAAE,CAAC,OAAO,CAAC,yBAAyB,CACxD,IAAI,CAAC,SAAS,EACd,YAAY,EAAE,4BAA4B;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,WAAW,CAC7B,CAAC;QACF,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEO,wBAAwB;QAC5B,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEO,uBAAuB,CAAC,yBAAmD;QAC/E,kDAAkD;QAClD,IAAI,4CAA4C,GAAkC,IAAI,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;QAE3I,4CAA4C;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAC/D,MAAM,sBAAsB,GAA+B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAA4B,CAAC;QAEpJ,6GAA6G;QAE7G,mDAAmD;QACnD,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,YAAY;QACZ,MAAM,wBAAwB,GAAG,4CAA4C,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,WAAC,OAAA,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAA,EAAE,CAAC,IAAI,0CAAE,WAAqB,CAAC,CAAA,EAAA,CAAC,CAAC;QAC9J,sBAAsB,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAEzD,8EAA8E;QAC9E,MAAM,mBAAmB,GAAG,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAoB,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC7F,OAAO,oBAAE,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAEO,wBAAwB,CAAC,sBAAqD;QAClF,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,uBAAuB;QACvB,MAAM,oBAAoB,GAAG,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CACvD,SAAS,EACT,SAAS,EACT,EAAE,EACF,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAC5D,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAChE,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1C,6BAA6B;QAC7B,MAAM,WAAW,GAAG,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAC9C,SAAS,EACT,SAAS,EACT,CAAC,oBAAE,CAAC,OAAO,CAAC,0BAA0B,CAClC,SAAS,EACT,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAC7D,SAAS,EACT,SAAS,EACT,SAAS,CACZ,CAAC,EACF,SAAS,EACT,oBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAC5D,oBAAE,CAAC,OAAO,CAAC,8BAA8B,CACrC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAA,kBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAC7D,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CACtD,CACJ,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,mDAAmD;QACnD,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,gBAAgB,GAAG,oBAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;YAC1F,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACzC;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,wBAAwB,CAAC,yBAAmD;QAChF,IAAI,4CAA4C,GAAkC,EAAE,CAAC;QACrF,IAAI,yBAAyB,KAAK,SAAS,EAAE;YACzC,mEAAmE;YACnE,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,UAA+B,CAAC;YACzF,qDAAqD;YACrD,IAAI,sBAAsB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,wEAAwE;gBACvH,IAAI,CAAC,oBAAE,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;iBAAE;gBAC1L,MAAM,+BAA+B,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAA+B,CAAC;gBAC1G,4CAA4C,CAAC,IAAI,CAAC,GAAG,+BAA+B,CAAC,UAAU,CAAC,CAAC;aACpG;SACJ;QACD,OAAO,4CAA4C,CAAC;IACxD,CAAC;IAEO,8BAA8B;QAClC,MAAM,OAAO,GAAQ,IAAI,GAAG,EAAyB,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,kCAAkC,CAAC,OAA0C;QACjF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAwC,CAAC;QACzE,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3G;iBACI;gBACD,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aACnC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAGO,aAAa,CAAC,IAAY,EAAE,iBAA4D;QAC5F,OAAO,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrM,CAAC;IAEO,qBAAqB,CAAC,IAAY,EAAE,iBAA4D;QACpG,OAAO,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzL,CAAC;IAEO,mBAAmB,CAAC,iBAA4D;QACpF,OAAO,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrI,CAAC;IAEO,sBAAsB,CAAC,CAAe,EAAE,cAAsB;QAClE,MAAM,cAAc,GAAG,CAAC,CAAC,UAA+B,CAAC;QACzD,MAAM,UAAU,GAAG,cAAc,CAAC,UAA2B,CAAC;QAC9D,OAAO,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC;IAC9C,CAAC;CAEJ;AAzMD,8DAyMC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ts, { ClassDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
|
|
2
|
+
import { Change } from "@schematics/angular/utility/change";
|
|
3
|
+
import { PartialAddFieldChange } from "../../FieldManager";
|
|
4
|
+
interface UniqueIndexDecoratorOptions {
|
|
5
|
+
unique: boolean;
|
|
6
|
+
fieldName: string;
|
|
7
|
+
source: ts.SourceFile;
|
|
8
|
+
field: any;
|
|
9
|
+
}
|
|
10
|
+
export declare class UniqueIndexDecoratorManager {
|
|
11
|
+
options: UniqueIndexDecoratorOptions;
|
|
12
|
+
classNode: ClassDeclaration;
|
|
13
|
+
fieldNode?: ts.PropertyDeclaration | undefined;
|
|
14
|
+
constructor(options: UniqueIndexDecoratorOptions, classNode: ClassDeclaration, fieldNode?: ts.PropertyDeclaration | undefined);
|
|
15
|
+
isApplyDecorator(): boolean;
|
|
16
|
+
decoratorName(): string;
|
|
17
|
+
setFieldNode(fieldNode: ts.PropertyDeclaration): void;
|
|
18
|
+
buildDecorator(): PartialAddFieldChange;
|
|
19
|
+
decoratorImports(): Change[];
|
|
20
|
+
updateDecorator(): [ClassDeclaration, Change[]];
|
|
21
|
+
private findUniqueIndexDecorator;
|
|
22
|
+
private createUniqueIndexDecorator;
|
|
23
|
+
private createUniqueIndexDecoratorOptions;
|
|
24
|
+
private optionsToPropertyAssignmentsOrNull;
|
|
25
|
+
private filterOtherDecorators;
|
|
26
|
+
private filterOtherIndexDecorators;
|
|
27
|
+
private filterNonDecorators;
|
|
28
|
+
private containsIdentifierName;
|
|
29
|
+
private containsIndexForField;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,174 @@
|
|
|
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.UniqueIndexDecoratorManager = 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 UniqueIndexDecoratorManager {
|
|
10
|
+
constructor(options, classNode, fieldNode) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
this.classNode = classNode;
|
|
13
|
+
this.fieldNode = fieldNode;
|
|
14
|
+
}
|
|
15
|
+
isApplyDecorator() {
|
|
16
|
+
return this.options.unique;
|
|
17
|
+
}
|
|
18
|
+
decoratorName() {
|
|
19
|
+
return 'Index';
|
|
20
|
+
}
|
|
21
|
+
setFieldNode(fieldNode) {
|
|
22
|
+
this.fieldNode = fieldNode;
|
|
23
|
+
}
|
|
24
|
+
buildDecorator() {
|
|
25
|
+
const fieldSourceLines = [];
|
|
26
|
+
const changes = [];
|
|
27
|
+
const indexDecoratorLine = `@Index(["${this.options.fieldName}", "deletedTracker"], { unique: true })`;
|
|
28
|
+
fieldSourceLines.push(indexDecoratorLine);
|
|
29
|
+
changes.push(...this.decoratorImports());
|
|
30
|
+
return {
|
|
31
|
+
filePath: this.options.source.fileName,
|
|
32
|
+
field: this.options.field,
|
|
33
|
+
changes: changes,
|
|
34
|
+
fieldSourceLines: fieldSourceLines,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
decoratorImports() {
|
|
38
|
+
return [(0, ast_utils_1.insertImport)(this.options.source, this.options.source.fileName, this.decoratorName(), 'typeorm')];
|
|
39
|
+
}
|
|
40
|
+
//Updates the index decorator for the fieldNode based on the options provided
|
|
41
|
+
// @returns the updated property declaration
|
|
42
|
+
updateDecorator() {
|
|
43
|
+
if (!this.classNode)
|
|
44
|
+
throw new Error('Class node is required for updating the unique index decorator');
|
|
45
|
+
let newModifiers = [];
|
|
46
|
+
let existingModifiers = this.classNode.modifiers;
|
|
47
|
+
// Get the existing unique index decorator if it exists
|
|
48
|
+
const existingUniqueIndexDecorator = this.findUniqueIndexDecorator(existingModifiers);
|
|
49
|
+
//Remove the Index decorator if the Index decorator exists
|
|
50
|
+
newModifiers = [...this.filterOtherDecorators(this.decoratorName(), existingModifiers), ...this.filterOtherIndexDecorators(this.decoratorName(), this.options, existingModifiers), ...this.filterNonDecorators(existingModifiers)];
|
|
51
|
+
//Add the column decorator if column decorator is required
|
|
52
|
+
const changes = [];
|
|
53
|
+
if (this.isApplyDecorator()) {
|
|
54
|
+
newModifiers = [...newModifiers, this.createUniqueIndexDecorator(existingUniqueIndexDecorator)];
|
|
55
|
+
changes.push(...this.decoratorImports());
|
|
56
|
+
}
|
|
57
|
+
// If field node is provided, replace the class members with the updated field node
|
|
58
|
+
const newMembers = this.classNode.members.filter((member) => {
|
|
59
|
+
// Check if the member is a PropertyDeclaration
|
|
60
|
+
if (typescript_1.default.isPropertyDeclaration(member)) {
|
|
61
|
+
// Compare the name of the property with the field name
|
|
62
|
+
const memberName = member.name.getText();
|
|
63
|
+
return memberName !== this.options.fieldName; // Exclude members with the matching field name
|
|
64
|
+
}
|
|
65
|
+
return true; // Keep non-PropertyDeclaration members
|
|
66
|
+
});
|
|
67
|
+
if (this.fieldNode) {
|
|
68
|
+
newMembers.push(this.fieldNode);
|
|
69
|
+
}
|
|
70
|
+
// Update the class node with the new modifiers
|
|
71
|
+
const updatedClass = typescript_1.default.factory.updateClassDeclaration(this.classNode, newModifiers, this.classNode.name, this.classNode.typeParameters, this.classNode.heritageClauses, newMembers);
|
|
72
|
+
return [updatedClass, changes];
|
|
73
|
+
}
|
|
74
|
+
findUniqueIndexDecorator(existingModifiers) {
|
|
75
|
+
return existingModifiers ? existingModifiers
|
|
76
|
+
.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator))
|
|
77
|
+
.map(m => m)
|
|
78
|
+
.filter(m => this.containsIdentifierName(m, this.decoratorName()))
|
|
79
|
+
.filter(m => this.containsIndexForField(m, this.options.fieldName))
|
|
80
|
+
.pop()
|
|
81
|
+
: undefined;
|
|
82
|
+
}
|
|
83
|
+
createUniqueIndexDecorator(existingDecorator) {
|
|
84
|
+
// Capture the existing column decorator options
|
|
85
|
+
let existingUniqueIndexDecoratorPropertyAssignments = [];
|
|
86
|
+
if (existingDecorator !== undefined) {
|
|
87
|
+
//Pre-set the column options from the existing column decorator
|
|
88
|
+
const existingCallExpression = existingDecorator.expression;
|
|
89
|
+
// Check if call expression has at least 2 arguments
|
|
90
|
+
if (existingCallExpression.arguments.length > 1) {
|
|
91
|
+
if (!typescript_1.default.isObjectLiteralExpression(existingCallExpression.arguments[1])) {
|
|
92
|
+
throw new Error('Column decorator 1st arguments must be an object literal containing the column options');
|
|
93
|
+
}
|
|
94
|
+
const existingObjectLiteralExpression = existingCallExpression.arguments[1];
|
|
95
|
+
existingUniqueIndexDecoratorPropertyAssignments.push(...existingObjectLiteralExpression.properties);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Create the new unique index decorator options as property assignments,
|
|
99
|
+
const uniqueIndexDecoratorOptions = this.createUniqueIndexDecoratorOptions();
|
|
100
|
+
const newPropertyAssignments = Array.from(uniqueIndexDecoratorOptions.values()).filter(p => p !== null);
|
|
101
|
+
// Add the other unhandled column decorator options
|
|
102
|
+
const handledColumnDecoratorOptions = Array.from(uniqueIndexDecoratorOptions.keys());
|
|
103
|
+
//@ts-ignore
|
|
104
|
+
const otherPropertyAssignments = existingUniqueIndexDecoratorPropertyAssignments.filter(ps => { var _a; return !handledColumnDecoratorOptions.includes((_a = ps.name) === null || _a === void 0 ? void 0 : _a.escapedText); });
|
|
105
|
+
newPropertyAssignments.push(...otherPropertyAssignments);
|
|
106
|
+
// Re-create the column decorator with the merged column decorator options
|
|
107
|
+
const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
|
|
108
|
+
const fieldsArray = typescript_1.default.factory.createArrayLiteralExpression([
|
|
109
|
+
typescript_1.default.factory.createStringLiteral(this.options.fieldName),
|
|
110
|
+
typescript_1.default.factory.createStringLiteral("deletedTracker")
|
|
111
|
+
], false);
|
|
112
|
+
const decoratorOptions = typescript_1.default.factory.createObjectLiteralExpression(newPropertyAssignments);
|
|
113
|
+
const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, [fieldsArray, decoratorOptions]);
|
|
114
|
+
return typescript_1.default.factory.createDecorator(call);
|
|
115
|
+
}
|
|
116
|
+
createUniqueIndexDecoratorOptions() {
|
|
117
|
+
const options = new Map();
|
|
118
|
+
options.set('unique', typescript_1.default.factory.createTrue());
|
|
119
|
+
return this.optionsToPropertyAssignmentsOrNull(options);
|
|
120
|
+
}
|
|
121
|
+
optionsToPropertyAssignmentsOrNull(options) {
|
|
122
|
+
const decoratorOptions = new Map();
|
|
123
|
+
options.forEach((value, key) => {
|
|
124
|
+
if (value !== null) {
|
|
125
|
+
decoratorOptions.set(key, typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier(key), value));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
decoratorOptions.set(key, null);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
return decoratorOptions;
|
|
132
|
+
}
|
|
133
|
+
filterOtherDecorators(name, existingModifiers) {
|
|
134
|
+
return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => !this.containsIdentifierName(m, name)) : [];
|
|
135
|
+
}
|
|
136
|
+
filterOtherIndexDecorators(name, decoratorOptions, existingModifiers) {
|
|
137
|
+
return existingModifiers
|
|
138
|
+
? existingModifiers
|
|
139
|
+
.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator))
|
|
140
|
+
.map(m => m)
|
|
141
|
+
.filter(m => this.containsIdentifierName(m, name))
|
|
142
|
+
.filter(m => !this.containsIndexForField(m, decoratorOptions.fieldName))
|
|
143
|
+
: [];
|
|
144
|
+
}
|
|
145
|
+
filterNonDecorators(existingModifiers) {
|
|
146
|
+
return existingModifiers ? existingModifiers.filter((m) => (m.kind !== typescript_1.default.SyntaxKind.Decorator)).map(m => m) : [];
|
|
147
|
+
}
|
|
148
|
+
containsIdentifierName(m, identifierName) {
|
|
149
|
+
const callExpression = m.expression;
|
|
150
|
+
const identifier = callExpression.expression;
|
|
151
|
+
return identifier.text === identifierName;
|
|
152
|
+
}
|
|
153
|
+
containsIndexForField(m, fieldName) {
|
|
154
|
+
// Check if the Index decorator contains the field name
|
|
155
|
+
const callExpression = m.expression;
|
|
156
|
+
const args = callExpression.arguments;
|
|
157
|
+
if (args.length === 0)
|
|
158
|
+
return false;
|
|
159
|
+
let indexAlreadyPresent = false;
|
|
160
|
+
const fields = args[0];
|
|
161
|
+
if (typescript_1.default.isArrayLiteralExpression(fields)) {
|
|
162
|
+
const fieldNames = fields.elements.map(e => e.getText().replace(/^["']|["']$/g, ""));
|
|
163
|
+
// Check if fieldNames only contains the field name and deletedTracker
|
|
164
|
+
indexAlreadyPresent = fieldNames.includes(fieldName) && fieldNames.includes('deletedTracker') && fieldNames.length === 2;
|
|
165
|
+
console.log('fieldNames', fieldNames);
|
|
166
|
+
console;
|
|
167
|
+
}
|
|
168
|
+
if (!indexAlreadyPresent)
|
|
169
|
+
return false;
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.UniqueIndexDecoratorManager = UniqueIndexDecoratorManager;
|
|
174
|
+
//# sourceMappingURL=UniqueIndexDecoratorManager.js.map
|
package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UniqueIndexDecoratorManager.js","sourceRoot":"","sources":["UniqueIndexDecoratorManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,19 +69,18 @@ export class UniqueIndexDecoratorManager {
|
|
|
69
69
|
//Since the order matters i.e decorators should appear above the export keyword
|
|
70
70
|
const newModifierLikes = [...newDecorators, ...existingModifiers];
|
|
71
71
|
|
|
72
|
-
//
|
|
73
|
-
const newMembers = this.classNode.members.
|
|
72
|
+
// Replace the class memeber matching the field name with the updated field node
|
|
73
|
+
const newMembers = this.classNode.members.map((member) => {
|
|
74
74
|
// Check if the member is a PropertyDeclaration
|
|
75
75
|
if (ts.isPropertyDeclaration(member)) {
|
|
76
76
|
// Compare the name of the property with the field name
|
|
77
77
|
const memberName = member.name.getText();
|
|
78
|
-
|
|
78
|
+
if (memberName === this.options.fieldName) {
|
|
79
|
+
return this.fieldNode!;
|
|
80
|
+
}
|
|
79
81
|
}
|
|
80
|
-
return
|
|
82
|
+
return member;
|
|
81
83
|
});
|
|
82
|
-
if (this.fieldNode) {
|
|
83
|
-
newMembers.push(this.fieldNode);
|
|
84
|
-
}
|
|
85
84
|
|
|
86
85
|
// Update the class node with the new modifiers
|
|
87
86
|
const updatedClass = ts.factory.updateClassDeclaration(
|
|
@@ -197,8 +196,8 @@ export class UniqueIndexDecoratorManager {
|
|
|
197
196
|
const fieldNames = fields.elements.map(e => e.getText().replace(/^["']|["']$/g, ""));
|
|
198
197
|
// Check if fieldNames only contains the field name and deletedTracker
|
|
199
198
|
indexAlreadyPresent = fieldNames.includes(fieldName) && fieldNames.includes('deletedTracker') && fieldNames.length === 2;
|
|
200
|
-
console.log('fieldNames', fieldNames);
|
|
201
|
-
console
|
|
199
|
+
// console.log('fieldNames', fieldNames);
|
|
200
|
+
// console
|
|
202
201
|
}
|
|
203
202
|
if (!indexAlreadyPresent) return false;
|
|
204
203
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Tree } from '@angular-devkit/schematics';
|
|
2
|
+
import ts, { SourceFile } from '@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript';
|
|
3
|
+
import { Change } from '@schematics/angular/utility/change';
|
|
4
|
+
import { DecoratorManager, DecoratorType, DefaultValueInitializer, FieldChange, FieldManager, FieldType, ManagerForDtoOptions, PartialAddFieldChange } from '../../FieldManager';
|
|
5
|
+
export declare abstract class BaseFieldManagerForDto implements FieldManager {
|
|
6
|
+
protected readonly moduleName: string;
|
|
7
|
+
protected readonly modelName: string;
|
|
8
|
+
protected readonly field: any;
|
|
9
|
+
protected readonly options: ManagerForDtoOptions;
|
|
10
|
+
source: SourceFile;
|
|
11
|
+
decoratorManagers: DecoratorManager[];
|
|
12
|
+
constructor(tree: Tree, moduleName: string, modelName: string, field: any, options: ManagerForDtoOptions);
|
|
13
|
+
removeField(): FieldChange[];
|
|
14
|
+
fieldName(): string;
|
|
15
|
+
protected removeFieldFor(fieldName: string, fieldSource: SourceFile): FieldChange;
|
|
16
|
+
protected getFieldIdentifierNode(fieldName: string, fieldSource: SourceFile): ts.Node | undefined;
|
|
17
|
+
protected isFieldPresent(fieldName: string, fieldSource: SourceFile): boolean;
|
|
18
|
+
protected addFieldInternal(fieldName: string, fieldType: string, decoratorManagers: DecoratorManager[], field: any, modelName: any, source: ts.SourceFile): FieldChange;
|
|
19
|
+
private buildPropertyLine;
|
|
20
|
+
addField(): FieldChange[];
|
|
21
|
+
protected updateFieldInternal(fieldName: string, fieldType: ts.TypeNode, decoratorManagers: DecoratorManager[], field: any, source: ts.SourceFile): FieldChange;
|
|
22
|
+
updateField(): FieldChange[];
|
|
23
|
+
protected addAdditionalField(): FieldChange[];
|
|
24
|
+
protected addOrUpdateAdditionalField(): FieldChange[];
|
|
25
|
+
protected removeAdditionalField(): FieldChange[];
|
|
26
|
+
updateFieldType(fieldPropertyDeclarationNode: ts.PropertyDeclaration, newTypeNode?: ts.TypeNode): ts.PropertyDeclaration;
|
|
27
|
+
abstract fieldType(): FieldType;
|
|
28
|
+
abstract isString(): boolean;
|
|
29
|
+
abstract isNumber(): boolean;
|
|
30
|
+
abstract isInt(): boolean;
|
|
31
|
+
abstract isDecimal(): boolean;
|
|
32
|
+
abstract isApplyRegex(): boolean;
|
|
33
|
+
abstract isApplyRequired(): boolean;
|
|
34
|
+
abstract isApplyMin(): boolean;
|
|
35
|
+
abstract isApplyMax(): boolean;
|
|
36
|
+
abstract isDate(): boolean;
|
|
37
|
+
abstract isTransform(): boolean;
|
|
38
|
+
abstract isJson(): boolean;
|
|
39
|
+
abstract isBoolean(): boolean;
|
|
40
|
+
protected isBigInt(): boolean;
|
|
41
|
+
protected isApplyMinLength(): boolean;
|
|
42
|
+
protected isApplyMaxLength(): boolean;
|
|
43
|
+
protected applyUpdateDecoratorTransformations(fieldPropertyDeclarationNode: ts.PropertyDeclaration, ...transformers: DecoratorManager[]): [ts.PropertyDeclaration, Change[]];
|
|
44
|
+
protected applyBuildDecoratorTransformations(...transformers: DecoratorManager[]): PartialAddFieldChange[];
|
|
45
|
+
protected calculateReplaceChanges(updatedPropertyDeclarationNodeText: string, fieldPropertyDeclarationNode: ts.PropertyDeclaration, source: ts.SourceFile): Change[];
|
|
46
|
+
protected printNode(updatedPropertyDeclarationNode: ts.PropertyDeclaration, nodeSource: SourceFile): string;
|
|
47
|
+
protected isAdditionalFieldRequired(): boolean;
|
|
48
|
+
protected getFieldDecoratorManagers(field: any, source: SourceFile, ...decoratorTypes: DecoratorType[]): DecoratorManager[];
|
|
49
|
+
protected parseDefaultValue(defaultValueConfig: string): any | null;
|
|
50
|
+
protected defaultValueInitializer(defaultValueConfig: string): DefaultValueInitializer | null;
|
|
51
|
+
}
|