@nextblock-cms/ecom 0.20.3 → 0.21.1

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 (446) hide show
  1. package/README.md +43 -0
  2. package/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/index.cjs +1 -0
  4. package/index.es.js +38 -146
  5. package/lib/CurrencyProvider.cjs +1 -0
  6. package/lib/CurrencyProvider.d.ts +1 -1
  7. package/lib/CurrencyProvider.es.js +85 -95
  8. package/lib/PaymentReadinessProvider.cjs +1 -0
  9. package/lib/PaymentReadinessProvider.d.ts +1 -1
  10. package/lib/PaymentReadinessProvider.es.js +24 -27
  11. package/lib/cart-store.cjs +1 -0
  12. package/lib/cart-store.es.js +109 -121
  13. package/lib/components/AccountNavigationMenu.cjs +1 -0
  14. package/lib/components/AccountNavigationMenu.d.ts +1 -1
  15. package/lib/components/AccountNavigationMenu.es.js +36 -50
  16. package/lib/components/AddToCartButton.cjs +1 -0
  17. package/lib/components/AddToCartButton.d.ts +1 -1
  18. package/lib/components/AddToCartButton.es.js +94 -89
  19. package/lib/components/Cart.cjs +1 -0
  20. package/lib/components/Cart.d.ts +1 -1
  21. package/lib/components/Cart.es.js +261 -180
  22. package/lib/components/CartDrawer.cjs +1 -0
  23. package/lib/components/CartDrawer.d.ts +1 -1
  24. package/lib/components/CartDrawer.es.js +218 -148
  25. package/lib/components/CartIcon.cjs +1 -0
  26. package/lib/components/CartIcon.d.ts +1 -1
  27. package/lib/components/CartIcon.es.js +33 -35
  28. package/lib/components/Checkout.cjs +1 -0
  29. package/lib/components/Checkout.d.ts +1 -1
  30. package/lib/components/Checkout.es.js +1092 -1108
  31. package/lib/components/CouponForm.cjs +1 -0
  32. package/lib/components/CouponForm.d.ts +1 -1
  33. package/lib/components/CouponForm.es.js +136 -148
  34. package/lib/components/CurrencySwitcher.cjs +1 -0
  35. package/lib/components/CurrencySwitcher.d.ts +1 -1
  36. package/lib/components/CurrencySwitcher.es.js +22 -18
  37. package/lib/components/CustomerProfileForm.cjs +1 -0
  38. package/lib/components/CustomerProfileForm.es.js +454 -313
  39. package/lib/components/FeaturedProduct.cjs +1 -0
  40. package/lib/components/FeaturedProduct.d.ts +1 -1
  41. package/lib/components/FeaturedProduct.es.js +98 -83
  42. package/lib/components/FreemiusLicensePanel.cjs +1 -0
  43. package/lib/components/FreemiusLicensePanel.d.ts +1 -1
  44. package/lib/components/FreemiusLicensePanel.es.js +70 -65
  45. package/lib/components/InvoiceDocument.cjs +1 -0
  46. package/lib/components/InvoiceDocument.es.js +256 -192
  47. package/lib/components/InvoiceViewerShell.cjs +29 -0
  48. package/lib/components/InvoiceViewerShell.d.ts +1 -1
  49. package/lib/components/InvoiceViewerShell.es.js +75 -106
  50. package/lib/components/ProductCard.cjs +1 -0
  51. package/lib/components/ProductCard.d.ts +1 -1
  52. package/lib/components/ProductCard.es.js +186 -171
  53. package/lib/components/ProductDetailsLayout.cjs +1 -0
  54. package/lib/components/ProductDetailsLayout.es.js +405 -404
  55. package/lib/components/ProductGallery.cjs +1 -0
  56. package/lib/components/ProductGallery.d.ts +1 -1
  57. package/lib/components/ProductGallery.es.js +51 -54
  58. package/lib/components/ProductGrid.cjs +1 -0
  59. package/lib/components/ProductGrid.d.ts +1 -1
  60. package/lib/components/ProductGrid.es.js +23 -25
  61. package/lib/components/ShippingEstimator.cjs +1 -0
  62. package/lib/components/ShippingEstimator.d.ts +1 -1
  63. package/lib/components/ShippingEstimator.es.js +158 -153
  64. package/lib/components/ShortDescription.cjs +1 -0
  65. package/lib/components/ShortDescription.es.js +17 -17
  66. package/lib/components/SimpleTiptapRenderer.cjs +1 -0
  67. package/lib/components/SimpleTiptapRenderer.es.js +238 -211
  68. package/lib/components/SubscriptionSelector.cjs +1 -0
  69. package/lib/components/SubscriptionSelector.es.js +159 -154
  70. package/lib/countries.cjs +1 -0
  71. package/lib/countries.es.js +232 -75
  72. package/lib/coupon-server.cjs +1 -0
  73. package/lib/coupon-server.es.js +180 -224
  74. package/lib/coupons.cjs +1 -0
  75. package/lib/coupons.es.js +12 -14
  76. package/lib/currency-constants.cjs +1 -0
  77. package/lib/currency-constants.es.js +4 -4
  78. package/lib/currency-rest-client.cjs +1 -0
  79. package/lib/currency-rest-client.es.js +15 -22
  80. package/lib/currency-store.cjs +1 -0
  81. package/lib/currency-store.es.js +20 -27
  82. package/lib/currency-sync.cjs +1 -0
  83. package/lib/currency-sync.es.js +124 -170
  84. package/lib/currency.cjs +1 -0
  85. package/lib/currency.es.js +242 -310
  86. package/lib/customer-addresses.cjs +1 -0
  87. package/lib/customer-addresses.es.js +80 -109
  88. package/lib/customer-orders.cjs +1 -0
  89. package/lib/customer-orders.es.js +31 -43
  90. package/lib/customer.cjs +1 -0
  91. package/lib/customer.es.js +43 -52
  92. package/lib/export-helpers.cjs +1 -0
  93. package/lib/export-helpers.es.js +53 -52
  94. package/lib/factory.cjs +1 -0
  95. package/lib/factory.es.js +10 -7
  96. package/lib/freemius-coupons.cjs +1 -0
  97. package/lib/freemius-coupons.es.js +245 -262
  98. package/lib/freemius-license-claim.cjs +1 -0
  99. package/lib/freemius-license-claim.es.js +87 -71
  100. package/lib/freemius-license.cjs +1 -0
  101. package/lib/freemius-license.es.js +32 -39
  102. package/lib/freemius-order-sync.cjs +1 -0
  103. package/lib/freemius-order-sync.es.js +226 -290
  104. package/lib/freemius-trial-provision.cjs +1 -0
  105. package/lib/freemius-trial-provision.es.js +136 -130
  106. package/lib/inventory-settings.cjs +1 -0
  107. package/lib/inventory-settings.es.js +69 -77
  108. package/lib/invoice-server.cjs +33 -0
  109. package/lib/invoice-server.es.js +94 -141
  110. package/lib/invoice-ui.cjs +1 -0
  111. package/lib/invoice-ui.es.js +50 -66
  112. package/lib/invoice.cjs +1 -0
  113. package/lib/invoice.es.js +85 -94
  114. package/lib/order-inventory.cjs +61 -0
  115. package/lib/order-inventory.es.js +67 -79
  116. package/lib/order-tax-details.cjs +1 -0
  117. package/lib/order-tax-details.es.js +142 -153
  118. package/lib/pages/cms/coupons/CouponEditorForm.cjs +1 -0
  119. package/lib/pages/cms/coupons/CouponEditorForm.d.ts +1 -1
  120. package/lib/pages/cms/coupons/CouponEditorForm.es.js +227 -185
  121. package/lib/pages/cms/coupons/CouponsPage.cjs +5 -0
  122. package/lib/pages/cms/coupons/CouponsPage.d.ts +1 -1
  123. package/lib/pages/cms/coupons/CouponsPage.es.js +235 -166
  124. package/lib/pages/cms/coupons/CreateCouponDialog.cjs +1 -0
  125. package/lib/pages/cms/coupons/CreateCouponDialog.d.ts +1 -1
  126. package/lib/pages/cms/coupons/CreateCouponDialog.es.js +35 -34
  127. package/lib/pages/cms/coupons/EditCouponPage.cjs +1 -0
  128. package/lib/pages/cms/coupons/EditCouponPage.d.ts +1 -1
  129. package/lib/pages/cms/coupons/EditCouponPage.es.js +47 -47
  130. package/lib/pages/cms/coupons/ProductScopePicker.cjs +1 -0
  131. package/lib/pages/cms/coupons/ProductScopePicker.d.ts +1 -1
  132. package/lib/pages/cms/coupons/ProductScopePicker.es.js +128 -117
  133. package/lib/pages/cms/coupons/actions.cjs +1 -0
  134. package/lib/pages/cms/coupons/actions.es.js +112 -115
  135. package/lib/pages/cms/coupons/index.cjs +1 -0
  136. package/lib/pages/cms/coupons/index.es.js +3 -0
  137. package/lib/pages/cms/coupons/product-options.cjs +1 -0
  138. package/lib/pages/cms/coupons/product-options.es.js +21 -23
  139. package/lib/pages/cms/orders/ExportReportsDialog.cjs +1 -0
  140. package/lib/pages/cms/orders/ExportReportsDialog.es.js +135 -129
  141. package/lib/pages/cms/orders/MarkPaidButton.d.ts +1 -1
  142. package/lib/pages/cms/orders/OrderDetailPage.cjs +1 -0
  143. package/lib/pages/cms/orders/OrderDetailPage.d.ts +1 -1
  144. package/lib/pages/cms/orders/OrderDetailPage.es.js +186 -134
  145. package/lib/pages/cms/orders/OrderPrintButton.cjs +1 -0
  146. package/lib/pages/cms/orders/OrderPrintButton.d.ts +1 -1
  147. package/lib/pages/cms/orders/OrderPrintButton.es.js +15 -21
  148. package/lib/pages/cms/orders/OrderStatusForm.cjs +1 -0
  149. package/lib/pages/cms/orders/OrderStatusForm.d.ts +1 -1
  150. package/lib/pages/cms/orders/OrderStatusForm.es.js +85 -69
  151. package/lib/pages/cms/orders/OrdersPage.cjs +1 -0
  152. package/lib/pages/cms/orders/OrdersPage.d.ts +1 -1
  153. package/lib/pages/cms/orders/OrdersPage.es.js +170 -102
  154. package/lib/pages/cms/orders/actions.cjs +7 -0
  155. package/lib/pages/cms/orders/actions.es.js +53 -69
  156. package/lib/pages/cms/orders/export-actions.cjs +1 -0
  157. package/lib/pages/cms/orders/export-actions.es.js +23 -26
  158. package/lib/pages/cms/orders/index.cjs +1 -0
  159. package/lib/pages/cms/orders/index.es.js +6 -0
  160. package/lib/pages/cms/orders/server-actions.cjs +1 -0
  161. package/lib/pages/cms/orders/server-actions.es.js +60 -51
  162. package/lib/pages/cms/payments/PaymentsClient.cjs +1 -0
  163. package/lib/pages/cms/payments/PaymentsClient.d.ts +1 -1
  164. package/lib/pages/cms/payments/PaymentsClient.es.js +316 -346
  165. package/lib/pages/cms/payments/PaymentsPage.cjs +1 -0
  166. package/lib/pages/cms/payments/PaymentsPage.d.ts +1 -1
  167. package/lib/pages/cms/payments/PaymentsPage.es.js +29 -32
  168. package/lib/pages/cms/payments/actions.cjs +1 -0
  169. package/lib/pages/cms/payments/actions.es.js +38 -48
  170. package/lib/pages/cms/payments/index.cjs +1 -0
  171. package/lib/pages/cms/payments/index.es.js +3 -0
  172. package/lib/pages/cms/payments/queries.cjs +1 -0
  173. package/lib/pages/cms/payments/queries.es.js +38 -48
  174. package/lib/pages/cms/products/ProductsPage.cjs +1 -0
  175. package/lib/pages/cms/products/ProductsPage.d.ts +1 -1
  176. package/lib/pages/cms/products/ProductsPage.es.js +63 -66
  177. package/lib/pages/cms/products/[id]/edit/EditProductPage.cjs +1 -0
  178. package/lib/pages/cms/products/[id]/edit/EditProductPage.d.ts +1 -1
  179. package/lib/pages/cms/products/[id]/edit/EditProductPage.es.js +139 -0
  180. package/lib/pages/cms/products/actions.cjs +44 -0
  181. package/lib/pages/cms/products/actions.es.js +121 -162
  182. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs +1 -0
  183. package/lib/pages/cms/products/attributes/AttributeManagementPage.d.ts +1 -1
  184. package/lib/pages/cms/products/attributes/AttributeManagementPage.es.js +55 -47
  185. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs +1 -0
  186. package/lib/pages/cms/products/attributes/components/AttributeManager.d.ts +1 -1
  187. package/lib/pages/cms/products/attributes/components/AttributeManager.es.js +285 -290
  188. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs +1 -0
  189. package/lib/pages/cms/products/categories/CategoryManagementPage.d.ts +1 -1
  190. package/lib/pages/cms/products/categories/CategoryManagementPage.es.js +43 -35
  191. package/lib/pages/cms/products/categories/components/CategoryManager.cjs +1 -0
  192. package/lib/pages/cms/products/categories/components/CategoryManager.es.js +315 -262
  193. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs +1 -0
  194. package/lib/pages/cms/products/components/CopyProductFromLanguage.es.js +115 -113
  195. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs +1 -0
  196. package/lib/pages/cms/products/components/CurrencyPriceFields.d.ts +1 -1
  197. package/lib/pages/cms/products/components/CurrencyPriceFields.es.js +136 -145
  198. package/lib/pages/cms/products/components/DeleteProductButton.cjs +1 -0
  199. package/lib/pages/cms/products/components/DeleteProductButton.d.ts +1 -1
  200. package/lib/pages/cms/products/components/DeleteProductButton.es.js +35 -47
  201. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs +1 -0
  202. package/lib/pages/cms/products/components/FreemiusPricingDashboard.d.ts +1 -1
  203. package/lib/pages/cms/products/components/FreemiusPricingDashboard.es.js +106 -84
  204. package/lib/pages/cms/products/components/ProductCategorySelector.cjs +1 -0
  205. package/lib/pages/cms/products/components/ProductCategorySelector.es.js +156 -159
  206. package/lib/pages/cms/products/components/ProductForm.cjs +1 -0
  207. package/lib/pages/cms/products/components/ProductForm.es.js +872 -693
  208. package/lib/pages/cms/products/components/ProductMediaManager.cjs +1 -0
  209. package/lib/pages/cms/products/components/ProductMediaManager.es.js +106 -103
  210. package/lib/pages/cms/products/components/ProductsBulkTable.cjs +1 -0
  211. package/lib/pages/cms/products/components/ProductsBulkTable.d.ts +1 -1
  212. package/lib/pages/cms/products/components/ProductsBulkTable.es.js +303 -294
  213. package/lib/pages/cms/products/components/SaleScheduleFields.cjs +1 -0
  214. package/lib/pages/cms/products/components/SaleScheduleFields.d.ts +1 -1
  215. package/lib/pages/cms/products/components/SaleScheduleFields.es.js +111 -134
  216. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs +1 -0
  217. package/lib/pages/cms/products/components/SyncFreemiusButton.d.ts +1 -1
  218. package/lib/pages/cms/products/components/SyncFreemiusButton.es.js +29 -35
  219. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs +5 -0
  220. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.d.ts +1 -1
  221. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.es.js +36 -48
  222. package/lib/pages/cms/products/components/SyncProductForm.d.ts +1 -1
  223. package/lib/pages/cms/products/components/VariationsEditor.cjs +1 -0
  224. package/lib/pages/cms/products/components/VariationsEditor.d.ts +1 -1
  225. package/lib/pages/cms/products/components/VariationsEditor.es.js +396 -405
  226. package/lib/pages/cms/products/index.cjs +1 -0
  227. package/lib/pages/cms/products/index.es.js +8 -0
  228. package/lib/pages/cms/products/inventory/InventoryPage.cjs +1 -0
  229. package/lib/pages/cms/products/inventory/InventoryPage.d.ts +1 -1
  230. package/lib/pages/cms/products/inventory/InventoryPage.es.js +21 -15
  231. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs +2 -0
  232. package/lib/pages/cms/products/inventory/InventoryTableClient.d.ts +1 -1
  233. package/lib/pages/cms/products/inventory/InventoryTableClient.es.js +230 -209
  234. package/lib/pages/cms/products/inventory/actions.cjs +3 -0
  235. package/lib/pages/cms/products/inventory/actions.es.js +83 -91
  236. package/lib/pages/cms/products/new/NewProductPage.cjs +1 -0
  237. package/lib/pages/cms/products/new/NewProductPage.d.ts +1 -1
  238. package/lib/pages/cms/products/new/NewProductPage.es.js +58 -74
  239. package/lib/pages/cms/products/product-price-sync.cjs +1 -0
  240. package/lib/pages/cms/products/product-price-sync.es.js +74 -89
  241. package/lib/pages/cms/products/server-actions.cjs +1 -0
  242. package/lib/pages/cms/products/server-actions.es.js +250 -233
  243. package/lib/pages/cms/shipping/ShippingPage.cjs +5 -0
  244. package/lib/pages/cms/shipping/ShippingPage.es.js +287 -209
  245. package/lib/pages/cms/shipping/components/RateForm.cjs +1 -0
  246. package/lib/pages/cms/shipping/components/RateForm.d.ts +1 -1
  247. package/lib/pages/cms/shipping/components/RateForm.es.js +439 -436
  248. package/lib/pages/cms/shipping/components/ZoneForm.cjs +1 -0
  249. package/lib/pages/cms/shipping/components/ZoneForm.es.js +245 -224
  250. package/lib/pages/cms/shipping/index.cjs +1 -0
  251. package/lib/pages/cms/shipping/index.es.js +3 -0
  252. package/lib/pages/cms/shipping/server-actions.cjs +1 -0
  253. package/lib/pages/cms/shipping/server-actions.es.js +131 -149
  254. package/lib/pages/cms/taxes/TaxesPage.cjs +1 -0
  255. package/lib/pages/cms/taxes/TaxesPage.d.ts +1 -1
  256. package/lib/pages/cms/taxes/TaxesPage.es.js +211 -169
  257. package/lib/pages/cms/taxes/actions.cjs +1 -0
  258. package/lib/pages/cms/taxes/actions.es.js +41 -53
  259. package/lib/pages/cms/taxes/components/TaxRateForm.cjs +1 -0
  260. package/lib/pages/cms/taxes/components/TaxRateForm.d.ts +1 -1
  261. package/lib/pages/cms/taxes/components/TaxRateForm.es.js +112 -99
  262. package/lib/pages/cms/taxes/index.cjs +1 -0
  263. package/lib/pages/cms/taxes/index.es.js +3 -0
  264. package/lib/payment-config.cjs +1 -0
  265. package/lib/payment-config.es.js +110 -126
  266. package/lib/product-actions.cjs +238 -0
  267. package/lib/product-actions.es.js +289 -544
  268. package/lib/product-context.cjs +1 -0
  269. package/lib/product-context.es.js +13 -15
  270. package/lib/product-schema.cjs +1 -0
  271. package/lib/product-schema.es.js +99 -134
  272. package/lib/providers/freemius.cjs +1 -0
  273. package/lib/providers/freemius.es.js +446 -530
  274. package/lib/providers/stripe.cjs +1 -0
  275. package/lib/providers/stripe.es.js +417 -477
  276. package/lib/server-actions/coupon-actions.cjs +1 -0
  277. package/lib/server-actions/coupon-actions.es.js +22 -22
  278. package/lib/server-actions/customer-actions.cjs +1 -0
  279. package/lib/server-actions/customer-actions.es.js +26 -28
  280. package/lib/server-actions/product-actions.cjs +1 -0
  281. package/lib/server-actions/product-actions.es.js +9 -15
  282. package/lib/server-actions/shipping-actions.cjs +1 -0
  283. package/lib/server-actions/shipping-actions.es.js +27 -24
  284. package/lib/server-actions/tax-actions.cjs +1 -0
  285. package/lib/server-actions/tax-actions.es.js +33 -39
  286. package/lib/shared-inventory.cjs +15 -0
  287. package/lib/shared-inventory.es.js +111 -160
  288. package/lib/shipping/resolver.cjs +7 -0
  289. package/lib/shipping/resolver.es.js +44 -61
  290. package/lib/shipping-rate-currency.cjs +1 -0
  291. package/lib/shipping-rate-currency.es.js +52 -67
  292. package/lib/states.cjs +1 -0
  293. package/lib/states.es.js +333 -154
  294. package/lib/stripe/checkout.cjs +1 -0
  295. package/lib/stripe/checkout.es.js +125 -181
  296. package/lib/stripe/client.cjs +1 -0
  297. package/lib/stripe/client.es.js +14 -19
  298. package/lib/stripe/order-sync.cjs +1 -0
  299. package/lib/stripe/order-sync.es.js +106 -126
  300. package/lib/stripe/webhooks.cjs +1 -0
  301. package/lib/stripe/webhooks.es.js +37 -31
  302. package/lib/tax-calculation.cjs +1 -0
  303. package/lib/tax-calculation.es.js +84 -98
  304. package/lib/trials.cjs +1 -0
  305. package/lib/trials.es.js +24 -30
  306. package/lib/types.cjs +1 -0
  307. package/lib/types.es.js +21 -27
  308. package/lib/use-cart.cjs +1 -0
  309. package/lib/use-cart.es.js +38 -40
  310. package/lib/use-price-formatter.cjs +1 -0
  311. package/lib/use-price-formatter.es.js +10 -11
  312. package/lib/variation-utils.cjs +1 -0
  313. package/lib/variation-utils.es.js +199 -261
  314. package/lib/zod-config.cjs +1 -0
  315. package/lib/zod-config.es.js +5 -6
  316. package/package.json +22 -21
  317. package/server.cjs +1 -0
  318. package/server.es.js +56 -211
  319. package/index.cjs.js +0 -1
  320. package/lib/CurrencyProvider.cjs.js +0 -1
  321. package/lib/PaymentReadinessProvider.cjs.js +0 -1
  322. package/lib/cart-store.cjs.js +0 -1
  323. package/lib/components/AccountNavigationMenu.cjs.js +0 -1
  324. package/lib/components/AddToCartButton.cjs.js +0 -1
  325. package/lib/components/Cart.cjs.js +0 -1
  326. package/lib/components/CartDrawer.cjs.js +0 -1
  327. package/lib/components/CartIcon.cjs.js +0 -1
  328. package/lib/components/Checkout.cjs.js +0 -1
  329. package/lib/components/CouponForm.cjs.js +0 -1
  330. package/lib/components/CurrencySwitcher.cjs.js +0 -1
  331. package/lib/components/CustomerProfileForm.cjs.js +0 -1
  332. package/lib/components/FeaturedProduct.cjs.js +0 -1
  333. package/lib/components/FreemiusLicensePanel.cjs.js +0 -1
  334. package/lib/components/InvoiceDocument.cjs.js +0 -1
  335. package/lib/components/InvoiceViewerShell.cjs.js +0 -29
  336. package/lib/components/ProductCard.cjs.js +0 -1
  337. package/lib/components/ProductDetailsLayout.cjs.js +0 -1
  338. package/lib/components/ProductGallery.cjs.js +0 -1
  339. package/lib/components/ProductGrid.cjs.js +0 -1
  340. package/lib/components/ShippingEstimator.cjs.js +0 -1
  341. package/lib/components/ShortDescription.cjs.js +0 -1
  342. package/lib/components/SimpleTiptapRenderer.cjs.js +0 -1
  343. package/lib/components/SubscriptionSelector.cjs.js +0 -1
  344. package/lib/countries.cjs.js +0 -1
  345. package/lib/coupon-server.cjs.js +0 -1
  346. package/lib/coupons.cjs.js +0 -1
  347. package/lib/currency-constants.cjs.js +0 -1
  348. package/lib/currency-rest-client.cjs.js +0 -1
  349. package/lib/currency-store.cjs.js +0 -1
  350. package/lib/currency-sync.cjs.js +0 -1
  351. package/lib/currency.cjs.js +0 -1
  352. package/lib/customer-addresses.cjs.js +0 -1
  353. package/lib/customer-orders.cjs.js +0 -1
  354. package/lib/customer.cjs.js +0 -1
  355. package/lib/export-helpers.cjs.js +0 -1
  356. package/lib/factory.cjs.js +0 -1
  357. package/lib/freemius-coupons.cjs.js +0 -1
  358. package/lib/freemius-license-claim.cjs.js +0 -1
  359. package/lib/freemius-license.cjs.js +0 -1
  360. package/lib/freemius-order-sync.cjs.js +0 -1
  361. package/lib/freemius-trial-provision.cjs.js +0 -1
  362. package/lib/inventory-settings.cjs.js +0 -1
  363. package/lib/invoice-server.cjs.js +0 -33
  364. package/lib/invoice-ui.cjs.js +0 -1
  365. package/lib/invoice.cjs.js +0 -1
  366. package/lib/order-inventory.cjs.js +0 -61
  367. package/lib/order-tax-details.cjs.js +0 -1
  368. package/lib/pages/cms/coupons/CouponEditorForm.cjs.js +0 -1
  369. package/lib/pages/cms/coupons/CouponsPage.cjs.js +0 -5
  370. package/lib/pages/cms/coupons/CreateCouponDialog.cjs.js +0 -1
  371. package/lib/pages/cms/coupons/EditCouponPage.cjs.js +0 -1
  372. package/lib/pages/cms/coupons/ProductScopePicker.cjs.js +0 -1
  373. package/lib/pages/cms/coupons/actions.cjs.js +0 -1
  374. package/lib/pages/cms/coupons/product-options.cjs.js +0 -1
  375. package/lib/pages/cms/orders/ExportReportsDialog.cjs.js +0 -1
  376. package/lib/pages/cms/orders/OrderDetailPage.cjs.js +0 -1
  377. package/lib/pages/cms/orders/OrderPrintButton.cjs.js +0 -1
  378. package/lib/pages/cms/orders/OrderStatusForm.cjs.js +0 -1
  379. package/lib/pages/cms/orders/OrdersPage.cjs.js +0 -1
  380. package/lib/pages/cms/orders/actions.cjs.js +0 -7
  381. package/lib/pages/cms/orders/export-actions.cjs.js +0 -1
  382. package/lib/pages/cms/orders/server-actions.cjs.js +0 -1
  383. package/lib/pages/cms/payments/PaymentsClient.cjs.js +0 -1
  384. package/lib/pages/cms/payments/PaymentsPage.cjs.js +0 -1
  385. package/lib/pages/cms/payments/actions.cjs.js +0 -1
  386. package/lib/pages/cms/payments/queries.cjs.js +0 -1
  387. package/lib/pages/cms/products/ProductsPage.cjs.js +0 -1
  388. package/lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js +0 -1
  389. package/lib/pages/cms/products/_id_/edit/EditProductPage.es.js +0 -156
  390. package/lib/pages/cms/products/actions.cjs.js +0 -44
  391. package/lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js +0 -1
  392. package/lib/pages/cms/products/attributes/components/AttributeManager.cjs.js +0 -1
  393. package/lib/pages/cms/products/categories/CategoryManagementPage.cjs.js +0 -1
  394. package/lib/pages/cms/products/categories/components/CategoryManager.cjs.js +0 -1
  395. package/lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js +0 -1
  396. package/lib/pages/cms/products/components/CurrencyPriceFields.cjs.js +0 -1
  397. package/lib/pages/cms/products/components/DeleteProductButton.cjs.js +0 -1
  398. package/lib/pages/cms/products/components/FreemiusPricingDashboard.cjs.js +0 -1
  399. package/lib/pages/cms/products/components/ProductCategorySelector.cjs.js +0 -1
  400. package/lib/pages/cms/products/components/ProductForm.cjs.js +0 -1
  401. package/lib/pages/cms/products/components/ProductMediaManager.cjs.js +0 -1
  402. package/lib/pages/cms/products/components/ProductsBulkTable.cjs.js +0 -1
  403. package/lib/pages/cms/products/components/SaleScheduleFields.cjs.js +0 -1
  404. package/lib/pages/cms/products/components/SyncFreemiusButton.cjs.js +0 -1
  405. package/lib/pages/cms/products/components/SyncFreemiusPricingButton.cjs.js +0 -5
  406. package/lib/pages/cms/products/components/VariationsEditor.cjs.js +0 -1
  407. package/lib/pages/cms/products/inventory/InventoryPage.cjs.js +0 -1
  408. package/lib/pages/cms/products/inventory/InventoryTableClient.cjs.js +0 -2
  409. package/lib/pages/cms/products/inventory/actions.cjs.js +0 -3
  410. package/lib/pages/cms/products/new/NewProductPage.cjs.js +0 -1
  411. package/lib/pages/cms/products/product-price-sync.cjs.js +0 -1
  412. package/lib/pages/cms/products/server-actions.cjs.js +0 -1
  413. package/lib/pages/cms/shipping/ShippingPage.cjs.js +0 -5
  414. package/lib/pages/cms/shipping/components/RateForm.cjs.js +0 -1
  415. package/lib/pages/cms/shipping/components/ZoneForm.cjs.js +0 -1
  416. package/lib/pages/cms/shipping/server-actions.cjs.js +0 -1
  417. package/lib/pages/cms/taxes/TaxesPage.cjs.js +0 -1
  418. package/lib/pages/cms/taxes/actions.cjs.js +0 -1
  419. package/lib/pages/cms/taxes/components/TaxRateForm.cjs.js +0 -1
  420. package/lib/payment-config.cjs.js +0 -1
  421. package/lib/product-actions.cjs.js +0 -238
  422. package/lib/product-context.cjs.js +0 -1
  423. package/lib/product-schema.cjs.js +0 -1
  424. package/lib/providers/freemius.cjs.js +0 -5
  425. package/lib/providers/stripe.cjs.js +0 -1
  426. package/lib/server-actions/coupon-actions.cjs.js +0 -1
  427. package/lib/server-actions/customer-actions.cjs.js +0 -1
  428. package/lib/server-actions/product-actions.cjs.js +0 -1
  429. package/lib/server-actions/shipping-actions.cjs.js +0 -1
  430. package/lib/server-actions/tax-actions.cjs.js +0 -1
  431. package/lib/shared-inventory.cjs.js +0 -15
  432. package/lib/shipping/resolver.cjs.js +0 -7
  433. package/lib/shipping-rate-currency.cjs.js +0 -1
  434. package/lib/states.cjs.js +0 -1
  435. package/lib/stripe/checkout.cjs.js +0 -1
  436. package/lib/stripe/client.cjs.js +0 -1
  437. package/lib/stripe/order-sync.cjs.js +0 -1
  438. package/lib/stripe/webhooks.cjs.js +0 -1
  439. package/lib/tax-calculation.cjs.js +0 -1
  440. package/lib/trials.cjs.js +0 -1
  441. package/lib/types.cjs.js +0 -1
  442. package/lib/use-cart.cjs.js +0 -1
  443. package/lib/use-price-formatter.cjs.js +0 -1
  444. package/lib/variation-utils.cjs.js +0 -1
  445. package/lib/zod-config.cjs.js +0 -1
  446. package/server.cjs.js +0 -1
