@nextblock-cms/ecom 0.22.0 → 0.22.2

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 (62) hide show
  1. package/index.cjs +1 -1
  2. package/index.es.js +31 -31
  3. package/lib/components/Checkout.cjs +1 -1
  4. package/lib/components/Checkout.es.js +2 -1
  5. package/lib/coupon-server.cjs +1 -1
  6. package/lib/coupon-server.d.ts +65 -1
  7. package/lib/coupon-server.es.js +151 -91
  8. package/lib/coupons.cjs +1 -1
  9. package/lib/coupons.d.ts +13 -0
  10. package/lib/coupons.es.js +5 -4
  11. package/lib/order-access-token.cjs +1 -0
  12. package/lib/order-access-token.d.ts +2 -0
  13. package/lib/order-access-token.es.js +18 -0
  14. package/lib/pages/cms/orders/actions.cjs +3 -3
  15. package/lib/pages/cms/orders/actions.es.js +48 -26
  16. package/lib/pages/cms/orders/export-actions.cjs +1 -1
  17. package/lib/pages/cms/orders/export-actions.d.ts +42 -1
  18. package/lib/pages/cms/orders/export-actions.es.js +18 -16
  19. package/lib/pages/cms/orders/server-actions.cjs +1 -1
  20. package/lib/pages/cms/orders/server-actions.es.js +25 -15
  21. package/lib/pages/cms/products/actions.cjs +4 -4
  22. package/lib/pages/cms/products/actions.es.js +44 -41
  23. package/lib/pages/cms/products/inventory/actions.cjs +2 -2
  24. package/lib/pages/cms/products/inventory/actions.es.js +23 -23
  25. package/lib/pages/cms/products/server-actions.cjs +1 -1
  26. package/lib/pages/cms/products/server-actions.es.js +109 -108
  27. package/lib/pages/cms/shipping/server-actions.cjs +1 -1
  28. package/lib/pages/cms/shipping/server-actions.es.js +27 -26
  29. package/lib/payment-config.cjs +1 -1
  30. package/lib/payment-config.d.ts +4 -2
  31. package/lib/payment-config.es.js +73 -72
  32. package/lib/product-actions.cjs +1 -1
  33. package/lib/product-actions.es.js +6 -6
  34. package/lib/providers/checkout-items.cjs +1 -0
  35. package/lib/providers/checkout-items.d.ts +30 -0
  36. package/lib/providers/checkout-items.es.js +43 -0
  37. package/lib/providers/freemius.cjs +1 -1
  38. package/lib/providers/freemius.d.ts +1 -1
  39. package/lib/providers/freemius.es.js +166 -144
  40. package/lib/providers/stripe.cjs +1 -1
  41. package/lib/providers/stripe.d.ts +1 -1
  42. package/lib/providers/stripe.es.js +191 -146
  43. package/lib/server-actions/coupon-actions.cjs +1 -1
  44. package/lib/server-actions/coupon-actions.d.ts +11 -12
  45. package/lib/server-actions/coupon-actions.es.js +19 -11
  46. package/lib/server-actions/require-ecom-role.cjs +1 -0
  47. package/lib/server-actions/require-ecom-role.d.ts +5825 -0
  48. package/lib/server-actions/require-ecom-role.es.js +24 -0
  49. package/lib/server-actions/shipping-actions.cjs +1 -1
  50. package/lib/server-actions/shipping-actions.es.js +4 -4
  51. package/lib/server-actions/tax-actions.cjs +1 -1
  52. package/lib/server-actions/tax-actions.es.js +22 -18
  53. package/lib/shipping/checkout-shipping-method.cjs +7 -0
  54. package/lib/shipping/checkout-shipping-method.d.ts +115 -0
  55. package/lib/shipping/checkout-shipping-method.es.js +167 -0
  56. package/lib/shipping/resolver.cjs +1 -7
  57. package/lib/shipping/resolver.d.ts +7 -12
  58. package/lib/shipping/resolver.es.js +13 -38
  59. package/package.json +4 -4
  60. package/server.cjs +1 -1
  61. package/server.d.ts +1 -0
  62. package/server.es.js +49 -48
@@ -0,0 +1,24 @@
1
+ import { createClient as e, getServiceRoleSupabaseClient as t } from "@nextblock-cms/db/server";
2
+ import "server-only";
3
+ //#region src/lib/server-actions/require-ecom-role.ts
4
+ async function n() {
5
+ return r();
6
+ }
7
+ async function r() {
8
+ let t = e(), { data: { user: n } } = await t.auth.getUser();
9
+ if (!n) return null;
10
+ let { data: r } = await t.from("profiles").select("role").eq("id", n.id).single(), i = r?.role;
11
+ return i === "ADMIN" || i === "WRITER" ? i : null;
12
+ }
13
+ async function i() {
14
+ let e = await r();
15
+ if (!e) throw Error("Unauthorized");
16
+ if (e !== "ADMIN") throw Error("Forbidden");
17
+ return t();
18
+ }
19
+ async function a() {
20
+ if (!await r()) throw Error("Unauthorized");
21
+ return t();
22
+ }
23
+ //#endregion
24
+ export { n as getEcomActorRole, i as requireEcomAdmin, a as requireEcomStaff };
@@ -1 +1 @@
1
- "use server";const e=require("../countries.cjs"),t=require("../shipping/resolver.cjs"),n=require("../states.cjs");async function r(r,i,a,o){try{let s=e.normalizeCountryCode(i.country);return s?{success:!0,methods:await t.resolveShippingOptions(r,{...i,country:s,state:n.normalizeSubdivisionCode(s,i.state)||void 0},a,o)}:{success:!1,error:`Country is required for shipping calculation`,errorKey:`ecommerce.shipping_country_required`}}catch(e){return console.error(`Failed to resolve shipping options:`,e),{success:!1,error:e.message||`Failed to calculate shipping`,errorKey:`ecommerce.shipping_calculation_failed`}}}exports.getShippingEstimates=r;
1
+ "use server";const e=require("../countries.cjs"),t=require("../states.cjs"),n=require("../shipping/resolver.cjs");async function r(r,i,a,o){try{let s=e.normalizeCountryCode(i.country);return s?{success:!0,methods:await n.resolveShippingOptions(r,{...i,country:s,state:t.normalizeSubdivisionCode(s,i.state)||void 0},a,o)}:{success:!1,error:`Country is required for shipping calculation`,errorKey:`ecommerce.shipping_country_required`}}catch(e){return console.error(`Failed to resolve shipping options:`,e),{success:!1,error:e.message||`Failed to calculate shipping`,errorKey:`ecommerce.shipping_calculation_failed`}}}exports.getShippingEstimates=r;
@@ -1,17 +1,17 @@
1
1
  "use server";
2
2
  import { normalizeCountryCode as e } from "../countries.es.js";
3
- import { resolveShippingOptions as t } from "../shipping/resolver.es.js";
4
- import { normalizeSubdivisionCode as n } from "../states.es.js";
3
+ import { normalizeSubdivisionCode as t } from "../states.es.js";
4
+ import { resolveShippingOptions as n } from "../shipping/resolver.es.js";
5
5
  //#region src/lib/server-actions/shipping-actions.ts
