@nextblock-cms/ecom 0.15.8 → 0.15.9

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const pe=require("../stripe/client.cjs.js"),ke=require("@supabase/supabase-js"),Pe=require("../countries.cjs.js"),be=require("../customer.cjs.js"),O=require("../coupon-server.cjs.js"),Te=require("../coupons.cjs.js"),de=require("../customer-addresses.cjs.js"),T=require("../inventory-settings.cjs.js"),w=require("../tax-calculation.cjs.js"),v=require("../currency.cjs.js"),we=require("../order-tax-details.cjs.js"),Ae=require("../types.cjs.js"),Ie=require("../variation-utils.cjs.js"),De=Pe.countries.map(r=>r.code),Me=new Set(["bg","cs","da","de","el","en","en-GB","es","es-419","et","fi","fil","fr","hr","hu","id","it","ja","ko","lt","lv","ms","mt","nb","nl","pl","pt","pt-BR","ro","ru","sk","sl","sv","th","tr","vi","zh","zh-HK","zh-TW"]);function _e(r){if(r)return{line1:r.line1||void 0,line2:r.line2||void 0,city:r.city||void 0,state:r.state||void 0,postal_code:r.postal_code||void 0,country:r.country_code||void 0}}function Ue(r){const i=r?.trim().replace("_","-");if(!i)return;const l=[i,i.toLowerCase(),i.split("-")[0].toLowerCase()];for(const d of l)if(Me.has(d))return d}function Le(r,i){return Ie.resolveTranslatedText(r.name,r.name_translations||null,i)}async function Fe(r){if(!r.email)return null;const i=await pe.getStripeClient(),l=_e(r.shippingAddress),d=r.shippingAddress?.recipient_name||r.billingAddress?.recipient_name||void 0,_={email:r.email,name:r.billingAddress?.recipient_name||r.shippingAddress?.recipient_name||void 0,phone:r.phone||void 0,address:_e(r.billingAddress),metadata:r.userId?{userId:r.userId}:void 0,...l&&d?{shipping:{name:d,phone:r.phone||void 0,address:l}}:{}};try{const p=(await i.customers.list({email:r.email,limit:1})).data[0];return p?(await i.customers.update(p.id,_),p.id):(await i.customers.create(_)).id}catch(u){return console.error("Failed to upsert Stripe customer for checkout prefill:",u),null}}class Re{getProviderName(){return"Stripe"}async createCheckoutSession({items:i,customerEmail:l,customerPhone:d,userId:_,billingAddress:u,shippingAddress:p,shippingMethodId:U,currencyCode:me,locale:B,couponCode:z,couponContextItems:L}){const he=await pe.getStripeClient(),K=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL,Q=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY;if(!K||!Q)return console.error("Missing Supabase credentials for checkout (Service Key required)."),{error:"Internal Server Error",url:null};const a=ke.createClient(K,Q),$=process.env.NEXT_PUBLIC_URL||"http://localhost:4200",X=i.some(e=>!Ae.isDigitalItem(e));if(!i.length)return{error:"Cart is empty",url:null};const{data:ve,error:H}=await a.from("currencies").select("code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount").eq("is_active",!0).order("code",{ascending:!0}),g=ve??[];if(H||g.length===0)return console.error("Error fetching currencies for checkout:",H),{error:"Failed to resolve store currencies",url:null};const j=v.getDefaultCurrency(g),m=g.find(e=>e.code===(me||"").toUpperCase())??j,F=m.code.toLowerCase(),G=await T.getEcommerceInventorySettings(a),fe=i.map(e=>e.product_id),V=i.map(e=>e.variant_id).filter(e=>!!e),{data:W,error:Y}=await a.from("products").select("id, title, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock, is_taxable").in("id",fe);if(Y||!W)return console.error("Error fetching products for validation:",Y),{error:"Failed to validate product prices",url:null};const{data:ye,error:J}=V.length?await a.from("product_variants").select("id, product_id, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock_quantity").in("id",V):{data:[],error:null};if(J)return console.error("Error fetching variants for validation:",J),{error:"Failed to validate product variants",url:null};const Z=new Map(W.map(e=>[e.id,e])),ee=new Map((ye||[]).map(e=>[e.id,e])),R=new Set,A=new Map;for(const e of i){const t=Z.get(e.product_id);if(!t)continue;const n=(e.variant_id?ee.get(e.variant_id):null)?.sku||t.sku;n&&(R.add(n),A.set(n,(A.get(n)??0)+e.quantity))}const{data:ge,error:te}=R.size?await a.from("inventory_items").select("sku, quantity").in("sku",[...R]):{data:[],error:null};if(te)return console.error("Error fetching SKU inventory for validation:",te),{error:"Failed to validate SKU inventory",url:null};const I=new Map((ge||[]).map(e=>[e.sku,Math.max(0,e.quantity??0)])),S=[],re=[],oe=[];let f=0,C=0,c=null;if(z){const e=await O.getCouponQuote({client:a,code:z,items:L&&L.length>0?L:i,currencyCode:m.code});if(!e.success)return{error:e.error,errorKey:e.errorKey,errorStatus:400,url:null};c=e.quote}const Se=O.getQuoteLineDiscountMap(c),Ce=e=>{const t=e.unitAmount*e.quantity,y=Math.max(0,t-e.lineDiscount);if(y<=0)return;const n=Math.floor(y/e.quantity),P=y-n*e.quantity,x=(b,k)=>{k<=0||b<=0||S.push({price_data:{currency:e.currency,product_data:{name:e.name,tax_code:w.getStripeTaxCodeForProduct(e.isTaxable),metadata:{productId:e.productId,variantId:e.variantId||""}},tax_behavior:"exclusive",unit_amount:b},quantity:k})};x(n,e.quantity-P),x(n+1,P)};for(const e of i){const t=Z.get(e.product_id);if(!t)return console.warn(`Product ${e.product_id} not found in DB.`),{url:null,...T.createInventoryUnavailableError(e.title)};const y=v.resolveEffectivePriceForCurrency({prices:v.normalizePriceMap(t.prices),salePrices:t.sale_prices||{},fallbackPrice:t.price,fallbackSalePrice:t.sale_price,saleStartAt:t.sale_start_at,saleEndAt:t.sale_end_at,scheduledPrice:t.scheduled_price,scheduledPrices:v.normalizePriceMap(t.scheduled_prices),scheduledPriceAt:t.scheduled_price_at,currencyCode:m.code,currencies:g});let n=y.sale_price??y.price,P=t.title,x=null;if(e.variant_id){const o=ee.get(e.variant_id);if(!o||o.product_id!==e.product_id)return{url:null,...T.createInventoryUnavailableError(e.title)};const M=A.get(o.sku)??e.quantity,ue=I.has(o.sku)?I.get(o.sku)??0:Math.max(0,o.stock_quantity??0);if(G.trackQuantities&&M>ue)return{url:null,...T.createInventoryInsufficientError(e.title,ue)};const le=v.resolveEffectivePriceForCurrency({prices:v.normalizePriceMap(o.prices),salePrices:o.sale_prices||{},fallbackPrice:o.price,fallbackSalePrice:o.sale_price,saleStartAt:o.sale_start_at,saleEndAt:o.sale_end_at,scheduledPrice:o.scheduled_price,scheduledPrices:v.normalizePriceMap(o.scheduled_prices),scheduledPriceAt:o.scheduled_price_at,currencyCode:m.code,currencies:g});n=le.sale_price??le.price,x=o.id,P=e.variant_label?`${t.title} - ${e.variant_label}`:`${t.title} - ${o.sku}`}else{const o=A.get(t.sku)??e.quantity,M=I.has(t.sku)?I.get(t.sku)??0:Math.max(0,t.stock??0);if(G.trackQuantities&&o>M)return{url:null,...T.createInventoryInsufficientError(e.title,M)}}const b=t.is_taxable??!0;if(n<0)return{error:"A product variation produced an invalid price.",url:null};const k=Math.min(n*e.quantity,Se.get(Te.getCartLineCouponKey(e))??0);Ce({name:P,currency:F,productId:t.id,variantId:x,isTaxable:b,unitAmount:n,quantity:e.quantity,lineDiscount:k}),f+=n*e.quantity,C+=k,oe.push({product_id:t.id,quantity:e.quantity,price_at_purchase:n,variant_id:x}),re.push({product_id:t.id,quantity:e.quantity,unit_amount:n,discount_amount:k,is_taxable:b})}if(S.length===0&&C>=f)return{error:"This coupon would reduce the Stripe order to zero. Use a smaller discount for Stripe checkout.",errorKey:"ecommerce.coupon_zero_total_not_supported",errorStatus:400,url:null};if(S.length===0)return{error:"No valid items in cart",url:null};let h=0,N=null;if(U){const{data:e,error:t}=await a.from("shipping_zone_methods").select("id, name, name_translations, cost_amount, cost_currency").eq("id",U).single();if(t)return console.error("Failed to load shipping method:",t),{error:"Failed to load shipping method",url:null};h=v.convertMinorUnitAmount({amount:e.cost_amount??0,fromCurrencyCode:e.cost_currency||j.code,toCurrencyCode:m.code,currencies:g}),N=Le(e,B)}const ie=X?p??u:u;let s;try{s=await w.calculateCheckoutTaxes(a,{items:re,destination:{country_code:ie?.country_code,state:ie?.state}})}catch(e){return console.error("Failed to calculate checkout taxes:",e),{error:"Failed to calculate taxes",url:null}}h>0&&N&&S.push({price_data:{currency:F,product_data:{name:N,tax_code:s.enabled&&s.mode==="automatic"?w.STRIPE_TAX_CODE_SHIPPING:w.STRIPE_TAX_CODE_NONTAXABLE},tax_behavior:"exclusive",unit_amount:h},quantity:1});const E=s.enabled&&s.mode==="manual"&&!s.isPendingExternalCalculation?s.amount:0;E>0&&S.push({price_data:{currency:F,product_data:{name:"Tax",tax_code:w.STRIPE_TAX_CODE_NONTAXABLE},tax_behavior:"exclusive",unit_amount:E},quantity:1});const Ee=be.normalizeOrderCustomerDetails({email:l,phone:d,name:u?.recipient_name,billing:u,shipping:p}),ae=m.code,qe=we.buildOrderTaxDetailsFromCalculation({calculation:s,subtotal:f,shippingTotal:h,total:Math.max(0,f-C)+h+E,currency:ae}),xe=Math.max(0,f-C)+h+E,{data:ne,error:ce}=await a.from("orders").insert({status:"pending",total:xe,currency:ae,exchange_rate_at_purchase:m.exchange_rate,subtotal:f,shipping_total:h,tax_total:E,tax_details:qe,coupon_id:c?.couponId??null,coupon_code:c?.code??null,discount_total:C,discount_details:c?{code:c.code,discount_type:c.discountType,discount_amount:c.discountAmount,provider:"stripe",provider_discounts:c.providerDiscounts,line_discounts:c.lineDiscounts}:null,provider:"stripe",user_id:_,customer_details:Ee}).select("id").single();if(ce||!ne)return console.error("Failed to create pending order:",ce),{error:"Failed to initiate order",url:null};const q=ne.id,{error:se}=await a.from("order_items").insert(oe.map(e=>({order_id:q,product_id:e.product_id,variant_id:e.variant_id??null,quantity:e.quantity,price_at_purchase:e.price_at_purchase})));if(se)return console.error("Failed to insert order items:",se),await a.from("orders").update({status:"failed"}).eq("id",q),{error:"Failed to record order items",url:null};if(_)try{await de.upsertDefaultUserAddresses({userId:_,billingAddress:u,shippingAddress:p,client:a}),await de.fillMissingUserProfileCheckoutDetails({userId:_,fullName:u?.recipient_name??p?.recipient_name??null,phone:d,client:a})}catch(e){console.error("Failed to sync checkout profile defaults before checkout:",e)}c&&await O.recordCouponRedemption({client:a,quote:c,orderId:q,provider:"stripe",discountTotal:C,userId:_,customerEmail:l,metadata:{currency:m.code,subtotal:f,shipping_total:h,tax_total:E}});const D=await Fe({email:l,phone:d,userId:_,billingAddress:u,shippingAddress:p});try{const e=await he.checkout.sessions.create({mode:"payment",success_url:`${$}/checkout/success?session_id={CHECKOUT_SESSION_ID}`,cancel_url:`${$}/checkout`,locale:Ue(B),line_items:S,automatic_tax:s.enabled&&s.mode==="automatic"?{enabled:!0}:void 0,billing_address_collection:"auto",customer:D||void 0,customer_email:D?void 0:l||void 0,customer_creation:D?void 0:"if_required",customer_update:D?{name:"auto",address:"auto",shipping:"auto"}:void 0,shipping_address_collection:X?{allowed_countries:De}:void 0,metadata:{orderId:q,taxMode:s.mode,currencyCode:m.code,couponCode:c?.code||""}}),{error:t}=await a.from("orders").update({stripe_session_id:e.id}).eq("id",q);return t&&console.error("Failed to save Stripe session ID on order:",t),{url:e.url}}catch(e){return console.error("Stripe session creation failed:",e),await a.from("orders").update({status:"failed"}).eq("id",q),{error:e.message,url:null}}}}exports.StripeProvider=Re;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _e=require("../stripe/client.cjs.js"),xe=require("@supabase/supabase-js"),Pe=require("../countries.cjs.js"),be=require("../customer.cjs.js"),O=require("../coupon-server.cjs.js"),we=require("../coupons.cjs.js"),de=require("../customer-addresses.cjs.js"),w=require("../inventory-settings.cjs.js"),T=require("../tax-calculation.cjs.js"),v=require("../currency.cjs.js"),Te=require("../order-tax-details.cjs.js"),Ae=require("../types.cjs.js"),Ie=require("../variation-utils.cjs.js"),De=Pe.countries.map(t=>t.code),Me=new Set(["bg","cs","da","de","el","en","en-GB","es","es-419","et","fi","fil","fr","hr","hu","id","it","ja","ko","lt","lv","ms","mt","nb","nl","pl","pt","pt-BR","ro","ru","sk","sl","sv","th","tr","vi","zh","zh-HK","zh-TW"]);function pe(t){if(t)return{line1:t.line1||void 0,line2:t.line2||void 0,city:t.city||void 0,state:t.state||void 0,postal_code:t.postal_code||void 0,country:t.country_code||void 0}}function Ue(t){const i=t?.trim().replace("_","-");if(!i)return;const l=[i,i.toLowerCase(),i.split("-")[0].toLowerCase()];for(const d of l)if(Me.has(d))return d}function Le(t,i){return Ie.resolveTranslatedText(t.name,t.name_translations||null,i)}async function Fe(t){if(!t.email)return null;const i=await _e.getStripeClient(),l=pe(t.shippingAddress),d=t.shippingAddress?.recipient_name||t.billingAddress?.recipient_name||void 0,p={email:t.email,name:t.billingAddress?.recipient_name||t.shippingAddress?.recipient_name||void 0,phone:t.phone||void 0,address:pe(t.billingAddress),metadata:t.userId?{userId:t.userId}:void 0,...l&&d?{shipping:{name:d,phone:t.phone||void 0,address:l}}:{}};try{const _=(await i.customers.list({email:t.email,limit:1})).data[0];return _?(await i.customers.update(_.id,p),_.id):(await i.customers.create(p)).id}catch(u){return console.error("Failed to upsert Stripe customer for checkout prefill:",u),null}}class Re{getProviderName(){return"Stripe"}async createCheckoutSession({items:i,customerEmail:l,customerPhone:d,userId:p,billingAddress:u,shippingAddress:_,shippingMethodId:U,currencyCode:me,locale:B,couponCode:K,couponContextItems:L}){const he=await _e.getStripeClient(),z=process.env.NEXT_PUBLIC_SUPABASE_URL||process.env.SUPABASE_URL,Q=process.env.SUPABASE_SERVICE_ROLE_KEY||process.env.SUPABASE_SECRET_KEY;if(!z||!Q)return console.error("Missing Supabase credentials for checkout (Service Key required)."),{error:"Internal Server Error",url:null};const a=xe.createClient(z,Q),$=process.env.NEXT_PUBLIC_URL||"http://localhost:4200",X=i.some(e=>!Ae.isDigitalItem(e));if(!i.length)return{error:"Cart is empty",url:null};const{data:ve,error:H}=await a.from("currencies").select("code, symbol, exchange_rate, is_default, is_active, auto_sync_product_prices, auto_update_exchange_rate, exchange_rate_source, exchange_rate_updated_at, rounding_mode, rounding_increment, rounding_charm_amount").eq("is_active",!0).order("code",{ascending:!0}),g=ve??[];if(H||g.length===0)return console.error("Error fetching currencies for checkout:",H),{error:"Failed to resolve store currencies",url:null};const j=v.getDefaultCurrency(g),m=g.find(e=>e.code===(me||"").toUpperCase())??j,F=m.code.toLowerCase(),G=await w.getEcommerceInventorySettings(a),fe=i.map(e=>e.product_id),V=i.map(e=>e.variant_id).filter(e=>!!e),{data:W,error:Y}=await a.from("products").select("id, title, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock, is_taxable").in("id",fe);if(Y||!W)return console.error("Error fetching products for validation:",Y),{error:"Failed to validate product prices",url:null};const{data:ye,error:J}=V.length?await a.from("product_variants").select("id, product_id, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock_quantity").in("id",V):{data:[],error:null};if(J)return console.error("Error fetching variants for validation:",J),{error:"Failed to validate product variants",url:null};const Z=new Map(W.map(e=>[e.id,e])),ee=new Map((ye||[]).map(e=>[e.id,e])),R=new Set,A=new Map;for(const e of i){const r=Z.get(e.product_id);if(!r)continue;const n=(e.variant_id?ee.get(e.variant_id):null)?.sku||r.sku;n&&(R.add(n),A.set(n,(A.get(n)??0)+e.quantity))}const{data:ge,error:re}=R.size?await a.from("inventory_items").select("sku, quantity").in("sku",[...R]):{data:[],error:null};if(re)return console.error("Error fetching SKU inventory for validation:",re),{error:"Failed to validate SKU inventory",url:null};const I=new Map((ge||[]).map(e=>[e.sku,Math.max(0,e.quantity??0)])),S=[],te=[],oe=[];let f=0,C=0,c=null;if(K){const e=await O.getCouponQuote({client:a,code:K,items:L&&L.length>0?L:i,currencyCode:m.code});if(!e.success)return{error:e.error,errorKey:e.errorKey,errorStatus:400,url:null};c=e.quote}const Se=O.getQuoteLineDiscountMap(c),Ce=e=>{const r=e.unitAmount*e.quantity,y=Math.max(0,r-e.lineDiscount);if(y<=0)return;const n=Math.floor(y/e.quantity),P=y-n*e.quantity,q=(b,x)=>{x<=0||b<=0||S.push({price_data:{currency:e.currency,product_data:{name:e.name,tax_code:T.getStripeTaxCodeForProduct(e.isTaxable),metadata:{productId:e.productId,variantId:e.variantId||""}},tax_behavior:"exclusive",unit_amount:b},quantity:x})};q(n,e.quantity-P),q(n+1,P)};for(const e of i){const r=Z.get(e.product_id);if(!r)return console.warn(`Product ${e.product_id} not found in DB.`),{url:null,...w.createInventoryUnavailableError(e.title)};const y=v.resolveEffectivePriceForCurrency({prices:v.normalizePriceMap(r.prices),salePrices:r.sale_prices||{},fallbackPrice:r.price,fallbackSalePrice:r.sale_price,saleStartAt:r.sale_start_at,saleEndAt:r.sale_end_at,scheduledPrice:r.scheduled_price,scheduledPrices:v.normalizePriceMap(r.scheduled_prices),scheduledPriceAt:r.scheduled_price_at,currencyCode:m.code,currencies:g});let n=y.sale_price??y.price,P=r.title,q=null;if(e.variant_id){const o=ee.get(e.variant_id);if(!o||o.product_id!==e.product_id)return{url:null,...w.createInventoryUnavailableError(e.title)};const M=A.get(o.sku)??e.quantity,ue=I.has(o.sku)?I.get(o.sku)??0:Math.max(0,o.stock_quantity??0);if(G.trackQuantities&&M>ue)return{url:null,...w.createInventoryInsufficientError(e.title,ue)};const le=v.resolveEffectivePriceForCurrency({prices:v.normalizePriceMap(o.prices),salePrices:o.sale_prices||{},fallbackPrice:o.price,fallbackSalePrice:o.sale_price,saleStartAt:o.sale_start_at,saleEndAt:o.sale_end_at,scheduledPrice:o.scheduled_price,scheduledPrices:v.normalizePriceMap(o.scheduled_prices),scheduledPriceAt:o.scheduled_price_at,currencyCode:m.code,currencies:g});n=le.sale_price??le.price,q=o.id,P=e.variant_label?`${r.title} - ${e.variant_label}`:`${r.title} - ${o.sku}`}else{const o=A.get(r.sku)??e.quantity,M=I.has(r.sku)?I.get(r.sku)??0:Math.max(0,r.stock??0);if(G.trackQuantities&&o>M)return{url:null,...w.createInventoryInsufficientError(e.title,M)}}const b=r.is_taxable??!0;if(n<0)return{error:"A product variation produced an invalid price.",url:null};const x=Math.min(n*e.quantity,Se.get(we.getCartLineCouponKey(e))??0);Ce({name:P,currency:F,productId:r.id,variantId:q,isTaxable:b,unitAmount:n,quantity:e.quantity,lineDiscount:x}),f+=n*e.quantity,C+=x,oe.push({product_id:r.id,quantity:e.quantity,price_at_purchase:n,variant_id:q}),te.push({product_id:r.id,quantity:e.quantity,unit_amount:n,discount_amount:x,is_taxable:b})}if(S.length===0&&C>=f)return{error:"This coupon would reduce the Stripe order to zero. Use a smaller discount for Stripe checkout.",errorKey:"ecommerce.coupon_zero_total_not_supported",errorStatus:400,url:null};if(S.length===0)return{error:"No valid items in cart",url:null};let h=0,N=null;if(U){const{data:e,error:r}=await a.from("shipping_zone_methods").select("id, name, name_translations, cost_amount, cost_currency").eq("id",U).single();if(r)return console.error("Failed to load shipping method:",r),{error:"Failed to load shipping method",url:null};h=v.convertMinorUnitAmount({amount:e.cost_amount??0,fromCurrencyCode:e.cost_currency||j.code,toCurrencyCode:m.code,currencies:g}),N=Le(e,B)}const ie=X?_??u:u;let s;try{s=await T.calculateCheckoutTaxes(a,{items:te,destination:{country_code:ie?.country_code,state:ie?.state}})}catch(e){return console.error("Failed to calculate checkout taxes:",e),{error:"Failed to calculate taxes",url:null}}h>0&&N&&S.push({price_data:{currency:F,product_data:{name:N,tax_code:s.enabled&&s.mode==="automatic"?T.STRIPE_TAX_CODE_SHIPPING:T.STRIPE_TAX_CODE_NONTAXABLE},tax_behavior:"exclusive",unit_amount:h},quantity:1});const E=s.enabled&&s.mode==="manual"&&!s.isPendingExternalCalculation?s.amount:0;E>0&&S.push({price_data:{currency:F,product_data:{name:"Tax",tax_code:T.STRIPE_TAX_CODE_NONTAXABLE},tax_behavior:"exclusive",unit_amount:E},quantity:1});const Ee=be.normalizeOrderCustomerDetails({email:l,phone:d,name:u?.recipient_name,billing:u,shipping:_}),ae=m.code,ke=Te.buildOrderTaxDetailsFromCalculation({calculation:s,subtotal:f,shippingTotal:h,total:Math.max(0,f-C)+h+E,currency:ae}),qe=Math.max(0,f-C)+h+E,{data:ne,error:ce}=await a.from("orders").insert({status:"pending",total:qe,currency:ae,exchange_rate_at_purchase:m.exchange_rate,subtotal:f,shipping_total:h,tax_total:E,tax_details:ke,coupon_id:c?.couponId??null,coupon_code:c?.code??null,discount_total:C,discount_details:c?{code:c.code,discount_type:c.discountType,discount_amount:c.discountAmount,provider:"stripe",provider_discounts:c.providerDiscounts,line_discounts:c.lineDiscounts}:null,provider:"stripe",user_id:p,customer_details:Ee}).select("id").single();if(ce||!ne)return console.error("Failed to create pending order:",ce),{error:"Failed to initiate order",url:null};const k=ne.id,{error:se}=await a.from("order_items").insert(oe.map(e=>({order_id:k,product_id:e.product_id,variant_id:e.variant_id??null,quantity:e.quantity,price_at_purchase:e.price_at_purchase})));if(se)return console.error("Failed to insert order items:",se),await a.from("orders").update({status:"failed"}).eq("id",k),{error:"Failed to record order items",url:null};if(p)try{await de.upsertDefaultUserAddresses({userId:p,billingAddress:u,shippingAddress:_,client:a}),await de.fillMissingUserProfileCheckoutDetails({userId:p,fullName:u?.recipient_name??_?.recipient_name??null,phone:d,client:a})}catch(e){console.error("Failed to sync checkout profile defaults before checkout:",e)}c&&await O.recordCouponRedemption({client:a,quote:c,orderId:k,provider:"stripe",discountTotal:C,userId:p,customerEmail:l,metadata:{currency:m.code,subtotal:f,shipping_total:h,tax_total:E}});const D=await Fe({email:l,phone:d,userId:p,billingAddress:u,shippingAddress:_});try{const e=await he.checkout.sessions.create({mode:"payment",success_url:`${$}/checkout/success?session_id={CHECKOUT_SESSION_ID}`,cancel_url:`${$}/checkout`,locale:Ue(B),line_items:S,automatic_tax:s.enabled&&s.mode==="automatic"?{enabled:!0}:void 0,billing_address_collection:"auto",customer:D||void 0,customer_email:D?void 0:l||void 0,customer_creation:D?void 0:"if_required",customer_update:D?{name:"auto",address:"auto",shipping:"auto"}:void 0,shipping_address_collection:X?{allowed_countries:De}:void 0,metadata:{orderId:k,taxMode:s.mode,currencyCode:m.code,couponCode:c?.code||""}}),{error:r}=await a.from("orders").update({stripe_session_id:e.id}).eq("id",k);return r&&console.error("Failed to save Stripe session ID on order:",r),{url:e.url}}catch(e){return console.error("Stripe session creation failed:",e),await a.from("orders").update({status:"failed"}).eq("id",k),e?.name==="StripeNotConfiguredError"||e?.type==="StripeAuthenticationError"?{error:"This store is not able to take payments right now. Please contact the seller to complete your purchase.",errorKey:"ecommerce.checkout_payments_unavailable",errorStatus:503,url:null}:{error:"Something went wrong while preparing your checkout. Please try again.",errorKey:"ecommerce.checkout_internal_server_error",url:null}}}}exports.StripeProvider=Re;
@@ -1,17 +1,17 @@
1
1
  import { getStripeClient as _e } from "../stripe/client.es.js";
