@infrab4a/connect 4.0.2-beta.9 → 4.0.3-beta.0

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 (682) hide show
  1. package/README.md +24 -0
  2. package/domain/catalog/helpers/index.d.ts +1 -0
  3. package/domain/catalog/helpers/round-product-price.helper.d.ts +4 -0
  4. package/domain/catalog/index.d.ts +3 -0
  5. package/domain/catalog/models/category-base.d.ts +30 -0
  6. package/domain/catalog/models/category-collection-children.d.ts +13 -0
  7. package/domain/catalog/models/category-filter.d.ts +13 -0
  8. package/domain/catalog/models/category-for-product.d.ts +5 -0
  9. package/domain/catalog/models/category.d.ts +7 -0
  10. package/domain/catalog/models/enums/index.d.ts +2 -0
  11. package/domain/catalog/models/enums/product-genders.enum.d.ts +5 -0
  12. package/domain/catalog/models/enums/shops.enum.d.ts +6 -0
  13. package/domain/catalog/models/filter-option.d.ts +9 -0
  14. package/domain/catalog/models/filter.d.ts +12 -0
  15. package/domain/catalog/models/index.d.ts +11 -0
  16. package/domain/catalog/models/kit-product.d.ts +12 -0
  17. package/domain/catalog/models/product-base.d.ts +40 -0
  18. package/domain/catalog/models/product-for-category.d.ts +7 -0
  19. package/domain/catalog/models/product-for-kit.d.ts +7 -0
  20. package/domain/catalog/models/product.d.ts +9 -0
  21. package/domain/catalog/models/types/category-condition.type.d.ts +4 -0
  22. package/domain/catalog/models/types/category-metadata.type.d.ts +4 -0
  23. package/domain/catalog/models/types/category-product.d.ts +4 -0
  24. package/domain/catalog/models/types/index.d.ts +11 -0
  25. package/domain/catalog/models/types/product-evaluation.type.d.ts +6 -0
  26. package/domain/catalog/models/types/product-gender.type.d.ts +1 -0
  27. package/domain/catalog/models/types/product-metadata.type.d.ts +4 -0
  28. package/domain/catalog/models/types/product-review.type.d.ts +17 -0
  29. package/domain/catalog/models/types/shop-description.type.d.ts +8 -0
  30. package/domain/catalog/models/types/shop-price.type.d.ts +6 -0
  31. package/domain/catalog/models/types/stock.type.d.ts +3 -0
  32. package/domain/catalog/models/types/variant-grade.type.d.ts +4 -0
  33. package/domain/catalog/models/variant.d.ts +17 -0
  34. package/domain/catalog/models/wishlist.d.ts +8 -0
  35. package/domain/catalog/repositories/category-collection-children.repository.d.ts +4 -0
  36. package/domain/catalog/repositories/category-filter.repository.d.ts +6 -0
  37. package/domain/catalog/repositories/category.repository.d.ts +18 -0
  38. package/domain/catalog/repositories/filter-option.repository.d.ts +4 -0
  39. package/domain/catalog/repositories/filter.repository.d.ts +4 -0
  40. package/domain/catalog/repositories/index.d.ts +9 -0
  41. package/domain/catalog/repositories/product.repository.d.ts +15 -0
  42. package/domain/catalog/repositories/subscription-product.repository.d.ts +4 -0
  43. package/domain/catalog/repositories/variant.repository.d.ts +4 -0
  44. package/domain/catalog/repositories/wishlist.repository.d.ts +6 -0
  45. package/domain/generic/index.d.ts +2 -0
  46. package/domain/generic/model/base.model.d.ts +14 -0
  47. package/domain/generic/model/identifier-fields.d.ts +4 -0
  48. package/domain/generic/model/index.d.ts +3 -0
  49. package/domain/generic/model/types/base-model-builder.type.d.ts +17 -0
  50. package/domain/generic/model/types/identifier-model.type.d.ts +8 -0
  51. package/domain/generic/model/types/index.d.ts +5 -0
  52. package/domain/generic/model/types/model-base-structure.type.d.ts +12 -0
  53. package/domain/generic/model/types/non-function-properties.type.d.ts +12 -0
  54. package/domain/generic/model/types/non-function-property-name.type.d.ts +13 -0
  55. package/domain/generic/repository/create.repository.d.ts +8 -0
  56. package/domain/generic/repository/crud.repository.d.ts +19 -0
  57. package/domain/generic/repository/delete.repository.d.ts +7 -0
  58. package/domain/generic/repository/enums/index.d.ts +2 -0
  59. package/domain/generic/repository/enums/update-option-actions.enum.d.ts +7 -0
  60. package/domain/generic/repository/enums/where.enum.d.ts +14 -0
  61. package/domain/generic/repository/find.repository.d.ts +17 -0
  62. package/domain/generic/repository/get.repository.d.ts +5 -0
  63. package/domain/generic/repository/index.d.ts +9 -0
  64. package/domain/generic/repository/read.repository.d.ts +14 -0
  65. package/domain/generic/repository/types/index.d.ts +6 -0
  66. package/domain/generic/repository/types/repository-find-filters.type.d.ts +13 -0
  67. package/domain/generic/repository/types/repository-find-result.type.d.ts +14 -0
  68. package/domain/generic/repository/types/repository-limit-options.type.d.ts +4 -0
  69. package/domain/generic/repository/types/repository-order-by-list.type.d.ts +5 -0
  70. package/domain/generic/repository/types/repository-update-params.type.d.ts +11 -0
  71. package/domain/generic/repository/types/where-options.type.d.ts +2 -0
  72. package/domain/generic/repository/update.repository.d.ts +6 -0
  73. package/domain/index.d.ts +6 -0
  74. package/domain/location/index.d.ts +1 -0
  75. package/domain/location/models/address.d.ts +24 -0
  76. package/domain/location/models/index.d.ts +2 -0
  77. package/domain/location/models/types/index.d.ts +3 -0
  78. package/domain/location/models/types/location-bound.type.d.ts +6 -0
  79. package/domain/location/models/types/location-geometry.type.d.ts +7 -0
  80. package/domain/location/models/types/location-lat-lng.type.d.ts +4 -0
  81. package/domain/shop-settings/enums/filter-type.enum.d.ts +19 -0
  82. package/domain/shop-settings/enums/index.d.ts +2 -0
  83. package/domain/shop-settings/enums/questions-filters.enum.d.ts +19 -0
  84. package/domain/shop-settings/helpers/beauty-questions.helper.d.ts +9 -0
  85. package/domain/shop-settings/helpers/index.d.ts +1 -0
  86. package/domain/shop-settings/index.d.ts +4 -0
  87. package/domain/shop-settings/models/home.d.ts +18 -0
  88. package/domain/shop-settings/models/index.d.ts +4 -0
  89. package/domain/shop-settings/models/shop-menu.d.ts +7 -0
  90. package/domain/shop-settings/models/shop-settings.d.ts +9 -0
  91. package/domain/shop-settings/models/types/banner.type.d.ts +6 -0
  92. package/domain/shop-settings/models/types/benefit.type.d.ts +5 -0
  93. package/domain/shop-settings/models/types/home-data.type.d.ts +15 -0
  94. package/domain/shop-settings/models/types/index.d.ts +10 -0
  95. package/domain/shop-settings/models/types/menu-nav.type.d.ts +8 -0
  96. package/domain/shop-settings/models/types/shop-banner.type.d.ts +12 -0
  97. package/domain/shop-settings/models/types/shop-brands.type.d.ts +10 -0
  98. package/domain/shop-settings/models/types/shop-carousel.type.d.ts +5 -0
  99. package/domain/shop-settings/models/types/shop-collection.type.d.ts +9 -0
  100. package/domain/shop-settings/models/types/shop-section.type.d.ts +9 -0
  101. package/domain/shop-settings/models/types/sub-menu.type.d.ts +8 -0
  102. package/domain/shop-settings/repositories/home.repository.d.ts +4 -0
  103. package/domain/shop-settings/repositories/index.d.ts +3 -0
  104. package/domain/shop-settings/repositories/shop-menu.repository.d.ts +4 -0
  105. package/domain/shop-settings/repositories/shop-settings.repository.d.ts +4 -0
  106. package/domain/shopping/index.d.ts +2 -0
  107. package/domain/shopping/models/buy-2-win.d.ts +18 -0
  108. package/domain/shopping/models/campaign-dashboard.d.ts +15 -0
  109. package/domain/shopping/models/campaign-hashtag.d.ts +18 -0
  110. package/domain/shopping/models/checkout.d.ts +26 -0
  111. package/domain/shopping/models/coupons/coupon.d.ts +60 -0
  112. package/domain/shopping/models/coupons/enums/coupon-club-mens.enum.d.ts +5 -0
  113. package/domain/shopping/models/coupons/enums/coupon-subtypes.enum.d.ts +4 -0
  114. package/domain/shopping/models/coupons/enums/coupon-types.enum.d.ts +4 -0
  115. package/domain/shopping/models/coupons/enums/exclusivities.enum.d.ts +8 -0
  116. package/domain/shopping/models/coupons/enums/index.d.ts +3 -0
  117. package/domain/shopping/models/coupons/index.d.ts +2 -0
  118. package/domain/shopping/models/enums/checkout-types.enum.d.ts +5 -0
  119. package/domain/shopping/models/enums/index.d.ts +2 -0
  120. package/domain/shopping/models/enums/order-status.enum.d.ts +10 -0
  121. package/domain/shopping/models/index.d.ts +12 -0
  122. package/domain/shopping/models/line-item.d.ts +8 -0
  123. package/domain/shopping/models/order.d.ts +10 -0
  124. package/domain/shopping/models/payment.d.ts +67 -0
  125. package/domain/shopping/models/shipping-method.d.ts +17 -0
  126. package/domain/shopping/models/subscription/checkout.d.ts +20 -0
  127. package/domain/shopping/models/subscription/index.d.ts +2 -0
  128. package/domain/shopping/models/subscription/plan.d.ts +10 -0
  129. package/domain/shopping/models/types/index.d.ts +7 -0
  130. package/domain/shopping/models/types/payment-address.type.d.ts +12 -0
  131. package/domain/shopping/models/types/payment-billing.type.d.ts +7 -0
  132. package/domain/shopping/models/types/payment-card.type.d.ts +14 -0
  133. package/domain/shopping/models/types/payment-customer.type.d.ts +18 -0
  134. package/domain/shopping/models/types/payment-document.type.d.ts +6 -0
  135. package/domain/shopping/models/types/payment-item.type.d.ts +11 -0
  136. package/domain/shopping/models/types/payment-shipping.type.d.ts +10 -0
  137. package/domain/shopping/repositories/buy-2-win.repository.d.ts +4 -0
  138. package/domain/shopping/repositories/campaign-dashboard.repository.d.ts +4 -0
  139. package/domain/shopping/repositories/campaign-hashtag.repository.d.ts +4 -0
  140. package/domain/shopping/repositories/checkout.repository.d.ts +4 -0
  141. package/domain/shopping/repositories/coupon.repository.d.ts +4 -0
  142. package/domain/shopping/repositories/index.d.ts +9 -0
  143. package/domain/shopping/repositories/legacy-order.repository.d.ts +3 -0
  144. package/domain/shopping/repositories/order.repository.d.ts +4 -0
  145. package/domain/shopping/repositories/payment.repository.d.ts +4 -0
  146. package/domain/shopping/repositories/subscription/checkout.repository.d.ts +4 -0
  147. package/domain/shopping/repositories/subscription/index.d.ts +2 -0
  148. package/domain/shopping/repositories/subscription/plan.repository.d.ts +4 -0
  149. package/domain/users/errors/index.d.ts +3 -0
  150. package/domain/users/errors/unauthorized.error.d.ts +4 -0
  151. package/domain/users/errors/user-already-registered.error.d.ts +4 -0
  152. package/domain/users/errors/weak-password.error.d.ts +4 -0
  153. package/domain/users/index.d.ts +5 -0
  154. package/domain/users/models/beauty-profile.d.ts +11 -0
  155. package/domain/users/models/enums/accessory-importances.enum.d.ts +5 -0
  156. package/domain/users/models/enums/area.enum.d.ts +11 -0
  157. package/domain/users/models/enums/beard-problems.enum.d.ts +9 -0
  158. package/domain/users/models/enums/beard-sizes.enum.d.ts +7 -0
  159. package/domain/users/models/enums/beauty-product-importances.enum.d.ts +6 -0
  160. package/domain/users/models/enums/body-problems.enum.d.ts +11 -0
  161. package/domain/users/models/enums/body-shapes.enum.d.ts +7 -0
  162. package/domain/users/models/enums/body-tattoos.enum.d.ts +5 -0
  163. package/domain/users/models/enums/face-skin-oilinesses.enum.d.ts +7 -0
  164. package/domain/users/models/enums/face-skin-problems.enum.d.ts +10 -0
  165. package/domain/users/models/enums/face-skin-tones.enum.d.ts +8 -0
  166. package/domain/users/models/enums/family-incomes.enum.d.ts +8 -0
  167. package/domain/users/models/enums/fragrance-importances.enum.d.ts +5 -0
  168. package/domain/users/models/enums/hair-colors.enum.d.ts +10 -0
  169. package/domain/users/models/enums/hair-problems.enum.d.ts +10 -0
  170. package/domain/users/models/enums/hair-strands.enum.d.ts +8 -0
  171. package/domain/users/models/enums/hair-types.enum.d.ts +7 -0
  172. package/domain/users/models/enums/index.d.ts +20 -0
  173. package/domain/users/models/enums/office-position.enum.d.ts +6 -0
  174. package/domain/users/models/enums/product-spents.enum.d.ts +8 -0
  175. package/domain/users/models/enums/user-type.enum.d.ts +8 -0
  176. package/domain/users/models/index.d.ts +7 -0
  177. package/domain/users/models/lead.d.ts +8 -0
  178. package/domain/users/models/subscription/edition.d.ts +16 -0
  179. package/domain/users/models/subscription/enums/billing-status.enum.d.ts +3 -0
  180. package/domain/users/models/subscription/enums/edition-status.enum.d.ts +4 -0
  181. package/domain/users/models/subscription/enums/index.d.ts +4 -0
  182. package/domain/users/models/subscription/enums/payment-type.enum.d.ts +5 -0
  183. package/domain/users/models/subscription/enums/status.enum.d.ts +4 -0
  184. package/domain/users/models/subscription/index.d.ts +4 -0
  185. package/domain/users/models/subscription/payment.d.ts +13 -0
  186. package/domain/users/models/subscription/subscription.d.ts +28 -0
  187. package/domain/users/models/user-address.d.ts +6 -0
  188. package/domain/users/models/user-payment-method.d.ts +14 -0
  189. package/domain/users/models/user.d.ts +27 -0
  190. package/domain/users/repositories/beauty-profile.repository.d.ts +4 -0
  191. package/domain/users/repositories/edition.repository.d.ts +4 -0
  192. package/domain/users/repositories/index.d.ts +8 -0
  193. package/domain/users/repositories/lead.repository.d.ts +4 -0
  194. package/domain/users/repositories/subscription-payment.repository.d.ts +4 -0
  195. package/domain/users/repositories/subscription.repository.d.ts +4 -0
  196. package/domain/users/repositories/user-address.repository.d.ts +4 -0
  197. package/domain/users/repositories/user-payment-method.repository.d.ts +4 -0
  198. package/domain/users/repositories/user.repository.d.ts +6 -0
  199. package/domain/users/services/authentication.service.d.ts +12 -0
  200. package/domain/users/services/index.d.ts +3 -0
  201. package/domain/users/services/register.service.d.ts +7 -0
  202. package/domain/users/services/types/basic-user-data.type.d.ts +4 -0
  203. package/domain/users/services/types/index.d.ts +1 -0
  204. package/domain/users/use-cases/authentication.d.ts +21 -0
  205. package/domain/users/use-cases/index.d.ts +4 -0
  206. package/domain/users/use-cases/recovery-password.d.ts +6 -0
  207. package/domain/users/use-cases/register.d.ts +13 -0
  208. package/domain/users/use-cases/signout.d.ts +6 -0
  209. package/errors/duplicated-results.error.d.ts +4 -0
  210. package/errors/index.d.ts +4 -0
  211. package/errors/invalid-argument.error.d.ts +4 -0
  212. package/errors/not-found.error.d.ts +4 -0
  213. package/errors/required-argument.error.d.ts +6 -0
  214. package/esm2020/domain/catalog/helpers/index.mjs +2 -0
  215. package/esm2020/domain/catalog/helpers/round-product-price.helper.mjs +15 -0
  216. package/esm2020/domain/catalog/index.mjs +4 -0
  217. package/esm2020/domain/catalog/models/category-base.mjs +18 -0
  218. package/esm2020/domain/catalog/models/category-collection-children.mjs +13 -0
  219. package/esm2020/domain/catalog/models/category-filter.mjs +19 -0
  220. package/esm2020/domain/catalog/models/category-for-product.mjs +7 -0
  221. package/esm2020/domain/catalog/models/category.mjs +14 -0
  222. package/esm2020/domain/catalog/models/enums/index.mjs +3 -0
  223. package/esm2020/domain/catalog/models/enums/product-genders.enum.mjs +7 -0
  224. package/esm2020/domain/catalog/models/enums/shops.enum.mjs +8 -0
  225. package/esm2020/domain/catalog/models/filter-option.mjs +7 -0
  226. package/esm2020/domain/catalog/models/filter.mjs +7 -0
  227. package/esm2020/domain/catalog/models/index.mjs +12 -0
  228. package/esm2020/domain/catalog/models/kit-product.mjs +18 -0
  229. package/esm2020/domain/catalog/models/product-base.mjs +25 -0
  230. package/esm2020/domain/catalog/models/product-for-category.mjs +14 -0
  231. package/esm2020/domain/catalog/models/product-for-kit.mjs +14 -0
  232. package/esm2020/domain/catalog/models/product.mjs +19 -0
  233. package/esm2020/domain/catalog/models/types/category-condition.type.mjs +2 -0
  234. package/esm2020/domain/catalog/models/types/category-metadata.type.mjs +2 -0
  235. package/esm2020/domain/catalog/models/types/category-product.mjs +2 -0
  236. package/esm2020/domain/catalog/models/types/index.mjs +12 -0
  237. package/esm2020/domain/catalog/models/types/product-evaluation.type.mjs +2 -0
  238. package/esm2020/domain/catalog/models/types/product-gender.type.mjs +2 -0
  239. package/esm2020/domain/catalog/models/types/product-metadata.type.mjs +2 -0
  240. package/esm2020/domain/catalog/models/types/product-review.type.mjs +2 -0
  241. package/esm2020/domain/catalog/models/types/shop-description.type.mjs +2 -0
  242. package/esm2020/domain/catalog/models/types/shop-price.type.mjs +2 -0
  243. package/esm2020/domain/catalog/models/types/stock.type.mjs +2 -0
  244. package/esm2020/domain/catalog/models/types/variant-grade.type.mjs +2 -0
  245. package/esm2020/domain/catalog/models/variant.mjs +7 -0
  246. package/esm2020/domain/catalog/models/wishlist.mjs +7 -0
  247. package/esm2020/domain/catalog/repositories/category-collection-children.repository.mjs +2 -0
  248. package/esm2020/domain/catalog/repositories/category-filter.repository.mjs +2 -0
  249. package/esm2020/domain/catalog/repositories/category.repository.mjs +2 -0
  250. package/esm2020/domain/catalog/repositories/filter-option.repository.mjs +2 -0
  251. package/esm2020/domain/catalog/repositories/filter.repository.mjs +2 -0
  252. package/esm2020/domain/catalog/repositories/index.mjs +10 -0
  253. package/esm2020/domain/catalog/repositories/product.repository.mjs +2 -0
  254. package/esm2020/domain/catalog/repositories/subscription-product.repository.mjs +2 -0
  255. package/esm2020/domain/catalog/repositories/variant.repository.mjs +2 -0
  256. package/esm2020/domain/catalog/repositories/wishlist.repository.mjs +2 -0
  257. package/esm2020/domain/generic/index.mjs +3 -0
  258. package/esm2020/domain/generic/model/base.model.mjs +24 -0
  259. package/esm2020/domain/generic/model/identifier-fields.mjs +2 -0
  260. package/esm2020/domain/generic/model/index.mjs +4 -0
  261. package/esm2020/domain/generic/model/types/base-model-builder.type.mjs +2 -0
  262. package/esm2020/domain/generic/model/types/identifier-model.type.mjs +2 -0
  263. package/esm2020/domain/generic/model/types/index.mjs +6 -0
  264. package/esm2020/domain/generic/model/types/model-base-structure.type.mjs +2 -0
  265. package/esm2020/domain/generic/model/types/non-function-properties.type.mjs +2 -0
  266. package/esm2020/domain/generic/model/types/non-function-property-name.type.mjs +2 -0
  267. package/esm2020/domain/generic/repository/create.repository.mjs +2 -0
  268. package/esm2020/domain/generic/repository/crud.repository.mjs +2 -0
  269. package/esm2020/domain/generic/repository/delete.repository.mjs +2 -0
  270. package/esm2020/domain/generic/repository/enums/index.mjs +3 -0
  271. package/esm2020/domain/generic/repository/enums/update-option-actions.enum.mjs +9 -0
  272. package/esm2020/domain/generic/repository/enums/where.enum.mjs +16 -0
  273. package/esm2020/domain/generic/repository/find.repository.mjs +2 -0
  274. package/esm2020/domain/generic/repository/get.repository.mjs +2 -0
  275. package/esm2020/domain/generic/repository/index.mjs +10 -0
  276. package/esm2020/domain/generic/repository/read.repository.mjs +2 -0
  277. package/esm2020/domain/generic/repository/types/index.mjs +7 -0
  278. package/esm2020/domain/generic/repository/types/repository-find-filters.type.mjs +2 -0
  279. package/esm2020/domain/generic/repository/types/repository-find-result.type.mjs +2 -0
  280. package/esm2020/domain/generic/repository/types/repository-limit-options.type.mjs +2 -0
  281. package/esm2020/domain/generic/repository/types/repository-order-by-list.type.mjs +2 -0
  282. package/esm2020/domain/generic/repository/types/repository-update-params.type.mjs +2 -0
  283. package/esm2020/domain/generic/repository/types/where-options.type.mjs +2 -0
  284. package/esm2020/domain/generic/repository/update.repository.mjs +2 -0
  285. package/esm2020/domain/index.mjs +7 -0
  286. package/esm2020/domain/location/index.mjs +2 -0
  287. package/esm2020/domain/location/models/address.mjs +7 -0
  288. package/esm2020/domain/location/models/index.mjs +3 -0
  289. package/esm2020/domain/location/models/types/index.mjs +4 -0
  290. package/esm2020/domain/location/models/types/location-bound.type.mjs +2 -0
  291. package/esm2020/domain/location/models/types/location-geometry.type.mjs +2 -0
  292. package/esm2020/domain/location/models/types/location-lat-lng.type.mjs +2 -0
  293. package/esm2020/domain/shop-settings/enums/filter-type.enum.mjs +21 -0
  294. package/esm2020/domain/shop-settings/enums/index.mjs +3 -0
  295. package/esm2020/domain/shop-settings/enums/questions-filters.enum.mjs +21 -0
  296. package/esm2020/domain/shop-settings/helpers/beauty-questions.helper.mjs +47 -0
  297. package/esm2020/domain/shop-settings/helpers/index.mjs +2 -0
  298. package/esm2020/domain/shop-settings/index.mjs +5 -0
  299. package/esm2020/domain/shop-settings/models/home.mjs +7 -0
  300. package/esm2020/domain/shop-settings/models/index.mjs +5 -0
  301. package/esm2020/domain/shop-settings/models/shop-menu.mjs +7 -0
  302. package/esm2020/domain/shop-settings/models/shop-settings.mjs +7 -0
  303. package/esm2020/domain/shop-settings/models/types/banner.type.mjs +2 -0
  304. package/esm2020/domain/shop-settings/models/types/benefit.type.mjs +2 -0
  305. package/esm2020/domain/shop-settings/models/types/home-data.type.mjs +2 -0
  306. package/esm2020/domain/shop-settings/models/types/index.mjs +11 -0
  307. package/esm2020/domain/shop-settings/models/types/menu-nav.type.mjs +2 -0
  308. package/esm2020/domain/shop-settings/models/types/shop-banner.type.mjs +2 -0
  309. package/esm2020/domain/shop-settings/models/types/shop-brands.type.mjs +2 -0
  310. package/esm2020/domain/shop-settings/models/types/shop-carousel.type.mjs +2 -0
  311. package/esm2020/domain/shop-settings/models/types/shop-collection.type.mjs +2 -0
  312. package/esm2020/domain/shop-settings/models/types/shop-section.type.mjs +2 -0
  313. package/esm2020/domain/shop-settings/models/types/sub-menu.type.mjs +2 -0
  314. package/esm2020/domain/shop-settings/repositories/home.repository.mjs +2 -0
  315. package/esm2020/domain/shop-settings/repositories/index.mjs +4 -0
  316. package/esm2020/domain/shop-settings/repositories/shop-menu.repository.mjs +2 -0
  317. package/esm2020/domain/shop-settings/repositories/shop-settings.repository.mjs +2 -0
  318. package/esm2020/domain/shopping/index.mjs +3 -0
  319. package/esm2020/domain/shopping/models/buy-2-win.mjs +14 -0
  320. package/esm2020/domain/shopping/models/campaign-dashboard.mjs +7 -0
  321. package/esm2020/domain/shopping/models/campaign-hashtag.mjs +7 -0
  322. package/esm2020/domain/shopping/models/checkout.mjs +37 -0
  323. package/esm2020/domain/shopping/models/coupons/coupon.mjs +38 -0
  324. package/esm2020/domain/shopping/models/coupons/enums/coupon-club-mens.enum.mjs +7 -0
  325. package/esm2020/domain/shopping/models/coupons/enums/coupon-subtypes.enum.mjs +6 -0
  326. package/esm2020/domain/shopping/models/coupons/enums/coupon-types.enum.mjs +10 -0
  327. package/esm2020/domain/shopping/models/coupons/enums/exclusivities.enum.mjs +10 -0
  328. package/esm2020/domain/shopping/models/coupons/enums/index.mjs +4 -0
  329. package/esm2020/domain/shopping/models/coupons/index.mjs +3 -0
  330. package/esm2020/domain/shopping/models/enums/checkout-types.enum.mjs +7 -0
  331. package/esm2020/domain/shopping/models/enums/index.mjs +3 -0
  332. package/esm2020/domain/shopping/models/enums/order-status.enum.mjs +12 -0
  333. package/esm2020/domain/shopping/models/index.mjs +13 -0
  334. package/esm2020/domain/shopping/models/line-item.mjs +4 -0
  335. package/esm2020/domain/shopping/models/order.mjs +11 -0
  336. package/esm2020/domain/shopping/models/payment.mjs +169 -0
  337. package/esm2020/domain/shopping/models/shipping-method.mjs +7 -0
  338. package/esm2020/domain/shopping/models/subscription/checkout.mjs +28 -0
  339. package/esm2020/domain/shopping/models/subscription/index.mjs +3 -0
  340. package/esm2020/domain/shopping/models/subscription/plan.mjs +7 -0
  341. package/esm2020/domain/shopping/models/types/index.mjs +8 -0
  342. package/esm2020/domain/shopping/models/types/payment-address.type.mjs +2 -0
  343. package/esm2020/domain/shopping/models/types/payment-billing.type.mjs +2 -0
  344. package/esm2020/domain/shopping/models/types/payment-card.type.mjs +2 -0
  345. package/esm2020/domain/shopping/models/types/payment-customer.type.mjs +2 -0
  346. package/esm2020/domain/shopping/models/types/payment-document.type.mjs +2 -0
  347. package/esm2020/domain/shopping/models/types/payment-item.type.mjs +2 -0
  348. package/esm2020/domain/shopping/models/types/payment-shipping.type.mjs +2 -0
  349. package/esm2020/domain/shopping/repositories/buy-2-win.repository.mjs +2 -0
  350. package/esm2020/domain/shopping/repositories/campaign-dashboard.repository.mjs +2 -0
  351. package/esm2020/domain/shopping/repositories/campaign-hashtag.repository.mjs +2 -0
  352. package/esm2020/domain/shopping/repositories/checkout.repository.mjs +2 -0
  353. package/esm2020/domain/shopping/repositories/coupon.repository.mjs +2 -0
  354. package/esm2020/domain/shopping/repositories/index.mjs +10 -0
  355. package/esm2020/domain/shopping/repositories/legacy-order.repository.mjs +2 -0
  356. package/esm2020/domain/shopping/repositories/order.repository.mjs +2 -0
  357. package/esm2020/domain/shopping/repositories/payment.repository.mjs +2 -0
  358. package/esm2020/domain/shopping/repositories/subscription/checkout.repository.mjs +2 -0
  359. package/esm2020/domain/shopping/repositories/subscription/index.mjs +3 -0
  360. package/esm2020/domain/shopping/repositories/subscription/plan.repository.mjs +2 -0
  361. package/esm2020/domain/users/errors/index.mjs +4 -0
  362. package/esm2020/domain/users/errors/unauthorized.error.mjs +7 -0
  363. package/esm2020/domain/users/errors/user-already-registered.error.mjs +7 -0
  364. package/esm2020/domain/users/errors/weak-password.error.mjs +7 -0
  365. package/esm2020/domain/users/index.mjs +6 -0
  366. package/esm2020/domain/users/models/beauty-profile.mjs +12 -0
  367. package/esm2020/domain/users/models/enums/accessory-importances.enum.mjs +7 -0
  368. package/esm2020/domain/users/models/enums/area.enum.mjs +13 -0
  369. package/esm2020/domain/users/models/enums/beard-problems.enum.mjs +11 -0
  370. package/esm2020/domain/users/models/enums/beard-sizes.enum.mjs +9 -0
  371. package/esm2020/domain/users/models/enums/beauty-product-importances.enum.mjs +8 -0
  372. package/esm2020/domain/users/models/enums/body-problems.enum.mjs +13 -0
  373. package/esm2020/domain/users/models/enums/body-shapes.enum.mjs +9 -0
  374. package/esm2020/domain/users/models/enums/body-tattoos.enum.mjs +7 -0
  375. package/esm2020/domain/users/models/enums/face-skin-oilinesses.enum.mjs +9 -0
  376. package/esm2020/domain/users/models/enums/face-skin-problems.enum.mjs +12 -0
  377. package/esm2020/domain/users/models/enums/face-skin-tones.enum.mjs +10 -0
  378. package/esm2020/domain/users/models/enums/family-incomes.enum.mjs +10 -0
  379. package/esm2020/domain/users/models/enums/fragrance-importances.enum.mjs +7 -0
  380. package/esm2020/domain/users/models/enums/hair-colors.enum.mjs +12 -0
  381. package/esm2020/domain/users/models/enums/hair-problems.enum.mjs +12 -0
  382. package/esm2020/domain/users/models/enums/hair-strands.enum.mjs +10 -0
  383. package/esm2020/domain/users/models/enums/hair-types.enum.mjs +9 -0
  384. package/esm2020/domain/users/models/enums/index.mjs +21 -0
  385. package/esm2020/domain/users/models/enums/office-position.enum.mjs +8 -0
  386. package/esm2020/domain/users/models/enums/product-spents.enum.mjs +10 -0
  387. package/esm2020/domain/users/models/enums/user-type.enum.mjs +10 -0
  388. package/esm2020/domain/users/models/index.mjs +8 -0
  389. package/esm2020/domain/users/models/lead.mjs +7 -0
  390. package/esm2020/domain/users/models/subscription/edition.mjs +7 -0
  391. package/esm2020/domain/users/models/subscription/enums/billing-status.enum.mjs +5 -0
  392. package/esm2020/domain/users/models/subscription/enums/edition-status.enum.mjs +6 -0
  393. package/esm2020/domain/users/models/subscription/enums/index.mjs +5 -0
  394. package/esm2020/domain/users/models/subscription/enums/payment-type.enum.mjs +7 -0
  395. package/esm2020/domain/users/models/subscription/enums/status.enum.mjs +6 -0
  396. package/esm2020/domain/users/models/subscription/index.mjs +5 -0
  397. package/esm2020/domain/users/models/subscription/payment.mjs +14 -0
  398. package/esm2020/domain/users/models/subscription/subscription.mjs +43 -0
  399. package/esm2020/domain/users/models/user-address.mjs +7 -0
  400. package/esm2020/domain/users/models/user-payment-method.mjs +7 -0
  401. package/esm2020/domain/users/models/user.mjs +26 -0
  402. package/esm2020/domain/users/repositories/beauty-profile.repository.mjs +2 -0
  403. package/esm2020/domain/users/repositories/edition.repository.mjs +2 -0
  404. package/esm2020/domain/users/repositories/index.mjs +9 -0
  405. package/esm2020/domain/users/repositories/lead.repository.mjs +2 -0
  406. package/esm2020/domain/users/repositories/subscription-payment.repository.mjs +2 -0
  407. package/esm2020/domain/users/repositories/subscription.repository.mjs +2 -0
  408. package/esm2020/domain/users/repositories/user-address.repository.mjs +2 -0
  409. package/esm2020/domain/users/repositories/user-payment-method.repository.mjs +2 -0
  410. package/esm2020/domain/users/repositories/user.repository.mjs +2 -0
  411. package/esm2020/domain/users/services/authentication.service.mjs +2 -0
  412. package/esm2020/domain/users/services/index.mjs +4 -0
  413. package/esm2020/domain/users/services/register.service.mjs +2 -0
  414. package/esm2020/domain/users/services/types/basic-user-data.type.mjs +2 -0
  415. package/esm2020/domain/users/services/types/index.mjs +2 -0
  416. package/esm2020/domain/users/use-cases/authentication.mjs +43 -0
  417. package/esm2020/domain/users/use-cases/index.mjs +5 -0
  418. package/esm2020/domain/users/use-cases/recovery-password.mjs +9 -0
  419. package/esm2020/domain/users/use-cases/register.mjs +38 -0
  420. package/esm2020/domain/users/use-cases/signout.mjs +9 -0
  421. package/esm2020/errors/duplicated-results.error.mjs +7 -0
  422. package/esm2020/errors/index.mjs +5 -0
  423. package/esm2020/errors/invalid-argument.error.mjs +7 -0
  424. package/esm2020/errors/not-found.error.mjs +7 -0
  425. package/esm2020/errors/required-argument.error.mjs +9 -0
  426. package/esm2020/index.mjs +6 -0
  427. package/esm2020/infra/elasticsearch/adapters/axios.adapter.mjs +67 -0
  428. package/esm2020/infra/elasticsearch/adapters/elastic-search.adapter.mjs +2 -0
  429. package/esm2020/infra/elasticsearch/adapters/index.mjs +3 -0
  430. package/esm2020/infra/elasticsearch/index.mjs +4 -0
  431. package/esm2020/infra/elasticsearch/indexes/index.mjs +2 -0
  432. package/esm2020/infra/elasticsearch/indexes/products-index.mjs +93 -0
  433. package/esm2020/infra/elasticsearch/types/elastic-search-result.mjs +2 -0
  434. package/esm2020/infra/elasticsearch/types/index.mjs +2 -0
  435. package/esm2020/infra/firebase/auth/authentication-firebase-auth.service.mjs +41 -0
  436. package/esm2020/infra/firebase/auth/index.mjs +3 -0
  437. package/esm2020/infra/firebase/auth/register-firebase-auth.service.mjs +33 -0
  438. package/esm2020/infra/firebase/auth/types/firebase-user-with-id.type.mjs +2 -0
  439. package/esm2020/infra/firebase/firestore/enums/firestore-field-type.enum.mjs +10 -0
  440. package/esm2020/infra/firebase/firestore/enums/index.mjs +2 -0
  441. package/esm2020/infra/firebase/firestore/index.mjs +4 -0
  442. package/esm2020/infra/firebase/firestore/mixins/index.mjs +10 -0
  443. package/esm2020/infra/firebase/firestore/mixins/with-create-firestore.mixin.mjs +31 -0
  444. package/esm2020/infra/firebase/firestore/mixins/with-crud-firestore.mixin.mjs +10 -0
  445. package/esm2020/infra/firebase/firestore/mixins/with-delete-firestore.mixin.mjs +18 -0
  446. package/esm2020/infra/firebase/firestore/mixins/with-find-firestore.mixin.mjs +110 -0
  447. package/esm2020/infra/firebase/firestore/mixins/with-firestore.mixin.mjs +80 -0
  448. package/esm2020/infra/firebase/firestore/mixins/with-get-firestore.mixin.mjs +23 -0
  449. package/esm2020/infra/firebase/firestore/mixins/with-helpers.mixin.mjs +17 -0
  450. package/esm2020/infra/firebase/firestore/mixins/with-sub-collection.mixin.mjs +13 -0
  451. package/esm2020/infra/firebase/firestore/mixins/with-update-firestore.mixin.mjs +51 -0
  452. package/esm2020/infra/firebase/firestore/repositories/catalog/category-firestore.repository.mjs +67 -0
  453. package/esm2020/infra/firebase/firestore/repositories/catalog/index.mjs +5 -0
  454. package/esm2020/infra/firebase/firestore/repositories/catalog/product-firestore.repository.mjs +54 -0
  455. package/esm2020/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.mjs +16 -0
  456. package/esm2020/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.mjs +14 -0
  457. package/esm2020/infra/firebase/firestore/repositories/index.mjs +5 -0
  458. package/esm2020/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.mjs +60 -0
  459. package/esm2020/infra/firebase/firestore/repositories/shop-settings/index.mjs +4 -0
  460. package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.mjs +14 -0
  461. package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.mjs +14 -0
  462. package/esm2020/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.mjs +14 -0
  463. package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.mjs +14 -0
  464. package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.mjs +14 -0
  465. package/esm2020/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.mjs +14 -0
  466. package/esm2020/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.mjs +14 -0
  467. package/esm2020/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.mjs +31 -0
  468. package/esm2020/infra/firebase/firestore/repositories/shopping/index.mjs +11 -0
  469. package/esm2020/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.mjs +11 -0
  470. package/esm2020/infra/firebase/firestore/repositories/shopping/order-firestore.repository.mjs +40 -0
  471. package/esm2020/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.mjs +14 -0
  472. package/esm2020/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.mjs +14 -0
  473. package/esm2020/infra/firebase/firestore/repositories/users/index.mjs +9 -0
  474. package/esm2020/infra/firebase/firestore/repositories/users/lead-firestore.repository.mjs +14 -0
  475. package/esm2020/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.mjs +16 -0
  476. package/esm2020/infra/firebase/firestore/repositories/users/subscription-firestore.repository.mjs +14 -0
  477. package/esm2020/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.mjs +16 -0
  478. package/esm2020/infra/firebase/firestore/repositories/users/user-address-firestore.repository.mjs +16 -0
  479. package/esm2020/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.mjs +16 -0
  480. package/esm2020/infra/firebase/firestore/repositories/users/user-firestore.repository.mjs +50 -0
  481. package/esm2020/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.mjs +16 -0
  482. package/esm2020/infra/firebase/firestore/types/firestore-interceptors.type.mjs +2 -0
  483. package/esm2020/infra/firebase/firestore/types/firestore-sub.repository.type.mjs +2 -0
  484. package/esm2020/infra/firebase/firestore/types/firestore.helpers.type.mjs +2 -0
  485. package/esm2020/infra/firebase/firestore/types/firestore.repository.type.mjs +2 -0
  486. package/esm2020/infra/firebase/firestore/types/index.mjs +5 -0
  487. package/esm2020/infra/firebase/index.mjs +3 -0
  488. package/esm2020/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.mjs +13 -0
  489. package/esm2020/infra/hasura-graphql/enums/hasura-graphql-where.enum.mjs +17 -0
  490. package/esm2020/infra/hasura-graphql/enums/index.mjs +3 -0
  491. package/esm2020/infra/hasura-graphql/index.mjs +5 -0
  492. package/esm2020/infra/hasura-graphql/mixins/helpers/attribute-option.helper.mjs +35 -0
  493. package/esm2020/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.mjs +71 -0
  494. package/esm2020/infra/hasura-graphql/mixins/helpers/filter-option.helper.mjs +22 -0
  495. package/esm2020/infra/hasura-graphql/mixins/helpers/graphql-field.helper.mjs +125 -0
  496. package/esm2020/infra/hasura-graphql/mixins/helpers/index.mjs +5 -0
  497. package/esm2020/infra/hasura-graphql/mixins/index.mjs +8 -0
  498. package/esm2020/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.mjs +39 -0
  499. package/esm2020/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.mjs +10 -0
  500. package/esm2020/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.mjs +31 -0
  501. package/esm2020/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.mjs +152 -0
  502. package/esm2020/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.mjs +37 -0
  503. package/esm2020/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +108 -0
  504. package/esm2020/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.mjs +62 -0
  505. package/esm2020/infra/hasura-graphql/models/category-hasura-graphql.mjs +4 -0
  506. package/esm2020/infra/hasura-graphql/models/index.mjs +5 -0
  507. package/esm2020/infra/hasura-graphql/models/kit-product-hasura-graphql.mjs +15 -0
  508. package/esm2020/infra/hasura-graphql/models/product-hasura-graphql.mjs +11 -0
  509. package/esm2020/infra/hasura-graphql/models/variant-hasura-graphql.mjs +9 -0
  510. package/esm2020/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.mjs +39 -0
  511. package/esm2020/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.mjs +107 -0
  512. package/esm2020/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +338 -0
  513. package/esm2020/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.mjs +105 -0
  514. package/esm2020/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.mjs +22 -0
  515. package/esm2020/infra/hasura-graphql/repositories/catalog/index.mjs +9 -0
  516. package/esm2020/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +516 -0
  517. package/esm2020/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.mjs +114 -0
  518. package/esm2020/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.mjs +238 -0
  519. package/esm2020/infra/hasura-graphql/repositories/index.mjs +2 -0
  520. package/esm2020/infra/hasura-graphql/types/fields.type.mjs +2 -0
  521. package/esm2020/infra/hasura-graphql/types/graphql.repository.type.mjs +2 -0
  522. package/esm2020/infra/hasura-graphql/types/hasura-graphql-auth-options.type.mjs +2 -0
  523. package/esm2020/infra/hasura-graphql/types/hasura-graphql-fields.type.mjs +2 -0
  524. package/esm2020/infra/hasura-graphql/types/hasura-graphql-headers.type.mjs +2 -0
  525. package/esm2020/infra/hasura-graphql/types/index.mjs +9 -0
  526. package/esm2020/infra/hasura-graphql/types/nested-field.type.mjs +2 -0
  527. package/esm2020/infra/hasura-graphql/types/query-builder-options.type.mjs +2 -0
  528. package/esm2020/infra/hasura-graphql/types/variable-options.type.mjs +2 -0
  529. package/esm2020/infra/index.mjs +4 -0
  530. package/esm2020/infrab4a-connect.mjs +5 -0
  531. package/esm2020/utils/decorators/debug.class.decorator.mjs +7 -0
  532. package/esm2020/utils/decorators/index.mjs +3 -0
  533. package/esm2020/utils/decorators/trace.method.decorator.mjs +81 -0
  534. package/esm2020/utils/get.mjs +3 -0
  535. package/esm2020/utils/helpers/class-name.helper.mjs +15 -0
  536. package/esm2020/utils/helpers/debug-decorator.helper.mjs +18 -0
  537. package/esm2020/utils/helpers/debug.helper.mjs +150 -0
  538. package/esm2020/utils/helpers/index.mjs +5 -0
  539. package/esm2020/utils/helpers/reflect.helper.mjs +165 -0
  540. package/esm2020/utils/index.mjs +13 -0
  541. package/esm2020/utils/is-uuid.mjs +3 -0
  542. package/esm2020/utils/is.mjs +4 -0
  543. package/esm2020/utils/log.utils.mjs +9 -0
  544. package/esm2020/utils/mixins/base.mixin.mjs +6 -0
  545. package/esm2020/utils/mixins/index.mjs +4 -0
  546. package/esm2020/utils/mixins/merge-constructor-params.type.mjs +2 -0
  547. package/esm2020/utils/mixins/mixin-ctor.type.mjs +2 -0
  548. package/esm2020/utils/parse-datetime.mjs +14 -0
  549. package/esm2020/utils/types/array-element.type.mjs +2 -0
  550. package/esm2020/utils/types/index.mjs +3 -0
  551. package/esm2020/utils/types/prop.type.mjs +2 -0
  552. package/fesm2015/infrab4a-connect.mjs +4932 -0
  553. package/fesm2015/infrab4a-connect.mjs.map +1 -0
  554. package/fesm2020/infrab4a-connect.mjs +4846 -0
  555. package/fesm2020/infrab4a-connect.mjs.map +1 -0
  556. package/index.d.ts +5 -0
  557. package/infra/elasticsearch/adapters/axios.adapter.d.ts +16 -0
  558. package/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +8 -0
  559. package/infra/elasticsearch/adapters/index.d.ts +2 -0
  560. package/infra/elasticsearch/index.d.ts +3 -0
  561. package/infra/elasticsearch/indexes/index.d.ts +1 -0
  562. package/infra/elasticsearch/indexes/products-index.d.ts +13 -0
  563. package/infra/elasticsearch/types/elastic-search-result.d.ts +9 -0
  564. package/infra/elasticsearch/types/index.d.ts +1 -0
  565. package/infra/firebase/auth/authentication-firebase-auth.service.d.ts +12 -0
  566. package/infra/firebase/auth/index.d.ts +2 -0
  567. package/infra/firebase/auth/register-firebase-auth.service.d.ts +8 -0
  568. package/infra/firebase/auth/types/firebase-user-with-id.type.d.ts +5 -0
  569. package/infra/firebase/firestore/enums/firestore-field-type.enum.d.ts +8 -0
  570. package/infra/firebase/firestore/enums/index.d.ts +1 -0
  571. package/infra/firebase/firestore/index.d.ts +3 -0
  572. package/infra/firebase/firestore/mixins/index.d.ts +9 -0
  573. package/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +4 -0
  574. package/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +5 -0
  575. package/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +4 -0
  576. package/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +4 -0
  577. package/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +13 -0
  578. package/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +4 -0
  579. package/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +11 -0
  580. package/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +11 -0
  581. package/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +7 -0
  582. package/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +20 -0
  583. package/infra/firebase/firestore/repositories/catalog/index.d.ts +4 -0
  584. package/infra/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +12 -0
  585. package/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.d.ts +12 -0
  586. package/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.d.ts +7 -0
  587. package/infra/firebase/firestore/repositories/index.d.ts +4 -0
  588. package/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.d.ts +16 -0
  589. package/infra/firebase/firestore/repositories/shop-settings/index.d.ts +3 -0
  590. package/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.d.ts +7 -0
  591. package/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.d.ts +7 -0
  592. package/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.d.ts +7 -0
  593. package/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +8 -0
  594. package/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.d.ts +8 -0
  595. package/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.d.ts +7 -0
  596. package/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.d.ts +7 -0
  597. package/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.d.ts +12 -0
  598. package/infra/firebase/firestore/repositories/shopping/index.d.ts +10 -0
  599. package/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.d.ts +6 -0
  600. package/infra/firebase/firestore/repositories/shopping/order-firestore.repository.d.ts +13 -0
  601. package/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.d.ts +7 -0
  602. package/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.d.ts +7 -0
  603. package/infra/firebase/firestore/repositories/users/index.d.ts +8 -0
  604. package/infra/firebase/firestore/repositories/users/lead-firestore.repository.d.ts +7 -0
  605. package/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +12 -0
  606. package/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +7 -0
  607. package/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.d.ts +12 -0
  608. package/infra/firebase/firestore/repositories/users/user-address-firestore.repository.d.ts +12 -0
  609. package/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +12 -0
  610. package/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +17 -0
  611. package/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.d.ts +12 -0
  612. package/infra/firebase/firestore/types/firestore-interceptors.type.d.ts +14 -0
  613. package/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +6 -0
  614. package/infra/firebase/firestore/types/firestore.helpers.type.d.ts +8 -0
  615. package/infra/firebase/firestore/types/firestore.repository.type.d.ts +16 -0
  616. package/infra/firebase/firestore/types/index.d.ts +4 -0
  617. package/infra/firebase/index.d.ts +2 -0
  618. package/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.d.ts +11 -0
  619. package/infra/hasura-graphql/enums/hasura-graphql-where.enum.d.ts +15 -0
  620. package/infra/hasura-graphql/enums/index.d.ts +2 -0
  621. package/infra/hasura-graphql/index.d.ts +4 -0
  622. package/infra/hasura-graphql/mixins/helpers/attribute-option.helper.d.ts +19 -0
  623. package/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.d.ts +10 -0
  624. package/infra/hasura-graphql/mixins/helpers/filter-option.helper.d.ts +8 -0
  625. package/infra/hasura-graphql/mixins/helpers/graphql-field.helper.d.ts +12 -0
  626. package/infra/hasura-graphql/mixins/helpers/index.d.ts +4 -0
  627. package/infra/hasura-graphql/mixins/index.d.ts +7 -0
  628. package/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.d.ts +9 -0
  629. package/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.d.ts +11 -0
  630. package/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.d.ts +7 -0
  631. package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +34 -0
  632. package/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +25 -0
  633. package/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.d.ts +23 -0
  634. package/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.d.ts +14 -0
  635. package/infra/hasura-graphql/models/category-hasura-graphql.d.ts +6 -0
  636. package/infra/hasura-graphql/models/index.d.ts +4 -0
  637. package/infra/hasura-graphql/models/kit-product-hasura-graphql.d.ts +6 -0
  638. package/infra/hasura-graphql/models/product-hasura-graphql.d.ts +18 -0
  639. package/infra/hasura-graphql/models/variant-hasura-graphql.d.ts +10 -0
  640. package/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.d.ts +10 -0
  641. package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +12 -0
  642. package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +34 -0
  643. package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +18 -0
  644. package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +10 -0
  645. package/infra/hasura-graphql/repositories/catalog/index.d.ts +8 -0
  646. package/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.d.ts +30 -0
  647. package/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.d.ts +14 -0
  648. package/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.d.ts +27 -0
  649. package/infra/hasura-graphql/repositories/index.d.ts +1 -0
  650. package/infra/hasura-graphql/types/fields.type.d.ts +2 -0
  651. package/infra/hasura-graphql/types/graphql.repository.type.d.ts +24 -0
  652. package/infra/hasura-graphql/types/hasura-graphql-auth-options.type.d.ts +8 -0
  653. package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +44 -0
  654. package/infra/hasura-graphql/types/hasura-graphql-headers.type.d.ts +7 -0
  655. package/infra/hasura-graphql/types/index.d.ts +8 -0
  656. package/infra/hasura-graphql/types/nested-field.type.d.ts +7 -0
  657. package/infra/hasura-graphql/types/query-builder-options.type.d.ts +7 -0
  658. package/infra/hasura-graphql/types/variable-options.type.d.ts +9 -0
  659. package/infra/index.d.ts +3 -0
  660. package/package.json +44 -29
  661. package/utils/decorators/debug.class.decorator.d.ts +2 -0
  662. package/utils/decorators/index.d.ts +2 -0
  663. package/utils/decorators/trace.method.decorator.d.ts +14 -0
  664. package/utils/get.d.ts +1 -0
  665. package/utils/helpers/class-name.helper.d.ts +3 -0
  666. package/utils/helpers/debug-decorator.helper.d.ts +9 -0
  667. package/utils/helpers/debug.helper.d.ts +60 -0
  668. package/utils/helpers/index.d.ts +4 -0
  669. package/utils/helpers/reflect.helper.d.ts +50 -0
  670. package/utils/index.d.ts +13 -0
  671. package/utils/is-uuid.d.ts +1 -0
  672. package/utils/is.d.ts +1 -0
  673. package/utils/log.utils.d.ts +7 -0
  674. package/utils/mixins/base.mixin.d.ts +3 -0
  675. package/utils/mixins/index.d.ts +3 -0
  676. package/utils/mixins/merge-constructor-params.type.d.ts +3 -0
  677. package/utils/mixins/mixin-ctor.type.d.ts +1 -0
  678. package/utils/parse-datetime.d.ts +1 -0
  679. package/utils/types/array-element.type.d.ts +1 -0
  680. package/utils/types/index.d.ts +2 -0
  681. package/utils/types/prop.type.d.ts +1 -0
  682. package/index.js +0 -5154