6
6
  async function r(r, i, a, o) {
7
7
  try {
8
8
  let s = e(i.country);
9
9
  return s ? {
10
10
  success: !0,
11
- methods: await t(r, {
11
+ methods: await n(r, {
12
12
  ...i,
13
13
  country: s,
14
- state: n(s, i.state) || void 0
14
+ state: t(s, i.state) || void 0
15
15
  }, a, o)
16
16
  } : {
17
17
  success: !1,
@@ -1 +1 @@
1
- "use server";const e=require("../coupon-server.cjs"),t=require("../tax-calculation.cjs");let n=require("@nextblock-cms/db/server");async function r(r,i,a=`USD`,o,s){try{let c=(0,n.createClient)(),l=(0,n.getServiceRoleSupabaseClient)(),{data:u}=await c.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}),d=u??[],f;if(o){let t=await e.getCouponQuote({client:l,code:o,items:s&&s.length>0?s:r,currencyCode:a});t.success&&(f=e.getQuoteLineDiscountMap(t.quote))}let p=await t.buildCheckoutTaxableItemsFromCart(c,r,a,d,f);return{success:!0,tax:await t.calculateCheckoutTaxes(c,{items:p,destination:i})}}catch(e){return console.error(`Failed to estimate taxes:`,e),{success:!1,error:e.message||`Failed to calculate taxes`}}}exports.getTaxEstimate=r;
1
+ "use server";const e=require("../coupon-server.cjs"),t=require("../tax-calculation.cjs");let n=require("next/headers"),r=require("@nextblock-cms/db/server");async function i(i,a,o=`USD`,s,c){try{let l=(0,r.createClient)(),u=(0,r.getServiceRoleSupabaseClient)(),{data:d}=await l.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}),f=d??[],p;if(s){let t=e.resolveCouponValidationThrottleKey(await(0,n.headers)());if(e.consumeCouponValidationToken(t)){let t=await e.getCouponQuote({client:u,code:s,items:c&&c.length>0?c:i,currencyCode:o});t.success&&(p=e.getQuoteLineDiscountMap(t.quote))}}let m=await t.buildCheckoutTaxableItemsFromCart(l,i,o,f,p);return{success:!0,tax:await t.calculateCheckoutTaxes(l,{items:m,destination:a})}}catch(e){return console.error(`Failed to estimate taxes:`,e),{success:!1,error:e.message||`Failed to calculate taxes`}}}exports.getTaxEstimate=i;
@@ -1,26 +1,30 @@
1
1
  "use server";
2
- import { getCouponQuote as e, getQuoteLineDiscountMap as t } from "../coupon-server.es.js";
3
- import { buildCheckoutTaxableItemsFromCart as n, calculateCheckoutTaxes as r } from "../tax-calculation.es.js";
4
- import { createClient as i, getServiceRoleSupabaseClient as a } from "@nextblock-cms/db/server";
2
+ import { consumeCouponValidationToken as e, getCouponQuote as t, getQuoteLineDiscountMap as n, resolveCouponValidationThrottleKey as r } from "../coupon-server.es.js";
3
+ import { buildCheckoutTaxableItemsFromCart as i, calculateCheckoutTaxes as a } from "../tax-calculation.es.js";
4
+ import { headers as o } from "next/headers";
5
+ import { createClient as s, getServiceRoleSupabaseClient as c } from "@nextblock-cms/db/server";
5
6
  //#region src/lib/server-actions/tax-actions.ts
6
- async function o(o, s, c = "USD", l, u) {
7
+ async function l(l, u, d = "USD", f, p) {
7
8
  try {
8
- let d = i(), f = a(), { data: p } = await d.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 }), m = p ?? [], h;
9
- if (l) {
10
- let n = await e({
11
- client: f,
12
- code: l,
13
- items: u && u.length > 0 ? u : o,
14
- currencyCode: c
15
- });
16
- n.success && (h = t(n.quote));
9
+ let m = s(), h = c(), { data: g } = await m.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 ?? [], v;
10
+ if (f) {
11
+ let i = r(await o());
12
+ if (e(i)) {
13
+ let e = await t({
14
+ client: h,
15
+ code: f,
16
+ items: p && p.length > 0 ? p : l,
17
+ currencyCode: d
18
+ });
19
+ e.success && (v = n(e.quote));
20
+ }
17
21
  }
18
- let g = await n(d, o, c, m, h);
22
+ let y = await i(m, l, d, _, v);
19
23
  return {
20
24
  success: !0,
21
- tax: await r(d, {
22
- items: g,
23
- destination: s
25
+ tax: await a(m, {
26
+ items: y,
27
+ destination: u
24
28
  })
25
29
  };
26
30
  } catch (e) {
@@ -31,4 +35,4 @@ async function o(o, s, c = "USD", l, u) {
31
35
  }
32
36
  }
33
37
  //#endregion
34
- export { o as getTaxEstimate };
38
+ export { l as getTaxEstimate };
@@ -0,0 +1,7 @@
1
+ const e=require("../currency.cjs"),t=require("../countries.cjs"),n=require("../shipping-rate-currency.cjs"),r=require("../states.cjs"),i=require("../variation-utils.cjs");var a=`id, zone_id, method_type, cost_amount, cost_amounts, cost_currency, currency_pricing_mode, min_order_amount, min_order_amounts, name, name_translations`,o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function s(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(0,e):0}function c(e){let n=t.normalizeCountryCode(e?.country);return n?{country:n,state:r.normalizeSubdivisionCode(n,e?.state)||void 0,postal_code:e?.postal_code?.trim()||void 0}:null}async function l(e,t){let{data:n,error:r}=await e.from(`shipping_zone_locations`).select(`
2
+ zone_id,
3
+ country_code,
4
+ state_code,
5
+ postal_code,
6
+ shipping_zones!inner(priority_order)
7
+ `).eq(`country_code`,t.country).order(`shipping_zones(priority_order)`,{ascending:!0});if(r)return{zoneId:null,error:r};if(!n||n.length===0)return{zoneId:null,error:null};let i=null;if(t.state){let e=n.find(e=>e.state_code===t.state);e&&(i=e.zone_id)}if(!i){let e=n.find(e=>!e.state_code&&!e.postal_code);e&&(i=e.zone_id)}return i||=n[0].zone_id,{zoneId:i,error:null}}function u(t){return t.currencyCode||e.getDefaultCurrency(t.currencies).code}function d(t,r){return n.resolveShippingRateAmountForCurrency({amountMap:t.min_order_amounts||{},fallbackAmount:t.min_order_amount||0,sourceCurrencyCode:t.cost_currency||e.getDefaultCurrency(r.currencies).code,mode:t.currency_pricing_mode,currencyCode:u(r),currencies:r.currencies})}function f(t,r){return n.resolveShippingRateAmountForCurrency({amountMap:t.cost_amounts||{},fallbackAmount:t.cost_amount||0,sourceCurrencyCode:t.cost_currency||e.getDefaultCurrency(r.currencies).code,mode:t.currency_pricing_mode,currencyCode:u(r),currencies:r.currencies})}function p(e,t,n){return s(t)>=d(e,n)}function m(e,t,n){return{id:e.id,name:i.resolveTranslatedText(e.name,e.name_translations||null,n),amount:f(e,t),currency:u(t),type:e.method_type}}async function h(e,t){let{zoneId:n,error:r}=await l(e,t.destination);if(r)return{ok:!1,error:r};if(!n)return{ok:!0,zoneId:null,methods:[]};let{data:i,error:o}=await e.from(`shipping_zone_methods`).select(a).eq(`zone_id`,n);if(o)return{ok:!1,error:o};let s={currencies:t.currencies,currencyCode:t.currencyCode};return{ok:!0,zoneId:n,methods:(i||[]).filter(e=>p(e,t.cartTotal,s))}}async function g(e,t){let n=typeof t.methodId==`string`?t.methodId.trim():``;if(!o.test(n))return{ok:!1,reason:`not_found`};let{data:r,error:i}=await e.from(`shipping_zone_methods`).select(a).eq(`id`,n).maybeSingle();if(i)return{ok:!1,reason:`load_failed`,error:i};if(!r)return{ok:!1,reason:`not_found`};let s=r,{zoneId:c,error:u}=await l(e,t.destination);if(u)return{ok:!1,reason:`load_failed`,error:u};if(!c||c!==s.zone_id)return{ok:!1,reason:`zone_mismatch`};let d={currencies:t.currencies,currencyCode:t.currencyCode};return p(s,t.cartTotal,d)?{ok:!0,method:{...m(s,d,t.languageCode),zoneId:c}}:{ok:!1,reason:`threshold_not_met`}}function _(){return{error:`A shipping address is required for this order.`,errorKey:`ecommerce.checkout_shipping_address_required`,errorStatus:400}}function v(){return{error:`Please select a shipping method before continuing.`,errorKey:`ecommerce.shipping_method_required`,errorStatus:400}}function y(){return{error:`The selected shipping method is not available for this order.`,errorKey:`ecommerce.checkout_invalid_shipping_method`,errorStatus:400}}exports.SHIPPING_ZONE_METHOD_COLUMNS=a,exports.createInvalidShippingMethodError=y,exports.createShippingAddressRequiredError=_,exports.createShippingMethodRequiredError=v,exports.isShippingMethodEligibleForCart=p,exports.listEligibleShippingMethods=h,exports.normalizeShippingDestination=c,exports.resolveCheckoutShippingMethod=g,exports.resolveShippingMethodAmount=f,exports.resolveShippingMethodThreshold=d,exports.resolveShippingZoneIdForDestination=l,exports.toResolvedShippingMethod=m;
@@ -0,0 +1,115 @@
1
+ import { SupabaseClient } from '@supabase/supabase-js';
2
+ import { CurrencyRecord } from '../currency';
3
+ import { CheckoutErrorPayload } from '../inventory-settings';
4
+ /**
5
+ * Shipping-method resolution shared by the storefront estimate (`resolveShippingOptions`)
6
+ * and the Stripe checkout. Both MUST price a method the same way: the estimate is what the
7
+ * shopper is shown, the checkout is what they are charged, and every `shipping_zone_methods`
8
+ * row (id, cost, free-shipping threshold, zone) is publicly readable, so a checkout that
9
+ * trusted the submitted id alone could be handed the $0 free-shipping id on a $20 cart, or a
10
+ * domestic rate on an international address.
11
+ *
12
+ * Every helper takes the Supabase client as a parameter: the estimate runs with the public
13
+ * client, the checkout with the service-role one.
14
+ */
15
+ export interface ShippingDestination {
16
+ country: string;
17
+ state?: string;
18
+ postal_code?: string;
19
+ }
20
+ export interface ResolvedShippingMethod {
21
+ id: string;
22
+ name: string;
23
+ amount: number;
24
+ currency: string;
25
+ type: 'flat_rate' | 'free_shipping';
26
+ }
27
+ export type ShippingQueryClient = SupabaseClient<any>;
28
+ export declare const SHIPPING_ZONE_METHOD_COLUMNS = "id, zone_id, method_type, cost_amount, cost_amounts, cost_currency, currency_pricing_mode, min_order_amount, min_order_amounts, name, name_translations";
29
+ export interface ShippingZoneMethodRow {
30
+ id: string;
31
+ zone_id: string;
32
+ method_type: string | null;
33
+ cost_amount: number | null;
34
+ cost_amounts: unknown;
35
+ cost_currency: string | null;
36
+ currency_pricing_mode: string | null;
37
+ min_order_amount: number | null;
38
+ min_order_amounts: unknown;
39
+ name: string;
40
+ name_translations: unknown;
41
+ }
42
+ export interface ShippingRateContext {
43
+ currencies: CurrencyRecord[];
44
+ /** Shopper currency; falls back to the store default. */
45
+ currencyCode?: string | null;
46
+ }
47
+ /**
48
+ * Normalizes a destination the way the storefront estimate does (country alias → ISO code,
49
+ * state name → subdivision code). Returns null when there is no usable country.
50
+ */
51
+ export declare function normalizeShippingDestination(destination: {
52
+ country?: string | null;
53
+ state?: string | null;
54
+ postal_code?: string | null;
55
+ } | null | undefined): ShippingDestination | null;
56
+ /**
57
+ * Picks the shipping zone for a destination.
58
+ * Priority: a state match, then a country-wide location, then the first zone by
59
+ * `priority_order`. `postal_code` exists in the schema but is not matched yet (docs/02).
60
+ */
61
+ export declare function resolveShippingZoneIdForDestination(client: ShippingQueryClient, destination: ShippingDestination): Promise<{
62
+ zoneId: string | null;
63
+ error: unknown | null;
64
+ }>;
65
+ /** The method's minimum order amount, in the shopper currency (minor units). */
66
+ export declare function resolveShippingMethodThreshold(method: ShippingZoneMethodRow, context: ShippingRateContext): number;
67
+ /** The method's cost, in the shopper currency (minor units). */
68
+ export declare function resolveShippingMethodAmount(method: ShippingZoneMethodRow, context: ShippingRateContext): number;
69
+ /** `cartTotal` is the discounted merchandise subtotal in the shopper currency. */
70
+ export declare function isShippingMethodEligibleForCart(method: ShippingZoneMethodRow, cartTotal: number, context: ShippingRateContext): boolean;
71
+ export declare function toResolvedShippingMethod(method: ShippingZoneMethodRow, context: ShippingRateContext, languageCode?: string | null): ResolvedShippingMethod;
72
+ export type EligibleShippingMethodsResult = {
73
+ ok: true;
74
+ zoneId: string | null;
75
+ methods: ShippingZoneMethodRow[];
76
+ } | {
77
+ ok: false;
78
+ error: unknown;
79
+ };
80
+ /**
81
+ * Every method of the destination's zone whose minimum order amount the cart meets.
82
+ * Unsorted; the storefront estimate keeps only the cheapest.
83
+ */
84
+ export declare function listEligibleShippingMethods(client: ShippingQueryClient, params: {
85
+ destination: ShippingDestination;
86
+ cartTotal: number;
87
+ } & ShippingRateContext): Promise<EligibleShippingMethodsResult>;
88
+ export type CheckoutShippingMethodRejection = 'not_found' | 'zone_mismatch' | 'threshold_not_met';
89
+ export type CheckoutShippingMethodResolution = {
90
+ ok: true;
91
+ method: ResolvedShippingMethod & {
92
+ zoneId: string;
93
+ };
94
+ } | {
95
+ ok: false;
96
+ reason: CheckoutShippingMethodRejection;
97
+ } | {
98
+ ok: false;
99
+ reason: 'load_failed';
100
+ error: unknown;
101
+ };
102
+ /**
103
+ * Re-validates the shipping method a checkout submitted: the id must exist, belong to the
104
+ * zone resolved from the shipping address, and its minimum order amount must be met by the
105
+ * cart. The amount comes from the DB row, never from the request.
106
+ */
107
+ export declare function resolveCheckoutShippingMethod(client: ShippingQueryClient, params: {
108
+ methodId: unknown;
109
+ destination: ShippingDestination;
110
+ cartTotal: number;
111
+ languageCode?: string | null;
112
+ } & ShippingRateContext): Promise<CheckoutShippingMethodResolution>;
113
+ export declare function createShippingAddressRequiredError(): CheckoutErrorPayload;
114
+ export declare function createShippingMethodRequiredError(): CheckoutErrorPayload;
115
+ export declare function createInvalidShippingMethodError(): CheckoutErrorPayload;
@@ -0,0 +1,167 @@
1
+ import { getDefaultCurrency as e } from "../currency.es.js";
2
+ import { normalizeCountryCode as t } from "../countries.es.js";
3
+ import { resolveShippingRateAmountForCurrency as n } from "../shipping-rate-currency.es.js";
4
+ import { normalizeSubdivisionCode as r } from "../states.es.js";
5
+ import { resolveTranslatedText as i } from "../variation-utils.es.js";
6
+ //#region src/lib/shipping/checkout-shipping-method.ts
7
+ var a = "id, zone_id, method_type, cost_amount, cost_amounts, cost_currency, currency_pricing_mode, min_order_amount, min_order_amounts, name, name_translations", o = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
8
+ function s(e) {
9
+ return typeof e == "number" && Number.isFinite(e) ? Math.max(0, e) : 0;
10
+ }
11
+ function c(e) {
12
+ let n = t(e?.country);
13
+ return n ? {
14
+ country: n,
15
+ state: r(n, e?.state) || void 0,
16
+ postal_code: e?.postal_code?.trim() || void 0
17
+ } : null;
18
+ }
19
+ async function l(e, t) {
20
+ let { data: n, error: r } = await e.from("shipping_zone_locations").select("\n zone_id,\n country_code,\n state_code,\n postal_code,\n shipping_zones!inner(priority_order)\n ").eq("country_code", t.country).order("shipping_zones(priority_order)", { ascending: !0 });
21
+ if (r) return {
22
+ zoneId: null,
23
+ error: r
24
+ };
25
+ if (!n || n.length === 0) return {
26
+ zoneId: null,
27
+ error: null
28
+ };
29
+ let i = null;
30
+ if (t.state) {
31
+ let e = n.find((e) => e.state_code === t.state);
32
+ e && (i = e.zone_id);
33
+ }
34
+ if (!i) {
35
+ let e = n.find((e) => !e.state_code && !e.postal_code);
36
+ e && (i = e.zone_id);
37
+ }
38
+ return i ||= n[0].zone_id, {
39
+ zoneId: i,
40
+ error: null
41
+ };
42
+ }
43
+ function u(t) {
44
+ return t.currencyCode || e(t.currencies).code;
45
+ }
46
+ function d(t, r) {
47
+ return n({
48
+ amountMap: t.min_order_amounts || {},
49
+ fallbackAmount: t.min_order_amount || 0,
50
+ sourceCurrencyCode: t.cost_currency || e(r.currencies).code,
51
+ mode: t.currency_pricing_mode,
52
+ currencyCode: u(r),
53
+ currencies: r.currencies
54
+ });
55
+ }
56
+ function f(t, r) {
57
+ return n({
58
+ amountMap: t.cost_amounts || {},
59
+ fallbackAmount: t.cost_amount || 0,
60
+ sourceCurrencyCode: t.cost_currency || e(r.currencies).code,
61
+ mode: t.currency_pricing_mode,
62
+ currencyCode: u(r),
63
+ currencies: r.currencies
64
+ });
65
+ }
66
+ function p(e, t, n) {
67
+ return s(t) >= d(e, n);
68
+ }
69
+ function m(e, t, n) {
70
+ return {
71
+ id: e.id,
72
+ name: i(e.name, e.name_translations || null, n),
73
+ amount: f(e, t),
74
+ currency: u(t),
75
+ type: e.method_type
76
+ };
77
+ }
78
+ async function h(e, t) {
79
+ let { zoneId: n, error: r } = await l(e, t.destination);
80
+ if (r) return {
81
+ ok: !1,
82
+ error: r
83
+ };
84
+ if (!n) return {
85
+ ok: !0,
86
+ zoneId: null,
87
+ methods: []
88
+ };
89
+ let { data: i, error: o } = await e.from("shipping_zone_methods").select(a).eq("zone_id", n);
90
+ if (o) return {
91
+ ok: !1,
92
+ error: o
93
+ };
94
+ let s = {
95
+ currencies: t.currencies,
96
+ currencyCode: t.currencyCode
97
+ };
98
+ return {
99
+ ok: !0,
100
+ zoneId: n,
101
+ methods: (i || []).filter((e) => p(e, t.cartTotal, s))
102
+ };
103
+ }
104
+ async function g(e, t) {
105
+ let n = typeof t.methodId == "string" ? t.methodId.trim() : "";
106
+ if (!o.test(n)) return {
107
+ ok: !1,
108
+ reason: "not_found"
109
+ };
110
+ let { data: r, error: i } = await e.from("shipping_zone_methods").select(a).eq("id", n).maybeSingle();
111
+ if (i) return {
112
+ ok: !1,
113
+ reason: "load_failed",
114
+ error: i
115
+ };
116
+ if (!r) return {
117
+ ok: !1,
118
+ reason: "not_found"
119
+ };
120
+ let s = r, { zoneId: c, error: u } = await l(e, t.destination);
121
+ if (u) return {
122
+ ok: !1,
123
+ reason: "load_failed",
124
+ error: u
125
+ };
126
+ if (!c || c !== s.zone_id) return {
127
+ ok: !1,
128
+ reason: "zone_mismatch"
129
+ };
130
+ let d = {
131
+ currencies: t.currencies,
132
+ currencyCode: t.currencyCode
133
+ };
134
+ return p(s, t.cartTotal, d) ? {
135
+ ok: !0,
136
+ method: {
137
+ ...m(s, d, t.languageCode),
138
+ zoneId: c
139
+ }
140
+ } : {
141
+ ok: !1,
142
+ reason: "threshold_not_met"
143
+ };
144
+ }
145
+ function _() {
146
+ return {
147
+ error: "A shipping address is required for this order.",
148
+ errorKey: "ecommerce.checkout_shipping_address_required",
149
+ errorStatus: 400
150
+ };
151
+ }
152
+ function v() {
153
+ return {
154
+ error: "Please select a shipping method before continuing.",
155
+ errorKey: "ecommerce.shipping_method_required",
156
+ errorStatus: 400
157
+ };
158
+ }
159
+ function y() {
160
+ return {
161
+ error: "The selected shipping method is not available for this order.",
162
+ errorKey: "ecommerce.checkout_invalid_shipping_method",
163
+ errorStatus: 400
164
+ };
165
+ }
166
+ //#endregion
167
+ export { a as SHIPPING_ZONE_METHOD_COLUMNS, y as createInvalidShippingMethodError, _ as createShippingAddressRequiredError, v as createShippingMethodRequiredError, p as isShippingMethodEligibleForCart, h as listEligibleShippingMethods, c as normalizeShippingDestination, g as resolveCheckoutShippingMethod, f as resolveShippingMethodAmount, d as resolveShippingMethodThreshold, l as resolveShippingZoneIdForDestination, m as toResolvedShippingMethod };
@@ -1,7 +1 @@
1
- const e=require("../currency.cjs"),t=require("../shipping-rate-currency.cjs"),n=require("../variation-utils.cjs");let r=require("@nextblock-cms/db/server");async function i(i,a,o,s){let c=(0,r.getSsgSupabaseClient)(),{data:l}=await c.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}),u=l??[],d=e.getDefaultCurrency(u),f=s||d.code,{data:p,error:m}=await c.from(`shipping_zone_locations`).select(`
2
- zone_id,
3
- country_code,
4
- state_code,
5
- postal_code,
6
- shipping_zones!inner(priority_order)
7
- `).eq(`country_code`,a.country).order(`shipping_zones(priority_order)`,{ascending:!0});if(m||!p||p.length===0)return[];let h=null;if(a.state){let e=p.find(e=>e.state_code===a.state);e&&(h=e.zone_id)}if(!h){let e=p.find(e=>!e.state_code&&!e.postal_code);e&&(h=e.zone_id)}h||=p[0].zone_id;let{data:g,error:_}=await c.from(`shipping_zone_methods`).select(`id, zone_id, method_type, cost_amount, cost_amounts, cost_currency, currency_pricing_mode, min_order_amount, min_order_amounts, name, name_translations`).eq(`zone_id`,h);if(_||!g)return[];let v=g.filter(e=>i>=t.resolveShippingRateAmountForCurrency({amountMap:e.min_order_amounts||{},fallbackAmount:e.min_order_amount||0,sourceCurrencyCode:e.cost_currency||d.code,mode:e.currency_pricing_mode,currencyCode:f,currencies:u})).map(e=>({id:e.id,name:n.resolveTranslatedText(e.name,e.name_translations||null,o),amount:t.resolveShippingRateAmountForCurrency({amountMap:e.cost_amounts||{},fallbackAmount:e.cost_amount||0,sourceCurrencyCode:e.cost_currency||d.code,mode:e.currency_pricing_mode,currencyCode:f,currencies:u}),currency:f,type:e.method_type})).sort((e,t)=>e.amount-t.amount)[0];return v?[v]:[]}exports.resolveShippingOptions=i;
1
+ const e=require("../currency.cjs"),t=require("./checkout-shipping-method.cjs");let n=require("@nextblock-cms/db/server");async function r(r,i,a,o){let s=(0,n.getSsgSupabaseClient)(),{data:c}=await s.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}),l=c??[],u=e.getDefaultCurrency(l),d=o||u.code,f=await t.listEligibleShippingMethods(s,{destination:i,cartTotal:r,currencies:l,currencyCode:d});if(!f.ok)return[];let p=f.methods.map(e=>t.toResolvedShippingMethod(e,{currencies:l,currencyCode:d},a)).sort((e,t)=>e.amount-t.amount)[0];return p?[p]:[]}exports.resolveShippingOptions=r;
@@ -1,16 +1,11 @@
1
- export interface ShippingDestination {
2
- country: string;
3
- state?: string;
4
- postal_code?: string;
5
- }
6
- export interface ResolvedShippingMethod {
7
- id: string;
8
- name: string;
9
- amount: number;
10
- currency: string;
11
- type: 'flat_rate' | 'free_shipping';
12
- }
1
+ import { ResolvedShippingMethod, ShippingDestination } from './checkout-shipping-method';
2
+ export type { ResolvedShippingMethod, ShippingDestination };
13
3
  /**
14
4
  * Resolves available shipping methods based on destination and cart value.
5
+ *
6
+ * This is the storefront estimate. The zone match, threshold check and currency conversion
7
+ * live in `./checkout-shipping-method` and are the same code the Stripe checkout runs when
8
+ * it re-validates the submitted method id, so what the shopper is shown here is what they
9
+ * are charged there.
15
10
  */