2
- import { createClient as Pe } from "@supabase/supabase-js";
3
- import { countries as qe } from "../countries.es.js";
4
- import { normalizeOrderCustomerDetails as we } from "../customer.es.js";
5
- import { getCouponQuote as be, getQuoteLineDiscountMap as Te, recordCouponRedemption as Ae } from "../coupon-server.es.js";
2
+ import { createClient as we } from "@supabase/supabase-js";
3
+ import { countries as Pe } from "../countries.es.js";
4
+ import { normalizeOrderCustomerDetails as be } from "../customer.es.js";
5
+ import { getCouponQuote as qe, getQuoteLineDiscountMap as Te, recordCouponRedemption as Ae } from "../coupon-server.es.js";
6
6
  import { getCartLineCouponKey as Ie } from "../coupons.es.js";
7
7
  import { upsertDefaultUserAddresses as De, fillMissingUserProfileCheckoutDetails as Ue } from "../customer-addresses.es.js";
8
8
  import { getEcommerceInventorySettings as Le, createInventoryUnavailableError as se, createInventoryInsufficientError as ue } from "../inventory-settings.es.js";
9
9
  import { calculateCheckoutTaxes as Me, STRIPE_TAX_CODE_SHIPPING as Fe, STRIPE_TAX_CODE_NONTAXABLE as le, getStripeTaxCodeForProduct as Re } from "../tax-calculation.es.js";