@@ -0,0 +1,71 @@
1
+ import { Where, } from '../../../../domain';
2
+ import { is, isNil, isObject } from '../../../../utils';
3
+ import { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums';
4
+ import { AttributeOptionHelper } from './attribute-option.helper';
5
+ import { FilterOptionHelper } from './filter-option.helper';
6
+ export class BindFilterQueryHelper {
7
+ }
8
+ BindFilterQueryHelper.MakeGraphQLWhere = (filter, fields) => Object.keys(filter).reduce((variables, fieldName) => {
9
+ const columnOption = AttributeOptionHelper.FindByAttribute(fieldName, fields);
10
+ if (!columnOption.bindFindFilter)
11
+ return {
12
+ ...variables,
13
+ ...{
14
+ [columnOption.columnName]: BindFilterQueryHelper.BuildWhereSentence(fieldName, filter[fieldName], fields),
15
+ },
16
+ };
17
+ const builtFilter = columnOption.bindFindFilter(filter[fieldName]);
18
+ return {
19
+ ...variables,
20
+ ...Object.keys(builtFilter).reduce((variablesList, columnName) => ({
21
+ ...variablesList,
22
+ [columnName]: BindFilterQueryHelper.BuildWhereSentence(fieldName, builtFilter[columnName], fields),
23
+ }), {}),
24
+ };
25
+ }, {});
26
+ BindFilterQueryHelper.BuildWhereSentence = (field, options, fields) => {
27
+ const fieldSentenceOptions = AttributeOptionHelper.FindByAttribute(field, fields);
28
+ const isNestedField = !Array.isArray(options) &&
29
+ isObject(options) &&
30
+ isNil(options?.operator) &&
31
+ isNil(options?.value) &&
32
+ isNil(fieldSentenceOptions?.to);
33
+ if (isNestedField)
34
+ return Object.keys(options).reduce((variables, key) => {
35
+ const fieldOptions = AttributeOptionHelper.FindByAttribute(key, fieldSentenceOptions?.fields || fields);
36
+ const columnName = fieldOptions.columnName;
37
+ const columnFields = fieldOptions.fields;
38
+ return {
39
+ ...variables,
40
+ [columnName]: BindFilterQueryHelper.BuildWhereSentence(key, is(is(options)[key]), fieldSentenceOptions?.fields || columnFields || fields),
41
+ };
42
+ }, {});
43
+ if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))
44
+ return {
45
+ [fieldSentenceOptions.fields[0]]: BindFilterQueryHelper.BuildOperatorSentence(options, fieldSentenceOptions),
46
+ };
47
+ if (!Array.isArray(options) && isObject(options) && !FilterOptionHelper.CheckIfIsFilterOption(options))
48
+ options = Object.values(options)[0];
49
+ return Array.isArray(options)
50
+ ? options.reduce((whereSentence, option) => ({
51
+ ...whereSentence,
52
+ ...BindFilterQueryHelper.BuildOperatorSentence(option, fieldSentenceOptions),
53
+ }), {})
54
+ : BindFilterQueryHelper.BuildOperatorSentence(options, fieldSentenceOptions);
55
+ };
56
+ BindFilterQueryHelper.BuildOperatorSentence = (options, fieldOption) => ({
57
+ [BindFilterQueryHelper.GetHasuraOperator(options, fieldOption)]: FilterOptionHelper.GetValueFromFilter(options, fieldOption),
58
+ });
59
+ BindFilterQueryHelper.GetHasuraOperator = (options, fieldOption) => FilterOptionHelper.CheckIfIsFilterOption(options)
60
+ ? fieldOption.type === HasuraGraphQLColumnType.Jsonb
61
+ ? BindFilterQueryHelper.GetHasuraJsonbOperator(options)
62
+ : HasuraGraphQLWhere[Object.keys(HasuraGraphQLWhere).find((graphQLOperator) => graphQLOperator ===
63
+ Object.keys(Where).find((operator) => Where[operator] === options?.operator))]
64
+ : HasuraGraphQLWhere.EQUALS;
65
+ BindFilterQueryHelper.GetHasuraJsonbOperator = (options) => options.operator === Where.IN
66
+ ? HasuraGraphQLWhere.JSON_CONTAINS
67
+ : options.operator === Where.LIKE
68
+ ? HasuraGraphQLWhere.JSON_HAS_KEYS_ANY
69
+ : HasuraGraphQLWhere[Object.keys(HasuraGraphQLWhere).find((graphQLOperator) => graphQLOperator ===
70
+ Object.keys(Where).find((operator) => Where[operator] === options?.operator))];
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZC1maWx0ZXItcXVlcnkuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvbWl4aW5zL2hlbHBlcnMvYmluZC1maWx0ZXItcXVlcnkuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxLQUFLLEdBQ04sTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFM0QsTUFBTSxPQUFPLHFCQUFxQjs7QUFDekIsc0NBQWdCLEdBQUcsQ0FDeEIsTUFBcUMsRUFDckMsTUFBa0MsRUFDakIsRUFBRSxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQTBCLEVBQUUsU0FBaUIsRUFBRSxFQUFFO0lBQzNFLE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLGVBQWUsQ0FDeEQsU0FBeUQsRUFDekQsTUFBTSxDQUNQLENBQUE7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7UUFDOUIsT0FBTztZQUNMLEdBQUcsU0FBUztZQUNaLEdBQUc7Z0JBQ0QsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUscUJBQXFCLENBQUMsa0JBQWtCLENBQ2pFLFNBQXlELEVBQ3pELE1BQU0sQ0FBQyxTQUF5RCxDQUcvRCxFQUNELE1BQU0sQ0FDUDthQUNGO1NBQ0YsQ0FBQTtJQUVILE1BQU0sV0FBVyxHQUFr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S0FBSyxDQUFDLElBQUk7UUFDakMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQjtRQUN0QyxDQUFDLENBQUMsa0JBQWtCLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQ2xDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDbEIsZUFBZTtZQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBOEIsQ0FBQyxLQUFLLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FDbEUsQ0FDckMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgTW9kZWxCYXNlU3RydWN0dXJlLFxyXG4gIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXMsXHJcbiAgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzLFxyXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXHJcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnMsXHJcbiAgV2hlcmUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBpcywgaXNOaWwsIGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlLCBIYXN1cmFHcmFwaFFMV2hlcmUgfSBmcm9tICcuLi8uLi9lbnVtcydcclxuaW1wb3J0IHsgQ29sdW1uT3B0aW9ucywgSGFzdXJhR3JhcGhRTEZpZWxkcywgVmFyaWFibGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcbmltcG9ydCB7IEF0dHJpYnV0ZU9wdGlvbkhlbHBlciB9IGZyb20gJy4vYXR0cmlidXRlLW9wdGlvbi5oZWxwZXInXHJcbmltcG9ydCB7IEZpbHRlck9wdGlvbkhlbHBlciB9IGZyb20gJy4vZmlsdGVyLW9wdGlvbi5oZWxwZXInXHJcblxyXG5leHBvcnQgY2xhc3MgQmluZEZpbHRlclF1ZXJ5SGVscGVyIHtcclxuICBzdGF0aWMgTWFrZUdyYXBoUUxXaGVyZSA9IDxNQmFzZSBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZTxNQmFzZT4+KFxyXG4gICAgZmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPixcclxuICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4sXHJcbiAgKTogVmFyaWFibGVPcHRpb25zID0+XHJcbiAgICBPYmplY3Qua2V5cyhmaWx0ZXIpLnJlZHVjZSgodmFyaWFibGVzOiBWYXJpYWJsZU9wdGlvbnMsIGZpZWxkTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbk9wdGlvbiA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoXHJcbiAgICAgICAgZmllbGROYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+LFxyXG4gICAgICAgIGZpZWxkcyxcclxuICAgICAgKVxyXG5cclxuICAgICAgaWYgKCFjb2x1bW5PcHRpb24uYmluZEZpbmRGaWx0ZXIpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnZhcmlhYmxlcyxcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgW2NvbHVtbk9wdGlvbi5jb2x1bW5OYW1lXTogQmluZEZpbHRlclF1ZXJ5SGVscGVyLkJ1aWxkV2hlcmVTZW50ZW5jZShcclxuICAgICAgICAgICAgICBmaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4sXHJcbiAgICAgICAgICAgICAgZmlsdGVyW2ZpZWxkTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPl0gYXMgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnM8XHJcbiAgICAgICAgICAgICAgICBNQmFzZSxcclxuICAgICAgICAgICAgICAgIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XHJcbiAgICAgICAgICAgICAgPixcclxuICAgICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGJ1aWx0RmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPiA9IGNvbHVtbk9wdGlvbi5iaW5kRmluZEZpbHRlcihcclxuICAgICAgICBmaWx0ZXJbZmllbGROYW1lIGFzIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lczxNQmFzZT5dIGFzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPFxyXG4gICAgICAgICAgTUJhc2UsXHJcbiAgICAgICAgICBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8TUJhc2U+XHJcbiAgICAgICAgPixcclxuICAgICAgKVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi52YXJpYWJsZXMsXHJcbiAgICAgICAgLi4uT2JqZWN0LmtleXMoYnVpbHRGaWx0ZXIpLnJlZHVjZShcclxuICAgICAgICAgICh2YXJpYWJsZXNMaXN0OiBWYXJpYWJsZU9wdGlvbnMsIGNvbHVtbk5hbWU6IHN0cmluZykgPT4gKHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVzTGlzdCxcclxuICAgICAgICAgICAgW2NvbHVtbk5hbWVdOiBCaW5kRmlsdGVyUXVlcnlIZWxwZXIuQnVpbGRXaGVyZVNlbnRlbmNlKFxyXG4gICAgICAgICAgICAgIGZpZWxkTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuICAgICAgICAgICAgICBidWlsdEZpbHRlcltjb2x1bW5OYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxcclxuICAgICAgICAgICAgICAgIE1CYXNlLFxyXG4gICAgICAgICAgICAgICAgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT5cclxuICAgICAgICAgICAgICA+LFxyXG4gICAgICAgICAgICAgIGZpZWxkcyxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAge30sXHJcbiAgICAgICAgKSxcclxuICAgICAgfVxyXG4gICAgfSwge30pXHJcblxyXG4gIHN0YXRpYyBCdWlsZFdoZXJlU2VudGVuY2UgPSA8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2U+PihcclxuICAgIGZpZWxkOiBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1CYXNlLCBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPj4sXHJcbiAgICBmaWVsZHM6IEhhc3VyYUdyYXBoUUxGaWVsZHM8TUJhc2U+LFxyXG4gICk6IFZhcmlhYmxlT3B0aW9ucyA9PiB7XHJcbiAgICBjb25zdCBmaWVsZFNlbnRlbmNlT3B0aW9ucyA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGU8TUJhc2U+KGZpZWxkLCBmaWVsZHMpXHJcbiAgICBjb25zdCBpc05lc3RlZEZpZWxkID1cclxuICAgICAgIUFycmF5LmlzQXJyYXkob3B0aW9ucykgJiZcclxuICAgICAgaXNPYmplY3Qob3B0aW9ucykgJiZcclxuICAgICAgaXNOaWwob3B0aW9ucz8ub3BlcmF0b3IpICYmXHJcbiAgICAgIGlzTmlsKG9wdGlvbnM/LnZhbHVlKSAmJlxyXG4gICAgICBpc05pbChmaWVsZFNlbnRlbmNlT3B0aW9ucz8udG8pXHJcblxyXG4gICAgaWYgKGlzTmVzdGVkRmllbGQpXHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvcHRpb25zKS5yZWR1Y2UoKHZhcmlhYmxlcywga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZTxNQmFzZT4oXHJcbiAgICAgICAgICBrZXkgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4sXHJcbiAgICAgICAgICBmaWVsZFNlbnRlbmNlT3B0aW9ucz8uZmllbGRzIHx8IChmaWVsZHMgYXMgYW55KSxcclxuICAgICAgICApXHJcbiAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGZpZWxkT3B0aW9ucy5jb2x1bW5OYW1lXHJcbiAgICAgICAgY29uc3QgY29sdW1uRmllbGRzID0gZmllbGRPcHRpb25zLmZpZWxkc1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4udmFyaWFibGVzLFxyXG4gICAgICAgICAgW2NvbHVtbk5hbWVdOiBCaW5kRmlsdGVyUXVlcnlIZWxwZXIuQnVpbGRXaGVyZVNlbnRlbmNlPE1CYXNlPihcclxuICAgICAgICAgICAga2V5IGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+LFxyXG4gICAgICAgICAgICBpczxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxNQmFzZSwgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4+PihcclxuICAgICAgICAgICAgICBpczxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPj4ob3B0aW9ucylba2V5IGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgZmllbGRTZW50ZW5jZU9wdGlvbnM/LmZpZWxkcyB8fCBjb2x1bW5GaWVsZHMgfHwgKGZpZWxkcyBhcyBhbnkpLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHt9KVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSAmJiAhaXNOaWwoZmllbGRTZW50ZW5jZU9wdGlvbnMuZmllbGRzKSlcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbZmllbGRTZW50ZW5jZU9wdGlvbnMuZmllbGRzWzBdIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XTpcclxuICAgICAgICAgIEJpbmRGaWx0ZXJRdWVyeUhlbHBlci5CdWlsZE9wZXJhdG9yU2VudGVuY2UoXHJcbiAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIGZpZWxkU2VudGVuY2VPcHRpb25zIGFzIENvbHVtbk9wdGlvbnM8TUJhc2VbTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT5dLCBNQmFzZT4sXHJcbiAgICAgICAgICApLFxyXG4gICAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIGlzT2JqZWN0KG9wdGlvbnMpICYmICFGaWx0ZXJPcHRpb25IZWxwZXIuQ2hlY2tJZklzRmlsdGVyT3B0aW9uKG9wdGlvbnMpKVxyXG4gICAgICBvcHRpb25zID0gT2JqZWN0LnZhbHVlcyhvcHRpb25zKVswXSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxNQmFzZSwgYW55PlxyXG5cclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KG9wdGlvbnMpXHJcbiAgICAgID8gb3B0aW9ucy5yZWR1Y2UoXHJcbiAgICAgICAgICAod2hlcmVTZW50ZW5jZSwgb3B0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgICAuLi53aGVyZVNlbnRlbmNlLFxyXG4gICAgICAgICAgICAuLi5CaW5kRmlsdGVyUXVlcnlIZWxwZXIuQnVpbGRPcGVyYXRvclNlbnRlbmNlKFxyXG4gICAgICAgICAgICAgIG9wdGlvbixcclxuICAgICAgICAgICAgICBmaWVsZFNlbnRlbmNlT3B0aW9ucyBhcyBDb2x1bW5PcHRpb25zPE1CYXNlW05vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSwgTUJhc2U+LFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB7fSxcclxuICAgICAgICApXHJcbiAgICAgIDogQmluZEZpbHRlclF1ZXJ5SGVscGVyLkJ1aWxkT3BlcmF0b3JTZW50ZW5jZShcclxuICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICBmaWVsZFNlbnRlbmNlT3B0aW9ucyBhcyBDb2x1bW5PcHRpb25zPE1CYXNlW05vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSwgTUJhc2U+LFxyXG4gICAgICAgIClcclxuICB9XHJcblxyXG4gIHN0YXRpYyBCdWlsZE9wZXJhdG9yU2VudGVuY2UgPSA8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2U+PihcclxuICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1CYXNlLCBhbnk+LFxyXG4gICAgZmllbGRPcHRpb246IENvbHVtbk9wdGlvbnM8YW55LCBhbnk+LFxyXG4gICk6IFZhcmlhYmxlT3B0aW9ucyA9PiAoe1xyXG4gICAgW0JpbmRGaWx0ZXJRdWVyeUhlbHBlci5HZXRIYXN1cmFPcGVyYXRvcihvcHRpb25zLCBmaWVsZE9wdGlvbildOiBGaWx0ZXJPcHRpb25IZWxwZXIuR2V0VmFsdWVGcm9tRmlsdGVyKFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBmaWVsZE9wdGlvbixcclxuICAgICksXHJcbiAgfSlcclxuXHJcbiAgc3RhdGljIEdldEhhc3VyYU9wZXJhdG9yID0gPE1CYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPE1CYXNlPj4oXHJcbiAgICBvcHRpb25zOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxNQmFzZSwgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPE1CYXNlPj4sXHJcbiAgICBmaWVsZE9wdGlvbjogQ29sdW1uT3B0aW9uczxhbnksIGFueT4sXHJcbiAgKTogSGFzdXJhR3JhcGhRTFdoZXJlID0+XHJcbiAgICBGaWx0ZXJPcHRpb25IZWxwZXIuQ2hlY2tJZklzRmlsdGVyT3B0aW9uKG9wdGlvbnMpXHJcbiAgICAgID8gZmllbGRPcHRpb24udHlwZSA9PT0gSGFzdXJhR3JhcGhRTENvbHVtblR5cGUuSnNvbmJcclxuICAgICAgICA/IEJpbmRGaWx0ZXJRdWVyeUhlbHBlci5HZXRIYXN1cmFKc29uYk9wZXJhdG9yKG9wdGlvbnMpXHJcbiAgICAgICAgOiBIYXN1cmFHcmFwaFFMV2hlcmVbXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKEhhc3VyYUdyYXBoUUxXaGVyZSkuZmluZChcclxuICAgICAgICAgICAgICAoZ3JhcGhRTE9wZXJhdG9yKSA9PlxyXG4gICAgICAgICAgICAgICAgZ3JhcGhRTE9wZXJhdG9yID09PVxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoV2hlcmUpLmZpbmQoKG9wZXJhdG9yKSA9PiBXaGVyZVtvcGVyYXRvciBhcyBrZXlvZiB0eXBlb2YgV2hlcmVdID09PSBvcHRpb25zPy5vcGVyYXRvciksXHJcbiAgICAgICAgICAgICkgYXMga2V5b2YgdHlwZW9mIEhhc3VyYUdyYXBoUUxXaGVyZVxyXG4gICAgICAgICAgXVxyXG4gICAgICA6IEhhc3VyYUdyYXBoUUxXaGVyZS5FUVVBTFNcclxuXHJcbiAgc3RhdGljIEdldEhhc3VyYUpzb25iT3BlcmF0b3IgPSA8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2U+PihcclxuICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1CYXNlLCBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8TUJhc2U+PixcclxuICApOiBIYXN1cmFHcmFwaFFMV2hlcmUgPT5cclxuICAgIG9wdGlvbnMub3BlcmF0b3IgPT09IFdoZXJlLklOXHJcbiAgICAgID8gSGFzdXJhR3JhcGhRTFdoZXJlLkpTT05fQ09OVEFJTlNcclxuICAgICAgOiBvcHRpb25zLm9wZXJhdG9yID09PSBXaGVyZS5MSUtFXHJcbiAgICAgID8gSGFzdXJhR3JhcGhRTFdoZXJlLkpTT05fSEFTX0tFWVNfQU5ZXHJcbiAgICAgIDogSGFzdXJhR3JhcGhRTFdoZXJlW1xyXG4gICAgICAgICAgT2JqZWN0LmtleXMoSGFzdXJhR3JhcGhRTFdoZXJlKS5maW5kKFxyXG4gICAgICAgICAgICAoZ3JhcGhRTE9wZXJhdG9yKSA9PlxyXG4gICAgICAgICAgICAgIGdyYXBoUUxPcGVyYXRvciA9PT1cclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhXaGVyZSkuZmluZCgob3BlcmF0b3IpID0+IFdoZXJlW29wZXJhdG9yIGFzIGtleW9mIHR5cGVvZiBXaGVyZV0gPT09IG9wdGlvbnM/Lm9wZXJhdG9yKSxcclxuICAgICAgICAgICkgYXMga2V5b2YgdHlwZW9mIEhhc3VyYUdyYXBoUUxXaGVyZVxyXG4gICAgICAgIF1cclxufVxyXG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Where } from '../../../../domain';
2
+ import { isNil } from '../../../../utils';
3
+ export class FilterOptionHelper {
4
+ }
5
+ FilterOptionHelper.CheckIfIsFilterOption = (filter) => !isNil(filter?.operator);
6
+ FilterOptionHelper.GetValueFromFilter = (filter, fieldOption) => {
7
+ if (!FilterOptionHelper.CheckIfIsFilterOption(filter))
8
+ return filter;
9
+ if (filter.operator === Where.ISNULL)
10
+ return true;
11
+ if (filter.operator === Where.ISNOTNULL)
12
+ return false;
13
+ const converter = fieldOption.to
14
+ ? fieldOption.to
15
+ : (value) => filter.operator === Where.LIKE && !Array.isArray(filter.value) && value.indexOf('%') < 0
16
+ ? `%${value}%`
17
+ : value;
18
+ return Array.isArray(filter.value) && !fieldOption.fields && [Where.IN, Where.NOTIN].includes(filter.operator)
19
+ ? filter.value.map((fieldValue) => converter(fieldValue))
20
+ : converter(filter.value);
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW9wdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaGVscGVycy9maWx0ZXItb3B0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFELEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUd6QyxNQUFNLE9BQU8sa0JBQWtCOztBQUN0Qix3Q0FBcUIsR0FBRyxDQUM3QixNQUFXLEVBQzBDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFFM0UscUNBQWtCLEdBQUcsQ0FDMUIsTUFBaUQsRUFDakQsV0FBb0MsRUFDL0IsRUFBRTtJQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQTtJQUNwRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNqRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUVyRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsRUFBRTtRQUM5QixDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDaEIsQ0FBQyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDYixNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDdEYsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHO1lBQ2QsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUVmLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDNUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBWSxDQUFDLENBQUE7QUFDcEMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxCYXNlU3RydWN0dXJlLCBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9ucywgV2hlcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kb21haW4nXHJcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IENvbHVtbk9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcydcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJPcHRpb25IZWxwZXIge1xyXG4gIHN0YXRpYyBDaGVja0lmSXNGaWx0ZXJPcHRpb24gPSA8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU+KFxyXG4gICAgZmlsdGVyOiBhbnksXHJcbiAgKTogZmlsdGVyIGlzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1vZGVsLCBhbnk+ID0+ICFpc05pbChmaWx0ZXI/Lm9wZXJhdG9yKVxyXG5cclxuICBzdGF0aWMgR2V0VmFsdWVGcm9tRmlsdGVyID0gPE1vZGVsIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPE1vZGVsPj4oXHJcbiAgICBmaWx0ZXI6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1vZGVsLCBhbnk+LFxyXG4gICAgZmllbGRPcHRpb246IENvbHVtbk9wdGlvbnM8YW55LCBhbnk+LFxyXG4gICk6IGFueSA9PiB7XHJcbiAgICBpZiAoIUZpbHRlck9wdGlvbkhlbHBlci5DaGVja0lmSXNGaWx0ZXJPcHRpb24oZmlsdGVyKSkgcmV0dXJuIGZpbHRlclxyXG4gICAgaWYgKGZpbHRlci5vcGVyYXRvciA9PT0gV2hlcmUuSVNOVUxMKSByZXR1cm4gdHJ1ZVxyXG4gICAgaWYgKGZpbHRlci5vcGVyYXRvciA9PT0gV2hlcmUuSVNOT1ROVUxMKSByZXR1cm4gZmFsc2VcclxuXHJcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSBmaWVsZE9wdGlvbi50b1xyXG4gICAgICA/IGZpZWxkT3B0aW9uLnRvXHJcbiAgICAgIDogKHZhbHVlOiBhbnkpID0+XHJcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPT09IFdoZXJlLkxJS0UgJiYgIUFycmF5LmlzQXJyYXkoZmlsdGVyLnZhbHVlKSAmJiB2YWx1ZS5pbmRleE9mKCclJykgPCAwXHJcbiAgICAgICAgICAgID8gYCUke3ZhbHVlfSVgXHJcbiAgICAgICAgICAgIDogdmFsdWVcclxuXHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpICYmICFmaWVsZE9wdGlvbi5maWVsZHMgJiYgW1doZXJlLklOLCBXaGVyZS5OT1RJTl0uaW5jbHVkZXMoZmlsdGVyLm9wZXJhdG9yKVxyXG4gICAgICA/IGZpbHRlci52YWx1ZS5tYXAoKGZpZWxkVmFsdWUpID0+IGNvbnZlcnRlcihmaWVsZFZhbHVlKSlcclxuICAgICAgOiBjb252ZXJ0ZXIoZmlsdGVyLnZhbHVlIGFzIGFueSlcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,125 @@
1
+ import { BaseModel, } from '../../../../domain';
2
+ import { is, isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils';
3
+ import { AttributeOptionHelper } from './attribute-option.helper';
4
+ import { BindFilterQueryHelper } from './bind-filter-query.helper';
5
+ export class GraphQLFieldHelper {
6
+ }
7
+ GraphQLFieldHelper.CheckIsGraphQLParams = (params) => !isString(params) && Array.isArray(params) && params.length >= 0 && !!params[0].operation;
8
+ GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields = (fields) => {
9
+ return fields
10
+ ?.map((field) => {
11
+ if (isString(field))
12
+ return field.toString();
13
+ if (field === 'affected_rows')
14
+ return field;
15
+ const fieldName = Object.keys(field).shift();
16
+ const fieldValue = is(field[fieldName]);
17
+ if (Array.isArray(fieldValue))
18
+ return { [fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue) };
19
+ if (!AttributeOptionHelper.CheckIsColumnOption(fieldValue))
20
+ return;
21
+ const isNestedField = !!fieldValue.fields;
22
+ if (isNestedField)
23
+ return GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields(fieldName, fieldValue);
24
+ return fieldValue.columnName;
25
+ })
26
+ .filter((field) => !!field);
27
+ };
28
+ GraphQLFieldHelper.ConvertFieldValueFrom = (data, fields) => Object.keys(data).reduce((result, columnName) => {
29
+ const { attributeName, fields: attributeFields, from, } = AttributeOptionHelper.FindColumnOptionFromList(columnName, fields);
30
+ if (!!attributeFields && Array.isArray(attributeFields)) {
31
+ if (Array.isArray(data[columnName]))
32
+ return {
33
+ ...result,
34
+ [attributeName]: from
35
+ ? from(data[columnName], data)
36
+ : is(data[columnName]).map((value) => GraphQLFieldHelper.ConvertFieldValueFrom(is(value), attributeFields)),
37
+ };
38
+ if (isObject(data[columnName]))
39
+ return {
40
+ ...result,
41
+ [attributeName]: !!from
42
+ ? from(data[columnName])
43
+ : GraphQLFieldHelper.ConvertFieldValueFrom(is(data[columnName]), attributeFields),
44
+ };
45
+ }
46
+ if (!!from)
47
+ return { ...result, [attributeName]: from(data[columnName], data) };
48
+ return {
49
+ ...result,
50
+ [attributeName]: isString(data[columnName]) ? parseDateTime(data[columnName].toString()) : data[columnName],
51
+ };
52
+ }, {});
53
+ GraphQLFieldHelper.ConvertFieldValueTo = (instance, fields, update = false) => {
54
+ const data = instance.toPlain?.() || instance;
55
+ return Object.keys(data).reduce((result, attributeName) => {
56
+ const { columnName, fields: attributeFields, foreignKeyColumn, to, bindPersistData, } = AttributeOptionHelper.FindByAttribute(attributeName, fields);
57
+ if (bindPersistData)
58
+ return {
59
+ ...result,
60
+ ...bindPersistData(data[attributeName], instance),
61
+ };
62
+ if (isNil(columnName))
63
+ return result;
64
+ if (!!foreignKeyColumn &&
65
+ !isEmpty(foreignKeyColumn) &&
66
+ !Object.keys(foreignKeyColumn).filter((key) => !is(data[attributeName])?.[key]).length)
67
+ return Object.keys(foreignKeyColumn).reduce((object, current) => {
68
+ const { columnName: foreignColumnName } = AttributeOptionHelper.FindByAttribute(foreignKeyColumn[current], fields);
69
+ return {
70
+ ...object,
71
+ [foreignColumnName]: data[attributeName]?.[current],
72
+ };
73
+ }, { ...result });
74
+ if (update &&
75
+ isObject(data[attributeName]) &&
76
+ !isNil(attributeFields) &&
77
+ !isDate(data[attributeName]))
78
+ return result;
79
+ if (!!columnName &&
80
+ Array.isArray(attributeFields) &&
81
+ isObject(data[attributeName])) {
82
+ const converted = !isNil(columnName) && to
83
+ ? to(instance[attributeName], instance)
84
+ : data[attributeName];
85
+ return {
86
+ ...result,
87
+ ...(converted !== undefined
88
+ ? {
89
+ [columnName]: {
90
+ data: instance[attributeName] instanceof BaseModel
91
+ ? GraphQLFieldHelper.ConvertFieldValueTo(data[attributeName], attributeFields)
92
+ : converted,
93
+ },
94
+ }
95
+ : {}),
96
+ };
97
+ }
98
+ if (!!to)
99
+ return {
100
+ ...result,
101
+ [columnName]: to(instance[attributeName], instance),
102
+ };
103
+ return { ...result, [columnName]: data[attributeName] };
104
+ }, {});
105
+ };
106
+ GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields = (fieldName, fieldValue) => {
107
+ const hasCustomFilters = !!fieldValue.filters;
108
+ if (hasCustomFilters)
109
+ return {
110
+ operation: fieldValue.columnName || fieldName,
111
+ fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),
112
+ variables: {
113
+ [`${fieldValue.columnName}_where`]: {
114
+ name: 'where',
115
+ type: fieldValue.filters.filterType,
116
+ value: BindFilterQueryHelper.MakeGraphQLWhere(fieldValue.filters.filters, fieldValue.fields),
117
+ required: true,
118
+ },
119
+ },
120
+ };
121
+ return {
122
+ [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),
123
+ };
124
+ };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1maWVsZC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaGVscGVycy9ncmFwaHFsLWZpZWxkLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxHQUtWLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWpHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRWxFLE1BQU0sT0FBTyxrQkFBa0I7O0FBQ3RCLHVDQUFvQixHQUFHLENBQzVCLE1BQW9ELEVBQ2xCLEVBQUUsQ0FDcEMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUVwRixvREFBaUMsR0FBRyxDQUN6QyxNQUFrQyxFQUMxQixFQUFFO0lBQ1YsT0FBTyxNQUFNO1FBQ1gsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNkLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQzVDLElBQUksS0FBSyxLQUFLLGVBQWU7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUUzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUss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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnZ3FsLXF1ZXJ5LWJ1aWxkZXIvYnVpbGQvSVF1ZXJ5QnVpbGRlck9wdGlvbnMnXHJcbmltcG9ydCB7XHJcbiAgQmFzZU1vZGVsLFxyXG4gIE1vZGVsQmFzZVN0cnVjdHVyZSxcclxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0aWVzV2l0aE5vUGFydGlhbCxcclxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzLFxyXG4gIFBhcnRpYWxJZGVudGlmaWVyc01vZGVsLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgaXMsIGlzRGF0ZSwgaXNFbXB0eSwgaXNOaWwsIGlzT2JqZWN0LCBpc1N0cmluZywgcGFyc2VEYXRlVGltZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBDb2x1bW5PcHRpb25zLCBGaWVsZHMsIEdyYXBoUUxQYXJhbXMsIEhhc3VyYUdyYXBoUUxGaWVsZHMgfSBmcm9tICcuLi8uLi90eXBlcydcclxuaW1wb3J0IHsgQXR0cmlidXRlT3B0aW9uSGVscGVyIH0gZnJvbSAnLi9hdHRyaWJ1dGUtb3B0aW9uLmhlbHBlcidcclxuaW1wb3J0IHsgQmluZEZpbHRlclF1ZXJ5SGVscGVyIH0gZnJvbSAnLi9iaW5kLWZpbHRlci1xdWVyeS5oZWxwZXInXHJcblxyXG5leHBvcnQgY2xhc3MgR3JhcGhRTEZpZWxkSGVscGVyIHtcclxuICBzdGF0aWMgQ2hlY2tJc0dyYXBoUUxQYXJhbXMgPSA8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TW9kZWw+PihcclxuICAgIHBhcmFtczogc3RyaW5nIHwgSU9wZXJhdGlvbiB8IEdyYXBoUUxQYXJhbXM8TW9kZWw+W10sXHJcbiAgKTogcGFyYW1zIGlzIEdyYXBoUUxQYXJhbXM8TW9kZWw+W10gPT5cclxuICAgICFpc1N0cmluZyhwYXJhbXMpICYmIEFycmF5LmlzQXJyYXkocGFyYW1zKSAmJiBwYXJhbXMubGVuZ3RoID49IDAgJiYgISFwYXJhbXNbMF0ub3BlcmF0aW9uXHJcblxyXG4gIHN0YXRpYyBDb252ZXJ0TW9kZWxGaWVsZHNUb0dyYXBoUUxGaWVsZHMgPSA8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TW9kZWw+PihcclxuICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD4sXHJcbiAgKTogRmllbGRzID0+IHtcclxuICAgIHJldHVybiBmaWVsZHNcclxuICAgICAgPy5tYXAoKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGZpZWxkKSkgcmV0dXJuIGZpZWxkLnRvU3RyaW5nKClcclxuICAgICAgICBpZiAoZmllbGQgPT09ICdhZmZlY3RlZF9yb3dzJykgcmV0dXJuIGZpZWxkXHJcblxyXG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IE9iamVjdC5rZXlzKGZpZWxkKS5zaGlmdCgpXHJcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IGlzPENvbHVtbk9wdGlvbnM8YW55LCBNb2RlbD4+KGZpZWxkW2ZpZWxkTmFtZSBhcyBrZXlvZiB0eXBlb2YgZmllbGRdKVxyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSlcclxuICAgICAgICAgIHJldHVybiB7IFtmaWVsZE5hbWVdOiBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydE1vZGVsRmllbGRzVG9HcmFwaFFMRmllbGRzKGZpZWxkVmFsdWUpIH1cclxuICAgICAgICBpZiAoIUF0dHJpYnV0ZU9wdGlvbkhlbHBlci5DaGVja0lzQ29sdW1uT3B0aW9uKGZpZWxkVmFsdWUpKSByZXR1cm5cclxuXHJcbiAgICAgICAgY29uc3QgaXNOZXN0ZWRGaWVsZCA9ICEhZmllbGRWYWx1ZS5maWVsZHNcclxuXHJcbiAgICAgICAgaWYgKGlzTmVzdGVkRmllbGQpIHJldHVybiBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydE5lc3RlZEZpZWxkc1RvR3JhcGhRTEZpZWxkcyhmaWVsZE5hbWUsIGZpZWxkVmFsdWUgYXMgYW55KVxyXG5cclxuICAgICAgICByZXR1cm4gZmllbGRWYWx1ZS5jb2x1bW5OYW1lXHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoKGZpZWxkKSA9PiAhIWZpZWxkKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIENvbnZlcnRGaWVsZFZhbHVlRnJvbSA9IDxcclxuICAgIE1vZGVsIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlLFxyXG4gICAgUmVjb3JkRGF0YVR5cGUgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBEYXRhVHlwZSB8IERhdGUsXHJcbiAgICBEYXRhVHlwZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFJlY29yZERhdGFUeXBlIHwgUmVjb3JkRGF0YVR5cGVbXT4sXHJcbiAgPihcclxuICAgIGRhdGE6IERhdGFUeXBlLFxyXG4gICAgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPixcclxuICApOiBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0aWVzV2l0aE5vUGFydGlhbDxNb2RlbD4gfCBQYXJ0aWFsSWRlbnRpZmllcnNNb2RlbDxNb2RlbD4gPT5cclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLnJlZHVjZSgocmVzdWx0LCBjb2x1bW5OYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBhdHRyaWJ1dGVOYW1lLFxyXG4gICAgICAgIGZpZWxkczogYXR0cmlidXRlRmllbGRzLFxyXG4gICAgICAgIGZyb20sXHJcbiAgICAgIH0gPSBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuRmluZENvbHVtbk9wdGlvbkZyb21MaXN0KGNvbHVtbk5hbWUsIGZpZWxkcylcclxuXHJcbiAgICAgIGlmICghIWF0dHJpYnV0ZUZpZWxkcyAmJiBBcnJheS5pc0FycmF5KGF0dHJpYnV0ZUZpZWxkcykpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2NvbHVtbk5hbWVdKSlcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWVdOiBmcm9tXHJcbiAgICAgICAgICAgICAgPyBmcm9tKGRhdGFbY29sdW1uTmFtZV0sIGRhdGEpXHJcbiAgICAgICAgICAgICAgOiBpczxSZWNvcmREYXRhVHlwZVtdPihkYXRhW2NvbHVtbk5hbWVdKS5tYXAoKHZhbHVlKSA9PlxyXG4gICAgICAgICAgICAgICAgICBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydEZpZWxkVmFsdWVGcm9tKGlzPERhdGFUeXBlPih2YWx1ZSksIGF0dHJpYnV0ZUZpZWxkcyksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChkYXRhW2NvbHVtbk5hbWVdKSlcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWVdOiAhIWZyb21cclxuICAgICAgICAgICAgICA/IGZyb20oZGF0YVtjb2x1bW5OYW1lXSlcclxuICAgICAgICAgICAgICA6IEdyYXBoUUxGaWVsZEhlbHBlci5Db252ZXJ0RmllbGRWYWx1ZUZyb20oaXM8RGF0YVR5cGU+KGRhdGFbY29sdW1uTmFtZV0pLCBhdHRyaWJ1dGVGaWVsZHMpLFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISFmcm9tKSByZXR1cm4geyAuLi5yZXN1bHQsIFthdHRyaWJ1dGVOYW1lXTogZnJvbShkYXRhW2NvbHVtbk5hbWVdLCBkYXRhKSB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICBbYXR0cmlidXRlTmFtZV06IGlzU3RyaW5nKGRhdGFbY29sdW1uTmFtZV0pID8gcGFyc2VEYXRlVGltZShkYXRhW2NvbHVtbk5hbWVdLnRvU3RyaW5nKCkpIDogZGF0YVtjb2x1bW5OYW1lXSxcclxuICAgICAgfVxyXG4gICAgfSwge30pXHJcblxyXG4gIHN0YXRpYyBDb252ZXJ0RmllbGRWYWx1ZVRvID0gPFxyXG4gICAgTW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TW9kZWw+LFxyXG4gICAgRGF0YVR5cGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBEYXRhVHlwZSB8IERhdGU+LFxyXG4gID4oXHJcbiAgICBpbnN0YW5jZTogTW9kZWwsXHJcbiAgICBmaWVsZHM6IEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+LFxyXG4gICAgdXBkYXRlID0gZmFsc2UsXHJcbiAgKTogRGF0YVR5cGUgPT4ge1xyXG4gICAgY29uc3QgZGF0YTogUGFydGlhbDxNb2RlbD4gPSBpbnN0YW5jZS50b1BsYWluPy4oKSB8fCBpbnN0YW5jZVxyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5yZWR1Y2UoKHJlc3VsdCwgYXR0cmlidXRlTmFtZSkgPT4ge1xyXG4gICAgICBjb25zdCB7XHJcbiAgICAgICAgY29sdW1uTmFtZSxcclxuICAgICAgICBmaWVsZHM6IGF0dHJpYnV0ZUZpZWxkcyxcclxuICAgICAgICBmb3JlaWduS2V5Q29sdW1uLFxyXG4gICAgICAgIHRvLFxyXG4gICAgICAgIGJpbmRQZXJzaXN0RGF0YSxcclxuICAgICAgfSA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPiwgZmllbGRzKVxyXG5cclxuICAgICAgaWYgKGJpbmRQZXJzaXN0RGF0YSlcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgLi4uYmluZFBlcnNpc3REYXRhKGRhdGFbYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPl0sIGluc3RhbmNlKSxcclxuICAgICAgICB9XHJcbiAgICAgIGlmIChpc05pbChjb2x1bW5OYW1lKSkgcmV0dXJuIHJlc3VsdFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgISFmb3JlaWduS2V5Q29sdW1uICYmXHJcbiAgICAgICAgIWlzRW1wdHkoZm9yZWlnbktleUNvbHVtbikgJiZcclxuICAgICAgICAhT2JqZWN0LmtleXMoZm9yZWlnbktleUNvbHVtbikuZmlsdGVyKFxyXG4gICAgICAgICAgKGtleSkgPT5cclxuICAgICAgICAgICAgIWlzPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KGRhdGFbYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPl0pPy5ba2V5XSxcclxuICAgICAgICApLmxlbmd0aFxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZvcmVpZ25LZXlDb2x1bW4pLnJlZHVjZShcclxuICAgICAgICAgIChvYmplY3QsIGN1cnJlbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2x1bW5OYW1lOiBmb3JlaWduQ29sdW1uTmFtZSB9ID0gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICBmb3JlaWduS2V5Q29sdW1uW2N1cnJlbnQgYXMga2V5b2YgSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD5bbnVtYmVyXV0sXHJcbiAgICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIC4uLm9iamVjdCxcclxuICAgICAgICAgICAgICBbZm9yZWlnbkNvbHVtbk5hbWVdOiBkYXRhW2F0dHJpYnV0ZU5hbWUgYXMga2V5b2YgSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD5bbnVtYmVyXV0/LltjdXJyZW50XSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsgLi4ucmVzdWx0IH0sXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHVwZGF0ZSAmJlxyXG4gICAgICAgIGlzT2JqZWN0KGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXSkgJiZcclxuICAgICAgICAhaXNOaWwoYXR0cmlidXRlRmllbGRzKSAmJlxyXG4gICAgICAgICFpc0RhdGUoZGF0YVthdHRyaWJ1dGVOYW1lIGFzIGtleW9mIEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+W251bWJlcl1dKVxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgICEhY29sdW1uTmFtZSAmJlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoYXR0cmlidXRlRmllbGRzKSAmJlxyXG4gICAgICAgIGlzT2JqZWN0KGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgY29udmVydGVkID1cclxuICAgICAgICAgICFpc05pbChjb2x1bW5OYW1lKSAmJiB0b1xyXG4gICAgICAgICAgICA/IHRvKGluc3RhbmNlW2F0dHJpYnV0ZU5hbWUgYXMga2V5b2YgSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD5bbnVtYmVyXV0sIGluc3RhbmNlKVxyXG4gICAgICAgICAgICA6IGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgLi4uKGNvbnZlcnRlZCAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgW2NvbHVtbk5hbWVdOiB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VbYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPl0gaW5zdGFuY2VvZiBCYXNlTW9kZWxcclxuICAgICAgICAgICAgICAgICAgICAgID8gR3JhcGhRTEZpZWxkSGVscGVyLkNvbnZlcnRGaWVsZFZhbHVlVG8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVthdHRyaWJ1dGVOYW1lIGFzIGtleW9mIEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+W251bWJlcl1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUZpZWxkcyBhcyBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBjb252ZXJ0ZWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISF0bylcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgW2NvbHVtbk5hbWVdOiB0byhpbnN0YW5jZVthdHRyaWJ1dGVOYW1lIGFzIGtleW9mIEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+W251bWJlcl1dLCBpbnN0YW5jZSksXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgLi4ucmVzdWx0LCBbY29sdW1uTmFtZV06IGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXSB9XHJcbiAgICB9LCB7fSBhcyBEYXRhVHlwZSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIENvbnZlcnROZXN0ZWRGaWVsZHNUb0dyYXBoUUxGaWVsZHMgPSA8XHJcbiAgICBUIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPFQ+LFxyXG4gICAgUCBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZTxQPixcclxuICA+KFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBmaWVsZFZhbHVlOiBDb2x1bW5PcHRpb25zPFQsIFA+LFxyXG4gICkgPT4ge1xyXG4gICAgY29uc3QgaGFzQ3VzdG9tRmlsdGVycyA9ICEhZmllbGRWYWx1ZS5maWx0ZXJzXHJcblxyXG4gICAgaWYgKGhhc0N1c3RvbUZpbHRlcnMpXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgb3BlcmF0aW9uOiBmaWVsZFZhbHVlLmNvbHVtbk5hbWUgfHwgZmllbGROYW1lLFxyXG4gICAgICAgIGZpZWxkczogR3JhcGhRTEZpZWxkSGVscGVyLkNvbnZlcnRNb2RlbEZpZWxkc1RvR3JhcGhRTEZpZWxkcyhmaWVsZFZhbHVlLmZpZWxkcyksXHJcbiAgICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgICBbYCR7ZmllbGRWYWx1ZS5jb2x1bW5OYW1lfV93aGVyZWBdOiB7XHJcbiAgICAgICAgICAgIG5hbWU6ICd3aGVyZScsXHJcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkVmFsdWUuZmlsdGVycy5maWx0ZXJUeXBlLFxyXG4gICAgICAgICAgICB2YWx1ZTogQmluZEZpbHRlclF1ZXJ5SGVscGVyLk1ha2VHcmFwaFFMV2hlcmUoZmllbGRWYWx1ZS5maWx0ZXJzLmZpbHRlcnMsIGZpZWxkVmFsdWUuZmllbGRzKSxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBbZmllbGRWYWx1ZS5jb2x1bW5OYW1lIHx8IGZpZWxkTmFtZV06IEdyYXBoUUxGaWVsZEhlbHBlci5Db252ZXJ0TW9kZWxGaWVsZHNUb0dyYXBoUUxGaWVsZHMoZmllbGRWYWx1ZS5maWVsZHMpLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from './attribute-option.helper';
2
+ export * from './bind-filter-query.helper';
3
+ export * from './filter-option.helper';
4
+ export * from './graphql-field.helper';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHdCQUF3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdHRyaWJ1dGUtb3B0aW9uLmhlbHBlcidcclxuZXhwb3J0ICogZnJvbSAnLi9iaW5kLWZpbHRlci1xdWVyeS5oZWxwZXInXHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLW9wdGlvbi5oZWxwZXInXHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JhcGhxbC1maWVsZC5oZWxwZXInXHJcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export * from './with-create-hasura-graphql.mixin';
2
+ export * from './with-delete-hasura-graphql.mixin';
3
+ export * from './with-hasura-graphql.mixin';
4
+ export * from './with-update-hasura-graphql.mixin';
5
+ export * from './with-get-hasura-graphql.mixin';
6
+ export * from './with-find-hasura-graphql.mixin';
7
+ export * from './with-crud-hasura-graphql.mixin';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQTtBQUNsRCxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQTtBQUNsRCxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vd2l0aC1jcmVhdGUtaGFzdXJhLWdyYXBocWwubWl4aW4nXHJcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC1kZWxldGUtaGFzdXJhLWdyYXBocWwubWl4aW4nXHJcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC1oYXN1cmEtZ3JhcGhxbC5taXhpbidcclxuZXhwb3J0ICogZnJvbSAnLi93aXRoLXVwZGF0ZS1oYXN1cmEtZ3JhcGhxbC5taXhpbidcclxuZXhwb3J0ICogZnJvbSAnLi93aXRoLWdldC1oYXN1cmEtZ3JhcGhxbC5taXhpbidcclxuZXhwb3J0ICogZnJvbSAnLi93aXRoLWZpbmQtaGFzdXJhLWdyYXBocWwubWl4aW4nXHJcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC1jcnVkLWhhc3VyYS1ncmFwaHFsLm1peGluJ1xyXG4iXX0=
@@ -0,0 +1,39 @@
1
+ import { DebugHelper } from '../../../utils';
2
+ import { AttributeOptionHelper } from './helpers';
3
+ export const withCreateHasuraGraphQL = (MixinBase) => {
4
+ return class CreateHasuraGraphQLMixin extends MixinBase {
5
+ constructor(...params) {
6
+ const options = params?.[0];
7
+ super(...params);
8
+ this.insertGraphQLOperation = options?.insertGraphQLOperation || `insert_${this.tableName}_one`;
9
+ this.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`;
10
+ }
11
+ async create(data) {
12
+ this.logger = DebugHelper.from(this, 'create');
13
+ const newData = await this.save(this.model.toInstance(data));
14
+ return this.model.toInstance(newData);
15
+ }
16
+ async save(data) {
17
+ const primaryKeyColumns = this.model.identifiersFields.map((field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName);
18
+ const foreignKeyColumns = this.fields
19
+ .map((field) => {
20
+ const columnOptions = Object.values(field).shift();
21
+ return (AttributeOptionHelper.CheckIsColumnOption(columnOptions) &&
22
+ columnOptions.foreignKeyColumn && [
23
+ ...Object.values(columnOptions.foreignKeyColumn).map((foreignKeyName) => AttributeOptionHelper.FindByAttribute(foreignKeyName, this.fields)?.columnName),
24
+ {
25
+ [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map((foreignKeyField) => AttributeOptionHelper.FindByAttribute(foreignKeyField, columnOptions?.fields)
26
+ ?.columnName || foreignKeyField),
27
+ },
28
+ ]);
29
+ })
30
+ .filter(Boolean)
31
+ .reduce((keys, current) => [...keys, ...current], []);
32
+ const result = await this.mutation(this.insertGraphQLOperation, [...primaryKeyColumns, ...foreignKeyColumns], {
33
+ object: { type: this.insertGraphQLObjectType, required: true, value: this.convertDataToHasura(data) },
34
+ });
35
+ return { ...data.toPlain(), ...this.convertDataFromHasura(result[this.insertGraphQLOperation]).toPlain() };
36
+ }
37
+ };
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jcmVhdGUtaGFzdXJhLWdyYXBocWwubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvd2l0aC1jcmVhdGUtaGFzdXJhLWdyYXBocWwubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBcUMsTUFBTSxnQkFBZ0IsQ0FBQTtBQUcvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFRakQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FJckMsU0FBMkQsRUFJM0QsRUFBRTtJQUNGLE9BQU8sTUFBTSx3QkFBeUIsU0FBUSxTQUFTO1FBSXJELFlBQVksR0FBRyxNQUFhO1lBQzFCLE1BQU0sT0FBTyxHQUE0QixNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUVwRCxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTtZQUVoQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxFQUFFLHNCQUFzQixJQUFJLFVBQVUsSUFBSSxDQUFDLFNBQVMsTUFBTSxDQUFBO1lBQy9GLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLEVBQUUsdUJBQXVCLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxlQUFlLENBQUE7UUFDckcsQ0FBQztRQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBbUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUU5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUU1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQVc7WUFDcEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FDeEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FDbEQsQ0FBQTtZQUMvQixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNO2lCQUNsQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDYixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO2dCQUVsRCxPQUFPLENBQ0wscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDO29CQUN4RCxhQUFhLENBQUMsZ0JBQWdCLElBQUk7b0JBQ2hDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQ2xELENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FDakIscUJBQXFCLENBQUMsZUFBZSxDQUFDLGNBQXFCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FDeEY7b0JBQ0Q7d0JBQ0UsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQ3pFLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDbEIscUJBQXFCLENBQUMsZUFBZSxDQUFDLGVBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQWEsQ0FBQzs0QkFDekYsRUFBRSxVQUFVLElBQUksZUFBZSxDQUNwQztxQkFDRjtpQkFDRixDQUNGLENBQUE7WUFDSCxDQUFDLENBQUM7aUJBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQztpQkFDZixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFFdkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUNoQyxJQUFJLENBQUMsc0JBQXNCLEVBQzNCLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLGlCQUFpQixDQUErQixFQUMxRTtnQkFDRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTthQUN0RyxDQUNGLENBQUE7WUFFRCxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUM1RyxDQUFDO0tBQ0ssQ0FBQTtBQUNWLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWF0ZVJlcG9zaXRvcnksIENyZWF0ZVJlcG9zaXRvcnlQYXJhbXMsIE1vZGVsQmFzZVN0cnVjdHVyZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgRGVidWdIZWxwZXIsIE1lcmdlQ29uc3RydWN0b3JQYXJhbXMsIE1peGluQ3RvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBHcmFwaFFMUmVwb3NpdG9yeSwgSGFzdXJhR3JhcGhRTEZpZWxkcyB9IGZyb20gJy4uL3R5cGVzJ1xyXG5cclxuaW1wb3J0IHsgQXR0cmlidXRlT3B0aW9uSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzJ1xyXG5cclxuZXhwb3J0IHR5cGUgQ3JlYXRlQ29uc3RydWN0b3JQYXJhbXMgPSB7XHJcbiAgaW5zZXJ0R3JhcGhRTE9wZXJhdGlvbj86IHN0cmluZ1xyXG4gIGluc2VydEFsbEdyYXBoUUxPcGVyYXRpb24/OiBzdHJpbmdcclxuICBpbnNlcnRHcmFwaFFMT2JqZWN0VHlwZT86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgd2l0aENyZWF0ZUhhc3VyYUdyYXBoUUwgPSA8XHJcbiAgTUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2UsIE1CYXNlWydpZGVudGlmaWVyc0ZpZWxkcyddW251bWJlcl0+LFxyXG4gIFRNaXhpbkJhc2UgZXh0ZW5kcyBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8TUJhc2U+PixcclxuPihcclxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxHcmFwaFFMUmVwb3NpdG9yeTxNQmFzZT4+ICYgVE1peGluQmFzZSxcclxuKTogTWl4aW5DdG9yPFxyXG4gIEdyYXBoUUxSZXBvc2l0b3J5PE1CYXNlPiAmIEluc3RhbmNlVHlwZTxUTWl4aW5CYXNlPiAmIENyZWF0ZVJlcG9zaXRvcnk8TUJhc2U+LFxyXG4gIE1lcmdlQ29uc3RydWN0b3JQYXJhbXM8W0NyZWF0ZUNvbnN0cnVjdG9yUGFyYW1zLCAuLi5hbnlbXV0sIENvbnN0cnVjdG9yUGFyYW1ldGVyczxUTWl4aW5CYXNlPj5cclxuPiA9PiB7XHJcbiAgcmV0dXJuIGNsYXNzIENyZWF0ZUhhc3VyYUdyYXBoUUxNaXhpbiBleHRlbmRzIE1peGluQmFzZSBpbXBsZW1lbnRzIENyZWF0ZVJlcG9zaXRvcnk8TUJhc2U+IHtcclxuICAgIGluc2VydEdyYXBoUUxPcGVyYXRpb246IHN0cmluZ1xyXG4gICAgaW5zZXJ0R3JhcGhRTE9iamVjdFR5cGU6IHN0cmluZ1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKC4uLnBhcmFtczogYW55W10pIHtcclxuICAgICAgY29uc3Qgb3B0aW9uczogQ3JlYXRlQ29uc3RydWN0b3JQYXJhbXMgPSBwYXJhbXM/LlswXVxyXG5cclxuICAgICAgc3VwZXIoLi4ucGFyYW1zKVxyXG5cclxuICAgICAgdGhpcy5pbnNlcnRHcmFwaFFMT3BlcmF0aW9uID0gb3B0aW9ucz8uaW5zZXJ0R3JhcGhRTE9wZXJhdGlvbiB8fCBgaW5zZXJ0XyR7dGhpcy50YWJsZU5hbWV9X29uZWBcclxuICAgICAgdGhpcy5pbnNlcnRHcmFwaFFMT2JqZWN0VHlwZSA9IG9wdGlvbnM/Lmluc2VydEdyYXBoUUxPYmplY3RUeXBlIHx8IGAke3RoaXMudGFibGVOYW1lfV9pbnNlcnRfaW5wdXRgXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlKGRhdGE6IENyZWF0ZVJlcG9zaXRvcnlQYXJhbXM8TUJhc2U+KTogUHJvbWlzZTxNQmFzZT4ge1xyXG4gICAgICB0aGlzLmxvZ2dlciA9IERlYnVnSGVscGVyLmZyb20odGhpcywgJ2NyZWF0ZScpXHJcblxyXG4gICAgICBjb25zdCBuZXdEYXRhID0gYXdhaXQgdGhpcy5zYXZlKHRoaXMubW9kZWwudG9JbnN0YW5jZShkYXRhKSlcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsLnRvSW5zdGFuY2UobmV3RGF0YSlcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzYXZlKGRhdGE6IE1CYXNlKTogUHJvbWlzZTxQYXJ0aWFsPE1CYXNlPj4ge1xyXG4gICAgICBjb25zdCBwcmltYXJ5S2V5Q29sdW1ucyA9IHRoaXMubW9kZWwuaWRlbnRpZmllcnNGaWVsZHMubWFwKFxyXG4gICAgICAgIChmaWVsZCkgPT4gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZShmaWVsZCwgdGhpcy5maWVsZHMpLmNvbHVtbk5hbWUsXHJcbiAgICAgICkgYXMgSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT5cclxuICAgICAgY29uc3QgZm9yZWlnbktleUNvbHVtbnMgPSB0aGlzLmZpZWxkc1xyXG4gICAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb2x1bW5PcHRpb25zID0gT2JqZWN0LnZhbHVlcyhmaWVsZCkuc2hpZnQoKVxyXG5cclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5DaGVja0lzQ29sdW1uT3B0aW9uKGNvbHVtbk9wdGlvbnMpICYmXHJcbiAgICAgICAgICAgIGNvbHVtbk9wdGlvbnMuZm9yZWlnbktleUNvbHVtbiAmJiBbXHJcbiAgICAgICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhjb2x1bW5PcHRpb25zLmZvcmVpZ25LZXlDb2x1bW4pLm1hcChcclxuICAgICAgICAgICAgICAgIChmb3JlaWduS2V5TmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZShmb3JlaWduS2V5TmFtZSBhcyBhbnksIHRoaXMuZmllbGRzKT8uY29sdW1uTmFtZSxcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5PcHRpb25zLmNvbHVtbk5hbWVdOiBPYmplY3Qua2V5cyhjb2x1bW5PcHRpb25zLmZvcmVpZ25LZXlDb2x1bW4pLm1hcChcclxuICAgICAgICAgICAgICAgICAgKGZvcmVpZ25LZXlGaWVsZCkgPT5cclxuICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuRmluZEJ5QXR0cmlidXRlKGZvcmVpZ25LZXlGaWVsZCBhcyBhbnksIGNvbHVtbk9wdGlvbnM/LmZpZWxkcyBhcyBhbnkpXHJcbiAgICAgICAgICAgICAgICAgICAgICA/LmNvbHVtbk5hbWUgfHwgZm9yZWlnbktleUZpZWxkLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXHJcbiAgICAgICAgLnJlZHVjZSgoa2V5cywgY3VycmVudCkgPT4gWy4uLmtleXMsIC4uLmN1cnJlbnRdLCBbXSlcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubXV0YXRpb248UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj4+KFxyXG4gICAgICAgIHRoaXMuaW5zZXJ0R3JhcGhRTE9wZXJhdGlvbixcclxuICAgICAgICBbLi4ucHJpbWFyeUtleUNvbHVtbnMsIC4uLmZvcmVpZ25LZXlDb2x1bW5zXSBhcyBIYXN1cmFHcmFwaFFMRmllbGRzPE1CYXNlPixcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvYmplY3Q6IHsgdHlwZTogdGhpcy5pbnNlcnRHcmFwaFFMT2JqZWN0VHlwZSwgcmVxdWlyZWQ6IHRydWUsIHZhbHVlOiB0aGlzLmNvbnZlcnREYXRhVG9IYXN1cmEoZGF0YSkgfSxcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcblxyXG4gICAgICByZXR1cm4geyAuLi5kYXRhLnRvUGxhaW4oKSwgLi4udGhpcy5jb252ZXJ0RGF0YUZyb21IYXN1cmEocmVzdWx0W3RoaXMuaW5zZXJ0R3JhcGhRTE9wZXJhdGlvbl0pLnRvUGxhaW4oKSB9XHJcbiAgICB9XHJcbiAgfSBhcyBhbnlcclxufVxyXG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin';
2
+ import { withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin';
3
+ import { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin';
4
+ import { withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin';
5
+ import { withUpdateHasuraGraphQL, } from './with-update-hasura-graphql.mixin';
6
+ export const withCrudHasuraGraphQL = (MixinBase) => {
7
+ return class CrudHasuraGraphQLMixin extends withUpdateHasuraGraphQL(withGetHasuraGraphQL(withFindHasuraGraphQL(withDeleteHasuraGraphQL(withCreateHasuraGraphQL(MixinBase))))) {
8
+ };
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jcnVkLWhhc3VyYS1ncmFwaHFsLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvbWl4aW5zL3dpdGgtY3J1ZC1oYXN1cmEtZ3JhcGhxbC5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQTJCLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDckcsT0FBTyxFQUEyQix1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQ3JHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3hFLE9BQU8sRUFBd0Isb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUU1RixPQUFPLEVBR0wsdUJBQXVCLEdBQ3hCLE1BQU0sb0NBQW9DLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FLbkMsU0FBMkQsRUFjM0QsRUFBRTtJQUNGLE9BQU8sTUFBTSxzQkFDWCxTQUFRLHVCQUF1QixDQUM3QixvQkFBb0IsQ0FDbEIscUJBQXFCLENBQ25CLHVCQUF1QixDQUFDLHVCQUF1QixDQUFDLFNBQWdELENBQUMsQ0FBQyxDQUNuRyxDQUNGLENBQ0Y7S0FDeUMsQ0FBQTtBQUM5QyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcnVkUmVwb3NpdG9yeSwgTW9kZWxCYXNlU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBNZXJnZUNvbnN0cnVjdG9yUGFyYW1zLCBNaXhpbkN0b3IgfSBmcm9tICcuLi8uLi8uLi91dGlscydcclxuaW1wb3J0IHsgR3JhcGhRTFJlcG9zaXRvcnkgfSBmcm9tICcuLi90eXBlcydcclxuXHJcbmltcG9ydCB7IENyZWF0ZUNvbnN0cnVjdG9yUGFyYW1zLCB3aXRoQ3JlYXRlSGFzdXJhR3JhcGhRTCB9IGZyb20gJy4vd2l0aC1jcmVhdGUtaGFzdXJhLWdyYXBocWwubWl4aW4nXHJcbmltcG9ydCB7IERlbGV0ZUNvbnN0cnVjdG9yUGFyYW1zLCB3aXRoRGVsZXRlSGFzdXJhR3JhcGhRTCB9IGZyb20gJy4vd2l0aC1kZWxldGUtaGFzdXJhLWdyYXBocWwubWl4aW4nXHJcbmltcG9ydCB7IHdpdGhGaW5kSGFzdXJhR3JhcGhRTCB9IGZyb20gJy4vd2l0aC1maW5kLWhhc3VyYS1ncmFwaHFsLm1peGluJ1xyXG5pbXBvcnQgeyBHZXRDb25zdHJ1Y3RvclBhcmFtcywgd2l0aEdldEhhc3VyYUdyYXBoUUwgfSBmcm9tICcuL3dpdGgtZ2V0LWhhc3VyYS1ncmFwaHFsLm1peGluJ1xyXG5pbXBvcnQgeyBIYXN1cmFDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vd2l0aC1oYXN1cmEtZ3JhcGhxbC5taXhpbidcclxuaW1wb3J0IHtcclxuICBVcGRhdGVDb25zdHJ1Y3RvclBhcmFtcyxcclxuICBVcGRhdGVIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeVR5cGUsXHJcbiAgd2l0aFVwZGF0ZUhhc3VyYUdyYXBoUUwsXHJcbn0gZnJvbSAnLi93aXRoLXVwZGF0ZS1oYXN1cmEtZ3JhcGhxbC5taXhpbidcclxuXHJcbmV4cG9ydCBjb25zdCB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwgPSA8XHJcbiAgVEJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8VEJhc2UsIFRCYXNlWydpZGVudGlmaWVyc0ZpZWxkcyddW251bWJlcl0+LFxyXG4gIFJlcG9zaXRvcnkgPSBDcnVkUmVwb3NpdG9yeTxUQmFzZT4sXHJcbiAgVE1peGluQmFzZSBleHRlbmRzIE1peGluQ3RvciA9IE1peGluQ3RvcixcclxuPihcclxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxHcmFwaFFMUmVwb3NpdG9yeTxUQmFzZT4+ICYgVE1peGluQmFzZSxcclxuKTogTWl4aW5DdG9yPFxyXG4gIEdyYXBoUUxSZXBvc2l0b3J5PFRCYXNlPiAmIFJlcG9zaXRvcnkgJiBVcGRhdGVIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeVR5cGU8VEJhc2U+LFxyXG4gIE1lcmdlQ29uc3RydWN0b3JQYXJhbXM8XHJcbiAgICBbXHJcbiAgICAgIEhhc3VyYUNvbnN0cnVjdG9yUGFyYW1zPFRCYXNlPiAmXHJcbiAgICAgICAgQ3JlYXRlQ29uc3RydWN0b3JQYXJhbXMgJlxyXG4gICAgICAgIERlbGV0ZUNvbnN0cnVjdG9yUGFyYW1zICZcclxuICAgICAgICBHZXRDb25zdHJ1Y3RvclBhcmFtcyAmXHJcbiAgICAgICAgVXBkYXRlQ29uc3RydWN0b3JQYXJhbXMsXHJcbiAgICAgIC4uLmFueVtdLFxyXG4gICAgXSxcclxuICAgIENvbnN0cnVjdG9yUGFyYW1ldGVyczxUTWl4aW5CYXNlPlxyXG4gID5cclxuPiA9PiB7XHJcbiAgcmV0dXJuIGNsYXNzIENydWRIYXN1cmFHcmFwaFFMTWl4aW5cclxuICAgIGV4dGVuZHMgd2l0aFVwZGF0ZUhhc3VyYUdyYXBoUUwoXHJcbiAgICAgIHdpdGhHZXRIYXN1cmFHcmFwaFFMKFxyXG4gICAgICAgIHdpdGhGaW5kSGFzdXJhR3JhcGhRTChcclxuICAgICAgICAgIHdpdGhEZWxldGVIYXN1cmFHcmFwaFFMKHdpdGhDcmVhdGVIYXN1cmFHcmFwaFFMKE1peGluQmFzZSBhcyBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8VEJhc2U+PikpLFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgICBpbXBsZW1lbnRzIENydWRSZXBvc2l0b3J5PFRCYXNlPiB7fSBhcyBhbnlcclxufVxyXG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { DebugHelper, isNil } from '../../../utils';
2
+ import { AttributeOptionHelper } from './helpers';
3
+ export const withDeleteHasuraGraphQL = (MixinBase) => {
4
+ return class DeleteHasuraGraphQLMixin extends MixinBase {
5
+ constructor(...params) {
6
+ const options = params?.[0];
7
+ super(...params);
8
+ this.deleteGraphQLOperation = options?.deleteGraphQLOperation || `delete_${this.tableName}_by_pk`;
9
+ }
10
+ async delete(identifiers) {
11
+ this.logger = DebugHelper.from(this, 'delete');
12
+ const instance = this.model.toInstance(identifiers);
13
+ await this.mutation(this.deleteGraphQLOperation, this.model.identifiersFields.map((field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName), this.model.identifiersFields.reduce((ids, identifier) => {
14
+ const identifierBinded = identifier;
15
+ if (isNil(instance.identifier[identifierBinded]))
16
+ return ids;
17
+ const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields);
18
+ const value = columnOption.to(identifiers[identifier], instance);
19
+ return {
20
+ ...ids,
21
+ [columnOption.columnName]: {
22
+ type: this.getAttributeGraphQLTypeOf(columnOption.type || value),
23
+ value,
24
+ required: true,
25
+ },
26
+ };
27
+ }, {}));
28
+ }
29
+ };
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZWxldGUtaGFzdXJhLWdyYXBocWwubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvd2l0aC1kZWxldGUtaGFzdXJhLWdyYXBocWwubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXFDLE1BQU0sZ0JBQWdCLENBQUE7QUFHdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBTWpELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBSXJDLFNBQTJELEVBSTNELEVBQUU7SUFDRixPQUFPLE1BQU0sd0JBQXlCLFNBQVEsU0FBUztRQUdyRCxZQUFZLEdBQUcsTUFBYTtZQUMxQixNQUFNLE9BQU8sR0FBNEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFcEQsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUE7WUFFaEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxVQUFVLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQTtRQUNuRyxDQUFDO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUEwQztZQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBRTlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBRW5ELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FDakIsSUFBSSxDQUFDLHNCQUFzQixFQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FDbEQsRUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUU7Z0JBQ3RELE1BQU0sZ0JBQWdCLEdBR2xCLFVBQVUsQ0FBQTtnQkFFZCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQUUsT0FBTyxHQUFHLENBQUE7Z0JBRTVELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNuRixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFpRCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBRXZHLE9BQU87b0JBQ0wsR0FBRyxHQUFHO29CQUNOLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO3dCQUNoRSxLQUFLO3dCQUNMLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2lCQUNGLENBQUE7WUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ1AsQ0FBQTtRQUNILENBQUM7S0FDSyxDQUFBO0FBQ1YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEZWxldGVSZXBvc2l0b3J5LFxyXG4gIERlbGV0ZVJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgTW9kZWxCYXNlU3RydWN0dXJlLFxyXG4gIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXMsXHJcbn0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBEZWJ1Z0hlbHBlciwgaXNOaWwsIE1lcmdlQ29uc3RydWN0b3JQYXJhbXMsIE1peGluQ3RvciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBHcmFwaFFMUmVwb3NpdG9yeSwgSGFzdXJhR3JhcGhRTEZpZWxkcyB9IGZyb20gJy4uL3R5cGVzJ1xyXG5cclxuaW1wb3J0IHsgQXR0cmlidXRlT3B0aW9uSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzJ1xyXG5cclxuZXhwb3J0IHR5cGUgRGVsZXRlQ29uc3RydWN0b3JQYXJhbXMgPSB7XHJcbiAgZGVsZXRlR3JhcGhRTE9wZXJhdGlvbj86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgd2l0aERlbGV0ZUhhc3VyYUdyYXBoUUwgPSA8XHJcbiAgTUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2UsIE1CYXNlWydpZGVudGlmaWVyc0ZpZWxkcyddW251bWJlcl0+LFxyXG4gIFRNaXhpbkJhc2UgZXh0ZW5kcyBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8TUJhc2U+PixcclxuPihcclxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxHcmFwaFFMUmVwb3NpdG9yeTxNQmFzZT4+ICYgVE1peGluQmFzZSxcclxuKTogTWl4aW5DdG9yPFxyXG4gIEdyYXBoUUxSZXBvc2l0b3J5PE1CYXNlPiAmIERlbGV0ZVJlcG9zaXRvcnk8TUJhc2U+ICYgSW5zdGFuY2VUeXBlPFRNaXhpbkJhc2U+LFxyXG4gIE1lcmdlQ29uc3RydWN0b3JQYXJhbXM8W0RlbGV0ZUNvbnN0cnVjdG9yUGFyYW1zLCAuLi5hbnlbXV0sIENvbnN0cnVjdG9yUGFyYW1ldGVyczxUTWl4aW5CYXNlPj5cclxuPiA9PiB7XHJcbiAgcmV0dXJuIGNsYXNzIERlbGV0ZUhhc3VyYUdyYXBoUUxNaXhpbiBleHRlbmRzIE1peGluQmFzZSBpbXBsZW1lbnRzIERlbGV0ZVJlcG9zaXRvcnk8TUJhc2U+IHtcclxuICAgIGRlbGV0ZUdyYXBoUUxPcGVyYXRpb246IHN0cmluZ1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKC4uLnBhcmFtczogYW55W10pIHtcclxuICAgICAgY29uc3Qgb3B0aW9uczogRGVsZXRlQ29uc3RydWN0b3JQYXJhbXMgPSBwYXJhbXM/LlswXVxyXG5cclxuICAgICAgc3VwZXIoLi4ucGFyYW1zKVxyXG5cclxuICAgICAgdGhpcy5kZWxldGVHcmFwaFFMT3BlcmF0aW9uID0gb3B0aW9ucz8uZGVsZXRlR3JhcGhRTE9wZXJhdGlvbiB8fCBgZGVsZXRlXyR7dGhpcy50YWJsZU5hbWV9X2J5X3BrYFxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZShpZGVudGlmaWVyczogRGVsZXRlUmVwb3NpdG9yeVBhcmFtczxNQmFzZT4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgdGhpcy5sb2dnZXIgPSBEZWJ1Z0hlbHBlci5mcm9tKHRoaXMsICdkZWxldGUnKVxyXG5cclxuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLm1vZGVsLnRvSW5zdGFuY2UoaWRlbnRpZmllcnMpXHJcblxyXG4gICAgICBhd2FpdCB0aGlzLm11dGF0aW9uKFxyXG4gICAgICAgIHRoaXMuZGVsZXRlR3JhcGhRTE9wZXJhdGlvbixcclxuICAgICAgICB0aGlzLm1vZGVsLmlkZW50aWZpZXJzRmllbGRzLm1hcChcclxuICAgICAgICAgIChmaWVsZCkgPT4gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZShmaWVsZCwgdGhpcy5maWVsZHMpLmNvbHVtbk5hbWUsXHJcbiAgICAgICAgKSBhcyBIYXN1cmFHcmFwaFFMRmllbGRzPE1CYXNlPixcclxuICAgICAgICB0aGlzLm1vZGVsLmlkZW50aWZpZXJzRmllbGRzLnJlZHVjZSgoaWRzLCBpZGVudGlmaWVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZGVudGlmaWVyQmluZGVkOiBFeHRyYWN0PFxyXG4gICAgICAgICAgICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuICAgICAgICAgICAgTUJhc2VbJ2lkZW50aWZpZXJzRmllbGRzJ11bbnVtYmVyXVxyXG4gICAgICAgICAgPiA9IGlkZW50aWZpZXJcclxuXHJcbiAgICAgICAgICBpZiAoaXNOaWwoaW5zdGFuY2UuaWRlbnRpZmllcltpZGVudGlmaWVyQmluZGVkXSkpIHJldHVybiBpZHNcclxuXHJcbiAgICAgICAgICBjb25zdCBjb2x1bW5PcHRpb24gPSBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuRmluZEJ5QXR0cmlidXRlKGlkZW50aWZpZXIsIHRoaXMuZmllbGRzKVxyXG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBjb2x1bW5PcHRpb24udG8oaWRlbnRpZmllcnNbaWRlbnRpZmllciBhcyBrZXlvZiBEZWxldGVSZXBvc2l0b3J5UGFyYW1zPE1CYXNlPl0sIGluc3RhbmNlKVxyXG5cclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmlkcyxcclxuICAgICAgICAgICAgW2NvbHVtbk9wdGlvbi5jb2x1bW5OYW1lXToge1xyXG4gICAgICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0QXR0cmlidXRlR3JhcGhRTFR5cGVPZihjb2x1bW5PcHRpb24udHlwZSB8fCB2YWx1ZSksXHJcbiAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwge30pLFxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfSBhcyBhbnlcclxufVxyXG4iXX0=
@@ -0,0 +1,152 @@
1
+ import { DebugHelper, isNil, set } from '../../../utils';
2
+ import { AttributeOptionHelper, BindFilterQueryHelper } from './helpers';
3
+ export const withFindHasuraGraphQL = (MixinBase) => {
4
+ return class FindHasuraGraphQLMixin extends MixinBase {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.bindOrderByAttributes = (orderBy, fields) => Object.keys(orderBy).reduce((acc, current) => [
8
+ ...acc,
9
+ {
10
+ [AttributeOptionHelper.FindByAttribute(current, fields)
11
+ .columnName]: orderBy[current] === 'asc'
12
+ ? 'asc_nulls_last'
13
+ : 'desc_nulls_last',
14
+ },
15
+ ], []);
16
+ this.bindAggretageAttributes = (aggregates, fields) => [
17
+ ...(aggregates?.minimal?.length
18
+ ? [
19
+ {
20
+ min: this.bindAttributesToColumns(aggregates?.minimal, fields),
21
+ },
22
+ ]
23
+ : []),
24
+ ...(aggregates?.maximum?.length
25
+ ? [
26
+ {
27
+ max: this.bindAttributesToColumns(aggregates?.maximum, fields),
28
+ },
29
+ ]
30
+ : []),
31
+ ];
32
+ this.bindDistinctAttributes = (distinct, fields) => this.bindAttributesToColumns(distinct, fields);
33
+ this.bindAttributesToColumns = (attributes, fields) => attributes.map((attr) => AttributeOptionHelper.FindByAttribute(attr.toString().split('.').pop(), fields)?.columnName || attr);
34
+ }
35
+ async find(params) {
36
+ this.logger = DebugHelper.from(this, 'find');
37
+ const { filters, limits, orderBy, options } = params || {};
38
+ const enableCount = options?.enableCount ?? true;
39
+ const variablesFilters = isNil(filters)
40
+ ? {}
41
+ : {
42
+ where: {
43
+ value: BindFilterQueryHelper.MakeGraphQLWhere(filters, this.fields),
44
+ type: `${this.tableName}_bool_exp`,
45
+ required: true,
46
+ },
47
+ };
48
+ const variablesCount = {
49
+ ...(isNil(orderBy)
50
+ ? {}
51
+ : {
52
+ order_by: {
53
+ type: `${this.tableName}_order_by!`,
54
+ list: true,
55
+ value: this.bindOrderByAttributes(orderBy, this.fields),
56
+ },
57
+ }),
58
+ ...variablesFilters,
59
+ };
60
+ const variables = {
61
+ ...(isNil(limits) ? {} : limits),
62
+ ...variablesCount,
63
+ };
64
+ const aggregateFields = [
65
+ ...(enableCount ? ['count'] : []),
66
+ ...this.bindAggretageAttributes(params.options, this.fields),
67
+ ];
68
+ const result = await this.query([
69
+ {
70
+ operation: this.tableName,
71
+ fields: params.fields
72
+ ? params.fields
73
+ .map((fieldName) => this.fields.find((fieldOption) => fieldOption === fieldName) ??
74
+ this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName))
75
+ .filter(Boolean)
76
+ : this.fields,
77
+ variables,
78
+ },
79
+ ...(aggregateFields.length > 0
80
+ ? [
81
+ {
82
+ operation: `${this.tableName}_aggregate`,
83
+ fields: [
84
+ {
85
+ aggregate: aggregateFields,
86
+ },
87
+ ],
88
+ variables: variablesCount,
89
+ },
90
+ ]
91
+ : []),
92
+ ...((!params.limits?.offset &&
93
+ params.options?.distinct?.map((distinct) => {
94
+ const distinctOption = this.fields.find((fieldOption) => fieldOption === distinct) ??
95
+ this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === distinct);
96
+ const fieldName = Object.values(distinctOption).shift()?.columnName || distinct;
97
+ return {
98
+ operation: {
99
+ name: `${this.tableName}`,
100
+ alias: `${this.tableName}_${distinct.toString()}_distinct`,
101
+ },
102
+ fields: [distinctOption],
103
+ variables: {
104
+ ...variablesFilters,
105
+ [`${this.tableName}_${fieldName}_distinct`]: {
106
+ type: `${this.tableName}_select_column!`,
107
+ list: true,
108
+ value: fieldName,
109
+ name: 'distinct_on',
110
+ },
111
+ },
112
+ };
113
+ })) ||
114
+ []),
115
+ ]);
116
+ const data = result[this.tableName].map((row) => this.convertDataFromHasura(row));
117
+ return {
118
+ data,
119
+ count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity,
120
+ ...(options?.minimal?.length
121
+ ? {
122
+ minimal: options.minimal.reduce((minimals, current) => ({
123
+ ...minimals,
124
+ ...set(minimals, current, result[`${this.tableName}_aggregate`].aggregate.min[AttributeOptionHelper.FindByAttribute(current.toString().split('.').pop(), this.fields)?.columnName || current]),
125
+ }), {}),
126
+ }
127
+ : {}),
128
+ ...(options?.maximum?.length
129
+ ? {
130
+ maximum: options.maximum.reduce((maximums, current) => ({
131
+ ...maximums,
132
+ ...set(maximums, current, result[`${this.tableName}_aggregate`].aggregate.max[AttributeOptionHelper.FindByAttribute(current.toString().split('.').pop(), this.fields)?.columnName || current]),
133
+ }), {}),
134
+ }
135
+ : {}),
136
+ ...(!params.limits?.offset &&
137
+ options?.distinct?.length && {
138
+ distinct: options?.distinct.reduce((distinct, current) => {
139
+ const distinctOption = this.fields.find((fieldOption) => fieldOption === current) ??
140
+ this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === current);
141
+ const fieldName = Object.values(distinctOption).shift()?.columnName || current;
142
+ return {
143
+ ...distinct,
144
+ [current.toString()]: result[`${this.tableName}_${current.toString()}_distinct`].map((obj) => obj[fieldName]),
145
+ };
146
+ }, {}),
147
+ }),
148
+ };
149
+ }
150
+ };
151
+ };
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1maW5kLWhhc3VyYS1ncmFwaHFsLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvbWl4aW5zL3dpdGgtZmluZC1oYXN1cmEtZ3JhcGhxbC5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FJbkMsU0FBMkQsRUFDM0QsRUFBRTtJQUNGLE9BQU8sTUFBTSxzQkFBdUIsU0FBUSxTQUFTO1FBQTlDOztZQTBKTCwwQkFBcUIsR0FBRyxDQUFDLE9BQWlDLEVBQUUsTUFBa0MsRUFBRSxFQUFFLENBQ2hHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUN6QixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixHQUFHLEdBQUc7Z0JBQ047b0JBQ0UsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsT0FBdUQsRUFBRSxNQUFNLENBQUM7eUJBQ3BHLFVBQVUsQ0FBQyxFQUNaLE9BQU8sQ0FBQyxPQUF1RCxDQUFDLEtBQUssS0FBSzt3QkFDeEUsQ0FBQyxDQUFDLGdCQUFnQjt3QkFDbEIsQ0FBQyxDQUFDLGlCQUFpQjtpQkFDeEI7YUFDRixFQUNELEVBQUUsQ0FDSCxDQUFBO1lBRUgsNEJBQXVCLEdBQUcsQ0FDeEIsVUFHQyxFQUNELE1BQWtDLEVBQ2xDLEVBQUUsQ0FBQztnQkFDSCxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNO29CQUM3QixDQUFDLENBQUM7d0JBQ0U7NEJBQ0UsR0FBRyxF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O2dCQUNQLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTTtvQkFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLElBQUk7b0JBQzNCLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTt3QkFDdkQsTUFBTSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFDOzRCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQTt3QkFDakYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLElBQUksT0FBTyxDQUFBO3dCQUU5RSxPQUFPOzRCQUNMLEdBQUcsUUFBUTs0QkFDWCxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQ2xGLENBQUMsR0FBb0MsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUN6RDt5QkFDRixDQUFBO29CQUNILENBQUMsRUFBRSxFQUFTLENBQUM7aUJBQ2QsQ0FBQzthQUNMLENBQUE7UUFDSCxDQUFDO0tBd0RGLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEZpbmRSZXBvc2l0b3J5LFxyXG4gIEZpbmRSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIE1vZGVsQmFzZVN0cnVjdHVyZSxcclxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzLFxyXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxyXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxyXG59IGZyb20gJy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgRGVidWdIZWxwZXIsIGlzTmlsLCBNaXhpbkN0b3IsIHNldCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBHcmFwaFFMUGFyYW1zLCBHcmFwaFFMUmVwb3NpdG9yeSwgSGFzdXJhR3JhcGhRTEZpZWxkcyB9IGZyb20gJy4uL3R5cGVzJ1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGVPcHRpb25IZWxwZXIsIEJpbmRGaWx0ZXJRdWVyeUhlbHBlciB9IGZyb20gJy4vaGVscGVycydcclxuXHJcbmV4cG9ydCBjb25zdCB3aXRoRmluZEhhc3VyYUdyYXBoUUwgPSA8XHJcbiAgTUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2UsIE1CYXNlWydpZGVudGlmaWVyc0ZpZWxkcyddW251bWJlcl0+LFxyXG4gIFRNaXhpbkJhc2UgZXh0ZW5kcyBNaXhpbkN0b3I8R3JhcGhRTFJlcG9zaXRvcnk8TUJhc2U+PixcclxuPihcclxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxHcmFwaFFMUmVwb3NpdG9yeTxNQmFzZT4+ICYgVE1peGluQmFzZSxcclxuKSA9PiB7XHJcbiAgcmV0dXJuIGNsYXNzIEZpbmRIYXN1cmFHcmFwaFFMTWl4aW4gZXh0ZW5kcyBNaXhpbkJhc2UgaW1wbGVtZW50cyBGaW5kUmVwb3NpdG9yeTxNQmFzZT4ge1xyXG4gICAgYXN5bmMgZmluZChwYXJhbXM/OiBGaW5kUmVwb3NpdG9yeVBhcmFtczxNQmFzZT4pOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PE1CYXNlPj4ge1xyXG4gICAgICB0aGlzLmxvZ2dlciA9IERlYnVnSGVscGVyLmZyb20odGhpcywgJ2ZpbmQnKVxyXG5cclxuICAgICAgY29uc3QgeyBmaWx0ZXJzLCBsaW1pdHMsIG9yZGVyQnksIG9wdGlvbnMgfSA9IHBhcmFtcyB8fCB7fVxyXG4gICAgICBjb25zdCBlbmFibGVDb3VudCA9IG9wdGlvbnM/LmVuYWJsZUNvdW50ID8/IHRydWVcclxuICAgICAgY29uc3QgdmFyaWFibGVzRmlsdGVycyA9IGlzTmlsKGZpbHRlcnMpXHJcbiAgICAgICAgPyB7fVxyXG4gICAgICAgIDoge1xyXG4gICAgICAgICAgICB3aGVyZToge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBCaW5kRmlsdGVyUXVlcnlIZWxwZXIuTWFrZUdyYXBoUUxXaGVyZShmaWx0ZXJzLCB0aGlzLmZpZWxkcyksXHJcbiAgICAgICAgICAgICAgdHlwZTogYCR7dGhpcy50YWJsZU5hbWV9X2Jvb2xfZXhwYCxcclxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1cclxuICAgICAgY29uc3QgdmFyaWFibGVzQ291bnQgPSB7XHJcbiAgICAgICAgLi4uKGlzTmlsKG9yZGVyQnkpXHJcbiAgICAgICAgICA/IHt9XHJcbiAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICBvcmRlcl9ieToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogYCR7dGhpcy50YWJsZU5hbWV9X29yZGVyX2J5IWAsXHJcbiAgICAgICAgICAgICAgICBsaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuYmluZE9yZGVyQnlBdHRyaWJ1dGVzKG9yZGVyQnksIHRoaXMuZmllbGRzKSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAuLi52YXJpYWJsZXNGaWx0ZXJzLFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHtcclxuICAgICAgICAuLi4oaXNOaWwobGltaXRzKSA/IHt9IDogbGltaXRzKSxcclxuICAgICAgICAuLi52YXJpYWJsZXNDb3VudCxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBhZ2dyZWdhdGVGaWVsZHMgPSBbXHJcbiAgICAgICAgLi4uKGVuYWJsZUNvdW50ID8gWydjb3VudCddIDogW10pLFxyXG4gICAgICAgIC4uLnRoaXMuYmluZEFnZ3JldGFnZUF0dHJpYnV0ZXMocGFyYW1zLm9wdGlvbnMsIHRoaXMuZmllbGRzKSxcclxuICAgICAgXVxyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvcGVyYXRpb246IHRoaXMudGFibGVOYW1lLFxyXG4gICAgICAgICAgZmllbGRzOiBwYXJhbXMuZmllbGRzXHJcbiAgICAgICAgICAgID8gcGFyYW1zLmZpZWxkc1xyXG4gICAgICAgICAgICAgICAgLm1hcChcclxuICAgICAgICAgICAgICAgICAgKGZpZWxkTmFtZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5maW5kKChmaWVsZE9wdGlvbikgPT4gZmllbGRPcHRpb24gPT09IGZpZWxkTmFtZSkgPz9cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5maW5kKChmaWVsZE9wdGlvbikgPT4gT2JqZWN0LmtleXMoZmllbGRPcHRpb24pLnNoaWZ0KCkgPT09IGZpZWxkTmFtZSksXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXHJcbiAgICAgICAgICAgIDogdGhpcy5maWVsZHMsXHJcbiAgICAgICAgICB2YXJpYWJsZXMsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi4oYWdncmVnYXRlRmllbGRzLmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogYCR7dGhpcy50YWJsZU5hbWV9X2FnZ3JlZ2F0ZWAsXHJcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZTogYWdncmVnYXRlRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzQ291bnQsXHJcbiAgICAgICAgICAgICAgfSBhcyBHcmFwaFFMUGFyYW1zPE1CYXNlPixcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgOiBbXSksXHJcbiAgICAgICAgLi4uKCghcGFyYW1zLmxpbWl0cz8ub2Zmc2V0ICYmXHJcbiAgICAgICAgICBwYXJhbXMub3B0aW9ucz8uZGlzdGluY3Q/Lm1hcCgoZGlzdGluY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZGlzdGluY3RPcHRpb24gPVxyXG4gICAgICAgICAgICAgIHRoaXMuZmllbGRzLmZpbmQoKGZpZWxkT3B0aW9uKSA9PiBmaWVsZE9wdGlvbiA9PT0gZGlzdGluY3QpID8/XHJcbiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZmluZCgoZmllbGRPcHRpb24pID0+IE9iamVjdC5rZXlzKGZpZWxkT3B0aW9uKS5zaGlmdCgpID09PSBkaXN0aW5jdClcclxuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gT2JqZWN0LnZhbHVlcyhkaXN0aW5jdE9wdGlvbikuc2hpZnQoKT8uY29sdW1uTmFtZSB8fCBkaXN0aW5jdFxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBvcGVyYXRpb246IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IGAke3RoaXMudGFibGVOYW1lfWAsXHJcbiAgICAgICAgICAgICAgICBhbGlhczogYCR7dGhpcy50YWJsZU5hbWV9XyR7ZGlzdGluY3QudG9TdHJpbmcoKX1fZGlzdGluY3RgLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBbZGlzdGluY3RPcHRpb25dLFxyXG4gICAgICAgICAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzRmlsdGVycyxcclxuICAgICAgICAgICAgICAgIFtgJHt0aGlzLnRhYmxlTmFtZX1fJHtmaWVsZE5hbWV9X2Rpc3RpbmN0YF06IHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogYCR7dGhpcy50YWJsZU5hbWV9X3NlbGVjdF9jb2x1bW4hYCxcclxuICAgICAgICAgICAgICAgICAgbGlzdDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkTmFtZSxcclxuICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc3RpbmN0X29uJyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSBhcyBHcmFwaFFMUGFyYW1zPE1CYXNlPlxyXG4gICAgICAgICAgfSkpIHx8XHJcbiAgICAgICAgICBbXSksXHJcbiAgICAgIF0pXHJcbiAgICAgIGNvbnN0IGRhdGE6IE1CYXNlW10gPSByZXN1bHRbdGhpcy50YWJsZU5hbWVdLm1hcCgocm93OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+KSA9PlxyXG4gICAgICAgIHRoaXMuY29udmVydERhdGFGcm9tSGFzdXJhKHJvdyksXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBjb3VudDogZW5hYmxlQ291bnQgPyByZXN1bHRbYCR7dGhpcy50YWJsZU5hbWV9X2FnZ3JlZ2F0ZWBdLmFnZ3JlZ2F0ZS5jb3VudCA6IEluZmluaXR5LFxyXG4gICAgICAgIC4uLihvcHRpb25zPy5taW5pbWFsPy5sZW5ndGhcclxuICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgIG1pbmltYWw6IG9wdGlvbnMubWluaW1hbC5yZWR1Y2UoXHJcbiAgICAgICAgICAgICAgICAobWluaW1hbHMsIGN1cnJlbnQpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgIC4uLihtaW5pbWFscyBhcyBhbnkpLFxyXG4gICAgICAgICAgICAgICAgICAuLi5zZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgbWluaW1hbHMgYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtgJHt0aGlzLnRhYmxlTmFtZX1fYWdncmVnYXRlYF0uYWdncmVnYXRlLm1pbltcclxuICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQudG9TdHJpbmcoKS5zcGxpdCgnLicpLnBvcCgpIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcyxcclxuICAgICAgICAgICAgICAgICAgICAgICk/LmNvbHVtbk5hbWUgfHwgKGN1cnJlbnQgYXMgYW55KVxyXG4gICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICkgYXMgUmVwb3NpdG9yeUZpbmRSZXN1bHQ8TUJhc2U+WydtaW5pbWFsJ10sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge30pLFxyXG4gICAgICAgIC4uLihvcHRpb25zPy5tYXhpbXVtPy5sZW5ndGhcclxuICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgIG1heGltdW06IG9wdGlvbnMubWF4aW11bS5yZWR1Y2UoXHJcbiAgICAgICAgICAgICAgICAobWF4aW11bXMsIGN1cnJlbnQpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgIC4uLihtYXhpbXVtcyBhcyBhbnkpLFxyXG4gICAgICAgICAgICAgICAgICAuLi5zZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bXMgYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtgJHt0aGlzLnRhYmxlTmFtZX1fYWdncmVnYXRlYF0uYWdncmVnYXRlLm1heFtcclxuICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQudG9TdHJpbmcoKS5zcGxpdCgnLicpLnBvcCgpIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcyxcclxuICAgICAgICAgICAgICAgICAgICAgICk/LmNvbHVtbk5hbWUgfHwgKGN1cnJlbnQgYXMgYW55KVxyXG4gICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHt9LFxyXG4gICAgICAgICAgICAgICkgYXMgUmVwb3NpdG9yeUZpbmRSZXN1bHQ8TUJhc2U+WydtYXhpbXVtJ10sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge30pLFxyXG4gICAgICAgIC4uLighcGFyYW1zLmxpbWl0cz8ub2Zmc2V0ICYmXHJcbiAgICAgICAgICBvcHRpb25zPy5kaXN0aW5jdD8ubGVuZ3RoICYmIHtcclxuICAgICAgICAgICAgZGlzdGluY3Q6IG9wdGlvbnM/LmRpc3RpbmN0LnJlZHVjZSgoZGlzdGluY3QsIGN1cnJlbnQpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBkaXN0aW5jdE9wdGlvbiA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5maW5kKChmaWVsZE9wdGlvbikgPT4gZmllbGRPcHRpb24gPT09IGN1cnJlbnQpID8/XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5maW5kKChmaWVsZE9wdGlvbikgPT4gT2JqZWN0LmtleXMoZmllbGRPcHRpb24pLnNoaWZ0KCkgPT09IGN1cnJlbnQpXHJcbiAgICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gT2JqZWN0LnZhbHVlcyhkaXN0aW5jdE9wdGlvbikuc2hpZnQoKT8uY29sdW1uTmFtZSB8fCBjdXJyZW50XHJcblxyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5kaXN0aW5jdCxcclxuICAgICAgICAgICAgICAgIFtjdXJyZW50LnRvU3RyaW5nKCldOiByZXN1bHRbYCR7dGhpcy50YWJsZU5hbWV9XyR7Y3VycmVudC50b1N0cmluZygpfV9kaXN0aW5jdGBdLm1hcChcclxuICAgICAgICAgICAgICAgICAgKG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPikgPT4gb2JqW2ZpZWxkTmFtZV0sXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwge30gYXMgYW55KSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYmluZE9yZGVyQnlBdHRyaWJ1dGVzID0gKG9yZGVyQnk6IFJlcG9zaXRvcnlPcmRlckJ5PE1CYXNlPiwgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPE1CYXNlPikgPT5cclxuICAgICAgT2JqZWN0LmtleXMob3JkZXJCeSkucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGN1cnJlbnQpID0+IFtcclxuICAgICAgICAgIC4uLmFjYyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgW0F0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoY3VycmVudCBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPiwgZmllbGRzKVxyXG4gICAgICAgICAgICAgIC5jb2x1bW5OYW1lXTpcclxuICAgICAgICAgICAgICBvcmRlckJ5W2N1cnJlbnQgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT5dID09PSAnYXNjJ1xyXG4gICAgICAgICAgICAgICAgPyAnYXNjX251bGxzX2xhc3QnXHJcbiAgICAgICAgICAgICAgICA6ICdkZXNjX251bGxzX2xhc3QnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIFtdLFxyXG4gICAgICApXHJcblxyXG4gICAgYmluZEFnZ3JldGFnZUF0dHJpYnV0ZXMgPSAoXHJcbiAgICAgIGFnZ3JlZ2F0ZXM6IHtcclxuICAgICAgICBtaW5pbWFsPzogRmluZFJlcG9zaXRvcnlQYXJhbXM8TUJhc2U+WydvcHRpb25zJ11bJ21pbmltYWwnXVxyXG4gICAgICAgIG1heGltdW0/OiBGaW5kUmVwb3NpdG9yeVBhcmFtczxNQmFzZT5bJ29wdGlvbnMnXVsnbWF4aW11bSddXHJcbiAgICAgIH0sXHJcbiAgICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4sXHJcbiAgICApID0+IFtcclxuICAgICAgLi4uKGFnZ3JlZ2F0ZXM/Lm1pbmltYWw/Lmxlbmd0aFxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbWluOiB0aGlzLmJpbmRBdHRyaWJ1dGVzVG9Db2x1bW5zKGFnZ3JlZ2F0ZXM/Lm1pbmltYWwsIGZpZWxkcyksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgOiBbXSksXHJcbiAgICAgIC4uLihhZ2dyZWdhdGVzPy5tYXhpbXVtPy5sZW5ndGhcclxuICAgICAgICA/IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIG1heDogdGhpcy5iaW5kQXR0cmlidXRlc1RvQ29sdW1ucyhhZ2dyZWdhdGVzPy5tYXhpbXVtLCBmaWVsZHMpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIDogW10pLFxyXG4gICAgXVxyXG5cclxuICAgIGJpbmREaXN0aW5jdEF0dHJpYnV0ZXMgPSAoXHJcbiAgICAgIGRpc3RpbmN0OiBGaW5kUmVwb3NpdG9yeVBhcmFtczxNQmFzZT5bJ29wdGlvbnMnXVsnZGlzdGluY3QnXSxcclxuICAgICAgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPE1CYXNlPixcclxuICAgICkgPT4gdGhpcy5iaW5kQXR0cmlidXRlc1RvQ29sdW1ucyhkaXN0aW5jdCwgZmllbGRzKVxyXG5cclxuICAgIGJpbmRBdHRyaWJ1dGVzVG9Db2x1bW5zID0gKFxyXG4gICAgICBhdHRyaWJ1dGVzOiBBcnJheTxOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPiB8IHt9PixcclxuICAgICAgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPE1CYXNlPixcclxuICAgICkgPT5cclxuICAgICAgYXR0cmlidXRlcy5tYXAoXHJcbiAgICAgICAgKGF0dHIpID0+XHJcbiAgICAgICAgICBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuRmluZEJ5QXR0cmlidXRlKFxyXG4gICAgICAgICAgICBhdHRyLnRvU3RyaW5nKCkuc3BsaXQoJy4nKS5wb3AoKSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgKT8uY29sdW1uTmFtZSB8fCBhdHRyLFxyXG4gICAgICApXHJcbiAgfVxyXG59XHJcbiJdfQ==