16
11
  export declare function resolveShippingOptions(cartTotal: number, destination: ShippingDestination, languageCode?: string | null, currencyCode?: string | null): Promise<ResolvedShippingMethod[]>;
@@ -1,45 +1,20 @@
1
1
  import { getDefaultCurrency as e } from "../currency.es.js";
2
- import { resolveShippingRateAmountForCurrency as t } from "../shipping-rate-currency.es.js";
3
- import { resolveTranslatedText as n } from "../variation-utils.es.js";
2
+ import { listEligibleShippingMethods as t, toResolvedShippingMethod as n } from "./checkout-shipping-method.es.js";
4
3
  import { getSsgSupabaseClient as r } from "@nextblock-cms/db/server";
5
4
  //#region src/lib/shipping/resolver.ts
6
5
  async function i(i, a, o, s) {
7
- let c = r(), { data: l } = await c.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 }), u = l ?? [], d = e(u), f = s || d.code, { data: p, error: m } = await c.from("shipping_zone_locations").select("\n zone_id,\n country_code,\n state_code,\n postal_code,\n shipping_zones!inner(priority_order)\n ").eq("country_code", a.country).order("shipping_zones(priority_order)", { ascending: !0 });
8
- if (m || !p || p.length === 0) return [];
9
- let h = null;
10
- if (a.state) {
11
- let e = p.find((e) => e.state_code === a.state);
12
- e && (h = e.zone_id);
13
- }
14
- if (!h) {
15
- let e = p.find((e) => !e.state_code && !e.postal_code);
16
- e && (h = e.zone_id);
17
- }
18
- h ||= p[0].zone_id;
19
- let { data: g, error: _ } = await c.from("shipping_zone_methods").select("id, zone_id, method_type, cost_amount, cost_amounts, cost_currency, currency_pricing_mode, min_order_amount, min_order_amounts, name, name_translations").eq("zone_id", h);
20
- if (_ || !g) return [];
21
- let v = g.filter((e) => i >= t({
22
- amountMap: e.min_order_amounts || {},
23
- fallbackAmount: e.min_order_amount || 0,
24
- sourceCurrencyCode: e.cost_currency || d.code,
25
- mode: e.currency_pricing_mode,
26
- currencyCode: f,
27
- currencies: u
28
- })).map((e) => ({
29
- id: e.id,
30
- name: n(e.name, e.name_translations || null, o),
31
- amount: t({
32
- amountMap: e.cost_amounts || {},
33
- fallbackAmount: e.cost_amount || 0,
34
- sourceCurrencyCode: e.cost_currency || d.code,
35
- mode: e.currency_pricing_mode,
36
- currencyCode: f,
37
- currencies: u
38
- }),
39
- currency: f,
40
- type: e.method_type
41
- })).sort((e, t) => e.amount - t.amount)[0];
42
- return v ? [v] : [];
6
+ let c = r(), { data: l } = await c.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 }), u = l ?? [], d = e(u), f = s || d.code, p = await t(c, {
7
+ destination: a,
8
+ cartTotal: i,
9
+ currencies: u,
10
+ currencyCode: f
11
+ });
12
+ if (!p.ok) return [];
13
+ let m = p.methods.map((e) => n(e, {
14
+ currencies: u,
15
+ currencyCode: f
16
+ }, o)).sort((e, t) => e.amount - t.amount)[0];
17
+ return m ? [m] : [];
43
18
  }