@@ -1,274 +1,257 @@
1
- import { minorUnitAmountToMajor as I } from "@nextblock-cms/utils";
2
- import { resolveFreemiusCheckoutCredentials as S, readFreemiusEnvValue as h } from "./providers/freemius.es.js";
3
- import { hydrateFreemiusEnvFromDb as C } from "./payment-config.es.js";
4
- function f(e) {
5
- if (!e)
6
- return null;
7
- const o = new Date(e);
8
- return Number.isNaN(o.getTime()) ? e : o.toISOString().replace("T", " ").replace(/\.\d{3}Z$/, "");
1
+ import { hydrateFreemiusEnvFromDb as e } from "./payment-config.es.js";
2
+ import { readFreemiusEnvValue as t, resolveFreemiusCheckoutCredentials as n } from "./providers/freemius.es.js";
3
+ import { minorUnitAmountToMajor as r } from "@nextblock-cms/utils";
4
+ //#region src/lib/freemius-coupons.ts
5
+ function i(e) {
6
+ if (!e) return null;
7
+ let t = new Date(e);
8
+ return Number.isNaN(t.getTime()) ? e : t.toISOString().replace("T", " ").replace(/\.\d{3}Z$/, "");
9
9
  }
10
- function E(e) {
11
- return e === "percent" ? "percentage" : "dollar";
10
+ function a(e) {
11
+ return e === "percent" ? "percentage" : "dollar";
12
12
  }
13
- function P(e) {
14
- return S(e).apiKey || h("FREEMIUS_API_KEY");
13
+ function o(e) {
14
+ return n(e).apiKey || t("FREEMIUS_API_KEY");
15
15
  }
16
- async function l(e) {
17
- await C();
18
- const o = P(e.productId);
19
- if (!o)
20
- throw new Error(
21
- `Missing Freemius API bearer token for product ${e.productId}. Set FREEMIUS_API_KEY or FREEMIUS_CHECKOUT_PRODUCTS_JSON[${e.productId}].apiKey.`
22
- );
23
- const s = e.couponId ? `/${e.couponId}` : "", t = await fetch(
24
- `https://api.freemius.com/v1/products/${e.productId}/coupons${s}.json`,
25
- {
26
- method: e.method,
27
- headers: {
28
- Authorization: `Bearer ${o}`,
29
- "Content-Type": "application/json",
30
- Accept: "application/json"
31
- },
32
- body: e.method === "DELETE" ? void 0 : JSON.stringify(e.body || {})
33
- }
34
- ), i = await t.text(), r = i ? JSON.parse(i) : null;
35
- if (!t.ok)
36
- throw new Error(
37
- r?.message || r?.error?.message || `Freemius coupon request failed with ${t.status}`
38
- );
39
- return r;
16
+ async function s(t) {
17
+ await e();
18
+ let n = o(t.productId);
19
+ if (!n) throw Error(`Missing Freemius API bearer token for product ${t.productId}. Set FREEMIUS_API_KEY or FREEMIUS_CHECKOUT_PRODUCTS_JSON[${t.productId}].apiKey.`);
20
+ let r = t.couponId ? `/${t.couponId}` : "", i = await fetch(`https://api.freemius.com/v1/products/${t.productId}/coupons${r}.json`, {
21
+ method: t.method,
22
+ headers: {
23
+ Authorization: `Bearer ${n}`,
24
+ "Content-Type": "application/json",
25
+ Accept: "application/json"
26
+ },
27
+ body: t.method === "DELETE" ? void 0 : JSON.stringify(t.body || {})
28
+ }), a = await i.text(), s = a ? JSON.parse(a) : null;
29
+ if (!i.ok) throw Error(s?.message || s?.error?.message || `Freemius coupon request failed with ${i.status}`);
30
+ return s;
40
31
  }
41
- function y(e, o) {
42
- return {
43
- code: e.code,
44
- discount: e.discount_type === "fixed" ? I(e.discount_amount, "USD") : e.discount_amount,
45
- discount_type: E(e.discount_type),
46
- plans: o.planIds.length > 0 ? o.planIds.join(",") : null,
47
- licenses: null,
48
- billing_cycles: null,
49
- start_date: f(e.starts_at),
50
- end_date: f(e.ends_at),
51
- redemptions_limit: e.redemption_limit ?? null,
52
- has_renewals_discount: !1,
53
- has_addons_discount: !1,
54
- is_one_per_user: !1,
55
- is_active: e.is_active,
56
- user_type: "all"
57
- };
32
+ function c(e, t) {
33
+ return {
34
+ code: e.code,
35
+ discount: e.discount_type === "fixed" ? r(e.discount_amount, "USD") : e.discount_amount,
36
+ discount_type: a(e.discount_type),
37
+ plans: t.planIds.length > 0 ? t.planIds.join(",") : null,
38
+ licenses: null,
39
+ billing_cycles: null,
40
+ start_date: i(e.starts_at),
41
+ end_date: i(e.ends_at),
42
+ redemptions_limit: e.redemption_limit ?? null,
43
+ has_renewals_discount: !1,
44
+ has_addons_discount: !1,
45
+ is_one_per_user: !1,
46
+ is_active: e.is_active,
47
+ user_type: "all"
48
+ };
58
49
  }
59
- async function q(e, o) {
60
- if (o.provider_scope === "stripe")
61
- return [];
62
- const { data: s, error: t } = await e.from("coupon_products").select("product_id").eq("coupon_id", o.id);
63
- if (t)
64
- throw new Error(t.message);
65
- const i = (s || []).map((c) => c.product_id);
66
- let r = e.from("products").select("id, freemius_product_id, freemius_plan_id").eq("payment_provider", "freemius").not("freemius_product_id", "is", null);
67
- i.length > 0 && (r = r.in("id", i));
68
- const { data: u, error: n } = await r;
69
- if (n)
70
- throw new Error(n.message);
71
- const d = /* @__PURE__ */ new Map();
72
- for (const c of u || []) {
73
- const a = String(c.freemius_product_id || "").trim();
74
- if (!a)
75
- continue;
76
- const p = d.get(a) ?? {
77
- freemiusProductId: a,
78
- productId: c.id,
79
- planIds: []
80
- };
81
- i.length > 0 && c.freemius_plan_id && p.planIds.push(String(c.freemius_plan_id)), d.set(a, p);
82
- }
83
- return [...d.values()].map((c) => ({
84
- ...c,
85
- planIds: [...new Set(c.planIds)]
86
- }));
50
+ async function l(e, t) {
51
+ if (t.provider_scope === "stripe") return [];
52
+ let { data: n, error: r } = await e.from("coupon_products").select("product_id").eq("coupon_id", t.id);
53
+ if (r) throw Error(r.message);
54
+ let i = (n || []).map((e) => e.product_id), a = e.from("products").select("id, freemius_product_id, freemius_plan_id").eq("payment_provider", "freemius").not("freemius_product_id", "is", null);
55
+ i.length > 0 && (a = a.in("id", i));
56
+ let { data: o, error: s } = await a;
57
+ if (s) throw Error(s.message);
58
+ let c = /* @__PURE__ */ new Map();
59
+ for (let e of o || []) {
60
+ let t = String(e.freemius_product_id || "").trim();
61
+ if (!t) continue;
62
+ let n = c.get(t) ?? {
63
+ freemiusProductId: t,
64
+ productId: e.id,
65
+ planIds: []
66
+ };
67
+ i.length > 0 && e.freemius_plan_id && n.planIds.push(String(e.freemius_plan_id)), c.set(t, n);
68
+ }
69
+ return [...c.values()].map((e) => ({
70
+ ...e,
71
+ planIds: [...new Set(e.planIds)]
72
+ }));
87
73
  }
88
- async function F(e, o) {
89
- const { data: s } = await e.from("coupon_freemius_mappings").select("sync_status, sync_error").eq("coupon_id", o), t = s || [];
90
- if (t.length === 0) {
91
- await e.from("coupons").update({
92
- freemius_sync_status: "not_required",
93
- freemius_sync_error: null
94
- }).eq("id", o);
95
- return;
96
- }
97
- const i = t.find((r) => r.sync_status === "failed");
98
- await e.from("coupons").update({
99
- freemius_sync_status: i ? "failed" : "synced",
100
- freemius_sync_error: i?.sync_error ?? null
101
- }).eq("id", o);
74
+ async function u(e, t) {
75
+ let { data: n } = await e.from("coupon_freemius_mappings").select("sync_status, sync_error").eq("coupon_id", t), r = n || [];
76
+ if (r.length === 0) {
77
+ await e.from("coupons").update({
78
+ freemius_sync_status: "not_required",
79
+ freemius_sync_error: null
80
+ }).eq("id", t);
81
+ return;
82
+ }
83
+ let i = r.find((e) => e.sync_status === "failed");
84
+ await e.from("coupons").update({
85
+ freemius_sync_status: i ? "failed" : "synced",
86
+ freemius_sync_error: i?.sync_error ?? null
87
+ }).eq("id", t);
102
88
  }
103
- async function A(e) {
104
- const { data: o, error: s } = await e.client.from("coupons").select(
105
- "id, code, name, internal_note, provider_scope, discount_type, discount_amount, is_active, starts_at, ends_at, redemption_limit"
106
- ).eq("id", e.couponId).single();
107
- if (s || !o)
108
- return {
109
- success: !1,
110
- error: s?.message || "Coupon not found"
111
- };
112
- const t = o, i = await q(e.client, t);
113
- await e.client.from("coupons").update({
114
- freemius_sync_status: i.length > 0 ? "pending" : "not_required",
115
- freemius_sync_error: null
116
- }).eq("id", t.id);
117
- for (const r of i) {
118
- const { data: u } = await e.client.from("coupon_freemius_mappings").select("id, freemius_coupon_id").eq("coupon_id", t.id).eq("freemius_product_id", r.freemiusProductId).maybeSingle(), n = y(t, r);
119
- try {
120
- const d = await l({
121
- productId: r.freemiusProductId,
122
- method: u?.freemius_coupon_id ? "PUT" : "POST",
123
- couponId: u?.freemius_coupon_id ?? null,
124
- body: n
125
- }), c = d?.coupon ?? d;
126
- await e.client.from("coupon_freemius_mappings").upsert(
127
- {
128
- id: u?.id,
129
- coupon_id: t.id,
130
- product_id: r.productId,
131
- freemius_product_id: r.freemiusProductId,
132
- freemius_coupon_id: c?.id ? String(c.id) : u?.freemius_coupon_id ?? null,
133
- freemius_coupon_code: t.code,
134
- sync_status: "synced",
135
- sync_error: null,
136
- remote_payload: d,
137
- last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
138
- },
139
- { onConflict: "coupon_id,freemius_product_id" }
140
- );
141
- } catch (d) {
142
- await e.client.from("coupon_freemius_mappings").upsert(
143
- {
144
- id: u?.id,
145
- coupon_id: t.id,
146
- product_id: r.productId,
147
- freemius_product_id: r.freemiusProductId,
148
- freemius_coupon_id: u?.freemius_coupon_id ?? null,
149
- freemius_coupon_code: t.code,
150
- sync_status: "failed",
151
- sync_error: d.message || "Freemius sync failed",
152
- last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
153
- },
154
- { onConflict: "coupon_id,freemius_product_id" }
155
- );
156
- }
157
- }
158
- return await F(e.client, t.id), {
159
- success: !0,
160
- targetCount: i.length
161
- };
89
+ async function d(e) {
90
+ let { data: t, error: n } = await e.client.from("coupons").select("id, code, name, internal_note, provider_scope, discount_type, discount_amount, is_active, starts_at, ends_at, redemption_limit").eq("id", e.couponId).single();
91
+ if (n || !t) return {
92
+ success: !1,
93
+ error: n?.message || "Coupon not found"
94
+ };
95
+ let r = t, i = await l(e.client, r);
96
+ await e.client.from("coupons").update({
97
+ freemius_sync_status: i.length > 0 ? "pending" : "not_required",
98
+ freemius_sync_error: null
99
+ }).eq("id", r.id);
100
+ for (let t of i) {
101
+ let { data: n } = await e.client.from("coupon_freemius_mappings").select("id, freemius_coupon_id").eq("coupon_id", r.id).eq("freemius_product_id", t.freemiusProductId).maybeSingle(), i = c(r, t);
102
+ try {
103
+ let a = await s({
104
+ productId: t.freemiusProductId,
105
+ method: n?.freemius_coupon_id ? "PUT" : "POST",
106
+ couponId: n?.freemius_coupon_id ?? null,
107
+ body: i
108
+ }), o = a?.coupon ?? a;
109
+ await e.client.from("coupon_freemius_mappings").upsert({
110
+ id: n?.id,
111
+ coupon_id: r.id,
112
+ product_id: t.productId,
113
+ freemius_product_id: t.freemiusProductId,
114
+ freemius_coupon_id: o?.id ? String(o.id) : n?.freemius_coupon_id ?? null,
115
+ freemius_coupon_code: r.code,
116
+ sync_status: "synced",
117
+ sync_error: null,
118
+ remote_payload: a,
119
+ last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
120
+ }, { onConflict: "coupon_id,freemius_product_id" });
121
+ } catch (i) {
122
+ await e.client.from("coupon_freemius_mappings").upsert({
123
+ id: n?.id,
124
+ coupon_id: r.id,
125
+ product_id: t.productId,
126
+ freemius_product_id: t.freemiusProductId,
127
+ freemius_coupon_id: n?.freemius_coupon_id ?? null,
128
+ freemius_coupon_code: r.code,
129
+ sync_status: "failed",
130
+ sync_error: i.message || "Freemius sync failed",
131
+ last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
132
+ }, { onConflict: "coupon_id,freemius_product_id" });
133
+ }
134
+ }
135
+ return await u(e.client, r.id), {
136
+ success: !0,
137
+ targetCount: i.length
138
+ };
162
139
  }
163
- function v(e) {
164
- const o = (e.sku || "").toUpperCase().replace(/[^A-Z0-9]/g, "");
165
- return o ? `SALE${o}`.slice(0, 32) : `SALE${e.productId.replace(/[^A-Za-z0-9]/g, "").toUpperCase()}`.slice(0, 32);
140
+ function f(e) {
141
+ let t = (e.sku || "").toUpperCase().replace(/[^A-Z0-9]/g, "");
142
+ return t ? `SALE${t}`.slice(0, 32) : `SALE${e.productId.replace(/[^A-Za-z0-9]/g, "").toUpperCase()}`.slice(0, 32);
166
143
  }
167
- function D(e, o) {
168
- if (typeof e != "number" || e <= 0 || typeof o != "number" || o < 0 || o >= e)
169
- return null;
170
- const s = Math.round((1 - o / e) * 100);
171
- return s <= 0 || s > 100 ? null : s;
144
+ function p(e, t) {
145
+ if (typeof e != "number" || e <= 0 || typeof t != "number" || t < 0 || t >= e) return null;
146
+ let n = Math.round((1 - t / e) * 100);
147
+ return n <= 0 || n > 100 ? null : n;
172
148
  }
173
- async function U(e) {
174
- const { data: o, error: s } = await e.client.from("products").select(
175
- "id, sku, price, sale_price, sale_start_at, sale_end_at, payment_provider, freemius_product_id, freemius_plan_id"
176
- ).eq("id", e.productId).maybeSingle();
177
- if (s || !o)
178
- return { success: !1, error: s?.message || "Product not found" };
179
- const t = o, i = String(t.freemius_product_id || "").trim();
180
- if (t.payment_provider !== "freemius" || !i)
181
- return { success: !0, skipped: !0, reason: "not_a_freemius_product" };
182
- const r = D(t.price, t.sale_price), u = r !== null, { data: n } = await e.client.from("product_freemius_sale_coupons").select("id, freemius_coupon_id, freemius_coupon_code, discount_percent, is_active").eq("product_id", t.id).maybeSingle();
183
- if (!u && !n?.freemius_coupon_id)
184
- return n?.id && await e.client.from("product_freemius_sale_coupons").update({ is_active: !1, updated_at: (/* @__PURE__ */ new Date()).toISOString() }).eq("id", n.id), { success: !0, active: !1 };
185
- const d = n?.freemius_coupon_code || v({ sku: t.sku, productId: t.id }), c = t.freemius_plan_id ? [String(t.freemius_plan_id)] : [], a = r ?? n?.discount_percent ?? 1, p = {
186
- id: t.id,
187
- code: d,
188
- name: `Scheduled sale ${t.sku || t.id}`,
189
- discount_type: "percent",
190
- discount_amount: a,
191
- is_active: u,
192
- starts_at: t.sale_start_at,
193
- ends_at: t.sale_end_at,
194
- redemption_limit: null
195
- }, g = {
196
- productId: t.id,
197
- planIds: c
198
- }, w = y(p, g);
199
- try {
200
- const _ = await l({
201
- productId: i,
202
- method: n?.freemius_coupon_id ? "PUT" : "POST",
203
- couponId: n?.freemius_coupon_id ?? null,
204
- body: w
205
- }), m = _?.coupon ?? _;
206
- return await e.client.from("product_freemius_sale_coupons").upsert(
207
- {
208
- id: n?.id,
209
- product_id: t.id,
210
- freemius_product_id: i,
211
- freemius_plan_id: t.freemius_plan_id ? String(t.freemius_plan_id) : null,
212
- freemius_coupon_id: m?.id ? String(m.id) : n?.freemius_coupon_id ?? null,
213
- freemius_coupon_code: d,
214
- discount_percent: r,
215
- starts_at: t.sale_start_at,
216
- ends_at: t.sale_end_at,
217
- is_active: u,
218
- sync_status: "synced",
219
- sync_error: null,
220
- remote_payload: _,
221
- last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
222
- },
223
- { onConflict: "product_id" }
224
- ), { success: !0, active: u, code: d };
225
- } catch (_) {
226
- return await e.client.from("product_freemius_sale_coupons").upsert(
227
- {
228
- id: n?.id,
229
- product_id: t.id,
230
- freemius_product_id: i,
231
- freemius_plan_id: t.freemius_plan_id ? String(t.freemius_plan_id) : null,
232
- freemius_coupon_id: n?.freemius_coupon_id ?? null,
233
- freemius_coupon_code: d,
234
- discount_percent: r,
235
- starts_at: t.sale_start_at,
236
- ends_at: t.sale_end_at,
237
- is_active: u,
238
- sync_status: "failed",
239
- sync_error: _.message || "Freemius sale coupon sync failed",
240
- last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
241
- },
242
- { onConflict: "product_id" }
243
- ), {
244
- success: !1,
245
- error: _.message || "Freemius sale coupon sync failed"
246
- };
247
- }
149
+ async function m(e) {
150
+ let { data: t, error: n } = await e.client.from("products").select("id, sku, price, sale_price, sale_start_at, sale_end_at, payment_provider, freemius_product_id, freemius_plan_id").eq("id", e.productId).maybeSingle();
151
+ if (n || !t) return {
152
+ success: !1,
153
+ error: n?.message || "Product not found"
154
+ };
155
+ let r = t, i = String(r.freemius_product_id || "").trim();
156
+ if (r.payment_provider !== "freemius" || !i) return {
157
+ success: !0,
158
+ skipped: !0,
159
+ reason: "not_a_freemius_product"
160
+ };
161
+ let a = p(r.price, r.sale_price), o = a !== null, { data: l } = await e.client.from("product_freemius_sale_coupons").select("id, freemius_coupon_id, freemius_coupon_code, discount_percent, is_active").eq("product_id", r.id).maybeSingle();
162
+ if (!o && !l?.freemius_coupon_id) return l?.id && await e.client.from("product_freemius_sale_coupons").update({
163
+ is_active: !1,
164
+ updated_at: (/* @__PURE__ */ new Date()).toISOString()
165
+ }).eq("id", l.id), {
166
+ success: !0,
167
+ active: !1
168
+ };
169
+ let u = l?.freemius_coupon_code || f({
170
+ sku: r.sku,
171
+ productId: r.id
172
+ }), d = r.freemius_plan_id ? [String(r.freemius_plan_id)] : [], m = a ?? l?.discount_percent ?? 1, h = c({
173
+ id: r.id,
174
+ code: u,
175
+ name: `Scheduled sale ${r.sku || r.id}`,
176
+ provider_scope: "freemius",
177
+ discount_type: "percent",
178
+ discount_amount: m,
179
+ is_active: o,
180
+ starts_at: r.sale_start_at,
181
+ ends_at: r.sale_end_at,
182
+ redemption_limit: null
183
+ }, {
184
+ freemiusProductId: i,
185
+ productId: r.id,
186
+ planIds: d
187
+ });
188
+ try {
189
+ let t = await s({
190
+ productId: i,
191
+ method: l?.freemius_coupon_id ? "PUT" : "POST",
192
+ couponId: l?.freemius_coupon_id ?? null,
193
+ body: h
194
+ }), n = t?.coupon ?? t;
195
+ return await e.client.from("product_freemius_sale_coupons").upsert({
196
+ id: l?.id,
197
+ product_id: r.id,
198
+ freemius_product_id: i,
199
+ freemius_plan_id: r.freemius_plan_id ? String(r.freemius_plan_id) : null,
200
+ freemius_coupon_id: n?.id ? String(n.id) : l?.freemius_coupon_id ?? null,
201
+ freemius_coupon_code: u,
202
+ discount_percent: a,
203
+ starts_at: r.sale_start_at,
204
+ ends_at: r.sale_end_at,
205
+ is_active: o,
206
+ sync_status: "synced",
207
+ sync_error: null,
208
+ remote_payload: t,
209
+ last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
210
+ }, { onConflict: "product_id" }), {
211
+ success: !0,
212
+ active: o,
213
+ code: u
214
+ };
215
+ } catch (t) {
216
+ return await e.client.from("product_freemius_sale_coupons").upsert({
217
+ id: l?.id,
218
+ product_id: r.id,
219
+ freemius_product_id: i,
220
+ freemius_plan_id: r.freemius_plan_id ? String(r.freemius_plan_id) : null,
221
+ freemius_coupon_id: l?.freemius_coupon_id ?? null,
222
+ freemius_coupon_code: u,
223
+ discount_percent: a,
224
+ starts_at: r.sale_start_at,
225
+ ends_at: r.sale_end_at,
226
+ is_active: o,
227
+ sync_status: "failed",
228
+ sync_error: t.message || "Freemius sale coupon sync failed",
229
+ last_synced_at: (/* @__PURE__ */ new Date()).toISOString()
230
+ }, { onConflict: "product_id" }), {
231
+ success: !1,
232
+ error: t.message || "Freemius sale coupon sync failed"
233
+ };
234
+ }
248
235
  }
249
- async function $(e) {
250
- const { data: o } = await e.client.from("coupon_freemius_mappings").select("id, freemius_product_id, freemius_coupon_id").eq("coupon_id", e.couponId).not("freemius_coupon_id", "is", null);
251
- for (const s of o || [])
252
- try {
253
- await l({
254
- productId: s.freemius_product_id,
255
- couponId: s.freemius_coupon_id,
256
- method: "DELETE"
257
- }), await e.client.from("coupon_freemius_mappings").update({
258
- sync_status: "deleted",
259
- sync_error: null,
260
- updated_at: (/* @__PURE__ */ new Date()).toISOString()
261
- }).eq("id", s.id);
262
- } catch (t) {
263
- await e.client.from("coupon_freemius_mappings").update({
264
- sync_status: "failed",
265
- sync_error: t.message || "Freemius delete failed",
266
- updated_at: (/* @__PURE__ */ new Date()).toISOString()
267
- }).eq("id", s.id);
268
- }
236
+ async function h(e) {
237
+ let { data: t } = await e.client.from("coupon_freemius_mappings").select("id, freemius_product_id, freemius_coupon_id").eq("coupon_id", e.couponId).not("freemius_coupon_id", "is", null);
238
+ for (let n of t || []) try {
239
+ await s({
240
+ productId: n.freemius_product_id,
241
+ couponId: n.freemius_coupon_id,
242
+ method: "DELETE"
243
+ }), await e.client.from("coupon_freemius_mappings").update({
244
+ sync_status: "deleted",
245
+ sync_error: null,
246
+ updated_at: (/* @__PURE__ */ new Date()).toISOString()
247
+ }).eq("id", n.id);
248
+ } catch (t) {
249
+ await e.client.from("coupon_freemius_mappings").update({
250
+ sync_status: "failed",
251
+ sync_error: t.message || "Freemius delete failed",
252
+ updated_at: (/* @__PURE__ */ new Date()).toISOString()
253
+ }).eq("id", n.id);
254
+ }
269
255
  }
270
- export {
271
- $ as deleteCouponFromFreemius,
272
- A as syncCouponToFreemius,
273
- U as syncProductSaleCouponToFreemius
274
- };
256
+ //#endregion
257
+ export { h as deleteCouponFromFreemius, d as syncCouponToFreemius, m as syncProductSaleCouponToFreemius };
@@ -0,0 +1 @@
1
+ const e=require("./payment-config.cjs"),t=require("./providers/freemius.cjs");let n=require("@freemius/sdk");var r=20,i=`This license cannot be claimed automatically. Use the key from your purchase email.`;function a(e){if(!e||typeof e!=`string`)return null;let t=e.trim(),n=/(?:z|[+-]\d{2}:?\d{2})$/i.test(t)?t:`${t.replace(` `,`T`)}Z`,r=Date.parse(n);return Number.isFinite(r)?r:null}function o(e,t){return e==null||t==null?!1:String(e).trim()===String(t).trim()}function s(e){return(e??``).trim().toLowerCase()}function c(e){let{license:t,request:n,user:r}=e,i=e.maxAgeMinutes??20,c=(e.now??new Date).getTime();if(!t||!o(t.id,n.licenseId))return{ok:!1,reason:`license_not_found`};let l=a(t.created);return l===null||c-l>i*6e4||l-c>3e5?{ok:!1,reason:`too_old`}:o(t.plugin_id,n.productId)?t.is_cancelled?{ok:!1,reason:`cancelled`}:!n.userId?.trim()||!o(t.user_id,n.userId)?{ok:!1,reason:`user_mismatch`}:!r||!s(n.email)||s(r.email)!==s(n.email)?{ok:!1,reason:`email_mismatch`}:typeof t.activated==`number`&&t.activated>0?{ok:!1,reason:`already_activated`}:t.secret_key?{ok:!0}:{ok:!1,reason:`no_key`}:{ok:!1,reason:`product_mismatch`}}async function l(r,a){await e.hydrateFreemiusEnvFromDb();let o=t.resolveFreemiusCheckoutCredentials(r.productId);if(!o.apiKey||!o.secretKey||!o.publicKey)return{error:`The license service is not configured for this product.`,ok:!1,reason:`not_configured`,status:503};let s=new n.Freemius({apiKey:o.apiKey,productId:Number(r.productId),publicKey:o.publicKey,secretKey:o.secretKey}),l=null,u=null;try{l=await s.api.license.retrieve(r.licenseId),l?.user_id!==null&&l?.user_id!==void 0&&(u=await s.api.user.retrieve(String(l.user_id)))}catch(e){return console.error(`[Freemius License Claim] Freemius lookup failed:`,e),{error:`Freemius could not be reached to verify the license.`,ok:!1,reason:`upstream_error`,status:502}}let d=c({license:l,maxAgeMinutes:a?.maxAgeMinutes,now:a?.now,request:r,user:u});return d.ok?{expiration:l?.expiration??null,licenseKey:String(l?.secret_key),ok:!0,planId:l?.plan_id!==null&&l?.plan_id!==void 0?String(l.plan_id):null}:{error:i,ok:!1,reason:d.reason,status:403}}exports.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES=r,exports.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE=i,exports.claimFreemiusLicenseKey=l,exports.evaluateFreemiusLicenseClaim=c,exports.parseFreemiusTimestamp=a;