@ozdao/martyrs 0.2.477 → 0.2.479

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 (1711) hide show
  1. package/README.md +17 -10
  2. package/dist/Media-B1ZP3D7B.cjs +1 -0
  3. package/dist/{Media-CecrG6g6.mjs → Media-CKk33U4A.js} +1 -1
  4. package/dist/abac-BuL5pUZ4.js +949 -0
  5. package/dist/abac-XF1JVCLI.cjs +948 -0
  6. package/dist/addUserStatusFields-B8g3DAuZ.js +88 -0
  7. package/dist/addUserStatusFields-DP_0f12s.cjs +104 -0
  8. package/dist/auth.server.cjs +600 -0
  9. package/dist/auth.server.js +546 -709
  10. package/dist/authJwt-DBB51Iql.cjs +73 -0
  11. package/dist/authJwt-DcYNNwcr.js +74 -0
  12. package/dist/builder.cjs +1356 -0
  13. package/dist/builder.js +1193 -1377
  14. package/dist/chats.server.cjs +106 -0
  15. package/dist/chats.server.js +99 -129
  16. package/dist/common.schema-Bw1O5_2Q.js +13 -0
  17. package/dist/common.schema-BzFEVNn3.cjs +12 -0
  18. package/dist/community.server.cjs +840 -0
  19. package/dist/community.server.js +722 -949
  20. package/dist/credentials.schema-C9FB2EyY.js +10 -0
  21. package/dist/credentials.schema-DwhGdrwC.cjs +9 -0
  22. package/dist/engagement.schema-Dh1adRsn.js +24 -0
  23. package/dist/engagement.schema-JADHu8pj.cjs +23 -0
  24. package/dist/events.server.cjs +856 -0
  25. package/dist/events.server.js +713 -916
  26. package/dist/files.server.cjs +275 -0
  27. package/dist/files.server.js +233 -315
  28. package/dist/gallery.server.cjs +270 -0
  29. package/dist/gallery.server.js +245 -311
  30. package/dist/globals.abac-Cm9e8Jdk.cjs +297 -0
  31. package/dist/globals.abac-DBV_kaOq.js +298 -0
  32. package/dist/globals.logger-Bf6rRU7j.js +156 -0
  33. package/dist/globals.logger-CZMgIMlM.cjs +155 -0
  34. package/dist/globals.observer-CDqUjVU5.js +44 -0
  35. package/dist/globals.observer-CV2wCzzh.cjs +43 -0
  36. package/dist/globals.server.cjs +446 -0
  37. package/dist/globals.server.js +376 -399
  38. package/dist/globals.verifier-CWFz5Gh2.js +614 -0
  39. package/dist/globals.verifier-D68mHEBl.cjs +613 -0
  40. package/dist/index-CsJwdsBW.js +170 -0
  41. package/dist/index-YNOkL1mu.cjs +186 -0
  42. package/dist/mailing-C11EYWm-.js +85 -0
  43. package/dist/mailing-q7sR8gCV.cjs +101 -0
  44. package/dist/{main-DmznvhMM.mjs → main-BhAiwmnI.js} +4270 -4674
  45. package/dist/main-C75EcBpE.cjs +11 -0
  46. package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
  47. package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
  48. package/dist/martyrs/src/components/Button/Button.vue2.cjs +0 -1
  49. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -1
  50. package/dist/martyrs/src/components/Button/Button.vue2.js +0 -1
  51. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -1
  52. package/dist/martyrs/src/components/Chips/{Chips.vue.cjs → Chips.vue2.cjs} +3 -3
  53. package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +1 -0
  54. package/dist/martyrs/src/components/Chips/{Chips.vue.js → Chips.vue2.js} +3 -3
  55. package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +1 -0
  56. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
  57. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
  58. package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
  59. package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.js.map +1 -0
  60. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +127 -74
  61. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  62. package/dist/martyrs/src/components/Feed/Feed.vue.js +136 -83
  63. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  64. package/dist/martyrs/src/components/Field/Field.vue.cjs +20 -22
  65. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  66. package/dist/martyrs/src/components/Field/Field.vue.js +21 -23
  67. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  68. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  70. package/dist/martyrs/src/components/FieldPhone/all-countries.cjs +245 -1
  71. package/dist/martyrs/src/components/FieldPhone/all-countries.cjs.map +1 -1
  72. package/dist/martyrs/src/components/FieldPhone/all-countries.js +245 -1
  73. package/dist/martyrs/src/components/FieldPhone/all-countries.js.map +1 -1
  74. package/dist/martyrs/src/components/FieldPhone/click-outside.cjs.map +1 -1
  75. package/dist/martyrs/src/components/FieldPhone/click-outside.js.map +1 -1
  76. package/dist/martyrs/src/components/FieldTags/BlockTags.vue.js +2 -2
  77. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs +451 -176
  78. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.cjs.map +1 -1
  79. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js +451 -176
  80. package/dist/martyrs/src/components/FieldTags/FieldTags.vue.js.map +1 -1
  81. package/dist/martyrs/src/components/FieldTags/create-tags.cjs.map +1 -1
  82. package/dist/martyrs/src/components/FieldTags/create-tags.js.map +1 -1
  83. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs +1 -4
  84. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.cjs.map +1 -1
  85. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js +1 -4
  86. package/dist/martyrs/src/components/FieldTags/vue-tags-input.props.js.map +1 -1
  87. package/dist/martyrs/src/components/Menu/{Menu.vue.cjs → Menu.vue2.cjs} +2 -2
  88. package/dist/martyrs/src/components/Menu/Menu.vue2.cjs.map +1 -0
  89. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  90. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  91. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs +27 -5
  92. package/dist/martyrs/src/components/Popup/Popup.vue2.cjs.map +1 -1
  93. package/dist/martyrs/src/components/Popup/Popup.vue2.js +28 -6
  94. package/dist/martyrs/src/components/Popup/Popup.vue2.js.map +1 -1
  95. package/dist/martyrs/src/components/Select/Select.vue.cjs +2 -4
  96. package/dist/martyrs/src/components/Select/Select.vue.cjs.map +1 -1
  97. package/dist/martyrs/src/components/Select/Select.vue.js +2 -4
  98. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
  99. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs +639 -0
  100. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.cjs.map +1 -0
  101. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js +639 -0
  102. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  103. package/dist/martyrs/src/components/Table/Table.vue.cjs +23 -38
  104. package/dist/martyrs/src/components/Table/Table.vue.cjs.map +1 -1
  105. package/dist/martyrs/src/components/Table/Table.vue.js +24 -39
  106. package/dist/martyrs/src/components/Table/Table.vue.js.map +1 -1
  107. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs → Tooltip.vue2.cjs} +2 -2
  108. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +1 -0
  109. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.js → Tooltip.vue2.js} +2 -2
  110. package/dist/martyrs/src/components/Tooltip/{Tooltip.vue.cjs.map → Tooltip.vue2.js.map} +1 -1
  111. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +4 -4
  112. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +4 -4
  114. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/auth/auth.client.cjs +5 -5
  116. package/dist/martyrs/src/modules/auth/auth.client.cjs.map +1 -1
  117. package/dist/martyrs/src/modules/auth/auth.client.js +5 -5
  118. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  119. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
  120. package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.cjs.map +1 -1
  122. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs.map +1 -1
  124. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +1 -1
  125. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
  126. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
  127. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  128. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  129. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  130. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  131. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +2 -2
  132. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs.map +1 -1
  133. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +2 -2
  134. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js.map +1 -1
  135. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  136. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs.map +1 -1
  138. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs.map +1 -1
  140. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs.map +1 -1
  142. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.cjs.map +1 -1
  144. package/dist/martyrs/src/modules/auth/views/components/sections/FeaturedUsers.vue.js.map +1 -1
  145. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs.map +1 -1
  146. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +1 -1
  147. package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.cjs.map +1 -1
  148. package/dist/martyrs/src/modules/auth/views/middlewares/auth.validation.js.map +1 -1
  149. package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.cjs.map +1 -1
  150. package/dist/martyrs/src/modules/auth/views/middlewares/ownership.validation.js.map +1 -1
  151. package/dist/martyrs/src/modules/auth/views/router/auth.cjs +87 -98
  152. package/dist/martyrs/src/modules/auth/views/router/auth.cjs.map +1 -1
  153. package/dist/martyrs/src/modules/auth/views/router/auth.js +87 -98
  154. package/dist/martyrs/src/modules/auth/views/router/auth.js.map +1 -1
  155. package/dist/martyrs/src/modules/auth/views/router/users.cjs +105 -106
  156. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  157. package/dist/martyrs/src/modules/auth/views/router/users.js +105 -106
  158. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  159. package/dist/martyrs/src/modules/auth/views/store/auth.cjs +7 -1
  160. package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/auth/views/store/auth.js +7 -1
  162. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  163. package/dist/martyrs/src/modules/auth/views/store/twofa.cjs.map +1 -1
  164. package/dist/martyrs/src/modules/auth/views/store/twofa.js.map +1 -1
  165. package/dist/martyrs/src/modules/auth/views/store/users.cjs +1 -1
  166. package/dist/martyrs/src/modules/auth/views/store/users.cjs.map +1 -1
  167. package/dist/martyrs/src/modules/auth/views/store/users.js +1 -1
  168. package/dist/martyrs/src/modules/auth/views/store/users.js.map +1 -1
  169. package/dist/martyrs/src/modules/auth/views/validations/inputs.validation.cjs.map +1 -1
  170. package/dist/martyrs/src/modules/auth/views/validations/inputs.validation.js.map +1 -1
  171. package/dist/martyrs/src/modules/backoffice/backoffice.client.cjs.map +1 -1
  172. package/dist/martyrs/src/modules/backoffice/backoffice.client.js.map +1 -1
  173. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.cjs.map +1 -1
  174. package/dist/martyrs/src/modules/backoffice/components/pages/Dashboard.vue.js.map +1 -1
  175. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs +1 -1
  176. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.cjs.map +1 -1
  177. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +1 -1
  178. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  179. package/dist/martyrs/src/modules/backoffice/router/backoffice.cjs +1 -4
  180. package/dist/martyrs/src/modules/backoffice/router/backoffice.cjs.map +1 -1
  181. package/dist/martyrs/src/modules/backoffice/router/backoffice.js +1 -4
  182. package/dist/martyrs/src/modules/backoffice/router/backoffice.js.map +1 -1
  183. package/dist/martyrs/src/modules/chats/chats.client.cjs.map +1 -1
  184. package/dist/martyrs/src/modules/chats/chats.client.js.map +1 -1
  185. package/dist/martyrs/src/modules/chats/store/chat.store.cjs +10 -6
  186. package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
  187. package/dist/martyrs/src/modules/chats/store/chat.store.js +10 -6
  188. package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
  189. package/dist/martyrs/src/modules/community/community.client.cjs +14 -14
  190. package/dist/martyrs/src/modules/community/community.client.cjs.map +1 -1
  191. package/dist/martyrs/src/modules/community/community.client.js +3 -3
  192. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  193. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
  195. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.cjs.map +1 -1
  196. package/dist/martyrs/src/modules/community/components/blocks/FooterBlogpost.vue.js.map +1 -1
  197. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
  198. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
  199. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.cjs.map +1 -1
  200. package/dist/martyrs/src/modules/community/components/pages/Blog.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs.map +1 -1
  203. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  204. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js.map +1 -1
  205. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +16 -10
  206. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs.map +1 -1
  207. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +16 -10
  208. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs +2 -2
  210. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.cjs.map +1 -1
  211. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js +2 -2
  212. package/dist/martyrs/src/modules/community/components/sections/Comment.vue.js.map +1 -1
  213. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +1 -1
  214. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +1 -1
  215. package/dist/martyrs/src/modules/community/router/blogposts.cjs +61 -59
  216. package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
  217. package/dist/martyrs/src/modules/community/router/blogposts.js +61 -59
  218. package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
  219. package/dist/martyrs/src/modules/community/store/blogposts.cjs +14 -10
  220. package/dist/martyrs/src/modules/community/store/blogposts.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/community/store/blogposts.js +14 -10
  222. package/dist/martyrs/src/modules/community/store/blogposts.js.map +1 -1
  223. package/dist/martyrs/src/modules/community/store/reactions.cjs.map +1 -1
  224. package/dist/martyrs/src/modules/community/store/reactions.js.map +1 -1
  225. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs +5 -3
  226. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.cjs.map +1 -1
  227. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +5 -3
  228. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js.map +1 -1
  229. package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.cjs.map +1 -1
  230. package/dist/martyrs/src/modules/constructor/components/elements/ImageUpload.vue.js.map +1 -1
  231. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
  233. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs.map +1 -1
  234. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js.map +1 -1
  235. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  236. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs.map +1 -1
  237. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  238. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js.map +1 -1
  239. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +12 -6
  240. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs.map +1 -1
  241. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +12 -6
  242. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js.map +1 -1
  243. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
  244. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
  245. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +3 -4
  246. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  247. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +3 -4
  248. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  249. package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
  250. package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
  251. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs.map +1 -1
  252. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js.map +1 -1
  253. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.cjs.map +1 -1
  254. package/dist/martyrs/src/modules/events/components/pages/EventsSearch.vue.js.map +1 -1
  255. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +1 -1
  256. package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +1 -1
  257. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs +1 -1
  258. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.cjs.map +1 -1
  259. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js +1 -1
  260. package/dist/martyrs/src/modules/events/components/sections/FeaturedEvents.vue.js.map +1 -1
  261. package/dist/martyrs/src/modules/events/events.client.cjs +17 -17
  262. package/dist/martyrs/src/modules/events/events.client.cjs.map +1 -1
  263. package/dist/martyrs/src/modules/events/events.client.js +4 -4
  264. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  265. package/dist/martyrs/src/modules/events/router/events.cjs +11 -21
  266. package/dist/martyrs/src/modules/events/router/events.cjs.map +1 -1
  267. package/dist/martyrs/src/modules/events/router/events.js +11 -21
  268. package/dist/martyrs/src/modules/events/router/events.js.map +1 -1
  269. package/dist/martyrs/src/modules/events/store/events.cjs.map +1 -1
  270. package/dist/martyrs/src/modules/events/store/events.js.map +1 -1
  271. package/dist/martyrs/src/modules/events/store/tickets.cjs +3 -1
  272. package/dist/martyrs/src/modules/events/store/tickets.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/events/store/tickets.js +3 -1
  274. package/dist/martyrs/src/modules/events/store/tickets.js.map +1 -1
  275. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.cjs.map +1 -1
  276. package/dist/martyrs/src/modules/gallery/components/pages/Gallery.vue.js.map +1 -1
  277. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  278. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs.map +1 -1
  279. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  280. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js.map +1 -1
  281. package/dist/martyrs/src/modules/gallery/gallery.client.cjs.map +1 -1
  282. package/dist/martyrs/src/modules/gallery/gallery.client.js.map +1 -1
  283. package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.cjs +17 -17
  284. package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.cjs.map +1 -1
  285. package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.js +17 -17
  286. package/dist/martyrs/src/modules/gallery/router/gallery.backoffice.router.js.map +1 -1
  287. package/dist/martyrs/src/modules/gallery/router/gallery.router.cjs.map +1 -1
  288. package/dist/martyrs/src/modules/gallery/router/gallery.router.js.map +1 -1
  289. package/dist/martyrs/src/modules/gallery/store/gallery.cjs.map +1 -1
  290. package/dist/martyrs/src/modules/gallery/store/gallery.js.map +1 -1
  291. package/dist/martyrs/src/modules/globals/globals.client.cjs +24 -8
  292. package/dist/martyrs/src/modules/globals/globals.client.cjs.map +1 -1
  293. package/dist/martyrs/src/modules/globals/globals.client.js +22 -6
  294. package/dist/martyrs/src/modules/globals/globals.client.js.map +1 -1
  295. package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs +9 -7
  296. package/dist/martyrs/src/modules/globals/views/classes/globals.store.cjs.map +1 -1
  297. package/dist/martyrs/src/modules/globals/views/classes/globals.store.js +9 -7
  298. package/dist/martyrs/src/modules/globals/views/classes/globals.store.js.map +1 -1
  299. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
  300. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
  301. package/dist/martyrs/src/modules/globals/views/classes/store.cjs +2 -2
  302. package/dist/martyrs/src/modules/globals/views/classes/store.cjs.map +1 -1
  303. package/dist/martyrs/src/modules/globals/views/classes/store.js +2 -2
  304. package/dist/martyrs/src/modules/globals/views/classes/store.js.map +1 -1
  305. package/dist/martyrs/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue.cjs +1 -1
  306. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.cjs.map +1 -0
  307. package/dist/martyrs/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue.js +1 -1
  308. package/dist/martyrs/src/modules/globals/views/components/blocks/AlertDialog.vue.js.map +1 -0
  309. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs +308 -0
  310. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.cjs.map +1 -0
  311. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js +308 -0
  312. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockMultiselect.vue.js.map +1 -0
  313. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +61 -49
  314. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
  315. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +62 -50
  316. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
  317. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +2 -2
  318. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs.map +1 -1
  319. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +2 -2
  320. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js.map +1 -1
  321. package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.cjs +2 -2
  322. package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.cjs.map +1 -1
  323. package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.js +2 -2
  324. package/dist/martyrs/src/modules/globals/views/components/elements/ButtonDate.vue.js.map +1 -1
  325. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.cjs.map +1 -1
  326. package/dist/martyrs/src/modules/globals/views/components/layouts/App.vue.js.map +1 -1
  327. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
  328. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  329. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
  330. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  331. package/dist/martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue.cjs.map +1 -1
  332. package/dist/martyrs/src/modules/globals/views/components/partials/BottomNavigationBar.vue.js.map +1 -1
  333. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs.map +1 -1
  334. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js.map +1 -1
  335. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs.map +1 -1
  336. package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js.map +1 -1
  337. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +9 -10
  338. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs.map +1 -1
  339. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +9 -10
  340. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js.map +1 -1
  341. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs.map +1 -1
  342. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js.map +1 -1
  343. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs +1 -1
  344. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js +1 -1
  346. package/dist/martyrs/src/modules/globals/views/components/partials/Sidebar.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/globals/views/localization/get-browser-locale.cjs.map +1 -1
  348. package/dist/martyrs/src/modules/globals/views/localization/get-browser-locale.js.map +1 -1
  349. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +24 -5
  350. package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
  351. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +24 -5
  352. package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
  353. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs +1 -1
  354. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.cjs.map +1 -1
  355. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js +1 -1
  356. package/dist/martyrs/src/modules/globals/views/plugins/alert.plugin.js.map +1 -1
  357. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs +74 -0
  358. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.cjs.map +1 -0
  359. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js +74 -0
  360. package/dist/martyrs/src/modules/globals/views/plugins/date-picker.plugin.js.map +1 -0
  361. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs +200 -0
  362. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.cjs.map +1 -0
  363. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js +200 -0
  364. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue.js.map +1 -0
  365. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.cjs +21 -0
  366. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.cjs.map +1 -0
  367. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +21 -0
  368. package/dist/martyrs/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js.map +1 -0
  369. package/dist/martyrs/src/modules/globals/views/router/addRoutes.cjs +1 -4
  370. package/dist/martyrs/src/modules/globals/views/router/addRoutes.cjs.map +1 -1
  371. package/dist/martyrs/src/modules/globals/views/router/addRoutes.js +1 -4
  372. package/dist/martyrs/src/modules/globals/views/router/addRoutes.js.map +1 -1
  373. package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.cjs.map +1 -1
  374. package/dist/martyrs/src/modules/globals/views/router/scrollBehavior.js.map +1 -1
  375. package/dist/martyrs/src/modules/globals/views/store/globals.cjs +4 -14
  376. package/dist/martyrs/src/modules/globals/views/store/globals.cjs.map +1 -1
  377. package/dist/martyrs/src/modules/globals/views/store/globals.js +4 -14
  378. package/dist/martyrs/src/modules/globals/views/store/globals.js.map +1 -1
  379. package/dist/martyrs/src/modules/globals/views/utils/axios-instance.cjs.map +1 -1
  380. package/dist/martyrs/src/modules/globals/views/utils/axios-instance.js.map +1 -1
  381. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs +2 -2
  382. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.cjs.map +1 -1
  383. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js +2 -2
  384. package/dist/martyrs/src/modules/globals/views/utils/vue-app-renderer.js.map +1 -1
  385. package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.cjs +39 -0
  386. package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.cjs.map +1 -0
  387. package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js +39 -0
  388. package/dist/martyrs/src/modules/icons/actions/IconDuplicate.vue.js.map +1 -0
  389. package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.cjs +57 -0
  390. package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.cjs.map +1 -0
  391. package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js +57 -0
  392. package/dist/martyrs/src/modules/icons/entities/IconDiscount.vue.js.map +1 -0
  393. package/dist/martyrs/src/modules/icons/entities/IconFile.vue.cjs +33 -0
  394. package/dist/martyrs/src/modules/icons/entities/IconFile.vue.cjs.map +1 -0
  395. package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js +33 -0
  396. package/dist/martyrs/src/modules/icons/entities/IconFile.vue.js.map +1 -0
  397. package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.cjs +33 -0
  398. package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.cjs.map +1 -0
  399. package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js +33 -0
  400. package/dist/martyrs/src/modules/icons/entities/IconMusic.vue.js.map +1 -0
  401. package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.cjs +35 -0
  402. package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.cjs.map +1 -0
  403. package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js +35 -0
  404. package/dist/martyrs/src/modules/icons/entities/IconSettings.vue.js.map +1 -0
  405. package/dist/martyrs/src/modules/icons/icons.client.cjs +97 -79
  406. package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
  407. package/dist/martyrs/src/modules/icons/icons.client.js +140 -122
  408. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  409. package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs +25 -0
  410. package/dist/martyrs/src/modules/icons/logos/Logotype.vue.cjs.map +1 -0
  411. package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js +25 -0
  412. package/dist/martyrs/src/modules/icons/logos/Logotype.vue.js.map +1 -0
  413. package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.cjs +35 -0
  414. package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.cjs.map +1 -0
  415. package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js +35 -0
  416. package/dist/martyrs/src/modules/icons/navigation/IconAttach.vue.js.map +1 -0
  417. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs +39 -0
  418. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.cjs.map +1 -0
  419. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js +39 -0
  420. package/dist/martyrs/src/modules/icons/navigation/IconCheck.vue.js.map +1 -0
  421. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs +39 -0
  422. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.cjs.map +1 -0
  423. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js +39 -0
  424. package/dist/martyrs/src/modules/icons/navigation/IconDoubleCheck.vue.js.map +1 -0
  425. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs +34 -0
  426. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.cjs.map +1 -0
  427. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js +34 -0
  428. package/dist/martyrs/src/modules/icons/navigation/IconHeart.vue.js.map +1 -0
  429. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs +39 -0
  430. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.cjs.map +1 -0
  431. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js +39 -0
  432. package/dist/martyrs/src/modules/icons/navigation/IconPause.vue.js.map +1 -0
  433. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs +31 -0
  434. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.cjs.map +1 -0
  435. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js +31 -0
  436. package/dist/martyrs/src/modules/icons/navigation/IconPlay.vue.js.map +1 -0
  437. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs +39 -0
  438. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.cjs.map +1 -0
  439. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js +39 -0
  440. package/dist/martyrs/src/modules/icons/navigation/IconRefresh.vue.js.map +1 -0
  441. package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.cjs +31 -0
  442. package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.cjs.map +1 -0
  443. package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.js +31 -0
  444. package/dist/martyrs/src/modules/icons/navigation/IconSend.vue.js.map +1 -0
  445. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs +39 -0
  446. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.cjs.map +1 -0
  447. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js +39 -0
  448. package/dist/martyrs/src/modules/icons/navigation/IconShuffle.vue.js.map +1 -0
  449. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs +39 -0
  450. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.cjs.map +1 -0
  451. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js +39 -0
  452. package/dist/martyrs/src/modules/icons/navigation/IconVolume.vue.js.map +1 -0
  453. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +278 -0
  454. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -0
  455. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +278 -0
  456. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -0
  457. package/dist/martyrs/src/modules/icons/router/icons.router.cjs +33 -0
  458. package/dist/martyrs/src/modules/icons/router/icons.router.cjs.map +1 -0
  459. package/dist/martyrs/src/modules/icons/router/icons.router.js +33 -0
  460. package/dist/martyrs/src/modules/icons/router/icons.router.js.map +1 -0
  461. package/dist/martyrs/src/modules/icons/socials/dribbble.vue.cjs +2 -2
  462. package/dist/martyrs/src/modules/icons/socials/dribbble.vue.js +2 -2
  463. package/dist/martyrs/src/modules/icons/socials/facebook.vue.cjs +2 -2
  464. package/dist/martyrs/src/modules/icons/socials/facebook.vue.js +2 -2
  465. package/dist/martyrs/src/modules/icons/socials/instagram.vue.cjs +2 -2
  466. package/dist/martyrs/src/modules/icons/socials/instagram.vue.js +2 -2
  467. package/dist/martyrs/src/modules/icons/socials/line.vue.cjs +2 -2
  468. package/dist/martyrs/src/modules/icons/socials/line.vue.js +2 -2
  469. package/dist/martyrs/src/modules/icons/socials/linkedin.vue.cjs +2 -2
  470. package/dist/martyrs/src/modules/icons/socials/linkedin.vue.js +2 -2
  471. package/dist/martyrs/src/modules/icons/socials/reddit.vue.cjs +2 -2
  472. package/dist/martyrs/src/modules/icons/socials/reddit.vue.js +2 -2
  473. package/dist/martyrs/src/modules/icons/socials/telegram.vue.cjs +2 -2
  474. package/dist/martyrs/src/modules/icons/socials/telegram.vue.js +2 -2
  475. package/dist/martyrs/src/modules/icons/socials/twitter.vue.cjs +2 -2
  476. package/dist/martyrs/src/modules/icons/socials/twitter.vue.js +2 -2
  477. package/dist/martyrs/src/modules/icons/socials/vk.vue.cjs +2 -2
  478. package/dist/martyrs/src/modules/icons/socials/vk.vue.js +2 -2
  479. package/dist/martyrs/src/modules/icons/socials/youtube.vue.cjs +2 -2
  480. package/dist/martyrs/src/modules/icons/socials/youtube.vue.js +2 -2
  481. package/dist/martyrs/src/modules/landing/landing.client.cjs +12 -12
  482. package/dist/martyrs/src/modules/landing/landing.client.js +22 -22
  483. package/dist/martyrs/src/modules/marketplace/marketplace.client.cjs.map +1 -1
  484. package/dist/martyrs/src/modules/marketplace/marketplace.client.js.map +1 -1
  485. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
  486. package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
  487. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.cjs.map +1 -1
  488. package/dist/martyrs/src/modules/marketplace/views/components/pages/Catalog.vue.js.map +1 -1
  489. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs.map +1 -1
  490. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js.map +1 -1
  491. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.cjs +0 -1
  492. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.cjs.map +1 -1
  493. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js +0 -1
  494. package/dist/martyrs/src/modules/marketplace/views/router/marketplace.router.js.map +1 -1
  495. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.cjs +25 -19
  496. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.cjs.map +1 -1
  497. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js +25 -19
  498. package/dist/martyrs/src/modules/marketplace/views/store/marketplace.js.map +1 -1
  499. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs +1 -1
  500. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.cjs.map +1 -1
  501. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +1 -1
  502. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  503. package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.cjs +1 -1
  504. package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.cjs.map +1 -1
  505. package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js +1 -1
  506. package/dist/martyrs/src/modules/notifications/components/sections/NotificationsList.vue.js.map +1 -1
  507. package/dist/martyrs/src/modules/notifications/notifications.client.cjs +18 -27
  508. package/dist/martyrs/src/modules/notifications/notifications.client.cjs.map +1 -1
  509. package/dist/martyrs/src/modules/notifications/notifications.client.js +16 -25
  510. package/dist/martyrs/src/modules/notifications/notifications.client.js.map +1 -1
  511. package/dist/martyrs/src/modules/notifications/router/notifications.router.cjs +1 -1
  512. package/dist/martyrs/src/modules/notifications/router/notifications.router.cjs.map +1 -1
  513. package/dist/martyrs/src/modules/notifications/router/notifications.router.js +1 -1
  514. package/dist/martyrs/src/modules/notifications/router/notifications.router.js.map +1 -1
  515. package/dist/martyrs/src/modules/notifications/store/notifications.store.cjs.map +1 -1
  516. package/dist/martyrs/src/modules/notifications/store/notifications.store.js.map +1 -1
  517. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
  518. package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
  519. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +2 -2
  520. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs.map +1 -1
  521. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  522. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js.map +1 -1
  523. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  524. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  525. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +1 -3
  526. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  527. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -3
  528. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  529. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs.map +1 -1
  530. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js.map +1 -1
  531. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.cjs.map +1 -1
  532. package/dist/martyrs/src/modules/orders/components/partials/ShopCart.vue.js.map +1 -1
  533. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +1 -1
  534. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +1 -1
  535. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -1
  536. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  537. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  538. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  539. package/dist/martyrs/src/modules/orders/orders.client.cjs +5 -5
  540. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  541. package/dist/martyrs/src/modules/orders/orders.client.js +5 -5
  542. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  543. package/dist/martyrs/src/modules/orders/router/orders.router.cjs +2 -3
  544. package/dist/martyrs/src/modules/orders/router/orders.router.cjs.map +1 -1
  545. package/dist/martyrs/src/modules/orders/router/orders.router.js +2 -3
  546. package/dist/martyrs/src/modules/orders/router/orders.router.js.map +1 -1
  547. package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
  548. package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
  549. package/dist/martyrs/src/modules/orders/store/customers.store.cjs.map +1 -1
  550. package/dist/martyrs/src/modules/orders/store/customers.store.js.map +1 -1
  551. package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
  552. package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
  553. package/dist/martyrs/src/modules/orders/store/models/order.cjs.map +1 -1
  554. package/dist/martyrs/src/modules/orders/store/models/order.js.map +1 -1
  555. package/dist/martyrs/src/modules/orders/store/orders.cjs +23 -26
  556. package/dist/martyrs/src/modules/orders/store/orders.cjs.map +1 -1
  557. package/dist/martyrs/src/modules/orders/store/orders.js +23 -26
  558. package/dist/martyrs/src/modules/orders/store/orders.js.map +1 -1
  559. package/dist/martyrs/src/modules/orders/store/shopcart.cjs +94 -47
  560. package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
  561. package/dist/martyrs/src/modules/orders/store/shopcart.js +94 -47
  562. package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
  563. package/dist/martyrs/src/modules/orders/store/testimonials.cjs.map +1 -1
  564. package/dist/martyrs/src/modules/orders/store/testimonials.js.map +1 -1
  565. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
  566. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  567. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +16 -16
  568. package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
  569. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
  570. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
  571. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
  572. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
  573. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +1 -1
  574. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +1 -1
  575. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +2 -2
  576. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
  577. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +2 -2
  578. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
  579. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +5 -5
  580. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  581. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +5 -5
  582. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  583. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs +2 -2
  584. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.cjs.map +1 -1
  585. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  586. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js.map +1 -1
  587. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
  588. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
  589. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +8 -8
  590. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  591. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
  592. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
  593. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
  594. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
  595. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
  596. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +1 -1
  597. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs.map +1 -1
  598. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js.map +1 -1
  599. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +5 -5
  600. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
  601. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
  602. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
  603. package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
  604. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +225 -0
  605. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -0
  606. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +225 -0
  607. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -0
  608. package/dist/martyrs/src/modules/organizations/organizations.client.cjs +28 -28
  609. package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
  610. package/dist/martyrs/src/modules/organizations/organizations.client.js +10 -10
  611. package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
  612. package/dist/martyrs/src/modules/organizations/router/backoffice.router.cjs +26 -23
  613. package/dist/martyrs/src/modules/organizations/router/backoffice.router.cjs.map +1 -1
  614. package/dist/martyrs/src/modules/organizations/router/backoffice.router.js +26 -23
  615. package/dist/martyrs/src/modules/organizations/router/backoffice.router.js.map +1 -1
  616. package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +27 -23
  617. package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
  618. package/dist/martyrs/src/modules/organizations/router/departments.router.js +27 -23
  619. package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
  620. package/dist/martyrs/src/modules/organizations/router/members.router.cjs +17 -15
  621. package/dist/martyrs/src/modules/organizations/router/members.router.cjs.map +1 -1
  622. package/dist/martyrs/src/modules/organizations/router/members.router.js +17 -15
  623. package/dist/martyrs/src/modules/organizations/router/members.router.js.map +1 -1
  624. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +73 -60
  625. package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
  626. package/dist/martyrs/src/modules/organizations/router/organizations.js +73 -60
  627. package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
  628. package/dist/martyrs/src/modules/organizations/store/departments.cjs +3 -1
  629. package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +1 -1
  630. package/dist/martyrs/src/modules/organizations/store/departments.js +3 -1
  631. package/dist/martyrs/src/modules/organizations/store/departments.js.map +1 -1
  632. package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +1 -1
  633. package/dist/martyrs/src/modules/organizations/store/invites.js.map +1 -1
  634. package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +1 -1
  635. package/dist/martyrs/src/modules/organizations/store/memberships.js.map +1 -1
  636. package/dist/martyrs/src/modules/organizations/store/organizations.cjs.map +1 -1
  637. package/dist/martyrs/src/modules/organizations/store/organizations.js.map +1 -1
  638. package/dist/martyrs/src/modules/pages/pages.client.cjs +2 -2
  639. package/dist/martyrs/src/modules/pages/pages.client.cjs.map +1 -1
  640. package/dist/martyrs/src/modules/pages/pages.client.js +2 -2
  641. package/dist/martyrs/src/modules/pages/pages.client.js.map +1 -1
  642. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
  643. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  644. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  645. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  646. package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.cjs.map +1 -1
  647. package/dist/martyrs/src/modules/pages/views/components/pages/Pages.vue.js.map +1 -1
  648. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs.map +1 -1
  649. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js.map +1 -1
  650. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs +35 -31
  651. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.cjs.map +1 -1
  652. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js +35 -31
  653. package/dist/martyrs/src/modules/pages/views/router/pages.backoffice.router.js.map +1 -1
  654. package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs +16 -14
  655. package/dist/martyrs/src/modules/pages/views/router/pages.router.cjs.map +1 -1
  656. package/dist/martyrs/src/modules/pages/views/router/pages.router.js +16 -14
  657. package/dist/martyrs/src/modules/pages/views/router/pages.router.js.map +1 -1
  658. package/dist/martyrs/src/modules/pages/views/store/pages.cjs +5 -2
  659. package/dist/martyrs/src/modules/pages/views/store/pages.cjs.map +1 -1
  660. package/dist/martyrs/src/modules/pages/views/store/pages.js +5 -2
  661. package/dist/martyrs/src/modules/pages/views/store/pages.js.map +1 -1
  662. package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.cjs +2 -2
  663. package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.cjs.map +1 -1
  664. package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.js +2 -2
  665. package/dist/martyrs/src/modules/products/components/blocks/CardLeftover.vue.js.map +1 -1
  666. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs +76 -135
  667. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.cjs.map +1 -1
  668. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js +77 -136
  669. package/dist/martyrs/src/modules/products/components/blocks/CardPosition.vue.js.map +1 -1
  670. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs +4 -4
  671. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.cjs.map +1 -1
  672. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +4 -4
  673. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  674. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs +128 -0
  675. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.cjs.map +1 -0
  676. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js +128 -0
  677. package/dist/martyrs/src/modules/products/components/blocks/ProductDiscounts.vue.js.map +1 -0
  678. package/dist/martyrs/src/modules/products/components/blocks/{ImagesThumbnails.vue.cjs → ProductImages.vue.cjs} +7 -7
  679. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -0
  680. package/dist/martyrs/src/modules/products/components/blocks/{ImagesThumbnails.vue.js → ProductImages.vue.js} +7 -7
  681. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -0
  682. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs +141 -0
  683. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.cjs.map +1 -0
  684. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js +141 -0
  685. package/dist/martyrs/src/modules/products/components/blocks/ProductVariants.vue.js.map +1 -0
  686. package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.cjs → elements/Image360.vue.cjs} +5 -5
  687. package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.cjs.map → elements/Image360.vue.cjs.map} +1 -1
  688. package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.js → elements/Image360.vue.js} +5 -5
  689. package/dist/martyrs/src/modules/products/components/{blocks/Images360.vue.js.map → elements/Image360.vue.js.map} +1 -1
  690. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs +19 -20
  691. package/dist/martyrs/src/modules/products/components/elements/Price.vue.cjs.map +1 -1
  692. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js +20 -21
  693. package/dist/martyrs/src/modules/products/components/elements/Price.vue.js.map +1 -1
  694. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs +71 -0
  695. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.cjs.map +1 -0
  696. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js +71 -0
  697. package/dist/martyrs/src/modules/products/components/elements/QuantitySelector.vue.js.map +1 -0
  698. package/dist/martyrs/src/modules/products/components/elements/THC.vue.cjs +6 -6
  699. package/dist/martyrs/src/modules/products/components/elements/THC.vue.js +6 -6
  700. package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.cjs +73 -0
  701. package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.cjs.map +1 -0
  702. package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.js +73 -0
  703. package/dist/martyrs/src/modules/products/components/forms/ColumnSettingsMenu.vue.js.map +1 -0
  704. package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.cjs +101 -0
  705. package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.cjs.map +1 -0
  706. package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.js +101 -0
  707. package/dist/martyrs/src/modules/products/components/forms/ReorderSettingsForm.vue.js.map +1 -0
  708. package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.cjs +135 -0
  709. package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.cjs.map +1 -0
  710. package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.js +135 -0
  711. package/dist/martyrs/src/modules/products/components/forms/StockAuditForm.vue.js.map +1 -0
  712. package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.cjs +148 -0
  713. package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.cjs.map +1 -0
  714. package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.js +148 -0
  715. package/dist/martyrs/src/modules/products/components/forms/StockHistoryView.vue.js.map +1 -0
  716. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +2 -2
  717. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  718. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +2 -2
  719. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  720. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +6 -6
  721. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  722. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +6 -6
  723. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  724. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs +345 -0
  725. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.cjs.map +1 -0
  726. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js +345 -0
  727. package/dist/martyrs/src/modules/products/components/pages/LeftoverEdit.vue.js.map +1 -0
  728. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs +279 -55
  729. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.cjs.map +1 -1
  730. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js +282 -58
  731. package/dist/martyrs/src/modules/products/components/pages/Leftovers.vue.js.map +1 -1
  732. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +107 -116
  733. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  734. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +116 -125
  735. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  736. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +257 -312
  737. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  738. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +262 -317
  739. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  740. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +2 -2
  741. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs.map +1 -1
  742. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +2 -2
  743. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js.map +1 -1
  744. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +2 -2
  745. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  746. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +2 -2
  747. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  748. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +168 -0
  749. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs.map +1 -0
  750. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +168 -0
  751. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js.map +1 -0
  752. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +319 -0
  753. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs.map +1 -0
  754. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +319 -0
  755. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js.map +1 -0
  756. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs +140 -0
  757. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.cjs.map +1 -0
  758. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js +140 -0
  759. package/dist/martyrs/src/modules/products/components/sections/EditIngredients.vue.js.map +1 -0
  760. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +468 -0
  761. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs.map +1 -0
  762. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +468 -0
  763. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js.map +1 -0
  764. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +2 -2
  765. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs.map +1 -1
  766. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +2 -2
  767. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js.map +1 -1
  768. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.cjs.map +1 -1
  769. package/dist/martyrs/src/modules/products/components/sections/HeroRecommendation.vue.js.map +1 -1
  770. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +1 -1
  771. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs.map +1 -1
  772. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +1 -1
  773. package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js.map +1 -1
  774. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +134 -0
  775. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs.map +1 -0
  776. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +134 -0
  777. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js.map +1 -0
  778. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +13 -13
  779. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs.map +1 -1
  780. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +13 -13
  781. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  782. package/dist/martyrs/src/modules/products/products.client.cjs +20 -29
  783. package/dist/martyrs/src/modules/products/products.client.cjs.map +1 -1
  784. package/dist/martyrs/src/modules/products/products.client.js +37 -46
  785. package/dist/martyrs/src/modules/products/products.client.js.map +1 -1
  786. package/dist/martyrs/src/modules/products/router/categories.router.cjs +34 -30
  787. package/dist/martyrs/src/modules/products/router/categories.router.cjs.map +1 -1
  788. package/dist/martyrs/src/modules/products/router/categories.router.js +34 -30
  789. package/dist/martyrs/src/modules/products/router/categories.router.js.map +1 -1
  790. package/dist/martyrs/src/modules/products/router/leftovers.router.cjs +42 -39
  791. package/dist/martyrs/src/modules/products/router/leftovers.router.cjs.map +1 -1
  792. package/dist/martyrs/src/modules/products/router/leftovers.router.js +42 -39
  793. package/dist/martyrs/src/modules/products/router/leftovers.router.js.map +1 -1
  794. package/dist/martyrs/src/modules/products/router/products.router.cjs +0 -1
  795. package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
  796. package/dist/martyrs/src/modules/products/router/products.router.js +0 -1
  797. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  798. package/dist/martyrs/src/modules/products/store/categories.cjs +7 -3
  799. package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
  800. package/dist/martyrs/src/modules/products/store/categories.js +7 -3
  801. package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
  802. package/dist/martyrs/src/modules/products/store/leftovers.cjs +42 -3
  803. package/dist/martyrs/src/modules/products/store/leftovers.cjs.map +1 -1
  804. package/dist/martyrs/src/modules/products/store/leftovers.js +42 -3
  805. package/dist/martyrs/src/modules/products/store/leftovers.js.map +1 -1
  806. package/dist/martyrs/src/modules/products/store/products.cjs +32 -60
  807. package/dist/martyrs/src/modules/products/store/products.cjs.map +1 -1
  808. package/dist/martyrs/src/modules/products/store/products.js +32 -60
  809. package/dist/martyrs/src/modules/products/store/products.js.map +1 -1
  810. package/dist/martyrs/src/modules/products/store/variants.store.cjs +6 -0
  811. package/dist/martyrs/src/modules/products/store/variants.store.cjs.map +1 -0
  812. package/dist/martyrs/src/modules/products/store/variants.store.js +6 -0
  813. package/dist/martyrs/src/modules/products/store/variants.store.js.map +1 -0
  814. package/dist/martyrs/src/modules/rents/rents.client.cjs.map +1 -1
  815. package/dist/martyrs/src/modules/rents/rents.client.js.map +1 -1
  816. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs +1 -2
  817. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.cjs.map +1 -1
  818. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -2
  819. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  820. package/dist/martyrs/src/modules/rents/views/router/rents.router.cjs +3 -11
  821. package/dist/martyrs/src/modules/rents/views/router/rents.router.cjs.map +1 -1
  822. package/dist/martyrs/src/modules/rents/views/router/rents.router.js +3 -11
  823. package/dist/martyrs/src/modules/rents/views/router/rents.router.js.map +1 -1
  824. package/dist/martyrs/src/modules/rents/views/store/rents.store.cjs.map +1 -1
  825. package/dist/martyrs/src/modules/rents/views/store/rents.store.js.map +1 -1
  826. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs.map +1 -1
  827. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js.map +1 -1
  828. package/dist/martyrs/src/modules/reports/reports.client.cjs.map +1 -1
  829. package/dist/martyrs/src/modules/reports/reports.client.js.map +1 -1
  830. package/dist/martyrs/src/modules/reports/store/reports.cjs +1 -1
  831. package/dist/martyrs/src/modules/reports/store/reports.cjs.map +1 -1
  832. package/dist/martyrs/src/modules/reports/store/reports.js +1 -1
  833. package/dist/martyrs/src/modules/reports/store/reports.js.map +1 -1
  834. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +74 -51
  835. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
  836. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +75 -52
  837. package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
  838. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  839. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs.map +1 -1
  840. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  841. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js.map +1 -1
  842. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  843. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs.map +1 -1
  844. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  845. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  846. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
  847. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  848. package/dist/martyrs/src/modules/spots/router/spots.cjs +3 -9
  849. package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
  850. package/dist/martyrs/src/modules/spots/router/spots.js +3 -9
  851. package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
  852. package/dist/martyrs/src/modules/spots/spots.client.cjs +1 -1
  853. package/dist/martyrs/src/modules/spots/spots.client.cjs.map +1 -1
  854. package/dist/martyrs/src/modules/spots/spots.client.js +1 -1
  855. package/dist/martyrs/src/modules/spots/spots.client.js.map +1 -1
  856. package/dist/martyrs/src/modules/spots/store/spots.cjs.map +1 -1
  857. package/dist/martyrs/src/modules/spots/store/spots.js.map +1 -1
  858. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +3 -3
  859. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +3 -3
  860. package/dist/martyrs/src/modules/wallet/views/router/payments.router.cjs +26 -23
  861. package/dist/martyrs/src/modules/wallet/views/router/payments.router.cjs.map +1 -1
  862. package/dist/martyrs/src/modules/wallet/views/router/payments.router.js +26 -23
  863. package/dist/martyrs/src/modules/wallet/views/router/payments.router.js.map +1 -1
  864. package/dist/martyrs/src/modules/wallet/views/store/payments.store.cjs +2 -2
  865. package/dist/martyrs/src/modules/wallet/views/store/payments.store.cjs.map +1 -1
  866. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js +2 -2
  867. package/dist/martyrs/src/modules/wallet/views/store/payments.store.js.map +1 -1
  868. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.cjs +11 -12
  869. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.cjs.map +1 -1
  870. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js +11 -12
  871. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js.map +1 -1
  872. package/dist/martyrs.cjs.js +1 -1
  873. package/dist/martyrs.css +1 -1
  874. package/dist/martyrs.es.js +1 -1
  875. package/dist/metadata.schema-CWmcDJN7.js +268 -0
  876. package/dist/metadata.schema-RlxNv46L.cjs +267 -0
  877. package/dist/node_modules/date-fns/_lib/addLeadingZeros.cjs +9 -0
  878. package/dist/node_modules/date-fns/_lib/addLeadingZeros.cjs.map +1 -0
  879. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +9 -0
  880. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -0
  881. package/dist/node_modules/date-fns/_lib/defaultOptions.cjs +8 -0
  882. package/dist/node_modules/date-fns/_lib/defaultOptions.cjs.map +1 -0
  883. package/dist/node_modules/date-fns/_lib/defaultOptions.js +8 -0
  884. package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -0
  885. package/dist/node_modules/date-fns/_lib/format/formatters.cjs +653 -0
  886. package/dist/node_modules/date-fns/_lib/format/formatters.cjs.map +1 -0
  887. package/dist/node_modules/date-fns/_lib/format/formatters.js +653 -0
  888. package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -0
  889. package/dist/node_modules/date-fns/_lib/format/lightFormatters.cjs +63 -0
  890. package/dist/node_modules/date-fns/_lib/format/lightFormatters.cjs.map +1 -0
  891. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +63 -0
  892. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -0
  893. package/dist/node_modules/date-fns/_lib/format/longFormatters.cjs +59 -0
  894. package/dist/node_modules/date-fns/_lib/format/longFormatters.cjs.map +1 -0
  895. package/dist/node_modules/date-fns/_lib/format/longFormatters.js +59 -0
  896. package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -0
  897. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.cjs +21 -0
  898. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.cjs.map +1 -0
  899. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +21 -0
  900. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -0
  901. package/dist/node_modules/date-fns/_lib/normalizeDates.cjs +12 -0
  902. package/dist/node_modules/date-fns/_lib/normalizeDates.cjs.map +1 -0
  903. package/dist/node_modules/date-fns/_lib/normalizeDates.js +12 -0
  904. package/dist/node_modules/date-fns/_lib/normalizeDates.js.map +1 -0
  905. package/dist/node_modules/date-fns/_lib/protectedTokens.cjs +24 -0
  906. package/dist/node_modules/date-fns/_lib/protectedTokens.cjs.map +1 -0
  907. package/dist/node_modules/date-fns/_lib/protectedTokens.js +24 -0
  908. package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +1 -0
  909. package/dist/node_modules/date-fns/constants.cjs +9 -0
  910. package/dist/node_modules/date-fns/constants.cjs.map +1 -0
  911. package/dist/node_modules/date-fns/constants.js +9 -0
  912. package/dist/node_modules/date-fns/constants.js.map +1 -0
  913. package/dist/node_modules/date-fns/constructFrom.cjs +13 -0
  914. package/dist/node_modules/date-fns/constructFrom.cjs.map +1 -0
  915. package/dist/node_modules/date-fns/constructFrom.js +13 -0
  916. package/dist/node_modules/date-fns/constructFrom.js.map +1 -0
  917. package/dist/node_modules/date-fns/differenceInCalendarDays.cjs +21 -0
  918. package/dist/node_modules/date-fns/differenceInCalendarDays.cjs.map +1 -0
  919. package/dist/node_modules/date-fns/differenceInCalendarDays.js +21 -0
  920. package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +1 -0
  921. package/dist/node_modules/date-fns/format.cjs +80 -0
  922. package/dist/node_modules/date-fns/format.cjs.map +1 -0
  923. package/dist/node_modules/date-fns/format.js +80 -0
  924. package/dist/node_modules/date-fns/format.js.map +1 -0
  925. package/dist/node_modules/date-fns/getDayOfYear.cjs +14 -0
  926. package/dist/node_modules/date-fns/getDayOfYear.cjs.map +1 -0
  927. package/dist/node_modules/date-fns/getDayOfYear.js +14 -0
  928. package/dist/node_modules/date-fns/getDayOfYear.js.map +1 -0
  929. package/dist/node_modules/date-fns/getISOWeek.cjs +14 -0
  930. package/dist/node_modules/date-fns/getISOWeek.cjs.map +1 -0
  931. package/dist/node_modules/date-fns/getISOWeek.js +14 -0
  932. package/dist/node_modules/date-fns/getISOWeek.js.map +1 -0
  933. package/dist/node_modules/date-fns/getISOWeekYear.cjs +27 -0
  934. package/dist/node_modules/date-fns/getISOWeekYear.cjs.map +1 -0
  935. package/dist/node_modules/date-fns/getISOWeekYear.js +27 -0
  936. package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -0
  937. package/dist/node_modules/date-fns/getWeek.cjs +14 -0
  938. package/dist/node_modules/date-fns/getWeek.cjs.map +1 -0
  939. package/dist/node_modules/date-fns/getWeek.js +14 -0
  940. package/dist/node_modules/date-fns/getWeek.js.map +1 -0
  941. package/dist/node_modules/date-fns/getWeekYear.cjs +31 -0
  942. package/dist/node_modules/date-fns/getWeekYear.cjs.map +1 -0
  943. package/dist/node_modules/date-fns/getWeekYear.js +31 -0
  944. package/dist/node_modules/date-fns/getWeekYear.js.map +1 -0
  945. package/dist/node_modules/date-fns/isDate.cjs +8 -0
  946. package/dist/node_modules/date-fns/isDate.cjs.map +1 -0
  947. package/dist/node_modules/date-fns/isDate.js +8 -0
  948. package/dist/node_modules/date-fns/isDate.js.map +1 -0
  949. package/dist/node_modules/date-fns/isValid.cjs +10 -0
  950. package/dist/node_modules/date-fns/isValid.cjs.map +1 -0
  951. package/dist/node_modules/date-fns/isValid.js +10 -0
  952. package/dist/node_modules/date-fns/isValid.js.map +1 -0
  953. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.cjs +11 -0
  954. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.cjs.map +1 -0
  955. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +11 -0
  956. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
  957. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.cjs +21 -0
  958. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.cjs.map +1 -0
  959. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +21 -0
  960. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
  961. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.cjs +44 -0
  962. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.cjs.map +1 -0
  963. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +44 -0
  964. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
  965. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.cjs +17 -0
  966. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.cjs.map +1 -0
  967. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +17 -0
  968. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
  969. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.cjs +86 -0
  970. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.cjs.map +1 -0
  971. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +86 -0
  972. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
  973. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.cjs +37 -0
  974. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.cjs.map +1 -0
  975. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +37 -0
  976. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
  977. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.cjs +13 -0
  978. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.cjs.map +1 -0
  979. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +13 -0
  980. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
  981. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.cjs +165 -0
  982. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.cjs.map +1 -0
  983. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +165 -0
  984. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -0
  985. package/dist/node_modules/date-fns/locale/en-US/_lib/match.cjs +123 -0
  986. package/dist/node_modules/date-fns/locale/en-US/_lib/match.cjs.map +1 -0
  987. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +123 -0
  988. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -0
  989. package/dist/node_modules/date-fns/locale/en-US.cjs +22 -0
  990. package/dist/node_modules/date-fns/locale/en-US.cjs.map +1 -0
  991. package/dist/node_modules/date-fns/locale/en-US.js +22 -0
  992. package/dist/node_modules/date-fns/locale/en-US.js.map +1 -0
  993. package/dist/node_modules/date-fns/startOfDay.cjs +11 -0
  994. package/dist/node_modules/date-fns/startOfDay.cjs.map +1 -0
  995. package/dist/node_modules/date-fns/startOfDay.js +11 -0
  996. package/dist/node_modules/date-fns/startOfDay.js.map +1 -0
  997. package/dist/node_modules/date-fns/startOfISOWeek.cjs +9 -0
  998. package/dist/node_modules/date-fns/startOfISOWeek.cjs.map +1 -0
  999. package/dist/node_modules/date-fns/startOfISOWeek.js +9 -0
  1000. package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -0
  1001. package/dist/node_modules/date-fns/startOfISOWeekYear.cjs +15 -0
  1002. package/dist/node_modules/date-fns/startOfISOWeekYear.cjs.map +1 -0
  1003. package/dist/node_modules/date-fns/startOfISOWeekYear.js +15 -0
  1004. package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +1 -0
  1005. package/dist/node_modules/date-fns/startOfWeek.cjs +18 -0
  1006. package/dist/node_modules/date-fns/startOfWeek.cjs.map +1 -0
  1007. package/dist/node_modules/date-fns/startOfWeek.js +18 -0
  1008. package/dist/node_modules/date-fns/startOfWeek.js.map +1 -0
  1009. package/dist/node_modules/date-fns/startOfWeekYear.cjs +20 -0
  1010. package/dist/node_modules/date-fns/startOfWeekYear.cjs.map +1 -0
  1011. package/dist/node_modules/date-fns/startOfWeekYear.js +20 -0
  1012. package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -0
  1013. package/dist/node_modules/date-fns/startOfYear.cjs +12 -0
  1014. package/dist/node_modules/date-fns/startOfYear.cjs.map +1 -0
  1015. package/dist/node_modules/date-fns/startOfYear.js +12 -0
  1016. package/dist/node_modules/date-fns/startOfYear.js.map +1 -0
  1017. package/dist/node_modules/date-fns/toDate.cjs +9 -0
  1018. package/dist/node_modules/date-fns/toDate.cjs.map +1 -0
  1019. package/dist/node_modules/date-fns/toDate.js +9 -0
  1020. package/dist/node_modules/date-fns/toDate.js.map +1 -0
  1021. package/dist/notifications.server.cjs +552 -0
  1022. package/dist/notifications.server.js +511 -621
  1023. package/dist/orders.server.cjs +820 -0
  1024. package/dist/orders.server.js +733 -838
  1025. package/dist/organizations.server.cjs +1493 -0
  1026. package/dist/organizations.server.js +1301 -1414
  1027. package/dist/ownership.schema-CCZX5vfw.js +43 -0
  1028. package/dist/ownership.schema-DCosqOc1.cjs +42 -0
  1029. package/dist/pages.server.cjs +142 -0
  1030. package/dist/pages.server.js +125 -160
  1031. package/dist/products.server.cjs +2635 -0
  1032. package/dist/products.server.js +2528 -1273
  1033. package/dist/profile.schema-DchVS-Jr.js +21 -0
  1034. package/dist/profile.schema-yQuIzngl.cjs +20 -0
  1035. package/dist/queryProcessor-B_X680wC.cjs +332 -0
  1036. package/dist/queryProcessor-CVcLPEnv.js +333 -0
  1037. package/dist/rents.server.cjs +487 -0
  1038. package/dist/rents.server.js +462 -480
  1039. package/dist/reports.server.cjs +133 -0
  1040. package/dist/reports.server.js +97 -150
  1041. package/dist/spots.server.cjs +331 -0
  1042. package/dist/spots.server.js +301 -349
  1043. package/dist/style.css +854 -724
  1044. package/dist/{tickets.controller-zEHIAe_B.js → tickets.controller-D0V0gJCA.cjs} +239 -263
  1045. package/dist/{tickets.controller-BIhfgjNb.mjs → tickets.controller-DQQcjyui.js} +222 -263
  1046. package/dist/wallet.server.cjs +528 -0
  1047. package/dist/wallet.server.js +473 -666
  1048. package/package.json +7 -6
  1049. package/src/builder/builder.js +19 -14
  1050. package/src/builder/modes/spa.dev.js +16 -39
  1051. package/src/builder/modes/spa.prod.js +15 -26
  1052. package/src/builder/modes/ssr.dev.js +123 -107
  1053. package/src/builder/modes/ssr.prod.js +19 -38
  1054. package/src/builder/modes/ssr.rspack.dev.js +70 -66
  1055. package/src/builder/modes/ssr.vite.dev.js +45 -71
  1056. package/src/builder/rspack/index.js +10 -8
  1057. package/src/builder/rspack/rspack.config.api.js +59 -0
  1058. package/src/builder/rspack/rspack.config.base.js +28 -11
  1059. package/src/builder/rspack/{rspack.config.spa.js → rspack.config.spa.client.js} +21 -26
  1060. package/src/builder/rspack/{rspack.config.client.js → rspack.config.ssr.client.js} +9 -13
  1061. package/src/builder/rspack/{rspack.config.ssr.js → rspack.config.ssr.server.js} +22 -10
  1062. package/src/builder/ssr/ssr-render-html.js +13 -12
  1063. package/src/builder/ssr/ssr-transform-webpack-stats.js +37 -25
  1064. package/src/builder/ssr/utils.js +7 -14
  1065. package/src/builder/templates/page.js +2 -2
  1066. package/src/builder/templates/screen.js +2 -2
  1067. package/src/builder/utils/hot-reload.js +1 -1
  1068. package/src/builder/vite/index.js +8 -8
  1069. package/src/builder/vite/vite.config.base.js +37 -47
  1070. package/src/builder/vite/vite.config.client.js +42 -64
  1071. package/src/builder/vite/vite.config.server.js +14 -24
  1072. package/src/builder/vite/vite.config.spa.js +37 -46
  1073. package/src/builder/vite/vite.config.ssr.js +44 -60
  1074. package/src/builder/webpack/index.js +7 -7
  1075. package/src/builder/webpack/webpack.config.base.js +54 -39
  1076. package/src/builder/webpack/webpack.config.client.js +36 -47
  1077. package/src/builder/webpack/webpack.config.server.js +23 -17
  1078. package/src/builder/webpack/webpack.config.spa.js +22 -28
  1079. package/src/builder/webpack/webpack.config.ssr.js +33 -30
  1080. package/src/components/Button/Button.vue +8 -3
  1081. package/src/components/Chips/Chips.vue +1 -1
  1082. package/src/components/Dropdown/Dropdown.vue +1 -1
  1083. package/src/components/Feed/Feed.vue +156 -63
  1084. package/src/components/Field/Field.vue +82 -75
  1085. package/src/components/FieldPhone/FieldPhone.vue +2 -2
  1086. package/src/components/FieldPhone/all-countries.js +247 -3
  1087. package/src/components/FieldPhone/click-outside.js +1 -1
  1088. package/src/components/FieldPhone/utils.js +263 -262
  1089. package/src/components/FieldTags/FieldTags.vue +375 -25
  1090. package/src/components/FieldTags/create-tags.js +15 -15
  1091. package/src/components/FieldTags/vue-tags-input.props.js +2 -9
  1092. package/src/components/Map/LoaderGMaps.js +4 -4
  1093. package/src/components/Popup/Popup.vue +142 -89
  1094. package/src/components/Select/Select.vue +2 -4
  1095. package/src/components/SelectMulti/SelectMulti.vue +911 -656
  1096. package/src/components/Table/Table.vue +21 -64
  1097. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +4 -4
  1098. package/src/components/index.js +10 -10
  1099. package/src/configurator/router/configurator.router.js +10 -8
  1100. package/src/main.js +79 -80
  1101. package/src/modules/auth/auth.client.js +17 -18
  1102. package/src/modules/auth/auth.server.js +32 -42
  1103. package/src/modules/auth/controllers/middlewares/authJwt.js +16 -34
  1104. package/src/modules/auth/controllers/middlewares/authSecret.js +2 -8
  1105. package/src/modules/auth/controllers/middlewares/index.js +15 -10
  1106. package/src/modules/auth/controllers/middlewares/verifyInvites.js +13 -21
  1107. package/src/modules/auth/controllers/middlewares/verifySignUp.js +7 -16
  1108. package/src/modules/auth/controllers/middlewares/verifyUser.js +20 -31
  1109. package/src/modules/auth/controllers/middlewares/visitor.logger.js +10 -23
  1110. package/src/modules/auth/controllers/routes/auth.routes.js +9 -29
  1111. package/src/modules/auth/controllers/routes/twofa.routes.js +6 -23
  1112. package/src/modules/auth/controllers/routes/users.routes.js +8 -39
  1113. package/src/modules/auth/controllers/services/auth.service.js +49 -82
  1114. package/src/modules/auth/controllers/services/twofa.service.js +6 -13
  1115. package/src/modules/auth/controllers/services/users.service.js +31 -70
  1116. package/src/modules/auth/controllers/utils/verifyAppleIdToken.js +47 -54
  1117. package/src/modules/auth/models/request.model.js +5 -9
  1118. package/src/modules/auth/models/role.model.js +3 -7
  1119. package/src/modules/auth/models/user.model.js +39 -41
  1120. package/src/modules/auth/models/visitor.model.js +3 -6
  1121. package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
  1122. package/src/modules/auth/views/components/pages/EnterCode.vue +3 -3
  1123. package/src/modules/auth/views/components/pages/EnterPassword.vue +1 -1
  1124. package/src/modules/auth/views/components/pages/Invite.vue +2 -2
  1125. package/src/modules/auth/views/components/pages/Profile.vue +3 -3
  1126. package/src/modules/auth/views/components/pages/ProfileBlogposts.vue +3 -3
  1127. package/src/modules/auth/views/components/pages/ProfileEdit.vue +3 -3
  1128. package/src/modules/auth/views/components/pages/ResetPassword.vue +3 -3
  1129. package/src/modules/auth/views/components/pages/SignIn.vue +2 -2
  1130. package/src/modules/auth/views/components/pages/SignUp.vue +3 -3
  1131. package/src/modules/auth/views/components/sections/FeaturedUsers.vue +1 -1
  1132. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +2 -2
  1133. package/src/modules/auth/views/localization/EnterCode.json +1 -1
  1134. package/src/modules/auth/views/localization/EnterPassword.json +1 -1
  1135. package/src/modules/auth/views/localization/ResetPassword.json +1 -1
  1136. package/src/modules/auth/views/localization/SignUp.json +1 -1
  1137. package/src/modules/auth/views/middlewares/auth.validation.js +16 -29
  1138. package/src/modules/auth/views/middlewares/ownership.validation.js +9 -14
  1139. package/src/modules/auth/views/router/auth.js +66 -77
  1140. package/src/modules/auth/views/router/users.js +87 -89
  1141. package/src/modules/auth/views/store/auth.js +41 -39
  1142. package/src/modules/auth/views/store/twofa.js +44 -42
  1143. package/src/modules/auth/views/store/users.js +22 -26
  1144. package/src/modules/auth/views/validations/inputs.validation.js +53 -59
  1145. package/src/modules/backoffice/backoffice.client.js +8 -8
  1146. package/src/modules/backoffice/components/pages/Dashboard.vue +3 -3
  1147. package/src/modules/backoffice/components/partials/Sidebar.vue +2 -2
  1148. package/src/modules/backoffice/router/backoffice.js +49 -49
  1149. package/src/modules/chats/chats.client.js +9 -9
  1150. package/src/modules/chats/chats.server.js +18 -23
  1151. package/src/modules/chats/controllers/chats.controller.js +8 -15
  1152. package/src/modules/chats/models/chat.model.js +6 -9
  1153. package/src/modules/chats/routes/chats.routes.js +12 -20
  1154. package/src/modules/chats/store/chat.store.js +14 -11
  1155. package/src/modules/community/community.client.js +13 -26
  1156. package/src/modules/community/community.server.js +30 -35
  1157. package/src/modules/community/components/blocks/FooterBlogpost.vue +1 -1
  1158. package/src/modules/community/components/layouts/Community.vue +6 -4
  1159. package/src/modules/community/components/pages/Blog.vue +1 -1
  1160. package/src/modules/community/components/pages/BlogPost.vue +1 -1
  1161. package/src/modules/community/components/pages/CreateBlogPost.vue +5 -5
  1162. package/src/modules/community/components/sections/Comment.vue +2 -2
  1163. package/src/modules/community/components/sections/HotPosts.vue +1 -1
  1164. package/src/modules/community/controllers/blog.controller.js +103 -139
  1165. package/src/modules/community/controllers/comments.controller.js +79 -124
  1166. package/src/modules/community/controllers/reactions.controller.js +32 -59
  1167. package/src/modules/community/controllers/utils/queryProcessor.js +13 -17
  1168. package/src/modules/community/controllers/utils/queryProcessorReactions.js +28 -34
  1169. package/src/modules/community/middlewares/server/index.js +7 -5
  1170. package/src/modules/community/middlewares/server/verifyBlogpost.js +9 -14
  1171. package/src/modules/community/models/blogpost.model.js +33 -34
  1172. package/src/modules/community/models/comment.model.js +48 -50
  1173. package/src/modules/community/models/reaction.model.js +48 -46
  1174. package/src/modules/community/router/blogposts.js +52 -50
  1175. package/src/modules/community/routes/blog.routes.js +15 -49
  1176. package/src/modules/community/routes/comments.routes.js +14 -44
  1177. package/src/modules/community/routes/reactions.routes.js +10 -43
  1178. package/src/modules/community/store/blogposts.js +54 -59
  1179. package/src/modules/community/store/reactions.js +9 -13
  1180. package/src/modules/constructor/components/elements/Embed.vue +3 -3
  1181. package/src/modules/constructor/components/elements/ImageUpload.vue +3 -3
  1182. package/src/modules/core/classes/event.js +48 -0
  1183. package/src/modules/core/classes/memory-tracker.js +1063 -0
  1184. package/src/modules/{globals/views/core → core/classes}/module-manager.js +43 -46
  1185. package/src/modules/{globals/views/core → core/classes}/module.js +52 -53
  1186. package/src/modules/core/model/Adapter.js +17 -0
  1187. package/src/modules/core/model/Adapter.mogodb.js +65 -0
  1188. package/src/modules/core/model/Adapter.postgre.js +127 -0
  1189. package/src/modules/core/model/Model.js +99 -0
  1190. package/src/modules/core/model/Schema.js +70 -0
  1191. package/src/modules/core/model/Validation.js +97 -0
  1192. package/src/modules/events/components/elements/ButtonCheck.vue +1 -1
  1193. package/src/modules/events/components/elements/ButtonJoin.vue +2 -2
  1194. package/src/modules/events/components/pages/EditEvent.vue +5 -5
  1195. package/src/modules/events/components/pages/EditEventTickets.vue +3 -3
  1196. package/src/modules/events/components/pages/Event.vue +1 -2
  1197. package/src/modules/events/components/pages/Events.vue +3 -3
  1198. package/src/modules/events/components/pages/EventsBackoffice.vue +1 -1
  1199. package/src/modules/events/components/pages/EventsSearch.vue +1 -1
  1200. package/src/modules/events/components/sections/EventsHot.vue +1 -1
  1201. package/src/modules/events/components/sections/FeaturedEvents.vue +1 -1
  1202. package/src/modules/events/controllers/events.controller.js +90 -155
  1203. package/src/modules/events/controllers/tickets.controller.js +157 -220
  1204. package/src/modules/events/controllers/utils/queryProcessor.js +117 -123
  1205. package/src/modules/events/controllers/utils/templateEmail.js +6 -7
  1206. package/src/modules/events/controllers/utils/templateTicket.js +6 -7
  1207. package/src/modules/events/events.client.js +22 -28
  1208. package/src/modules/events/events.server.js +25 -32
  1209. package/src/modules/events/middlewares/server/index.js +6 -5
  1210. package/src/modules/events/middlewares/server/verifyEvent.js +29 -31
  1211. package/src/modules/events/models/event.model.js +68 -70
  1212. package/src/modules/events/models/ticket.model.js +55 -55
  1213. package/src/modules/events/router/events.js +28 -38
  1214. package/src/modules/events/routes/events.routes.js +15 -49
  1215. package/src/modules/events/routes/tickets.routes.js +7 -21
  1216. package/src/modules/events/store/events.js +41 -50
  1217. package/src/modules/events/store/tickets.js +11 -14
  1218. package/src/modules/files/controllers/files.controller.js +5 -17
  1219. package/src/modules/files/files.server.js +13 -16
  1220. package/src/modules/files/middlewares/server/index.js +7 -5
  1221. package/src/modules/files/middlewares/server/middlewareBusboy.js +62 -123
  1222. package/src/modules/files/routes/files.routes.js +11 -40
  1223. package/src/modules/gallery/components/pages/Gallery.vue +1 -1
  1224. package/src/modules/gallery/components/sections/BackofficeGallery.vue +3 -3
  1225. package/src/modules/gallery/controllers/gallery.controller.js +27 -58
  1226. package/src/modules/gallery/gallery.client.js +11 -11
  1227. package/src/modules/gallery/gallery.server.js +18 -23
  1228. package/src/modules/gallery/models/photo.model.js +27 -29
  1229. package/src/modules/gallery/router/gallery.backoffice.router.js +14 -14
  1230. package/src/modules/gallery/router/gallery.router.js +2 -2
  1231. package/src/modules/gallery/routes/gallery.routes.js +12 -44
  1232. package/src/modules/gallery/store/gallery.js +3 -3
  1233. package/src/modules/globals/controllers/classes/abac/abac.adapter.express.js +194 -0
  1234. package/src/modules/globals/controllers/classes/abac/abac.adapter.ws.js +84 -0
  1235. package/src/modules/globals/controllers/classes/abac/abac.core.js +220 -0
  1236. package/src/modules/globals/controllers/classes/abac/abac.fields.js +376 -0
  1237. package/src/modules/globals/controllers/classes/abac/abac.js +104 -0
  1238. package/src/modules/globals/controllers/classes/abac/abac.policies.js +226 -0
  1239. package/src/modules/globals/controllers/classes/crud/crud.controller.js +314 -0
  1240. package/src/modules/globals/controllers/classes/crud/crud.core.js +230 -0
  1241. package/src/modules/globals/controllers/classes/crud/crud.events.js +209 -0
  1242. package/src/modules/globals/controllers/classes/crud/crud.js +169 -0
  1243. package/src/modules/globals/controllers/classes/crud/crud.policies.js +256 -0
  1244. package/src/modules/globals/controllers/classes/crud/crud.service.js +285 -0
  1245. package/src/modules/globals/controllers/classes/globals.abac.js +69 -120
  1246. package/src/modules/globals/controllers/classes/globals.cache.js +2 -15
  1247. package/src/modules/globals/controllers/classes/globals.crud.js +15 -43
  1248. package/src/modules/globals/controllers/classes/globals.logger.js +2 -6
  1249. package/src/modules/globals/controllers/classes/globals.observer.js +36 -43
  1250. package/src/modules/globals/controllers/classes/globals.validator.js +62 -88
  1251. package/src/modules/globals/controllers/classes/globals.verifier.js +144 -128
  1252. package/src/modules/globals/controllers/classes/globals.webhook.js +1 -3
  1253. package/src/modules/globals/controllers/classes/globals.websocket.js +29 -89
  1254. package/src/modules/globals/controllers/classes/globals.websocket.ws.js +6 -28
  1255. package/src/modules/globals/controllers/policies/globals.policies.js +33 -50
  1256. package/src/modules/globals/controllers/utils/mailing.js +26 -34
  1257. package/src/modules/globals/controllers/utils/parseCookie.js +2 -5
  1258. package/src/modules/globals/controllers/utils/queryProcessor.js +188 -127
  1259. package/src/modules/globals/controllers/utils/seo-friendly-url.js +195 -48
  1260. package/src/modules/globals/controllers/utils/sitemap.js +14 -20
  1261. package/src/modules/globals/globals.client.js +55 -53
  1262. package/src/modules/globals/globals.server.js +22 -14
  1263. package/src/modules/globals/models/schemas/common.schema.js +4 -4
  1264. package/src/modules/globals/models/schemas/credentials.schema.js +3 -3
  1265. package/src/modules/globals/models/schemas/engagement.schema.js +6 -16
  1266. package/src/modules/globals/models/schemas/metadata.schema.js +16 -20
  1267. package/src/modules/globals/models/schemas/ownership.schema.js +16 -13
  1268. package/src/modules/globals/models/schemas/profile.schema.js +6 -7
  1269. package/src/modules/globals/models/schemas/socials.schema.js +9 -9
  1270. package/src/modules/globals/views/classes/globals.store.js +25 -22
  1271. package/src/modules/globals/views/classes/globals.websocket.js +16 -16
  1272. package/src/modules/globals/views/classes/globals.websocket.ws.js +1 -1
  1273. package/src/modules/globals/views/classes/store.js +18 -19
  1274. package/src/modules/globals/views/components/blocks/BlockMultiselect.vue +364 -0
  1275. package/src/modules/globals/views/components/blocks/Card.vue +75 -46
  1276. package/src/modules/globals/views/components/blocks/CardFooter.vue +1 -1
  1277. package/src/modules/globals/views/components/blocks/CardHeader.vue +0 -1
  1278. package/src/modules/globals/views/components/elements/ButtonDate.vue +2 -2
  1279. package/src/modules/globals/views/components/layouts/App.vue +2 -2
  1280. package/src/modules/globals/views/components/layouts/Client.vue +2 -2
  1281. package/src/modules/globals/views/components/partials/BottomNavigationBar.vue +1 -1
  1282. package/src/modules/globals/views/components/partials/Footer.vue +1 -1
  1283. package/src/modules/globals/views/components/partials/Header.vue +3 -3
  1284. package/src/modules/globals/views/components/partials/LocationSelection.vue +1 -1
  1285. package/src/modules/globals/views/components/partials/Navigation.vue +11 -19
  1286. package/src/modules/globals/views/components/partials/NavigationBar.vue +3 -3
  1287. package/src/modules/globals/views/components/partials/Sidebar.vue +1 -1
  1288. package/src/modules/globals/views/localization/get-browser-locale.js +7 -12
  1289. package/src/modules/globals/views/middlewares/localization.js +3 -6
  1290. package/src/modules/globals/views/mixins/mixins.js +152 -134
  1291. package/src/modules/globals/views/plugins/alert.plugin.js +28 -28
  1292. package/src/modules/globals/views/plugins/date-picker.plugin.js +85 -0
  1293. package/src/modules/globals/views/plugins/store-debugger/StoreDebugger.vue +284 -0
  1294. package/src/modules/globals/views/plugins/store-debugger/store-debugger.plugin.js +24 -0
  1295. package/src/modules/globals/views/router/addRoutes.js +15 -17
  1296. package/src/modules/globals/views/router/scrollBehavior.js +17 -13
  1297. package/src/modules/globals/views/store/globals.js +64 -78
  1298. package/src/modules/globals/views/utils/axios-instance.js +1 -1
  1299. package/src/modules/globals/views/utils/vue-app-renderer.js +23 -26
  1300. package/src/modules/governance/controllers/factories/initiatives.controller.js +23 -29
  1301. package/src/modules/governance/controllers/factories/tasks.controller.js +21 -27
  1302. package/src/modules/governance/controllers/factories/votes.controller.js +17 -21
  1303. package/src/modules/governance/controllers/factories/votings.controller.js +25 -32
  1304. package/src/modules/governance/controllers/routes/initiatives.routes.js +10 -12
  1305. package/src/modules/governance/controllers/routes/tasks.routes.js +10 -12
  1306. package/src/modules/governance/controllers/routes/votes.routes.js +8 -10
  1307. package/src/modules/governance/controllers/routes/votings.routes.js +11 -13
  1308. package/src/modules/governance/governance.client.js +7 -7
  1309. package/src/modules/governance/governance.server.js +36 -39
  1310. package/src/modules/governance/models/initiative.model.js +26 -22
  1311. package/src/modules/governance/models/milestone.model.js +86 -82
  1312. package/src/modules/governance/models/task.model.js +48 -45
  1313. package/src/modules/governance/models/vote.model.js +18 -16
  1314. package/src/modules/governance/models/voting.model.js +23 -19
  1315. package/src/modules/governance/views/router/goverance.router.js +56 -80
  1316. package/src/modules/governance/views/store/initiatives.js +8 -11
  1317. package/src/modules/governance/views/store/projects.js +57 -66
  1318. package/src/modules/governance/views/store/tasks.js +9 -14
  1319. package/src/modules/governance/views/store/votes.js +8 -13
  1320. package/src/modules/governance/views/store/votings.js +7 -11
  1321. package/src/modules/icons/actions/IconDuplicate.vue +17 -0
  1322. package/src/modules/icons/entities/IconDiscount.vue +23 -0
  1323. package/src/modules/icons/entities/IconSettings.vue +32 -0
  1324. package/src/modules/icons/icons.client.js +118 -96
  1325. package/src/modules/icons/pages/IconsPage.vue +300 -0
  1326. package/src/modules/icons/router/icons.router.js +34 -0
  1327. package/src/modules/integrations/integrations.service.js +34 -91
  1328. package/src/modules/integrations/openai/openai.globals.js +116 -0
  1329. package/src/modules/integrations/paypal/controllers/webhooks/paypal.webhook.js +15 -19
  1330. package/src/modules/integrations/stripe/controllers/services/stripe.service.js +241 -285
  1331. package/src/modules/integrations/stripe/controllers/webhooks/stripe.webhook.js +8 -17
  1332. package/src/modules/integrations/tinkoff/controllers/services/tinkoff.service.js +111 -119
  1333. package/src/modules/integrations/tinkoff/models/tinkoff.payment.model.js +12 -13
  1334. package/src/modules/inventory/inventory.server.js +23 -0
  1335. package/src/modules/inventory/models/stock.adjustment.model.js +63 -0
  1336. package/src/modules/inventory/models/stock.availability.model.js +56 -0
  1337. package/src/modules/inventory/models/stock.balance.model.js +43 -0
  1338. package/src/modules/inventory/models/stock.inventory.model.js +38 -0
  1339. package/src/modules/inventory/policies/inventory.policies.js +47 -0
  1340. package/src/modules/inventory/routes/inventory.routes.js +61 -0
  1341. package/src/modules/inventory/services/inventory.crud.js +527 -0
  1342. package/src/modules/inventory/services/inventory.verifier.js +81 -0
  1343. package/src/modules/inventory/store/ inventory.store.js +131 -0
  1344. package/src/modules/inventory/workers/inventory.availability.worker.js +300 -0
  1345. package/src/modules/landing/landing.client.js +16 -16
  1346. package/src/modules/marketplace/marketplace.client.js +12 -13
  1347. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +2 -2
  1348. package/src/modules/marketplace/views/components/pages/Catalog.vue +2 -2
  1349. package/src/modules/marketplace/views/components/sections/SectionMenu.vue +2 -2
  1350. package/src/modules/marketplace/views/router/marketplace.router.js +9 -11
  1351. package/src/modules/marketplace/views/store/marketplace.js +33 -29
  1352. package/src/modules/music/components/cards/ArtistCard.vue +62 -15
  1353. package/src/modules/music/components/lists/ArtistList.vue +267 -12
  1354. package/src/modules/music/components/pages/ArtistDetail.vue +375 -189
  1355. package/src/modules/music/components/pages/ArtistForm.vue +426 -0
  1356. package/src/modules/music/components/pages/ArtistManager.vue +277 -0
  1357. package/src/modules/music/components/pages/MusicLibrary.vue +5 -8
  1358. package/src/modules/music/controllers/album.controller.js +15 -31
  1359. package/src/modules/music/controllers/artist.controller.js +29 -41
  1360. package/src/modules/music/controllers/genre.controller.js +23 -31
  1361. package/src/modules/music/controllers/music.controller.js +28 -57
  1362. package/src/modules/music/controllers/playlist.controller.js +20 -56
  1363. package/src/modules/music/controllers/search.controller.js +37 -62
  1364. package/src/modules/music/controllers/stream.controller.js +16 -32
  1365. package/src/modules/music/models/album.model.js +54 -51
  1366. package/src/modules/music/models/artist.model.js +50 -52
  1367. package/src/modules/music/models/genre.model.js +27 -31
  1368. package/src/modules/music/models/play-history.model.js +41 -42
  1369. package/src/modules/music/models/playlist.model.js +54 -54
  1370. package/src/modules/music/models/track.model.js +65 -69
  1371. package/src/modules/music/music.client.js +55 -52
  1372. package/src/modules/music/music.server.js +62 -77
  1373. package/src/modules/music/policies/music.policies.js +9 -29
  1374. package/src/modules/music/router/music.js +38 -19
  1375. package/src/modules/music/routes/album.routes.js +21 -55
  1376. package/src/modules/music/routes/artist.routes.js +22 -59
  1377. package/src/modules/music/routes/genre.routes.js +21 -53
  1378. package/src/modules/music/routes/music.routes.js +74 -113
  1379. package/src/modules/music/routes/playlist.routes.js +36 -88
  1380. package/src/modules/music/routes/search.routes.js +5 -9
  1381. package/src/modules/music/routes/stream.routes.js +23 -34
  1382. package/src/modules/music/store/albums.js +34 -34
  1383. package/src/modules/music/store/artists.js +31 -28
  1384. package/src/modules/music/store/player.js +71 -73
  1385. package/src/modules/music/store/playlists.js +37 -37
  1386. package/src/modules/music/store/search.js +25 -25
  1387. package/src/modules/music/store/tracks.js +40 -45
  1388. package/src/modules/music/websocket/streaming.handler.js +58 -76
  1389. package/src/modules/notifications/components/elements/NotificationBadge.vue +1 -1
  1390. package/src/modules/notifications/components/sections/NotificationsList.vue +1 -1
  1391. package/src/modules/notifications/controllers/notifications.controller.js +32 -62
  1392. package/src/modules/notifications/middlewares/notifications.abac.js +1 -5
  1393. package/src/modules/notifications/models/notification-log.model.js +8 -5
  1394. package/src/modules/notifications/models/notification-preference.model.js +8 -6
  1395. package/src/modules/notifications/models/notification.model.js +2 -3
  1396. package/src/modules/notifications/models/user-device.model.js +3 -5
  1397. package/src/modules/notifications/notifications.client.js +65 -75
  1398. package/src/modules/notifications/notifications.server.js +31 -44
  1399. package/src/modules/notifications/router/notifications.router.js +8 -8
  1400. package/src/modules/notifications/routes/notifications.routes.js +4 -11
  1401. package/src/modules/notifications/services/apns.service.js +4 -13
  1402. package/src/modules/notifications/services/email.service.js +4 -8
  1403. package/src/modules/notifications/services/fcm.service.js +4 -11
  1404. package/src/modules/notifications/services/notification.service.js +49 -84
  1405. package/src/modules/notifications/services/sms.service.js +4 -7
  1406. package/src/modules/notifications/services/telegram.service.js +4 -7
  1407. package/src/modules/notifications/services/web-push.service.js +14 -23
  1408. package/src/modules/notifications/services/whatsapp.service.js +4 -11
  1409. package/src/modules/notifications/store/notifications.store.js +50 -55
  1410. package/src/modules/orders/components/pages/OrderBackoffice.vue +5 -5
  1411. package/src/modules/orders/components/pages/OrderCreate.vue +6 -6
  1412. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +5 -5
  1413. package/src/modules/orders/components/pages/Orders.vue +2 -2
  1414. package/src/modules/orders/components/partials/ShopCart.vue +3 -3
  1415. package/src/modules/orders/components/sections/FormAddCustomer.vue +5 -5
  1416. package/src/modules/orders/components/sections/FormDelivery.vue +2 -2
  1417. package/src/modules/orders/controllers/applications.controller.js +37 -67
  1418. package/src/modules/orders/controllers/orders.controller.js +96 -155
  1419. package/src/modules/orders/controllers/testimonials.controller.js +22 -31
  1420. package/src/modules/orders/models/application.model.js +25 -24
  1421. package/src/modules/orders/models/customer.model.js +61 -55
  1422. package/src/modules/orders/models/order.model.js +80 -81
  1423. package/src/modules/orders/models/testimonial.model.js +7 -9
  1424. package/src/modules/orders/orders.client.js +24 -26
  1425. package/src/modules/orders/orders.server.js +27 -32
  1426. package/src/modules/orders/router/orders.router.js +21 -22
  1427. package/src/modules/orders/routes/applications.routes.js +10 -40
  1428. package/src/modules/orders/routes/orders.routes.js +8 -19
  1429. package/src/modules/orders/routes/testimonials.routes.js +9 -29
  1430. package/src/modules/orders/store/applications.js +34 -39
  1431. package/src/modules/orders/store/customers.store.js +3 -3
  1432. package/src/modules/orders/store/models/customer.js +5 -5
  1433. package/src/modules/orders/store/models/order.js +4 -4
  1434. package/src/modules/orders/store/orders.js +61 -76
  1435. package/src/modules/orders/store/shopcart.js +150 -98
  1436. package/src/modules/orders/store/testimonials.js +7 -10
  1437. package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +2 -2
  1438. package/src/modules/organizations/components/pages/Department.vue +1 -1
  1439. package/src/modules/organizations/components/pages/DepartmentEdit.vue +3 -3
  1440. package/src/modules/organizations/components/pages/Members.vue +6 -6
  1441. package/src/modules/organizations/components/pages/Organization.vue +9 -9
  1442. package/src/modules/organizations/components/pages/OrganizationBackoffice.vue +2 -2
  1443. package/src/modules/organizations/components/pages/OrganizationCreate.vue +2 -2
  1444. package/src/modules/organizations/components/pages/OrganizationDetails.vue +2 -2
  1445. package/src/modules/organizations/components/pages/OrganizationEdit.vue +3 -3
  1446. package/src/modules/organizations/components/pages/OrganizationPeople.vue +1 -1
  1447. package/src/modules/organizations/components/pages/Organizations.vue +2 -2
  1448. package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
  1449. package/src/modules/organizations/components/sections/MembersAdd.vue +1 -1
  1450. package/src/modules/organizations/components/sections/Organizations.vue +3 -3
  1451. package/src/modules/organizations/components/sections/Publics.vue +3 -3
  1452. package/src/modules/organizations/configs/navigation.organization.config.js +227 -0
  1453. package/src/modules/organizations/controllers/departments.controller.js +11 -22
  1454. package/src/modules/organizations/controllers/invites.controller.js +14 -30
  1455. package/src/modules/organizations/controllers/memberships.controller.js +21 -54
  1456. package/src/modules/organizations/controllers/organizations.controller.js +32 -83
  1457. package/src/modules/organizations/controllers/utils/addMembersQuantity.js +11 -12
  1458. package/src/modules/organizations/controllers/utils/addUserStatusFields.js +31 -41
  1459. package/src/modules/organizations/controllers/utils/lookupConfigs.js +31 -31
  1460. package/src/modules/organizations/controllers/utils/queryProcessor.js +40 -51
  1461. package/src/modules/organizations/controllers/utils/queryProcessorOrganizations.js +124 -147
  1462. package/src/modules/organizations/middlewares/verifyAccesses.js +7 -25
  1463. package/src/modules/organizations/middlewares/verifyAccessesRefactored.js +26 -51
  1464. package/src/modules/organizations/models/department.model.js +58 -59
  1465. package/src/modules/organizations/models/invite.model.js +45 -42
  1466. package/src/modules/organizations/models/membership.model.js +35 -35
  1467. package/src/modules/organizations/models/organization.model.js +65 -80
  1468. package/src/modules/organizations/models/schemas/accesses.schema.js +1 -2
  1469. package/src/modules/organizations/organizations.client.js +45 -46
  1470. package/src/modules/organizations/organizations.server.js +40 -41
  1471. package/src/modules/organizations/policies/organizations.policies.js +193 -85
  1472. package/src/modules/organizations/router/backoffice.router.js +22 -20
  1473. package/src/modules/organizations/router/departments.router.js +27 -23
  1474. package/src/modules/organizations/router/members.router.js +18 -18
  1475. package/src/modules/organizations/router/organizations.js +74 -66
  1476. package/src/modules/organizations/routes/departments.routes.js +9 -20
  1477. package/src/modules/organizations/routes/invites.routes.js +9 -31
  1478. package/src/modules/organizations/routes/memberships.routes.js +7 -23
  1479. package/src/modules/organizations/routes/organizations.routes.js +15 -40
  1480. package/src/modules/organizations/store/departments.js +13 -14
  1481. package/src/modules/organizations/store/invites.js +38 -41
  1482. package/src/modules/organizations/store/memberships.js +21 -26
  1483. package/src/modules/organizations/store/organizations.js +40 -46
  1484. package/src/modules/pages/controllers/factories/pages.factory.js +6 -27
  1485. package/src/modules/pages/controllers/routes/pages.routes.js +7 -23
  1486. package/src/modules/pages/models/page.model.js +22 -20
  1487. package/src/modules/pages/pages.client.js +12 -12
  1488. package/src/modules/pages/pages.server.js +18 -21
  1489. package/src/modules/pages/views/components/pages/Page.vue +1 -1
  1490. package/src/modules/pages/views/components/pages/Pages.vue +1 -1
  1491. package/src/modules/pages/views/components/partials/SidebarPages.vue +1 -1
  1492. package/src/modules/pages/views/router/pages.backoffice.router.js +29 -29
  1493. package/src/modules/pages/views/router/pages.router.js +16 -14
  1494. package/src/modules/pages/views/store/pages.js +12 -11
  1495. package/src/modules/pages/views/store/pages.store.js +3 -3
  1496. package/src/modules/products/components/blocks/CardLeftover.vue +1 -1
  1497. package/src/modules/products/components/blocks/CardPosition.vue +94 -157
  1498. package/src/modules/products/components/blocks/CardProduct.vue +5 -5
  1499. package/src/modules/products/components/blocks/ProductDiscounts.vue +141 -0
  1500. package/src/modules/products/components/blocks/{ImagesThumbnails.vue → ProductImages.vue} +3 -4
  1501. package/src/modules/products/components/blocks/ProductVariants.vue +125 -0
  1502. package/src/modules/products/components/elements/Price.vue +34 -37
  1503. package/src/modules/products/components/elements/QuantitySelector.vue +52 -0
  1504. package/src/modules/products/components/elements/THC.vue +6 -6
  1505. package/src/modules/products/components/forms/ColumnSettingsMenu.vue +80 -0
  1506. package/src/modules/products/components/forms/ReorderSettingsForm.vue +107 -0
  1507. package/src/modules/products/components/forms/StockAuditForm.vue +154 -0
  1508. package/src/modules/products/components/forms/StockHistoryView.vue +134 -0
  1509. package/src/modules/products/components/pages/Categories.vue +5 -5
  1510. package/src/modules/products/components/pages/CategoryEdit.vue +8 -44
  1511. package/src/modules/products/components/pages/LeftoverEdit.vue +360 -0
  1512. package/src/modules/products/components/pages/Leftovers.vue +288 -131
  1513. package/src/modules/products/components/pages/Product.vue +171 -100
  1514. package/src/modules/products/components/pages/ProductEdit.vue +329 -461
  1515. package/src/modules/products/components/pages/ProductRecommmendation.vue +2 -2
  1516. package/src/modules/products/components/pages/Products.vue +7 -7
  1517. package/src/modules/products/components/sections/EditAttributes.vue +154 -0
  1518. package/src/modules/products/components/sections/EditCategories.vue +149 -0
  1519. package/src/modules/products/components/sections/EditDiscounts.vue +308 -0
  1520. package/src/modules/products/components/sections/EditIngredients.vue +130 -0
  1521. package/src/modules/products/components/sections/EditVariants.vue +453 -0
  1522. package/src/modules/products/components/sections/FilterProducts.vue +4 -4
  1523. package/src/modules/products/components/sections/HeroRecommendation.vue +1 -1
  1524. package/src/modules/products/components/sections/PopularProducts.vue +2 -2
  1525. package/src/modules/products/components/sections/ProductConfigurator.vue +131 -0
  1526. package/src/modules/products/components/sections/SectionProduct.vue +17 -17
  1527. package/src/modules/products/controllers/categories.controller.js +45 -143
  1528. package/src/modules/products/controllers/configs/products.lookup.config.js +135 -0
  1529. package/src/modules/products/controllers/leftovers.controller.js +38 -62
  1530. package/src/modules/products/controllers/products.controller.js +103 -364
  1531. package/src/modules/products/controllers/queries/products.queries.js +112 -0
  1532. package/src/modules/products/middlewares/categories.verifier.js +94 -72
  1533. package/src/modules/products/middlewares/variants.verifier.js +226 -0
  1534. package/src/modules/products/models/category.model.js +26 -22
  1535. package/src/modules/products/models/leftover.model.js +61 -44
  1536. package/src/modules/products/models/product.model.js +54 -119
  1537. package/src/modules/products/models/schemas/discount.schema.js +33 -0
  1538. package/src/modules/products/models/schemas/ingredient.schema.js +46 -0
  1539. package/src/modules/products/models/variant.model.js +66 -0
  1540. package/src/modules/products/products.client.js +31 -41
  1541. package/src/modules/products/products.server.js +34 -35
  1542. package/src/modules/products/router/categories.router.js +34 -30
  1543. package/src/modules/products/router/leftovers.router.js +32 -30
  1544. package/src/modules/products/router/products.router.js +18 -21
  1545. package/src/modules/products/routes/categories.routes.js +13 -52
  1546. package/src/modules/products/routes/leftovers.routes.js +9 -27
  1547. package/src/modules/products/routes/products.routes.js +8 -27
  1548. package/src/modules/products/routes/variants.routes.js +102 -0
  1549. package/src/modules/products/store/categories.js +24 -23
  1550. package/src/modules/products/store/leftovers.js +53 -17
  1551. package/src/modules/products/store/products.js +73 -125
  1552. package/src/modules/products/store/variants.store.js +5 -0
  1553. package/src/modules/rents/controllers/routes/rents.routes.js +12 -21
  1554. package/src/modules/rents/controllers/services/rents.services.js +183 -239
  1555. package/src/modules/rents/models/rent.model.js +27 -17
  1556. package/src/modules/rents/rents.client.js +5 -10
  1557. package/src/modules/rents/rents.server.js +15 -21
  1558. package/src/modules/rents/views/components/pages/RentsEdit.vue +2 -2
  1559. package/src/modules/rents/views/router/rents.router.js +11 -20
  1560. package/src/modules/rents/views/store/rents.store.js +33 -33
  1561. package/src/modules/reports/components/sections/FormReport.vue +1 -1
  1562. package/src/modules/reports/controllers/reports.controller.js +17 -26
  1563. package/src/modules/reports/models/report.model.js +39 -56
  1564. package/src/modules/reports/reports.client.js +8 -8
  1565. package/src/modules/reports/reports.server.js +17 -22
  1566. package/src/modules/reports/routes/reports.routes.js +7 -28
  1567. package/src/modules/reports/store/reports.js +15 -17
  1568. package/src/modules/spots/components/blocks/CardSpot.vue +73 -58
  1569. package/src/modules/spots/components/layouts/Spots.vue +3 -3
  1570. package/src/modules/spots/components/pages/Map.vue +3 -3
  1571. package/src/modules/spots/components/pages/SpotEdit.vue +1 -1
  1572. package/src/modules/spots/controllers/queries/getIsOpenNowStage.js +49 -65
  1573. package/src/modules/spots/controllers/spots.controller.js +25 -43
  1574. package/src/modules/spots/models/spot.model.js +45 -52
  1575. package/src/modules/spots/router/spots.js +22 -26
  1576. package/src/modules/spots/routes/spots.routes.js +8 -16
  1577. package/src/modules/spots/spots.client.js +6 -6
  1578. package/src/modules/spots/spots.server.js +17 -20
  1579. package/src/modules/spots/store/spots.js +11 -14
  1580. package/src/modules/wallet/controllers/factories/payments.factory.js +15 -42
  1581. package/src/modules/wallet/controllers/factories/rewards.factory.js +56 -134
  1582. package/src/modules/wallet/controllers/routes/payments.routes.js +45 -80
  1583. package/src/modules/wallet/controllers/routes/rewards.routes.js +10 -50
  1584. package/src/modules/wallet/models/payment.model.js +26 -27
  1585. package/src/modules/wallet/models/reward.model.js +3 -4
  1586. package/src/modules/wallet/models/wallet.model.js +10 -9
  1587. package/src/modules/wallet/views/router/payments.router.js +24 -23
  1588. package/src/modules/wallet/views/store/payments.store.js +6 -6
  1589. package/src/modules/wallet/views/store/wallet.store.js +28 -35
  1590. package/src/modules/wallet/wallet.server.js +25 -27
  1591. package/src/styles/typography.scss +24 -0
  1592. package/dist/Media-DmnrxIEI.js +0 -1
  1593. package/dist/_commonjsHelpers-CUmg6egw.mjs +0 -6
  1594. package/dist/_commonjsHelpers-DHfMLFPC.js +0 -5
  1595. package/dist/addMembersQuantity-DBfuUEx_.mjs +0 -113
  1596. package/dist/addMembersQuantity-DxWjHK1K.js +0 -112
  1597. package/dist/auth.server.mjs +0 -764
  1598. package/dist/authJwt-CELQKF2s.js +0 -82
  1599. package/dist/authJwt-DnXu3BFq.mjs +0 -83
  1600. package/dist/builder.mjs +0 -1502
  1601. package/dist/chats.server.mjs +0 -137
  1602. package/dist/common.schema-C2m3O1XY.mjs +0 -20
  1603. package/dist/common.schema-O0w_rDyC.js +0 -19
  1604. package/dist/community.server.mjs +0 -1068
  1605. package/dist/credentials.schema-BmOPv6FD.js +0 -16
  1606. package/dist/credentials.schema-oOC8B5KL.mjs +0 -17
  1607. package/dist/engagement.schema-DAiXsvh1.js +0 -33
  1608. package/dist/engagement.schema-DnDD7Bn3.mjs +0 -34
  1609. package/dist/events.server.mjs +0 -1060
  1610. package/dist/files.server.mjs +0 -339
  1611. package/dist/gallery.server.mjs +0 -337
  1612. package/dist/globals.abac-Bn-4tbX8.js +0 -303
  1613. package/dist/globals.abac-DZpTRxKR.mjs +0 -304
  1614. package/dist/globals.cache-BT6q3vOf.mjs +0 -140
  1615. package/dist/globals.cache-CwWvNGFQ.js +0 -139
  1616. package/dist/globals.logger-BdjooLaD.js +0 -34
  1617. package/dist/globals.logger-DusiFsxN.mjs +0 -35
  1618. package/dist/globals.server.mjs +0 -453
  1619. package/dist/globals.verifier-BdJxc8-8.mjs +0 -609
  1620. package/dist/globals.verifier-CKYpYfQl.js +0 -608
  1621. package/dist/index-BOmxJQ5W.js +0 -205
  1622. package/dist/index-C_Fw0Umg.mjs +0 -206
  1623. package/dist/mailing-D4kWlk3_.js +0 -93
  1624. package/dist/mailing-DvCT5ijo.mjs +0 -94
  1625. package/dist/main-DxWqDgs1.js +0 -11
  1626. package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +0 -1
  1627. package/dist/martyrs/src/components/Chips/Chips.vue.js.map +0 -1
  1628. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.cjs.map +0 -1
  1629. package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
  1630. package/dist/martyrs/src/components/FieldTags/vue-tags-input.cjs +0 -292
  1631. package/dist/martyrs/src/components/FieldTags/vue-tags-input.cjs.map +0 -1
  1632. package/dist/martyrs/src/components/FieldTags/vue-tags-input.js +0 -292
  1633. package/dist/martyrs/src/components/FieldTags/vue-tags-input.js.map +0 -1
  1634. package/dist/martyrs/src/components/Menu/Menu.vue.cjs.map +0 -1
  1635. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  1636. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.cjs +0 -450
  1637. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.cjs.map +0 -1
  1638. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js +0 -450
  1639. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  1640. package/dist/martyrs/src/components/SelectMulti/multiselectMixin.cjs +0 -633
  1641. package/dist/martyrs/src/components/SelectMulti/multiselectMixin.cjs.map +0 -1
  1642. package/dist/martyrs/src/components/SelectMulti/multiselectMixin.js +0 -633
  1643. package/dist/martyrs/src/components/SelectMulti/multiselectMixin.js.map +0 -1
  1644. package/dist/martyrs/src/components/SelectMulti/pointerMixin.cjs +0 -117
  1645. package/dist/martyrs/src/components/SelectMulti/pointerMixin.cjs.map +0 -1
  1646. package/dist/martyrs/src/components/SelectMulti/pointerMixin.js +0 -117
  1647. package/dist/martyrs/src/components/SelectMulti/pointerMixin.js.map +0 -1
  1648. package/dist/martyrs/src/components/Table/TableCell.vue.cjs +0 -59
  1649. package/dist/martyrs/src/components/Table/TableCell.vue.cjs.map +0 -1
  1650. package/dist/martyrs/src/components/Table/TableCell.vue.js +0 -59
  1651. package/dist/martyrs/src/components/Table/TableCell.vue.js.map +0 -1
  1652. package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +0 -1
  1653. package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.cjs.map +0 -1
  1654. package/dist/martyrs/src/modules/globals/views/plugins/AlertDialog.vue.js.map +0 -1
  1655. package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.cjs.map +0 -1
  1656. package/dist/martyrs/src/modules/products/components/blocks/ImagesThumbnails.vue.js.map +0 -1
  1657. package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.cjs +0 -65
  1658. package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.cjs.map +0 -1
  1659. package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.js +0 -65
  1660. package/dist/martyrs/src/modules/products/components/blocks/LeftoverPositions.vue.js.map +0 -1
  1661. package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.cjs +0 -49
  1662. package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.cjs.map +0 -1
  1663. package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.js +0 -49
  1664. package/dist/martyrs/src/modules/products/components/blocks/ListPositions.vue.js.map +0 -1
  1665. package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs +0 -237
  1666. package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.cjs.map +0 -1
  1667. package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js +0 -237
  1668. package/dist/martyrs/src/modules/products/components/pages/EditLeftover.vue.js.map +0 -1
  1669. package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.cjs +0 -152
  1670. package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.cjs.map +0 -1
  1671. package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.js +0 -152
  1672. package/dist/martyrs/src/modules/products/components/sections/EditModifications.vue.js.map +0 -1
  1673. package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs +0 -120
  1674. package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs.map +0 -1
  1675. package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js +0 -120
  1676. package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js.map +0 -1
  1677. package/dist/metadata.schema--tle-GU8.mjs +0 -282
  1678. package/dist/metadata.schema-CUkLXZ2f.js +0 -281
  1679. package/dist/notifications.server.mjs +0 -663
  1680. package/dist/orders.server.mjs +0 -926
  1681. package/dist/organizations.server.mjs +0 -1590
  1682. package/dist/ownership.schema-CNCotD3D.mjs +0 -50
  1683. package/dist/ownership.schema-MxfJlPtq.js +0 -49
  1684. package/dist/pages.server.mjs +0 -178
  1685. package/dist/products.server.mjs +0 -1381
  1686. package/dist/profile.schema-BLSuV_VC.js +0 -27
  1687. package/dist/profile.schema-BRuvQ7QV.mjs +0 -28
  1688. package/dist/queryProcessor-CVKI651_.mjs +0 -314
  1689. package/dist/queryProcessor-DSUqSk3I.js +0 -313
  1690. package/dist/rents.server.mjs +0 -506
  1691. package/dist/reports.server.mjs +0 -187
  1692. package/dist/spots.server.mjs +0 -380
  1693. package/dist/wallet.server.mjs +0 -705
  1694. package/src/builder/rspack/rspack.config.server.js +0 -30
  1695. package/src/components/FieldTags/vue-tags-input.js +0 -424
  1696. package/src/components/SelectMulti/index.js +0 -7
  1697. package/src/components/SelectMulti/multiselectMixin.js +0 -725
  1698. package/src/components/SelectMulti/pointerMixin.js +0 -143
  1699. package/src/modules/globals/views/core/event.js +0 -48
  1700. package/src/modules/icons/logos/LogotypeNunito.vue +0 -12
  1701. package/src/modules/integrations/openai/controllers/openai.controller.js +0 -89
  1702. package/src/modules/products/components/blocks/EditFilters.vue +0 -56
  1703. package/src/modules/products/components/blocks/LeftoverPositions.vue +0 -99
  1704. package/src/modules/products/components/blocks/ListPositions.vue +0 -74
  1705. package/src/modules/products/components/pages/EditLeftover.vue +0 -288
  1706. package/src/modules/products/components/pages/Product.old.vue +0 -201
  1707. package/src/modules/products/components/sections/EditModifications.vue +0 -92
  1708. package/src/modules/products/components/sections/EditProductInfo.vue +0 -106
  1709. package/src/modules/products/controllers/modifications.controller.js +0 -66
  1710. /package/src/modules/globals/views/{plugins → components/blocks}/AlertDialog.vue +0 -0
  1711. /package/src/modules/products/components/{blocks/Images360.vue → elements/Image360.vue} +0 -0
