@shophost/rest-api 2.0.32 → 2.0.34

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 (348) hide show
  1. package/package.json +13 -14
  2. package/src/app.js +53 -1
  3. package/src/app.js.map +1 -0
  4. package/src/core/auth/auth.schema.js +41 -1
  5. package/src/core/auth/auth.schema.js.map +1 -0
  6. package/src/core/auth/auth.util.js +44 -1
  7. package/src/core/auth/auth.util.js.map +1 -0
  8. package/src/core/auth/better-auth.lib.js +100 -1
  9. package/src/core/auth/better-auth.lib.js.map +1 -0
  10. package/src/core/auth/generate-password-hash.util.d.ts +3 -0
  11. package/src/core/auth/generate-password-hash.util.js +30 -1
  12. package/src/core/auth/generate-password-hash.util.js.map +1 -0
  13. package/src/core/auth/headers.schema.js +22 -1
  14. package/src/core/auth/headers.schema.js.map +1 -0
  15. package/src/core/auth/user.schema.js +30 -1
  16. package/src/core/auth/user.schema.js.map +1 -0
  17. package/src/core/db/__generated__/client/browser.d.ts +128 -0
  18. package/src/core/db/__generated__/client/browser.js +18 -1
  19. package/src/core/db/__generated__/client/browser.js.map +1 -0
  20. package/src/core/db/__generated__/client/client.d.ts +143 -0
  21. package/src/core/db/__generated__/client/client.js +35 -1
  22. package/src/core/db/__generated__/client/client.js.map +1 -0
  23. package/src/core/db/__generated__/client/commonInputTypes.js +11 -1
  24. package/src/core/db/__generated__/client/commonInputTypes.js.map +1 -0
  25. package/src/core/db/__generated__/client/enums.js +200 -1
  26. package/src/core/db/__generated__/client/enums.js.map +1 -0
  27. package/src/core/db/__generated__/client/internal/class.d.ts +343 -0
  28. package/src/core/db/__generated__/client/internal/class.js +55 -1
  29. package/src/core/db/__generated__/client/internal/class.js.map +1 -0
  30. package/src/core/db/__generated__/client/internal/prismaNamespace.d.ts +234 -0
  31. package/src/core/db/__generated__/client/internal/prismaNamespace.js +541 -1
  32. package/src/core/db/__generated__/client/internal/prismaNamespace.js.map +1 -0
  33. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.d.ts +15 -0
  34. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.js +512 -1
  35. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.js.map +1 -0
  36. package/src/core/db/__generated__/client/models/Account.d.ts +633 -0
  37. package/src/core/db/__generated__/client/models/Account.js +2 -1
  38. package/src/core/db/__generated__/client/models/Account.js.map +1 -0
  39. package/src/core/db/__generated__/client/models/Address.d.ts +706 -0
  40. package/src/core/db/__generated__/client/models/Address.js +2 -1
  41. package/src/core/db/__generated__/client/models/Address.js.map +1 -0
  42. package/src/core/db/__generated__/client/models/Campaign.d.ts +643 -0
  43. package/src/core/db/__generated__/client/models/Campaign.js +2 -1
  44. package/src/core/db/__generated__/client/models/Campaign.js.map +1 -0
  45. package/src/core/db/__generated__/client/models/ClosingTimes.d.ts +639 -0
  46. package/src/core/db/__generated__/client/models/ClosingTimes.js +2 -1
  47. package/src/core/db/__generated__/client/models/ClosingTimes.js.map +1 -0
  48. package/src/core/db/__generated__/client/models/File.d.ts +757 -0
  49. package/src/core/db/__generated__/client/models/File.js +2 -1
  50. package/src/core/db/__generated__/client/models/File.js.map +1 -0
  51. package/src/core/db/__generated__/client/models/Invitation.d.ts +633 -0
  52. package/src/core/db/__generated__/client/models/Invitation.js +2 -1
  53. package/src/core/db/__generated__/client/models/Invitation.js.map +1 -0
  54. package/src/core/db/__generated__/client/models/LegalEntity.d.ts +657 -0
  55. package/src/core/db/__generated__/client/models/LegalEntity.js +2 -1
  56. package/src/core/db/__generated__/client/models/LegalEntity.js.map +1 -0
  57. package/src/core/db/__generated__/client/models/Manufacturer.d.ts +684 -0
  58. package/src/core/db/__generated__/client/models/Manufacturer.js +2 -1
  59. package/src/core/db/__generated__/client/models/Manufacturer.js.map +1 -0
  60. package/src/core/db/__generated__/client/models/ManufacturerTranslation.d.ts +633 -0
  61. package/src/core/db/__generated__/client/models/ManufacturerTranslation.js +2 -1
  62. package/src/core/db/__generated__/client/models/ManufacturerTranslation.js.map +1 -0
  63. package/src/core/db/__generated__/client/models/Member.d.ts +633 -0
  64. package/src/core/db/__generated__/client/models/Member.js +2 -1
  65. package/src/core/db/__generated__/client/models/Member.js.map +1 -0
  66. package/src/core/db/__generated__/client/models/Modifier.d.ts +667 -0
  67. package/src/core/db/__generated__/client/models/Modifier.js +2 -1
  68. package/src/core/db/__generated__/client/models/Modifier.js.map +1 -0
  69. package/src/core/db/__generated__/client/models/ModifierGroup.d.ts +691 -0
  70. package/src/core/db/__generated__/client/models/ModifierGroup.js +2 -1
  71. package/src/core/db/__generated__/client/models/ModifierGroup.js.map +1 -0
  72. package/src/core/db/__generated__/client/models/ModifierGroupTranslation.d.ts +633 -0
  73. package/src/core/db/__generated__/client/models/ModifierGroupTranslation.js +2 -1
  74. package/src/core/db/__generated__/client/models/ModifierGroupTranslation.js.map +1 -0
  75. package/src/core/db/__generated__/client/models/OpeningTimes.d.ts +639 -0
  76. package/src/core/db/__generated__/client/models/OpeningTimes.js +2 -1
  77. package/src/core/db/__generated__/client/models/OpeningTimes.js.map +1 -0
  78. package/src/core/db/__generated__/client/models/Order.d.ts +705 -0
  79. package/src/core/db/__generated__/client/models/Order.js +2 -1
  80. package/src/core/db/__generated__/client/models/Order.js.map +1 -0
  81. package/src/core/db/__generated__/client/models/OrderItem.d.ts +691 -0
  82. package/src/core/db/__generated__/client/models/OrderItem.js +2 -1
  83. package/src/core/db/__generated__/client/models/OrderItem.js.map +1 -0
  84. package/src/core/db/__generated__/client/models/OrderItemTranslation.d.ts +633 -0
  85. package/src/core/db/__generated__/client/models/OrderItemTranslation.js +2 -1
  86. package/src/core/db/__generated__/client/models/OrderItemTranslation.js.map +1 -0
  87. package/src/core/db/__generated__/client/models/Organization.d.ts +816 -0
  88. package/src/core/db/__generated__/client/models/Organization.js +2 -1
  89. package/src/core/db/__generated__/client/models/Organization.js.map +1 -0
  90. package/src/core/db/__generated__/client/models/OrganizationConfiguration.d.ts +681 -0
  91. package/src/core/db/__generated__/client/models/OrganizationConfiguration.js +2 -1
  92. package/src/core/db/__generated__/client/models/OrganizationConfiguration.js.map +1 -0
  93. package/src/core/db/__generated__/client/models/Payment.d.ts +673 -0
  94. package/src/core/db/__generated__/client/models/Payment.js +2 -1
  95. package/src/core/db/__generated__/client/models/Payment.js.map +1 -0
  96. package/src/core/db/__generated__/client/models/PaymentSession.d.ts +643 -0
  97. package/src/core/db/__generated__/client/models/PaymentSession.js +2 -1
  98. package/src/core/db/__generated__/client/models/PaymentSession.js.map +1 -0
  99. package/src/core/db/__generated__/client/models/Product.d.ts +751 -0
  100. package/src/core/db/__generated__/client/models/Product.js +2 -1
  101. package/src/core/db/__generated__/client/models/Product.js.map +1 -0
  102. package/src/core/db/__generated__/client/models/ProductCategory.d.ts +694 -0
  103. package/src/core/db/__generated__/client/models/ProductCategory.js +2 -1
  104. package/src/core/db/__generated__/client/models/ProductCategory.js.map +1 -0
  105. package/src/core/db/__generated__/client/models/ProductCategoryTranslation.d.ts +633 -0
  106. package/src/core/db/__generated__/client/models/ProductCategoryTranslation.js +2 -1
  107. package/src/core/db/__generated__/client/models/ProductCategoryTranslation.js.map +1 -0
  108. package/src/core/db/__generated__/client/models/ProductSnapshot.d.ts +669 -0
  109. package/src/core/db/__generated__/client/models/ProductSnapshot.js +2 -1
  110. package/src/core/db/__generated__/client/models/ProductSnapshot.js.map +1 -0
  111. package/src/core/db/__generated__/client/models/ProductTranslation.d.ts +633 -0
  112. package/src/core/db/__generated__/client/models/ProductTranslation.js +2 -1
  113. package/src/core/db/__generated__/client/models/ProductTranslation.js.map +1 -0
  114. package/src/core/db/__generated__/client/models/Reservation.d.ts +655 -0
  115. package/src/core/db/__generated__/client/models/Reservation.js +2 -1
  116. package/src/core/db/__generated__/client/models/Reservation.js.map +1 -0
  117. package/src/core/db/__generated__/client/models/Session.d.ts +633 -0
  118. package/src/core/db/__generated__/client/models/Session.js +2 -1
  119. package/src/core/db/__generated__/client/models/Session.js.map +1 -0
  120. package/src/core/db/__generated__/client/models/ShippingMethod.d.ts +684 -0
  121. package/src/core/db/__generated__/client/models/ShippingMethod.js +2 -1
  122. package/src/core/db/__generated__/client/models/ShippingMethod.js.map +1 -0
  123. package/src/core/db/__generated__/client/models/ShippingZone.d.ts +643 -0
  124. package/src/core/db/__generated__/client/models/ShippingZone.js +2 -1
  125. package/src/core/db/__generated__/client/models/ShippingZone.js.map +1 -0
  126. package/src/core/db/__generated__/client/models/User.d.ts +741 -0
  127. package/src/core/db/__generated__/client/models/User.js +2 -1
  128. package/src/core/db/__generated__/client/models/User.js.map +1 -0
  129. package/src/core/db/__generated__/client/models/Verification.d.ts +597 -0
  130. package/src/core/db/__generated__/client/models/Verification.js +2 -1
  131. package/src/core/db/__generated__/client/models/Verification.js.map +1 -0
  132. package/src/core/db/__generated__/client/models.js +2 -1
  133. package/src/core/db/__generated__/client/models.js.map +1 -0
  134. package/src/core/db/index.js +2 -1
  135. package/src/core/db/index.js.map +1 -0
  136. package/src/core/exceptions/http-exception.js +9 -1
  137. package/src/core/exceptions/http-exception.js.map +1 -0
  138. package/src/core/hono/hono.js +123 -1
  139. package/src/core/hono/hono.js.map +1 -0
  140. package/src/core/lib/prisma.js +11 -1
  141. package/src/core/lib/prisma.js.map +1 -0
  142. package/src/core/logging/pino.js +5 -1
  143. package/src/core/logging/pino.js.map +1 -0
  144. package/src/core/notifications/email.service.d.ts +15 -0
  145. package/src/core/notifications/email.service.js +116 -1
  146. package/src/core/notifications/email.service.js.map +1 -0
  147. package/src/core/openapi/openapi.lib.js +26 -1
  148. package/src/core/openapi/openapi.lib.js.map +1 -0
  149. package/src/core/types/google-maps.types.js +2 -1
  150. package/src/core/types/google-maps.types.js.map +1 -0
  151. package/src/core/utils/currency.util.js +11 -1
  152. package/src/core/utils/currency.util.js.map +1 -0
  153. package/src/core/utils/env.util.js +8 -1
  154. package/src/core/utils/env.util.js.map +1 -0
  155. package/src/core/utils/object.util.d.ts +10 -0
  156. package/src/core/utils/object.util.js +39 -1
  157. package/src/core/utils/object.util.js.map +1 -0
  158. package/src/core/utils/translations.util.js +2 -0
  159. package/src/core/utils/translations.util.js.map +1 -0
  160. package/src/core/utils/zod.util.d.ts +12 -0
  161. package/src/core/utils/zod.util.js +85 -1
  162. package/src/core/utils/zod.util.js.map +1 -0
  163. package/src/db.js +3 -1
  164. package/src/db.js.map +1 -0
  165. package/src/features/access/access.handler.js +91 -1
  166. package/src/features/access/access.handler.js.map +1 -0
  167. package/src/features/access/access.route.js +220 -1
  168. package/src/features/access/access.route.js.map +1 -0
  169. package/src/features/access/access.schema.js +108 -1
  170. package/src/features/access/access.schema.js.map +1 -0
  171. package/src/features/access/access.service.js +294 -1
  172. package/src/features/access/access.service.js.map +1 -0
  173. package/src/features/cart/cart.handler.js +17 -1
  174. package/src/features/cart/cart.handler.js.map +1 -0
  175. package/src/features/cart/cart.route.js +32 -1
  176. package/src/features/cart/cart.route.js.map +1 -0
  177. package/src/features/cart/cart.schema.js +39 -1
  178. package/src/features/cart/cart.schema.js.map +1 -0
  179. package/src/features/cart/cart.service.d.ts +7 -0
  180. package/src/features/cart/cart.service.js +97 -1
  181. package/src/features/cart/cart.service.js.map +1 -0
  182. package/src/features/cart/cart.util.js +76 -1
  183. package/src/features/cart/cart.util.js.map +1 -0
  184. package/src/features/file/file.handler.js +23 -1
  185. package/src/features/file/file.handler.js.map +1 -0
  186. package/src/features/file/file.route.js +34 -1
  187. package/src/features/file/file.route.js.map +1 -0
  188. package/src/features/file/file.schema.js +77 -1
  189. package/src/features/file/file.schema.js.map +1 -0
  190. package/src/features/file/file.service.d.ts +6 -0
  191. package/src/features/file/file.service.js +66 -1
  192. package/src/features/file/file.service.js.map +1 -0
  193. package/src/features/health/health.handler.js +10 -1
  194. package/src/features/health/health.handler.js.map +1 -0
  195. package/src/features/health/health.route.js +25 -1
  196. package/src/features/health/health.route.js.map +1 -0
  197. package/src/features/index.js +16 -1
  198. package/src/features/index.js.map +1 -0
  199. package/src/features/location/location.handler.js +25 -1
  200. package/src/features/location/location.handler.js.map +1 -0
  201. package/src/features/location/location.route.js +56 -1
  202. package/src/features/location/location.route.js.map +1 -0
  203. package/src/features/location/location.schema.js +50 -1
  204. package/src/features/location/location.schema.js.map +1 -0
  205. package/src/features/location/location.service.d.ts +3 -0
  206. package/src/features/location/location.service.js +141 -1
  207. package/src/features/location/location.service.js.map +1 -0
  208. package/src/features/manufacturer/manufacturer.handler.js +53 -1
  209. package/src/features/manufacturer/manufacturer.handler.js.map +1 -0
  210. package/src/features/manufacturer/manufacturer.route.js +97 -1
  211. package/src/features/manufacturer/manufacturer.route.js.map +1 -0
  212. package/src/features/manufacturer/manufacturer.schema.js +125 -1
  213. package/src/features/manufacturer/manufacturer.schema.js.map +1 -0
  214. package/src/features/manufacturer/manufacturer.service.d.ts +19 -0
  215. package/src/features/manufacturer/manufacturer.service.js +190 -1
  216. package/src/features/manufacturer/manufacturer.service.js.map +1 -0
  217. package/src/features/order/emails/order-confirmation.email.js +229 -1
  218. package/src/features/order/emails/order-confirmation.email.js.map +1 -0
  219. package/src/features/order/emails/order-notification.email.js +229 -1
  220. package/src/features/order/emails/order-notification.email.js.map +1 -0
  221. package/src/features/order/fulfilment.schema.js +3 -1
  222. package/src/features/order/fulfilment.schema.js.map +1 -0
  223. package/src/features/order/order.handler.js +54 -1
  224. package/src/features/order/order.handler.js.map +1 -0
  225. package/src/features/order/order.route.js +111 -1
  226. package/src/features/order/order.route.js.map +1 -0
  227. package/src/features/order/order.schema.js +158 -1
  228. package/src/features/order/order.schema.js.map +1 -0
  229. package/src/features/order/order.service.d.ts +15 -0
  230. package/src/features/order/order.service.js +306 -1
  231. package/src/features/order/order.service.js.map +1 -0
  232. package/src/features/order/recipient.schema.js +38 -1
  233. package/src/features/order/recipient.schema.js.map +1 -0
  234. package/src/features/organization/legal-entity.schema.js +83 -1
  235. package/src/features/organization/legal-entity.schema.js.map +1 -0
  236. package/src/features/organization/organization-configuration.schema.js +115 -1
  237. package/src/features/organization/organization-configuration.schema.js.map +1 -0
  238. package/src/features/organization/organization.handler.js +48 -1
  239. package/src/features/organization/organization.handler.js.map +1 -0
  240. package/src/features/organization/organization.route.js +84 -1
  241. package/src/features/organization/organization.route.js.map +1 -0
  242. package/src/features/organization/organization.schema.js +64 -1
  243. package/src/features/organization/organization.schema.js.map +1 -0
  244. package/src/features/organization/organization.service.d.ts +15 -0
  245. package/src/features/organization/organization.service.js +334 -1
  246. package/src/features/organization/organization.service.js.map +1 -0
  247. package/src/features/payment/payment.handler.js +16 -1
  248. package/src/features/payment/payment.handler.js.map +1 -0
  249. package/src/features/payment/payment.route.js +22 -1
  250. package/src/features/payment/payment.route.js.map +1 -0
  251. package/src/features/payment/payment.schema.js +46 -1
  252. package/src/features/payment/payment.schema.js.map +1 -0
  253. package/src/features/payment/payment.service.js +100 -1
  254. package/src/features/payment/payment.service.js.map +1 -0
  255. package/src/features/payment/stripe.service.js +164 -1
  256. package/src/features/payment/stripe.service.js.map +1 -0
  257. package/src/features/product/product-modifier.schema.js +84 -1
  258. package/src/features/product/product-modifier.schema.js.map +1 -0
  259. package/src/features/product/product.handler.js +87 -1
  260. package/src/features/product/product.handler.js.map +1 -0
  261. package/src/features/product/product.route.js +179 -1
  262. package/src/features/product/product.route.js.map +1 -0
  263. package/src/features/product/product.schema.js +143 -1
  264. package/src/features/product/product.schema.js.map +1 -0
  265. package/src/features/product/product.service.d.ts +25 -0
  266. package/src/features/product/product.service.js +440 -1
  267. package/src/features/product/product.service.js.map +1 -0
  268. package/src/features/product-category/product-category.handler.js +59 -1
  269. package/src/features/product-category/product-category.handler.js.map +1 -0
  270. package/src/features/product-category/product-category.route.js +139 -1
  271. package/src/features/product-category/product-category.route.js.map +1 -0
  272. package/src/features/product-category/product-category.schema.js +86 -1
  273. package/src/features/product-category/product-category.schema.js.map +1 -0
  274. package/src/features/product-category/product-category.service.d.ts +22 -0
  275. package/src/features/product-category/product-category.service.js +220 -1
  276. package/src/features/product-category/product-category.service.js.map +1 -0
  277. package/src/features/reservation/emails/reservation-cancellation.email.js +82 -1
  278. package/src/features/reservation/emails/reservation-cancellation.email.js.map +1 -0
  279. package/src/features/reservation/emails/reservation-confirmation.email.js +82 -1
  280. package/src/features/reservation/emails/reservation-confirmation.email.js.map +1 -0
  281. package/src/features/reservation/emails/reservation-notification.email.js +93 -1
  282. package/src/features/reservation/emails/reservation-notification.email.js.map +1 -0
  283. package/src/features/reservation/reservation.handler.js +65 -1
  284. package/src/features/reservation/reservation.handler.js.map +1 -0
  285. package/src/features/reservation/reservation.route.js +167 -1
  286. package/src/features/reservation/reservation.route.js.map +1 -0
  287. package/src/features/reservation/reservation.schema.js +51 -1
  288. package/src/features/reservation/reservation.schema.js.map +1 -0
  289. package/src/features/reservation/reservation.service.d.ts +18 -0
  290. package/src/features/reservation/reservation.service.js +231 -1
  291. package/src/features/reservation/reservation.service.js.map +1 -0
  292. package/src/features/shipping/shipping.handler.js +32 -1
  293. package/src/features/shipping/shipping.handler.js.map +1 -0
  294. package/src/features/shipping/shipping.route.js +51 -1
  295. package/src/features/shipping/shipping.route.js.map +1 -0
  296. package/src/features/shipping/shipping.service.d.ts +7 -0
  297. package/src/features/shipping/shipping.service.js +96 -1
  298. package/src/features/shipping/shipping.service.js.map +1 -0
  299. package/src/features/shipping-method/shipping-method.handler.js +60 -1
  300. package/src/features/shipping-method/shipping-method.handler.js.map +1 -0
  301. package/src/features/shipping-method/shipping-method.route.js +144 -1
  302. package/src/features/shipping-method/shipping-method.route.js.map +1 -0
  303. package/src/features/shipping-method/shipping-method.schema.js +48 -1
  304. package/src/features/shipping-method/shipping-method.schema.js.map +1 -0
  305. package/src/features/shipping-method/shipping-method.service.d.ts +25 -0
  306. package/src/features/shipping-method/shipping-method.service.js +229 -1
  307. package/src/features/shipping-method/shipping-method.service.js.map +1 -0
  308. package/src/features/shipping-method/shipping-zone.schema.js +31 -1
  309. package/src/features/shipping-method/shipping-zone.schema.js.map +1 -0
  310. package/src/features/webhook/webhook.handler.js +50 -1
  311. package/src/features/webhook/webhook.handler.js.map +1 -0
  312. package/src/features/webhook/webhook.route.js +33 -1
  313. package/src/features/webhook/webhook.route.js.map +1 -0
  314. package/src/index.js +6 -1
  315. package/src/index.js.map +1 -0
  316. package/src/integrations/next.js +82 -1
  317. package/src/integrations/next.js.map +1 -0
  318. package/src/schemas/address.schema.d.ts +8 -0
  319. package/src/schemas/address.schema.js +112 -1
  320. package/src/schemas/address.schema.js.map +1 -0
  321. package/src/schemas/currency.schema.d.ts +42 -0
  322. package/src/schemas/currency.schema.js +118 -1
  323. package/src/schemas/currency.schema.js.map +1 -0
  324. package/src/schemas/error.schema.js +12 -1
  325. package/src/schemas/error.schema.js.map +1 -0
  326. package/src/schemas/index.js +29 -1
  327. package/src/schemas/index.js.map +1 -0
  328. package/src/schemas/locales.schema.js +238 -1
  329. package/src/schemas/locales.schema.js.map +1 -0
  330. package/src/schemas/number.schema.js +29 -1
  331. package/src/schemas/number.schema.js.map +1 -0
  332. package/src/schemas/pagination.schema.js +54 -1
  333. package/src/schemas/pagination.schema.js.map +1 -0
  334. package/src/schemas/params.schema.js +20 -1
  335. package/src/schemas/params.schema.js.map +1 -0
  336. package/src/schemas/queries.schema.js +6 -1
  337. package/src/schemas/queries.schema.js.map +1 -0
  338. package/src/test/global-setup.js +37 -1
  339. package/src/test/global-setup.js.map +1 -0
  340. package/src/test/integration/api-fixtures.js +160 -1
  341. package/src/test/integration/api-fixtures.js.map +1 -0
  342. package/src/test/integration/seed.js +368 -1
  343. package/src/test/integration/seed.js.map +1 -0
  344. package/src/test/integration/test-helpers.js +154 -1
  345. package/src/test/integration/test-helpers.js.map +1 -0
  346. package/src/test/setup-test-env.js +7 -1
  347. package/src/test/setup-test-env.js.map +1 -0
  348. package/scripts/minify.mjs +0 -123
