@elsikora/nestjs-crud-automator 1.6.4 → 1.6.5

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 (538) hide show
  1. package/README.md +381 -266
  2. package/dist/cjs/class/metadata-storage.class.js +2 -3
  3. package/dist/cjs/class/metadata-storage.class.js.map +1 -1
  4. package/dist/cjs/decorator/api/method.decorator.js +56 -56
  5. package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
  6. package/dist/cjs/decorator/api/property/date.decorator.js +2 -2
  7. package/dist/cjs/decorator/api/property/date.decorator.js.map +1 -1
  8. package/dist/cjs/decorator/api/property/string.decorator.js +2 -2
  9. package/dist/cjs/decorator/api/property/string.decorator.js.map +1 -1
  10. package/dist/cjs/factory/api/controller.factory.js +3 -0
  11. package/dist/cjs/factory/api/controller.factory.js.map +1 -1
  12. package/dist/cjs/package.json +8 -0
  13. package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js +3 -1
  14. package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
  15. package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js +1 -1
  16. package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
  17. package/dist/cjs/utility/api/controller/write-method.utility.js +6 -1
  18. package/dist/cjs/utility/api/controller/write-method.utility.js.map +1 -1
  19. package/dist/cjs/utility/camel-case-string.utility.js +1 -1
  20. package/dist/cjs/utility/camel-case-string.utility.js.map +1 -1
  21. package/dist/cjs/utility/dto/generate-exception.utility.js +5 -5
  22. package/dist/cjs/utility/dto/generate-exception.utility.js.map +1 -1
  23. package/dist/cjs/utility/dto/generate-get-list-response.utility.js +5 -0
  24. package/dist/cjs/utility/dto/generate-get-list-response.utility.js.map +1 -1
  25. package/dist/cjs/utility/dto/generate-relation-response.utility.js +1 -0
  26. package/dist/cjs/utility/dto/generate-relation-response.utility.js.map +1 -1
  27. package/dist/cjs/utility/dto/get-get-list-query-base-class.utility.js +4 -0
  28. package/dist/cjs/utility/dto/get-get-list-query-base-class.utility.js.map +1 -1
  29. package/dist/cjs/validator/has-paired-custom-suffixes-fields.validator.js.map +1 -1
  30. package/dist/esm/class/api/index.d.ts +1 -0
  31. package/dist/esm/class/api/service-base.class.d.ts +11 -0
  32. package/dist/esm/class/index.d.ts +3 -0
  33. package/dist/esm/class/metadata-storage.class.d.ts +12 -0
  34. package/dist/esm/class/utility/dto/index.d.ts +2 -0
  35. package/dist/esm/class/utility/dto/property/factory/boolean.class.d.ts +6 -0
  36. package/dist/esm/class/utility/dto/property/factory/date.class.d.ts +6 -0
  37. package/dist/esm/class/utility/dto/property/factory/enum.class.d.ts +6 -0
  38. package/dist/esm/class/utility/dto/property/factory/index.d.ts +6 -0
  39. package/dist/esm/class/utility/dto/property/factory/number.class.d.ts +7 -0
  40. package/dist/esm/class/utility/dto/property/factory/object.class.d.ts +6 -0
  41. package/dist/esm/class/utility/dto/property/factory/relation.class.d.ts +7 -0
  42. package/dist/esm/class/utility/dto/property/factory/string.class.d.ts +6 -0
  43. package/dist/esm/class/utility/dto/property/factory/uuid.class.d.ts +6 -0
  44. package/dist/esm/class/utility/dto/property/index.d.ts +1 -0
  45. package/dist/esm/class/utility/dto/strategy/body.class.d.ts +6 -0
  46. package/dist/esm/class/utility/dto/strategy/index.d.ts +4 -0
  47. package/dist/esm/class/utility/dto/strategy/query.class.d.ts +6 -0
  48. package/dist/esm/class/utility/dto/strategy/request.class.d.ts +6 -0
  49. package/dist/esm/class/utility/dto/strategy/response.class.d.ts +6 -0
  50. package/dist/esm/class/utility/index.d.ts +1 -0
  51. package/dist/esm/constant/date.constant.d.ts +4 -0
  52. package/dist/esm/constant/decorator/api/controller.constant.d.ts +3 -0
  53. package/dist/esm/constant/decorator/api/function.constant.d.ts +4 -0
  54. package/dist/esm/constant/decorator/api/index.d.ts +3 -0
  55. package/dist/esm/constant/decorator/api/property-describe.constant.d.ts +3 -0
  56. package/dist/esm/constant/decorator/index.d.ts +1 -0
  57. package/dist/esm/constant/dto/exception.constant.d.ts +6 -0
  58. package/dist/esm/constant/dto/index.d.ts +3 -0
  59. package/dist/esm/constant/dto/list.constant.d.ts +7 -0
  60. package/dist/esm/constant/dto/transformer-value.constant.d.ts +7 -0
  61. package/dist/esm/constant/factory/dto/get-list-query.constant.d.ts +6 -0
  62. package/dist/esm/constant/factory/dto/index.d.ts +1 -0
  63. package/dist/esm/constant/factory/index.d.ts +1 -0
  64. package/dist/esm/constant/index.d.ts +6 -0
  65. package/dist/esm/constant/interface/api/filter.constant.d.ts +3 -0
  66. package/dist/esm/constant/interface/api/index.d.ts +2 -0
  67. package/dist/esm/constant/interface/api/property/index.d.ts +2 -0
  68. package/dist/esm/constant/interface/api/property/string.constant.d.ts +6 -0
  69. package/dist/esm/constant/interface/api/property/wallet.constant.d.ts +5 -0
  70. package/dist/esm/constant/interface/index.d.ts +1 -0
  71. package/dist/esm/constant/number.constant.d.ts +18 -0
  72. package/dist/esm/constant/utility/dto/constant.d.ts +6 -0
  73. package/dist/esm/constant/utility/dto/generate.constant.d.ts +4 -0
  74. package/dist/esm/decorator/api/controller.decorator.d.ts +3 -0
  75. package/dist/esm/decorator/api/function/create.decorator.d.ts +2 -0
  76. package/dist/esm/decorator/api/function/decorator.d.ts +3 -0
  77. package/dist/esm/decorator/api/function/delete.decorator.d.ts +2 -0
  78. package/dist/esm/decorator/api/function/get-list.decorator.d.ts +2 -0
  79. package/dist/esm/decorator/api/function/get-many.decorator.d.ts +2 -0
  80. package/dist/esm/decorator/api/function/get.decorator.d.ts +2 -0
  81. package/dist/esm/decorator/api/function/index.d.ts +7 -0
  82. package/dist/esm/decorator/api/function/update.decorator.d.ts +2 -0
  83. package/dist/esm/decorator/api/index.d.ts +5 -0
  84. package/dist/esm/decorator/api/method.decorator.d.ts +2 -0
  85. package/dist/esm/decorator/api/property/boolean.decorator.d.ts +2 -0
  86. package/dist/esm/decorator/api/property/date.decorator.d.ts +2 -0
  87. package/dist/esm/decorator/api/property/describe.decorator.d.ts +2 -0
  88. package/dist/esm/decorator/api/property/enum.decorator.d.ts +2 -0
  89. package/dist/esm/decorator/api/property/index.d.ts +7 -0
  90. package/dist/esm/decorator/api/property/number.decorator.d.ts +2 -0
  91. package/dist/esm/decorator/api/property/object.decorator.d.ts +2 -0
  92. package/dist/esm/decorator/api/property/string.decorator.d.ts +2 -0
  93. package/dist/esm/decorator/api/property/uuid.decorator.d.ts +2 -0
  94. package/dist/esm/decorator/api/service.decorator.d.ts +3 -0
  95. package/dist/esm/decorator/index.d.ts +1 -0
  96. package/dist/esm/enum/decorator/api/action.enum.d.ts +30 -0
  97. package/dist/esm/enum/decorator/api/authentication-type.enum.d.ts +6 -0
  98. package/dist/esm/enum/decorator/api/controller/index.d.ts +2 -0
  99. package/dist/esm/enum/decorator/api/controller/load-relations-strategy.enum.d.ts +4 -0
  100. package/dist/esm/enum/decorator/api/controller/request-transformer-type.enum.d.ts +4 -0
  101. package/dist/esm/enum/decorator/api/dto-type.enum.d.ts +6 -0
  102. package/dist/esm/enum/decorator/api/function/index.d.ts +1 -0
  103. package/dist/esm/enum/decorator/api/function/type.enum.d.ts +8 -0
  104. package/dist/esm/enum/decorator/api/index.d.ts +7 -0
  105. package/dist/esm/enum/decorator/api/property/data-type.enum.d.ts +18 -0
  106. package/dist/esm/enum/decorator/api/property/date/identifier.enum.d.ts +14 -0
  107. package/dist/esm/enum/decorator/api/property/date/index.d.ts +2 -0
  108. package/dist/esm/enum/decorator/api/property/date/type.enum.d.ts +5 -0
  109. package/dist/esm/enum/decorator/api/property/desribe-type.enum.d.ts +10 -0
  110. package/dist/esm/enum/decorator/api/property/index.d.ts +5 -0
  111. package/dist/esm/enum/decorator/api/property/number-type.enum.d.ts +4 -0
  112. package/dist/esm/enum/decorator/api/property/string-type.enum.d.ts +11 -0
  113. package/dist/esm/enum/decorator/api/route-type.enum.d.ts +8 -0
  114. package/dist/esm/enum/decorator/index.d.ts +1 -0
  115. package/dist/esm/enum/exception.enum.d.ts +30 -0
  116. package/dist/esm/enum/filter-operation.enum.d.ts +110 -0
  117. package/dist/esm/enum/filter-order-direction.enum.d.ts +4 -0
  118. package/dist/esm/enum/index.d.ts +4 -0
  119. package/dist/esm/enum/utility/error-string-action.enum.d.ts +102 -0
  120. package/dist/esm/enum/utility/index.d.ts +1 -0
  121. package/dist/esm/external/tslib/tslib.es6.js +35 -0
  122. package/dist/esm/external/tslib/tslib.es6.js.map +1 -0
  123. package/dist/esm/factory/api/controller.factory.d.ts +18 -0
  124. package/dist/esm/factory/api/index.d.ts +1 -0
  125. package/dist/esm/factory/index.d.ts +1 -0
  126. package/dist/esm/index.d.ts +10 -0
  127. package/dist/esm/interceptor/correlation-id-response-body.interceptor.d.ts +5 -0
  128. package/dist/esm/interceptor/index.d.ts +1 -0
  129. package/dist/esm/interface/api-authentication-request.interface.d.ts +4 -0
  130. package/dist/esm/interface/api-base-entity.interface.d.ts +4 -0
  131. package/dist/esm/interface/api-dto-validator.interface.d.ts +4 -0
  132. package/dist/esm/interface/api-request-validator.interface.d.ts +7 -0
  133. package/dist/esm/interface/class/dto/index.d.ts +1 -0
  134. package/dist/esm/interface/class/dto/strategy.interface.d.ts +5 -0
  135. package/dist/esm/interface/class/index.d.ts +2 -0
  136. package/dist/esm/interface/class/metadata-entry.interface.d.ts +2 -0
  137. package/dist/esm/interface/decorator/api/controller/base.interface.d.ts +4 -0
  138. package/dist/esm/interface/decorator/api/controller/index.d.ts +3 -0
  139. package/dist/esm/interface/decorator/api/controller/properties/index.d.ts +1 -0
  140. package/dist/esm/interface/decorator/api/controller/properties/route/authentication.interface.d.ts +9 -0
  141. package/dist/esm/interface/decorator/api/controller/properties/route/auto-dto-config.interface.d.ts +4 -0
  142. package/dist/esm/interface/decorator/api/controller/properties/route/base-request.interface.d.ts +8 -0
  143. package/dist/esm/interface/decorator/api/controller/properties/route/base-response.interface.d.ts +7 -0
  144. package/dist/esm/interface/decorator/api/controller/properties/route/base.interface.d.ts +11 -0
  145. package/dist/esm/interface/decorator/api/controller/properties/route/index.d.ts +7 -0
  146. package/dist/esm/interface/decorator/api/controller/properties/route/with-auto-dto.interface.d.ts +7 -0
  147. package/dist/esm/interface/decorator/api/controller/properties/route/with-dto.interface.d.ts +7 -0
  148. package/dist/esm/interface/decorator/api/controller/properties.interface.d.ts +11 -0
  149. package/dist/esm/interface/decorator/api/function/create-executor-properties.interface.d.ts +8 -0
  150. package/dist/esm/interface/decorator/api/function/delete-executor-properties.interface.d.ts +9 -0
  151. package/dist/esm/interface/decorator/api/function/get-executor-properties.interface.d.ts +8 -0
  152. package/dist/esm/interface/decorator/api/function/get-list-executor-properties.interface.d.ts +8 -0
  153. package/dist/esm/interface/decorator/api/function/get-many-executor-properties.interface.d.ts +8 -0
  154. package/dist/esm/interface/decorator/api/function/index.d.ts +7 -0
  155. package/dist/esm/interface/decorator/api/function/properties.interface.d.ts +4 -0
  156. package/dist/esm/interface/decorator/api/function/update-executor-properties.interface.d.ts +10 -0
  157. package/dist/esm/interface/decorator/api/get-list-response-result.interface.d.ts +7 -0
  158. package/dist/esm/interface/decorator/api/index.d.ts +5 -0
  159. package/dist/esm/interface/decorator/api/method/index.d.ts +2 -0
  160. package/dist/esm/interface/decorator/api/method/properties.interface.d.ts +17 -0
  161. package/dist/esm/interface/decorator/api/method/throttler-properties.interface.d.ts +4 -0
  162. package/dist/esm/interface/decorator/api/response-type.interface.d.ts +9 -0
  163. package/dist/esm/interface/decorator/index.d.ts +1 -0
  164. package/dist/esm/interface/dto-generate-factory.interface.d.ts +6 -0
  165. package/dist/esm/interface/entity/column.interface.d.ts +7 -0
  166. package/dist/esm/interface/entity/index.d.ts +2 -0
  167. package/dist/esm/interface/entity/interface.d.ts +7 -0
  168. package/dist/esm/interface/index.d.ts +8 -0
  169. package/dist/esm/interface/utility/api/controller/index.d.ts +1 -0
  170. package/dist/esm/interface/utility/api/controller/primary-column.interface.d.ts +4 -0
  171. package/dist/esm/interface/utility/api/index.d.ts +1 -0
  172. package/dist/esm/interface/utility/error-string-properties.interface.d.ts +5 -0
  173. package/dist/esm/interface/utility/get-entity-columns-properties.interface.d.ts +6 -0
  174. package/dist/esm/interface/utility/index.d.ts +2 -0
  175. package/dist/esm/package.json +8 -0
  176. package/dist/esm/src/class/api/service-base.class.js +23 -0
  177. package/dist/esm/src/class/api/service-base.class.js.map +1 -0
  178. package/dist/esm/src/class/metadata-storage.class.js +47 -0
  179. package/dist/esm/src/class/metadata-storage.class.js.map +1 -0
  180. package/dist/esm/src/class/utility/dto/property/factory/boolean.class.js +15 -0
  181. package/dist/esm/src/class/utility/dto/property/factory/boolean.class.js.map +1 -0
  182. package/dist/esm/src/class/utility/dto/property/factory/date.class.js +15 -0
  183. package/dist/esm/src/class/utility/dto/property/factory/date.class.js.map +1 -0
  184. package/dist/esm/src/class/utility/dto/property/factory/enum.class.js +15 -0
  185. package/dist/esm/src/class/utility/dto/property/factory/enum.class.js.map +1 -0
  186. package/dist/esm/src/class/utility/dto/property/factory/number.class.js +32 -0
  187. package/dist/esm/src/class/utility/dto/property/factory/number.class.js.map +1 -0
  188. package/dist/esm/src/class/utility/dto/property/factory/object.class.js +16 -0
  189. package/dist/esm/src/class/utility/dto/property/factory/object.class.js.map +1 -0
  190. package/dist/esm/src/class/utility/dto/property/factory/relation.class.js +29 -0
  191. package/dist/esm/src/class/utility/dto/property/factory/relation.class.js.map +1 -0
  192. package/dist/esm/src/class/utility/dto/property/factory/string.class.js +15 -0
  193. package/dist/esm/src/class/utility/dto/property/factory/string.class.js.map +1 -0
  194. package/dist/esm/src/class/utility/dto/property/factory/uuid.class.js +11 -0
  195. package/dist/esm/src/class/utility/dto/property/factory/uuid.class.js.map +1 -0
  196. package/dist/esm/src/class/utility/dto/strategy/body.class.js +47 -0
  197. package/dist/esm/src/class/utility/dto/strategy/body.class.js.map +1 -0
  198. package/dist/esm/src/class/utility/dto/strategy/query.class.js +44 -0
  199. package/dist/esm/src/class/utility/dto/strategy/query.class.js.map +1 -0
  200. package/dist/esm/src/class/utility/dto/strategy/request.class.js +47 -0
  201. package/dist/esm/src/class/utility/dto/strategy/request.class.js.map +1 -0
  202. package/dist/esm/src/class/utility/dto/strategy/response.class.js +47 -0
  203. package/dist/esm/src/class/utility/dto/strategy/response.class.js.map +1 -0
  204. package/dist/esm/src/constant/date.constant.js +9 -0
  205. package/dist/esm/src/constant/date.constant.js.map +1 -0
  206. package/dist/esm/src/constant/decorator/api/controller.constant.js +7 -0
  207. package/dist/esm/src/constant/decorator/api/controller.constant.js.map +1 -0
  208. package/dist/esm/src/constant/decorator/api/function.constant.js +24 -0
  209. package/dist/esm/src/constant/decorator/api/function.constant.js.map +1 -0
  210. package/dist/esm/src/constant/decorator/api/property-describe.constant.js +7 -0
  211. package/dist/esm/src/constant/decorator/api/property-describe.constant.js.map +1 -0
  212. package/dist/esm/src/constant/dto/exception.constant.js +13 -0
  213. package/dist/esm/src/constant/dto/exception.constant.js.map +1 -0
  214. package/dist/esm/src/constant/dto/list.constant.js +13 -0
  215. package/dist/esm/src/constant/dto/list.constant.js.map +1 -0
  216. package/dist/esm/src/constant/dto/transformer-value.constant.js +15 -0
  217. package/dist/esm/src/constant/dto/transformer-value.constant.js.map +1 -0
  218. package/dist/esm/src/constant/factory/dto/get-list-query.constant.js +13 -0
  219. package/dist/esm/src/constant/factory/dto/get-list-query.constant.js.map +1 -0
  220. package/dist/esm/src/constant/interface/api/filter.constant.js +7 -0
  221. package/dist/esm/src/constant/interface/api/filter.constant.js.map +1 -0
  222. package/dist/esm/src/constant/interface/api/property/string.constant.js +11 -0
  223. package/dist/esm/src/constant/interface/api/property/string.constant.js.map +1 -0
  224. package/dist/esm/src/constant/interface/api/property/wallet.constant.js +11 -0
  225. package/dist/esm/src/constant/interface/api/property/wallet.constant.js.map +1 -0
  226. package/dist/esm/src/constant/number.constant.js +37 -0
  227. package/dist/esm/src/constant/number.constant.js.map +1 -0
  228. package/dist/esm/src/constant/utility/dto/constant.js +53 -0
  229. package/dist/esm/src/constant/utility/dto/constant.js.map +1 -0
  230. package/dist/esm/src/constant/utility/dto/generate.constant.js +9 -0
  231. package/dist/esm/src/constant/utility/dto/generate.constant.js.map +1 -0
  232. package/dist/esm/src/decorator/api/controller.decorator.js +16 -0
  233. package/dist/esm/src/decorator/api/controller.decorator.js.map +1 -0
  234. package/dist/esm/src/decorator/api/function/create.decorator.js +51 -0
  235. package/dist/esm/src/decorator/api/function/create.decorator.js.map +1 -0
  236. package/dist/esm/src/decorator/api/function/decorator.js +69 -0
  237. package/dist/esm/src/decorator/api/function/decorator.js.map +1 -0
  238. package/dist/esm/src/decorator/api/function/delete.decorator.js +69 -0
  239. package/dist/esm/src/decorator/api/function/delete.decorator.js.map +1 -0
  240. package/dist/esm/src/decorator/api/function/get-list.decorator.js +58 -0
  241. package/dist/esm/src/decorator/api/function/get-list.decorator.js.map +1 -0
  242. package/dist/esm/src/decorator/api/function/get-many.decorator.js +55 -0
  243. package/dist/esm/src/decorator/api/function/get-many.decorator.js.map +1 -0
  244. package/dist/esm/src/decorator/api/function/get.decorator.js +55 -0
  245. package/dist/esm/src/decorator/api/function/get.decorator.js.map +1 -0
  246. package/dist/esm/src/decorator/api/function/update.decorator.js +80 -0
  247. package/dist/esm/src/decorator/api/function/update.decorator.js.map +1 -0
  248. package/dist/esm/src/decorator/api/method.decorator.js +349 -0
  249. package/dist/esm/src/decorator/api/method.decorator.js.map +1 -0
  250. package/dist/esm/src/decorator/api/property/boolean.decorator.js +177 -0
  251. package/dist/esm/src/decorator/api/property/boolean.decorator.js.map +1 -0
  252. package/dist/esm/src/decorator/api/property/date.decorator.js +204 -0
  253. package/dist/esm/src/decorator/api/property/date.decorator.js.map +1 -0
  254. package/dist/esm/src/decorator/api/property/describe.decorator.js +29 -0
  255. package/dist/esm/src/decorator/api/property/describe.decorator.js.map +1 -0
  256. package/dist/esm/src/decorator/api/property/enum.decorator.js +103 -0
  257. package/dist/esm/src/decorator/api/property/enum.decorator.js.map +1 -0
  258. package/dist/esm/src/decorator/api/property/number.decorator.js +213 -0
  259. package/dist/esm/src/decorator/api/property/number.decorator.js.map +1 -0
  260. package/dist/esm/src/decorator/api/property/object.decorator.js +102 -0
  261. package/dist/esm/src/decorator/api/property/object.decorator.js.map +1 -0
  262. package/dist/esm/src/decorator/api/property/string.decorator.js +232 -0
  263. package/dist/esm/src/decorator/api/property/string.decorator.js.map +1 -0
  264. package/dist/esm/src/decorator/api/property/uuid.decorator.js +118 -0
  265. package/dist/esm/src/decorator/api/property/uuid.decorator.js.map +1 -0
  266. package/dist/esm/src/decorator/api/service.decorator.js +161 -0
  267. package/dist/esm/src/decorator/api/service.decorator.js.map +1 -0
  268. package/dist/esm/src/enum/decorator/api/action.enum.js +34 -0
  269. package/dist/esm/src/enum/decorator/api/action.enum.js.map +1 -0
  270. package/dist/esm/src/enum/decorator/api/authentication-type.enum.js +10 -0
  271. package/dist/esm/src/enum/decorator/api/authentication-type.enum.js.map +1 -0
  272. package/dist/esm/src/enum/decorator/api/controller/load-relations-strategy.enum.js +8 -0
  273. package/dist/esm/src/enum/decorator/api/controller/load-relations-strategy.enum.js.map +1 -0
  274. package/dist/esm/src/enum/decorator/api/controller/request-transformer-type.enum.js +8 -0
  275. package/dist/esm/src/enum/decorator/api/controller/request-transformer-type.enum.js.map +1 -0
  276. package/dist/esm/src/enum/decorator/api/dto-type.enum.js +10 -0
  277. package/dist/esm/src/enum/decorator/api/dto-type.enum.js.map +1 -0
  278. package/dist/esm/src/enum/decorator/api/function/type.enum.js +12 -0
  279. package/dist/esm/src/enum/decorator/api/function/type.enum.js.map +1 -0
  280. package/dist/esm/src/enum/decorator/api/property/data-type.enum.js +22 -0
  281. package/dist/esm/src/enum/decorator/api/property/data-type.enum.js.map +1 -0
  282. package/dist/esm/src/enum/decorator/api/property/date/identifier.enum.js +18 -0
  283. package/dist/esm/src/enum/decorator/api/property/date/identifier.enum.js.map +1 -0
  284. package/dist/esm/src/enum/decorator/api/property/date/type.enum.js +11 -0
  285. package/dist/esm/src/enum/decorator/api/property/date/type.enum.js.map +1 -0
  286. package/dist/esm/src/enum/decorator/api/property/desribe-type.enum.js +14 -0
  287. package/dist/esm/src/enum/decorator/api/property/desribe-type.enum.js.map +1 -0
  288. package/dist/esm/src/enum/decorator/api/property/number-type.enum.js +10 -0
  289. package/dist/esm/src/enum/decorator/api/property/number-type.enum.js.map +1 -0
  290. package/dist/esm/src/enum/decorator/api/property/string-type.enum.js +17 -0
  291. package/dist/esm/src/enum/decorator/api/property/string-type.enum.js.map +1 -0
  292. package/dist/esm/src/enum/decorator/api/route-type.enum.js +12 -0
  293. package/dist/esm/src/enum/decorator/api/route-type.enum.js.map +1 -0
  294. package/dist/esm/src/enum/exception.enum.js +34 -0
  295. package/dist/esm/src/enum/exception.enum.js.map +1 -0
  296. package/dist/esm/src/enum/filter-operation.enum.js +123 -0
  297. package/dist/esm/src/enum/filter-operation.enum.js.map +1 -0
  298. package/dist/esm/src/enum/filter-order-direction.enum.js +8 -0
  299. package/dist/esm/src/enum/filter-order-direction.enum.js.map +1 -0
  300. package/dist/esm/src/enum/utility/error-string-action.enum.js +106 -0
  301. package/dist/esm/src/enum/utility/error-string-action.enum.js.map +1 -0
  302. package/dist/esm/src/factory/api/controller.factory.js +216 -0
  303. package/dist/esm/src/factory/api/controller.factory.js.map +1 -0
  304. package/dist/esm/src/index.js +82 -0
  305. package/dist/esm/src/index.js.map +1 -0
  306. package/dist/esm/src/interceptor/correlation-id-response-body.interceptor.js +76 -0
  307. package/dist/esm/src/interceptor/correlation-id-response-body.interceptor.js.map +1 -0
  308. package/dist/esm/src/utility/api/controller/apply-decorators.utility.js +81 -0
  309. package/dist/esm/src/utility/api/controller/apply-decorators.utility.js.map +1 -0
  310. package/dist/esm/src/utility/api/controller/apply-metadata.utility.js +76 -0
  311. package/dist/esm/src/utility/api/controller/apply-metadata.utility.js.map +1 -0
  312. package/dist/esm/src/utility/api/controller/get-list/transform-filter.utility.js +48 -0
  313. package/dist/esm/src/utility/api/controller/get-list/transform-filter.utility.js.map +1 -0
  314. package/dist/esm/src/utility/api/controller/get-list/transform-operation.utility.js +80 -0
  315. package/dist/esm/src/utility/api/controller/get-list/transform-operation.utility.js.map +1 -0
  316. package/dist/esm/src/utility/api/controller/get-method-name.utility.js +9 -0
  317. package/dist/esm/src/utility/api/controller/get-method-name.utility.js.map +1 -0
  318. package/dist/esm/src/utility/api/controller/get-primary-column.utility.js +13 -0
  319. package/dist/esm/src/utility/api/controller/get-primary-column.utility.js.map +1 -0
  320. package/dist/esm/src/utility/api/controller/handle-request-relations.utility.js +70 -0
  321. package/dist/esm/src/utility/api/controller/handle-request-relations.utility.js.map +1 -0
  322. package/dist/esm/src/utility/api/controller/transform-data.utility.js +147 -0
  323. package/dist/esm/src/utility/api/controller/transform-data.utility.js.map +1 -0
  324. package/dist/esm/src/utility/api/controller/validate-request.utility.js +16 -0
  325. package/dist/esm/src/utility/api/controller/validate-request.utility.js.map +1 -0
  326. package/dist/esm/src/utility/api/controller/write-dto-swagger.utility.js +77 -0
  327. package/dist/esm/src/utility/api/controller/write-dto-swagger.utility.js.map +1 -0
  328. package/dist/esm/src/utility/api/controller/write-method.utility.js +18 -0
  329. package/dist/esm/src/utility/api/controller/write-method.utility.js.map +1 -0
  330. package/dist/esm/src/utility/api/filter-order-by-from-entity.utility.js +46 -0
  331. package/dist/esm/src/utility/api/filter-order-by-from-entity.utility.js.map +1 -0
  332. package/dist/esm/src/utility/camel-case-string.utility.js +29 -0
  333. package/dist/esm/src/utility/camel-case-string.utility.js.map +1 -0
  334. package/dist/esm/src/utility/capitalize-string.utility.js +6 -0
  335. package/dist/esm/src/utility/capitalize-string.utility.js.map +1 -0
  336. package/dist/esm/src/utility/dto/analize.utility.js +25 -0
  337. package/dist/esm/src/utility/dto/analize.utility.js.map +1 -0
  338. package/dist/esm/src/utility/dto/build-decorator.utility.js +49 -0
  339. package/dist/esm/src/utility/dto/build-decorator.utility.js.map +1 -0
  340. package/dist/esm/src/utility/dto/generate-decorator.utility.js +13 -0
  341. package/dist/esm/src/utility/dto/generate-decorator.utility.js.map +1 -0
  342. package/dist/esm/src/utility/dto/generate-exception.utility.js +96 -0
  343. package/dist/esm/src/utility/dto/generate-exception.utility.js.map +1 -0
  344. package/dist/esm/src/utility/dto/generate-filter-decorator.utility.js +50 -0
  345. package/dist/esm/src/utility/dto/generate-filter-decorator.utility.js.map +1 -0
  346. package/dist/esm/src/utility/dto/generate-get-list-response.utility.js +102 -0
  347. package/dist/esm/src/utility/dto/generate-get-list-response.utility.js.map +1 -0
  348. package/dist/esm/src/utility/dto/generate-relation-response.utility.js +19 -0
  349. package/dist/esm/src/utility/dto/generate-relation-response.utility.js.map +1 -0
  350. package/dist/esm/src/utility/dto/generate.utility.js +131 -0
  351. package/dist/esm/src/utility/dto/generate.utility.js.map +1 -0
  352. package/dist/esm/src/utility/dto/get-decorator-config.utility.js +18 -0
  353. package/dist/esm/src/utility/dto/get-decorator-config.utility.js.map +1 -0
  354. package/dist/esm/src/utility/dto/get-get-list-query-base-class.utility.js +95 -0
  355. package/dist/esm/src/utility/dto/get-get-list-query-base-class.utility.js.map +1 -0
  356. package/dist/esm/src/utility/dto/handle-date-property.utility.js +33 -0
  357. package/dist/esm/src/utility/dto/handle-date-property.utility.js.map +1 -0
  358. package/dist/esm/src/utility/dto/is-property-exposed-for-guard.utility.js +13 -0
  359. package/dist/esm/src/utility/dto/is-property-exposed-for-guard.utility.js.map +1 -0
  360. package/dist/esm/src/utility/dto/is-property-should-be-marked.utility.js +44 -0
  361. package/dist/esm/src/utility/dto/is-property-should-be-marked.utility.js.map +1 -0
  362. package/dist/esm/src/utility/dto/is-should-be-generated.utility.js +39 -0
  363. package/dist/esm/src/utility/dto/is-should-be-generated.utility.js.map +1 -0
  364. package/dist/esm/src/utility/dto/validate-property-config.utility.js +4 -0
  365. package/dist/esm/src/utility/dto/validate-property-config.utility.js.map +1 -0
  366. package/dist/esm/src/utility/error-exception.utility.js +6 -0
  367. package/dist/esm/src/utility/error-exception.utility.js.map +1 -0
  368. package/dist/esm/src/utility/error-string.utility.js +6 -0
  369. package/dist/esm/src/utility/error-string.utility.js.map +1 -0
  370. package/dist/esm/src/utility/generate-entity-information.utility.js +76 -0
  371. package/dist/esm/src/utility/generate-entity-information.utility.js.map +1 -0
  372. package/dist/esm/src/utility/get-entity-columns.utility.js +20 -0
  373. package/dist/esm/src/utility/get-entity-columns.utility.js.map +1 -0
  374. package/dist/esm/src/utility/is-error-of-type.utility.js +66 -0
  375. package/dist/esm/src/utility/is-error-of-type.utility.js.map +1 -0
  376. package/dist/esm/src/validator/all-or-none-of-listed-properties.validator.js +23 -0
  377. package/dist/esm/src/validator/all-or-none-of-listed-properties.validator.js.map +1 -0
  378. package/dist/esm/src/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js +33 -0
  379. package/dist/esm/src/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js.map +1 -0
  380. package/dist/esm/src/validator/has-at-least-one-of-listed-properties.validator.js +29 -0
  381. package/dist/esm/src/validator/has-at-least-one-of-listed-properties.validator.js.map +1 -0
  382. package/dist/esm/src/validator/has-at-least-one-property.validator.js +17 -0
  383. package/dist/esm/src/validator/has-at-least-one-property.validator.js.map +1 -0
  384. package/dist/esm/src/validator/has-paired-custom-suffixes-fields.validator.js +214 -0
  385. package/dist/esm/src/validator/has-paired-custom-suffixes-fields.validator.js.map +1 -0
  386. package/dist/esm/src/validator/is-regular-expression.validator.js +25 -0
  387. package/dist/esm/src/validator/is-regular-expression.validator.js.map +1 -0
  388. package/dist/esm/src/validator/only-one-of-listed-properties.validator.js +28 -0
  389. package/dist/esm/src/validator/only-one-of-listed-properties.validator.js.map +1 -0
  390. package/dist/esm/type/api-request-transformer.type.d.ts +15 -0
  391. package/dist/esm/type/class/api-exception.type.d.ts +2 -0
  392. package/dist/esm/type/class/controller/index.d.ts +1 -0
  393. package/dist/esm/type/class/controller/method.type.d.ts +5 -0
  394. package/dist/esm/type/class/index.d.ts +3 -0
  395. package/dist/esm/type/class/metadata.type.d.ts +2 -0
  396. package/dist/esm/type/decorator/api/controller/constructor.type.d.ts +4 -0
  397. package/dist/esm/type/decorator/api/controller/get-list-query.type.d.ts +8 -0
  398. package/dist/esm/type/decorator/api/controller/index.d.ts +5 -0
  399. package/dist/esm/type/decorator/api/controller/properties/index.d.ts +1 -0
  400. package/dist/esm/type/decorator/api/controller/properties/route/base-request-relations.type.d.ts +18 -0
  401. package/dist/esm/type/decorator/api/controller/properties/route/base-request-transformers.type.d.ts +10 -0
  402. package/dist/esm/type/decorator/api/controller/properties/route/base-response-transformers.type.d.ts +10 -0
  403. package/dist/esm/type/decorator/api/controller/properties/route/index.d.ts +3 -0
  404. package/dist/esm/type/decorator/api/controller/properties-route.type.d.ts +3 -0
  405. package/dist/esm/type/decorator/api/controller/transformer-config.type.d.ts +8 -0
  406. package/dist/esm/type/decorator/api/filter/allowed-types.type.d.ts +1 -0
  407. package/dist/esm/type/decorator/api/filter/extracted-allowed-types.type.d.ts +2 -0
  408. package/dist/esm/type/decorator/api/filter/field-selector.type.d.ts +3 -0
  409. package/dist/esm/type/decorator/api/filter/index.d.ts +4 -0
  410. package/dist/esm/type/decorator/api/filter/order-by.type.d.ts +4 -0
  411. package/dist/esm/type/decorator/api/function/create-properties.type.d.ts +2 -0
  412. package/dist/esm/type/decorator/api/function/delete-criteria.type.d.ts +2 -0
  413. package/dist/esm/type/decorator/api/function/get-list-properties-where.type.d.ts +7 -0
  414. package/dist/esm/type/decorator/api/function/get-list-properties.type.d.ts +2 -0
  415. package/dist/esm/type/decorator/api/function/get-many.properties.d.ts +2 -0
  416. package/dist/esm/type/decorator/api/function/get-properties.type.d.ts +2 -0
  417. package/dist/esm/type/decorator/api/function/index.d.ts +9 -0
  418. package/dist/esm/type/decorator/api/function/properties.type.d.ts +7 -0
  419. package/dist/esm/type/decorator/api/function/update-criteria.type.d.ts +2 -0
  420. package/dist/esm/type/decorator/api/function/update-properties.type.d.ts +2 -0
  421. package/dist/esm/type/decorator/api/index.d.ts +5 -0
  422. package/dist/esm/type/decorator/api/property/base/array/index.d.ts +2 -0
  423. package/dist/esm/type/decorator/api/property/base/array/optional-properties.type.d.ts +3 -0
  424. package/dist/esm/type/decorator/api/property/base/array/required-properties.type.d.ts +6 -0
  425. package/dist/esm/type/decorator/api/property/base/index.d.ts +4 -0
  426. package/dist/esm/type/decorator/api/property/base/properties.type.d.ts +9 -0
  427. package/dist/esm/type/decorator/api/property/base/request-properties.type.d.ts +4 -0
  428. package/dist/esm/type/decorator/api/property/base/response-properties.type.d.ts +4 -0
  429. package/dist/esm/type/decorator/api/property/date-properties.type.d.ts +6 -0
  430. package/dist/esm/type/decorator/api/property/describe/array/index.d.ts +2 -0
  431. package/dist/esm/type/decorator/api/property/describe/array/optional-properties.type.d.ts +3 -0
  432. package/dist/esm/type/decorator/api/property/describe/array/required-properties.type.d.ts +6 -0
  433. package/dist/esm/type/decorator/api/property/describe/base-properties.type.d.ts +5 -0
  434. package/dist/esm/type/decorator/api/property/describe/boolean-properties.type.d.ts +7 -0
  435. package/dist/esm/type/decorator/api/property/describe/date-properties.type.d.ts +8 -0
  436. package/dist/esm/type/decorator/api/property/describe/dto/body-properties.type.d.ts +5 -0
  437. package/dist/esm/type/decorator/api/property/describe/dto/guard-properties.type.d.ts +6 -0
  438. package/dist/esm/type/decorator/api/property/describe/dto/index.d.ts +5 -0
  439. package/dist/esm/type/decorator/api/property/describe/dto/properties.type.d.ts +11 -0
  440. package/dist/esm/type/decorator/api/property/describe/dto/query/get-list-properties.type.d.ts +3 -0
  441. package/dist/esm/type/decorator/api/property/describe/dto/query/index.d.ts +2 -0
  442. package/dist/esm/type/decorator/api/property/describe/dto/query/properties.type.d.ts +6 -0
  443. package/dist/esm/type/decorator/api/property/describe/dto/request-properties.type.d.ts +5 -0
  444. package/dist/esm/type/decorator/api/property/describe/dto/response-properties.type.d.ts +5 -0
  445. package/dist/esm/type/decorator/api/property/describe/enum-properties.type.d.ts +9 -0
  446. package/dist/esm/type/decorator/api/property/describe/example-properties.type.d.ts +7 -0
  447. package/dist/esm/type/decorator/api/property/describe/index.d.ts +13 -0
  448. package/dist/esm/type/decorator/api/property/describe/number-properties.type.d.ts +12 -0
  449. package/dist/esm/type/decorator/api/property/describe/object-properties.type.d.ts +12 -0
  450. package/dist/esm/type/decorator/api/property/describe/properties/base-dto-properties.type.d.ts +2 -0
  451. package/dist/esm/type/decorator/api/property/describe/properties/base-properties.type.d.ts +10 -0
  452. package/dist/esm/type/decorator/api/property/describe/properties/index.d.ts +2 -0
  453. package/dist/esm/type/decorator/api/property/describe/properties.type.d.ts +9 -0
  454. package/dist/esm/type/decorator/api/property/describe/relation-properties.type.d.ts +6 -0
  455. package/dist/esm/type/decorator/api/property/describe/string-properties.type.d.ts +12 -0
  456. package/dist/esm/type/decorator/api/property/describe/uuid-properties.type.d.ts +7 -0
  457. package/dist/esm/type/decorator/api/property/enum-properties.type.d.ts +6 -0
  458. package/dist/esm/type/decorator/api/property/index.d.ts +6 -0
  459. package/dist/esm/type/decorator/api/property/number-properties.type.d.ts +9 -0
  460. package/dist/esm/type/decorator/api/property/object-properties.type.d.ts +8 -0
  461. package/dist/esm/type/decorator/api/property/string-properties.type.d.ts +9 -0
  462. package/dist/esm/type/decorator/api/property/uuid-properties.type.d.ts +2 -0
  463. package/dist/esm/type/decorator/api/service/index.d.ts +2 -0
  464. package/dist/esm/type/decorator/api/service/keys.type.d.ts +4 -0
  465. package/dist/esm/type/decorator/api/service/properties.type.d.ts +3 -0
  466. package/dist/esm/type/decorator/index.d.ts +1 -0
  467. package/dist/esm/type/factory/api/controller/index.d.ts +4 -0
  468. package/dist/esm/type/factory/api/controller/method-map.type.d.ts +12 -0
  469. package/dist/esm/type/factory/api/controller/method-name-map.type.d.ts +5 -0
  470. package/dist/esm/type/factory/api/controller/method-name.type.d.ts +4 -0
  471. package/dist/esm/type/factory/api/controller/target-methods.type.d.ts +9 -0
  472. package/dist/esm/type/factory/api/index.d.ts +1 -0
  473. package/dist/esm/type/factory/index.d.ts +1 -0
  474. package/dist/esm/type/index.d.ts +5 -0
  475. package/dist/esm/type/utility/api/controller/index.d.ts +1 -0
  476. package/dist/esm/type/utility/api/controller/transform-data/data.type.d.ts +6 -0
  477. package/dist/esm/type/utility/api/controller/transform-data/index.d.ts +3 -0
  478. package/dist/esm/type/utility/api/controller/transform-data/is-validation-properties.type.d.ts +3 -0
  479. package/dist/esm/type/utility/api/controller/transform-data/object-to-transform.type.d.ts +9 -0
  480. package/dist/esm/type/utility/api/index.d.ts +1 -0
  481. package/dist/esm/type/utility/capitalize-string.type.d.ts +1 -0
  482. package/dist/esm/type/utility/date-keys.type.d.ts +2 -0
  483. package/dist/esm/type/utility/date-range-keys.type.d.ts +4 -0
  484. package/dist/esm/type/utility/dto/generate-allowed-combination.type.d.ts +9 -0
  485. package/dist/esm/type/utility/dto/generate-is-allowed-combination.type.d.ts +3 -0
  486. package/dist/esm/type/utility/dto/index.d.ts +2 -0
  487. package/dist/esm/type/utility/filter-keys.type.d.ts +7 -0
  488. package/dist/esm/type/utility/index.d.ts +7 -0
  489. package/dist/esm/type/utility/non-date-keys.type.d.ts +2 -0
  490. package/dist/esm/utility/api/controller/apply-decorators.utility.d.ts +4 -0
  491. package/dist/esm/utility/api/controller/apply-metadata.utility.d.ts +4 -0
  492. package/dist/esm/utility/api/controller/get-list/index.d.ts +2 -0
  493. package/dist/esm/utility/api/controller/get-list/transform-filter.utility.d.ts +3 -0
  494. package/dist/esm/utility/api/controller/get-list/transform-operation.utility.d.ts +3 -0
  495. package/dist/esm/utility/api/controller/get-method-name.utility.d.ts +2 -0
  496. package/dist/esm/utility/api/controller/get-primary-column.utility.d.ts +3 -0
  497. package/dist/esm/utility/api/controller/handle-request-relations.utility.d.ts +4 -0
  498. package/dist/esm/utility/api/controller/index.d.ts +9 -0
  499. package/dist/esm/utility/api/controller/transform-data.utility.d.ts +4 -0
  500. package/dist/esm/utility/api/controller/validate-request.utility.d.ts +3 -0
  501. package/dist/esm/utility/api/controller/write-dto-swagger.utility.d.ts +4 -0
  502. package/dist/esm/utility/api/controller/write-method.utility.d.ts +3 -0
  503. package/dist/esm/utility/api/filter-order-by-from-entity.utility.d.ts +6 -0
  504. package/dist/esm/utility/api/index.d.ts +2 -0
  505. package/dist/esm/utility/camel-case-string.utility.d.ts +1 -0
  506. package/dist/esm/utility/capitalize-string.utility.d.ts +1 -0
  507. package/dist/esm/utility/dto/analize.utility.d.ts +2 -0
  508. package/dist/esm/utility/dto/build-decorator.utility.d.ts +6 -0
  509. package/dist/esm/utility/dto/generate-decorator.utility.d.ts +4 -0
  510. package/dist/esm/utility/dto/generate-exception.utility.d.ts +2 -0
  511. package/dist/esm/utility/dto/generate-filter-decorator.utility.d.ts +3 -0
  512. package/dist/esm/utility/dto/generate-get-list-response.utility.d.ts +4 -0
  513. package/dist/esm/utility/dto/generate-relation-response.utility.d.ts +4 -0
  514. package/dist/esm/utility/dto/generate.utility.d.ts +6 -0
  515. package/dist/esm/utility/dto/get-decorator-config.utility.d.ts +3 -0
  516. package/dist/esm/utility/dto/get-get-list-query-base-class.utility.d.ts +5 -0
  517. package/dist/esm/utility/dto/handle-date-property.utility.d.ts +5 -0
  518. package/dist/esm/utility/dto/index.d.ts +12 -0
  519. package/dist/esm/utility/dto/is-property-exposed-for-guard.utility.d.ts +5 -0
  520. package/dist/esm/utility/dto/is-property-should-be-marked.utility.d.ts +5 -0
  521. package/dist/esm/utility/dto/is-should-be-generated.utility.d.ts +2 -0
  522. package/dist/esm/utility/dto/validate-property-config.utility.d.ts +2 -0
  523. package/dist/esm/utility/error-exception.utility.d.ts +1 -0
  524. package/dist/esm/utility/error-string.utility.d.ts +2 -0
  525. package/dist/esm/utility/generate-entity-information.utility.d.ts +2 -0
  526. package/dist/esm/utility/get-entity-columns.utility.d.ts +2 -0
  527. package/dist/esm/utility/index.d.ts +9 -0
  528. package/dist/esm/utility/is-error-of-type.utility.d.ts +2 -0
  529. package/dist/esm/validator/all-or-none-of-listed-properties.validator.d.ts +5 -0
  530. package/dist/esm/validator/has-at-least-one-and-only-one-of-listed-properties.validator.d.ts +5 -0
  531. package/dist/esm/validator/has-at-least-one-of-listed-properties.validator.d.ts +5 -0
  532. package/dist/esm/validator/has-at-least-one-property.validator.d.ts +5 -0
  533. package/dist/esm/validator/has-paired-custom-suffixes-fields.validator.d.ts +7 -0
  534. package/dist/esm/validator/index.d.ts +6 -0
  535. package/dist/esm/validator/is-regular-expression.validator.d.ts +4 -0
  536. package/dist/esm/validator/only-one-of-listed-properties.validator.d.ts +5 -0
  537. package/package.json +22 -14
  538. package/dist/package.json +0 -97
