@shophost/rest-api 2.0.29 → 2.0.31

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 (352) hide show
  1. package/package.json +18 -13
  2. package/scripts/minify.mjs +110 -0
  3. package/src/app.js +1 -53
  4. package/src/core/auth/auth.schema.js +1 -41
  5. package/src/core/auth/auth.util.js +1 -44
  6. package/src/core/auth/better-auth.lib.js +1 -100
  7. package/src/core/auth/generate-password-hash.util.d.ts +0 -3
  8. package/src/core/auth/generate-password-hash.util.js +1 -30
  9. package/src/core/auth/headers.schema.js +1 -22
  10. package/src/core/auth/user.schema.js +1 -30
  11. package/src/core/db/__generated__/client/browser.d.ts +0 -128
  12. package/src/core/db/__generated__/client/browser.js +1 -18
  13. package/src/core/db/__generated__/client/client.d.ts +0 -143
  14. package/src/core/db/__generated__/client/client.js +1 -35
  15. package/src/core/db/__generated__/client/commonInputTypes.js +1 -11
  16. package/src/core/db/__generated__/client/enums.js +1 -200
  17. package/src/core/db/__generated__/client/internal/class.d.ts +0 -343
  18. package/src/core/db/__generated__/client/internal/class.js +1 -55
  19. package/src/core/db/__generated__/client/internal/prismaNamespace.d.ts +0 -234
  20. package/src/core/db/__generated__/client/internal/prismaNamespace.js +1 -541
  21. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.d.ts +0 -15
  22. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.js +1 -512
  23. package/src/core/db/__generated__/client/models/Account.d.ts +0 -628
  24. package/src/core/db/__generated__/client/models/Account.js +1 -2
  25. package/src/core/db/__generated__/client/models/Address.d.ts +0 -701
  26. package/src/core/db/__generated__/client/models/Address.js +1 -2
  27. package/src/core/db/__generated__/client/models/Campaign.d.ts +0 -638
  28. package/src/core/db/__generated__/client/models/Campaign.js +1 -2
  29. package/src/core/db/__generated__/client/models/ClosingTimes.d.ts +0 -634
  30. package/src/core/db/__generated__/client/models/ClosingTimes.js +1 -2
  31. package/src/core/db/__generated__/client/models/File.d.ts +0 -752
  32. package/src/core/db/__generated__/client/models/File.js +1 -2
  33. package/src/core/db/__generated__/client/models/Invitation.d.ts +0 -628
  34. package/src/core/db/__generated__/client/models/Invitation.js +1 -2
  35. package/src/core/db/__generated__/client/models/LegalEntity.d.ts +0 -652
  36. package/src/core/db/__generated__/client/models/LegalEntity.js +1 -2
  37. package/src/core/db/__generated__/client/models/Manufacturer.d.ts +0 -679
  38. package/src/core/db/__generated__/client/models/Manufacturer.js +1 -2
  39. package/src/core/db/__generated__/client/models/ManufacturerTranslation.d.ts +0 -628
  40. package/src/core/db/__generated__/client/models/ManufacturerTranslation.js +1 -2
  41. package/src/core/db/__generated__/client/models/Member.d.ts +0 -628
  42. package/src/core/db/__generated__/client/models/Member.js +1 -2
  43. package/src/core/db/__generated__/client/models/Modifier.d.ts +0 -662
  44. package/src/core/db/__generated__/client/models/Modifier.js +1 -2
  45. package/src/core/db/__generated__/client/models/ModifierGroup.d.ts +0 -686
  46. package/src/core/db/__generated__/client/models/ModifierGroup.js +1 -2
  47. package/src/core/db/__generated__/client/models/ModifierGroupTranslation.d.ts +0 -628
  48. package/src/core/db/__generated__/client/models/ModifierGroupTranslation.js +1 -2
  49. package/src/core/db/__generated__/client/models/OpeningTimes.d.ts +0 -634
  50. package/src/core/db/__generated__/client/models/OpeningTimes.js +1 -2
  51. package/src/core/db/__generated__/client/models/Order.d.ts +0 -700
  52. package/src/core/db/__generated__/client/models/Order.js +1 -2
  53. package/src/core/db/__generated__/client/models/OrderItem.d.ts +0 -686
  54. package/src/core/db/__generated__/client/models/OrderItem.js +1 -2
  55. package/src/core/db/__generated__/client/models/OrderItemTranslation.d.ts +0 -628
  56. package/src/core/db/__generated__/client/models/OrderItemTranslation.js +1 -2
  57. package/src/core/db/__generated__/client/models/Organization.d.ts +0 -811
  58. package/src/core/db/__generated__/client/models/Organization.js +1 -2
  59. package/src/core/db/__generated__/client/models/OrganizationConfiguration.d.ts +0 -676
  60. package/src/core/db/__generated__/client/models/OrganizationConfiguration.js +1 -2
  61. package/src/core/db/__generated__/client/models/Payment.d.ts +0 -668
  62. package/src/core/db/__generated__/client/models/Payment.js +1 -2
  63. package/src/core/db/__generated__/client/models/PaymentSession.d.ts +0 -638
  64. package/src/core/db/__generated__/client/models/PaymentSession.js +1 -2
  65. package/src/core/db/__generated__/client/models/Product.d.ts +0 -746
  66. package/src/core/db/__generated__/client/models/Product.js +1 -2
  67. package/src/core/db/__generated__/client/models/ProductCategory.d.ts +0 -689
  68. package/src/core/db/__generated__/client/models/ProductCategory.js +1 -2
  69. package/src/core/db/__generated__/client/models/ProductCategoryTranslation.d.ts +0 -628
  70. package/src/core/db/__generated__/client/models/ProductCategoryTranslation.js +1 -2
  71. package/src/core/db/__generated__/client/models/ProductSnapshot.d.ts +0 -664
  72. package/src/core/db/__generated__/client/models/ProductSnapshot.js +1 -2
  73. package/src/core/db/__generated__/client/models/ProductTranslation.d.ts +0 -628
  74. package/src/core/db/__generated__/client/models/ProductTranslation.js +1 -2
  75. package/src/core/db/__generated__/client/models/Reservation.d.ts +0 -650
  76. package/src/core/db/__generated__/client/models/Reservation.js +1 -2
  77. package/src/core/db/__generated__/client/models/Session.d.ts +0 -628
  78. package/src/core/db/__generated__/client/models/Session.js +1 -2
  79. package/src/core/db/__generated__/client/models/ShippingMethod.d.ts +0 -679
  80. package/src/core/db/__generated__/client/models/ShippingMethod.js +1 -2
  81. package/src/core/db/__generated__/client/models/ShippingZone.d.ts +0 -638
  82. package/src/core/db/__generated__/client/models/ShippingZone.js +1 -2
  83. package/src/core/db/__generated__/client/models/User.d.ts +0 -736
  84. package/src/core/db/__generated__/client/models/User.js +1 -2
  85. package/src/core/db/__generated__/client/models/Verification.d.ts +0 -592
  86. package/src/core/db/__generated__/client/models/Verification.js +1 -2
  87. package/src/core/db/__generated__/client/models.js +1 -2
  88. package/src/core/db/index.js +1 -2
  89. package/src/core/exceptions/http-exception.js +1 -9
  90. package/src/core/hono/hono.js +1 -123
  91. package/src/core/lib/prisma.d.ts +9 -1
  92. package/src/core/lib/prisma.js +1 -11
  93. package/src/core/logging/pino.js +1 -5
  94. package/src/core/notifications/email.service.d.ts +0 -15
  95. package/src/core/notifications/email.service.js +1 -116
  96. package/src/core/openapi/openapi.lib.js +1 -26
  97. package/src/core/types/google-maps.types.js +1 -2
  98. package/src/core/utils/currency.util.js +1 -11
  99. package/src/core/utils/env.util.js +1 -8
  100. package/src/core/utils/object.util.d.ts +0 -10
  101. package/src/core/utils/object.util.js +1 -39
  102. package/src/core/utils/translations.util.js +0 -2
  103. package/src/core/utils/zod.util.d.ts +0 -12
  104. package/src/core/utils/zod.util.js +1 -85
  105. package/src/db.js +1 -3
  106. package/src/features/access/access.handler.js +1 -91
  107. package/src/features/access/access.route.js +1 -220
  108. package/src/features/access/access.schema.js +1 -108
  109. package/src/features/access/access.service.js +1 -294
  110. package/src/features/cart/cart.handler.js +1 -17
  111. package/src/features/cart/cart.route.js +1 -32
  112. package/src/features/cart/cart.schema.js +1 -39
  113. package/src/features/cart/cart.service.d.ts +0 -7
  114. package/src/features/cart/cart.service.js +1 -97
  115. package/src/features/cart/cart.util.js +1 -76
  116. package/src/features/file/file.handler.js +1 -23
  117. package/src/features/file/file.route.js +1 -34
  118. package/src/features/file/file.schema.js +1 -77
  119. package/src/features/file/file.service.d.ts +0 -6
  120. package/src/features/file/file.service.js +1 -66
  121. package/src/features/health/health.handler.js +1 -10
  122. package/src/features/health/health.route.js +1 -25
  123. package/src/features/index.js +1 -16
  124. package/src/features/location/location.handler.js +1 -25
  125. package/src/features/location/location.route.js +1 -56
  126. package/src/features/location/location.schema.js +1 -50
  127. package/src/features/location/location.service.d.ts +0 -3
  128. package/src/features/location/location.service.js +1 -141
  129. package/src/features/manufacturer/manufacturer.handler.js +1 -53
  130. package/src/features/manufacturer/manufacturer.route.js +1 -97
  131. package/src/features/manufacturer/manufacturer.schema.js +1 -125
  132. package/src/features/manufacturer/manufacturer.service.d.ts +0 -19
  133. package/src/features/manufacturer/manufacturer.service.js +1 -190
  134. package/src/features/order/emails/order-confirmation.email.js +1 -229
  135. package/src/features/order/emails/order-notification.email.js +1 -229
  136. package/src/features/order/fulfilment.schema.js +1 -3
  137. package/src/features/order/order.handler.js +1 -54
  138. package/src/features/order/order.route.js +1 -111
  139. package/src/features/order/order.schema.js +1 -158
  140. package/src/features/order/order.service.d.ts +0 -15
  141. package/src/features/order/order.service.js +1 -306
  142. package/src/features/order/recipient.schema.js +1 -38
  143. package/src/features/organization/legal-entity.schema.js +1 -83
  144. package/src/features/organization/organization-configuration.schema.js +1 -115
  145. package/src/features/organization/organization.handler.js +1 -48
  146. package/src/features/organization/organization.route.js +1 -84
  147. package/src/features/organization/organization.schema.js +1 -64
  148. package/src/features/organization/organization.service.d.ts +0 -15
  149. package/src/features/organization/organization.service.js +1 -334
  150. package/src/features/payment/payment.handler.js +1 -16
  151. package/src/features/payment/payment.route.js +1 -22
  152. package/src/features/payment/payment.schema.js +1 -46
  153. package/src/features/payment/payment.service.js +1 -100
  154. package/src/features/payment/stripe.service.js +1 -164
  155. package/src/features/product/product-modifier.schema.js +1 -84
  156. package/src/features/product/product.handler.js +1 -87
  157. package/src/features/product/product.route.js +1 -179
  158. package/src/features/product/product.schema.js +1 -143
  159. package/src/features/product/product.service.d.ts +0 -25
  160. package/src/features/product/product.service.js +1 -440
  161. package/src/features/product-category/product-category.handler.js +1 -59
  162. package/src/features/product-category/product-category.route.js +1 -139
  163. package/src/features/product-category/product-category.schema.js +1 -86
  164. package/src/features/product-category/product-category.service.d.ts +0 -22
  165. package/src/features/product-category/product-category.service.js +1 -220
  166. package/src/features/reservation/emails/reservation-cancellation.email.js +1 -82
  167. package/src/features/reservation/emails/reservation-confirmation.email.js +1 -82
  168. package/src/features/reservation/emails/reservation-notification.email.js +1 -93
  169. package/src/features/reservation/reservation.handler.js +1 -65
  170. package/src/features/reservation/reservation.route.js +1 -167
  171. package/src/features/reservation/reservation.schema.js +1 -51
  172. package/src/features/reservation/reservation.service.d.ts +0 -18
  173. package/src/features/reservation/reservation.service.js +1 -231
  174. package/src/features/shipping/shipping.handler.js +1 -32
  175. package/src/features/shipping/shipping.route.js +1 -51
  176. package/src/features/shipping/shipping.service.d.ts +0 -7
  177. package/src/features/shipping/shipping.service.js +1 -96
  178. package/src/features/shipping-method/shipping-method.handler.js +1 -60
  179. package/src/features/shipping-method/shipping-method.route.js +1 -144
  180. package/src/features/shipping-method/shipping-method.schema.js +1 -48
  181. package/src/features/shipping-method/shipping-method.service.d.ts +0 -25
  182. package/src/features/shipping-method/shipping-method.service.js +1 -229
  183. package/src/features/shipping-method/shipping-zone.schema.js +1 -31
  184. package/src/features/webhook/webhook.handler.js +1 -50
  185. package/src/features/webhook/webhook.route.js +1 -33
  186. package/src/index.js +1 -6
  187. package/src/integrations/next.js +1 -82
  188. package/src/schemas/address.schema.d.ts +0 -8
  189. package/src/schemas/address.schema.js +1 -112
  190. package/src/schemas/currency.schema.d.ts +0 -42
  191. package/src/schemas/currency.schema.js +1 -118
  192. package/src/schemas/error.schema.js +1 -12
  193. package/src/schemas/index.js +1 -29
  194. package/src/schemas/locales.schema.js +1 -238
  195. package/src/schemas/number.schema.js +1 -29
  196. package/src/schemas/pagination.schema.js +1 -54
  197. package/src/schemas/params.schema.js +1 -20
  198. package/src/schemas/queries.schema.js +1 -6
  199. package/src/test/global-setup.d.ts +1 -0
  200. package/src/test/global-setup.js +1 -0
  201. package/src/test/integration/api-fixtures.d.ts +4 -16
  202. package/src/test/integration/api-fixtures.js +1 -225
  203. package/src/test/integration/seed.d.ts +81 -0
  204. package/src/test/integration/seed.js +1 -0
  205. package/src/test/integration/test-helpers.d.ts +107 -924
  206. package/src/test/integration/test-helpers.js +1 -1100
  207. package/src/test/setup-test-env.d.ts +1 -1
  208. package/src/test/setup-test-env.js +1 -29
  209. package/src/app.js.map +0 -1
  210. package/src/core/auth/auth.schema.js.map +0 -1
  211. package/src/core/auth/auth.util.js.map +0 -1
  212. package/src/core/auth/better-auth.lib.js.map +0 -1
  213. package/src/core/auth/generate-password-hash.util.js.map +0 -1
  214. package/src/core/auth/headers.schema.js.map +0 -1
  215. package/src/core/auth/user.schema.js.map +0 -1
  216. package/src/core/db/__generated__/client/browser.js.map +0 -1
  217. package/src/core/db/__generated__/client/client.js.map +0 -1
  218. package/src/core/db/__generated__/client/commonInputTypes.js.map +0 -1
  219. package/src/core/db/__generated__/client/enums.js.map +0 -1
  220. package/src/core/db/__generated__/client/internal/class.js.map +0 -1
  221. package/src/core/db/__generated__/client/internal/prismaNamespace.js.map +0 -1
  222. package/src/core/db/__generated__/client/internal/prismaNamespaceBrowser.js.map +0 -1
  223. package/src/core/db/__generated__/client/models/Account.js.map +0 -1
  224. package/src/core/db/__generated__/client/models/Address.js.map +0 -1
  225. package/src/core/db/__generated__/client/models/Campaign.js.map +0 -1
  226. package/src/core/db/__generated__/client/models/ClosingTimes.js.map +0 -1
  227. package/src/core/db/__generated__/client/models/File.js.map +0 -1
  228. package/src/core/db/__generated__/client/models/Invitation.js.map +0 -1
  229. package/src/core/db/__generated__/client/models/LegalEntity.js.map +0 -1
  230. package/src/core/db/__generated__/client/models/Manufacturer.js.map +0 -1
  231. package/src/core/db/__generated__/client/models/ManufacturerTranslation.js.map +0 -1
  232. package/src/core/db/__generated__/client/models/Member.js.map +0 -1
  233. package/src/core/db/__generated__/client/models/Modifier.js.map +0 -1
  234. package/src/core/db/__generated__/client/models/ModifierGroup.js.map +0 -1
  235. package/src/core/db/__generated__/client/models/ModifierGroupTranslation.js.map +0 -1
  236. package/src/core/db/__generated__/client/models/OpeningTimes.js.map +0 -1
  237. package/src/core/db/__generated__/client/models/Order.js.map +0 -1
  238. package/src/core/db/__generated__/client/models/OrderItem.js.map +0 -1
  239. package/src/core/db/__generated__/client/models/OrderItemTranslation.js.map +0 -1
  240. package/src/core/db/__generated__/client/models/Organization.js.map +0 -1
  241. package/src/core/db/__generated__/client/models/OrganizationConfiguration.js.map +0 -1
  242. package/src/core/db/__generated__/client/models/Payment.js.map +0 -1
  243. package/src/core/db/__generated__/client/models/PaymentSession.js.map +0 -1
  244. package/src/core/db/__generated__/client/models/Product.js.map +0 -1
  245. package/src/core/db/__generated__/client/models/ProductCategory.js.map +0 -1
  246. package/src/core/db/__generated__/client/models/ProductCategoryTranslation.js.map +0 -1
  247. package/src/core/db/__generated__/client/models/ProductSnapshot.js.map +0 -1
  248. package/src/core/db/__generated__/client/models/ProductTranslation.js.map +0 -1
  249. package/src/core/db/__generated__/client/models/Reservation.js.map +0 -1
  250. package/src/core/db/__generated__/client/models/Session.js.map +0 -1
  251. package/src/core/db/__generated__/client/models/ShippingMethod.js.map +0 -1
  252. package/src/core/db/__generated__/client/models/ShippingZone.js.map +0 -1
  253. package/src/core/db/__generated__/client/models/User.js.map +0 -1
  254. package/src/core/db/__generated__/client/models/Verification.js.map +0 -1
  255. package/src/core/db/__generated__/client/models.js.map +0 -1
  256. package/src/core/db/index.js.map +0 -1
  257. package/src/core/exceptions/http-exception.js.map +0 -1
  258. package/src/core/hono/hono.js.map +0 -1
  259. package/src/core/lib/prisma.js.map +0 -1
  260. package/src/core/logging/pino.js.map +0 -1
  261. package/src/core/notifications/email.service.js.map +0 -1
  262. package/src/core/openapi/openapi.lib.js.map +0 -1
  263. package/src/core/types/google-maps.types.js.map +0 -1
  264. package/src/core/utils/currency.util.js.map +0 -1
  265. package/src/core/utils/env.util.js.map +0 -1
  266. package/src/core/utils/object.util.js.map +0 -1
  267. package/src/core/utils/translations.util.js.map +0 -1
  268. package/src/core/utils/zod.util.js.map +0 -1
  269. package/src/db.js.map +0 -1
  270. package/src/features/access/access.handler.js.map +0 -1
  271. package/src/features/access/access.route.js.map +0 -1
  272. package/src/features/access/access.schema.js.map +0 -1
  273. package/src/features/access/access.service.js.map +0 -1
  274. package/src/features/cart/cart.handler.js.map +0 -1
  275. package/src/features/cart/cart.route.js.map +0 -1
  276. package/src/features/cart/cart.schema.js.map +0 -1
  277. package/src/features/cart/cart.service.js.map +0 -1
  278. package/src/features/cart/cart.util.js.map +0 -1
  279. package/src/features/file/file.handler.js.map +0 -1
  280. package/src/features/file/file.route.js.map +0 -1
  281. package/src/features/file/file.schema.js.map +0 -1
  282. package/src/features/file/file.service.js.map +0 -1
  283. package/src/features/health/health.handler.js.map +0 -1
  284. package/src/features/health/health.route.js.map +0 -1
  285. package/src/features/index.js.map +0 -1
  286. package/src/features/location/location.handler.js.map +0 -1
  287. package/src/features/location/location.route.js.map +0 -1
  288. package/src/features/location/location.schema.js.map +0 -1
  289. package/src/features/location/location.service.js.map +0 -1
  290. package/src/features/manufacturer/manufacturer.handler.js.map +0 -1
  291. package/src/features/manufacturer/manufacturer.route.js.map +0 -1
  292. package/src/features/manufacturer/manufacturer.schema.js.map +0 -1
  293. package/src/features/manufacturer/manufacturer.service.js.map +0 -1
  294. package/src/features/order/emails/order-confirmation.email.js.map +0 -1
  295. package/src/features/order/emails/order-notification.email.js.map +0 -1
  296. package/src/features/order/fulfilment.schema.js.map +0 -1
  297. package/src/features/order/order.handler.js.map +0 -1
  298. package/src/features/order/order.route.js.map +0 -1
  299. package/src/features/order/order.schema.js.map +0 -1
  300. package/src/features/order/order.service.js.map +0 -1
  301. package/src/features/order/recipient.schema.js.map +0 -1
  302. package/src/features/organization/legal-entity.schema.js.map +0 -1
  303. package/src/features/organization/organization-configuration.schema.js.map +0 -1
  304. package/src/features/organization/organization.handler.js.map +0 -1
  305. package/src/features/organization/organization.route.js.map +0 -1
  306. package/src/features/organization/organization.schema.js.map +0 -1
  307. package/src/features/organization/organization.service.js.map +0 -1
  308. package/src/features/payment/payment.handler.js.map +0 -1
  309. package/src/features/payment/payment.route.js.map +0 -1
  310. package/src/features/payment/payment.schema.js.map +0 -1
  311. package/src/features/payment/payment.service.js.map +0 -1
  312. package/src/features/payment/stripe.service.js.map +0 -1
  313. package/src/features/product/product-modifier.schema.js.map +0 -1
  314. package/src/features/product/product.handler.js.map +0 -1
  315. package/src/features/product/product.route.js.map +0 -1
  316. package/src/features/product/product.schema.js.map +0 -1
  317. package/src/features/product/product.service.js.map +0 -1
  318. package/src/features/product-category/product-category.handler.js.map +0 -1
  319. package/src/features/product-category/product-category.route.js.map +0 -1
  320. package/src/features/product-category/product-category.schema.js.map +0 -1
  321. package/src/features/product-category/product-category.service.js.map +0 -1
  322. package/src/features/reservation/emails/reservation-cancellation.email.js.map +0 -1
  323. package/src/features/reservation/emails/reservation-confirmation.email.js.map +0 -1
  324. package/src/features/reservation/emails/reservation-notification.email.js.map +0 -1
  325. package/src/features/reservation/reservation.handler.js.map +0 -1
  326. package/src/features/reservation/reservation.route.js.map +0 -1
  327. package/src/features/reservation/reservation.schema.js.map +0 -1
  328. package/src/features/reservation/reservation.service.js.map +0 -1
  329. package/src/features/shipping/shipping.handler.js.map +0 -1
  330. package/src/features/shipping/shipping.route.js.map +0 -1
  331. package/src/features/shipping/shipping.service.js.map +0 -1
  332. package/src/features/shipping-method/shipping-method.handler.js.map +0 -1
  333. package/src/features/shipping-method/shipping-method.route.js.map +0 -1
  334. package/src/features/shipping-method/shipping-method.schema.js.map +0 -1
  335. package/src/features/shipping-method/shipping-method.service.js.map +0 -1
  336. package/src/features/shipping-method/shipping-zone.schema.js.map +0 -1
  337. package/src/features/webhook/webhook.handler.js.map +0 -1
  338. package/src/features/webhook/webhook.route.js.map +0 -1
  339. package/src/index.js.map +0 -1
  340. package/src/integrations/next.js.map +0 -1
  341. package/src/schemas/address.schema.js.map +0 -1
  342. package/src/schemas/currency.schema.js.map +0 -1
  343. package/src/schemas/error.schema.js.map +0 -1
  344. package/src/schemas/index.js.map +0 -1
  345. package/src/schemas/locales.schema.js.map +0 -1
  346. package/src/schemas/number.schema.js.map +0 -1
  347. package/src/schemas/pagination.schema.js.map +0 -1
  348. package/src/schemas/params.schema.js.map +0 -1
  349. package/src/schemas/queries.schema.js.map +0 -1
  350. package/src/test/integration/api-fixtures.js.map +0 -1
  351. package/src/test/integration/test-helpers.js.map +0 -1
  352. package/src/test/setup-test-env.js.map +0 -1
@@ -1,334 +1 @@
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
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,16 +1 @@
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
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,22 +1 @@
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
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,46 +1 @@
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
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,100 +1 @@
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
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};