@@ -1 +1,334 @@
1
- import{__awaiter as i}from"tslib";import{z as n}from"@hono/zod-openapi";import{HttpException as e}from"../../core/exceptions/http-exception";import{OrganizationSchema as o,PaginationMetaSchema as t}from"../../schemas";import{LocationService as a}from"../location/location.service";class s{constructor(i,n){this.prisma=i,this.convertToTimeString=i=>i?i.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:"UTC"}):"",this.locationService=new a(n)}getOrganizations(e,a){return i(this,void 0,void 0,function*(){const{page:i,limit:s}=a,[r,d]=yield this.prisma.organization.paginate({orderBy:{createdAt:"desc"},where:{members:{some:{userId:e}}},include:{address:!0,configuration:!0,logoFile:!0}}).withPages({page:i,limit:s});return{meta:t.parse(d),list:n.array(o).parse(r)}})}formatDateScheduleToTimeString(i){return i?["monday","tuesday","wednesday","thursday","friday","saturday","sunday"].reduce((n,e)=>(n[e]=this.convertToTimeString(i[e]),n),{}):null}getOrganization(n){return i(this,void 0,void 0,function*(){const i=yield this.prisma.organization.findUnique({where:{id:n,deletedAt:null},include:{address:!0,configuration:{include:{openingTimes:!0,closingTimes:!0}},logoFile:!0}});if(!i)throw new e(404,"Organization not found");const t=(()=>{if(!i.configuration.isAcceptingOrders)return!1;if(!i.configuration.openingTimes||!i.configuration.closingTimes)return!1;const n=new Date((new Date).toLocaleString("en-US",{timeZone:"Europe/Warsaw"})),e=n.toLocaleDateString("en-US",{weekday:"long"}).toLowerCase(),o=n.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:"Europe/Warsaw"}),t=i.configuration.openingTimes[e],a=i.configuration.closingTimes[e];if(!t||!a)return!1;const s=this.convertToTimeString(t),r=this.convertToTimeString(a);return o>=s&&o<=r})();return o.parse(Object.assign(Object.assign({},i),{configuration:Object.assign(Object.assign({},i.configuration),{isOpen:t,openingTimes:this.formatDateScheduleToTimeString(i.configuration.openingTimes),closingTimes:this.formatDateScheduleToTimeString(i.configuration.closingTimes)})}))})}createOrganization(n,e){return i(this,void 0,void 0,function*(){const i=yield this.locationService.getPlaceDetails(e.address.placeId),t=yield this.prisma.organization.create({data:Object.assign({name:e.name,phone:e.phone,email:e.email,address:{create:Object.assign(Object.assign({},e.address),{latitude:i.latitude,longitude:i.longitude,createdBy:n})},configuration:{create:{countriesShipping:["us"],createdBy:n,enableHostCheckout:!1,enableHostTracking:!1,openingTimes:{create:{monday:null,tuesday:null,wednesday:null,thursday:null,friday:null,saturday:null,sunday:null}},closingTimes:{create:{monday:null,tuesday:null,wednesday:null,thursday:null,friday:null,saturday:null}}}},members:{create:{user:{connect:{id:n}},role:"owner"}},createdBy:n},e.logoId?{logoFile:{connect:{id:e.logoId}}}:{}),include:{address:!0,configuration:{include:{openingTimes:!0,closingTimes:!0}},logoFile:!0}});return o.parse(t)})}updateOrganization(n,t,a){return i(this,void 0,void 0,function*(){if(!(yield this.prisma.organization.findUnique({where:{id:n,deletedAt:null}})))throw new e(404,"Organization not found");const i=a.address?yield this.locationService.getPlaceDetails(a.address.placeId):void 0,s=i=>{if(!i)return null;const[n,e]=i.split(":").map(Number),o=new Date;return o.setUTCHours(n),o.setUTCMinutes(e),o.setUTCSeconds(0),o.setUTCMilliseconds(0),o},r=yield this.prisma.organization.update({where:{id:n},data:Object.assign(Object.assign(Object.assign(Object.assign({name:a.name,phone:a.phone,email:a.email},a.logoId?{logoFile:{connect:{id:a.logoId}}}:{}),{address:a.address?{update:Object.assign(Object.assign({},a.address),{latitude:i.latitude,longitude:i.longitude,updatedBy:t})}:void 0}),a.configuration?{configuration:{update:{countriesShipping:a.configuration.countriesShipping,enableHostCheckout:a.configuration.enableHostCheckout,enableHostTracking:a.configuration.enableHostTracking,defaultLocale:a.configuration.defaultLocale,supportedLocales:a.configuration.supportedLocales,defaultCurrency:a.configuration.defaultCurrency,updatedBy:t,isAcceptingOrders:a.configuration.isAcceptingOrders,openingTimes:a.configuration.openingTimes?{update:{data:{monday:a.configuration.openingTimes.monday?s(a.configuration.openingTimes.monday):null,tuesday:a.configuration.openingTimes.tuesday?s(a.configuration.openingTimes.tuesday):null,wednesday:a.configuration.openingTimes.wednesday?s(a.configuration.openingTimes.wednesday):null,thursday:a.configuration.openingTimes.thursday?s(a.configuration.openingTimes.thursday):null,friday:a.configuration.openingTimes.friday?s(a.configuration.openingTimes.friday):null,saturday:a.configuration.openingTimes.saturday?s(a.configuration.openingTimes.saturday):null,sunday:a.configuration.openingTimes.sunday?s(a.configuration.openingTimes.sunday):null}}}:void 0,closingTimes:a.configuration.closingTimes?{update:{data:{monday:a.configuration.closingTimes.monday?s(a.configuration.closingTimes.monday):null,tuesday:a.configuration.closingTimes.tuesday?s(a.configuration.closingTimes.tuesday):null,wednesday:a.configuration.closingTimes.wednesday?s(a.configuration.closingTimes.wednesday):null,thursday:a.configuration.closingTimes.thursday?s(a.configuration.closingTimes.thursday):null,friday:a.configuration.closingTimes.friday?s(a.configuration.closingTimes.friday):null,saturday:a.configuration.closingTimes.saturday?s(a.configuration.closingTimes.saturday):null,sunday:a.configuration.closingTimes.sunday?s(a.configuration.closingTimes.sunday):null}}}:void 0}}}:void 0),{updatedBy:t}),include:{address:!0,logoFile:!0,configuration:{include:{openingTimes:!0,closingTimes:!0}}}});return o.parse(Object.assign(Object.assign({},r),{configuration:Object.assign(Object.assign({},r.configuration),{openingTimes:this.formatDateScheduleToTimeString(r.configuration.openingTimes),closingTimes:this.formatDateScheduleToTimeString(r.configuration.closingTimes)})}))})}deleteOrganization(n,o){return i(this,void 0,void 0,function*(){if(!(yield this.prisma.organization.findUnique({where:{id:n}})))throw new e(404,"Organization not found");yield this.prisma.organization.update({where:{id:n},data:{deletedAt:new Date,deletedBy:o}})})}}export{s as OrganizationService};
1
+ import { __awaiter } from "tslib";
2
+ import { z } from "@hono/zod-openapi";
3
+ import { HttpException } from "../../core/exceptions/http-exception";
4
+ import { OrganizationSchema, PaginationMetaSchema, } from "../../schemas";
5
+ import { LocationService } from "../location/location.service";
6
+ class OrganizationService {
7
+ constructor(prisma, googleMapsApiKey) {
8
+ this.prisma = prisma;
9
+ this.convertToTimeString = (date) => {
10
+ if (!date)
11
+ return "";
12
+ return date.toLocaleTimeString("en-US", {
13
+ hour: "2-digit",
14
+ minute: "2-digit",
15
+ hour12: false,
16
+ timeZone: "UTC",
17
+ });
18
+ };
19
+ this.locationService = new LocationService(googleMapsApiKey);
20
+ }
21
+ /**
22
+ * Get a paginated list of organizations
23
+ */
24
+ getOrganizations(userId, query) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const { page, limit } = query;
27
+ // Fetch organizations with pagination
28
+ const [list, meta] = yield this.prisma.organization
29
+ .paginate({
30
+ orderBy: {
31
+ createdAt: "desc",
32
+ },
33
+ where: {
34
+ members: {
35
+ some: {
36
+ userId: userId,
37
+ },
38
+ },
39
+ },
40
+ include: {
41
+ address: true,
42
+ configuration: true,
43
+ logoFile: true,
44
+ },
45
+ })
46
+ .withPages({
47
+ page,
48
+ limit,
49
+ });
50
+ return {
51
+ meta: PaginationMetaSchema.parse(meta),
52
+ list: z.array(OrganizationSchema).parse(list),
53
+ };
54
+ });
55
+ }
56
+ formatDateScheduleToTimeString(times) {
57
+ if (!times)
58
+ return null;
59
+ const weekdays = [
60
+ "monday",
61
+ "tuesday",
62
+ "wednesday",
63
+ "thursday",
64
+ "friday",
65
+ "saturday",
66
+ "sunday",
67
+ ];
68
+ return weekdays.reduce((acc, day) => {
69
+ acc[day] = this.convertToTimeString(times[day]);
70
+ return acc;
71
+ }, {});
72
+ }
73
+ /**
74
+ * Get a specific organization by ID
75
+ */
76
+ getOrganization(organizationId) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ // Check if the organization exists in the database
79
+ const organization = yield this.prisma.organization.findUnique({
80
+ where: { id: organizationId, deletedAt: null },
81
+ include: {
82
+ address: true,
83
+ configuration: {
84
+ include: {
85
+ openingTimes: true,
86
+ closingTimes: true,
87
+ },
88
+ },
89
+ logoFile: true,
90
+ },
91
+ });
92
+ if (!organization) {
93
+ throw new HttpException(404, "Organization not found");
94
+ }
95
+ const isOpen = (() => {
96
+ if (!organization.configuration.isAcceptingOrders)
97
+ return false;
98
+ if (!organization.configuration.openingTimes ||
99
+ !organization.configuration.closingTimes)
100
+ return false;
101
+ const warsawDate = new Date(new Date().toLocaleString("en-US", { timeZone: "Europe/Warsaw" }));
102
+ const currentDay = warsawDate
103
+ .toLocaleDateString("en-US", {
104
+ weekday: "long",
105
+ })
106
+ .toLowerCase();
107
+ const currentTime = warsawDate.toLocaleTimeString("en-US", {
108
+ hour: "2-digit",
109
+ minute: "2-digit",
110
+ hour12: false,
111
+ timeZone: "Europe/Warsaw",
112
+ });
113
+ const openingTime = organization.configuration.openingTimes[currentDay];
114
+ const closingTime = organization.configuration.closingTimes[currentDay];
115
+ if (!openingTime || !closingTime)
116
+ return false;
117
+ const openingTimeStr = this.convertToTimeString(openingTime);
118
+ const closingTimeStr = this.convertToTimeString(closingTime);
119
+ return currentTime >= openingTimeStr && currentTime <= closingTimeStr;
120
+ })();
121
+ return OrganizationSchema.parse(Object.assign(Object.assign({}, organization), { configuration: Object.assign(Object.assign({}, organization.configuration), { isOpen, openingTimes: this.formatDateScheduleToTimeString(organization.configuration.openingTimes), closingTimes: this.formatDateScheduleToTimeString(organization.configuration.closingTimes) }) }));
122
+ });
123
+ }
124
+ /**
125
+ * Create a new organization
126
+ */
127
+ createOrganization(userId, body) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ const placeDetails = yield this.locationService.getPlaceDetails(body.address.placeId);
130
+ // Create organization
131
+ const organization = yield this.prisma.organization.create({
132
+ data: Object.assign({ name: body.name, phone: body.phone, email: body.email, address: {
133
+ create: Object.assign(Object.assign({}, body.address), { latitude: placeDetails.latitude, longitude: placeDetails.longitude, createdBy: userId }),
134
+ }, configuration: {
135
+ create: {
136
+ countriesShipping: ["us"],
137
+ createdBy: userId,
138
+ enableHostCheckout: false,
139
+ enableHostTracking: false,
140
+ openingTimes: {
141
+ create: {
142
+ monday: null,
143
+ tuesday: null,
144
+ wednesday: null,
145
+ thursday: null,
146
+ friday: null,
147
+ saturday: null,
148
+ sunday: null,
149
+ },
150
+ },
151
+ closingTimes: {
152
+ create: {
153
+ monday: null,
154
+ tuesday: null,
155
+ wednesday: null,
156
+ thursday: null,
157
+ friday: null,
158
+ saturday: null,
159
+ },
160
+ },
161
+ },
162
+ }, members: {
163
+ create: {
164
+ user: {
165
+ connect: {
166
+ id: userId,
167
+ },
168
+ },
169
+ role: "owner",
170
+ },
171
+ }, createdBy: userId }, (body.logoId ? { logoFile: { connect: { id: body.logoId } } } : {})),
172
+ include: {
173
+ address: true,
174
+ configuration: {
175
+ include: {
176
+ openingTimes: true,
177
+ closingTimes: true,
178
+ },
179
+ },
180
+ logoFile: true,
181
+ },
182
+ });
183
+ return OrganizationSchema.parse(organization);
184
+ });
185
+ }
186
+ /**
187
+ * Update an existing organization
188
+ */
189
+ updateOrganization(organizationId, userId, body) {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ // Check if the organization exists
192
+ const organization = yield this.prisma.organization.findUnique({
193
+ where: { id: organizationId, deletedAt: null },
194
+ });
195
+ if (!organization) {
196
+ // Throw 404 error if organization not found
197
+ throw new HttpException(404, "Organization not found");
198
+ }
199
+ const placeDetails = body.address
200
+ ? yield this.locationService.getPlaceDetails(body.address.placeId)
201
+ : undefined;
202
+ const convertToDate = (timeString) => {
203
+ if (!timeString)
204
+ return null;
205
+ const [hours, minutes] = timeString.split(":").map(Number);
206
+ // Create date in UTC
207
+ const date = new Date();
208
+ date.setUTCHours(hours);
209
+ date.setUTCMinutes(minutes);
210
+ date.setUTCSeconds(0);
211
+ date.setUTCMilliseconds(0);
212
+ return date;
213
+ };
214
+ const updatedOrganization = yield this.prisma.organization.update({
215
+ where: { id: organizationId },
216
+ data: Object.assign(Object.assign(Object.assign(Object.assign({ name: body.name, phone: body.phone, email: body.email }, (body.logoId ? { logoFile: { connect: { id: body.logoId } } } : {})), { address: body.address
217
+ ? {
218
+ update: Object.assign(Object.assign({}, body.address), { latitude: placeDetails.latitude, longitude: placeDetails.longitude, updatedBy: userId }),
219
+ }
220
+ : undefined }), (body.configuration
221
+ ? {
222
+ configuration: {
223
+ update: {
224
+ countriesShipping: body.configuration.countriesShipping,
225
+ enableHostCheckout: body.configuration.enableHostCheckout,
226
+ enableHostTracking: body.configuration.enableHostTracking,
227
+ defaultLocale: body.configuration.defaultLocale,
228
+ supportedLocales: body.configuration.supportedLocales,
229
+ defaultCurrency: body.configuration.defaultCurrency,
230
+ updatedBy: userId,
231
+ isAcceptingOrders: body.configuration.isAcceptingOrders,
232
+ openingTimes: body.configuration.openingTimes
233
+ ? {
234
+ update: {
235
+ data: {
236
+ monday: body.configuration.openingTimes.monday
237
+ ? convertToDate(body.configuration.openingTimes.monday)
238
+ : null,
239
+ tuesday: body.configuration.openingTimes.tuesday
240
+ ? convertToDate(body.configuration.openingTimes.tuesday)
241
+ : null,
242
+ wednesday: body.configuration.openingTimes.wednesday
243
+ ? convertToDate(body.configuration.openingTimes.wednesday)
244
+ : null,
245
+ thursday: body.configuration.openingTimes.thursday
246
+ ? convertToDate(body.configuration.openingTimes.thursday)
247
+ : null,
248
+ friday: body.configuration.openingTimes.friday
249
+ ? convertToDate(body.configuration.openingTimes.friday)
250
+ : null,
251
+ saturday: body.configuration.openingTimes.saturday
252
+ ? convertToDate(body.configuration.openingTimes.saturday)
253
+ : null,
254
+ sunday: body.configuration.openingTimes.sunday
255
+ ? convertToDate(body.configuration.openingTimes.sunday)
256
+ : null,
257
+ },
258
+ },
259
+ }
260
+ : undefined,
261
+ closingTimes: body.configuration.closingTimes
262
+ ? {
263
+ update: {
264
+ data: {
265
+ monday: body.configuration.closingTimes.monday
266
+ ? convertToDate(body.configuration.closingTimes.monday)
267
+ : null,
268
+ tuesday: body.configuration.closingTimes.tuesday
269
+ ? convertToDate(body.configuration.closingTimes.tuesday)
270
+ : null,
271
+ wednesday: body.configuration.closingTimes.wednesday
272
+ ? convertToDate(body.configuration.closingTimes.wednesday)
273
+ : null,
274
+ thursday: body.configuration.closingTimes.thursday
275
+ ? convertToDate(body.configuration.closingTimes.thursday)
276
+ : null,
277
+ friday: body.configuration.closingTimes.friday
278
+ ? convertToDate(body.configuration.closingTimes.friday)
279
+ : null,
280
+ saturday: body.configuration.closingTimes.saturday
281
+ ? convertToDate(body.configuration.closingTimes.saturday)
282
+ : null,
283
+ sunday: body.configuration.closingTimes.sunday
284
+ ? convertToDate(body.configuration.closingTimes.sunday)
285
+ : null,
286
+ },
287
+ },
288
+ }
289
+ : undefined,
290
+ },
291
+ },
292
+ }
293
+ : undefined)), { updatedBy: userId }),
294
+ include: {
295
+ address: true,
296
+ logoFile: true,
297
+ configuration: {
298
+ include: {
299
+ openingTimes: true,
300
+ closingTimes: true,
301
+ },
302
+ },
303
+ },
304
+ });
305
+ return OrganizationSchema.parse(Object.assign(Object.assign({}, updatedOrganization), { configuration: Object.assign(Object.assign({}, updatedOrganization.configuration), { openingTimes: this.formatDateScheduleToTimeString(updatedOrganization.configuration.openingTimes), closingTimes: this.formatDateScheduleToTimeString(updatedOrganization.configuration.closingTimes) }) }));
306
+ });
307
+ }
308
+ /**
309
+ * Delete an organization (soft delete)
310
+ */
311
+ deleteOrganization(organizationId, userId) {
312
+ return __awaiter(this, void 0, void 0, function* () {
313
+ // Check if the organization exists
314
+ const organization = yield this.prisma.organization.findUnique({
315
+ where: { id: organizationId },
316
+ });
317
+ // Throw 404 error if organization not found
318
+ if (!organization) {
319
+ throw new HttpException(404, "Organization not found");
320
+ }
321
+ // Soft delete the organization
322
+ yield this.prisma.organization.update({
323
+ where: { id: organizationId },
324
+ data: {
325
+ deletedAt: new Date(),
326
+ deletedBy: userId,
327
+ },
328
+ });
329
+ return;
330
+ });
331
+ }
332
+ }
333
+ export { OrganizationService };
334
+ //# sourceMappingURL=organization.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/organization/organization.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1,16 @@
1
- import{__awaiter as o}from"tslib";import{createApiRouter as t}from"../../core/hono/hono";import{paymentRoute as e}from"./payment.route";import{PaymentService as n}from"./payment.service";export const buildPaymentHandler=(r,i)=>{const m=t();return m.openapi(e.getAvailablePaymentMethods,t=>o(void 0,void 0,void 0,function*(){const o=t.get("auth");yield o.getCurrentUser();const e=new n(r,i),m=yield e.getPaymentMethods();return t.json(m,200)})),m};
1
+ import { __awaiter } from "tslib";
2
+ import { createApiRouter } from "../../core/hono/hono";
3
+ import { paymentRoute } from "./payment.route";
4
+ import { PaymentService } from "./payment.service";
5
+ export const buildPaymentHandler = (prisma, options) => {
6
+ const app = createApiRouter();
7
+ app.openapi(paymentRoute.getAvailablePaymentMethods, (c) => __awaiter(void 0, void 0, void 0, function* () {
8
+ const auth = c.get("auth");
9
+ yield auth.getCurrentUser();
10
+ const service = new PaymentService(prisma, options);
11
+ const paymentMethods = yield service.getPaymentMethods();
12
+ return c.json(paymentMethods, 200);
13
+ }));
14
+ return app;
15
+ };
16
+ //# sourceMappingURL=payment.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.handler.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/payment/payment.handler.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAyB,MAAM,mBAAmB,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAwB,EACxB,OAA8B,EAC9B,EAAE;IACF,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAE9B,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAO,CAAM,EAAE,EAAE;QACpE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAEzD,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC,CAAA,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -1 +1,22 @@
1
- import{createApiRoute as a}from"../../core/hono/hono";import{ErrorSchema as e,HeaderSchema as t,OrganizationParams as o}from"../../schemas";import{PaymentMethodDetailsSchema as m}from"./payment.schema";const n=a({description:"Returns a list of available payment methods for the organization.",headers:t,method:"GET",operationId:"getAvailablePaymentMethods",path:"/:organizationId/payment/methods",pathParams:o,responses:{200:m.array(),400:e,401:e},summary:"Get Available Payment Methods",tags:["Payment"]});export const paymentRoute={getAvailablePaymentMethods:n};
1
+ import { createApiRoute } from "../../core/hono/hono";
2
+ import { ErrorSchema, HeaderSchema, OrganizationParams } from "../../schemas";
3
+ import { PaymentMethodDetailsSchema } from "./payment.schema";
4
+ const getAvailablePaymentMethodsRoute = createApiRoute({
5
+ description: "Returns a list of available payment methods for the organization.",
6
+ headers: HeaderSchema,
7
+ method: "GET",
8
+ operationId: "getAvailablePaymentMethods",
9
+ path: "/:organizationId/payment/methods",
10
+ pathParams: OrganizationParams,
11
+ responses: {
12
+ 200: PaymentMethodDetailsSchema.array(),
13
+ 400: ErrorSchema,
14
+ 401: ErrorSchema,
15
+ },
16
+ summary: "Get Available Payment Methods",
17
+ tags: ["Payment"],
18
+ });
19
+ export const paymentRoute = {
20
+ getAvailablePaymentMethods: getAvailablePaymentMethodsRoute,
21
+ };
22
+ //# sourceMappingURL=payment.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.route.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/payment/payment.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,+BAA+B,GAAG,cAAc,CAAC;IACrD,WAAW,EACT,mEAAmE;IACrE,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,4BAA4B;IACzC,IAAI,EAAE,kCAAkC;IACxC,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE;QACT,GAAG,EAAE,0BAA0B,CAAC,KAAK,EAAE;QACvC,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,WAAW;KACjB;IACD,OAAO,EAAE,+BAA+B;IACxC,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,0BAA0B,EAAE,+BAA+B;CAC5D,CAAC"}
@@ -1 +1,46 @@
1
- import{z as e}from"@hono/zod-openapi";import{currency as t}from"../../schemas/currency.schema";export const PaymentMethodSchema=e.enum(["card","blik","cash_on_delivery","paypal"]).openapi({description:"The payment method",example:"card"});export const PaymentProviderSchema=e.enum(["stripe","revolut","payu","not_applicable"]).openapi({description:"The payment method",example:"card"});export const PaymentStatusSchema=e.enum(["pending","succeeded","refunded","failed","canceled"]).openapi({description:"The payment status",example:"pending"});export const PaymentMethodDetailsSchema=e.object({id:e.string().min(1),provider:PaymentProviderSchema,method:PaymentMethodSchema,description:e.string().min(1)}).openapi({description:"The payment method",example:{provider:"stripe",type:"card"}});export const PaymentSchema=e.object({id:e.string().cuid().min(1),method:PaymentMethodSchema,provider:PaymentProviderSchema,status:PaymentStatusSchema,shipping:e.number().min(0).default(0),subtotal:e.number().min(0),total:e.number().min(0),discount:e.number().min(0).default(0),currency:t});
1
+ import { z } from "@hono/zod-openapi";
2
+ import { currency } from "../../schemas/currency.schema";
3
+ export const PaymentMethodSchema = z
4
+ .enum(["card", "blik", "cash_on_delivery", "paypal"])
5
+ .openapi({
6
+ description: "The payment method",
7
+ example: "card",
8
+ });
9
+ export const PaymentProviderSchema = z
10
+ .enum(["stripe", "revolut", "payu", "not_applicable"])
11
+ .openapi({
12
+ description: "The payment method",
13
+ example: "card",
14
+ });
15
+ export const PaymentStatusSchema = z
16
+ .enum(["pending", "succeeded", "refunded", "failed", "canceled"])
17
+ .openapi({
18
+ description: "The payment status",
19
+ example: "pending",
20
+ });
21
+ export const PaymentMethodDetailsSchema = z
22
+ .object({
23
+ id: z.string().min(1),
24
+ provider: PaymentProviderSchema,
25
+ method: PaymentMethodSchema,
26
+ description: z.string().min(1),
27
+ })
28
+ .openapi({
29
+ description: "The payment method",
30
+ example: {
31
+ provider: "stripe",
32
+ type: "card",
33
+ },
34
+ });
35
+ export const PaymentSchema = z.object({
36
+ id: z.string().cuid().min(1),
37
+ method: PaymentMethodSchema,
38
+ provider: PaymentProviderSchema,
39
+ status: PaymentStatusSchema,
40
+ shipping: z.number().min(0).default(0),
41
+ subtotal: z.number().min(0),
42
+ total: z.number().min(0),
43
+ discount: z.number().min(0).default(0),
44
+ currency,
45
+ });
46
+ //# sourceMappingURL=payment.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.schema.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/payment/payment.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KACpD,OAAO,CAAC;IACP,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;KACrD,OAAO,CAAC;IACP,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,MAAM;CAChB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KAChE,OAAO,CAAC;IACP,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAE,mBAAmB;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC;KACD,OAAO,CAAC;IACP,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE;QACP,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,MAAM;KACb;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,QAAQ;CACT,CAAC,CAAC"}
@@ -1 +1,100 @@
1
- import{__awaiter as e}from"tslib";import{HttpException as t}from"../../core/exceptions/http-exception";import{StripeService as i}from"./stripe.service";class r{constructor(e,t){if(this.prisma=e,this.options=t,!(null==t?void 0:t.stripe))throw new Error("Stripe options must be provided");this.stripeService=new i(e,t.stripe)}getPaymentMethods(){return e(this,void 0,void 0,function*(){const e=[];return this.options.stripe&&this.options.stripe.paymentMethods.includes("card")&&e.push({id:"stripe:card",provider:"stripe",description:"Visa, Mastercard, American Express etc..",method:"card"}),this.options.stripe&&this.options.stripe.paymentMethods.includes("blik")&&e.push({id:"stripe:blik",provider:"stripe",description:"Popular payment method in Poland",method:"blik"}),this.options.revolut&&this.options.revolut.paymentMethods.includes("card")&&e.push({id:"revolut:card",provider:"revolut",description:"Visa, Mastercard, American Express etc..",method:"card"}),this.options.revolut&&this.options.revolut.paymentMethods.includes("blik")&&e.push({id:"revolut:blik",provider:"revolut",description:"Popular payment method in Poland",method:"blik"}),e})}handleCheckoutSessionByProvider(e,i,r){if("stripe"===i.payment.provider)return this.stripeService.createCheckoutSession(e,i,r);throw new t(400,"Payment provider not supported")}createCheckoutSession(t,i,r){return e(this,void 0,void 0,function*(){const e=yield this.handleCheckoutSessionByProvider(t,i,r);return yield this.prisma.paymentSession.create({data:{payment:{connect:{id:i.payment.id}},referenceId:e.id,amount:i.payment.total,currency:i.payment.currency,rawData:JSON.stringify(e)}}),{sessionId:e.id,redirectUrl:e.url}})}processWebhookEvent(i,r,o){return e(this,void 0,void 0,function*(){if(!r)throw new t(401,"Signature is required");if("stripe"===i)return this.stripeService.handleWebhookEvent(r,o);throw new t(400,"Payment provider not supported")})}}export{r as PaymentService};
1
+ import { __awaiter } from "tslib";
2
+ import { HttpException } from "../../core/exceptions/http-exception";
3
+ import { StripeService } from "./stripe.service";
4
+ class PaymentService {
5
+ constructor(prisma, options) {
6
+ this.prisma = prisma;
7
+ this.options = options;
8
+ if (!(options === null || options === void 0 ? void 0 : options.stripe)) {
9
+ throw new Error("Stripe options must be provided");
10
+ }
11
+ this.stripeService = new StripeService(prisma, options.stripe);
12
+ }
13
+ getPaymentMethods() {
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const methods = [];
16
+ if (this.options.stripe &&
17
+ this.options.stripe.paymentMethods.includes("card")) {
18
+ methods.push({
19
+ id: "stripe:card",
20
+ provider: "stripe",
21
+ description: "Visa, Mastercard, American Express etc..",
22
+ method: "card",
23
+ });
24
+ }
25
+ if (this.options.stripe &&
26
+ this.options.stripe.paymentMethods.includes("blik")) {
27
+ methods.push({
28
+ id: "stripe:blik",
29
+ provider: "stripe",
30
+ description: "Popular payment method in Poland",
31
+ method: "blik",
32
+ });
33
+ }
34
+ if (this.options.revolut &&
35
+ this.options.revolut.paymentMethods.includes("card")) {
36
+ methods.push({
37
+ id: "revolut:card",
38
+ provider: "revolut",
39
+ description: "Visa, Mastercard, American Express etc..",
40
+ method: "card",
41
+ });
42
+ }
43
+ if (this.options.revolut &&
44
+ this.options.revolut.paymentMethods.includes("blik")) {
45
+ methods.push({
46
+ id: "revolut:blik",
47
+ provider: "revolut",
48
+ description: "Popular payment method in Poland",
49
+ method: "blik",
50
+ });
51
+ }
52
+ return methods;
53
+ });
54
+ }
55
+ handleCheckoutSessionByProvider(user, order, options) {
56
+ switch (order.payment.provider) {
57
+ case "stripe":
58
+ return this.stripeService.createCheckoutSession(user, order, options);
59
+ default:
60
+ throw new HttpException(400, "Payment provider not supported");
61
+ }
62
+ }
63
+ createCheckoutSession(user, order, options) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const session = yield this.handleCheckoutSessionByProvider(user, order, options);
66
+ yield this.prisma.paymentSession.create({
67
+ data: {
68
+ payment: {
69
+ connect: {
70
+ id: order.payment.id,
71
+ },
72
+ },
73
+ referenceId: session.id,
74
+ amount: order.payment.total,
75
+ currency: order.payment.currency,
76
+ rawData: JSON.stringify(session),
77
+ },
78
+ });
79
+ return {
80
+ sessionId: session.id,
81
+ redirectUrl: session.url,
82
+ };
83
+ });
84
+ }
85
+ processWebhookEvent(provider, signature, body) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ if (!signature) {
88
+ throw new HttpException(401, "Signature is required");
89
+ }
90
+ switch (provider) {
91
+ case "stripe":
92
+ return this.stripeService.handleWebhookEvent(signature, body);
93
+ default:
94
+ throw new HttpException(400, "Payment provider not supported");
95
+ }
96
+ });
97
+ }
98
+ }
99
+ export { PaymentService };
100
+ //# sourceMappingURL=payment.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.service.js","sourceRoot":"","sources":["../../../../../../packages/rest-api/src/features/payment/payment.service.ts"],"names":[],"mappings":"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"}