package/README.md CHANGED
@@ -1,341 +1,456 @@
1
- # API Controller Configuration Documentation
1
+ <p align="center">
2
+ <img src="https://6jft62zmy9nx2oea.public.blob.vercel-storage.com/nestjs-crud-automator-HhXThTDhKyqznMLCgdmWhsPa287fIi.png" width="500" alt="project-logo">
3
+ </p>
2
4
 
3
- ## Overview
5
+ <h1 align="center">🚀 NestJS-Crud-Automator</h1>
6
+ <p align="center"><em>A powerful library for automating CRUD operations in NestJS applications</em></p>
4
7
 
5
- The API Controller configuration is a TypeScript-based configuration system that provides a comprehensive way to define API endpoints with authentication, request/response handling, validation, and data transformation capabilities.
8
+ <p align="center">
9
+ <a aria-label="ElsiKora logo" href="https://elsikora.com">
10
+ <img src="https://img.shields.io/badge/MADE%20BY%20ElsiKora-333333.svg?style=for-the-badge" alt="ElsiKora">
11
+ </a> <img src="https://img.shields.io/badge/version-blue.svg?style=for-the-badge&logo=npm&logoColor=white" alt="version"> <img src="https://img.shields.io/badge/typescript-blue.svg?style=for-the-badge&logo=typescript&logoColor=white" alt="typescript"> <img src="https://img.shields.io/badge/nestjs-red.svg?style=for-the-badge&logo=nestjs&logoColor=white" alt="nestjs"> <img src="https://img.shields.io/badge/typeorm-orange.svg?style=for-the-badge&logo=database&logoColor=white" alt="typeorm"> <img src="https://img.shields.io/badge/license-green.svg?style=for-the-badge&logo=license&logoColor=white" alt="license">
12
+ </p>
6
13
 