10
- import { getDefaultCurrency as Ne, resolveEffectivePriceForCurrency as de, normalizePriceMap as I, convertMinorUnitAmount as Be } from "../currency.es.js";
11
- import { buildOrderTaxDetailsFromCalculation as Oe } from "../order-tax-details.es.js";
12
- import { isDigitalItem as Ke } from "../types.es.js";
10
+ import { getDefaultCurrency as Ne, resolveEffectivePriceForCurrency as de, normalizePriceMap as I, convertMinorUnitAmount as Ke } from "../currency.es.js";
11
+ import { buildOrderTaxDetailsFromCalculation as Be } from "../order-tax-details.es.js";
12
+ import { isDigitalItem as Oe } from "../types.es.js";
13
13
  import { resolveTranslatedText as Qe } from "../variation-utils.es.js";
14
- const ze = qe.map((r) => r.code), $e = /* @__PURE__ */ new Set([
14
+ const ze = Pe.map((r) => r.code), $e = /* @__PURE__ */ new Set([
15
15
  "bg",
16
16
  "cs",
17
17
  "da",
@@ -123,10 +123,10 @@ class ct {
123
123
  couponCode: N,
124
124
  couponContextItems: U
125
125
  }) {
126
- const he = await _e(), B = process.env.NEXT_PUBLIC_SUPABASE_URL || process.env.SUPABASE_URL, O = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_SECRET_KEY;
127
- if (!B || !O)
126
+ const he = await _e(), K = process.env.NEXT_PUBLIC_SUPABASE_URL || process.env.SUPABASE_URL, B = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_SECRET_KEY;
127
+ if (!K || !B)
128
128
  return console.error("Missing Supabase credentials for checkout (Service Key required)."), { error: "Internal Server Error", url: null };
129
- const a = Pe(B, O), K = process.env.NEXT_PUBLIC_URL || "http://localhost:4200", Q = i.some((e) => !Ke(e));
129
+ const a = we(K, B), O = process.env.NEXT_PUBLIC_URL || "http://localhost:4200", Q = i.some((e) => !Oe(e));
130
130
  if (!i.length)
131
131
  return { error: "Cart is empty", url: null };
132
132
  const { data: fe, error: z } = await a.from("currencies").select(
@@ -140,21 +140,21 @@ class ct {
140
140
  const { data: ye, error: W } = H.length ? await a.from("product_variants").select("id, product_id, sku, price, prices, sale_price, sale_prices, sale_start_at, sale_end_at, scheduled_price, scheduled_prices, scheduled_price_at, stock_quantity").in("id", H) : { data: [], error: null };
141
141
  if (W)
142
142
  return console.error("Error fetching variants for validation:", W), { error: "Failed to validate product variants", url: null };
143
- const Y = new Map(G.map((e) => [e.id, e])), j = new Map((ye || []).map((e) => [e.id, e])), M = /* @__PURE__ */ new Set(), w = /* @__PURE__ */ new Map();
143
+ const Y = new Map(G.map((e) => [e.id, e])), j = new Map((ye || []).map((e) => [e.id, e])), M = /* @__PURE__ */ new Set(), b = /* @__PURE__ */ new Map();
144
144
  for (const e of i) {
145
145
  const t = Y.get(e.product_id);
146
146
  if (!t)
147
147
  continue;
148
148
  const n = (e.variant_id ? j.get(e.variant_id) : null)?.sku || t.sku;
149
- n && (M.add(n), w.set(
149
+ n && (M.add(n), b.set(
150
150
  n,
151
- (w.get(n) ?? 0) + e.quantity
151
+ (b.get(n) ?? 0) + e.quantity
152
152
  ));
153
153
  }
154
154
  const { data: ge, error: J } = M.size ? await a.from("inventory_items").select("sku, quantity").in("sku", [...M]) : { data: [], error: null };
155
155
  if (J)
156
156
  return console.error("Error fetching SKU inventory for validation:", J), { error: "Failed to validate SKU inventory", url: null };
157
- const b = new Map(
157
+ const q = new Map(
158
158
  (ge || []).map((e) => [
159
159
  e.sku,
160
160
  Math.max(0, e.quantity ?? 0)
@@ -162,7 +162,7 @@ class ct {
162
162
  ), g = [], Z = [], ee = [];
163
163
  let f = 0, S = 0, c = null;
164
164
  if (N) {
165
- const e = await be({
165
+ const e = await qe({
166
166
  client: a,
167
167
  code: N,
168
168
  items: U && U.length > 0 ? U : i,
@@ -181,8 +181,8 @@ class ct {
181
181
  const t = e.unitAmount * e.quantity, v = Math.max(0, t - e.lineDiscount);
182
182
  if (v <= 0)
183
183
  return;
184
- const n = Math.floor(v / e.quantity), P = v - n * e.quantity, k = (q, E) => {
185
- E <= 0 || q <= 0 || g.push({
184
+ const n = Math.floor(v / e.quantity), w = v - n * e.quantity, E = (P, x) => {
185
+ x <= 0 || P <= 0 || g.push({
186
186
  price_data: {
187
187
  currency: e.currency,
188
188
  product_data: {
@@ -194,12 +194,12 @@ class ct {
194
194
  }
195
195
  },
196
196
  tax_behavior: "exclusive",
197
- unit_amount: q
197
+ unit_amount: P
198
198
  },
199
- quantity: E
199
+ quantity: x
200
200
  });
201
201
  };
202
- k(n, e.quantity - P), k(n + 1, P);
202
+ E(n, e.quantity - w), E(n + 1, w);
203
203
  };
204
204
  for (const e of i) {
205
205
  const t = Y.get(e.product_id);
@@ -221,7 +221,7 @@ class ct {
221
221
  currencyCode: m.code,
222
222
  currencies: y
223
223
  });
224
- let n = v.sale_price ?? v.price, P = t.title, k = null;
224
+ let n = v.sale_price ?? v.price, w = t.title, E = null;
225
225
  if (e.variant_id) {
226
226
  const o = j.get(e.variant_id);
227
227
  if (!o || o.product_id !== e.product_id)
@@ -229,7 +229,7 @@ class ct {
229
229
  url: null,
230
230
  ...se(e.title)
231
231
  };
232
- const A = w.get(o.sku) ?? e.quantity, ne = b.has(o.sku) ? b.get(o.sku) ?? 0 : Math.max(0, o.stock_quantity ?? 0);
232
+ const A = b.get(o.sku) ?? e.quantity, ne = q.has(o.sku) ? q.get(o.sku) ?? 0 : Math.max(0, o.stock_quantity ?? 0);
233
233
  if (X.trackQuantities && A > ne)
234
234
  return {
235
235
  url: null,
@@ -248,42 +248,42 @@ class ct {
248
248
  currencyCode: m.code,
249
249
  currencies: y
250
250
  });
251
- n = ce.sale_price ?? ce.price, k = o.id, P = e.variant_label ? `${t.title} - ${e.variant_label}` : `${t.title} - ${o.sku}`;
251
+ n = ce.sale_price ?? ce.price, E = o.id, w = e.variant_label ? `${t.title} - ${e.variant_label}` : `${t.title} - ${o.sku}`;
252
252
  } else {
253
- const o = w.get(t.sku) ?? e.quantity, A = b.has(t.sku) ? b.get(t.sku) ?? 0 : Math.max(0, t.stock ?? 0);
253
+ const o = b.get(t.sku) ?? e.quantity, A = q.has(t.sku) ? q.get(t.sku) ?? 0 : Math.max(0, t.stock ?? 0);
254
254
  if (X.trackQuantities && o > A)
255
255
  return {
256
256
  url: null,
257
257
  ...ue(e.title, A)
258
258
  };
259
259
  }
260
- const q = t.is_taxable ?? !0;
260
+ const P = t.is_taxable ?? !0;
261
261
  if (n < 0)
262
262
  return { error: "A product variation produced an invalid price.", url: null };
263
- const E = Math.min(
263
+ const x = Math.min(
264
264
  n * e.quantity,
265
265
  Se.get(Ie(e)) ?? 0
266
266
  );
267
267
  Ce({
268
- name: P,
268
+ name: w,
269
269
  currency: L,
270
270
  productId: t.id,
271
- variantId: k,
272
- isTaxable: q,
271
+ variantId: E,
272
+ isTaxable: P,
273
273
  unitAmount: n,
274
274
  quantity: e.quantity,
275
- lineDiscount: E
276
- }), f += n * e.quantity, S += E, ee.push({
275
+ lineDiscount: x
276
+ }), f += n * e.quantity, S += x, ee.push({
277
277
  product_id: t.id,
278
278
  quantity: e.quantity,
279
279
  price_at_purchase: n,
280
- variant_id: k
280
+ variant_id: E
281
281
  }), Z.push({
282
282
  product_id: t.id,
283
283
  quantity: e.quantity,
284
284
  unit_amount: n,
285
- discount_amount: E,
286
- is_taxable: q
285
+ discount_amount: x,
286
+ is_taxable: P
287
287
  });
288
288
  }
289
289
  if (g.length === 0 && S >= f)
@@ -300,7 +300,7 @@ class ct {
300
300
  const { data: e, error: t } = await a.from("shipping_zone_methods").select("id, name, name_translations, cost_amount, cost_currency").eq("id", D).single();
301
301
  if (t)
302
302
  return console.error("Failed to load shipping method:", t), { error: "Failed to load shipping method", url: null };
303
- h = Be({
303
+ h = Ke({
304
304
  amount: e.cost_amount ?? 0,
305
305
  fromCurrencyCode: e.cost_currency || $.code,
306
306
  toCurrencyCode: m.code,
@@ -345,27 +345,27 @@ class ct {
345
345
  },
346
346
  quantity: 1
347
347
  });
348
- const xe = we({
348
+ const ke = be({
349
349
  email: l,
350
350
  phone: d,
351
351
  name: u?.recipient_name,
352
352
  billing: u,
353
353
  shipping: _
354
- }), re = m.code, ke = Oe({
354
+ }), re = m.code, Ee = Be({
355
355
  calculation: s,
356
356
  subtotal: f,
357
357
  shippingTotal: h,
358
358
  total: Math.max(0, f - S) + h + C,
359
359
  currency: re
360
- }), Ee = Math.max(0, f - S) + h + C, { data: oe, error: ie } = await a.from("orders").insert({
360
+ }), xe = Math.max(0, f - S) + h + C, { data: oe, error: ie } = await a.from("orders").insert({
361
361
  status: "pending",
362
- total: Ee,
362
+ total: xe,
363
363
  currency: re,
364
364
  exchange_rate_at_purchase: m.exchange_rate,
365
365
  subtotal: f,
366
366
  shipping_total: h,
367
367
  tax_total: C,
368
- tax_details: ke,
368
+ tax_details: Ee,
369
369
  coupon_id: c?.couponId ?? null,
370
370
  coupon_code: c?.code ?? null,
371
371
  discount_total: S,
@@ -379,13 +379,13 @@ class ct {
379
379
  } : null,
380
380
  provider: "stripe",
381
381
  user_id: p,
382
- customer_details: xe
382
+ customer_details: ke
383
383
  }).select("id").single();
384
384
  if (ie || !oe)
385
385
  return console.error("Failed to create pending order:", ie), { error: "Failed to initiate order", url: null };
386
- const x = oe.id, { error: ae } = await a.from("order_items").insert(
386
+ const k = oe.id, { error: ae } = await a.from("order_items").insert(
387
387
  ee.map((e) => ({
388
- order_id: x,
388
+ order_id: k,
389
389
  product_id: e.product_id,
390
390
  variant_id: e.variant_id ?? null,
391
391
  quantity: e.quantity,
@@ -393,7 +393,7 @@ class ct {
393
393
  }))
394
394
  );
395
395
  if (ae)
396
- return console.error("Failed to insert order items:", ae), await a.from("orders").update({ status: "failed" }).eq("id", x), { error: "Failed to record order items", url: null };
396
+ return console.error("Failed to insert order items:", ae), await a.from("orders").update({ status: "failed" }).eq("id", k), { error: "Failed to record order items", url: null };
397
397
  if (p)
398
398
  try {
399
399
  await De({
@@ -416,7 +416,7 @@ class ct {
416
416
  c && await Ae({
417
417
  client: a,
418
418
  quote: c,
419
- orderId: x,
419
+ orderId: k,
420
420
  provider: "stripe",
421
421
  discountTotal: S,
422
422
  userId: p,
@@ -438,8 +438,8 @@ class ct {
438
438
  try {
439
439
  const e = await he.checkout.sessions.create({
440
440
  mode: "payment",
441
- success_url: `${K}/checkout/success?session_id={CHECKOUT_SESSION_ID}`,
442
- cancel_url: `${K}/checkout`,
441
+ success_url: `${O}/checkout/success?session_id={CHECKOUT_SESSION_ID}`,
442
+ cancel_url: `${O}/checkout`,
443
443
  locale: Xe(R),
444
444
  line_items: g,
445
445
  automatic_tax: s.enabled && s.mode === "automatic" ? { enabled: !0 } : void 0,
@@ -456,15 +456,24 @@ class ct {
456
456
  allowed_countries: ze
457
457
  } : void 0,
458
458
  metadata: {
459
- orderId: x,
459
+ orderId: k,
460
460
  taxMode: s.mode,
461
461
  currencyCode: m.code,
462
462
  couponCode: c?.code || ""
463
463
  }
464
- }), { error: t } = await a.from("orders").update({ stripe_session_id: e.id }).eq("id", x);
464
+ }), { error: t } = await a.from("orders").update({ stripe_session_id: e.id }).eq("id", k);
465
465
  return t && console.error("Failed to save Stripe session ID on order:", t), { url: e.url };
466
466
  } catch (e) {
467
- return console.error("Stripe session creation failed:", e), await a.from("orders").update({ status: "failed" }).eq("id", x), { error: e.message, url: null };
467
+ return console.error("Stripe session creation failed:", e), await a.from("orders").update({ status: "failed" }).eq("id", k), e?.name === "StripeNotConfiguredError" || e?.type === "StripeAuthenticationError" ? {
468
+ error: "This store is not able to take payments right now. Please contact the seller to complete your purchase.",
469
+ errorKey: "ecommerce.checkout_payments_unavailable",
470
+ errorStatus: 503,
471
+ url: null
472
+ } : {
473
+ error: "Something went wrong while preparing your checkout. Please try again.",
474
+ errorKey: "ecommerce.checkout_internal_server_error",
475
+ url: null
476
+ };
468
477
  }
469
478
  }
470
479
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("stripe"),i=require("../payment-config.cjs.js");let e=null,r=null;async function c(){const t=await i.resolveStripeSecretKey()||"sk_test_dummy";return e&&r===t||(e=new n(t,{typescript:!0}),r=t),e}exports.getStripeClient=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("stripe"),o=require("../payment-config.cjs.js");let r=null,t=null;class n extends Error{constructor(){super("Stripe is not configured: no secret key found in CMS → Payments or STRIPE_SECRET_KEY."),this.name="StripeNotConfiguredError"}}async function c(){const e=await o.resolveStripeSecretKey();if(!e)throw new n;return r&&t===e||(r=new i(e,{typescript:!0}),t=e),r}exports.StripeNotConfiguredError=n;exports.getStripeClient=c;
@@ -1,2 +1,11 @@
1
1
  import { default as Stripe } from 'stripe';
2
+ /**
3
+ * Thrown when Stripe is asked for before any secret key has been configured. Callers
4
+ * that can reach a shopper should preflight with `getProviderReadiness('stripe')`
5
+ * instead of relying on this — it exists so a misconfiguration can never be mistaken
6
+ * for a Stripe outage.
7
+ */
8
+ export declare class StripeNotConfiguredError extends Error {
9
+ constructor();
10
+ }
2
11
  export declare function getStripeClient(): Promise<Stripe>;
@@ -1,10 +1,20 @@
1
- import i from "stripe";
2
- import { resolveStripeSecretKey as n } from "../payment-config.es.js";
3
- let e = null, r = null;
4
- async function o() {
5
- const t = await n() || "sk_test_dummy";
6
- return e && r === t || (e = new i(t, { typescript: !0 }), r = t), e;
1
+ import n from "stripe";
2
+ import { resolveStripeSecretKey as o } from "../payment-config.es.js";
3
+ let r = null, t = null;
4
+ class i extends Error {
5
+ constructor() {
6
+ super(
7
+ "Stripe is not configured: no secret key found in CMS → Payments or STRIPE_SECRET_KEY."
8
+ ), this.name = "StripeNotConfiguredError";
9
+ }
10
+ }
11
+ async function p() {
12
+ const e = await o();
13
+ if (!e)
14
+ throw new i();
15
+ return r && t === e || (r = new n(e, { typescript: !0 }), t = e), r;
7
16
  }
8
17
  export {
9
- o as getStripeClient
18
+ i as StripeNotConfiguredError,
19
+ p as getStripeClient
10
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextblock-cms/ecom",
3
- "version": "0.15.8",
3
+ "version": "0.15.9",
4
4
  "license": "AGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -11,9 +11,9 @@
11
11
  },
12
12
  "type": "module",
13
13
  "dependencies": {
14
- "@nextblock-cms/db": "^0.15.8",
15
- "@nextblock-cms/ui": "^0.15.8",
16
- "@nextblock-cms/utils": "^0.15.8",
14
+ "@nextblock-cms/db": "^0.15.9",
15
+ "@nextblock-cms/ui": "^0.15.9",
16
+ "@nextblock-cms/utils": "^0.15.9",
17
17
  "@freemius/checkout": "^1.4.1",
18
18
  "@freemius/sdk": "^0.3.0",
19
19
  "@hookform/resolvers": "^5.2.2",
package/server.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./lib/payment-config.cjs.js"),h=require("./lib/stripe/client.cjs.js"),O=require("./lib/stripe/checkout.cjs.js"),A=require("./lib/stripe/order-sync.cjs.js"),R=require("./lib/stripe/webhooks.cjs.js"),T=require("./lib/order-inventory.cjs.js"),n=require("./lib/order-tax-details.cjs.js"),i=require("./lib/invoice.cjs.js"),g=require("./lib/invoice-server.cjs.js"),l=require("./lib/customer-orders.cjs.js"),C=require("./lib/coupon-server.cjs.js"),P=require("./lib/freemius-coupons.cjs.js"),d=require("./lib/customer.cjs.js"),m=require("./lib/customer-addresses.cjs.js"),e=require("./lib/currency.cjs.js"),q=require("./lib/currency-constants.cjs.js"),p=require("./lib/currency-sync.cjs.js"),D=require("./lib/product-schema.cjs.js"),r=require("./lib/product-actions.cjs.js"),E=require("./lib/factory.cjs.js"),b=require("./lib/providers/stripe.cjs.js"),c=require("./lib/providers/freemius.cjs.js"),a=require("./lib/freemius-order-sync.cjs.js"),I=require("./lib/freemius-license.cjs.js"),s=require("./lib/pages/cms/products/actions.cjs.js"),o=require("./lib/pages/cms/products/server-actions.cjs.js"),y=require("./lib/pages/cms/payments/queries.cjs.js"),f=require("./lib/pages/cms/orders/OrdersPage.cjs.js"),x=require("./lib/pages/cms/orders/OrderDetailPage.cjs.js"),k=require("./lib/pages/cms/orders/ExportReportsDialog.cjs.js"),M=require("./lib/pages/cms/orders/export-actions.cjs.js"),v=require("./lib/pages/cms/orders/actions.cjs.js"),L=require("./lib/pages/cms/products/ProductsPage.cjs.js"),N=require("./lib/pages/cms/products/inventory/InventoryPage.cjs.js"),z=require("./lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js"),_=require("./lib/pages/cms/products/new/NewProductPage.cjs.js"),U=require("./lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js"),W=require("./lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js"),G=require("./lib/pages/cms/products/categories/CategoryManagementPage.cjs.js"),w=require("./lib/pages/cms/payments/PaymentsPage.cjs.js"),F=require("./lib/pages/cms/payments/actions.cjs.js"),K=require("./lib/pages/cms/shipping/ShippingPage.cjs.js"),u=require("./lib/pages/cms/shipping/server-actions.cjs.js"),V=require("./lib/pages/cms/taxes/TaxesPage.cjs.js"),S=require("./lib/pages/cms/taxes/actions.cjs.js"),B=require("./lib/pages/cms/coupons/CouponsPage.cjs.js"),Y=require("./lib/pages/cms/coupons/EditCouponPage.cjs.js");exports.clearPaymentConfigCache=t.clearPaymentConfigCache;exports.getPaymentConfigStatus=t.getPaymentConfigStatus;exports.getPaymentCredentialsView=t.getPaymentCredentialsView;exports.hydrateFreemiusEnvFromDb=t.hydrateFreemiusEnvFromDb;exports.resolveStripePublishableKey=t.resolveStripePublishableKey;exports.resolveStripeSecretKey=t.resolveStripeSecretKey;exports.resolveStripeWebhookSecret=t.resolveStripeWebhookSecret;exports.savePaymentCredentials=t.savePaymentCredentials;exports.getStripeClient=h.getStripeClient;exports.createCheckoutSession=O.createCheckoutSession;exports.syncStripeOrderFromSession=A.syncStripeOrderFromSession;exports.handleStripeWebhook=R.handleStripeWebhook;exports.applyOrderInventoryDeduction=T.applyOrderInventoryDeduction;exports.aggregateOrderTaxLines=n.aggregateOrderTaxLines;exports.buildOrderTaxDetailsFromCalculation=n.buildOrderTaxDetailsFromCalculation;exports.buildOrderTaxDetailsFromStripeSession=n.buildOrderTaxDetailsFromStripeSession;exports.getOrderTaxRateJurisdiction=n.getOrderTaxRateJurisdiction;exports.getOrderTaxRateLabel=n.getOrderTaxRateLabel;exports.getOrderTaxRatePercentage=n.getOrderTaxRatePercentage;exports.normalizeOrderTaxDetails=n.normalizeOrderTaxDetails;exports.DEFAULT_INVOICE_SETTINGS=i.DEFAULT_INVOICE_SETTINGS;exports.INVOICE_SETTINGS_KEY=i.INVOICE_SETTINGS_KEY;exports.formatInvoiceCurrency=i.formatInvoiceCurrency;exports.formatInvoiceDate=i.formatInvoiceDate;exports.getInvoiceAddressLines=i.getInvoiceAddressLines;exports.normalizeInvoiceSettings=i.normalizeInvoiceSettings;exports.serializeInvoiceSettings=i.serializeInvoiceSettings;exports.assignInvoiceMetadata=g.assignInvoiceMetadata;exports.getInvoiceBrandingData=g.getInvoiceBrandingData;exports.getInvoiceOrder=g.getInvoiceOrder;exports.getInvoicePresentationData=g.getInvoicePresentationData;exports.getCurrentCustomerOrder=l.getCurrentCustomerOrder;exports.getCurrentCustomerOrderInvoice=l.getCurrentCustomerOrderInvoice;exports.getCurrentCustomerOrders=l.getCurrentCustomerOrders;exports.getCouponQuote=C.getCouponQuote;exports.getQuoteLineDiscountMap=C.getQuoteLineDiscountMap;exports.recordCouponRedemption=C.recordCouponRedemption;exports.deleteCouponFromFreemius=P.deleteCouponFromFreemius;exports.syncCouponToFreemius=P.syncCouponToFreemius;exports.syncProductSaleCouponToFreemius=P.syncProductSaleCouponToFreemius;exports.addressesMatch=d.addressesMatch;exports.emptyCustomerAddress=d.emptyCustomerAddress;exports.isCustomerAddressComplete=d.isCustomerAddressComplete;exports.normalizeCustomerAddress=d.normalizeCustomerAddress;exports.normalizeOrderCustomerDetails=d.normalizeOrderCustomerDetails;exports.fillMissingUserProfileCheckoutDetails=m.fillMissingUserProfileCheckoutDetails;exports.getDefaultUserAddresses=m.getDefaultUserAddresses;exports.upsertDefaultUserAddresses=m.upsertDefaultUserAddresses;exports.CURRENCY_ROUNDING_MODES=e.CURRENCY_ROUNDING_MODES;exports.applyCurrencyRounding=e.applyCurrencyRounding;exports.convertMinorUnitAmount=e.convertMinorUnitAmount;exports.describeCurrencyRoundingRule=e.describeCurrencyRoundingRule;exports.getCurrencyLookup=e.getCurrencyLookup;exports.getDefaultCurrency=e.getDefaultCurrency;exports.getExchangeRateForCurrency=e.getExchangeRateForCurrency;exports.inferCurrencyCodeFromLocale=e.inferCurrencyCodeFromLocale;exports.isSaleWindowActive=e.isSaleWindowActive;exports.isScheduledPriceDue=e.isScheduledPriceDue;exports.normalizeCurrencyRecord=e.normalizeCurrencyRecord;exports.normalizeCurrencyRoundingMode=e.normalizeCurrencyRoundingMode;exports.normalizePriceMap=e.normalizePriceMap;exports.normalizeSalePriceMap=e.normalizeSalePriceMap;exports.resolveEffectivePriceForCurrency=e.resolveEffectivePriceForCurrency;exports.resolvePriceForCurrency=e.resolvePriceForCurrency;exports.resolvePriceRangeForCurrency=e.resolvePriceRangeForCurrency;exports.sortCurrencies=e.sortCurrencies;exports.CURRENCY_COOKIE_NAME=q.CURRENCY_COOKIE_NAME;exports.clearAutoSyncedCurrencyPriceOverrides=p.clearAutoSyncedCurrencyPriceOverrides;exports.rebaseStoreCurrencyExchangeRates=p.rebaseStoreCurrencyExchangeRates;exports.syncStoreCurrencyRates=p.syncStoreCurrencyRates;exports.productSchema=D.productSchema;exports.copyProductFromLanguage=r.copyProductFromLanguage;exports.createProduct=r.createProduct;exports.deleteProduct=r.deleteProduct;exports.fetchTranslatedProductsForCartInternal=r.fetchTranslatedProductsForCartInternal;exports.getProduct=r.getProduct;exports.getProductBySlug=r.getProductBySlug;exports.getProducts=r.getProducts;exports.syncCategoriesForTranslationGroup=r.syncCategoriesForTranslationGroup;exports.updateProduct=r.updateProduct;exports.getPaymentProvider=E.getPaymentProvider;exports.StripeProvider=b.StripeProvider;exports.FreemiusProvider=c.FreemiusProvider;exports.parseFreemiusCheckoutCredentialsMap=c.parseFreemiusCheckoutCredentialsMap;exports.readFreemiusEnvValue=c.readFreemiusEnvValue;exports.resolveFreemiusCheckoutCredentials=c.resolveFreemiusCheckoutCredentials;exports.syncFreemiusProductsToSupabase=c.syncFreemiusProductsToSupabase;exports.syncSingleFreemiusProduct=c.syncSingleFreemiusProduct;exports.extractFreemiusCheckoutMetadata=a.extractFreemiusCheckoutMetadata;exports.getFreemiusWebhookSecretCandidates=a.getFreemiusWebhookSecretCandidates;exports.resolveFreemiusStatusFromCheckoutResponse=a.resolveFreemiusStatusFromCheckoutResponse;exports.resolveFreemiusStatusFromWebhookEvent=a.resolveFreemiusStatusFromWebhookEvent;exports.syncFreemiusCheckoutOrder=a.syncFreemiusCheckoutOrder;exports.syncFreemiusOrderFromWebhookEvent=a.syncFreemiusOrderFromWebhookEvent;exports.verifyFreemiusWebhookSignature=a.verifyFreemiusWebhookSignature;exports.getFreemiusOrderLicense=I.getFreemiusOrderLicense;exports.getCategoriesWithCount=s.getCategoriesWithCount;exports.getCategoryBySlug=s.getCategoryBySlug;exports.getCmsProduct=s.getProduct;exports.getCmsProducts=s.getProducts;exports.getGlobalProductAttributes=s.getGlobalProductAttributes;exports.getProductCategories=s.getProductCategories;exports.getProductTranslations=s.getProductTranslations;exports.createCategoryAction=o.createCategoryAction;exports.createProductAction=o.createProductAction;exports.deleteCategoryAction=o.deleteCategoryAction;exports.deleteProductAction=o.deleteProductAction;exports.publishProductAction=o.publishProductAction;exports.syncProductCategoriesAction=o.syncProductCategoriesAction;exports.updateCategoryAction=o.updateCategoryAction;exports.updateProductAction=o.updateProductAction;exports.getEnabledPaymentProviders=y.getEnabledPaymentProviders;exports.getPaymentSettings=y.getPaymentSettings;exports.getStoreConfigStatus=y.getStoreConfigStatus;exports.OrdersPage=f.OrdersPage;exports.OrderDetailPage=x.OrderDetailPage;exports.ExportReportsDialog=k.ExportReportsDialog;exports.fetchOrderReportData=M.fetchOrderReportData;exports.getOrderDetails=v.getOrderDetails;exports.getOrders=v.getOrders;exports.ProductsPage=L.ProductsPage;exports.InventoryPage=N.InventoryPage;exports.AttributeManagementPage=z.AttributeManagementPage;exports.NewProductPage=_.NewProductPage;exports.EditProductPage=U.EditProductPage;exports.CopyProductFromLanguage=W.CopyProductFromLanguage;exports.CategoryManagementPage=G.CategoryManagementPage;exports.PaymentsPage=w.PaymentsPage;exports.savePaymentProviderCredentials=F.savePaymentProviderCredentials;exports.updatePaymentSettings=F.updatePaymentSettings;exports.ShippingPage=K.ShippingPage;exports.createShippingRate=u.createShippingRate;exports.createShippingZone=u.createShippingZone;exports.deleteShippingRate=u.deleteShippingRate;exports.deleteShippingZone=u.deleteShippingZone;exports.updateInventoryTrackingAction=u.updateInventoryTrackingAction;exports.updateShippingRate=u.updateShippingRate;exports.updateShippingZone=u.updateShippingZone;exports.TaxesPage=V.TaxesPage;exports.deleteTaxRateAction=S.deleteTaxRateAction;exports.saveTaxRateAction=S.saveTaxRateAction;exports.updateTaxSettingsAction=S.updateTaxSettingsAction;exports.CouponsPage=B.CouponsPage;exports.EditCouponPage=Y.EditCouponPage;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./lib/payment-config.cjs.js"),v=require("./lib/stripe/client.cjs.js"),O=require("./lib/stripe/checkout.cjs.js"),R=require("./lib/stripe/order-sync.cjs.js"),A=require("./lib/stripe/webhooks.cjs.js"),T=require("./lib/order-inventory.cjs.js"),n=require("./lib/order-tax-details.cjs.js"),i=require("./lib/invoice.cjs.js"),l=require("./lib/invoice-server.cjs.js"),C=require("./lib/customer-orders.cjs.js"),P=require("./lib/coupon-server.cjs.js"),m=require("./lib/freemius-coupons.cjs.js"),g=require("./lib/customer.cjs.js"),p=require("./lib/customer-addresses.cjs.js"),e=require("./lib/currency.cjs.js"),E=require("./lib/currency-constants.cjs.js"),y=require("./lib/currency-sync.cjs.js"),q=require("./lib/product-schema.cjs.js"),r=require("./lib/product-actions.cjs.js"),D=require("./lib/factory.cjs.js"),b=require("./lib/providers/stripe.cjs.js"),c=require("./lib/providers/freemius.cjs.js"),a=require("./lib/freemius-order-sync.cjs.js"),I=require("./lib/freemius-license.cjs.js"),s=require("./lib/pages/cms/products/actions.cjs.js"),o=require("./lib/pages/cms/products/server-actions.cjs.js"),d=require("./lib/pages/cms/payments/queries.cjs.js"),f=require("./lib/pages/cms/orders/OrdersPage.cjs.js"),x=require("./lib/pages/cms/orders/OrderDetailPage.cjs.js"),k=require("./lib/pages/cms/orders/ExportReportsDialog.cjs.js"),M=require("./lib/pages/cms/orders/export-actions.cjs.js"),F=require("./lib/pages/cms/orders/actions.cjs.js"),N=require("./lib/pages/cms/products/ProductsPage.cjs.js"),L=require("./lib/pages/cms/products/inventory/InventoryPage.cjs.js"),z=require("./lib/pages/cms/products/attributes/AttributeManagementPage.cjs.js"),_=require("./lib/pages/cms/products/new/NewProductPage.cjs.js"),U=require("./lib/pages/cms/products/_id_/edit/EditProductPage.cjs.js"),W=require("./lib/pages/cms/products/components/CopyProductFromLanguage.cjs.js"),G=require("./lib/pages/cms/products/categories/CategoryManagementPage.cjs.js"),w=require("./lib/pages/cms/payments/PaymentsPage.cjs.js"),h=require("./lib/pages/cms/payments/actions.cjs.js"),K=require("./lib/pages/cms/shipping/ShippingPage.cjs.js"),u=require("./lib/pages/cms/shipping/server-actions.cjs.js"),V=require("./lib/pages/cms/taxes/TaxesPage.cjs.js"),S=require("./lib/pages/cms/taxes/actions.cjs.js"),B=require("./lib/pages/cms/coupons/CouponsPage.cjs.js"),Y=require("./lib/pages/cms/coupons/EditCouponPage.cjs.js");exports.clearPaymentConfigCache=t.clearPaymentConfigCache;exports.getPaymentConfigStatus=t.getPaymentConfigStatus;exports.getPaymentCredentialsView=t.getPaymentCredentialsView;exports.hydrateFreemiusEnvFromDb=t.hydrateFreemiusEnvFromDb;exports.resolveStripePublishableKey=t.resolveStripePublishableKey;exports.resolveStripeSecretKey=t.resolveStripeSecretKey;exports.resolveStripeWebhookSecret=t.resolveStripeWebhookSecret;exports.savePaymentCredentials=t.savePaymentCredentials;exports.StripeNotConfiguredError=v.StripeNotConfiguredError;exports.getStripeClient=v.getStripeClient;exports.createCheckoutSession=O.createCheckoutSession;exports.syncStripeOrderFromSession=R.syncStripeOrderFromSession;exports.handleStripeWebhook=A.handleStripeWebhook;exports.applyOrderInventoryDeduction=T.applyOrderInventoryDeduction;exports.aggregateOrderTaxLines=n.aggregateOrderTaxLines;exports.buildOrderTaxDetailsFromCalculation=n.buildOrderTaxDetailsFromCalculation;exports.buildOrderTaxDetailsFromStripeSession=n.buildOrderTaxDetailsFromStripeSession;exports.getOrderTaxRateJurisdiction=n.getOrderTaxRateJurisdiction;exports.getOrderTaxRateLabel=n.getOrderTaxRateLabel;exports.getOrderTaxRatePercentage=n.getOrderTaxRatePercentage;exports.normalizeOrderTaxDetails=n.normalizeOrderTaxDetails;exports.DEFAULT_INVOICE_SETTINGS=i.DEFAULT_INVOICE_SETTINGS;exports.INVOICE_SETTINGS_KEY=i.INVOICE_SETTINGS_KEY;exports.formatInvoiceCurrency=i.formatInvoiceCurrency;exports.formatInvoiceDate=i.formatInvoiceDate;exports.getInvoiceAddressLines=i.getInvoiceAddressLines;exports.normalizeInvoiceSettings=i.normalizeInvoiceSettings;exports.serializeInvoiceSettings=i.serializeInvoiceSettings;exports.assignInvoiceMetadata=l.assignInvoiceMetadata;exports.getInvoiceBrandingData=l.getInvoiceBrandingData;exports.getInvoiceOrder=l.getInvoiceOrder;exports.getInvoicePresentationData=l.getInvoicePresentationData;exports.getCurrentCustomerOrder=C.getCurrentCustomerOrder;exports.getCurrentCustomerOrderInvoice=C.getCurrentCustomerOrderInvoice;exports.getCurrentCustomerOrders=C.getCurrentCustomerOrders;exports.getCouponQuote=P.getCouponQuote;exports.getQuoteLineDiscountMap=P.getQuoteLineDiscountMap;exports.recordCouponRedemption=P.recordCouponRedemption;exports.deleteCouponFromFreemius=m.deleteCouponFromFreemius;exports.syncCouponToFreemius=m.syncCouponToFreemius;exports.syncProductSaleCouponToFreemius=m.syncProductSaleCouponToFreemius;exports.addressesMatch=g.addressesMatch;exports.emptyCustomerAddress=g.emptyCustomerAddress;exports.isCustomerAddressComplete=g.isCustomerAddressComplete;exports.normalizeCustomerAddress=g.normalizeCustomerAddress;exports.normalizeOrderCustomerDetails=g.normalizeOrderCustomerDetails;exports.fillMissingUserProfileCheckoutDetails=p.fillMissingUserProfileCheckoutDetails;exports.getDefaultUserAddresses=p.getDefaultUserAddresses;exports.upsertDefaultUserAddresses=p.upsertDefaultUserAddresses;exports.CURRENCY_ROUNDING_MODES=e.CURRENCY_ROUNDING_MODES;exports.applyCurrencyRounding=e.applyCurrencyRounding;exports.convertMinorUnitAmount=e.convertMinorUnitAmount;exports.describeCurrencyRoundingRule=e.describeCurrencyRoundingRule;exports.getCurrencyLookup=e.getCurrencyLookup;exports.getDefaultCurrency=e.getDefaultCurrency;exports.getExchangeRateForCurrency=e.getExchangeRateForCurrency;exports.inferCurrencyCodeFromLocale=e.inferCurrencyCodeFromLocale;exports.isSaleWindowActive=e.isSaleWindowActive;exports.isScheduledPriceDue=e.isScheduledPriceDue;exports.normalizeCurrencyRecord=e.normalizeCurrencyRecord;exports.normalizeCurrencyRoundingMode=e.normalizeCurrencyRoundingMode;exports.normalizePriceMap=e.normalizePriceMap;exports.normalizeSalePriceMap=e.normalizeSalePriceMap;exports.resolveEffectivePriceForCurrency=e.resolveEffectivePriceForCurrency;exports.resolvePriceForCurrency=e.resolvePriceForCurrency;exports.resolvePriceRangeForCurrency=e.resolvePriceRangeForCurrency;exports.sortCurrencies=e.sortCurrencies;exports.CURRENCY_COOKIE_NAME=E.CURRENCY_COOKIE_NAME;exports.clearAutoSyncedCurrencyPriceOverrides=y.clearAutoSyncedCurrencyPriceOverrides;exports.rebaseStoreCurrencyExchangeRates=y.rebaseStoreCurrencyExchangeRates;exports.syncStoreCurrencyRates=y.syncStoreCurrencyRates;exports.productSchema=q.productSchema;exports.copyProductFromLanguage=r.copyProductFromLanguage;exports.createProduct=r.createProduct;exports.deleteProduct=r.deleteProduct;exports.fetchTranslatedProductsForCartInternal=r.fetchTranslatedProductsForCartInternal;exports.getProduct=r.getProduct;exports.getProductBySlug=r.getProductBySlug;exports.getProducts=r.getProducts;exports.syncCategoriesForTranslationGroup=r.syncCategoriesForTranslationGroup;exports.updateProduct=r.updateProduct;exports.getPaymentProvider=D.getPaymentProvider;exports.StripeProvider=b.StripeProvider;exports.FreemiusProvider=c.FreemiusProvider;exports.parseFreemiusCheckoutCredentialsMap=c.parseFreemiusCheckoutCredentialsMap;exports.readFreemiusEnvValue=c.readFreemiusEnvValue;exports.resolveFreemiusCheckoutCredentials=c.resolveFreemiusCheckoutCredentials;exports.syncFreemiusProductsToSupabase=c.syncFreemiusProductsToSupabase;exports.syncSingleFreemiusProduct=c.syncSingleFreemiusProduct;exports.extractFreemiusCheckoutMetadata=a.extractFreemiusCheckoutMetadata;exports.getFreemiusWebhookSecretCandidates=a.getFreemiusWebhookSecretCandidates;exports.resolveFreemiusStatusFromCheckoutResponse=a.resolveFreemiusStatusFromCheckoutResponse;exports.resolveFreemiusStatusFromWebhookEvent=a.resolveFreemiusStatusFromWebhookEvent;exports.syncFreemiusCheckoutOrder=a.syncFreemiusCheckoutOrder;exports.syncFreemiusOrderFromWebhookEvent=a.syncFreemiusOrderFromWebhookEvent;exports.verifyFreemiusWebhookSignature=a.verifyFreemiusWebhookSignature;exports.getFreemiusOrderLicense=I.getFreemiusOrderLicense;exports.getCategoriesWithCount=s.getCategoriesWithCount;exports.getCategoryBySlug=s.getCategoryBySlug;exports.getCmsProduct=s.getProduct;exports.getCmsProducts=s.getProducts;exports.getGlobalProductAttributes=s.getGlobalProductAttributes;exports.getProductCategories=s.getProductCategories;exports.getProductTranslations=s.getProductTranslations;exports.createCategoryAction=o.createCategoryAction;exports.createProductAction=o.createProductAction;exports.deleteCategoryAction=o.deleteCategoryAction;exports.deleteProductAction=o.deleteProductAction;exports.publishProductAction=o.publishProductAction;exports.syncProductCategoriesAction=o.syncProductCategoriesAction;exports.updateCategoryAction=o.updateCategoryAction;exports.updateProductAction=o.updateProductAction;exports.getEnabledPaymentProviders=d.getEnabledPaymentProviders;exports.getPaymentSettings=d.getPaymentSettings;exports.getProviderReadiness=d.getProviderReadiness;exports.getReadinessForProductType=d.getReadinessForProductType;exports.getStoreConfigStatus=d.getStoreConfigStatus;exports.getStoreReadiness=d.getStoreReadiness;exports.OrdersPage=f.OrdersPage;exports.OrderDetailPage=x.OrderDetailPage;exports.ExportReportsDialog=k.ExportReportsDialog;exports.fetchOrderReportData=M.fetchOrderReportData;exports.getOrderDetails=F.getOrderDetails;exports.getOrders=F.getOrders;exports.ProductsPage=N.ProductsPage;exports.InventoryPage=L.InventoryPage;exports.AttributeManagementPage=z.AttributeManagementPage;exports.NewProductPage=_.NewProductPage;exports.EditProductPage=U.EditProductPage;exports.CopyProductFromLanguage=W.CopyProductFromLanguage;exports.CategoryManagementPage=G.CategoryManagementPage;exports.PaymentsPage=w.PaymentsPage;exports.savePaymentProviderCredentials=h.savePaymentProviderCredentials;exports.updatePaymentSettings=h.updatePaymentSettings;exports.ShippingPage=K.ShippingPage;exports.createShippingRate=u.createShippingRate;exports.createShippingZone=u.createShippingZone;exports.deleteShippingRate=u.deleteShippingRate;exports.deleteShippingZone=u.deleteShippingZone;exports.updateInventoryTrackingAction=u.updateInventoryTrackingAction;exports.updateShippingRate=u.updateShippingRate;exports.updateShippingZone=u.updateShippingZone;exports.TaxesPage=V.TaxesPage;exports.deleteTaxRateAction=S.deleteTaxRateAction;exports.saveTaxRateAction=S.saveTaxRateAction;exports.updateTaxSettingsAction=S.updateTaxSettingsAction;exports.CouponsPage=B.CouponsPage;exports.EditCouponPage=Y.EditCouponPage;
package/server.d.ts CHANGED
@@ -24,7 +24,7 @@ export * from './lib/freemius-order-sync';
24
24
  export * from './lib/freemius-license';
25
25
  export { getProduct as getCmsProduct, getProducts as getCmsProducts, getGlobalProductAttributes, getProductTranslations, getCategoriesWithCount, getProductCategories, getCategoryBySlug, } from './lib/pages/cms/products/actions';
26
26
  export { createProductAction, updateProductAction, publishProductAction, deleteProductAction, createCategoryAction, updateCategoryAction, deleteCategoryAction, syncProductCategoriesAction, } from './lib/pages/cms/products/server-actions';
27
- export { getEnabledPaymentProviders, getPaymentSettings, getStoreConfigStatus, } from './lib/pages/cms/payments/queries';
27
+ export { getEnabledPaymentProviders, getPaymentSettings, getProviderReadiness, getReadinessForProductType, getStoreConfigStatus, getStoreReadiness, type ProviderReadiness, type StoreReadiness, } from './lib/pages/cms/payments/queries';
28
28
  export * from './lib/pages/cms/orders';
29
29
  export * from './lib/pages/cms/products';
30
30
  export * from './lib/pages/cms/payments';