44
19
  //#endregion
45
20
  export { i as resolveShippingOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextblock-cms/ecom",
3
- "version": "0.22.0",
3
+ "version": "0.22.2",
4
4
  "license": "AGPL-3.0-or-later",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -12,9 +12,9 @@
12
12
  },
13
13
  "type": "module",
14
14
  "dependencies": {
15
- "@nextblock-cms/db": "^0.22.0",
16
- "@nextblock-cms/ui": "^0.22.0",
17
- "@nextblock-cms/utils": "^0.22.0",
15
+ "@nextblock-cms/db": "^0.22.2",
16
+ "@nextblock-cms/ui": "^0.22.2",
17
+ "@nextblock-cms/utils": "^0.22.2",
18
18
  "@freemius/checkout": "^1.5.1",
19
19
  "@freemius/sdk": "^0.5.0",
20
20
  "@hookform/resolvers": "^5.9.1",
package/server.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib/currency.cjs"),t=require("./lib/currency-constants.cjs"),n=require("./lib/coupon-server.cjs"),r=require("./lib/customer.cjs"),i=require("./lib/customer-addresses.cjs"),a=require("./lib/product-actions.cjs"),o=require("./lib/payment-config.cjs"),s=require("./lib/providers/freemius.cjs"),c=require("./lib/pages/cms/products/actions.cjs"),l=require("./lib/invoice.cjs"),u=require("./lib/order-tax-details.cjs"),d=require("./lib/product-schema.cjs"),f=require("./lib/freemius-coupons.cjs"),p=require("./lib/pages/cms/products/server-actions.cjs"),m=require("./lib/stripe/client.cjs"),h=require("./lib/stripe/checkout.cjs"),g=require("./lib/order-inventory.cjs"),_=require("./lib/invoice-server.cjs"),v=require("./lib/stripe/order-sync.cjs"),y=require("./lib/stripe/webhooks.cjs"),b=require("./lib/freemius-license.cjs"),x=require("./lib/customer-orders.cjs"),S=require("./lib/freemius-license-claim.cjs"),C=require("./lib/freemius-trial-provision.cjs"),w=require("./lib/currency-sync.cjs"),T=require("./lib/providers/stripe.cjs"),E=require("./lib/factory.cjs"),D=require("./lib/freemius-order-sync.cjs"),O=require("./lib/pages/cms/payments/queries.cjs"),k=require("./lib/pages/cms/orders/actions.cjs"),A=require("./lib/pages/cms/orders/export-actions.cjs"),j=require("./lib/pages/cms/orders/ExportReportsDialog.cjs"),M=require("./lib/pages/cms/orders/OrdersPage.cjs"),N=require("./lib/pages/cms/orders/OrderDetailPage.cjs");require("./lib/pages/cms/orders/index.cjs");const P=require("./lib/pages/cms/products/ProductsPage.cjs"),F=require("./lib/pages/cms/products/inventory/InventoryPage.cjs"),I=require("./lib/pages/cms/products/attributes/AttributeManagementPage.cjs"),L=require("./lib/pages/cms/products/new/NewProductPage.cjs"),R=require("./lib/pages/cms/products/[id]/edit/EditProductPage.cjs"),z=require("./lib/pages/cms/products/components/CopyProductFromLanguage.cjs"),B=require("./lib/pages/cms/products/categories/CategoryManagementPage.cjs");require("./lib/pages/cms/products/index.cjs");const V=require("./lib/pages/cms/payments/actions.cjs"),H=require("./lib/pages/cms/payments/PaymentsPage.cjs");require("./lib/pages/cms/payments/index.cjs");const U=require("./lib/pages/cms/shipping/server-actions.cjs"),W=require("./lib/pages/cms/shipping/ShippingPage.cjs");require("./lib/pages/cms/shipping/index.cjs");const G=require("./lib/pages/cms/taxes/actions.cjs"),K=require("./lib/pages/cms/taxes/TaxesPage.cjs");require("./lib/pages/cms/taxes/index.cjs");const q=require("./lib/pages/cms/coupons/CouponsPage.cjs"),J=require("./lib/pages/cms/coupons/EditCouponPage.cjs");require("./lib/pages/cms/coupons/index.cjs"),exports.AttributeManagementPage=I.AttributeManagementPage,exports.CURRENCY_COOKIE_NAME=t.CURRENCY_COOKIE_NAME,exports.CURRENCY_ROUNDING_MODES=e.CURRENCY_ROUNDING_MODES,exports.CategoryManagementPage=B.CategoryManagementPage,exports.CopyProductFromLanguage=z.CopyProductFromLanguage,exports.CouponsPage=q.CouponsPage,exports.DEFAULT_INVOICE_SETTINGS=l.DEFAULT_INVOICE_SETTINGS,exports.EditCouponPage=J.EditCouponPage,exports.EditProductPage=R.EditProductPage,exports.ExportReportsDialog=j.ExportReportsDialog,exports.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES=S.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES,exports.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE=S.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE,exports.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE=C.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE,exports.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE=C.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE,exports.FreemiusProvider=s.FreemiusProvider,exports.INVOICE_SETTINGS_KEY=l.INVOICE_SETTINGS_KEY,exports.InventoryPage=F.InventoryPage,exports.NewProductPage=L.NewProductPage,exports.OrderDetailPage=N.OrderDetailPage,exports.OrdersPage=M.OrdersPage,exports.PaymentsPage=H.PaymentsPage,exports.ProductsPage=P.ProductsPage,exports.ShippingPage=W.ShippingPage,exports.StripeNotConfiguredError=m.StripeNotConfiguredError,exports.StripeProvider=T.StripeProvider,exports.TaxesPage=K.TaxesPage,exports.addressesMatch=r.addressesMatch,exports.aggregateOrderTaxLines=u.aggregateOrderTaxLines,exports.applyCurrencyRounding=e.applyCurrencyRounding,exports.applyOrderInventoryDeduction=g.applyOrderInventoryDeduction,exports.assignInvoiceMetadata=_.assignInvoiceMetadata,exports.buildOrderTaxDetailsFromCalculation=u.buildOrderTaxDetailsFromCalculation,exports.buildOrderTaxDetailsFromStripeSession=u.buildOrderTaxDetailsFromStripeSession,exports.claimFreemiusLicenseKey=S.claimFreemiusLicenseKey,exports.clearAutoSyncedCurrencyPriceOverrides=w.clearAutoSyncedCurrencyPriceOverrides,exports.clearPaymentConfigCache=o.clearPaymentConfigCache,exports.computeTrialExpiry=C.computeTrialExpiry,exports.convertMinorUnitAmount=e.convertMinorUnitAmount,exports.copyProductFromLanguage=a.copyProductFromLanguage,exports.createCategoryAction=p.createCategoryAction,exports.createCheckoutSession=h.createCheckoutSession,exports.createProduct=a.createProduct,exports.createProductAction=p.createProductAction,exports.createShippingRate=U.createShippingRate,exports.createShippingZone=U.createShippingZone,exports.deleteCategoryAction=p.deleteCategoryAction,exports.deleteCouponFromFreemius=f.deleteCouponFromFreemius,exports.deleteProduct=a.deleteProduct,exports.deleteProductAction=p.deleteProductAction,exports.deleteShippingRate=U.deleteShippingRate,exports.deleteShippingZone=U.deleteShippingZone,exports.deleteTaxRateAction=G.deleteTaxRateAction,exports.describeCurrencyRoundingRule=e.describeCurrencyRoundingRule,exports.emptyCustomerAddress=r.emptyCustomerAddress,exports.evaluateFreemiusLicenseClaim=S.evaluateFreemiusLicenseClaim,exports.evaluateTrialEligibility=C.evaluateTrialEligibility,exports.extractFreemiusCheckoutMetadata=D.extractFreemiusCheckoutMetadata,exports.fetchOrderReportData=A.fetchOrderReportData,exports.fetchTranslatedProductsForCartInternal=a.fetchTranslatedProductsForCartInternal,exports.fillMissingUserProfileCheckoutDetails=i.fillMissingUserProfileCheckoutDetails,exports.formatFreemiusTimestamp=C.formatFreemiusTimestamp,exports.formatInvoiceCurrency=l.formatInvoiceCurrency,exports.formatInvoiceDate=l.formatInvoiceDate,exports.getCategoriesWithCount=c.getCategoriesWithCount,exports.getCategoryBySlug=c.getCategoryBySlug,exports.getCmsProduct=c.getProduct,exports.getCmsProducts=c.getProducts,exports.getCouponQuote=n.getCouponQuote,exports.getCurrencyLookup=e.getCurrencyLookup,exports.getCurrentCustomerOrder=x.getCurrentCustomerOrder,exports.getCurrentCustomerOrderInvoice=x.getCurrentCustomerOrderInvoice,exports.getCurrentCustomerOrders=x.getCurrentCustomerOrders,exports.getDefaultCurrency=e.getDefaultCurrency,exports.getDefaultUserAddresses=i.getDefaultUserAddresses,exports.getEnabledPaymentProviders=O.getEnabledPaymentProviders,exports.getExchangeRateForCurrency=e.getExchangeRateForCurrency,exports.getFreemiusOrderLicense=b.getFreemiusOrderLicense,exports.getFreemiusWebhookSecretCandidates=D.getFreemiusWebhookSecretCandidates,exports.getGlobalProductAttributes=c.getGlobalProductAttributes,exports.getInvoiceAddressLines=l.getInvoiceAddressLines,exports.getInvoiceBrandingData=_.getInvoiceBrandingData,exports.getInvoiceOrder=_.getInvoiceOrder,exports.getInvoicePresentationData=_.getInvoicePresentationData,exports.getOrderDetails=k.getOrderDetails,exports.getOrderTaxRateJurisdiction=u.getOrderTaxRateJurisdiction,exports.getOrderTaxRateLabel=u.getOrderTaxRateLabel,exports.getOrderTaxRatePercentage=u.getOrderTaxRatePercentage,exports.getOrders=k.getOrders,exports.getPaymentConfigStatus=o.getPaymentConfigStatus,exports.getPaymentCredentialsView=o.getPaymentCredentialsView,exports.getPaymentProvider=E.getPaymentProvider,exports.getPaymentSettings=O.getPaymentSettings,exports.getProduct=a.getProduct,exports.getProductBySlug=a.getProductBySlug,exports.getProductCategories=c.getProductCategories,exports.getProductTranslations=c.getProductTranslations,exports.getProducts=a.getProducts,exports.getProviderReadiness=O.getProviderReadiness,exports.getQuoteLineDiscountMap=n.getQuoteLineDiscountMap,exports.getReadinessForProductType=O.getReadinessForProductType,exports.getStoreConfigStatus=O.getStoreConfigStatus,exports.getStoreReadiness=O.getStoreReadiness,exports.getStripeClient=m.getStripeClient,exports.handleStripeWebhook=y.handleStripeWebhook,exports.hydrateFreemiusEnvFromDb=o.hydrateFreemiusEnvFromDb,exports.inferCurrencyCodeFromLocale=e.inferCurrencyCodeFromLocale,exports.isCustomerAddressComplete=r.isCustomerAddressComplete,exports.isSaleWindowActive=e.isSaleWindowActive,exports.isScheduledPriceDue=e.isScheduledPriceDue,exports.normalizeCurrencyRecord=e.normalizeCurrencyRecord,exports.normalizeCurrencyRoundingMode=e.normalizeCurrencyRoundingMode,exports.normalizeCustomerAddress=r.normalizeCustomerAddress,exports.normalizeInvoiceSettings=l.normalizeInvoiceSettings,exports.normalizeOrderCustomerDetails=r.normalizeOrderCustomerDetails,exports.normalizeOrderTaxDetails=u.normalizeOrderTaxDetails,exports.normalizePriceMap=e.normalizePriceMap,exports.normalizeSalePriceMap=e.normalizeSalePriceMap,exports.parseFreemiusCheckoutCredentialsMap=s.parseFreemiusCheckoutCredentialsMap,exports.parseFreemiusTimestamp=S.parseFreemiusTimestamp,exports.pickTrialPricing=C.pickTrialPricing,exports.productSchema=d.productSchema,exports.provisionFreemiusTrialLicense=C.provisionFreemiusTrialLicense,exports.publishProductAction=p.publishProductAction,exports.readFreemiusEnvValue=s.readFreemiusEnvValue,exports.rebaseStoreCurrencyExchangeRates=w.rebaseStoreCurrencyExchangeRates,exports.recordCouponRedemption=n.recordCouponRedemption,exports.resolveEffectivePriceForCurrency=e.resolveEffectivePriceForCurrency,exports.resolveFreemiusCheckoutCredentials=s.resolveFreemiusCheckoutCredentials,exports.resolveFreemiusStatusFromCheckoutResponse=D.resolveFreemiusStatusFromCheckoutResponse,exports.resolveFreemiusStatusFromWebhookEvent=D.resolveFreemiusStatusFromWebhookEvent,exports.resolvePriceForCurrency=e.resolvePriceForCurrency,exports.resolvePriceRangeForCurrency=e.resolvePriceRangeForCurrency,exports.resolveStripePublishableKey=o.resolveStripePublishableKey,exports.resolveStripeSecretKey=o.resolveStripeSecretKey,exports.resolveStripeWebhookSecret=o.resolveStripeWebhookSecret,exports.savePaymentCredentials=o.savePaymentCredentials,exports.savePaymentProviderCredentials=V.savePaymentProviderCredentials,exports.saveTaxRateAction=G.saveTaxRateAction,exports.serializeInvoiceSettings=l.serializeInvoiceSettings,exports.sortCurrencies=e.sortCurrencies,exports.syncCategoriesForTranslationGroup=a.syncCategoriesForTranslationGroup,exports.syncCouponToFreemius=f.syncCouponToFreemius,exports.syncFreemiusCheckoutOrder=D.syncFreemiusCheckoutOrder,exports.syncFreemiusOrderFromWebhookEvent=D.syncFreemiusOrderFromWebhookEvent,exports.syncFreemiusProductsToSupabase=s.syncFreemiusProductsToSupabase,exports.syncProductCategoriesAction=p.syncProductCategoriesAction,exports.syncProductSaleCouponToFreemius=f.syncProductSaleCouponToFreemius,exports.syncSingleFreemiusProduct=s.syncSingleFreemiusProduct,exports.syncStoreCurrencyRates=w.syncStoreCurrencyRates,exports.syncStripeOrderFromSession=v.syncStripeOrderFromSession,exports.updateCategoryAction=p.updateCategoryAction,exports.updateInventoryTrackingAction=U.updateInventoryTrackingAction,exports.updatePaymentSettings=V.updatePaymentSettings,exports.updateProduct=a.updateProduct,exports.updateProductAction=p.updateProductAction,exports.updateShippingRate=U.updateShippingRate,exports.updateShippingZone=U.updateShippingZone,exports.updateTaxSettingsAction=G.updateTaxSettingsAction,exports.upsertDefaultUserAddresses=i.upsertDefaultUserAddresses,exports.verifyFreemiusWebhookSignature=D.verifyFreemiusWebhookSignature;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib/currency.cjs"),t=require("./lib/currency-constants.cjs"),n=require("./lib/coupon-server.cjs"),r=require("./lib/customer.cjs"),i=require("./lib/customer-addresses.cjs"),a=require("./lib/product-actions.cjs"),o=require("./lib/payment-config.cjs"),s=require("./lib/order-access-token.cjs"),c=require("./lib/providers/freemius.cjs"),l=require("./lib/pages/cms/products/actions.cjs"),u=require("./lib/invoice.cjs"),d=require("./lib/order-tax-details.cjs"),f=require("./lib/product-schema.cjs"),p=require("./lib/freemius-coupons.cjs"),m=require("./lib/pages/cms/products/server-actions.cjs"),h=require("./lib/stripe/client.cjs"),g=require("./lib/stripe/checkout.cjs"),_=require("./lib/order-inventory.cjs"),v=require("./lib/invoice-server.cjs"),y=require("./lib/stripe/order-sync.cjs"),b=require("./lib/stripe/webhooks.cjs"),x=require("./lib/freemius-license.cjs"),S=require("./lib/customer-orders.cjs"),C=require("./lib/freemius-license-claim.cjs"),w=require("./lib/freemius-trial-provision.cjs"),T=require("./lib/currency-sync.cjs"),E=require("./lib/providers/stripe.cjs"),D=require("./lib/factory.cjs"),O=require("./lib/freemius-order-sync.cjs"),k=require("./lib/pages/cms/payments/queries.cjs"),A=require("./lib/pages/cms/orders/actions.cjs"),j=require("./lib/pages/cms/orders/export-actions.cjs"),M=require("./lib/pages/cms/orders/ExportReportsDialog.cjs"),N=require("./lib/pages/cms/orders/OrdersPage.cjs"),P=require("./lib/pages/cms/orders/OrderDetailPage.cjs");require("./lib/pages/cms/orders/index.cjs");const F=require("./lib/pages/cms/products/ProductsPage.cjs"),I=require("./lib/pages/cms/products/inventory/InventoryPage.cjs"),L=require("./lib/pages/cms/products/attributes/AttributeManagementPage.cjs"),R=require("./lib/pages/cms/products/new/NewProductPage.cjs"),z=require("./lib/pages/cms/products/[id]/edit/EditProductPage.cjs"),B=require("./lib/pages/cms/products/components/CopyProductFromLanguage.cjs"),V=require("./lib/pages/cms/products/categories/CategoryManagementPage.cjs");require("./lib/pages/cms/products/index.cjs");const H=require("./lib/pages/cms/payments/actions.cjs"),U=require("./lib/pages/cms/payments/PaymentsPage.cjs");require("./lib/pages/cms/payments/index.cjs");const W=require("./lib/pages/cms/shipping/server-actions.cjs"),G=require("./lib/pages/cms/shipping/ShippingPage.cjs");require("./lib/pages/cms/shipping/index.cjs");const K=require("./lib/pages/cms/taxes/actions.cjs"),q=require("./lib/pages/cms/taxes/TaxesPage.cjs");require("./lib/pages/cms/taxes/index.cjs");const J=require("./lib/pages/cms/coupons/CouponsPage.cjs"),Y=require("./lib/pages/cms/coupons/EditCouponPage.cjs");require("./lib/pages/cms/coupons/index.cjs"),exports.AttributeManagementPage=L.AttributeManagementPage,exports.COUPON_VALIDATION_UNKNOWN_CLIENT_KEY=n.COUPON_VALIDATION_UNKNOWN_CLIENT_KEY,exports.CURRENCY_COOKIE_NAME=t.CURRENCY_COOKIE_NAME,exports.CURRENCY_ROUNDING_MODES=e.CURRENCY_ROUNDING_MODES,exports.CategoryManagementPage=V.CategoryManagementPage,exports.CopyProductFromLanguage=B.CopyProductFromLanguage,exports.CouponsPage=J.CouponsPage,exports.DEFAULT_INVOICE_SETTINGS=u.DEFAULT_INVOICE_SETTINGS,exports.EditCouponPage=Y.EditCouponPage,exports.EditProductPage=z.EditProductPage,exports.ExportReportsDialog=M.ExportReportsDialog,exports.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES=C.FREEMIUS_LICENSE_CLAIM_MAX_AGE_MINUTES,exports.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE=C.FREEMIUS_LICENSE_CLAIM_REFUSED_MESSAGE,exports.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE=w.FREEMIUS_TRIAL_ALREADY_USED_MESSAGE,exports.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE=w.FREEMIUS_TRIAL_PROVISION_FAILED_MESSAGE,exports.FreemiusProvider=c.FreemiusProvider,exports.INVOICE_SETTINGS_KEY=u.INVOICE_SETTINGS_KEY,exports.InventoryPage=I.InventoryPage,exports.NewProductPage=R.NewProductPage,exports.OrderDetailPage=P.OrderDetailPage,exports.OrdersPage=N.OrdersPage,exports.PaymentsPage=U.PaymentsPage,exports.ProductsPage=F.ProductsPage,exports.ShippingPage=G.ShippingPage,exports.StripeNotConfiguredError=h.StripeNotConfiguredError,exports.StripeProvider=E.StripeProvider,exports.TaxesPage=q.TaxesPage,exports.addressesMatch=r.addressesMatch,exports.aggregateOrderTaxLines=d.aggregateOrderTaxLines,exports.applyCurrencyRounding=e.applyCurrencyRounding,exports.applyOrderInventoryDeduction=_.applyOrderInventoryDeduction,exports.assignInvoiceMetadata=v.assignInvoiceMetadata,exports.buildOrderTaxDetailsFromCalculation=d.buildOrderTaxDetailsFromCalculation,exports.buildOrderTaxDetailsFromStripeSession=d.buildOrderTaxDetailsFromStripeSession,exports.claimFreemiusLicenseKey=C.claimFreemiusLicenseKey,exports.clearAutoSyncedCurrencyPriceOverrides=T.clearAutoSyncedCurrencyPriceOverrides,exports.clearPaymentConfigCache=o.clearPaymentConfigCache,exports.computeTrialExpiry=w.computeTrialExpiry,exports.consumeCouponValidationToken=n.consumeCouponValidationToken,exports.convertMinorUnitAmount=e.convertMinorUnitAmount,exports.copyProductFromLanguage=a.copyProductFromLanguage,exports.createCategoryAction=m.createCategoryAction,exports.createCheckoutSession=g.createCheckoutSession,exports.createCouponValidationThrottle=n.createCouponValidationThrottle,exports.createProduct=a.createProduct,exports.createProductAction=m.createProductAction,exports.createShippingRate=W.createShippingRate,exports.createShippingZone=W.createShippingZone,exports.deleteCategoryAction=m.deleteCategoryAction,exports.deleteCouponFromFreemius=p.deleteCouponFromFreemius,exports.deleteProduct=a.deleteProduct,exports.deleteProductAction=m.deleteProductAction,exports.deleteShippingRate=W.deleteShippingRate,exports.deleteShippingZone=W.deleteShippingZone,exports.deleteTaxRateAction=K.deleteTaxRateAction,exports.describeCurrencyRoundingRule=e.describeCurrencyRoundingRule,exports.emptyCustomerAddress=r.emptyCustomerAddress,exports.evaluateFreemiusLicenseClaim=C.evaluateFreemiusLicenseClaim,exports.evaluateTrialEligibility=w.evaluateTrialEligibility,exports.extractFreemiusCheckoutMetadata=O.extractFreemiusCheckoutMetadata,exports.fetchOrderReportData=j.fetchOrderReportData,exports.fetchTranslatedProductsForCartInternal=a.fetchTranslatedProductsForCartInternal,exports.fillMissingUserProfileCheckoutDetails=i.fillMissingUserProfileCheckoutDetails,exports.formatFreemiusTimestamp=w.formatFreemiusTimestamp,exports.formatInvoiceCurrency=u.formatInvoiceCurrency,exports.formatInvoiceDate=u.formatInvoiceDate,exports.getCategoriesWithCount=l.getCategoriesWithCount,exports.getCategoryBySlug=l.getCategoryBySlug,exports.getCmsProduct=l.getProduct,exports.getCmsProducts=l.getProducts,exports.getCouponQuote=n.getCouponQuote,exports.getCurrencyLookup=e.getCurrencyLookup,exports.getCurrentCustomerOrder=S.getCurrentCustomerOrder,exports.getCurrentCustomerOrderInvoice=S.getCurrentCustomerOrderInvoice,exports.getCurrentCustomerOrders=S.getCurrentCustomerOrders,exports.getDefaultCurrency=e.getDefaultCurrency,exports.getDefaultUserAddresses=i.getDefaultUserAddresses,exports.getEnabledPaymentProviders=k.getEnabledPaymentProviders,exports.getExchangeRateForCurrency=e.getExchangeRateForCurrency,exports.getFreemiusOrderLicense=x.getFreemiusOrderLicense,exports.getFreemiusWebhookSecretCandidates=O.getFreemiusWebhookSecretCandidates,exports.getGlobalProductAttributes=l.getGlobalProductAttributes,exports.getInvoiceAddressLines=u.getInvoiceAddressLines,exports.getInvoiceBrandingData=v.getInvoiceBrandingData,exports.getInvoiceOrder=v.getInvoiceOrder,exports.getInvoicePresentationData=v.getInvoicePresentationData,exports.getOrderDetails=A.getOrderDetails,exports.getOrderTaxRateJurisdiction=d.getOrderTaxRateJurisdiction,exports.getOrderTaxRateLabel=d.getOrderTaxRateLabel,exports.getOrderTaxRatePercentage=d.getOrderTaxRatePercentage,exports.getOrders=A.getOrders,exports.getPaymentConfigStatus=o.getPaymentConfigStatus,exports.getPaymentCredentialsView=o.getPaymentCredentialsView,exports.getPaymentProvider=D.getPaymentProvider,exports.getPaymentSettings=k.getPaymentSettings,exports.getProduct=a.getProduct,exports.getProductBySlug=a.getProductBySlug,exports.getProductCategories=l.getProductCategories,exports.getProductTranslations=l.getProductTranslations,exports.getProducts=a.getProducts,exports.getProviderReadiness=k.getProviderReadiness,exports.getQuoteLineDiscountMap=n.getQuoteLineDiscountMap,exports.getReadinessForProductType=k.getReadinessForProductType,exports.getStoreConfigStatus=k.getStoreConfigStatus,exports.getStoreReadiness=k.getStoreReadiness,exports.getStripeClient=h.getStripeClient,exports.handleStripeWebhook=b.handleStripeWebhook,exports.hydrateFreemiusEnvFromDb=o.hydrateFreemiusEnvFromDb,exports.inferCurrencyCodeFromLocale=e.inferCurrencyCodeFromLocale,exports.isCustomerAddressComplete=r.isCustomerAddressComplete,exports.isSaleWindowActive=e.isSaleWindowActive,exports.isScheduledPriceDue=e.isScheduledPriceDue,exports.mintOrderAccessToken=s.mintOrderAccessToken,exports.normalizeCurrencyRecord=e.normalizeCurrencyRecord,exports.normalizeCurrencyRoundingMode=e.normalizeCurrencyRoundingMode,exports.normalizeCustomerAddress=r.normalizeCustomerAddress,exports.normalizeInvoiceSettings=u.normalizeInvoiceSettings,exports.normalizeOrderCustomerDetails=r.normalizeOrderCustomerDetails,exports.normalizeOrderTaxDetails=d.normalizeOrderTaxDetails,exports.normalizePriceMap=e.normalizePriceMap,exports.normalizeSalePriceMap=e.normalizeSalePriceMap,exports.parseFreemiusCheckoutCredentialsMap=c.parseFreemiusCheckoutCredentialsMap,exports.parseFreemiusTimestamp=C.parseFreemiusTimestamp,exports.pickTrialPricing=w.pickTrialPricing,exports.productSchema=f.productSchema,exports.provisionFreemiusTrialLicense=w.provisionFreemiusTrialLicense,exports.publishProductAction=m.publishProductAction,exports.readFreemiusEnvValue=c.readFreemiusEnvValue,exports.rebaseStoreCurrencyExchangeRates=T.rebaseStoreCurrencyExchangeRates,exports.recordCouponRedemption=n.recordCouponRedemption,exports.resolveCouponValidationThrottleKey=n.resolveCouponValidationThrottleKey,exports.resolveEffectivePriceForCurrency=e.resolveEffectivePriceForCurrency,exports.resolveFreemiusCheckoutCredentials=c.resolveFreemiusCheckoutCredentials,exports.resolveFreemiusStatusFromCheckoutResponse=O.resolveFreemiusStatusFromCheckoutResponse,exports.resolveFreemiusStatusFromWebhookEvent=O.resolveFreemiusStatusFromWebhookEvent,exports.resolvePriceForCurrency=e.resolvePriceForCurrency,exports.resolvePriceRangeForCurrency=e.resolvePriceRangeForCurrency,exports.resolveStripePublishableKey=o.resolveStripePublishableKey,exports.resolveStripeSecretKey=o.resolveStripeSecretKey,exports.resolveStripeWebhookSecret=o.resolveStripeWebhookSecret,exports.savePaymentCredentials=o.savePaymentCredentials,exports.savePaymentProviderCredentials=H.savePaymentProviderCredentials,exports.saveTaxRateAction=K.saveTaxRateAction,exports.serializeInvoiceSettings=u.serializeInvoiceSettings,exports.sortCurrencies=e.sortCurrencies,exports.syncCategoriesForTranslationGroup=a.syncCategoriesForTranslationGroup,exports.syncCouponToFreemius=p.syncCouponToFreemius,exports.syncFreemiusCheckoutOrder=O.syncFreemiusCheckoutOrder,exports.syncFreemiusOrderFromWebhookEvent=O.syncFreemiusOrderFromWebhookEvent,exports.syncFreemiusProductsToSupabase=c.syncFreemiusProductsToSupabase,exports.syncProductCategoriesAction=m.syncProductCategoriesAction,exports.syncProductSaleCouponToFreemius=p.syncProductSaleCouponToFreemius,exports.syncSingleFreemiusProduct=c.syncSingleFreemiusProduct,exports.syncStoreCurrencyRates=T.syncStoreCurrencyRates,exports.syncStripeOrderFromSession=y.syncStripeOrderFromSession,exports.updateCategoryAction=m.updateCategoryAction,exports.updateInventoryTrackingAction=W.updateInventoryTrackingAction,exports.updatePaymentSettings=H.updatePaymentSettings,exports.updateProduct=a.updateProduct,exports.updateProductAction=m.updateProductAction,exports.updateShippingRate=W.updateShippingRate,exports.updateShippingZone=W.updateShippingZone,exports.updateTaxSettingsAction=K.updateTaxSettingsAction,exports.upsertDefaultUserAddresses=i.upsertDefaultUserAddresses,exports.verifyFreemiusWebhookSignature=O.verifyFreemiusWebhookSignature,exports.verifyOrderAccessToken=s.verifyOrderAccessToken;
package/server.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './lib/order-inventory';
7
7
  export * from './lib/order-tax-details';
8
8
  export * from './lib/invoice';
9
9
  export * from './lib/invoice-server';
10
+ export * from './lib/order-access-token';
10
11
  export * from './lib/customer-orders';
11
12
  export * from './lib/coupon-server';
12
13
  export * from './lib/freemius-coupons';