7
- ## Table of Contents
8
14
 
9
- - [Basic Configuration Structure](#basic-configuration-structure)
10
- - [Route Configuration](#route-configuration)
11
- - [Authentication](#authentication)
12
- - [Request Handling](#request-handling)
13
- - [Response Handling](#response-handling)
14
- - [Data Transformation](#data-transformation)
15
- - [Validation](#validation)
16
- - [Relations Management](#relations-management)
17
- - [Auto DTO Configuration](#auto-dto-configuration)
15
+ ## 📚 Table of Contents
16
+ - [Description](#-description)
17
+ - [Features](#-features)
18
+ - [Installation](#-installation)
19
+ - [Usage](#-usage)
20
+ - [Roadmap](#-roadmap)
21
+ - [FAQ](#-faq)
22
+ - [License](#-license)
18
23
 
19
- ## Basic Configuration Structure
20
24
 
21
- The base configuration object follows this interface:
25
+ ## 📖 Description
26
+ NestJS-Crud-Automator is a comprehensive library designed to reduce boilerplate code and accelerate development by automatically generating fully-featured CRUD operations for NestJS applications. By leveraging TypeORM entities and built-in decorators, developers can quickly scaffold controllers and services with standardized endpoints for creating, reading, updating, and deleting resources. The library provides rich validation, sophisticated request/response transformation, automatic Swagger documentation, and supports complex filtering operations for list endpoints. NestJS-Crud-Automator is ideal for enterprise applications, microservices architectures, and any project where consistent API design and reduced development time are priorities.
22
27
 
23
- ```typescript
24
- interface IApiControllerProperties<E> {
25
- entity: IApiBaseEntity;
26
- name?: string;
27
- path?: string;
28
- routes: {
29
- [R in EApiRouteType]?: TApiControllerPropertiesRoute<E, R>;
30
- };
31
- }
32
- ```
28
+ ## 🚀 Features
29
+ - **Zero-configuration CRUD controllers with automatic Swagger documentation**
30
+ - ✨ **Smart DTO generation for requests, responses, and query parameters**
31
+ - ✨ **Advanced filtering system with support for complex query operations**
32
+ - ✨ **Request transformation and validation pipeline**
33
+ - ✨ **Authentication and authorization integration**
34
+ - **Automatic relations handling with configurable loading strategies**
35
+ - ✨ **Comprehensive TypeScript support with full type safety**
36
+ - ✨ **Customizable error handling with correlation IDs for tracing**
37
+ - ✨ **Efficient throttling support to prevent API abuse**
38
+ - ✨ **ESM and CommonJS module support**
33
39
 
34
- ### Properties:
40
+ ## 🛠 Installation
41
+ ```bash
42
+ # Using npm
43
+ npm install @elsikora/nestjs-crud-automator
35
44
 
36
- - `entity`: The base entity class for the controller
37
- - `name`: Optional name for the controller
38
- - `path`: Optional URL path for the controller
39
- - `routes`: Object containing route configurations
45
+ # Using yarn
46
+ yarn add @elsikora/nestjs-crud-automator
40
47
 
41
- ## Route Configuration
48
+ # Using pnpm
49
+ pnpm add @elsikora/nestjs-crud-automator
42
50
 
43
- Routes are defined using the `EApiRouteType` enum, which includes:
51
+ # Using bun
52
+ bun add @elsikora/nestjs-crud-automator
44
53
 
45
- - CREATE
46
- - GET
47
- - GET_LIST
48
- - UPDATE
49
- - PARTIAL_UPDATE
50
- - DELETE
51
54
 
52
- Each route can be configured with:
55
+ Ensure you have the required peer dependencies installed:
53
56
 
54
- - Authentication settings
55
- - Request handling
56
- - Response handling
57
- - Data transformations
58
- - Validation rules
59
57
 
60
- Example:
61
-
62
- ```typescript
63
- {
64
- [EApiRouteType.CREATE]: {
65
- authentication: {...},
66
- request: {...},
67
- response: {...}
68
- }
69
- }
58
+ npm install @nestjs/common @nestjs/swagger typeorm class-transformer class-validator reflect-metadata
70
59
  ```
71
60
 
72
- ## Authentication
61
+ ## 💡 Usage
62
+ ## Basic Usage
63
+
64
+ NestJS-Crud-Automator provides a set of decorators that automate the creation of controllers and services for your entities.
73
65
 
74
- Authentication configuration allows you to specify:
66
+ ### Entity Definition
75
67
 
76
- - Bearer token strategies
77
- - Security strategies
78
- - Authentication guards
79
- - Authentication type
68
+ First, define your TypeORM entity with the `ApiPropertyDescribe` decorators to provide metadata for Swagger and validation:
80
69
 
81
70
  ```typescript
82
- interface IApiControllerPropertiesRouteAuthentication {
83
- bearerStrategies?: Array<string>;
84
- guard: Type<IAuthGuard>;
85
- securityStrategies?: Array<string>;
86
- type: EApiAuthenticationType;
71
+ import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
72
+ import { ApiPropertyDescribe } from '@elsikora/nestjs-crud-automator';
73
+ import { EApiPropertyDescribeType, EApiPropertyStringType } from '@elsikora/nestjs-crud-automator';
74
+
75
+ @Entity('users')
76
+ export class User {
77
+ @PrimaryGeneratedColumn('uuid')
78
+ @ApiPropertyDescribe({
79
+ type: EApiPropertyDescribeType.UUID,
80
+ description: 'Unique identifier'
81
+ })
82
+ id: string;
83
+
84
+ @Column()
85
+ @ApiPropertyDescribe({
86
+ type: EApiPropertyDescribeType.STRING,
87
+ description: 'User name',
88
+ format: EApiPropertyStringType.STRING,
89
+ minLength: 3,
90
+ maxLength: 50,
91
+ pattern: '/^[a-zA-Z0-9_-]+$/',
92
+ exampleValue: 'john_doe'
93
+ })
94
+ username: string;
95
+
96
+ @Column()
97
+ @ApiPropertyDescribe({
98
+ type: EApiPropertyDescribeType.STRING,
99
+ description: 'User email',
100
+ format: EApiPropertyStringType.EMAIL,
101
+ minLength: 5,
102
+ maxLength: 100,
103
+ pattern: '/^[\w-\.]+@([\w-]+\.)+[\w-]{2,}$/',
104
+ exampleValue: 'john@example.com'
105
+ })
106
+ email: string;
87
107
  }
88
108
  ```
89
109
 
90
- Example:
110
+ ### Service Implementation
111
+
112
+ Create a service that extends the base functionality:
91
113
 
92
114
  ```typescript
93
- authentication: {
94
- bearerStrategies: ["accountAuthorization"],
95
- guard: AccountGuard,
96
- securityStrategies: ["accountRequestSignature", "accountRequestTimestamp"],
97
- type: EApiAuthenticationType.ACCOUNT
115
+ import { Injectable } from '@nestjs/common';
116
+ import { InjectRepository } from '@nestjs/typeorm';
117
+ import { Repository } from 'typeorm';
118
+ import { ApiServiceBase, ApiService } from '@elsikora/nestjs-crud-automator';
119
+ import { User } from './user.entity';
120
+
121
+ @Injectable()
122
+ @ApiService({
123
+ entity: User
124
+ })
125
+ export class UserService extends ApiServiceBase<User> {
126
+ constructor(
127
+ @InjectRepository(User)
128
+ public repository: Repository<User>
129
+ ) {
130
+ super();
131
+ }
132
+
133
+ // You can override the default methods or add custom methods
134
+ async findByEmail(email: string): Promise<User | undefined> {
135
+ return this.repository.findOne({
136
+ where: { email }
137
+ });
138
+ }
98
139
  }
99
140
  ```
100
141
 
101
- ## Request Handling
102
-
103
- Request configuration includes:
142
+ ### Controller Implementation
104
143
 
105
- - Relations loading
106
- - Data transformation
107
- - Request validation
144
+ Implement a controller with automatic CRUD endpoints:
108
145
 
109
146
  ```typescript
110
- interface IApiControllerPropertiesRouteBaseRequest<E, R> {
111
- relations?: TApiControllerPropertiesRouteBaseRequestRelations<E>;
112
- transformers?: TApiControllerPropertiesRouteBaseRequestTransformers<E, R>;
113
- validators?: Array<IApiRequestValidator<E>>;
147
+ import { Controller } from '@nestjs/common';
148
+ import { ApiController } from '@elsikora/nestjs-crud-automator';
149
+ import { User } from './user.entity';
150
+ import { UserService } from './user.service';
151
+
152
+ @ApiController({
153
+ entity: User,
154
+ name: 'Users',
155
+ path: 'users',
156
+ routes: {
157
+ // Configure routes (all enabled by default)
158
+ }
159
+ })
160
+ @Controller('users')
161
+ export class UserController {
162
+ constructor(public service: UserService) {}
114
163
  }
115
164
  ```
116
165
 
117
- ### Relations Loading Strategies
166
+ ## Advanced Configuration
118
167
 
119
- Two strategies are available:
168
+ ### Custom Route Configuration
120
169
 
121
- 1. **AUTO**: Automatically loads relations
122
- 2. **MANUAL**: Manually specify relations to load
170
+ Customize each route with authentication, validation, and transformation:
123
171
 
124
172
  ```typescript
125
- relations: {
126
- loadRelations: true,
127
- relationsLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
128
- relationsToLoad: ["bank"],
129
- servicesLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
130
- relationsServices: {
131
- bank: "bankService"
173
+ import { JwtAuthGuard } from '../auth/jwt-auth.guard';
174
+ import { EApiControllerLoadRelationsStrategy, EApiAuthenticationType, EApiDtoType, EApiRouteType } from '@elsikora/nestjs-crud-automator';
175
+
176
+ @ApiController({
177
+ entity: User,
178
+ name: 'Users',
179
+ path: 'users',
180
+ routes: {
181
+ [EApiRouteType.CREATE]: {
182
+ authentication: {
183
+ guard: JwtAuthGuard,
184
+ type: EApiAuthenticationType.USER,
185
+ bearerStrategies: ['jwt']
186
+ },
187
+ request: {
188
+ validators: [
189
+ {
190
+ errorType: EErrorStringAction.VALIDATION_ERROR,
191
+ exception: BadRequestException,
192
+ validationFunction: (body: Partial<User>) => {
193
+ return body.username && body.username.length >= 3;
194
+ }
195
+ }
196
+ ],
197
+ transformers: {
198
+ [EApiDtoType.BODY]: [
199
+ {
200
+ key: 'createdAt',
201
+ type: EApiControllerRequestTransformerType.DYNAMIC,
202
+ value: TRANSFORMER_VALUE_DTO_CONSTANT.REQUEST_TIMESTAMP
203
+ }
204
+ ]
205
+ }
206
+ }
207
+ },
208
+ [EApiRouteType.GET_LIST]: {
209
+ request: {
210
+ relations: {
211
+ shouldLoadRelations: true,
212
+ relationsLoadStrategy: EApiControllerLoadRelationsStrategy.AUTO,
213
+ servicesLoadStrategy: EApiControllerLoadRelationsStrategy.AUTO
214
+ }
215
+ }
132
216
  }
133
- }
217
+ }
218
+ })
134
219
  ```
135
220
 
136
- ## Response Handling
137
-
138
- Response configuration allows you to:
221
+ ### Working with Relations
139
222
 
140
- - Specify relations to include
141
- - Transform response data
223
+ Configure automatic loading of relations:
142
224
 
143
225
  ```typescript
144
- interface IApiControllerPropertiesRouteBaseResponse<E, R> {
145
- relations?: FindOptionsRelations<E>;
146
- transformers?: TApiControllerPropertiesRouteBaseResponseTransformers<E, R>;
226
+ import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToMany } from 'typeorm';
227
+ import { ApiPropertyDescribe } from '@elsikora/nestjs-crud-automator';
228
+ import { EApiPropertyDescribeType } from '@elsikora/nestjs-crud-automator';
229
+
230
+ @Entity('posts')
231
+ export class Post {
232
+ @PrimaryGeneratedColumn('uuid')
233
+ @ApiPropertyDescribe({
234
+ type: EApiPropertyDescribeType.UUID,
235
+ description: 'Post ID'
236
+ })
237
+ id: string;
238
+
239
+ @Column()
240
+ @ApiPropertyDescribe({
241
+ type: EApiPropertyDescribeType.STRING,
242
+ // configuration...
243
+ })
244
+ title: string;
245
+
246
+ @ManyToOne(() => User)
247
+ @ApiPropertyDescribe({
248
+ type: EApiPropertyDescribeType.RELATION,
249
+ description: 'Post author'
250
+ })
251
+ author: User;
147
252
  }
148
- ```
149
-
150
- Example:
151
253
 
152
- ```typescript
153
- response: {
154
- relations: {
155
- bank: true,
156
- currency: true
157
- },
158
- transformers: {
159
- [EApiDtoType.RESPONSE]: [
160
- {
161
- key: "user",
162
- type: EApiControllerRequestTransformerType.DYNAMIC,
163
- value: TRANSFORMER_VALUE_DTO_CONSTANT.REQUEST_IP
164
- }
165
- ]
254
+ // In controller:
255
+ @ApiController({
256
+ entity: Post,
257
+ name: 'Posts',
258
+ path: 'posts',
259
+ routes: {
260
+ [EApiRouteType.GET]: {
261
+ request: {
262
+ relations: {
263
+ shouldLoadRelations: true,
264
+ relationsLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
265
+ relationsToLoad: ['author'],
266
+ servicesLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
267
+ relationsServices: {
268
+ author: 'userService'
269
+ }
270
+ }
271
+ }
166
272
  }
273
+ }
274
+ })
275
+ export class PostController {
276
+ constructor(
277
+ public service: PostService,
278
+ public userService: UserService
279
+ ) {}
167
280
  }
168
281
  ```
169
282
 
170
- ## Data Transformation
283
+ ## Advanced Filtering
171
284
 
172
- Transformers can be configured for different DTO types:
173
-
174
- - BODY
175
- - QUERY
176
- - REQUEST
177
- - RESPONSE
178
-
179
- Two types of transformers are available:
180
-
181
- 1. **DYNAMIC**: Uses predefined constants
182
- 2. **STATIC**: Uses static values
285
+ The GET_LIST endpoint supports sophisticated filtering operations:
183
286
 
184
287
  ```typescript
185
- type TApiRequestTransformer<E> = {
186
- key: keyof IApiGetListResponseResult<E> | keyof Partial<E> | keyof TApiFunctionGetListProperties<E>;
187
- } & (
188
- | {
189
- type: EApiControllerRequestTransformerType.DYNAMIC;
190
- value: (typeof TRANSFORMER_VALUE_DTO_CONSTANT)[keyof typeof TRANSFORMER_VALUE_DTO_CONSTANT];
191
- }
192
- | {
193
- type: EApiControllerRequestTransformerType.STATIC;
194
- value: string;
195
- }
196
- );
288
+ // Request example for filtering
289
+ // GET /users?page=1&limit=10&orderBy=createdAt&orderDirection=desc&username[operator]=cont&username[value]=john&createdAt[operator]=between&createdAt[values]=["2023-01-01","2023-12-31"]
197
290
  ```
198
291
 
199
- ## Validation
200
-
201
- Validators can be configured for requests with:
202
-
203
- - Error type
204
- - Exception class
205
- - Validation function
292
+ Supported operations include:
293
+ - `eq` - Equal
294
+ - `ne` - Not equal
295
+ - `gt` - Greater than
296
+ - `gte` - Greater than or equal
297
+ - `lt` - Less than
298
+ - `lte` - Less than or equal
299
+ - `in` - In array
300
+ - `notin` - Not in array
301
+ - `cont` - Contains (for strings)
302
+ - `starts` - Starts with
303
+ - `ends` - Ends with
304
+ - `isnull` - Is null
305
+ - `notnull` - Is not null
306
+ - `between` - Between two values
307
+
308
+ ## Custom DTOs and Validation
309
+
310
+ You can provide custom DTOs instead of auto-generated ones:
206
311
 
207
312
  ```typescript
208
- interface IApiRequestValidator<E> {
209
- errorType: EErrorStringAction;
210
- exception: TApiException;
211
- validationFunction: (entity: DeepPartial<E> | Partial<E> | TApiFunctionGetListProperties<E>) => boolean | Promise<boolean>;
313
+ import { IsEmail, IsString, MinLength } from 'class-validator';
314
+ import { ApiProperty } from '@nestjs/swagger';
315
+
316
+ export class CreateUserDto {
317
+ @ApiProperty()
318
+ @IsString()
319
+ @MinLength(3)
320
+ username: string;
321
+
322
+ @ApiProperty()
323
+ @IsEmail()
324
+ email: string;
212
325
  }
213
- ```
214
-
215
- Example:
216
326
 
217
- ```typescript
218
- validators: [
219
- {
220
- errorType: EErrorStringAction.ADDRESS_NOT_MATCH_PATTERN,
221
- exception: BadRequestException,
222
- validationFunction: (account: Partial<Account>): boolean => (account.id?.includes("7") ? account.id.includes("AAAA") : true),
223
- },
224
- ];
327
+ // In controller:
328
+ @ApiController({
329
+ entity: User,
330
+ name: 'Users',
331
+ path: 'users',
332
+ routes: {
333
+ [EApiRouteType.CREATE]: {
334
+ dto: {
335
+ body: CreateUserDto,
336
+ response: UserResponseDto
337
+ }
338
+ }
339
+ }
340
+ })
225
341
  ```
226
342
 
227
- ## Auto DTO Configuration
343
+ ## Throttling and Rate Limiting
228
344
 
229
- Auto DTO allows automatic Data Transfer Object configuration:
345
+ Implement rate limiting on endpoints:
230
346
 
231
347
  ```typescript
232
- autoDto?: {
233
- [key in EApiDtoType]?: IApiControllerPropertiesRouteAutoDtoConfig;
234
- };
235
- ```
348
+ import { EApiRouteType } from '@elsikora/nestjs-crud-automator';
236
349
 
237
- Example:
238
-
239
- ```typescript
240
- autoDto: {
241
- [EApiDtoType.REQUEST]: {
242
- validators: [
243
- {
244
- constraintClass: HasAtLeastOneOfListedProperties,
245
- options: ["hybrid", "currencyId"]
246
- }
247
- ]
350
+ @ApiController({
351
+ entity: User,
352
+ name: 'Users',
353
+ path: 'users',
354
+ routes: {
355
+ [EApiRouteType.CREATE]: {
356
+ // Apply method-level throttling
357
+ decorators: [
358
+ ApiMethod({
359
+ throttler: {
360
+ limit: 5,
361
+ ttl: 60000 // 1 minute
362
+ }
363
+ })
364
+ ]
248
365
  }
249
- }
366
+ }
367
+ })
250
368
  ```
251
369
 
252
- ## Usage Example
370
+ ## Correlation ID for Request Tracing
253
371
 
254
- Here's a complete example of a route configuration:
372
+ Use the built-in correlation ID interceptor for request tracing:
255
373
 
256
374
  ```typescript
257
- [EApiRouteType.CREATE]: {
258
- authentication: {
259
- bearerStrategies: ["accountAuthorization"],
260
- guard: AccountGuard,
261
- securityStrategies: ["accountRequestSignature", "accountRequestTimestamp"],
262
- type: EApiAuthenticationType.ACCOUNT
263
- },
264
- request: {
265
- relations: {
266
- loadRelations: true,
267
- relationsLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
268
- relationsServices: {
269
- bank: "bankService"
270
- },
271
- relationsToLoad: ["bank"],
272
- servicesLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL
273
- },
274
- transformers: {
275
- [EApiDtoType.BODY]: [
276
- {
277
- key: "user",
278
- type: EApiControllerRequestTransformerType.DYNAMIC,
279
- value: TRANSFORMER_VALUE_DTO_CONSTANT.AUTHORIZED_ENTITY
280
- }
281
- ]
282
- },
283
- validators: [
284
- {
285
- errorType: EErrorStringAction.ADDRESS_NOT_MATCH_PATTERN,
286
- exception: BadRequestException,
287
- validationFunction: (account: Partial<Account>): boolean =>
288
- (account.id?.includes("7") ? account.id.includes("AAAA") : true)
289
- }
290
- ]
375
+ import { CorrelationIDResponseBodyInterceptor } from '@elsikora/nestjs-crud-automator';
376
+
377
+ @Module({
378
+ providers: [
379
+ {
380
+ provide: APP_INTERCEPTOR,
381
+ useClass: CorrelationIDResponseBodyInterceptor,
291
382
  },
292
- response: {
293
- relations: {
294
- bank: true,
295
- currency: true
296
- },
297
- transformers: {
298
- [EApiDtoType.RESPONSE]: [
299
- {
300
- key: "user",
301
- type: EApiControllerRequestTransformerType.DYNAMIC,
302
- value: TRANSFORMER_VALUE_DTO_CONSTANT.REQUEST_IP
303
- }
304
- ]
305
- }
306
- }
307
- }
383
+ ],
384
+ })
385
+ export class AppModule {}
308
386
  ```
309
387
 
310
- ## Best Practices
311
-
312
- 1. **Authentication**
313
-
314
- - Always specify appropriate bearer and security strategies
315
- - Use proper guards for route protection
316
- - Choose the correct authentication type
317
-
318
- 2. **Relations**
319
-
320
- - Use MANUAL strategy when you need precise control over relation loading
321
- - Use AUTO strategy for simpler cases
322
- - Always specify required services when using MANUAL strategy
323
-
324
- 3. **Validation**
325
-
326
- - Implement comprehensive validation rules
327
- - Use appropriate error types and exceptions
328
- - Consider both sync and async validation functions
329
-
330
- 4. **Transformation**
331
- - Use DYNAMIC transformers for runtime values
332
- - Use STATIC transformers for constant values
333
- - Consider the DTO type when applying transformations
334
-
335
- ## Notes
336
-
337
- - All configurations are type-safe with TypeScript
338
- - Relations loading can be controlled at a granular level
339
- - Transformers can be applied at multiple stages of request/response handling
340
- - Validation can be both synchronous and asynchronous
341
- - Auto DTO configuration provides a simplified way to handle data transfer objects
388
+ This will ensure all responses and errors include a correlation ID for tracing through logs.
389
+
390
+ ## 🛣 Roadmap
391
+ | Task / Feature | Status |
392
+ |---------------|--------|
393
+ | ## Future Development | 🚧 In Progress |
394
+ | - GraphQL support with automatic query and mutation generation | 🚧 In Progress |
395
+ | - Integration with NestJS caching mechanisms | 🚧 In Progress |
396
+ | - Extension to support NoSQL databases beyond TypeORM | 🚧 In Progress |
397
+ | - Event sourcing support for audit logging | 🚧 In Progress |
398
+ | - Expanded filtering capabilities with full-text search | 🚧 In Progress |
399
+ | - Integration with file upload handling | 🚧 In Progress |
400
+ | - Custom response serialization strategies | 🚧 In Progress |
401
+ | - Enhanced performance optimization options | 🚧 In Progress |
402
+ | - More comprehensive test utilities | 🚧 In Progress |
403
+ | - Custom pagination strategies | 🚧 In Progress |
404
+ | (done) Zero-configuration CRUD controllers with automatic Swagger documentation | 🚧 In Progress |
405
+ | (done) Smart DTO generation for requests, responses, and query parameters | 🚧 In Progress |
406
+ | (done) Advanced filtering system with support for complex query operations | 🚧 In Progress |
407
+
408
+ ## ❓ FAQ
409
+ ## Frequently Asked Questions
410
+
411
+ ### Does this library work with NestJS microservices?
412
+ Yes, NestJS-Crud-Automator is designed to work with both monolithic NestJS applications and microservices architectures.
413
+
414
+ ### How does performance compare to manually written controllers?
415
+ The library is optimized for performance and should have minimal overhead compared to manually written controllers. In many cases, the standardized patterns may even lead to better performance through consistent implementations.
416
+
417
+ ### Can I use this with custom database schemas?
418
+ Yes, as long as you use TypeORM, the library works with any valid entity configuration, including custom database schemas.
419
+
420
+ ### How can I extend the automatically generated endpoints?
421
+ You can always add additional methods to your controller that handle special cases or extend the functionality of the auto-generated endpoints.
422
+
423
+ ### Is there a way to disable certain CRUD operations?
424
+ Yes, you can disable any operation by setting `isEnabled: false` in the route configuration object.
425
+
426
+ ### How does this library handle transactions?
427
+ The library uses TypeORM's underlying transaction mechanisms. You can implement transaction handling in your custom service methods.
428
+
429
+ ### Does this work with MongoDB?
430
+ Yes, as long as you use TypeORM with MongoDB, the library should work properly with MongoDB entities.
431
+
432
+ ### How can I migrate from the base NestJS CRUD module?
433
+ The library provides a significantly different API from NestJS's CRUD module, so migration will require changing your decorators and service implementations. However, the entity structure can remain largely the same.
434
+
435
+ ## 🔒 License
436
+ This project is licensed under **MIT License
437
+
438
+ Copyright (c) 2025 ElsiKora
439
+
440
+ Permission is hereby granted, free of charge, to any person obtaining a copy
441
+ of this software and associated documentation files (the "Software"), to deal
442
+ in the Software without restriction, including without limitation the rights
443
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
444
+ copies of the Software, and to permit persons to whom the Software is
445
+ furnished to do so, subject to the following conditions:
446
+
447
+ The above copyright notice and this permission notice shall be included in all
448
+ copies or substantial portions of the Software.
449
+
450
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
451
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
452
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
453
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
454
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
455
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
456
+ SOFTWARE.**.