@@ -0,0 +1,2635 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const globals_logger = require("./globals.logger-CZMgIMlM.cjs");
4
+ const queryProcessor = require("./queryProcessor-B_X680wC.cjs");
5
+ const OpenAI = require("openai");
6
+ const mongoose = require("mongoose");
7
+ const common_schema = require("./common.schema-BzFEVNn3.cjs");
8
+ const engagement_schema = require("./engagement.schema-JADHu8pj.cjs");
9
+ const metadata_schema = require("./metadata.schema-RlxNv46L.cjs");
10
+ const ownership_schema = require("./ownership.schema-DCosqOc1.cjs");
11
+ const authJwt = require("./authJwt-DBB51Iql.cjs");
12
+ const globals_abac = require("./globals.abac-Cm9e8Jdk.cjs");
13
+ const globals_verifier = require("./globals.verifier-D68mHEBl.cjs");
14
+ const globals_observer = require("./globals.observer-CV2wCzzh.cjs");
15
+ const abac = require("./abac-XF1JVCLI.cjs");
16
+ const controllerFactory$2 = (db) => {
17
+ const Category = db.category;
18
+ const logger = new globals_logger.Logger(db);
19
+ const cache = new globals_logger.Cache();
20
+ return {
21
+ async read(req, res) {
22
+ try {
23
+ let { parent, url, search, sortParam, sortOrder, skip, limit, excludeChildren, rootOnly, type } = req.verifiedQuery;
24
+ const cacheKey = JSON.stringify(req.verifiedQuery);
25
+ let cachedResult = await cache.get(cacheKey);
26
+ if (cachedResult) {
27
+ return res.status(200).json(cachedResult);
28
+ }
29
+ const matchStage = {
30
+ ...req.query.status && { status: req.query.status },
31
+ ...url && { url },
32
+ ...search && { name: { $regex: search, $options: "i" } },
33
+ ...parent ? { parent: new db.mongoose.Types.ObjectId(parent) } : {},
34
+ ...rootOnly === "true" && !search ? { parent: null } : {}
35
+ };
36
+ if (type === "platform") {
37
+ matchStage["owner.type"] = "platform";
38
+ } else if (type === "organization" && req.query.organizationId) {
39
+ matchStage["owner.type"] = "organization";
40
+ matchStage["owner.target"] = new db.mongoose.Types.ObjectId(req.query.organizationId);
41
+ }
42
+ if (search) {
43
+ excludeChildren = "true";
44
+ }
45
+ let pipeline = [
46
+ { $match: matchStage },
47
+ queryProcessor.queryProcessorGlobals.getCreatorUserLookupStage(),
48
+ queryProcessor.queryProcessorGlobals.getCreatorOrganizationLookupStage(),
49
+ // For owner
50
+ queryProcessor.queryProcessorGlobals.getOwnerUserLookupStage(),
51
+ queryProcessor.queryProcessorGlobals.getOwnerOrganizationLookupStage(),
52
+ queryProcessor.queryProcessorGlobals.getAddFieldsCreatorOwnerStage(),
53
+ { $sort: { [sortParam]: sortOrder === "asc" ? 1 : -1 } },
54
+ { $skip: Number(skip) },
55
+ { $limit: Number(limit) },
56
+ queryProcessor.queryProcessorGlobals.removeTempPropeties()
57
+ ];
58
+ if (excludeChildren !== "true") {
59
+ pipeline.push({
60
+ $graphLookup: {
61
+ from: "categories",
62
+ startWith: "$_id",
63
+ connectFromField: "_id",
64
+ connectToField: "parent",
65
+ as: "allDescendants",
66
+ maxDepth: 10
67
+ }
68
+ });
69
+ }
70
+ const results = await Category.aggregate(pipeline);
71
+ let response;
72
+ if (excludeChildren === "true") {
73
+ response = results;
74
+ } else {
75
+ let allCategories = [];
76
+ results.forEach((doc) => {
77
+ let category = { ...doc };
78
+ delete category.allDescendants;
79
+ allCategories.push(category);
80
+ if (doc.allDescendants && doc.allDescendants.length > 0) {
81
+ allCategories.push(...doc.allDescendants);
82
+ }
83
+ });
84
+ let uniqueCategories = Array.from(new Map(allCategories.map((item) => [item._id.toString(), item])).values());
85
+ let tree = buildAdjacencyTree(uniqueCategories, sortParam, sortOrder);
86
+ if (rootOnly === "true") {
87
+ response = tree;
88
+ } else {
89
+ const requestedCategoryIds = results.map((r) => r._id.toString());
90
+ response = tree.filter((category) => requestedCategoryIds.includes(category._id.toString()));
91
+ }
92
+ }
93
+ let tags = ["categories"];
94
+ if (type === "organization" && req.query.organizationId) {
95
+ tags.push(`organization_${req.query.organizationId}`);
96
+ }
97
+ for (const cat of response) {
98
+ if (cat._id) {
99
+ tags.push(`category_${cat._id}`);
100
+ }
101
+ }
102
+ await cache.setWithTags(cacheKey, response, tags);
103
+ res.status(200).json(response);
104
+ } catch (err) {
105
+ console.log(err);
106
+ logger.error(`Error reading categories: ${err.message}`);
107
+ res.status(500).json({ message: err.message });
108
+ }
109
+ },
110
+ async create(req, res) {
111
+ try {
112
+ const categoryData = req.verifiedBody;
113
+ if (!categoryData.creator && req.userId) {
114
+ categoryData.creator = {
115
+ type: "user",
116
+ target: req.userId
117
+ };
118
+ }
119
+ if (!categoryData.owner) {
120
+ if (req.query.organizationId) {
121
+ categoryData.owner = {
122
+ type: "organization",
123
+ target: req.query.organizationId
124
+ };
125
+ } else {
126
+ categoryData.owner = {
127
+ type: "platform",
128
+ target: null
129
+ };
130
+ }
131
+ }
132
+ const highestOrder = await Category.findOne().sort("-order");
133
+ const order = highestOrder ? highestOrder.order + 1 : 1;
134
+ const category = new Category({
135
+ ...categoryData,
136
+ order
137
+ });
138
+ if (categoryData.parent) {
139
+ const parent = await Category.findByIdAndUpdate(categoryData.parent, { $push: { children: category._id } }, { new: true });
140
+ if (!parent) throw new Error("Parent category not found");
141
+ category.parent = parent._id;
142
+ }
143
+ if (categoryData.children && categoryData.children.length > 0) {
144
+ await Category.updateMany({ _id: { $in: categoryData.children } }, { $set: { parent: category._id } });
145
+ }
146
+ await category.save();
147
+ await cache.delByTags(["categories"]);
148
+ if (category.owner.type === "organization") {
149
+ await cache.delByTag(`organization_${category.owner.target}`);
150
+ }
151
+ logger.info(`Category created: ${category._id}`);
152
+ res.status(201).json(category);
153
+ } catch (err) {
154
+ logger.error(`Error creating category: ${err.message}`);
155
+ res.status(err.message === "Parent category not found" ? 404 : 500).json({ message: err.message });
156
+ }
157
+ },
158
+ async update(req, res) {
159
+ try {
160
+ const category = req.verifiedBody;
161
+ const updatedCategory = await Category.findByIdAndUpdate(category._id, { $set: category }, { new: true }).lean();
162
+ if (!updatedCategory) {
163
+ return res.status(404).json({ message: "Category not found" });
164
+ }
165
+ await cache.delByTag(`category_${category._id}`);
166
+ await cache.delByTags(["categories"]);
167
+ if (updatedCategory.owner && updatedCategory.owner.type === "organization") {
168
+ await cache.delByTag(`organization_${updatedCategory.owner.target}`);
169
+ }
170
+ logger.info(`Category updated: ${category._id}`);
171
+ res.status(200).json(updatedCategory);
172
+ } catch (err) {
173
+ logger.error(`Category update error: ${err.message}`);
174
+ res.status(500).json({ message: "Failed to update category" });
175
+ }
176
+ },
177
+ async updateOrder(req, res) {
178
+ try {
179
+ const { categories } = req.verifiedBody;
180
+ const bulkOps = categories.map((category) => ({
181
+ updateOne: {
182
+ filter: { _id: category._id },
183
+ update: {
184
+ $set: {
185
+ order: category.order,
186
+ parent: category.parent ? new db.mongoose.Types.ObjectId(category.parent) : null
187
+ }
188
+ }
189
+ }
190
+ }));
191
+ await Category.bulkWrite(bulkOps);
192
+ const categoryIds = categories.map((cat) => cat._id);
193
+ const organizationIds = /* @__PURE__ */ new Set();
194
+ const updatedCategories = await Category.find({ _id: { $in: categoryIds } }).lean();
195
+ updatedCategories.forEach((cat) => {
196
+ if (cat.owner && cat.owner.type === "organization") {
197
+ organizationIds.add(cat.owner.target.toString());
198
+ }
199
+ });
200
+ await cache.delByTags(["categories"]);
201
+ for (const catId of categoryIds) {
202
+ await cache.delByTag(`category_${catId}`);
203
+ }
204
+ for (const orgId of organizationIds) {
205
+ await cache.delByTag(`organization_${orgId}`);
206
+ }
207
+ let query = {};
208
+ if (req.query.type === "platform") {
209
+ query = { "owner.type": "platform" };
210
+ } else if (req.query.type === "organization" && req.query.organizationId) {
211
+ query = {
212
+ "owner.type": "organization",
213
+ "owner.target": new db.mongoose.Types.ObjectId(req.query.organizationId)
214
+ };
215
+ }
216
+ const result = await Category.find(query).sort({ order: "asc" }).lean();
217
+ logger.info(`Categories order updated: ${categoryIds.join(", ")}`);
218
+ res.status(200).json(result);
219
+ } catch (err) {
220
+ logger.error(`Category order update error: ${err.message}`);
221
+ res.status(500).json({ message: "Failed to update categories order" });
222
+ }
223
+ },
224
+ async delete(req, res) {
225
+ try {
226
+ const category = req.currentResource;
227
+ let ownerOrgId = null;
228
+ if (category.owner && category.owner.type === "organization") {
229
+ ownerOrgId = category.owner.target;
230
+ }
231
+ const result = await Category.aggregate([
232
+ { $match: { _id: category._id } },
233
+ {
234
+ $graphLookup: {
235
+ from: "categories",
236
+ startWith: "$_id",
237
+ connectFromField: "_id",
238
+ connectToField: "parent",
239
+ as: "descendants"
240
+ }
241
+ },
242
+ {
243
+ $project: { descendants: 1 }
244
+ }
245
+ ]);
246
+ const idsToDelete = [category._id, ...(result[0]?.descendants || []).map(({ _id }) => _id)];
247
+ const categoryIdsTags = idsToDelete.map((id) => `category_${id}`);
248
+ await Category.deleteMany({ _id: { $in: idsToDelete } });
249
+ await cache.delByTags(["categories"]);
250
+ await cache.delByTags(categoryIdsTags);
251
+ if (ownerOrgId) {
252
+ await cache.delByTag(`organization_${ownerOrgId}`);
253
+ }
254
+ logger.info(`Category and its subcategories deleted: ${category.url}`);
255
+ res.status(200).json({ message: "Category and its subcategories deleted successfully" });
256
+ } catch (err) {
257
+ logger.error(`Error deleting category: ${err.message}`);
258
+ res.status(500).json({ message: err.message || "Internal server error" });
259
+ }
260
+ }
261
+ };
262
+ function buildAdjacencyTree(categories, sortParam, sortOrder) {
263
+ const categoryMap = /* @__PURE__ */ new Map();
264
+ categories.forEach((category) => {
265
+ categoryMap.set(category._id.toString(), {
266
+ ...category,
267
+ children: []
268
+ });
269
+ });
270
+ const rootCategories = [];
271
+ categories.forEach((category) => {
272
+ const categoryWithChildren = categoryMap.get(category._id.toString());
273
+ if (category.parent && categoryMap.has(category.parent.toString())) {
274
+ const parentCategory = categoryMap.get(category.parent.toString());
275
+ parentCategory.children.push(categoryWithChildren);
276
+ } else if (!category.parent) {
277
+ rootCategories.push(categoryWithChildren);
278
+ }
279
+ });
280
+ function sortCategories(nodes) {
281
+ if (!nodes || nodes.length === 0) {
282
+ return nodes;
283
+ }
284
+ nodes.sort((a, b) => {
285
+ const valueA = a[sortParam] ?? (sortParam === "order" ? Number.MAX_SAFE_INTEGER : "");
286
+ const valueB = b[sortParam] ?? (sortParam === "order" ? Number.MAX_SAFE_INTEGER : "");
287
+ if (typeof valueA === "number" && typeof valueB === "number") {
288
+ return sortOrder === "asc" ? valueA - valueB : valueB - valueA;
289
+ } else {
290
+ const stringA = String(valueA);
291
+ const stringB = String(valueB);
292
+ return sortOrder === "asc" ? stringA.localeCompare(stringB) : stringB.localeCompare(stringA);
293
+ }
294
+ });
295
+ nodes.forEach((node) => {
296
+ if (node.children && node.children.length > 0) {
297
+ sortCategories(node.children);
298
+ }
299
+ });
300
+ return nodes;
301
+ }
302
+ return sortCategories(rootCategories);
303
+ }
304
+ };
305
+ const controllerFactory$1 = (db) => {
306
+ const Leftover = db.leftover;
307
+ const read = async (req, res) => {
308
+ try {
309
+ let stages = [
310
+ ...queryProcessor.queryProcessorGlobals.getSearchOptions(req.query.search, {
311
+ fields: ["positions.name"]
312
+ }),
313
+ ...queryProcessor.queryProcessorGlobals.getBasicOptions(req.query),
314
+ // For creator
315
+ queryProcessor.queryProcessorGlobals.getCreatorUserLookupStage(),
316
+ queryProcessor.queryProcessorGlobals.getCreatorOrganizationLookupStage(),
317
+ // For owner
318
+ queryProcessor.queryProcessorGlobals.getOwnerUserLookupStage(),
319
+ queryProcessor.queryProcessorGlobals.getOwnerOrganizationLookupStage(),
320
+ queryProcessor.queryProcessorGlobals.getAddFieldsCreatorOwnerStage(),
321
+ // Pagination
322
+ ...queryProcessor.queryProcessorGlobals.getSortingOptions(req.query.sortParam, req.query.sortOrder),
323
+ ...queryProcessor.queryProcessorGlobals.getPaginationOptions(req.query.skip, req.query.limit)
324
+ ];
325
+ const leftoveres = await Leftover.aggregate(stages).exec();
326
+ if (!leftoveres) {
327
+ return res.status(404).send({ message: "LEFTOVERES_NOT_FOUND" });
328
+ }
329
+ res.status(200).send(leftoveres);
330
+ } catch (err) {
331
+ console.error(err);
332
+ res.status(500).send({ message: "ERROR_GET_ALL_LEFTOVERES" });
333
+ }
334
+ };
335
+ const create = async (req, res) => {
336
+ try {
337
+ const leftover = await Leftover.create({
338
+ organization: req.body.organization,
339
+ type: req.body.type,
340
+ order: req.body.order,
341
+ comment: req.body.comment,
342
+ positions: req.body.positions,
343
+ creator: req.body.creator,
344
+ owner: req.body.owner
345
+ });
346
+ if (!leftover) {
347
+ return res.status(404).send({ message: "ERROR_CREATING_LEFTOVER" });
348
+ }
349
+ res.status(200).send(leftover);
350
+ } catch (err) {
351
+ console.log(err);
352
+ res.status(500).send({ message: "ERROR_CREATE_LEFTOVER" });
353
+ }
354
+ };
355
+ const get = async (req, res) => {
356
+ try {
357
+ const leftover = await Leftover.findOne({ _id: req.params._id }).exec();
358
+ if (!leftover) {
359
+ return res.status(404).send({ message: "LEFTOVER_NOT_FOUND" });
360
+ }
361
+ res.status(200).send(leftover);
362
+ } catch (err) {
363
+ res.status(500).send({ message: "ERROR_GET_LEFTOVER" });
364
+ }
365
+ };
366
+ const update = async (req, res) => {
367
+ try {
368
+ const leftover = await Leftover.findOneAndUpdate({ _id: req.params._id }, req.body, {
369
+ new: true,
370
+ upsert: true
371
+ }).exec();
372
+ if (!leftover) {
373
+ return res.status(404).send({ message: "LEFTOVER_NOT_FOUND" });
374
+ }
375
+ res.status(200).send(leftover);
376
+ } catch (err) {
377
+ console.log(err);
378
+ res.status(500).send({ message: "ERROR_UPDATING_LEFTOVER" });
379
+ }
380
+ };
381
+ const deleteLeftover = async (req, res) => {
382
+ try {
383
+ const leftover = await Leftover.findOneAndDelete({ _id: req.params._id });
384
+ if (!leftover) {
385
+ return res.status(404).send({ message: "ERROR_DELETING_LEFTOVER" });
386
+ }
387
+ res.status(200).send(leftover);
388
+ } catch (err) {
389
+ res.status(500).send({ message: "ERROR_DELETE_LEFTOVER" });
390
+ }
391
+ };
392
+ return {
393
+ read,
394
+ create,
395
+ get,
396
+ update,
397
+ delete: deleteLeftover
398
+ };
399
+ };
400
+ class OpenAIGlobal {
401
+ constructor() {
402
+ if (OpenAIGlobal.instance) {
403
+ return OpenAIGlobal.instance;
404
+ }
405
+ this.client = new OpenAI({
406
+ organization: process.env.OPENAI_ORG_KEY,
407
+ apiKey: process.env.OPENAI_API_KEY
408
+ });
409
+ this.models = {
410
+ chat: "gpt-3.5-turbo",
411
+ vision: "gpt-4-vision-preview",
412
+ embedding: "text-embedding-ada-002"
413
+ };
414
+ OpenAIGlobal.instance = this;
415
+ }
416
+ /**
417
+ * Generate completions with retry logic for handling JSON parsing errors
418
+ * @param {string} prompt - The prompt text
419
+ * @param {Object} options - Additional options
420
+ * @returns {Promise<Object|string>} - Parsed JSON response or raw content
421
+ */
422
+ async createChatCompletion(prompt, options = {}) {
423
+ const {
424
+ model = this.models.chat,
425
+ maxRetries = 3,
426
+ temperature = 0.7,
427
+ parseJSON = true,
428
+ systemPrompt = ""
429
+ } = options;
430
+ let attempt = 0;
431
+ while (attempt < maxRetries) {
432
+ try {
433
+ const messages = [];
434
+ if (systemPrompt) {
435
+ messages.push({ role: "system", content: systemPrompt });
436
+ }
437
+ messages.push({ role: "user", content: prompt });
438
+ const response = await this.client.chat.completions.create({
439
+ model,
440
+ messages,
441
+ temperature,
442
+ response_format: parseJSON ? { type: "json_object" } : void 0
443
+ });
444
+ const content = response.choices[0].message.content;
445
+ if (parseJSON) {
446
+ return JSON.parse(content);
447
+ }
448
+ return content;
449
+ } catch (err) {
450
+ attempt++;
451
+ if (err instanceof SyntaxError && attempt < maxRetries) {
452
+ console.error(`Invalid JSON in OpenAI response (attempt ${attempt}/${maxRetries}): ${err.message}`);
453
+ } else if (attempt >= maxRetries) {
454
+ console.error(`Max retries (${maxRetries}) reached for OpenAI completion: ${err.message}`);
455
+ throw err;
456
+ } else {
457
+ console.error(`OpenAI API error (attempt ${attempt}/${maxRetries}): ${err.message}`);
458
+ if (err.status === 429) {
459
+ const waitTime = Math.pow(2, attempt) * 1e3;
460
+ await new Promise((resolve) => setTimeout(resolve, waitTime));
461
+ }
462
+ }
463
+ await new Promise((resolve) => setTimeout(resolve, 1e3 * attempt));
464
+ }
465
+ }
466
+ }
467
+ /**
468
+ * Get direct access to OpenAI client instance
469
+ * @returns {OpenAI} - OpenAI client instance
470
+ */
471
+ getClient() {
472
+ return this.client;
473
+ }
474
+ /**
475
+ * Set default model for specific API
476
+ * @param {string} type - API type ('chat', 'vision', 'embedding')
477
+ * @param {string} modelId - Model identifier
478
+ */
479
+ setDefaultModel(type, modelId) {
480
+ if (this.models[type]) {
481
+ this.models[type] = modelId;
482
+ }
483
+ }
484
+ }
485
+ const openaiGlobal = new OpenAIGlobal();
486
+ const ObjectId = mongoose.Types.ObjectId;
487
+ function getCategoriesFilterStage(categories) {
488
+ if (!categories) return [];
489
+ const categoryIds = categories.split(",").filter(Boolean);
490
+ if (categoryIds.length === 0) return [];
491
+ return [{
492
+ $match: {
493
+ category: {
494
+ $in: categoryIds.map((id) => new ObjectId(id))
495
+ }
496
+ }
497
+ }];
498
+ }
499
+ function getDeliveryFilterStage(delivery) {
500
+ if (!delivery) return [];
501
+ const deliveryOptions = delivery.split(",").filter(Boolean);
502
+ if (deliveryOptions.length === 0) return [];
503
+ return [{
504
+ $match: {
505
+ delivery: { $in: deliveryOptions }
506
+ }
507
+ }];
508
+ }
509
+ function getAttributeFiltersStage(filtersString) {
510
+ if (!filtersString) return [];
511
+ try {
512
+ const filters = JSON.parse(filtersString);
513
+ if (!Array.isArray(filters) || filters.length === 0) return [];
514
+ const filterConditions = [];
515
+ filters.forEach((filter) => {
516
+ const { parameter, values, caseSensitive = false } = filter;
517
+ if (!values || values.length === 0) return;
518
+ const conditions = values.map((value) => {
519
+ const valueCondition = caseSensitive ? value : { $regex: `^${escapeRegex(value)}$`, $options: "i" };
520
+ return {
521
+ attributes: {
522
+ $elemMatch: {
523
+ name: parameter,
524
+ value: valueCondition
525
+ }
526
+ }
527
+ };
528
+ });
529
+ if (conditions.length > 0) {
530
+ filterConditions.push({ $or: conditions });
531
+ }
532
+ });
533
+ return filterConditions.length > 0 ? [{ $match: { $and: filterConditions } }] : [];
534
+ } catch (error) {
535
+ console.error("Error parsing attribute filters:", error);
536
+ return [];
537
+ }
538
+ }
539
+ function escapeRegex(string) {
540
+ return string.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
541
+ }
542
+ const queryProcessorProducts = {
543
+ getAttributeFiltersStage,
544
+ getCategoriesFilterStage,
545
+ getDeliveryFilterStage
546
+ };
547
+ const productLookupConfigs = {
548
+ // Лукап для leftover-ов продукта
549
+ leftovers: {
550
+ lookup: {
551
+ from: "leftovers",
552
+ let: { productId: "$_id", ingredientsIds: "$ingredients._id" },
553
+ pipeline: [
554
+ { $unwind: "$positions" },
555
+ {
556
+ $match: {
557
+ $expr: {
558
+ $or: [
559
+ { $eq: ["$positions._id", "$$productId"] },
560
+ { $in: ["$positions._id", { $ifNull: ["$$ingredientsIds", []] }] }
561
+ ]
562
+ }
563
+ }
564
+ },
565
+ {
566
+ $addFields: {
567
+ "positions.quantity": {
568
+ $cond: {
569
+ if: { $eq: ["$type", "stock-in"] },
570
+ then: "$positions.quantity",
571
+ else: { $multiply: ["$positions.quantity", -1] }
572
+ }
573
+ }
574
+ }
575
+ },
576
+ {
577
+ $project: {
578
+ _id: "$positions._id",
579
+ quantity: "$positions.quantity",
580
+ name: "$positions.name"
581
+ }
582
+ }
583
+ ],
584
+ as: "leftovers"
585
+ },
586
+ additionalStages: [
587
+ // Этап для расчета количеств по ингредиентам
588
+ {
589
+ $addFields: {
590
+ ingredientsQuantities: {
591
+ $cond: {
592
+ if: { $isArray: "$ingredients" },
593
+ then: {
594
+ $map: {
595
+ input: "$ingredients",
596
+ as: "ingredient",
597
+ in: {
598
+ $let: {
599
+ vars: {
600
+ ingredientId: "$$ingredient._id",
601
+ ingredientQuantity: { $ifNull: ["$$ingredient.quantity", 0] }
602
+ },
603
+ in: {
604
+ $divide: [
605
+ {
606
+ $sum: {
607
+ $map: {
608
+ input: "$leftovers",
609
+ as: "leftover",
610
+ in: {
611
+ $cond: {
612
+ if: { $eq: ["$$leftover._id", "$$ingredientId"] },
613
+ then: "$$leftover.quantity",
614
+ else: 0
615
+ }
616
+ }
617
+ }
618
+ }
619
+ },
620
+ {
621
+ $cond: {
622
+ if: { $eq: ["$$ingredientQuantity", 0] },
623
+ then: 1,
624
+ else: "$$ingredientQuantity"
625
+ }
626
+ }
627
+ ]
628
+ }
629
+ }
630
+ }
631
+ }
632
+ },
633
+ else: []
634
+ }
635
+ }
636
+ }
637
+ },
638
+ // Этап для расчета доступного количества
639
+ {
640
+ $set: {
641
+ available: {
642
+ $cond: {
643
+ if: { $gt: [{ $size: { $ifNull: ["$ingredients", []] } }, 0] },
644
+ then: { $floor: { $min: "$ingredientsQuantities" } },
645
+ else: { $sum: "$leftovers.quantity" }
646
+ }
647
+ }
648
+ }
649
+ }
650
+ ]
651
+ },
652
+ // Лукап для категорий продукта
653
+ categories: {
654
+ lookup: {
655
+ from: "categories",
656
+ localField: "category",
657
+ foreignField: "_id",
658
+ as: "category"
659
+ },
660
+ additionalStages: [
661
+ // Проецируем только нужные поля для каждой категории
662
+ {
663
+ $addFields: {
664
+ category: {
665
+ $map: {
666
+ input: "$category",
667
+ as: "cat",
668
+ in: {
669
+ _id: "$$cat._id",
670
+ name: "$$cat.name",
671
+ description: "$$cat.description",
672
+ url: "$$cat.url"
673
+ }
674
+ }
675
+ }
676
+ }
677
+ }
678
+ ]
679
+ }
680
+ };
681
+ const controllerFactory = (db) => {
682
+ const Product = db.product;
683
+ const Create = async (req, res) => {
684
+ try {
685
+ const productData = {
686
+ ...req.body,
687
+ category: req.body.category?.map((cat) => cat._id) || []
688
+ };
689
+ const product = await new Product(productData).save();
690
+ return res.status(201).json(product);
691
+ } catch (err) {
692
+ console.log(err);
693
+ return res.status(500).json({ message: err.message });
694
+ }
695
+ };
696
+ const Read = async (req, res) => {
697
+ try {
698
+ const requestedLookups = queryProcessor.queryProcessorGlobals.getRequestedLookups(req.query);
699
+ const stages = [
700
+ ...queryProcessor.queryProcessorGlobals.getBasicOptions(req.query),
701
+ ...queryProcessor.queryProcessorGlobals.getSearchOptions(req.query.search, {
702
+ fields: ["name", "description"]
703
+ }),
704
+ ...queryProcessor.queryProcessorGlobals.getPriceConditions(req.query.prices),
705
+ ...queryProcessorProducts.getCategoriesFilterStage(req.query.categories),
706
+ ...queryProcessorProducts.getDeliveryFilterStage(req.query.delivery),
707
+ ...queryProcessorProducts.getAttributeFiltersStage(req.query.filters),
708
+ ...queryProcessor.queryProcessorGlobals.getLookupStages(requestedLookups, productLookupConfigs),
709
+ queryProcessor.queryProcessorGlobals.getCreatorUserLookupStage(),
710
+ queryProcessor.queryProcessorGlobals.getCreatorOrganizationLookupStage(),
711
+ queryProcessor.queryProcessorGlobals.getOwnerUserLookupStage(),
712
+ queryProcessor.queryProcessorGlobals.getOwnerOrganizationLookupStage(),
713
+ queryProcessor.queryProcessorGlobals.getAddFieldsCreatorOwnerStage(),
714
+ ...queryProcessor.queryProcessorGlobals.getSortingOptions(req.query.sortParam, req.query.sortOrder),
715
+ ...queryProcessor.queryProcessorGlobals.getPaginationOptions(req.query.skip, req.query.limit),
716
+ // Удаление временных полей
717
+ queryProcessor.queryProcessorGlobals.removeTempPropeties(),
718
+ // Дополнительные очистки для leftovers (если был запрошен)
719
+ ...requestedLookups.includes("leftovers") ? [{ $project: { ingredientsQuantities: 0 } }] : []
720
+ ].filter(Boolean);
721
+ const products = await Product.aggregate(stages);
722
+ if (req.query.count) {
723
+ return res.status(200).json({ count: products.length });
724
+ }
725
+ res.status(200).json(products);
726
+ } catch (err) {
727
+ console.error("Error in products Read controller:", err);
728
+ return res.status(500).json({ message: err.message });
729
+ }
730
+ };
731
+ const Update = async (req, res) => {
732
+ try {
733
+ const { _id } = req.params;
734
+ const updateData = {
735
+ name: req.body.name,
736
+ status: req.body.status,
737
+ listing: req.body.listing,
738
+ description: req.body.description,
739
+ category: req.body.category?.map((cat) => cat._id) || [],
740
+ images: req.body.images,
741
+ attributes: req.body.attributes,
742
+ localization: req.body.translations,
743
+ discounts: req.body.discounts
744
+ };
745
+ const updatedProduct = await Product.findOneAndUpdate({ _id }, updateData, { new: true });
746
+ if (!updatedProduct) {
747
+ return res.status(404).send({ message: "Something wrong when updating product." });
748
+ }
749
+ res.status(200).send(updatedProduct);
750
+ } catch (err) {
751
+ res.status(500).send({ message: err.message });
752
+ }
753
+ };
754
+ const Delete = async (req, res) => {
755
+ try {
756
+ const { _id } = req.params;
757
+ const deletedProduct = await Product.findOneAndDelete({ _id });
758
+ if (!deletedProduct) {
759
+ return res.status(404).send({ message: "Product not found for deletion." });
760
+ }
761
+ res.status(200).send(deletedProduct);
762
+ } catch (err) {
763
+ res.status(500).send({ message: err.message });
764
+ }
765
+ };
766
+ const getProductRecommendation = async (req, res) => {
767
+ const { mood } = req.body;
768
+ try {
769
+ const products = await Product.find({
770
+ status: "published"
771
+ }).limit(40);
772
+ if (!products) {
773
+ console.log("no products");
774
+ return res.status(404).send({ message: "Products not found." });
775
+ }
776
+ const productsList = products.map((p) => {
777
+ const info = p.attributes || [];
778
+ const value0 = info[0] ? info[0].value : "";
779
+ const value1 = info[1] ? `(${info[1].value}%)` : "";
780
+ const value2 = info[2] ? `(${info[2].value})` : "";
781
+ return `${p._id}: ${p.name} (${value0}) ${value1} ${value2}`;
782
+ }).join(", ");
783
+ const prompt = `
784
+ 1. When asked how the client wants to feel, they responded "${mood}".
785
+ 2. Here is a list of products in our store: ${productsList}.
786
+ 3. Based on the attributes about the products (strain, THC content) and the user's desires, choose 1 product to recommend to the user.
787
+ 4. The response should be in the language that the user used in mood (${mood}).
788
+ 5. Please format your response as a JSON object '{"_id": "ID of the recommended product (it must correspond to one of the product IDs I sent)", "recommendationText": "Text explaining why this particular product"'. Write only the JSON object without any other text outside of it.
789
+ `;
790
+ const result = await openaiGlobal.createChatCompletion(prompt, {
791
+ model: "gpt-4",
792
+ temperature: 0.8,
793
+ systemPrompt: "You are a product recommendation specialist with expertise in matching customer needs to product attributes."
794
+ });
795
+ const recommendedProduct = await Product.findById(result._id);
796
+ if (!recommendedProduct) {
797
+ console.log(`No product found with _id: ${result._id}`);
798
+ return res.status(404).send({ message: "Recommended product not found." });
799
+ }
800
+ res.status(200).json({ product: recommendedProduct, recommendationText: result.recommendationText });
801
+ } catch (err) {
802
+ console.log(err);
803
+ res.status(500).send({ message: err });
804
+ }
805
+ };
806
+ const getProductsPopular = (req, res) => {
807
+ Product.find({
808
+ status: "published",
809
+ views: { $gt: 10 }
810
+ }).limit(10).exec((err, products) => {
811
+ if (err) {
812
+ return res.status(500).send({ message: err });
813
+ }
814
+ if (!products) {
815
+ return res.status(404).send({ message: "Products not found." });
816
+ }
817
+ res.status(200).send(products);
818
+ });
819
+ };
820
+ return {
821
+ Create,
822
+ Read,
823
+ Update,
824
+ Delete,
825
+ getProductsPopular,
826
+ getProductRecommendation
827
+ };
828
+ };
829
+ const CategoryModel = (db) => {
830
+ const CategorySchema = new db.mongoose.Schema(
831
+ {
832
+ name: { type: String, required: true, trim: true },
833
+ description: { type: String, trim: true },
834
+ photo: { type: String },
835
+ order: { type: Number, required: true },
836
+ url: { type: String, required: true, trim: true, unique: true },
837
+ parent: { type: db.mongoose.Schema.Types.ObjectId, ref: "Category" },
838
+ localization: { type: Array },
839
+ filters: { type: Array }
840
+ },
841
+ {
842
+ timestamps: { currentTime: () => Date.now() }
843
+ }
844
+ );
845
+ common_schema.applyCommonSchema(CategorySchema);
846
+ ownership_schema.applyOwnershipSchema(CategorySchema, db);
847
+ metadata_schema.applyMetadataSchema(CategorySchema);
848
+ engagement_schema.applyEngagementSchema(CategorySchema);
849
+ CategorySchema.index({ parent: 1 });
850
+ CategorySchema.index({ name: 1 });
851
+ const Category = db.mongoose.model("Category", CategorySchema, "categories");
852
+ return Category;
853
+ };
854
+ const LeftoverModel = (db) => {
855
+ const LeftoverSchema = new db.mongoose.Schema(
856
+ {
857
+ type: {
858
+ type: String,
859
+ enum: ["stock-in", "stock-out", "write-off"],
860
+ default: "stock-in",
861
+ required: true
862
+ },
863
+ order: {
864
+ type: db.mongoose.Schema.Types.ObjectId,
865
+ ref: "Order"
866
+ },
867
+ storage: {
868
+ type: db.mongoose.Schema.Types.ObjectId,
869
+ ref: "Spot"
870
+ },
871
+ positions: [{
872
+ _id: {
873
+ type: db.mongoose.Schema.Types.ObjectId
874
+ },
875
+ product: {
876
+ type: db.mongoose.Schema.Types.ObjectId,
877
+ ref: "Product"
878
+ },
879
+ variant: {
880
+ _id: {
881
+ type: db.mongoose.Schema.Types.ObjectId
882
+ },
883
+ name: {
884
+ type: String
885
+ },
886
+ attributes: {
887
+ type: Array
888
+ }
889
+ },
890
+ image: {
891
+ type: String
892
+ },
893
+ name: {
894
+ type: String
895
+ },
896
+ quantity: {
897
+ type: Number
898
+ },
899
+ cost: {
900
+ type: Number
901
+ },
902
+ unit: {
903
+ type: String
904
+ }
905
+ }],
906
+ comment: {
907
+ type: String
908
+ }
909
+ },
910
+ {
911
+ timestamps: {
912
+ currentTime: () => Date.now()
913
+ }
914
+ }
915
+ );
916
+ ownership_schema.applyOwnershipSchema(LeftoverSchema, db);
917
+ LeftoverSchema.index({ storage: 1, order: 1, type: 1 });
918
+ const Leftover = db.mongoose.model("Leftover", LeftoverSchema);
919
+ return Leftover;
920
+ };
921
+ const discountschema = (db) => {
922
+ const DiscountSchema = new db.mongoose.Schema(
923
+ {
924
+ type: {
925
+ type: String,
926
+ enum: ["discount", "special_price"],
927
+ default: "discount",
928
+ required: true
929
+ },
930
+ value: {
931
+ type: Number,
932
+ required: true,
933
+ min: 0
934
+ },
935
+ quantity: {
936
+ type: Number,
937
+ min: 1
938
+ },
939
+ date: {
940
+ start: Date,
941
+ end: Date
942
+ },
943
+ time: {
944
+ start: String,
945
+ // 'HH:mm' формат
946
+ end: String
947
+ },
948
+ name: String,
949
+ description: String
950
+ },
951
+ { _id: false }
952
+ );
953
+ return DiscountSchema;
954
+ };
955
+ const ProductModel = (db) => {
956
+ const DiscountSchema = discountschema(db);
957
+ const ProductSchema = new db.mongoose.Schema({
958
+ listing: {
959
+ type: String,
960
+ enum: ["sale", "rent"]
961
+ },
962
+ sku: {
963
+ type: String,
964
+ trim: true
965
+ },
966
+ category: [{
967
+ type: db.mongoose.Schema.Types.ObjectId,
968
+ ref: "Category"
969
+ }],
970
+ images: {
971
+ type: Array
972
+ },
973
+ name: {
974
+ type: String
975
+ },
976
+ description: {
977
+ type: String
978
+ },
979
+ attributes: [{
980
+ name: { type: String },
981
+ value: { type: String }
982
+ }],
983
+ translations: {
984
+ type: Array
985
+ },
986
+ discounts: [DiscountSchema]
987
+ }, {
988
+ timestamps: {
989
+ currentTime: () => Date.now()
990
+ }
991
+ });
992
+ common_schema.applyCommonSchema(ProductSchema);
993
+ ownership_schema.applyOwnershipSchema(ProductSchema, db);
994
+ ProductSchema.index({ category: 1 });
995
+ ProductSchema.index({ name: "text", description: "text" });
996
+ const Product = db.mongoose.model("Product", ProductSchema);
997
+ return Product;
998
+ };
999
+ const ingredientSchema = (db) => {
1000
+ const IngredientSchema = new db.mongoose.Schema({
1001
+ _id: {
1002
+ type: db.mongoose.Schema.Types.ObjectId,
1003
+ ref: "Product"
1004
+ },
1005
+ price: {
1006
+ type: Number,
1007
+ required: true,
1008
+ default: 0,
1009
+ min: [0, "Price cannot be less than 0"]
1010
+ },
1011
+ cost: {
1012
+ type: Number,
1013
+ required: true,
1014
+ default: 0,
1015
+ min: [0, "Price cannot be less than 0"]
1016
+ },
1017
+ quantity: {
1018
+ type: Number,
1019
+ required: true,
1020
+ min: [1, "Quantity cannot be less than 1"]
1021
+ },
1022
+ unit: {
1023
+ type: String,
1024
+ required: true,
1025
+ default: "g"
1026
+ },
1027
+ optional: {
1028
+ type: Boolean,
1029
+ default: false,
1030
+ description: "Является ли ингредиент опциональным"
1031
+ },
1032
+ replaceable: {
1033
+ type: Boolean,
1034
+ default: false,
1035
+ description: "Можно ли заменить ингредиент"
1036
+ },
1037
+ alternatives: [{
1038
+ type: db.mongoose.Schema.Types.ObjectId,
1039
+ ref: "Product",
1040
+ description: "Альтернативные продукты для замены"
1041
+ }]
1042
+ });
1043
+ return IngredientSchema;
1044
+ };
1045
+ const VariantModel = (db) => {
1046
+ const IngredientSchema = ingredientSchema(db);
1047
+ const VariantSchema = new db.mongoose.Schema({
1048
+ _id: {
1049
+ type: db.mongoose.Schema.Types.ObjectId,
1050
+ auto: true
1051
+ },
1052
+ product: {
1053
+ type: db.mongoose.Schema.Types.ObjectId,
1054
+ ref: "Product",
1055
+ required: true
1056
+ },
1057
+ sku: {
1058
+ type: String,
1059
+ trim: true
1060
+ },
1061
+ images: {
1062
+ type: Array
1063
+ },
1064
+ name: {
1065
+ type: String
1066
+ },
1067
+ price: {
1068
+ type: Number
1069
+ },
1070
+ cost: {
1071
+ type: Number,
1072
+ default: 0
1073
+ },
1074
+ quantity: {
1075
+ type: Number,
1076
+ default: 1
1077
+ },
1078
+ unit: {
1079
+ type: String,
1080
+ default: "pcs",
1081
+ enum: ["pcs", "g", "kg", "ml", "l", "oz"]
1082
+ },
1083
+ ingredients: [
1084
+ IngredientSchema
1085
+ ],
1086
+ attributes: [{
1087
+ name: { type: String },
1088
+ value: { type: String }
1089
+ }]
1090
+ }, {
1091
+ timestamps: {
1092
+ currentTime: () => Date.now()
1093
+ }
1094
+ });
1095
+ common_schema.applyCommonSchema(VariantSchema);
1096
+ ownership_schema.applyOwnershipSchema(VariantSchema, db);
1097
+ VariantSchema.index({ Variant: 1, name: 1 });
1098
+ const Variant = db.mongoose.model("Variant", VariantSchema);
1099
+ return Variant;
1100
+ };
1101
+ const verifierFactory$1 = function(db) {
1102
+ const queryValidatorConfig = {
1103
+ parent: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1104
+ url: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1105
+ search: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1106
+ sortParam: {
1107
+ rule: "optional",
1108
+ validator: globals_verifier.Validator.schema().string().oneOf(["order", "name", "createdAt", "updatedAt"]),
1109
+ default: "order"
1110
+ },
1111
+ sortOrder: {
1112
+ rule: "optional",
1113
+ validator: globals_verifier.Validator.schema().string().oneOf(["asc", "desc"]),
1114
+ default: "asc"
1115
+ },
1116
+ skip: { rule: "optional", validator: globals_verifier.Validator.schema().number().integer().min(0), default: 0 },
1117
+ limit: {
1118
+ rule: "optional",
1119
+ validator: globals_verifier.Validator.schema().number().integer().min(1).max(100),
1120
+ default: 10
1121
+ },
1122
+ excludeChildren: {
1123
+ rule: "optional",
1124
+ validator: globals_verifier.Validator.schema().string().oneOf(["true", "false"]),
1125
+ default: "true"
1126
+ },
1127
+ rootOnly: {
1128
+ rule: "optional",
1129
+ validator: globals_verifier.Validator.schema().string().oneOf(["true", "false"]),
1130
+ default: "false"
1131
+ },
1132
+ status: {
1133
+ rule: "optional",
1134
+ validator: globals_verifier.Validator.schema().string().oneOf(["draft", "internal", "published", "removed"])
1135
+ },
1136
+ type: {
1137
+ rule: "optional",
1138
+ validator: globals_verifier.Validator.schema().string().oneOf(["platform", "organization", "all"]),
1139
+ default: "all"
1140
+ },
1141
+ organizationId: { rule: "optional", validator: globals_verifier.Validator.schema().string() }
1142
+ };
1143
+ const bodyValidatorConfig = {
1144
+ _id: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1145
+ name: { rule: "optional", validator: globals_verifier.Validator.schema().string().required() },
1146
+ description: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1147
+ photo: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1148
+ status: {
1149
+ rule: "optional",
1150
+ validator: globals_verifier.Validator.schema().string().oneOf(["draft", "internal", "published", "removed"]),
1151
+ default: "draft"
1152
+ },
1153
+ url: { rule: "optional", validator: globals_verifier.Validator.schema().string().required() },
1154
+ parent: { rule: "optional", validator: globals_verifier.Validator.schema().oneOfTypes(["string", "null"]) },
1155
+ localization: { rule: "optional" },
1156
+ filters: { rule: "optional" },
1157
+ owner: {
1158
+ rule: "optional",
1159
+ validator: globals_verifier.Validator.schema().object({
1160
+ type: globals_verifier.Validator.schema().string().oneOf(["platform", "organization"]).required(),
1161
+ target: globals_verifier.Validator.schema().string()
1162
+ })
1163
+ },
1164
+ creator: {
1165
+ rule: "optional",
1166
+ validator: globals_verifier.Validator.schema().object({
1167
+ type: globals_verifier.Validator.schema().string().oneOf(["user", "organization"]).required(),
1168
+ target: globals_verifier.Validator.schema().string()
1169
+ })
1170
+ },
1171
+ children: { rule: "optional", validator: globals_verifier.Validator.schema().array() },
1172
+ order: { rule: "optional", validator: globals_verifier.Validator.schema().number() }
1173
+ };
1174
+ const orderBodyValidatorConfig = {
1175
+ categories: {
1176
+ rule: "optional",
1177
+ validator: globals_verifier.Validator.schema().array().required(),
1178
+ default: []
1179
+ }
1180
+ };
1181
+ const deleteBodyValidatorConfig = {
1182
+ url: {
1183
+ rule: "optional",
1184
+ validator: globals_verifier.Validator.schema().string().required()
1185
+ }
1186
+ };
1187
+ const queryVerifier = new globals_verifier.Verifier(queryValidatorConfig);
1188
+ const bodyVerifier = new globals_verifier.Verifier(bodyValidatorConfig);
1189
+ const orderBodyVerifier = new globals_verifier.Verifier(orderBodyValidatorConfig);
1190
+ const deleteBodyVerifier = new globals_verifier.Verifier(deleteBodyValidatorConfig);
1191
+ return {
1192
+ // Верификация параметров запроса
1193
+ verifyQuery(req, res, next) {
1194
+ const verification = queryVerifier.verify(req.query);
1195
+ console.log("verification is", verification);
1196
+ if (!verification.isValid) {
1197
+ return res.status(400).json({
1198
+ errors: verification.verificationErrors,
1199
+ message: "Invalid query parameters"
1200
+ });
1201
+ }
1202
+ req.verifiedQuery = verification.verifiedData;
1203
+ next();
1204
+ },
1205
+ // Верификация тела запроса для создания/обновления категории
1206
+ verifyBody(req, res, next) {
1207
+ const verification = bodyVerifier.verify(req.body);
1208
+ if (!verification.isValid) {
1209
+ return res.status(400).json({
1210
+ errors: verification.verificationErrors,
1211
+ message: "Invalid request data"
1212
+ });
1213
+ }
1214
+ req.verifiedBody = verification.verifiedData;
1215
+ next();
1216
+ },
1217
+ // Верификация тела запроса для обновления порядка категорий
1218
+ verifyOrderBody(req, res, next) {
1219
+ const verification = orderBodyVerifier.verify(req.body);
1220
+ if (!verification.isValid) {
1221
+ return res.status(400).json({
1222
+ errors: verification.verificationErrors,
1223
+ message: "Invalid request data"
1224
+ });
1225
+ }
1226
+ req.verifiedBody = verification.verifiedData;
1227
+ next();
1228
+ },
1229
+ // Верификация тела запроса для удаления категории
1230
+ verifyDeleteBody(req, res, next) {
1231
+ const verification = deleteBodyVerifier.verify(req.body);
1232
+ if (!verification.isValid) {
1233
+ return res.status(400).json({
1234
+ errors: verification.verificationErrors,
1235
+ message: "Invalid request data"
1236
+ });
1237
+ }
1238
+ req.verifiedBody = verification.verifiedData;
1239
+ next();
1240
+ },
1241
+ // Проверка на существование категории с тем же URL (для создания)
1242
+ async checkCategoryExistOrNot(req, res, next) {
1243
+ try {
1244
+ if (!req.verifiedBody.url) {
1245
+ return res.status(400).json({ message: "URL is required" });
1246
+ }
1247
+ const existingCategory = await db.category.findOne({ url: req.verifiedBody.url });
1248
+ if (existingCategory) {
1249
+ return res.status(409).json({
1250
+ message: "Category with this URL already exists",
1251
+ category: existingCategory
1252
+ });
1253
+ }
1254
+ next();
1255
+ } catch (error) {
1256
+ res.status(500).json({ message: error.message });
1257
+ }
1258
+ },
1259
+ // Загрузка категории для проверки ABAC (для обновления и удаления)
1260
+ async loadCategoryForUpdate(req, res, next) {
1261
+ try {
1262
+ const categoryId = req.verifiedBody._id;
1263
+ if (!categoryId) {
1264
+ return res.status(400).json({ message: "Category ID is required" });
1265
+ }
1266
+ const category = await db.category.findById(categoryId).lean();
1267
+ if (!category) {
1268
+ return res.status(404).json({ message: "Category not found" });
1269
+ }
1270
+ req.currentResource = category;
1271
+ next();
1272
+ } catch (error) {
1273
+ res.status(500).json({ message: error.message });
1274
+ }
1275
+ },
1276
+ // Загрузка категории по URL для удаления
1277
+ async loadCategoryForDelete(req, res, next) {
1278
+ try {
1279
+ const url = req.verifiedBody.url;
1280
+ if (!url) {
1281
+ return res.status(400).json({ message: "Category URL is required" });
1282
+ }
1283
+ const category = await db.category.findOne({ url }).lean();
1284
+ if (!category) {
1285
+ return res.status(404).json({ message: "Category not found" });
1286
+ }
1287
+ req.currentResource = category;
1288
+ next();
1289
+ } catch (error) {
1290
+ res.status(500).json({ message: error.message });
1291
+ }
1292
+ }
1293
+ };
1294
+ };
1295
+ const { getInstance: getInstance$1 } = globals_abac.globalsabac;
1296
+ const categoriesRoutes = function(app, db) {
1297
+ const jwt = authJwt.middlewareFactory(db);
1298
+ const verifier = verifierFactory$1(db);
1299
+ const abac2 = getInstance$1(db);
1300
+ const controller = controllerFactory$2(db);
1301
+ app.get("/api/categories", jwt.verifyToken(true), verifier.verifyQuery, controller.read);
1302
+ app.post("/api/categories/create", jwt.verifyToken(), verifier.verifyBody, verifier.checkCategoryExistOrNot, abac2.middleware("category", "create"), controller.create);
1303
+ app.post("/api/categories/update", jwt.verifyToken(), verifier.verifyBody, verifier.loadCategoryForUpdate, abac2.middleware("category", "edit"), controller.update);
1304
+ app.post("/api/categories/updateOrder", jwt.verifyToken(), verifier.verifyOrderBody, abac2.middleware("category", "edit"), controller.updateOrder);
1305
+ app.post("/api/categories/delete", jwt.verifyToken(), verifier.verifyDeleteBody, verifier.loadCategoryForDelete, abac2.middleware("category", "delete"), controller.delete);
1306
+ };
1307
+ const leftoversRoutes = function(app, db) {
1308
+ const controller = controllerFactory$1(db);
1309
+ app.get("/leftovers", controller.read);
1310
+ app.get("/leftovers/:_id", controller.get);
1311
+ app.post("/leftovers/:_id", controller.update);
1312
+ app.post("/leftovers", controller.create);
1313
+ app.delete("/leftovers/:_id", controller.delete);
1314
+ };
1315
+ const productsRoutes = function(app, db, allowedOrigins) {
1316
+ const controller = controllerFactory(db);
1317
+ app.post("/api/products/create", controller.Create);
1318
+ app.get("/api/products/read", controller.Read);
1319
+ app.post("/api/products/:_id", controller.Update);
1320
+ app.delete("/api/products/:_id", controller.Delete);
1321
+ app.post("/api/product/recommended", controller.getProductRecommendation);
1322
+ };
1323
+ class CRUDCore {
1324
+ constructor(crud) {
1325
+ this.crud = crud;
1326
+ this.verifiers = {};
1327
+ this.hooks = {};
1328
+ this.aggregateExtensions = {};
1329
+ this.cacheOptions = {
1330
+ ttl: 300,
1331
+ // 5 минут по умолчанию
1332
+ tags: [crud.modelName],
1333
+ enabled: true
1334
+ };
1335
+ this.auth = {
1336
+ read: false,
1337
+ // Публичный доступ к чтению
1338
+ create: true,
1339
+ // Требует авторизацию
1340
+ update: true,
1341
+ // Требует авторизацию
1342
+ delete: true
1343
+ // Требует авторизацию
1344
+ };
1345
+ this.options = {
1346
+ enableEvents: true,
1347
+ enableAudit: false,
1348
+ enableMetrics: false,
1349
+ strictMode: false,
1350
+ serviceKey: process.env.SERVICE_KEY
1351
+ };
1352
+ }
1353
+ // Инициализация с опциями
1354
+ init(options = {}) {
1355
+ if (options.auth !== void 0) {
1356
+ if (options.auth === false) {
1357
+ this.auth = false;
1358
+ } else if (options.auth === true) {
1359
+ this.auth = {
1360
+ read: false,
1361
+ create: true,
1362
+ update: true,
1363
+ delete: true
1364
+ };
1365
+ } else if (typeof options.auth === "object") {
1366
+ this.auth = {
1367
+ read: false,
1368
+ create: true,
1369
+ update: true,
1370
+ delete: true,
1371
+ ...options.auth
1372
+ };
1373
+ }
1374
+ }
1375
+ if (options.cache !== void 0) {
1376
+ if (options.cache === false) {
1377
+ this.cacheOptions.enabled = false;
1378
+ } else if (typeof options.cache === "object") {
1379
+ this.setCacheOptions(options.cache);
1380
+ }
1381
+ }
1382
+ if (options.events !== void 0) {
1383
+ if (options.events === false) {
1384
+ this.options.enableEvents = false;
1385
+ } else if (typeof options.events === "object") {
1386
+ Object.assign(this.options, options.events);
1387
+ }
1388
+ }
1389
+ if (options.verifiers) this.initVerifiers(options.verifiers);
1390
+ if (options.hooks) this.initHooks(options.hooks);
1391
+ if (options.middlewares) this.initMiddlewares(options.middlewares);
1392
+ if (options.aggregateExtensions) this.initAggregateExtensions(options.aggregateExtensions);
1393
+ if (options.abac) this.initABAC(options.abac, options.policies, options.fieldsPolicies);
1394
+ if (options.serviceKey !== void 0) {
1395
+ this.options.serviceKey = options.serviceKey;
1396
+ }
1397
+ this.crud.events.init(this.options);
1398
+ if (options.abac) {
1399
+ this.crud.policies.init(options.abac, options.policies, options.fieldsPolicies);
1400
+ }
1401
+ }
1402
+ // Управление auth
1403
+ setAuth(action, required) {
1404
+ if (this.auth === false) {
1405
+ this.auth = {};
1406
+ }
1407
+ this.auth[action] = required;
1408
+ }
1409
+ getAuth(action) {
1410
+ if (this.auth === false) return false;
1411
+ return this.auth[action] ?? true;
1412
+ }
1413
+ isAuthEnabled() {
1414
+ return this.auth !== false;
1415
+ }
1416
+ // Управление верификаторами
1417
+ setVerifier(action, verifier) {
1418
+ this.verifiers[action] = verifier;
1419
+ }
1420
+ getVerifier(action) {
1421
+ return this.verifiers[action];
1422
+ }
1423
+ initVerifiers(verifiers) {
1424
+ Object.entries(verifiers).forEach(([action, verifier]) => {
1425
+ this.setVerifier(action, verifier);
1426
+ });
1427
+ }
1428
+ // Управление хуками
1429
+ addHook(name, handler) {
1430
+ this.hooks[name] = handler;
1431
+ }
1432
+ getHook(name) {
1433
+ return this.hooks[name];
1434
+ }
1435
+ async executeHook(name, ...args) {
1436
+ const hook = this.getHook(name);
1437
+ if (hook) {
1438
+ return await hook(...args);
1439
+ }
1440
+ }
1441
+ initHooks(hooks) {
1442
+ Object.entries(hooks).forEach(([name, handler]) => {
1443
+ this.addHook(name, handler);
1444
+ });
1445
+ }
1446
+ // Управление расширениями агрегации
1447
+ addAggregateExtension(phase, extension) {
1448
+ this.aggregateExtensions[phase] = extension;
1449
+ }
1450
+ getAggregateExtensions() {
1451
+ return this.aggregateExtensions;
1452
+ }
1453
+ initAggregateExtensions(extensions) {
1454
+ Object.entries(extensions).forEach(([phase, extension]) => {
1455
+ this.addAggregateExtension(phase, extension);
1456
+ });
1457
+ }
1458
+ // Управление middleware (делегирует в controller)
1459
+ initMiddlewares(middlewares) {
1460
+ Object.entries(middlewares).forEach(([phase, actions]) => {
1461
+ if (typeof actions === "object") {
1462
+ Object.entries(actions).forEach(([action, mws]) => {
1463
+ const middlewareArray = Array.isArray(mws) ? mws : [mws];
1464
+ middlewareArray.forEach((mw) => {
1465
+ this.crud.controller.addMiddleware(phase, action, mw);
1466
+ });
1467
+ });
1468
+ }
1469
+ });
1470
+ }
1471
+ // Управление ABAC (делегирует в policies)
1472
+ initABAC(abac2, policies = {}, fieldsPolicies = null) {
1473
+ if (fieldsPolicies && typeof fieldsPolicies === "function" && abac2) {
1474
+ abac2.registerFieldsPolicy(this.crud.modelName, fieldsPolicies);
1475
+ }
1476
+ }
1477
+ // Управление кешем
1478
+ getCacheOptions() {
1479
+ return { ...this.cacheOptions };
1480
+ }
1481
+ setCacheOptions(options) {
1482
+ Object.assign(this.cacheOptions, options);
1483
+ if (!this.cacheOptions.tags.includes(this.crud.modelName)) {
1484
+ this.cacheOptions.tags.unshift(this.crud.modelName);
1485
+ }
1486
+ }
1487
+ // Получение опций
1488
+ getOptions() {
1489
+ return { ...this.options };
1490
+ }
1491
+ setOption(key, value) {
1492
+ this.options[key] = value;
1493
+ }
1494
+ // Проверка включенности функций
1495
+ isEventsEnabled() {
1496
+ return this.options.enableEvents;
1497
+ }
1498
+ isCacheEnabled() {
1499
+ return this.cacheOptions.enabled && this.crud.cache !== null;
1500
+ }
1501
+ isAuditEnabled() {
1502
+ return this.options.enableAudit;
1503
+ }
1504
+ isMetricsEnabled() {
1505
+ return this.options.enableMetrics;
1506
+ }
1507
+ }
1508
+ class CRUDController {
1509
+ constructor(crud) {
1510
+ this.crud = crud;
1511
+ this.routes = /* @__PURE__ */ new Map();
1512
+ this.middlewares = {
1513
+ before: {},
1514
+ after: {}
1515
+ };
1516
+ this.jwt = authJwt.middlewareFactory(crud.db);
1517
+ }
1518
+ // Добавление middleware
1519
+ addMiddleware(phase, action, middleware) {
1520
+ if (!["before", "after"].includes(phase)) {
1521
+ throw new Error(`Invalid middleware phase: ${phase}`);
1522
+ }
1523
+ if (!this.middlewares[phase][action]) {
1524
+ this.middlewares[phase][action] = [];
1525
+ }
1526
+ this.middlewares[phase][action].push(middleware);
1527
+ }
1528
+ // Получение middleware для действия
1529
+ getMiddlewares(phase, action) {
1530
+ return this.middlewares[phase][action] || [];
1531
+ }
1532
+ // Регистрация роута
1533
+ registerRoute(method, path, actionName) {
1534
+ const fullPath = `${this.crud.basePath}${path}`;
1535
+ const middlewareStack = [];
1536
+ if (this.crud.core.isAuthEnabled()) {
1537
+ const authRequired = this.crud.core.getAuth(actionName);
1538
+ middlewareStack.push(this.jwt.verifyToken(!authRequired));
1539
+ }
1540
+ const verifierMiddleware = this._createVerifierMiddleware(method, actionName);
1541
+ if (verifierMiddleware) {
1542
+ middlewareStack.push(verifierMiddleware);
1543
+ }
1544
+ middlewareStack.push(...this.getMiddlewares("before", actionName));
1545
+ const abacMiddleware = this.crud.policies.getPoliciesMiddleware(actionName);
1546
+ if (abacMiddleware) {
1547
+ middlewareStack.push(abacMiddleware);
1548
+ }
1549
+ if (["create", "update"].includes(actionName)) {
1550
+ const fieldsMiddleware = this.crud.policies.getFieldsMiddleware(actionName);
1551
+ if (fieldsMiddleware) {
1552
+ middlewareStack.push(fieldsMiddleware);
1553
+ }
1554
+ }
1555
+ const handler = this._createHandler(actionName);
1556
+ const wrappedHandler = this._wrapHandler(handler, actionName);
1557
+ this.crud.app[method](fullPath, ...middlewareStack, wrappedHandler);
1558
+ this.routes.set(`${method.toUpperCase()} ${fullPath}`, {
1559
+ method,
1560
+ path: fullPath,
1561
+ actionName,
1562
+ middlewareStack
1563
+ });
1564
+ return this;
1565
+ }
1566
+ // Регистрация кастомного роута
1567
+ registerCustomRoute(method, path, actionName, handler) {
1568
+ this.crud.service.registerCustomHandler(actionName, handler);
1569
+ return this.registerRoute(method, path, actionName);
1570
+ }
1571
+ // Создание handler для стандартных CRUD операций
1572
+ _createHandler(actionName) {
1573
+ switch (actionName) {
1574
+ case "create":
1575
+ return async (req, res) => {
1576
+ try {
1577
+ const data = req.verified || req.body;
1578
+ const context = this._buildContext(req);
1579
+ const created = await this.crud.service.create(data, context);
1580
+ res.status(201).json(created);
1581
+ } catch (error) {
1582
+ this._handleError(error, res);
1583
+ }
1584
+ };
1585
+ case "read":
1586
+ return async (req, res) => {
1587
+ try {
1588
+ const query = req.verified || req.query;
1589
+ const context = this._buildContext(req);
1590
+ let data = await this.crud.service.read(query, context);
1591
+ if (this.crud.policies.hasAbac()) {
1592
+ data = await this.crud.policies.filterFieldsForRead(req, data);
1593
+ }
1594
+ res.json(data);
1595
+ } catch (error) {
1596
+ this._handleError(error, res);
1597
+ }
1598
+ };
1599
+ case "update":
1600
+ return async (req, res) => {
1601
+ try {
1602
+ const data = req.verified || req.body;
1603
+ const { _id, ...updateData } = data;
1604
+ if (!_id) {
1605
+ return res.status(400).json({ error: "ID_REQUIRED" });
1606
+ }
1607
+ const context = this._buildContext(req);
1608
+ const updated = await this.crud.service.update(_id, updateData, context);
1609
+ res.json(updated);
1610
+ } catch (error) {
1611
+ this._handleError(error, res);
1612
+ }
1613
+ };
1614
+ case "delete":
1615
+ return async (req, res) => {
1616
+ try {
1617
+ const data = req.verified || req.query || req.body;
1618
+ const { _id } = data;
1619
+ if (!_id) {
1620
+ return res.status(400).json({ error: "ID_REQUIRED" });
1621
+ }
1622
+ const context = this._buildContext(req);
1623
+ await this.crud.service.delete(_id, context);
1624
+ res.status(204).send();
1625
+ } catch (error) {
1626
+ this._handleError(error, res);
1627
+ }
1628
+ };
1629
+ default:
1630
+ return async (req, res) => {
1631
+ try {
1632
+ const customHandler = this.crud.service.getCustomHandler(actionName);
1633
+ if (!customHandler) {
1634
+ return res.status(404).json({ error: "ACTION_NOT_FOUND" });
1635
+ }
1636
+ await customHandler.call(this.crud, req, res);
1637
+ } catch (error) {
1638
+ this._handleError(error, res);
1639
+ }
1640
+ };
1641
+ }
1642
+ }
1643
+ // Создание контекста из request
1644
+ _buildContext(req) {
1645
+ return {
1646
+ userId: req.userId,
1647
+ user: req.user,
1648
+ organizationId: req.organizationId,
1649
+ roles: req.roles || [],
1650
+ permissions: req.permissions || [],
1651
+ abacContext: req.abacContext || {},
1652
+ ip: req.ip,
1653
+ userAgent: req.get("user-agent"),
1654
+ isServiceRequest: req.isServiceRequest || false,
1655
+ ...req.context
1656
+ // Дополнительный контекст
1657
+ };
1658
+ }
1659
+ // Обработка ошибок
1660
+ _handleError(error, res) {
1661
+ if (res.headersSent) return;
1662
+ const statusCode = error.statusCode || error.code === "NOT_FOUND" ? 404 : 500;
1663
+ const message = error.message || "Internal Server Error";
1664
+ res.status(statusCode).json({
1665
+ error: message,
1666
+ code: error.code
1667
+ });
1668
+ }
1669
+ // Создание middleware для верификации
1670
+ _createVerifierMiddleware(method, actionName) {
1671
+ const verifier = this.crud.core.getVerifier(actionName);
1672
+ if (!verifier) return null;
1673
+ const verifyTarget = this._getVerificationTarget(method, actionName);
1674
+ if (!verifyTarget) return null;
1675
+ return (req, res, next) => {
1676
+ const data = verifyTarget === "query" ? req.query : req.body;
1677
+ const result = verifier.verify ? verifier.verify(data) : verifier.validate(data);
1678
+ if (!result.isValid) {
1679
+ return res.status(400).json({
1680
+ error: "VALIDATION_ERROR",
1681
+ field: verifyTarget,
1682
+ errors: result.verificationErrors || result.errors
1683
+ });
1684
+ }
1685
+ console.log("verified result", result);
1686
+ req.verified = result.verifiedData || data;
1687
+ next();
1688
+ };
1689
+ }
1690
+ // Определение цели верификации
1691
+ _getVerificationTarget(method, actionName) {
1692
+ if (["create", "update"].includes(actionName)) {
1693
+ return "body";
1694
+ }
1695
+ if (["read", "delete"].includes(actionName)) {
1696
+ return "query";
1697
+ }
1698
+ if (["post", "put", "patch"].includes(method)) {
1699
+ return "body";
1700
+ }
1701
+ if (["get", "delete"].includes(method)) {
1702
+ return "query";
1703
+ }
1704
+ return null;
1705
+ }
1706
+ // Обертка handler для after middleware
1707
+ _wrapHandler(handler, actionName) {
1708
+ return async (req, res, next) => {
1709
+ try {
1710
+ await handler(req, res, next);
1711
+ if (!res.headersSent) {
1712
+ const afterMiddlewares = this.getMiddlewares("after", actionName);
1713
+ for (const mw of afterMiddlewares) {
1714
+ await new Promise((resolve, reject) => {
1715
+ mw(req, res, (err) => err ? reject(err) : resolve());
1716
+ });
1717
+ }
1718
+ }
1719
+ } catch (error) {
1720
+ next(error);
1721
+ }
1722
+ };
1723
+ }
1724
+ // Получение информации о роутах
1725
+ getRoutes() {
1726
+ return Array.from(this.routes.entries()).map(([key, value]) => ({
1727
+ key,
1728
+ ...value
1729
+ }));
1730
+ }
1731
+ // Удаление роута
1732
+ removeRoute(method, path) {
1733
+ const key = `${method.toUpperCase()} ${this.crud.basePath}${path}`;
1734
+ return this.routes.delete(key);
1735
+ }
1736
+ // Проверка существования роута
1737
+ hasRoute(method, path) {
1738
+ const key = `${method.toUpperCase()} ${this.crud.basePath}${path}`;
1739
+ return this.routes.has(key);
1740
+ }
1741
+ }
1742
+ class CRUDService {
1743
+ constructor(crud) {
1744
+ this.crud = crud;
1745
+ this.customHandlers = /* @__PURE__ */ new Map();
1746
+ }
1747
+ // Регистрация кастомного handler
1748
+ registerCustomHandler(name, handler) {
1749
+ this.customHandlers.set(name, handler);
1750
+ }
1751
+ // CREATE операция
1752
+ async create(data, context = {}) {
1753
+ try {
1754
+ const hookData = await this.crud.core.executeHook("beforeCreate", data, context);
1755
+ const finalData = hookData || data;
1756
+ const created = await this.crud.model.create(finalData);
1757
+ if (this.crud.core.isCacheEnabled()) {
1758
+ await this.invalidateCache("create", created);
1759
+ }
1760
+ if (this.crud.core.isEventsEnabled()) {
1761
+ await this.crud.events.emit("created", {
1762
+ document: created,
1763
+ user: context.userId
1764
+ });
1765
+ }
1766
+ await this.crud.core.executeHook("afterCreate", created, context);
1767
+ return created;
1768
+ } catch (error) {
1769
+ console.log(error);
1770
+ await this.crud.events.logError("create", error);
1771
+ throw error;
1772
+ }
1773
+ }
1774
+ // READ операция
1775
+ async read(query = {}, context = {}) {
1776
+ try {
1777
+ await this.crud.core.executeHook("beforeRead", query, context);
1778
+ let data = null;
1779
+ let cacheKey = null;
1780
+ if (this.crud.core.isCacheEnabled()) {
1781
+ cacheKey = this.generateCacheKey("read", query);
1782
+ data = await this.crud.cache.get(cacheKey);
1783
+ }
1784
+ if (!data) {
1785
+ const pipeline = await this.buildAggregationPipeline(query, context);
1786
+ data = await this.crud.model.aggregate(pipeline).exec();
1787
+ if (this.crud.core.isCacheEnabled() && cacheKey) {
1788
+ const cacheOptions = this.crud.core.getCacheOptions();
1789
+ await this.crud.cache.setWithTags(
1790
+ cacheKey,
1791
+ data,
1792
+ [...cacheOptions.tags, `${this.crud.modelName}_list`],
1793
+ cacheOptions.ttl
1794
+ );
1795
+ }
1796
+ }
1797
+ if (this.crud.core.isEventsEnabled()) {
1798
+ await this.crud.events.emitRead(query, data, context.userId);
1799
+ }
1800
+ const hookResult = await this.crud.core.executeHook("afterRead", data, context);
1801
+ return hookResult || data;
1802
+ } catch (error) {
1803
+ console.log(error);
1804
+ await this.crud.events.logError("read", error);
1805
+ throw error;
1806
+ }
1807
+ }
1808
+ // UPDATE операция
1809
+ async update(id, updateData, context = {}) {
1810
+ try {
1811
+ const current = await this.crud.model.findById(id);
1812
+ if (!current) {
1813
+ const error = new Error("NOT_FOUND");
1814
+ error.code = "NOT_FOUND";
1815
+ error.statusCode = 404;
1816
+ throw error;
1817
+ }
1818
+ const hookData = await this.crud.core.executeHook("beforeUpdate", updateData, context, current);
1819
+ const finalData = hookData || updateData;
1820
+ const updated = await this.crud.model.findByIdAndUpdate(
1821
+ id,
1822
+ finalData,
1823
+ { new: true, runValidators: true }
1824
+ );
1825
+ if (this.crud.core.isCacheEnabled()) {
1826
+ await this.invalidateCache("update", updated);
1827
+ }
1828
+ if (this.crud.core.isEventsEnabled()) {
1829
+ await this.crud.events.emit("updated", {
1830
+ document: updated,
1831
+ previousDocument: current,
1832
+ user: context.userId
1833
+ });
1834
+ }
1835
+ await this.crud.core.executeHook("afterUpdate", updated, context, current);
1836
+ return updated;
1837
+ } catch (error) {
1838
+ await this.crud.events.logError("update", error);
1839
+ throw error;
1840
+ }
1841
+ }
1842
+ // DELETE операция
1843
+ async delete(id, context = {}) {
1844
+ try {
1845
+ const document = await this.crud.model.findById(id);
1846
+ if (!document) {
1847
+ const error = new Error("NOT_FOUND");
1848
+ error.code = "NOT_FOUND";
1849
+ error.statusCode = 404;
1850
+ throw error;
1851
+ }
1852
+ await this.crud.core.executeHook("beforeDelete", document, context);
1853
+ await this.crud.model.findByIdAndDelete(id);
1854
+ if (this.crud.core.isCacheEnabled()) {
1855
+ await this.invalidateCache("delete", document);
1856
+ }
1857
+ if (this.crud.core.isEventsEnabled()) {
1858
+ await this.crud.events.emit("deleted", {
1859
+ document,
1860
+ user: context.userId
1861
+ });
1862
+ }
1863
+ await this.crud.core.executeHook("afterDelete", document, context);
1864
+ return document;
1865
+ } catch (error) {
1866
+ await this.crud.events.logError("delete", error);
1867
+ throw error;
1868
+ }
1869
+ }
1870
+ // Получение кастомного handler
1871
+ getCustomHandler(name) {
1872
+ return this.customHandlers.get(name);
1873
+ }
1874
+ // Построение aggregation pipeline
1875
+ async buildAggregationPipeline(query, context) {
1876
+ const stages = [];
1877
+ const extensions = this.crud.core.getAggregateExtensions();
1878
+ if (extensions.before) {
1879
+ stages.push(...await extensions.before(query, context));
1880
+ }
1881
+ stages.push(...queryProcessor.queryProcessorGlobals.getBasicOptions(query));
1882
+ if (extensions.middle) {
1883
+ stages.push(...await extensions.middle(query, context));
1884
+ }
1885
+ stages.push(
1886
+ queryProcessor.queryProcessorGlobals.getCreatorUserLookupStage(),
1887
+ queryProcessor.queryProcessorGlobals.getCreatorOrganizationLookupStage(),
1888
+ queryProcessor.queryProcessorGlobals.getOwnerUserLookupStage(),
1889
+ queryProcessor.queryProcessorGlobals.getOwnerOrganizationLookupStage(),
1890
+ queryProcessor.queryProcessorGlobals.getAddFieldsCreatorOwnerStage()
1891
+ );
1892
+ if (extensions.beforePagination) {
1893
+ stages.push(...await extensions.beforePagination(query, context));
1894
+ }
1895
+ stages.push(
1896
+ ...queryProcessor.queryProcessorGlobals.getSortingOptions(query.sortParam, query.sortOrder),
1897
+ ...queryProcessor.queryProcessorGlobals.getPaginationOptions(query.skip, query.limit),
1898
+ queryProcessor.queryProcessorGlobals.removeTempPropeties()
1899
+ );
1900
+ if (extensions.after) {
1901
+ stages.push(...await extensions.after(query, context));
1902
+ }
1903
+ return stages;
1904
+ }
1905
+ // Управление кешем
1906
+ generateCacheKey(operation, data) {
1907
+ const prefix = `${this.crud.modelName}:${operation}`;
1908
+ if (operation === "read") {
1909
+ return `${prefix}:${JSON.stringify(this._normalizeQuery(data))}`;
1910
+ }
1911
+ return `${prefix}:${Date.now()}`;
1912
+ }
1913
+ _normalizeQuery(query) {
1914
+ const normalized = {};
1915
+ const keys = Object.keys(query).sort();
1916
+ for (const key of keys) {
1917
+ if (query[key] !== void 0 && query[key] !== null && query[key] !== "") {
1918
+ normalized[key] = query[key];
1919
+ }
1920
+ }
1921
+ return normalized;
1922
+ }
1923
+ async invalidateCache(operation, document) {
1924
+ const cacheOptions = this.crud.core.getCacheOptions();
1925
+ const tags = [...cacheOptions.tags];
1926
+ if (["create", "update", "delete"].includes(operation)) {
1927
+ tags.push(`${this.crud.modelName}_list`);
1928
+ if (document && document._id) {
1929
+ tags.push(`${this.crud.modelName}_${document._id}`);
1930
+ }
1931
+ }
1932
+ for (const tag of tags) {
1933
+ await this.crud.cache.delByTags([tag]);
1934
+ }
1935
+ }
1936
+ }
1937
+ class CRUDPolicies {
1938
+ constructor(crud) {
1939
+ this.crud = crud;
1940
+ this.abac = null;
1941
+ this.policyOptions = {};
1942
+ this.defaultPolicies = {};
1943
+ }
1944
+ // Инициализация с ABAC
1945
+ init(abac2, policies = {}, fieldPolicies = null) {
1946
+ this.abac = abac2;
1947
+ this.defaultPolicies = policies;
1948
+ }
1949
+ // Установка опций для конкретного действия
1950
+ setOptions(action, options) {
1951
+ this.policyOptions[action] = {
1952
+ enabled: options.enabled !== false,
1953
+ policies: options.policies || [],
1954
+ customPolicies: options.customPolicies || {},
1955
+ skipDefaultPolicies: options.skipDefaultPolicies || false,
1956
+ ...options
1957
+ };
1958
+ }
1959
+ // Получение опций для действия
1960
+ getOptions(action) {
1961
+ return this.policyOptions[action] || this.defaultPolicies[action] || {};
1962
+ }
1963
+ // Получение ABAC middleware для действия
1964
+ getPoliciesMiddleware(action) {
1965
+ if (!this.abac) return null;
1966
+ const options = this.getOptions(action);
1967
+ if (options.enabled === false) {
1968
+ return null;
1969
+ }
1970
+ if (options.policies && options.policies.length > 0) {
1971
+ return this.abac.policyMiddleware(
1972
+ options.policies,
1973
+ options.customPolicies || {},
1974
+ {
1975
+ resource: this.crud.modelName,
1976
+ action,
1977
+ skipDefaultPolicies: options.skipDefaultPolicies
1978
+ }
1979
+ );
1980
+ }
1981
+ return this.abac.middleware(this.crud.modelName, action, options);
1982
+ }
1983
+ // Получение middleware для проверки доступа к полям
1984
+ getFieldsMiddleware(action) {
1985
+ if (!this.abac) return null;
1986
+ return async (req, res, next) => {
1987
+ try {
1988
+ const data = req.verified || req.body;
1989
+ const context = {
1990
+ user: req.userId,
1991
+ resource: this.crud.modelName,
1992
+ action,
1993
+ req,
1994
+ data: {
1995
+ ...req.body,
1996
+ ...req.query,
1997
+ params: req.params
1998
+ },
1999
+ params: req.params
2000
+ };
2001
+ if (req.skipFieldPolicies) {
2002
+ console.log("Skipping field policies for admin/moderator");
2003
+ req.verified = data;
2004
+ return next();
2005
+ }
2006
+ if (action === "update" && data._id) {
2007
+ try {
2008
+ const current = await this.crud.model.findById(data._id);
2009
+ if (current) {
2010
+ context.currentResource = current;
2011
+ }
2012
+ } catch (err) {
2013
+ }
2014
+ }
2015
+ const fieldsResult = await this.abac.checkFields(
2016
+ context,
2017
+ data,
2018
+ action
2019
+ );
2020
+ if (fieldsResult.denied && fieldsResult.denied.length > 0) {
2021
+ return res.status(403).json({
2022
+ error: "FIELD_ACCESS_DENIED",
2023
+ deniedFields: fieldsResult.denied.map((d) => d.path)
2024
+ });
2025
+ }
2026
+ if (fieldsResult.errors && fieldsResult.errors.length > 0) {
2027
+ return res.status(400).json({
2028
+ error: "FIELD_VALIDATION_ERROR",
2029
+ fields: fieldsResult.errors
2030
+ });
2031
+ }
2032
+ req.verified = fieldsResult.transformed || fieldsResult.allowed;
2033
+ next();
2034
+ } catch (error) {
2035
+ next(error);
2036
+ }
2037
+ };
2038
+ }
2039
+ // Фильтрация полей для чтения (вызывается из controller после получения данных)
2040
+ async filterFieldsForRead(req, data) {
2041
+ if (!this.abac) {
2042
+ return data;
2043
+ }
2044
+ const context = {
2045
+ user: req.userId,
2046
+ resource: this.crud.modelName,
2047
+ action: "read",
2048
+ req,
2049
+ data: {
2050
+ ...req.query,
2051
+ params: req.params
2052
+ },
2053
+ params: req.params
2054
+ };
2055
+ if (Array.isArray(data)) {
2056
+ const results = [];
2057
+ for (const doc of data) {
2058
+ const fieldsResult2 = await this.abac.checkFields(
2059
+ { ...context, currentResource: doc },
2060
+ doc,
2061
+ "read"
2062
+ );
2063
+ results.push(fieldsResult2.transformed || fieldsResult2.allowed);
2064
+ }
2065
+ return results;
2066
+ }
2067
+ const fieldsResult = await this.abac.checkFields(
2068
+ { ...context, currentResource: data },
2069
+ data,
2070
+ "read"
2071
+ );
2072
+ return fieldsResult.transformed || fieldsResult.allowed;
2073
+ }
2074
+ // Добавление кастомной политики
2075
+ addPolicy(action, policyName, policyFn = null) {
2076
+ if (!this.policyOptions[action]) {
2077
+ this.policyOptions[action] = {
2078
+ enabled: true,
2079
+ policies: [],
2080
+ customPolicies: {}
2081
+ };
2082
+ }
2083
+ if (policyFn) {
2084
+ this.policyOptions[action].customPolicies[policyName] = policyFn;
2085
+ }
2086
+ if (!this.policyOptions[action].policies.includes(policyName)) {
2087
+ this.policyOptions[action].policies.push(policyName);
2088
+ }
2089
+ }
2090
+ // Удаление политики
2091
+ removePolicy(action, policyName) {
2092
+ if (!this.policyOptions[action]) return;
2093
+ const policies = this.policyOptions[action].policies;
2094
+ const index = policies.indexOf(policyName);
2095
+ if (index > -1) {
2096
+ policies.splice(index, 1);
2097
+ }
2098
+ delete this.policyOptions[action].customPolicies[policyName];
2099
+ }
2100
+ // Проверка наличия ABAC
2101
+ hasAbac() {
2102
+ return !!this.abac;
2103
+ }
2104
+ // Получение всех политик для действия
2105
+ getPolicies(action) {
2106
+ const options = this.getOptions(action);
2107
+ return {
2108
+ enabled: options.enabled !== false,
2109
+ policies: options.policies || [],
2110
+ customPolicies: options.customPolicies || {},
2111
+ defaultPolicies: this.defaultPolicies[action] || {}
2112
+ };
2113
+ }
2114
+ // Временное отключение ABAC для действия
2115
+ disableForAction(action) {
2116
+ if (!this.policyOptions[action]) {
2117
+ this.policyOptions[action] = {};
2118
+ }
2119
+ this.policyOptions[action].enabled = false;
2120
+ }
2121
+ // Включение ABAC для действия
2122
+ enableForAction(action) {
2123
+ if (!this.policyOptions[action]) {
2124
+ this.policyOptions[action] = {};
2125
+ }
2126
+ this.policyOptions[action].enabled = true;
2127
+ }
2128
+ // Установка политик по умолчанию для всех действий
2129
+ setDefaultPolicies(policies) {
2130
+ ["create", "read", "update", "delete"].forEach((action) => {
2131
+ if (!this.policyOptions[action]) {
2132
+ this.policyOptions[action] = {};
2133
+ }
2134
+ this.policyOptions[action].policies = [...policies];
2135
+ });
2136
+ }
2137
+ }
2138
+ class CRUDEvents {
2139
+ constructor(crud) {
2140
+ this.crud = crud;
2141
+ this.observer = null;
2142
+ this.logger = null;
2143
+ this.enabled = false;
2144
+ this.options = {};
2145
+ }
2146
+ init(options = {}) {
2147
+ this.enabled = options.enabled !== false;
2148
+ this.options = options;
2149
+ if (this.enabled) {
2150
+ this.observer = options.observer || new globals_observer.Observer();
2151
+ this.logger = options.logger || new globals_logger.Logger(this.crud.db);
2152
+ }
2153
+ }
2154
+ // Отправка события
2155
+ async emit(eventName, data) {
2156
+ if (!this.enabled || !this.observer) return;
2157
+ const fullEventName = `${this.crud.modelName}:${eventName}`;
2158
+ try {
2159
+ await this.observer.notify(fullEventName, {
2160
+ ...data,
2161
+ timestamp: /* @__PURE__ */ new Date(),
2162
+ model: this.crud.modelName
2163
+ });
2164
+ await this.log("info", `Event emitted: ${fullEventName}`, data);
2165
+ } catch (error) {
2166
+ console.error(`Error emitting event ${fullEventName}:`, error);
2167
+ }
2168
+ }
2169
+ // Подписка на событие
2170
+ subscribe(eventName, handler) {
2171
+ if (!this.observer) return null;
2172
+ const fullEventName = `${this.crud.modelName}:${eventName}`;
2173
+ return this.observer.subscribe(fullEventName, handler);
2174
+ }
2175
+ // Отписка от события
2176
+ unsubscribe(eventName, handler) {
2177
+ if (!this.observer) return;
2178
+ const fullEventName = `${this.crud.modelName}:${eventName}`;
2179
+ this.observer.unsubscribe(fullEventName, handler);
2180
+ }
2181
+ // Логирование
2182
+ async log(level, message, data = {}) {
2183
+ if (!this.enabled || !this.logger) return;
2184
+ try {
2185
+ const logData = {
2186
+ model: this.crud.modelName,
2187
+ ...data
2188
+ };
2189
+ switch (level) {
2190
+ case "info":
2191
+ await this.logger.info(message, logData);
2192
+ break;
2193
+ case "warning":
2194
+ await this.logger.warning(message, logData);
2195
+ break;
2196
+ case "error":
2197
+ await this.logger.error(message, logData);
2198
+ break;
2199
+ default:
2200
+ await this.logger.info(message, logData);
2201
+ }
2202
+ } catch (error) {
2203
+ console.error("Logging error:", error);
2204
+ }
2205
+ }
2206
+ // Логирование ошибок
2207
+ async logError(operation, error) {
2208
+ await this.log("error", `Error in ${operation} operation`, {
2209
+ operation,
2210
+ error: error.message,
2211
+ stack: error.stack
2212
+ });
2213
+ }
2214
+ // Специализированные методы событий
2215
+ async emitCreate(document, userId) {
2216
+ await this.emit("created", {
2217
+ document,
2218
+ user: userId,
2219
+ action: "create"
2220
+ });
2221
+ }
2222
+ async emitUpdate(document, previousDocument, userId) {
2223
+ await this.emit("updated", {
2224
+ document,
2225
+ previousDocument,
2226
+ user: userId,
2227
+ action: "update",
2228
+ changes: this._getChanges(previousDocument, document)
2229
+ });
2230
+ }
2231
+ async emitDelete(document, userId) {
2232
+ await this.emit("deleted", {
2233
+ document,
2234
+ user: userId,
2235
+ action: "delete"
2236
+ });
2237
+ }
2238
+ async emitRead(query, results, userId) {
2239
+ if (this.options.logReads !== false) {
2240
+ await this.emit("read", {
2241
+ query,
2242
+ resultCount: Array.isArray(results) ? results.length : 1,
2243
+ user: userId,
2244
+ action: "read"
2245
+ });
2246
+ }
2247
+ }
2248
+ // Вспомогательные методы
2249
+ _getChanges(oldDoc, newDoc) {
2250
+ const changes = {};
2251
+ if (!oldDoc || !newDoc) return changes;
2252
+ for (const key in newDoc) {
2253
+ if (newDoc.hasOwnProperty(key)) {
2254
+ const oldVal = oldDoc[key];
2255
+ const newVal = newDoc[key];
2256
+ if (["_id", "__v", "updatedAt"].includes(key)) continue;
2257
+ if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {
2258
+ changes[key] = {
2259
+ old: oldVal,
2260
+ new: newVal
2261
+ };
2262
+ }
2263
+ }
2264
+ }
2265
+ return changes;
2266
+ }
2267
+ // Аудит действий
2268
+ async audit(action, data) {
2269
+ if (!this.options.enableAudit) return;
2270
+ const auditData = {
2271
+ action,
2272
+ model: this.crud.modelName,
2273
+ timestamp: /* @__PURE__ */ new Date(),
2274
+ ...data
2275
+ };
2276
+ await this.emit("audit", auditData);
2277
+ await this.log("info", `Audit: ${action}`, auditData);
2278
+ }
2279
+ // Метрики
2280
+ async recordMetric(metric, value = 1) {
2281
+ if (!this.options.enableMetrics) return;
2282
+ await this.emit("metric", {
2283
+ metric,
2284
+ value,
2285
+ model: this.crud.modelName,
2286
+ timestamp: /* @__PURE__ */ new Date()
2287
+ });
2288
+ }
2289
+ // Проверка включены ли события
2290
+ isEnabled() {
2291
+ return this.enabled;
2292
+ }
2293
+ // Временное отключение событий
2294
+ disable() {
2295
+ this.enabled = false;
2296
+ }
2297
+ // Включение событий
2298
+ enable() {
2299
+ if (this.observer && this.logger) {
2300
+ this.enabled = true;
2301
+ }
2302
+ }
2303
+ }
2304
+ class CRUD {
2305
+ constructor(options = {}) {
2306
+ const {
2307
+ app,
2308
+ db,
2309
+ model,
2310
+ basePath,
2311
+ modelName = model?.modelName || "resource",
2312
+ cache,
2313
+ logger,
2314
+ ...otherOptions
2315
+ } = options;
2316
+ this.app = app;
2317
+ this.db = db;
2318
+ this.model = model;
2319
+ this.basePath = basePath;
2320
+ this.modelName = modelName;
2321
+ this.cache = cache !== false ? cache instanceof globals_logger.Cache ? cache : new globals_logger.Cache() : null;
2322
+ this.logger = logger || new globals_logger.Logger(db);
2323
+ this.initModules(otherOptions);
2324
+ this.core.init(otherOptions);
2325
+ if (!otherOptions.disableDefaultRoutes) {
2326
+ this.registerDefaultRoutes();
2327
+ }
2328
+ }
2329
+ initModules(options) {
2330
+ this.core = new CRUDCore(this);
2331
+ this.service = new CRUDService(this);
2332
+ this.controller = new CRUDController(this);
2333
+ this.policies = new CRUDPolicies(this);
2334
+ this.events = new CRUDEvents(this);
2335
+ }
2336
+ // Регистрация дефолтных CRUD роутов
2337
+ registerDefaultRoutes() {
2338
+ this.controller.registerRoute("post", "/create", "create");
2339
+ this.controller.registerRoute("get", "/read", "read");
2340
+ this.controller.registerRoute("put", "/update", "update");
2341
+ this.controller.registerRoute("delete", "/delete", "delete");
2342
+ }
2343
+ // API методы для конфигурации
2344
+ setVerifier(action, verifier) {
2345
+ this.core.setVerifier(action, verifier);
2346
+ return this;
2347
+ }
2348
+ addHook(name, handler) {
2349
+ this.core.addHook(name, handler);
2350
+ return this;
2351
+ }
2352
+ addMiddleware(phase, action, middleware) {
2353
+ this.controller.addMiddleware(phase, action, middleware);
2354
+ return this;
2355
+ }
2356
+ addAbac(action, options = {}) {
2357
+ this.policies.setOptions(action, options);
2358
+ return this;
2359
+ }
2360
+ addAggregateExtension(phase, extension) {
2361
+ this.core.addAggregateExtension(phase, extension);
2362
+ return this;
2363
+ }
2364
+ // Управление авторизацией
2365
+ setAuth(action, required) {
2366
+ this.core.setAuth(action, required);
2367
+ return this;
2368
+ }
2369
+ // Добавление кастомного действия
2370
+ addAction(name, config) {
2371
+ const {
2372
+ method = "post",
2373
+ path = `/${name}`,
2374
+ handler,
2375
+ verifier,
2376
+ middlewares = { before: [], after: [] },
2377
+ abac: abac2 = {},
2378
+ hooks = {},
2379
+ auth = true
2380
+ // По умолчанию требует авторизацию
2381
+ } = config;
2382
+ if (verifier) this.setVerifier(name, verifier);
2383
+ if (abac2) this.addAbac(name, abac2);
2384
+ if (auth !== void 0) this.setAuth(name, auth);
2385
+ if (middlewares.before) {
2386
+ const beforeMiddlewares = Array.isArray(middlewares.before) ? middlewares.before : [middlewares.before];
2387
+ beforeMiddlewares.forEach((mw) => this.addMiddleware("before", name, mw));
2388
+ }
2389
+ if (middlewares.after) {
2390
+ const afterMiddlewares = Array.isArray(middlewares.after) ? middlewares.after : [middlewares.after];
2391
+ afterMiddlewares.forEach((mw) => this.addMiddleware("after", name, mw));
2392
+ }
2393
+ Object.entries(hooks).forEach(([hookName, hookFn]) => {
2394
+ this.addHook(hookName, hookFn);
2395
+ });
2396
+ if (handler) {
2397
+ this.controller.registerCustomRoute(method, path, name, handler);
2398
+ } else {
2399
+ this.controller.registerRoute(method, path, name);
2400
+ }
2401
+ return this;
2402
+ }
2403
+ // Получение конфигурации кеша
2404
+ getCacheOptions() {
2405
+ return this.core.getCacheOptions();
2406
+ }
2407
+ // Установка опций кеша
2408
+ setCacheOptions(options) {
2409
+ this.core.setCacheOptions(options);
2410
+ return this;
2411
+ }
2412
+ }
2413
+ const verifierFactory = function(db) {
2414
+ const createVerifier = new globals_verifier.Verifier({
2415
+ name: {
2416
+ rule: "required",
2417
+ validator: globals_verifier.Validator.schema().string().required("Variant name is required").min(2, "Name must be at least 2 characters").max(100, "Name must not exceed 100 characters")
2418
+ },
2419
+ sku: {
2420
+ rule: "optional",
2421
+ validator: globals_verifier.Validator.schema().string().pattern(/^[A-Za-z0-9-_]+$/, "SKU can only contain letters, numbers, hyphens and underscores").max(50)
2422
+ },
2423
+ price: {
2424
+ rule: "required",
2425
+ validator: globals_verifier.Validator.schema().number().required("Price is required").min(0, "Price cannot be negative")
2426
+ },
2427
+ cost: {
2428
+ rule: "optional",
2429
+ default: 0,
2430
+ validator: globals_verifier.Validator.schema().number().min(0, "Cost cannot be negative")
2431
+ },
2432
+ quantity: {
2433
+ rule: "optional",
2434
+ default: 1,
2435
+ validator: globals_verifier.Validator.schema().integer().min(0, "Quantity cannot be negative")
2436
+ },
2437
+ unit: {
2438
+ rule: "optional",
2439
+ default: "pcs",
2440
+ validator: globals_verifier.Validator.schema().string().oneOf(["pcs", "g", "kg", "ml", "l", "oz"], "Invalid unit")
2441
+ },
2442
+ images: {
2443
+ rule: "optional",
2444
+ validator: globals_verifier.Validator.schema().array().items(globals_verifier.Validator.schema().string())
2445
+ },
2446
+ ingredients: {
2447
+ rule: "optional",
2448
+ validator: globals_verifier.Validator.schema().array().items(
2449
+ globals_verifier.Validator.schema().object({
2450
+ name: globals_verifier.Validator.schema().string().required(),
2451
+ quantity: globals_verifier.Validator.schema().number().min(0),
2452
+ unit: globals_verifier.Validator.schema().string()
2453
+ })
2454
+ )
2455
+ },
2456
+ attributes: {
2457
+ rule: "optional",
2458
+ validator: globals_verifier.Validator.schema().array().items(
2459
+ globals_verifier.Validator.schema().object({
2460
+ name: globals_verifier.Validator.schema().string().required(),
2461
+ value: globals_verifier.Validator.schema().string().required()
2462
+ })
2463
+ )
2464
+ },
2465
+ owner: {
2466
+ rule: "required",
2467
+ validator: globals_verifier.Validator.schema().object({
2468
+ type: globals_verifier.Validator.schema().string().oneOf(["user", "organization"]),
2469
+ target: globals_verifier.Validator.schema().string().pattern(/^[0-9a-fA-F]{24}$/)
2470
+ })
2471
+ }
2472
+ });
2473
+ const updateVerifier = new globals_verifier.Verifier({
2474
+ _id: {
2475
+ rule: "required",
2476
+ validator: globals_verifier.Validator.schema().string().required("Variant ID is required").pattern(/^[0-9a-fA-F]{24}$/, "Invalid ID format")
2477
+ },
2478
+ name: {
2479
+ rule: "optional",
2480
+ validator: globals_verifier.Validator.schema().string().min(2, "Name must be at least 2 characters").max(100, "Name must not exceed 100 characters")
2481
+ },
2482
+ sku: {
2483
+ rule: "optional",
2484
+ validator: globals_verifier.Validator.schema().string().pattern(/^[A-Za-z0-9-_]+$/, "SKU can only contain letters, numbers, hyphens and underscores").max(50)
2485
+ },
2486
+ price: {
2487
+ rule: "optional",
2488
+ validator: globals_verifier.Validator.schema().number().min(0, "Price cannot be negative")
2489
+ },
2490
+ cost: {
2491
+ rule: "optional",
2492
+ validator: globals_verifier.Validator.schema().number().min(0, "Cost cannot be negative")
2493
+ },
2494
+ quantity: {
2495
+ rule: "optional",
2496
+ validator: globals_verifier.Validator.schema().integer().min(0, "Quantity cannot be negative")
2497
+ },
2498
+ unit: {
2499
+ rule: "optional",
2500
+ validator: globals_verifier.Validator.schema().string().oneOf(["pcs", "g", "kg", "ml", "l", "oz"], "Invalid unit")
2501
+ },
2502
+ images: {
2503
+ rule: "optional",
2504
+ validator: globals_verifier.Validator.schema().array().items(globals_verifier.Validator.schema().string())
2505
+ },
2506
+ ingredients: {
2507
+ rule: "optional",
2508
+ validator: globals_verifier.Validator.schema().array().items(
2509
+ globals_verifier.Validator.schema().object({
2510
+ name: globals_verifier.Validator.schema().string().required(),
2511
+ quantity: globals_verifier.Validator.schema().number().min(0),
2512
+ unit: globals_verifier.Validator.schema().string()
2513
+ })
2514
+ )
2515
+ },
2516
+ attributes: {
2517
+ rule: "optional",
2518
+ validator: globals_verifier.Validator.schema().array().items(
2519
+ globals_verifier.Validator.schema().object({
2520
+ name: globals_verifier.Validator.schema().string().required(),
2521
+ value: globals_verifier.Validator.schema().string().required()
2522
+ })
2523
+ )
2524
+ }
2525
+ });
2526
+ const readVerifier = new globals_verifier.Verifier({
2527
+ _id: {
2528
+ rule: "optional",
2529
+ validator: globals_verifier.Validator.schema().string().pattern(/^[0-9a-fA-F]{24}$/)
2530
+ },
2531
+ owner: {
2532
+ rule: "optional",
2533
+ validator: globals_verifier.Validator.schema().string()
2534
+ },
2535
+ skip: {
2536
+ rule: "optional",
2537
+ default: 0,
2538
+ validator: globals_verifier.Validator.schema().integer().min(0)
2539
+ },
2540
+ limit: {
2541
+ rule: "optional",
2542
+ default: 20,
2543
+ validator: globals_verifier.Validator.schema().integer().min(1).max(100)
2544
+ },
2545
+ sortParam: {
2546
+ rule: "optional",
2547
+ validator: globals_verifier.Validator.schema().string().oneOf(["name", "price", "quantity", "createdAt", "updatedAt"])
2548
+ },
2549
+ sortOrder: {
2550
+ rule: "optional",
2551
+ default: "desc",
2552
+ validator: globals_verifier.Validator.schema().string().oneOf(["asc", "desc"])
2553
+ }
2554
+ });
2555
+ const deleteVerifier = new globals_verifier.Verifier({
2556
+ _id: {
2557
+ rule: "required",
2558
+ validator: globals_verifier.Validator.schema().string().required("Variant ID is required").pattern(/^[0-9a-fA-F]{24}$/)
2559
+ }
2560
+ });
2561
+ return {
2562
+ createVerifier,
2563
+ readVerifier,
2564
+ updateVerifier,
2565
+ deleteVerifier
2566
+ };
2567
+ };
2568
+ const { getInstance } = abac.ABAC;
2569
+ function setupVariantsRoutes(app, db) {
2570
+ const abac2 = getInstance(db);
2571
+ const verifier = verifierFactory();
2572
+ const variantsCRUD = new CRUD({
2573
+ app,
2574
+ db,
2575
+ model: db.variant,
2576
+ modelName: "variant",
2577
+ basePath: "/api/variants",
2578
+ auth: true,
2579
+ verifiers: {
2580
+ create: verifier.createVerifier,
2581
+ read: verifier.readVerifier,
2582
+ update: verifier.updateVerifier,
2583
+ delete: verifier.deleteVerifier
2584
+ },
2585
+ abac: abac2,
2586
+ cache: {
2587
+ enabled: true,
2588
+ ttl: 300,
2589
+ tags: ["variant", "inventory"]
2590
+ },
2591
+ events: {
2592
+ enabled: true,
2593
+ logReads: false
2594
+ }
2595
+ });
2596
+ return variantsCRUD;
2597
+ }
2598
+ function initializeProduct(app, db, origins, publicPath) {
2599
+ db.product = ProductModel(db);
2600
+ db.variant = VariantModel(db);
2601
+ db.category = CategoryModel(db);
2602
+ db.leftover = LeftoverModel(db);
2603
+ if (app) {
2604
+ productsRoutes(app, db);
2605
+ categoriesRoutes(app, db);
2606
+ leftoversRoutes(app, db);
2607
+ setupVariantsRoutes(app, db);
2608
+ }
2609
+ }
2610
+ const models = {
2611
+ ProductModel,
2612
+ CategoryModel,
2613
+ LeftoverModel
2614
+ };
2615
+ const routes = {
2616
+ productsRoutes,
2617
+ categoriesRoutes,
2618
+ leftoversRoutes
2619
+ };
2620
+ const controllers = {
2621
+ ProductController: controllerFactory,
2622
+ CategoryController: controllerFactory$2,
2623
+ LeftoverController: controllerFactory$1
2624
+ };
2625
+ const products_server = {
2626
+ initialize: initializeProduct,
2627
+ models,
2628
+ routes,
2629
+ controllers
2630
+ };
2631
+ exports.controllers = controllers;
2632
+ exports.default = products_server;
2633
+ exports.initialize = initializeProduct;
2634
+ exports.models = models;
2635
+ exports.routes = routes;