@lockerverse/sdk 0.2.27 → 0.2.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,15 +15,16 @@ const client = createLockerverseCheckoutClient({
15
15
  widgetSlug: "auburn-tailgate-party",
16
16
  });
17
17
 
18
- const catalog = await client.load();
19
18
  const session = await client.createSession({
20
19
  email: "customer@example.com",
21
- items: [{ productId: catalog.products[0].id, quantity: 2 }],
20
+ items: [{ productSlug: "adult", quantity: 2 }],
22
21
  requestKey: crypto.randomUUID(),
23
22
  returnUrl: "https://example.com/payment-complete",
24
23
  tipCents: 500,
25
24
  });
26
25
 
26
+ const catalog = session.catalog;
27
+
27
28
  await client.updateSessionDiscount({
28
29
  paymentReference: session.paymentReference,
29
30
  promoCode: "FREE",
package/dist/checkout.js CHANGED
@@ -1,2 +1,2 @@
1
- import{C as e,D as t,E as n,O as r,S as i,T as a,_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,k as m,l as h,n as g,o as _,p as v,r as y,s as b,t as x,v as S,w as C,x as w,y as T}from"./transport.js";import{n as E,t as ee}from"./types.js";const D={development:`pk_test_51O7FkjDHAhgRuLtFHdkXdIe8T5i7rOVaG9PCtDetK3UUVKojVUEKHmQacGzigf9mOX1wz3zSOKoYwFjRcTfML9PU00OjJko2lk`,production:`pk_live_51O7FkjDHAhgRuLtFlzLdxJrwo7F09WCKTlzT9lnBePjOGizWnuijkH9oCkoAddkmBT8ngIuqAPkDiHlPEAH4KXbz00Tm0DaPT4`};function O(e){let t=h(e,`widgetSlug`);return{...t,stripePublishableKey:D[t.environment],widgetSlug:t.resourceSlug,widgetSlugValue:t.resourceSlugValue}}const k=r([a({amountCents:l(1),productId:_}),a({productId:_,quantity:l(1)})]),A=e(C(e(n(),o(1),f(40)),e(n(),f(500))),v(e=>Object.keys(e).length<=50)),j=w(a({email:c(n()),includeServiceFee:c(d()),items:e(u(k),o(1)),metadata:c(A),requestKey:_,returnUrl:_,tipCents:c(l(0))})),M=w(a({paymentReference:_,promoCode:c(n())})),N=w(a({includeServiceFee:d(),paymentReference:_,tipCents:l(0)})),P=w(a({customFieldAnswers:c(u(a({fieldId:_,value:c(S(r([n(),u(n())])))}))),email:_,memberId:c(n()),merchSize:c(i([`XS`,`S`,`M`,`L`,`XL`,`XXL`,`XXXL`])),paymentReference:_,phone:c(n())})),F=i([`one-time`,`monthly`,`annually`]),I=S(l(0)),L={description:b,id:_,inventoryQuantity:I,maxQuantity:I,minimumAmountCents:I,minQuantity:I,name:_,paymentOption:F},R=e(m(`pricingMode`,[T({...L,amountCents:l(0),pricingMode:p(`fixed`)}),T({...L,amountCents:I,pricingMode:p(`custom`)})]),v(({maxQuantity:e,minQuantity:t})=>e===null||t===null||t<=e)),z=T({acceptsDiscounts:c(d(),!1),id:_,product:R,productId:_,slug:_}),B=c(T({memberId:c(d(),!1),merchSize:c(d(),!1),phone:c(d(),!1),promoCode:c(d(),!1),serviceFee:c(d(),!1),shipping:c(d(),!1),tipping:c(d(),!1)}),{}),V=T({color:b,name:_,thumbnail:b}),H=e(T({community:c(V),config:c(T({customFields:s,fields:B})),description:b,id:c(n(),``),name:c(n(),`Lockerverse widget`),pricingPolicy:c(T({currency:c(p(`usd`),`usd`),serviceFeeRateBasisPoints:c(l(0),0)})),products:c(u(z),[]),showCommunityBranding:c(d(),!0),title:b}),t(e=>({...e,config:{customFields:e.config?.customFields??[],fields:{memberId:e.config?.fields?.memberId??!1,merchSize:e.config?.fields?.merchSize??!1,phone:e.config?.fields?.phone??!1,promoCode:e.config?.fields?.promoCode??!1,serviceFee:e.config?.fields?.serviceFee??!1,shipping:e.config?.fields?.shipping??!1,tipping:e.config?.fields?.tipping??!1}},pricingPolicy:e.pricingPolicy??{currency:`usd`,serviceFeeRateBasisPoints:0}}))),te=T({checkoutId:_,checkoutStatus:i([`action_required`,`failed`,`pending`,`success`]),clientSecret:S(n()),paymentReference:_,requiresAction:d(),status:S(n())}),U=T({checkoutId:_,clientSecret:_,connectedAccountId:S(_),paymentReference:_,sessionId:_}),W=T({discountCents:l(0),paymentReference:_,totalCents:l(0)}),G=T({paymentReference:_,totalCents:l(0)}),K=T({includeServiceFee:d(),paymentReference:_,serviceFeeCents:l(0),tipCents:l(0),totalCents:l(0)}),q=w(U),J=w(W),Y=w(G),X=w(K),Z=w(te),Q=w(H);function ne(e){let{product:t}=e;return{acceptsDiscounts:e.acceptsDiscounts??!1,amountCents:t.amountCents,description:t.description??null,id:t.id,inventoryQuantity:t.inventoryQuantity,listingId:e.id,maximumQuantity:t.maxQuantity,minimumAmountCents:t.minimumAmountCents,minimumQuantity:t.minQuantity,name:t.name,paymentOption:t.paymentOption,pricingMode:t.pricingMode,slug:e.slug}}function re(e,t){let n=e.config?.fields??{};return{community:e.community?{accentColor:e.community.color??null,imageUrl:e.community.thumbnail??null,name:e.community.name}:null,payment:{currency:`usd`,publishableKey:t},pricingPolicy:{currency:`usd`,serviceFeeRateBasisPoints:e.pricingPolicy?.serviceFeeRateBasisPoints??0},products:(e.products??[]).map(ne),widget:{customFields:e.config?.customFields??[],description:e.description??null,fields:{memberId:n.memberId??!1,merchSize:n.merchSize??!1,phone:n.phone??!1,promoCode:n.promoCode??!1,serviceFee:n.serviceFee??!1,shipping:n.shipping??!1,tipping:n.tipping??!1},id:e.id??``,name:e.name??`Lockerverse widget`,showCommunityBranding:e.showCommunityBranding??!0,title:e.title??null}}}function ie(e){return $(e)}function ae(e){return $(e)}function $(e){return y(structuredClone(e))}function oe(e){let{apiBaseUrl:t,communitySlug:n,communitySlugValue:r,environment:i,fetchImplementation:a,onError:o,requestTimeoutMs:s,sentryDsn:c,stripePublishableKey:l,widgetSlug:u,widgetSlugValue:d}=O(e),f=g({communitySlug:r,environment:i,getContext:()=>({widgetSlug:d}),onError:o,resourceContextName:`lockerverse_widget`,sentryDsn:c}),{requestJson:p}=x(a,f,s),m=`${t}/v2/community/${n}/payment-widgets/${u}`,h=`${m}/checkout/session`;function _(e,t){throw f(new E({code:`invalid_selection`,message:e,operation:t,reportable:!1}))}function v(e,t){throw f(e instanceof E?e:new E({...t,reportable:!0}))}function b(e){try{let t=j(e),n=new URL(t.returnUrl);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw TypeError(`Invalid return URL.`);let r=t.email?.trim().toLowerCase();return{...r?{email:r}:{},...t.includeServiceFee===void 0?{}:{includeServiceFee:t.includeServiceFee},items:t.items,...t.metadata?{metadata:t.metadata}:{},requestKey:t.requestKey.trim(),returnUrl:n.toString(),...t.tipCents===void 0?{}:{tipCents:t.tipCents}}}catch{_(`Checkout Session input is invalid.`,`create_session`)}}return{async createSession(e){let t=b(e),n={code:`session_create_failed`,message:`Lockerverse returned an invalid Checkout Session.`,operation:`create_session`};try{let e=await p(h,{body:JSON.stringify(t),headers:{"Content-Type":`application/json`},method:`POST`},q,{...n,message:`Unable to create the Lockerverse Checkout Session because the request failed.`,report:!1},{...n,report:!1});if(!e.ok)throw new E({...n,message:`Unable to create the Lockerverse Checkout Session (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});return y({...e.value})}catch(e){v(e,n)}},async getPaymentStatus(e){(typeof e!=`string`||!e.trim())&&_(`Provide a payment reference to recover its status.`,`get_payment_status`);let t=e.trim(),n={code:`payment_status_failed`,message:`Lockerverse returned an invalid payment status.`,operation:`get_payment_status`};try{let e=await p(`${m}/checkout/${encodeURIComponent(t)}/status`,void 0,Z,{...n,message:`Unable to recover the Lockerverse payment status because the request failed.`,report:!1},{...n,report:!1});if(!e.ok)throw new E({...n,message:`Unable to recover the Lockerverse payment status (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});if(e.value.paymentReference!==t)throw new E({...n,reportable:!0});return ae(e.value)}catch(e){v(e,n)}},async load(){let e={code:`widget_load_failed`,message:`Lockerverse returned an invalid widget catalog.`,operation:`load_widget`};try{let t=await p(m,void 0,Q,{...e,message:`Unable to load Lockerverse widget because the request failed.`,report:!1},{...e,report:!1});if(!t.ok)throw new E({...e,message:`Unable to load Lockerverse widget (${t.response.status}).`,reportable:t.response.status>=500,status:t.response.status});return ie(y(re(t.value,l)))}catch(t){v(t,e)}},async updateSessionDetails(e){let t;try{t=P(e)}catch{_(`Checkout Session details are invalid.`,`update_session_details`)}let n=t.paymentReference.trim(),r={code:`session_update_failed`,message:`Lockerverse returned invalid Checkout Session details.`,operation:`update_session_details`};try{let e={...t.customFieldAnswers?{customFieldAnswers:t.customFieldAnswers}:{},email:t.email.trim().toLowerCase(),...t.memberId?.trim()?{memberId:t.memberId.trim()}:{},...t.merchSize?{merchSize:t.merchSize}:{},...t.phone?.trim()?{phone:t.phone.trim()}:{}},i=await p(`${h}/${encodeURIComponent(n)}/details`,{body:JSON.stringify(e),headers:{"Content-Type":`application/json`},method:`PATCH`},Y,{...r,report:!1},{...r,report:!1});if(!i.ok)throw new E({...r,message:`Unable to save the Lockerverse Checkout Session details (${i.response.status}).`,reportable:i.response.status>=500,status:i.response.status});if(i.value.paymentReference!==n)throw new E({...r,reportable:!0});return y({...i.value})}catch(e){v(e,r)}},async updateSessionDiscount(e){let t;try{t=M(e)}catch{_(`Checkout Session discount input is invalid.`,`update_session_discount`)}let n=t.paymentReference.trim(),r=t.promoCode?.trim(),i={code:`session_update_failed`,message:`Lockerverse returned an invalid Checkout Session update.`,operation:`update_session_discount`};try{let e=await p(`${h}/${encodeURIComponent(n)}/discount`,{body:JSON.stringify(r?{promoCode:r}:{}),headers:{"Content-Type":`application/json`},method:`PATCH`},J,{...i,message:`Unable to update the Lockerverse Checkout Session because the request failed.`,report:!1},{...i,report:!1});if(!e.ok)throw new E({...i,message:`Unable to update the Lockerverse Checkout Session (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});if(e.value.paymentReference!==n)throw new E({...i,reportable:!0});return y({...e.value})}catch(e){v(e,i)}},async updateSessionPricing(e){let t;try{t=N(e)}catch{_(`Checkout Session pricing input is invalid.`,`update_session_pricing`)}let n=t.paymentReference.trim(),r={code:`session_update_failed`,message:`Lockerverse returned invalid Checkout Session pricing.`,operation:`update_session_pricing`};try{let e=await p(`${h}/${encodeURIComponent(n)}/pricing`,{body:JSON.stringify({includeServiceFee:t.includeServiceFee,tipCents:t.tipCents}),headers:{"Content-Type":`application/json`},method:`PATCH`},X,{...r,report:!1},{...r,report:!1});if(!e.ok)throw new E({...r,message:`Unable to update Lockerverse Checkout Session pricing (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});if(e.value.paymentReference!==n)throw new E({...r,reportable:!0});return y({...e.value})}catch(e){v(e,r)}}}}export{ee as LOCKERVERSE_SDK_VERSION,E as LockerverseSdkError,oe as createLockerverseCheckoutClient};
1
+ import{C as e,D as t,E as n,O as r,S as i,T as a,_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,k as m,l as h,n as g,o as _,p as v,r as y,s as b,t as x,v as S,w as C,x as w,y as T}from"./transport.js";import{n as E,t as D}from"./types.js";const ee={development:`pk_test_51O7FkjDHAhgRuLtFHdkXdIe8T5i7rOVaG9PCtDetK3UUVKojVUEKHmQacGzigf9mOX1wz3zSOKoYwFjRcTfML9PU00OjJko2lk`,production:`pk_live_51O7FkjDHAhgRuLtFlzLdxJrwo7F09WCKTlzT9lnBePjOGizWnuijkH9oCkoAddkmBT8ngIuqAPkDiHlPEAH4KXbz00Tm0DaPT4`};function te(e){let t=h(e,`widgetSlug`);return{...t,stripePublishableKey:ee[t.environment],widgetSlug:t.resourceSlug,widgetSlugValue:t.resourceSlugValue}}const O=r([a({amountCents:l(1),productSlug:_}),a({productSlug:_,quantity:l(1)})]),k=e(C(e(n(),o(1),f(40)),e(n(),f(500))),v(e=>Object.keys(e).length<=50)),A=w(a({email:c(n()),includeServiceFee:c(d()),items:e(u(O),o(1)),metadata:c(k),requestKey:_,returnUrl:_,tipCents:c(l(0))})),j=w(a({paymentReference:_,promoCode:c(n())})),M=w(a({includeServiceFee:d(),paymentReference:_,tipCents:l(0)})),N=w(a({customFieldAnswers:c(u(a({fieldId:_,value:c(S(r([n(),u(n())])))}))),email:_,memberId:c(n()),merchSize:c(i([`XS`,`S`,`M`,`L`,`XL`,`XXL`,`XXXL`])),paymentReference:_,phone:c(n())})),P=i([`one-time`,`monthly`,`annually`]),F=S(l(0)),I={description:b,id:_,inventoryQuantity:F,maxQuantity:F,minimumAmountCents:F,minQuantity:F,name:_,paymentOption:P},L=e(m(`pricingMode`,[T({...I,amountCents:l(0),pricingMode:p(`fixed`)}),T({...I,amountCents:F,pricingMode:p(`custom`)})]),v(({maxQuantity:e,minQuantity:t})=>e===null||t===null||t<=e)),R=T({acceptsDiscounts:c(d(),!1),id:_,product:L,productId:_,slug:_}),z=c(T({memberId:c(d(),!1),merchSize:c(d(),!1),phone:c(d(),!1),promoCode:c(d(),!1),serviceFee:c(d(),!1),shipping:c(d(),!1),tipping:c(d(),!1)}),{}),B=T({color:b,name:_,thumbnail:b}),V=e(T({community:c(B),config:c(T({customFields:s,fields:z})),description:b,id:c(n(),``),name:c(n(),`Lockerverse widget`),pricingPolicy:c(T({currency:c(p(`usd`),`usd`),serviceFeeRateBasisPoints:c(l(0),0)})),products:c(u(R),[]),showCommunityBranding:c(d(),!0),title:b}),t(e=>({...e,config:{customFields:e.config?.customFields??[],fields:{memberId:e.config?.fields?.memberId??!1,merchSize:e.config?.fields?.merchSize??!1,phone:e.config?.fields?.phone??!1,promoCode:e.config?.fields?.promoCode??!1,serviceFee:e.config?.fields?.serviceFee??!1,shipping:e.config?.fields?.shipping??!1,tipping:e.config?.fields?.tipping??!1}},pricingPolicy:e.pricingPolicy??{currency:`usd`,serviceFeeRateBasisPoints:0}}))),H=T({checkoutId:_,checkoutStatus:i([`action_required`,`failed`,`pending`,`success`]),clientSecret:S(n()),paymentReference:_,requiresAction:d(),status:S(n())}),U=T({catalog:V,checkoutId:_,clientSecret:_,connectedAccountId:S(_),paymentReference:_,sessionId:_}),W=T({discountCents:l(0),paymentReference:_,totalCents:l(0)}),G=T({paymentReference:_,totalCents:l(0)}),K=T({includeServiceFee:d(),paymentReference:_,serviceFeeCents:l(0),tipCents:l(0),totalCents:l(0)}),q=w(U),J=w(W),Y=w(G),X=w(K),Z=w(H),ne=w(V);function re(e){let{product:t}=e;return{acceptsDiscounts:e.acceptsDiscounts??!1,amountCents:t.amountCents,description:t.description??null,id:t.id,inventoryQuantity:t.inventoryQuantity,listingId:e.id,maximumQuantity:t.maxQuantity,minimumAmountCents:t.minimumAmountCents,minimumQuantity:t.minQuantity,name:t.name,paymentOption:t.paymentOption,pricingMode:t.pricingMode,slug:e.slug}}function Q(e,t){let n=e.config?.fields??{};return{community:e.community?{accentColor:e.community.color??null,imageUrl:e.community.thumbnail??null,name:e.community.name}:null,payment:{currency:`usd`,publishableKey:t},pricingPolicy:{currency:`usd`,serviceFeeRateBasisPoints:e.pricingPolicy?.serviceFeeRateBasisPoints??0},products:(e.products??[]).map(re),widget:{customFields:e.config?.customFields??[],description:e.description??null,fields:{memberId:n.memberId??!1,merchSize:n.merchSize??!1,phone:n.phone??!1,promoCode:n.promoCode??!1,serviceFee:n.serviceFee??!1,shipping:n.shipping??!1,tipping:n.tipping??!1},id:e.id??``,name:e.name??`Lockerverse widget`,showCommunityBranding:e.showCommunityBranding??!0,title:e.title??null}}}function ie(e){return $(e)}function ae(e){return $(e)}function $(e){return y(structuredClone(e))}function oe(e){let{apiBaseUrl:t,communitySlug:n,communitySlugValue:r,environment:i,fetchImplementation:a,onError:o,requestTimeoutMs:s,sentryDsn:c,stripePublishableKey:l,widgetSlug:u,widgetSlugValue:d}=te(e),f=g({communitySlug:r,environment:i,getContext:()=>({widgetSlug:d}),onError:o,resourceContextName:`lockerverse_widget`,sentryDsn:c}),{requestJson:p}=x(a,f,s),m=`${t}/v2/community/${n}/payment-widgets/${u}`,h=`${m}/checkout/session`;function _(e,t){throw f(new E({code:`invalid_selection`,message:e,operation:t,reportable:!1}))}function v(e,t){throw f(e instanceof E?e:new E({...t,reportable:!0}))}function b(e){try{let t=A(e),n=new URL(t.returnUrl);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw TypeError(`Invalid return URL.`);let r=t.email?.trim().toLowerCase();return{...r?{email:r}:{},...t.includeServiceFee===void 0?{}:{includeServiceFee:t.includeServiceFee},items:t.items,...t.metadata?{metadata:t.metadata}:{},requestKey:t.requestKey.trim(),returnUrl:n.toString(),...t.tipCents===void 0?{}:{tipCents:t.tipCents}}}catch{_(`Checkout Session input is invalid.`,`create_session`)}}return{async createSession(e){let t=b(e),n={code:`session_create_failed`,message:`Lockerverse returned an invalid Checkout Session.`,operation:`create_session`};try{let e=await p(h,{body:JSON.stringify(t),headers:{"Content-Type":`application/json`},method:`POST`},q,{...n,message:`Unable to create the Lockerverse Checkout Session because the request failed.`,report:!1},{...n,report:!1});if(!e.ok)throw new E({...n,message:`Unable to create the Lockerverse Checkout Session (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});let{catalog:r,...i}=e.value;return y({...i,catalog:Q(r,l)})}catch(e){v(e,n)}},async getPaymentStatus(e){(typeof e!=`string`||!e.trim())&&_(`Provide a payment reference to recover its status.`,`get_payment_status`);let t=e.trim(),n={code:`payment_status_failed`,message:`Lockerverse returned an invalid payment status.`,operation:`get_payment_status`};try{let e=await p(`${m}/checkout/${encodeURIComponent(t)}/status`,void 0,Z,{...n,message:`Unable to recover the Lockerverse payment status because the request failed.`,report:!1},{...n,report:!1});if(!e.ok)throw new E({...n,message:`Unable to recover the Lockerverse payment status (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});if(e.value.paymentReference!==t)throw new E({...n,reportable:!0});return ae(e.value)}catch(e){v(e,n)}},async load(){let e={code:`widget_load_failed`,message:`Lockerverse returned an invalid widget catalog.`,operation:`load_widget`};try{let t=await p(m,void 0,ne,{...e,message:`Unable to load Lockerverse widget because the request failed.`,report:!1},{...e,report:!1});if(!t.ok)throw new E({...e,message:`Unable to load Lockerverse widget (${t.response.status}).`,reportable:t.response.status>=500,status:t.response.status});return ie(y(Q(t.value,l)))}catch(t){v(t,e)}},stripePublishableKey:l,async updateSessionDetails(e){let t;try{t=N(e)}catch{_(`Checkout Session details are invalid.`,`update_session_details`)}let n=t.paymentReference.trim(),r={code:`session_update_failed`,message:`Lockerverse returned invalid Checkout Session details.`,operation:`update_session_details`};try{let e={...t.customFieldAnswers?{customFieldAnswers:t.customFieldAnswers}:{},email:t.email.trim().toLowerCase(),...t.memberId?.trim()?{memberId:t.memberId.trim()}:{},...t.merchSize?{merchSize:t.merchSize}:{},...t.phone?.trim()?{phone:t.phone.trim()}:{}},i=await p(`${h}/${encodeURIComponent(n)}/details`,{body:JSON.stringify(e),headers:{"Content-Type":`application/json`},method:`PATCH`},Y,{...r,report:!1},{...r,report:!1});if(!i.ok)throw new E({...r,message:`Unable to save the Lockerverse Checkout Session details (${i.response.status}).`,reportable:i.response.status>=500,status:i.response.status});if(i.value.paymentReference!==n)throw new E({...r,reportable:!0});return y({...i.value})}catch(e){v(e,r)}},async updateSessionDiscount(e){let t;try{t=j(e)}catch{_(`Checkout Session discount input is invalid.`,`update_session_discount`)}let n=t.paymentReference.trim(),r=t.promoCode?.trim(),i={code:`session_update_failed`,message:`Lockerverse returned an invalid Checkout Session update.`,operation:`update_session_discount`};try{let e=await p(`${h}/${encodeURIComponent(n)}/discount`,{body:JSON.stringify(r?{promoCode:r}:{}),headers:{"Content-Type":`application/json`},method:`PATCH`},J,{...i,message:`Unable to update the Lockerverse Checkout Session because the request failed.`,report:!1},{...i,report:!1});if(!e.ok)throw new E({...i,message:`Unable to update the Lockerverse Checkout Session (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});if(e.value.paymentReference!==n)throw new E({...i,reportable:!0});return y({...e.value})}catch(e){v(e,i)}},async updateSessionPricing(e){let t;try{t=M(e)}catch{_(`Checkout Session pricing input is invalid.`,`update_session_pricing`)}let n=t.paymentReference.trim(),r={code:`session_update_failed`,message:`Lockerverse returned invalid Checkout Session pricing.`,operation:`update_session_pricing`};try{let e=await p(`${h}/${encodeURIComponent(n)}/pricing`,{body:JSON.stringify({includeServiceFee:t.includeServiceFee,tipCents:t.tipCents}),headers:{"Content-Type":`application/json`},method:`PATCH`},X,{...r,report:!1},{...r,report:!1});if(!e.ok)throw new E({...r,message:`Unable to update Lockerverse Checkout Session pricing (${e.response.status}).`,reportable:e.response.status>=500,status:e.response.status});if(e.value.paymentReference!==n)throw new E({...r,reportable:!0});return y({...e.value})}catch(e){v(e,r)}}}}export{D as LOCKERVERSE_SDK_VERSION,E as LockerverseSdkError,oe as createLockerverseCheckoutClient};
2
2
  //# sourceMappingURL=checkout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.js","names":[],"sources":["../src/checkout-environment.ts","../src/checkout-input-schemas.ts","../src/checkout-schemas.ts","../src/snapshots.ts","../src/checkout-client.ts"],"sourcesContent":["import { resolveResourceEnvironment } from \"./environment.ts\";\nimport type {\n CreateLockerverseWidgetOptions,\n LockerverseEnvironment,\n} from \"./types.ts\";\n\nconst STRIPE_PUBLISHABLE_KEYS: Record<LockerverseEnvironment, string> = {\n development:\n \"pk_test_51O7FkjDHAhgRuLtFHdkXdIe8T5i7rOVaG9PCtDetK3UUVKojVUEKHmQacGzigf9mOX1wz3zSOKoYwFjRcTfML9PU00OjJko2lk\",\n production:\n \"pk_live_51O7FkjDHAhgRuLtFlzLdxJrwo7F09WCKTlzT9lnBePjOGizWnuijkH9oCkoAddkmBT8ngIuqAPkDiHlPEAH4KXbz00Tm0DaPT4\",\n};\n\nexport function resolveWidgetEnvironment(\n options: CreateLockerverseWidgetOptions\n) {\n const runtime = resolveResourceEnvironment(options, \"widgetSlug\");\n return {\n ...runtime,\n stripePublishableKey: STRIPE_PUBLISHABLE_KEYS[runtime.environment],\n widgetSlug: runtime.resourceSlug,\n widgetSlugValue: runtime.resourceSlugValue,\n };\n}\n","import {\n array,\n boolean,\n check,\n maxLength,\n minLength,\n nullable,\n optional,\n parser,\n picklist,\n pipe,\n record,\n strictObject,\n string,\n union,\n} from \"valibot\";\n\nimport { nonEmptyStringSchema, safeIntegerSchema } from \"./schema-helpers.ts\";\n\nconst checkoutItemSchema = union([\n strictObject({\n amountCents: safeIntegerSchema(1),\n productId: nonEmptyStringSchema,\n }),\n strictObject({\n productId: nonEmptyStringSchema,\n quantity: safeIntegerSchema(1),\n }),\n]);\n\nconst metadataSchema = pipe(\n record(\n pipe(string(), minLength(1), maxLength(40)),\n pipe(string(), maxLength(500))\n ),\n check((metadata) => Object.keys(metadata).length <= 50)\n);\n\nexport const parseCreateCheckoutSessionInput = parser(\n strictObject({\n email: optional(string()),\n includeServiceFee: optional(boolean()),\n items: pipe(array(checkoutItemSchema), minLength(1)),\n metadata: optional(metadataSchema),\n requestKey: nonEmptyStringSchema,\n returnUrl: nonEmptyStringSchema,\n tipCents: optional(safeIntegerSchema(0)),\n })\n);\n\nexport const parseCheckoutSessionDiscountInput = parser(\n strictObject({\n paymentReference: nonEmptyStringSchema,\n promoCode: optional(string()),\n })\n);\n\nexport const parseCheckoutSessionPricingInput = parser(\n strictObject({\n includeServiceFee: boolean(),\n paymentReference: nonEmptyStringSchema,\n tipCents: safeIntegerSchema(0),\n })\n);\n\nexport const parseCheckoutSessionDetailsInput = parser(\n strictObject({\n customFieldAnswers: optional(\n array(\n strictObject({\n fieldId: nonEmptyStringSchema,\n value: optional(nullable(union([string(), array(string())]))),\n })\n )\n ),\n email: nonEmptyStringSchema,\n memberId: optional(string()),\n merchSize: optional(picklist([\"XS\", \"S\", \"M\", \"L\", \"XL\", \"XXL\", \"XXXL\"])),\n paymentReference: nonEmptyStringSchema,\n phone: optional(string()),\n })\n);\n","import {\n array,\n boolean,\n check,\n type InferOutput,\n literal,\n nullable,\n object,\n optional,\n parser,\n picklist,\n pipe,\n string,\n transform,\n variant,\n} from \"valibot\";\n\nimport {\n customFieldsSchema,\n nonEmptyStringSchema,\n optionalNullableStringSchema,\n safeIntegerSchema,\n} from \"./schema-helpers.ts\";\n\nconst paymentOptionSchema = picklist([\"one-time\", \"monthly\", \"annually\"]);\nconst nullableNonNegativeIntegerSchema = nullable(safeIntegerSchema(0));\n\nconst productBaseEntries = {\n description: optionalNullableStringSchema,\n id: nonEmptyStringSchema,\n inventoryQuantity: nullableNonNegativeIntegerSchema,\n maxQuantity: nullableNonNegativeIntegerSchema,\n minimumAmountCents: nullableNonNegativeIntegerSchema,\n minQuantity: nullableNonNegativeIntegerSchema,\n name: nonEmptyStringSchema,\n paymentOption: paymentOptionSchema,\n};\n\nconst publicProductSchema = pipe(\n variant(\"pricingMode\", [\n object({\n ...productBaseEntries,\n amountCents: safeIntegerSchema(0),\n pricingMode: literal(\"fixed\"),\n }),\n object({\n ...productBaseEntries,\n amountCents: nullableNonNegativeIntegerSchema,\n pricingMode: literal(\"custom\"),\n }),\n ]),\n check(\n ({ maxQuantity, minQuantity }) =>\n maxQuantity === null || minQuantity === null || minQuantity <= maxQuantity\n )\n);\n\nconst productListingSchema = object({\n acceptsDiscounts: optional(boolean(), false),\n id: nonEmptyStringSchema,\n product: publicProductSchema,\n productId: nonEmptyStringSchema,\n slug: nonEmptyStringSchema,\n});\n\nconst widgetFieldsSchema = optional(\n object({\n memberId: optional(boolean(), false),\n merchSize: optional(boolean(), false),\n phone: optional(boolean(), false),\n promoCode: optional(boolean(), false),\n serviceFee: optional(boolean(), false),\n shipping: optional(boolean(), false),\n tipping: optional(boolean(), false),\n }),\n {}\n);\n\nconst communitySchema = object({\n color: optionalNullableStringSchema,\n name: nonEmptyStringSchema,\n thumbnail: optionalNullableStringSchema,\n});\n\nexport const publicWidgetSchema = pipe(\n object({\n community: optional(communitySchema),\n config: optional(\n object({\n customFields: customFieldsSchema,\n fields: widgetFieldsSchema,\n })\n ),\n description: optionalNullableStringSchema,\n id: optional(string(), \"\"),\n name: optional(string(), \"Lockerverse widget\"),\n pricingPolicy: optional(\n object({\n currency: optional(literal(\"usd\"), \"usd\"),\n serviceFeeRateBasisPoints: optional(safeIntegerSchema(0), 0),\n })\n ),\n products: optional(array(productListingSchema), []),\n showCommunityBranding: optional(boolean(), true),\n title: optionalNullableStringSchema,\n }),\n transform((widget) => ({\n ...widget,\n config: {\n customFields: widget.config?.customFields ?? [],\n fields: {\n memberId: widget.config?.fields?.memberId ?? false,\n merchSize: widget.config?.fields?.merchSize ?? false,\n phone: widget.config?.fields?.phone ?? false,\n promoCode: widget.config?.fields?.promoCode ?? false,\n serviceFee: widget.config?.fields?.serviceFee ?? false,\n shipping: widget.config?.fields?.shipping ?? false,\n tipping: widget.config?.fields?.tipping ?? false,\n },\n },\n pricingPolicy: widget.pricingPolicy ?? {\n currency: \"usd\" as const,\n serviceFeeRateBasisPoints: 0,\n },\n }))\n);\n\nexport const paymentResultSchema = object({\n checkoutId: nonEmptyStringSchema,\n checkoutStatus: picklist([\"action_required\", \"failed\", \"pending\", \"success\"]),\n clientSecret: nullable(string()),\n paymentReference: nonEmptyStringSchema,\n requiresAction: boolean(),\n status: nullable(string()),\n});\n\nexport const checkoutSessionSchema = object({\n checkoutId: nonEmptyStringSchema,\n clientSecret: nonEmptyStringSchema,\n connectedAccountId: nullable(nonEmptyStringSchema),\n paymentReference: nonEmptyStringSchema,\n sessionId: nonEmptyStringSchema,\n});\n\nexport const checkoutSessionDiscountSchema = object({\n discountCents: safeIntegerSchema(0),\n paymentReference: nonEmptyStringSchema,\n totalCents: safeIntegerSchema(0),\n});\n\nexport const checkoutSessionDetailsSchema = object({\n paymentReference: nonEmptyStringSchema,\n totalCents: safeIntegerSchema(0),\n});\n\nexport const checkoutSessionPricingSchema = object({\n includeServiceFee: boolean(),\n paymentReference: nonEmptyStringSchema,\n serviceFeeCents: safeIntegerSchema(0),\n tipCents: safeIntegerSchema(0),\n totalCents: safeIntegerSchema(0),\n});\n\nexport type PublicProductListing = InferOutput<typeof productListingSchema>;\nexport type PublicWidget = InferOutput<typeof publicWidgetSchema>;\n\nexport const parseCheckoutSession = parser(checkoutSessionSchema);\nexport const parseCheckoutSessionDiscount = parser(\n checkoutSessionDiscountSchema\n);\nexport const parseCheckoutSessionDetails = parser(checkoutSessionDetailsSchema);\nexport const parseCheckoutSessionPricing = parser(checkoutSessionPricingSchema);\nexport const parsePaymentResult = parser(paymentResultSchema);\nexport const parsePublicWidget = parser(publicWidgetSchema);\n","import type { PublicProductListing, PublicWidget } from \"./checkout-schemas.ts\";\nimport { deepFreeze } from \"./deep-freeze.ts\";\nimport type {\n LockerverseCatalog,\n LockerversePaymentResult,\n LockerverseProduct,\n} from \"./types.ts\";\n\nfunction mapProduct(listing: PublicProductListing): LockerverseProduct {\n const { product } = listing;\n\n return {\n acceptsDiscounts: listing.acceptsDiscounts ?? false,\n amountCents: product.amountCents,\n description: product.description ?? null,\n id: product.id,\n inventoryQuantity: product.inventoryQuantity,\n listingId: listing.id,\n maximumQuantity: product.maxQuantity,\n minimumAmountCents: product.minimumAmountCents,\n minimumQuantity: product.minQuantity,\n name: product.name,\n paymentOption: product.paymentOption,\n pricingMode: product.pricingMode,\n slug: listing.slug,\n };\n}\n\nexport function createCatalog(\n widget: PublicWidget,\n publishableKey: string\n): LockerverseCatalog {\n const fields = widget.config?.fields ?? {};\n\n return {\n community: widget.community\n ? {\n accentColor: widget.community.color ?? null,\n imageUrl: widget.community.thumbnail ?? null,\n name: widget.community.name,\n }\n : null,\n payment: {\n currency: \"usd\",\n publishableKey,\n },\n pricingPolicy: {\n currency: \"usd\",\n serviceFeeRateBasisPoints:\n widget.pricingPolicy?.serviceFeeRateBasisPoints ?? 0,\n },\n products: (widget.products ?? []).map(mapProduct),\n widget: {\n customFields: widget.config?.customFields ?? [],\n description: widget.description ?? null,\n fields: {\n memberId: fields.memberId ?? false,\n merchSize: fields.merchSize ?? false,\n phone: fields.phone ?? false,\n promoCode: fields.promoCode ?? false,\n serviceFee: fields.serviceFee ?? false,\n shipping: fields.shipping ?? false,\n tipping: fields.tipping ?? false,\n },\n id: widget.id ?? \"\",\n name: widget.name ?? \"Lockerverse widget\",\n showCommunityBranding: widget.showCommunityBranding ?? true,\n title: widget.title ?? null,\n },\n };\n}\n\nexport function cloneCatalog(catalog: LockerverseCatalog): LockerverseCatalog {\n return cloneSnapshot(catalog);\n}\n\nexport function clonePaymentResult(\n paymentResult: LockerversePaymentResult\n): LockerversePaymentResult {\n return cloneSnapshot(paymentResult);\n}\n\nfunction cloneSnapshot<T>(value: T): T {\n return deepFreeze(structuredClone(value));\n}\n","import { resolveWidgetEnvironment } from \"./checkout-environment.ts\";\nimport {\n parseCheckoutSessionDetailsInput,\n parseCheckoutSessionDiscountInput,\n parseCheckoutSessionPricingInput,\n parseCreateCheckoutSessionInput,\n} from \"./checkout-input-schemas.ts\";\nimport {\n parseCheckoutSession,\n parseCheckoutSessionDetails,\n parseCheckoutSessionDiscount,\n parseCheckoutSessionPricing,\n parsePaymentResult,\n parsePublicWidget,\n} from \"./checkout-schemas.ts\";\nimport { deepFreeze } from \"./deep-freeze.ts\";\nimport { createSdkErrorReporter } from \"./error-reporting.ts\";\nimport {\n cloneCatalog,\n clonePaymentResult,\n createCatalog,\n} from \"./snapshots.ts\";\nimport { createTransport } from \"./transport.ts\";\nimport {\n type CreateLockerverseWidgetOptions,\n type LockerverseCheckoutClient,\n LockerverseSdkError,\n type LockerverseSdkOperation,\n} from \"./types.ts\";\n\ntype OperationErrorContext = {\n code:\n | \"payment_status_failed\"\n | \"session_create_failed\"\n | \"session_update_failed\"\n | \"widget_load_failed\";\n message: string;\n operation:\n | \"create_session\"\n | \"get_payment_status\"\n | \"load_widget\"\n | \"update_session_details\"\n | \"update_session_discount\"\n | \"update_session_pricing\";\n};\n\nexport function createLockerverseCheckoutClient(\n options: CreateLockerverseWidgetOptions\n): LockerverseCheckoutClient {\n const {\n apiBaseUrl,\n communitySlug,\n communitySlugValue,\n environment,\n fetchImplementation,\n onError,\n requestTimeoutMs,\n sentryDsn,\n stripePublishableKey,\n widgetSlug,\n widgetSlugValue,\n } = resolveWidgetEnvironment(options);\n const reportError = createSdkErrorReporter({\n communitySlug: communitySlugValue,\n environment,\n getContext: () => ({ widgetSlug: widgetSlugValue }),\n onError,\n resourceContextName: \"lockerverse_widget\",\n sentryDsn,\n });\n const { requestJson } = createTransport(\n fetchImplementation,\n reportError,\n requestTimeoutMs\n );\n const widgetUrl = `${apiBaseUrl}/v2/community/${communitySlug}/payment-widgets/${widgetSlug}`;\n const sessionUrl = `${widgetUrl}/checkout/session`;\n\n function invalidInput(\n message: string,\n operation: LockerverseSdkOperation\n ): never {\n throw reportError(\n new LockerverseSdkError({\n code: \"invalid_selection\",\n message,\n operation,\n reportable: false,\n })\n );\n }\n\n function failOperation(\n error: unknown,\n context: OperationErrorContext\n ): never {\n throw reportError(\n error instanceof LockerverseSdkError\n ? error\n : new LockerverseSdkError({ ...context, reportable: true })\n );\n }\n\n function normalizeCreateSessionInput(input: unknown) {\n try {\n const parsed = parseCreateCheckoutSessionInput(input);\n const returnUrl = new URL(parsed.returnUrl);\n if (\n !(returnUrl.protocol === \"http:\" || returnUrl.protocol === \"https:\")\n ) {\n throw new TypeError(\"Invalid return URL.\");\n }\n const email = parsed.email?.trim().toLowerCase();\n return {\n ...(email ? { email } : {}),\n ...(parsed.includeServiceFee === undefined\n ? {}\n : { includeServiceFee: parsed.includeServiceFee }),\n items: parsed.items,\n ...(parsed.metadata ? { metadata: parsed.metadata } : {}),\n requestKey: parsed.requestKey.trim(),\n returnUrl: returnUrl.toString(),\n ...(parsed.tipCents === undefined ? {} : { tipCents: parsed.tipCents }),\n };\n } catch {\n invalidInput(\"Checkout Session input is invalid.\", \"create_session\");\n }\n }\n\n return {\n async createSession(input) {\n const normalized = normalizeCreateSessionInput(input);\n const context = {\n code: \"session_create_failed\" as const,\n message: \"Lockerverse returned an invalid Checkout Session.\",\n operation: \"create_session\" as const,\n };\n try {\n const response = await requestJson(\n sessionUrl,\n {\n body: JSON.stringify(normalized),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n },\n parseCheckoutSession,\n {\n ...context,\n message:\n \"Unable to create the Lockerverse Checkout Session because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to create the Lockerverse Checkout Session (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n async getPaymentStatus(paymentReference) {\n if (typeof paymentReference !== \"string\" || !paymentReference.trim()) {\n invalidInput(\n \"Provide a payment reference to recover its status.\",\n \"get_payment_status\"\n );\n }\n const normalizedReference = paymentReference.trim();\n const context = {\n code: \"payment_status_failed\" as const,\n message: \"Lockerverse returned an invalid payment status.\",\n operation: \"get_payment_status\" as const,\n };\n try {\n const response = await requestJson(\n `${widgetUrl}/checkout/${encodeURIComponent(normalizedReference)}/status`,\n undefined,\n parsePaymentResult,\n {\n ...context,\n message:\n \"Unable to recover the Lockerverse payment status because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to recover the Lockerverse payment status (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== normalizedReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return clonePaymentResult(response.value);\n } catch (error) {\n failOperation(error, context);\n }\n },\n async load() {\n const context = {\n code: \"widget_load_failed\" as const,\n message: \"Lockerverse returned an invalid widget catalog.\",\n operation: \"load_widget\" as const,\n };\n try {\n const response = await requestJson(\n widgetUrl,\n undefined,\n parsePublicWidget,\n {\n ...context,\n message:\n \"Unable to load Lockerverse widget because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to load Lockerverse widget (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n return cloneCatalog(\n deepFreeze(createCatalog(response.value, stripePublishableKey))\n );\n } catch (error) {\n failOperation(error, context);\n }\n },\n async updateSessionDetails(input) {\n let parsed: ReturnType<typeof parseCheckoutSessionDetailsInput>;\n try {\n parsed = parseCheckoutSessionDetailsInput(input);\n } catch {\n invalidInput(\n \"Checkout Session details are invalid.\",\n \"update_session_details\"\n );\n }\n const paymentReference = parsed.paymentReference.trim();\n const context = {\n code: \"session_update_failed\" as const,\n message: \"Lockerverse returned invalid Checkout Session details.\",\n operation: \"update_session_details\" as const,\n };\n try {\n const body = {\n ...(parsed.customFieldAnswers\n ? { customFieldAnswers: parsed.customFieldAnswers }\n : {}),\n email: parsed.email.trim().toLowerCase(),\n ...(parsed.memberId?.trim()\n ? { memberId: parsed.memberId.trim() }\n : {}),\n ...(parsed.merchSize ? { merchSize: parsed.merchSize } : {}),\n ...(parsed.phone?.trim() ? { phone: parsed.phone.trim() } : {}),\n };\n const response = await requestJson(\n `${sessionUrl}/${encodeURIComponent(paymentReference)}/details`,\n {\n body: JSON.stringify(body),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"PATCH\",\n },\n parseCheckoutSessionDetails,\n { ...context, report: false },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to save the Lockerverse Checkout Session details (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== paymentReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n async updateSessionDiscount(input) {\n let parsed: ReturnType<typeof parseCheckoutSessionDiscountInput>;\n try {\n parsed = parseCheckoutSessionDiscountInput(input);\n } catch {\n invalidInput(\n \"Checkout Session discount input is invalid.\",\n \"update_session_discount\"\n );\n }\n const paymentReference = parsed.paymentReference.trim();\n const promoCode = parsed.promoCode?.trim();\n const context = {\n code: \"session_update_failed\" as const,\n message: \"Lockerverse returned an invalid Checkout Session update.\",\n operation: \"update_session_discount\" as const,\n };\n try {\n const response = await requestJson(\n `${sessionUrl}/${encodeURIComponent(paymentReference)}/discount`,\n {\n body: JSON.stringify(promoCode ? { promoCode } : {}),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"PATCH\",\n },\n parseCheckoutSessionDiscount,\n {\n ...context,\n message:\n \"Unable to update the Lockerverse Checkout Session because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to update the Lockerverse Checkout Session (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== paymentReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n async updateSessionPricing(input) {\n let parsed: ReturnType<typeof parseCheckoutSessionPricingInput>;\n try {\n parsed = parseCheckoutSessionPricingInput(input);\n } catch {\n invalidInput(\n \"Checkout Session pricing input is invalid.\",\n \"update_session_pricing\"\n );\n }\n const paymentReference = parsed.paymentReference.trim();\n const context = {\n code: \"session_update_failed\" as const,\n message: \"Lockerverse returned invalid Checkout Session pricing.\",\n operation: \"update_session_pricing\" as const,\n };\n try {\n const response = await requestJson(\n `${sessionUrl}/${encodeURIComponent(paymentReference)}/pricing`,\n {\n body: JSON.stringify({\n includeServiceFee: parsed.includeServiceFee,\n tipCents: parsed.tipCents,\n }),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"PATCH\",\n },\n parseCheckoutSessionPricing,\n { ...context, report: false },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to update Lockerverse Checkout Session pricing (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== paymentReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"checkout.js","names":[],"sources":["../src/checkout-environment.ts","../src/checkout-input-schemas.ts","../src/checkout-schemas.ts","../src/snapshots.ts","../src/checkout-client.ts"],"sourcesContent":["import { resolveResourceEnvironment } from \"./environment.ts\";\nimport type {\n CreateLockerverseWidgetOptions,\n LockerverseEnvironment,\n} from \"./types.ts\";\n\nconst STRIPE_PUBLISHABLE_KEYS: Record<LockerverseEnvironment, string> = {\n development:\n \"pk_test_51O7FkjDHAhgRuLtFHdkXdIe8T5i7rOVaG9PCtDetK3UUVKojVUEKHmQacGzigf9mOX1wz3zSOKoYwFjRcTfML9PU00OjJko2lk\",\n production:\n \"pk_live_51O7FkjDHAhgRuLtFlzLdxJrwo7F09WCKTlzT9lnBePjOGizWnuijkH9oCkoAddkmBT8ngIuqAPkDiHlPEAH4KXbz00Tm0DaPT4\",\n};\n\nexport function resolveWidgetEnvironment(\n options: CreateLockerverseWidgetOptions\n) {\n const runtime = resolveResourceEnvironment(options, \"widgetSlug\");\n return {\n ...runtime,\n stripePublishableKey: STRIPE_PUBLISHABLE_KEYS[runtime.environment],\n widgetSlug: runtime.resourceSlug,\n widgetSlugValue: runtime.resourceSlugValue,\n };\n}\n","import {\n array,\n boolean,\n check,\n maxLength,\n minLength,\n nullable,\n optional,\n parser,\n picklist,\n pipe,\n record,\n strictObject,\n string,\n union,\n} from \"valibot\";\n\nimport { nonEmptyStringSchema, safeIntegerSchema } from \"./schema-helpers.ts\";\n\nconst checkoutItemSchema = union([\n strictObject({\n amountCents: safeIntegerSchema(1),\n productSlug: nonEmptyStringSchema,\n }),\n strictObject({\n productSlug: nonEmptyStringSchema,\n quantity: safeIntegerSchema(1),\n }),\n]);\n\nconst metadataSchema = pipe(\n record(\n pipe(string(), minLength(1), maxLength(40)),\n pipe(string(), maxLength(500))\n ),\n check((metadata) => Object.keys(metadata).length <= 50)\n);\n\nexport const parseCreateCheckoutSessionInput = parser(\n strictObject({\n email: optional(string()),\n includeServiceFee: optional(boolean()),\n items: pipe(array(checkoutItemSchema), minLength(1)),\n metadata: optional(metadataSchema),\n requestKey: nonEmptyStringSchema,\n returnUrl: nonEmptyStringSchema,\n tipCents: optional(safeIntegerSchema(0)),\n })\n);\n\nexport const parseCheckoutSessionDiscountInput = parser(\n strictObject({\n paymentReference: nonEmptyStringSchema,\n promoCode: optional(string()),\n })\n);\n\nexport const parseCheckoutSessionPricingInput = parser(\n strictObject({\n includeServiceFee: boolean(),\n paymentReference: nonEmptyStringSchema,\n tipCents: safeIntegerSchema(0),\n })\n);\n\nexport const parseCheckoutSessionDetailsInput = parser(\n strictObject({\n customFieldAnswers: optional(\n array(\n strictObject({\n fieldId: nonEmptyStringSchema,\n value: optional(nullable(union([string(), array(string())]))),\n })\n )\n ),\n email: nonEmptyStringSchema,\n memberId: optional(string()),\n merchSize: optional(picklist([\"XS\", \"S\", \"M\", \"L\", \"XL\", \"XXL\", \"XXXL\"])),\n paymentReference: nonEmptyStringSchema,\n phone: optional(string()),\n })\n);\n","import {\n array,\n boolean,\n check,\n type InferOutput,\n literal,\n nullable,\n object,\n optional,\n parser,\n picklist,\n pipe,\n string,\n transform,\n variant,\n} from \"valibot\";\n\nimport {\n customFieldsSchema,\n nonEmptyStringSchema,\n optionalNullableStringSchema,\n safeIntegerSchema,\n} from \"./schema-helpers.ts\";\n\nconst paymentOptionSchema = picklist([\"one-time\", \"monthly\", \"annually\"]);\nconst nullableNonNegativeIntegerSchema = nullable(safeIntegerSchema(0));\n\nconst productBaseEntries = {\n description: optionalNullableStringSchema,\n id: nonEmptyStringSchema,\n inventoryQuantity: nullableNonNegativeIntegerSchema,\n maxQuantity: nullableNonNegativeIntegerSchema,\n minimumAmountCents: nullableNonNegativeIntegerSchema,\n minQuantity: nullableNonNegativeIntegerSchema,\n name: nonEmptyStringSchema,\n paymentOption: paymentOptionSchema,\n};\n\nconst publicProductSchema = pipe(\n variant(\"pricingMode\", [\n object({\n ...productBaseEntries,\n amountCents: safeIntegerSchema(0),\n pricingMode: literal(\"fixed\"),\n }),\n object({\n ...productBaseEntries,\n amountCents: nullableNonNegativeIntegerSchema,\n pricingMode: literal(\"custom\"),\n }),\n ]),\n check(\n ({ maxQuantity, minQuantity }) =>\n maxQuantity === null || minQuantity === null || minQuantity <= maxQuantity\n )\n);\n\nconst productListingSchema = object({\n acceptsDiscounts: optional(boolean(), false),\n id: nonEmptyStringSchema,\n product: publicProductSchema,\n productId: nonEmptyStringSchema,\n slug: nonEmptyStringSchema,\n});\n\nconst widgetFieldsSchema = optional(\n object({\n memberId: optional(boolean(), false),\n merchSize: optional(boolean(), false),\n phone: optional(boolean(), false),\n promoCode: optional(boolean(), false),\n serviceFee: optional(boolean(), false),\n shipping: optional(boolean(), false),\n tipping: optional(boolean(), false),\n }),\n {}\n);\n\nconst communitySchema = object({\n color: optionalNullableStringSchema,\n name: nonEmptyStringSchema,\n thumbnail: optionalNullableStringSchema,\n});\n\nexport const publicWidgetSchema = pipe(\n object({\n community: optional(communitySchema),\n config: optional(\n object({\n customFields: customFieldsSchema,\n fields: widgetFieldsSchema,\n })\n ),\n description: optionalNullableStringSchema,\n id: optional(string(), \"\"),\n name: optional(string(), \"Lockerverse widget\"),\n pricingPolicy: optional(\n object({\n currency: optional(literal(\"usd\"), \"usd\"),\n serviceFeeRateBasisPoints: optional(safeIntegerSchema(0), 0),\n })\n ),\n products: optional(array(productListingSchema), []),\n showCommunityBranding: optional(boolean(), true),\n title: optionalNullableStringSchema,\n }),\n transform((widget) => ({\n ...widget,\n config: {\n customFields: widget.config?.customFields ?? [],\n fields: {\n memberId: widget.config?.fields?.memberId ?? false,\n merchSize: widget.config?.fields?.merchSize ?? false,\n phone: widget.config?.fields?.phone ?? false,\n promoCode: widget.config?.fields?.promoCode ?? false,\n serviceFee: widget.config?.fields?.serviceFee ?? false,\n shipping: widget.config?.fields?.shipping ?? false,\n tipping: widget.config?.fields?.tipping ?? false,\n },\n },\n pricingPolicy: widget.pricingPolicy ?? {\n currency: \"usd\" as const,\n serviceFeeRateBasisPoints: 0,\n },\n }))\n);\n\nexport const paymentResultSchema = object({\n checkoutId: nonEmptyStringSchema,\n checkoutStatus: picklist([\"action_required\", \"failed\", \"pending\", \"success\"]),\n clientSecret: nullable(string()),\n paymentReference: nonEmptyStringSchema,\n requiresAction: boolean(),\n status: nullable(string()),\n});\n\nexport const checkoutSessionSchema = object({\n catalog: publicWidgetSchema,\n checkoutId: nonEmptyStringSchema,\n clientSecret: nonEmptyStringSchema,\n connectedAccountId: nullable(nonEmptyStringSchema),\n paymentReference: nonEmptyStringSchema,\n sessionId: nonEmptyStringSchema,\n});\n\nexport const checkoutSessionDiscountSchema = object({\n discountCents: safeIntegerSchema(0),\n paymentReference: nonEmptyStringSchema,\n totalCents: safeIntegerSchema(0),\n});\n\nexport const checkoutSessionDetailsSchema = object({\n paymentReference: nonEmptyStringSchema,\n totalCents: safeIntegerSchema(0),\n});\n\nexport const checkoutSessionPricingSchema = object({\n includeServiceFee: boolean(),\n paymentReference: nonEmptyStringSchema,\n serviceFeeCents: safeIntegerSchema(0),\n tipCents: safeIntegerSchema(0),\n totalCents: safeIntegerSchema(0),\n});\n\nexport type PublicProductListing = InferOutput<typeof productListingSchema>;\nexport type PublicWidget = InferOutput<typeof publicWidgetSchema>;\n\nexport const parseCheckoutSession = parser(checkoutSessionSchema);\nexport const parseCheckoutSessionDiscount = parser(\n checkoutSessionDiscountSchema\n);\nexport const parseCheckoutSessionDetails = parser(checkoutSessionDetailsSchema);\nexport const parseCheckoutSessionPricing = parser(checkoutSessionPricingSchema);\nexport const parsePaymentResult = parser(paymentResultSchema);\nexport const parsePublicWidget = parser(publicWidgetSchema);\n","import type { PublicProductListing, PublicWidget } from \"./checkout-schemas.ts\";\nimport { deepFreeze } from \"./deep-freeze.ts\";\nimport type {\n LockerverseCatalog,\n LockerversePaymentResult,\n LockerverseProduct,\n} from \"./types.ts\";\n\nfunction mapProduct(listing: PublicProductListing): LockerverseProduct {\n const { product } = listing;\n\n return {\n acceptsDiscounts: listing.acceptsDiscounts ?? false,\n amountCents: product.amountCents,\n description: product.description ?? null,\n id: product.id,\n inventoryQuantity: product.inventoryQuantity,\n listingId: listing.id,\n maximumQuantity: product.maxQuantity,\n minimumAmountCents: product.minimumAmountCents,\n minimumQuantity: product.minQuantity,\n name: product.name,\n paymentOption: product.paymentOption,\n pricingMode: product.pricingMode,\n slug: listing.slug,\n };\n}\n\nexport function createCatalog(\n widget: PublicWidget,\n publishableKey: string\n): LockerverseCatalog {\n const fields = widget.config?.fields ?? {};\n\n return {\n community: widget.community\n ? {\n accentColor: widget.community.color ?? null,\n imageUrl: widget.community.thumbnail ?? null,\n name: widget.community.name,\n }\n : null,\n payment: {\n currency: \"usd\",\n publishableKey,\n },\n pricingPolicy: {\n currency: \"usd\",\n serviceFeeRateBasisPoints:\n widget.pricingPolicy?.serviceFeeRateBasisPoints ?? 0,\n },\n products: (widget.products ?? []).map(mapProduct),\n widget: {\n customFields: widget.config?.customFields ?? [],\n description: widget.description ?? null,\n fields: {\n memberId: fields.memberId ?? false,\n merchSize: fields.merchSize ?? false,\n phone: fields.phone ?? false,\n promoCode: fields.promoCode ?? false,\n serviceFee: fields.serviceFee ?? false,\n shipping: fields.shipping ?? false,\n tipping: fields.tipping ?? false,\n },\n id: widget.id ?? \"\",\n name: widget.name ?? \"Lockerverse widget\",\n showCommunityBranding: widget.showCommunityBranding ?? true,\n title: widget.title ?? null,\n },\n };\n}\n\nexport function cloneCatalog(catalog: LockerverseCatalog): LockerverseCatalog {\n return cloneSnapshot(catalog);\n}\n\nexport function clonePaymentResult(\n paymentResult: LockerversePaymentResult\n): LockerversePaymentResult {\n return cloneSnapshot(paymentResult);\n}\n\nfunction cloneSnapshot<T>(value: T): T {\n return deepFreeze(structuredClone(value));\n}\n","import { resolveWidgetEnvironment } from \"./checkout-environment.ts\";\nimport {\n parseCheckoutSessionDetailsInput,\n parseCheckoutSessionDiscountInput,\n parseCheckoutSessionPricingInput,\n parseCreateCheckoutSessionInput,\n} from \"./checkout-input-schemas.ts\";\nimport {\n parseCheckoutSession,\n parseCheckoutSessionDetails,\n parseCheckoutSessionDiscount,\n parseCheckoutSessionPricing,\n parsePaymentResult,\n parsePublicWidget,\n} from \"./checkout-schemas.ts\";\nimport { deepFreeze } from \"./deep-freeze.ts\";\nimport { createSdkErrorReporter } from \"./error-reporting.ts\";\nimport {\n cloneCatalog,\n clonePaymentResult,\n createCatalog,\n} from \"./snapshots.ts\";\nimport { createTransport } from \"./transport.ts\";\nimport {\n type CreateLockerverseWidgetOptions,\n type LockerverseCheckoutClient,\n LockerverseSdkError,\n type LockerverseSdkOperation,\n} from \"./types.ts\";\n\ntype OperationErrorContext = {\n code:\n | \"payment_status_failed\"\n | \"session_create_failed\"\n | \"session_update_failed\"\n | \"widget_load_failed\";\n message: string;\n operation:\n | \"create_session\"\n | \"get_payment_status\"\n | \"load_widget\"\n | \"update_session_details\"\n | \"update_session_discount\"\n | \"update_session_pricing\";\n};\n\nexport function createLockerverseCheckoutClient(\n options: CreateLockerverseWidgetOptions\n): LockerverseCheckoutClient {\n const {\n apiBaseUrl,\n communitySlug,\n communitySlugValue,\n environment,\n fetchImplementation,\n onError,\n requestTimeoutMs,\n sentryDsn,\n stripePublishableKey,\n widgetSlug,\n widgetSlugValue,\n } = resolveWidgetEnvironment(options);\n const reportError = createSdkErrorReporter({\n communitySlug: communitySlugValue,\n environment,\n getContext: () => ({ widgetSlug: widgetSlugValue }),\n onError,\n resourceContextName: \"lockerverse_widget\",\n sentryDsn,\n });\n const { requestJson } = createTransport(\n fetchImplementation,\n reportError,\n requestTimeoutMs\n );\n const widgetUrl = `${apiBaseUrl}/v2/community/${communitySlug}/payment-widgets/${widgetSlug}`;\n const sessionUrl = `${widgetUrl}/checkout/session`;\n\n function invalidInput(\n message: string,\n operation: LockerverseSdkOperation\n ): never {\n throw reportError(\n new LockerverseSdkError({\n code: \"invalid_selection\",\n message,\n operation,\n reportable: false,\n })\n );\n }\n\n function failOperation(\n error: unknown,\n context: OperationErrorContext\n ): never {\n throw reportError(\n error instanceof LockerverseSdkError\n ? error\n : new LockerverseSdkError({ ...context, reportable: true })\n );\n }\n\n function normalizeCreateSessionInput(input: unknown) {\n try {\n const parsed = parseCreateCheckoutSessionInput(input);\n const returnUrl = new URL(parsed.returnUrl);\n if (\n !(returnUrl.protocol === \"http:\" || returnUrl.protocol === \"https:\")\n ) {\n throw new TypeError(\"Invalid return URL.\");\n }\n const email = parsed.email?.trim().toLowerCase();\n return {\n ...(email ? { email } : {}),\n ...(parsed.includeServiceFee === undefined\n ? {}\n : { includeServiceFee: parsed.includeServiceFee }),\n items: parsed.items,\n ...(parsed.metadata ? { metadata: parsed.metadata } : {}),\n requestKey: parsed.requestKey.trim(),\n returnUrl: returnUrl.toString(),\n ...(parsed.tipCents === undefined ? {} : { tipCents: parsed.tipCents }),\n };\n } catch {\n invalidInput(\"Checkout Session input is invalid.\", \"create_session\");\n }\n }\n\n return {\n async createSession(input) {\n const normalized = normalizeCreateSessionInput(input);\n const context = {\n code: \"session_create_failed\" as const,\n message: \"Lockerverse returned an invalid Checkout Session.\",\n operation: \"create_session\" as const,\n };\n try {\n const response = await requestJson(\n sessionUrl,\n {\n body: JSON.stringify(normalized),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n },\n parseCheckoutSession,\n {\n ...context,\n message:\n \"Unable to create the Lockerverse Checkout Session because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to create the Lockerverse Checkout Session (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n const { catalog, ...session } = response.value;\n return deepFreeze({\n ...session,\n catalog: createCatalog(catalog, stripePublishableKey),\n });\n } catch (error) {\n failOperation(error, context);\n }\n },\n async getPaymentStatus(paymentReference) {\n if (typeof paymentReference !== \"string\" || !paymentReference.trim()) {\n invalidInput(\n \"Provide a payment reference to recover its status.\",\n \"get_payment_status\"\n );\n }\n const normalizedReference = paymentReference.trim();\n const context = {\n code: \"payment_status_failed\" as const,\n message: \"Lockerverse returned an invalid payment status.\",\n operation: \"get_payment_status\" as const,\n };\n try {\n const response = await requestJson(\n `${widgetUrl}/checkout/${encodeURIComponent(normalizedReference)}/status`,\n undefined,\n parsePaymentResult,\n {\n ...context,\n message:\n \"Unable to recover the Lockerverse payment status because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to recover the Lockerverse payment status (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== normalizedReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return clonePaymentResult(response.value);\n } catch (error) {\n failOperation(error, context);\n }\n },\n async load() {\n const context = {\n code: \"widget_load_failed\" as const,\n message: \"Lockerverse returned an invalid widget catalog.\",\n operation: \"load_widget\" as const,\n };\n try {\n const response = await requestJson(\n widgetUrl,\n undefined,\n parsePublicWidget,\n {\n ...context,\n message:\n \"Unable to load Lockerverse widget because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to load Lockerverse widget (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n return cloneCatalog(\n deepFreeze(createCatalog(response.value, stripePublishableKey))\n );\n } catch (error) {\n failOperation(error, context);\n }\n },\n stripePublishableKey,\n async updateSessionDetails(input) {\n let parsed: ReturnType<typeof parseCheckoutSessionDetailsInput>;\n try {\n parsed = parseCheckoutSessionDetailsInput(input);\n } catch {\n invalidInput(\n \"Checkout Session details are invalid.\",\n \"update_session_details\"\n );\n }\n const paymentReference = parsed.paymentReference.trim();\n const context = {\n code: \"session_update_failed\" as const,\n message: \"Lockerverse returned invalid Checkout Session details.\",\n operation: \"update_session_details\" as const,\n };\n try {\n const body = {\n ...(parsed.customFieldAnswers\n ? { customFieldAnswers: parsed.customFieldAnswers }\n : {}),\n email: parsed.email.trim().toLowerCase(),\n ...(parsed.memberId?.trim()\n ? { memberId: parsed.memberId.trim() }\n : {}),\n ...(parsed.merchSize ? { merchSize: parsed.merchSize } : {}),\n ...(parsed.phone?.trim() ? { phone: parsed.phone.trim() } : {}),\n };\n const response = await requestJson(\n `${sessionUrl}/${encodeURIComponent(paymentReference)}/details`,\n {\n body: JSON.stringify(body),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"PATCH\",\n },\n parseCheckoutSessionDetails,\n { ...context, report: false },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to save the Lockerverse Checkout Session details (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== paymentReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n async updateSessionDiscount(input) {\n let parsed: ReturnType<typeof parseCheckoutSessionDiscountInput>;\n try {\n parsed = parseCheckoutSessionDiscountInput(input);\n } catch {\n invalidInput(\n \"Checkout Session discount input is invalid.\",\n \"update_session_discount\"\n );\n }\n const paymentReference = parsed.paymentReference.trim();\n const promoCode = parsed.promoCode?.trim();\n const context = {\n code: \"session_update_failed\" as const,\n message: \"Lockerverse returned an invalid Checkout Session update.\",\n operation: \"update_session_discount\" as const,\n };\n try {\n const response = await requestJson(\n `${sessionUrl}/${encodeURIComponent(paymentReference)}/discount`,\n {\n body: JSON.stringify(promoCode ? { promoCode } : {}),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"PATCH\",\n },\n parseCheckoutSessionDiscount,\n {\n ...context,\n message:\n \"Unable to update the Lockerverse Checkout Session because the request failed.\",\n report: false,\n },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to update the Lockerverse Checkout Session (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== paymentReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n async updateSessionPricing(input) {\n let parsed: ReturnType<typeof parseCheckoutSessionPricingInput>;\n try {\n parsed = parseCheckoutSessionPricingInput(input);\n } catch {\n invalidInput(\n \"Checkout Session pricing input is invalid.\",\n \"update_session_pricing\"\n );\n }\n const paymentReference = parsed.paymentReference.trim();\n const context = {\n code: \"session_update_failed\" as const,\n message: \"Lockerverse returned invalid Checkout Session pricing.\",\n operation: \"update_session_pricing\" as const,\n };\n try {\n const response = await requestJson(\n `${sessionUrl}/${encodeURIComponent(paymentReference)}/pricing`,\n {\n body: JSON.stringify({\n includeServiceFee: parsed.includeServiceFee,\n tipCents: parsed.tipCents,\n }),\n headers: { \"Content-Type\": \"application/json\" },\n method: \"PATCH\",\n },\n parseCheckoutSessionPricing,\n { ...context, report: false },\n { ...context, report: false }\n );\n if (!response.ok) {\n throw new LockerverseSdkError({\n ...context,\n message: `Unable to update Lockerverse Checkout Session pricing (${response.response.status}).`,\n reportable: response.response.status >= 500,\n status: response.response.status,\n });\n }\n if (response.value.paymentReference !== paymentReference) {\n throw new LockerverseSdkError({ ...context, reportable: true });\n }\n return deepFreeze({ ...response.value });\n } catch (error) {\n failOperation(error, context);\n }\n },\n };\n}\n"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -109,10 +109,10 @@ type LockerversePaymentResult = {
109
109
  status: string | null;
110
110
  };
111
111
  type LockerverseCheckoutItem = {
112
- productId: string;
112
+ productSlug: string;
113
113
  quantity: number;
114
114
  } | {
115
- productId: string;
115
+ productSlug: string;
116
116
  amountCents: number;
117
117
  };
118
118
  type LockerverseCreateCheckoutSessionInput = {
@@ -125,6 +125,7 @@ type LockerverseCreateCheckoutSessionInput = {
125
125
  tipCents?: number;
126
126
  };
127
127
  type LockerverseCheckoutSession = {
128
+ catalog: LockerverseCatalog;
128
129
  checkoutId: string;
129
130
  clientSecret: string;
130
131
  connectedAccountId: string | null;
@@ -167,6 +168,7 @@ type CreateLockerverseWidgetOptions = CreateLockerverseWidgetBaseOptions & ({
167
168
  environment?: "production";
168
169
  });
169
170
  type LockerverseCheckoutClient = {
171
+ readonly stripePublishableKey: string;
170
172
  createSession: (input: LockerverseCreateCheckoutSessionInput) => Promise<LockerverseCheckoutSession>;
171
173
  getPaymentStatus: (paymentReference: string) => Promise<LockerversePaymentResult>;
172
174
  load: () => Promise<LockerverseCatalog>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";KAEY;KACA;cAEC;KAED;EACV;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV,WAAW;EACX,SAAS;EACT,eAAe;EACf,UAAU;EACV,QAAQ;;KAGE;EACV;EACA;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU;EAAiC;EAAY;;KAEpD;EACH;EACA;EACA;;KAGU,6BAA6B;EACvC;;KAGU,qCAAqC;EAC/C,SAAS;EACT;;KAGU,oCAAoC;EAC9C,SAAS;EACT;;KAGU,yBACR,6BACA,qCACA;KAEQ,kCACV,cAAc,0BACZ,cAAc;KAEN,6BACV,cAAc,yBAAyB,0BACrC,cAAc;EACZ,SAAS;EAAa,OAAO,kCAAkC;;KAGzD;EACV,cAAc;EACd;EACA,QAAQ;EACR;EACA;EACA;EACA;;KAGU;KASA;cAUC,4BAA4B;WAC9B,MAAM;WACN,WAAW;WACX;WACA;WACA;WACA;EAEG,cACV,MACA,SACA,WACA,YACA,qBACA;IAEA,MAAM;IACN;IACA,WAAW;IACX;IACA;IACA;;;KAaQ;KAMA;EACV;EACA;EACA,gBAAgB;EAChB;EACA;EACA;;KAGU;EACN;EAAmB;;EACnB;EAAmB;;KAEb;EACV;EACA;EACA,OAAO;EACP,WAAW;EACX;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;;KAGU;EACV,qBAAqB;EACrB;EACA;EACA;EACA;EACA;;KAGG;EACH;EACA,eAAe,WAAW;EAC1B,WAAW,OAAO;EAClB;EACA;EACA;;KAGU,iCACV;EAGQ;EACA,aAAa;;EAGb;EACA;;KAIE;EACV,gBACE,OAAO,0CACJ,QAAQ;EACb,mBACE,6BACG,QAAQ;EACb,YAAY,QAAQ;EACpB,wBAAwB;IACtB;IACA;QACI,QAAQ;EACd,uBACE,OAAO,2CACJ;IAAU;IAA0B;;EACzC,uBAAuB;IACrB;IACA;IACA;QACI,QAAQ"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";KAEY;KACA;cAEC;KAED;EACV;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV,WAAW;EACX,SAAS;EACT,eAAe;EACf,UAAU;EACV,QAAQ;;KAGE;EACV;EACA;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU;EAAiC;EAAY;;KAEpD;EACH;EACA;EACA;;KAGU,6BAA6B;EACvC;;KAGU,qCAAqC;EAC/C,SAAS;EACT;;KAGU,oCAAoC;EAC9C,SAAS;EACT;;KAGU,yBACR,6BACA,qCACA;KAEQ,kCACV,cAAc,0BACZ,cAAc;KAEN,6BACV,cAAc,yBAAyB,0BACrC,cAAc;EACZ,SAAS;EAAa,OAAO,kCAAkC;;KAGzD;EACV,cAAc;EACd;EACA,QAAQ;EACR;EACA;EACA;EACA;;KAGU;KASA;cAUC,4BAA4B;WAC9B,MAAM;WACN,WAAW;WACX;WACA;WACA;WACA;EAEG,cACV,MACA,SACA,WACA,YACA,qBACA;IAEA,MAAM;IACN;IACA,WAAW;IACX;IACA;IACA;;;KAaQ;KAMA;EACV;EACA;EACA,gBAAgB;EAChB;EACA;EACA;;KAGU;EACN;EAAqB;;EACrB;EAAqB;;KAEf;EACV;EACA;EACA,OAAO;EACP,WAAW;EACX;EACA;EACA;;KAGU;EACV,SAAS;EACT;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;;KAGU;EACV,qBAAqB;EACrB;EACA;EACA;EACA;EACA;;KAGG;EACH;EACA,eAAe,WAAW;EAC1B,WAAW,OAAO;EAClB;EACA;EACA;;KAGU,iCACV;EAGQ;EACA,aAAa;;EAGb;EACA;;KAIE;WACD;EACT,gBACE,OAAO,0CACJ,QAAQ;EACb,mBACE,6BACG,QAAQ;EACb,YAAY,QAAQ;EACpB,wBAAwB;IACtB;IACA;QACI,QAAQ;EACd,uBACE,OAAO,2CACJ;IAAU;IAA0B;;EACzC,uBAAuB;IACrB;IACA;IACA;QACI,QAAQ"}
package/dist/types.js CHANGED
@@ -1,2 +1,2 @@
1
- const e=`0.2.27`;var t=class extends Error{code;operation;reportable;recoveryRecommended;sdkVersion;status;constructor({code:t,message:n,operation:r,reportable:i,recoveryRecommended:a=!1,status:o}){super(n),this.name=`LockerverseSdkError`,this.code=t,this.operation=r,this.reportable=i,this.recoveryRecommended=a,this.sdkVersion=e,this.status=o}};export{t as n,e as t};
1
+ const e=`0.2.31`;var t=class extends Error{code;operation;reportable;recoveryRecommended;sdkVersion;status;constructor({code:t,message:n,operation:r,reportable:i,recoveryRecommended:a=!1,status:o}){super(n),this.name=`LockerverseSdkError`,this.code=t,this.operation=r,this.reportable=i,this.recoveryRecommended=a,this.sdkVersion=e,this.status=o}};export{t as n,e as t};
2
2
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["packageMetadata.version"],"sources":["../package.json","../src/types.ts"],"sourcesContent":["","import packageMetadata from \"../package.json\" with { type: \"json\" };\n\nexport type LockerversePaymentOption = \"one-time\" | \"monthly\" | \"annually\";\nexport type LockerverseEnvironment = \"development\" | \"production\";\n\nexport const LOCKERVERSE_SDK_VERSION = packageMetadata.version;\n\nexport type LockerverseProduct = {\n id: string;\n listingId: string;\n slug: string;\n name: string;\n description: string | null;\n pricingMode: \"fixed\" | \"custom\";\n paymentOption: LockerversePaymentOption;\n amountCents: number | null;\n minimumAmountCents: number | null;\n minimumQuantity: number | null;\n maximumQuantity: number | null;\n inventoryQuantity: number | null;\n acceptsDiscounts: boolean;\n};\n\nexport type LockerverseCatalog = {\n community: LockerverseCommunityBranding | null;\n payment: LockerversePaymentConfiguration;\n pricingPolicy: LockerverseCheckoutPricingPolicy;\n products: LockerverseProduct[];\n widget: LockerverseWidgetConfiguration;\n};\n\nexport type LockerverseCommunityBranding = {\n accentColor: string | null;\n imageUrl: string | null;\n name: string;\n};\n\nexport type LockerverseCheckoutPricingPolicy = {\n currency: \"usd\";\n serviceFeeRateBasisPoints: number;\n};\n\nexport type LockerversePaymentConfiguration = {\n currency: \"usd\";\n publishableKey: string;\n};\n\nexport type LockerverseWidgetFields = {\n memberId: boolean;\n merchSize: boolean;\n phone: boolean;\n promoCode: boolean;\n serviceFee: boolean;\n shipping: boolean;\n tipping: boolean;\n};\n\nexport type LockerverseCustomFieldOption = { id: string; label: string };\n\ntype LockerverseCustomFieldBase = {\n id: string;\n label: string;\n required: boolean;\n};\n\nexport type LockerverseTextCustomField = LockerverseCustomFieldBase & {\n type: \"text\" | \"textarea\";\n};\n\nexport type LockerverseSingleOptionCustomField = LockerverseCustomFieldBase & {\n options: LockerverseCustomFieldOption[];\n type: \"radio\" | \"select\";\n};\n\nexport type LockerverseMultiOptionCustomField = LockerverseCustomFieldBase & {\n options: LockerverseCustomFieldOption[];\n type: \"checkboxes\" | \"multi_select\";\n};\n\nexport type LockerverseCustomField =\n | LockerverseTextCustomField\n | LockerverseSingleOptionCustomField\n | LockerverseMultiOptionCustomField;\n\nexport type LockerverseCustomFieldAnswerValue<\n Field extends LockerverseCustomField,\n> = Field extends LockerverseMultiOptionCustomField ? string[] : string;\n\nexport type LockerverseCustomFieldAnswer<\n Field extends LockerverseCustomField = LockerverseCustomField,\n> = Field extends LockerverseCustomField\n ? { fieldId: Field[\"id\"]; value: LockerverseCustomFieldAnswerValue<Field> }\n : never;\n\nexport type LockerverseWidgetConfiguration = {\n customFields: LockerverseCustomField[];\n description: string | null;\n fields: LockerverseWidgetFields;\n id: string;\n name: string;\n showCommunityBranding: boolean;\n title: string | null;\n};\n\nexport type LockerverseSdkErrorCode =\n | \"widget_load_failed\"\n | \"signup_load_failed\"\n | \"signup_submit_failed\"\n | \"payment_status_failed\"\n | \"session_create_failed\"\n | \"session_update_failed\"\n | \"invalid_selection\";\n\nexport type LockerverseSdkOperation =\n | \"load_widget\"\n | \"load_signup\"\n | \"submit_signup\"\n | \"get_payment_status\"\n | \"create_session\"\n | \"update_session_details\"\n | \"update_session_discount\"\n | \"update_session_pricing\";\n\nexport class LockerverseSdkError extends Error {\n readonly code: LockerverseSdkErrorCode;\n readonly operation: LockerverseSdkOperation;\n readonly reportable: boolean;\n readonly recoveryRecommended: boolean;\n readonly sdkVersion: string;\n readonly status: number | undefined;\n\n constructor({\n code,\n message,\n operation,\n reportable,\n recoveryRecommended = false,\n status,\n }: {\n code: LockerverseSdkErrorCode;\n message: string;\n operation: LockerverseSdkOperation;\n reportable: boolean;\n recoveryRecommended?: boolean;\n status?: number;\n }) {\n super(message);\n this.name = \"LockerverseSdkError\";\n this.code = code;\n this.operation = operation;\n this.reportable = reportable;\n this.recoveryRecommended = recoveryRecommended;\n this.sdkVersion = LOCKERVERSE_SDK_VERSION;\n this.status = status;\n }\n}\n\nexport type LockerversePaymentStatus =\n | \"action_required\"\n | \"failed\"\n | \"pending\"\n | \"success\";\n\nexport type LockerversePaymentResult = {\n checkoutId: string;\n paymentReference: string;\n checkoutStatus: LockerversePaymentStatus;\n clientSecret: string | null;\n requiresAction: boolean;\n status: string | null;\n};\n\nexport type LockerverseCheckoutItem =\n | { productId: string; quantity: number }\n | { productId: string; amountCents: number };\n\nexport type LockerverseCreateCheckoutSessionInput = {\n email?: string;\n includeServiceFee?: boolean;\n items: LockerverseCheckoutItem[];\n metadata?: Record<string, string>;\n requestKey: string;\n returnUrl: string;\n tipCents?: number;\n};\n\nexport type LockerverseCheckoutSession = {\n checkoutId: string;\n clientSecret: string;\n connectedAccountId: string | null;\n paymentReference: string;\n sessionId: string;\n};\n\nexport type LockerverseCheckoutSessionDiscount = {\n discountCents: number;\n paymentReference: string;\n totalCents: number;\n};\n\nexport type LockerverseCheckoutSessionPricing = {\n includeServiceFee: boolean;\n paymentReference: string;\n serviceFeeCents: number;\n tipCents: number;\n totalCents: number;\n};\n\nexport type LockerverseCheckoutSessionDetailsInput = {\n customFieldAnswers?: LockerverseCustomFieldAnswer[];\n email: string;\n memberId?: string;\n merchSize?: \"XS\" | \"S\" | \"M\" | \"L\" | \"XL\" | \"XXL\" | \"XXXL\";\n paymentReference: string;\n phone?: string;\n};\n\ntype CreateLockerverseWidgetBaseOptions = {\n communitySlug: string;\n fetch?: typeof globalThis.fetch;\n onError?: (error: LockerverseSdkError) => void;\n requestTimeoutMs?: number;\n sentryDsn?: string | null;\n widgetSlug: string;\n};\n\nexport type CreateLockerverseWidgetOptions =\n CreateLockerverseWidgetBaseOptions &\n (\n | {\n apiBaseUrl: string;\n environment: LockerverseEnvironment;\n }\n | {\n apiBaseUrl?: undefined;\n environment?: \"production\";\n }\n );\n\nexport type LockerverseCheckoutClient = {\n createSession: (\n input: LockerverseCreateCheckoutSessionInput\n ) => Promise<LockerverseCheckoutSession>;\n getPaymentStatus: (\n paymentReference: string\n ) => Promise<LockerversePaymentResult>;\n load: () => Promise<LockerverseCatalog>;\n updateSessionDiscount: (input: {\n paymentReference: string;\n promoCode?: string;\n }) => Promise<LockerverseCheckoutSessionDiscount>;\n updateSessionDetails: (\n input: LockerverseCheckoutSessionDetailsInput\n ) => Promise<{ paymentReference: string; totalCents: number }>;\n updateSessionPricing: (input: {\n includeServiceFee: boolean;\n paymentReference: string;\n tipCents: number;\n }) => Promise<LockerverseCheckoutSessionPricing>;\n};\n"],"mappings":"ACKA,MAAa,EAA0BA,SAsHvC,IAAa,EAAb,cAAyC,KAAM,CAC7C,KACA,UACA,WACA,oBACA,WACA,OAEA,YAAY,CACV,OACA,UACA,YACA,aACA,sBAAsB,GACtB,UAQC,CACD,MAAM,CAAO,EACb,KAAK,KAAO,sBACZ,KAAK,KAAO,EACZ,KAAK,UAAY,EACjB,KAAK,WAAa,EAClB,KAAK,oBAAsB,EAC3B,KAAK,WAAa,EAClB,KAAK,OAAS,CAChB,CACF"}
1
+ {"version":3,"file":"types.js","names":["packageMetadata.version"],"sources":["../package.json","../src/types.ts"],"sourcesContent":["","import packageMetadata from \"../package.json\" with { type: \"json\" };\n\nexport type LockerversePaymentOption = \"one-time\" | \"monthly\" | \"annually\";\nexport type LockerverseEnvironment = \"development\" | \"production\";\n\nexport const LOCKERVERSE_SDK_VERSION = packageMetadata.version;\n\nexport type LockerverseProduct = {\n id: string;\n listingId: string;\n slug: string;\n name: string;\n description: string | null;\n pricingMode: \"fixed\" | \"custom\";\n paymentOption: LockerversePaymentOption;\n amountCents: number | null;\n minimumAmountCents: number | null;\n minimumQuantity: number | null;\n maximumQuantity: number | null;\n inventoryQuantity: number | null;\n acceptsDiscounts: boolean;\n};\n\nexport type LockerverseCatalog = {\n community: LockerverseCommunityBranding | null;\n payment: LockerversePaymentConfiguration;\n pricingPolicy: LockerverseCheckoutPricingPolicy;\n products: LockerverseProduct[];\n widget: LockerverseWidgetConfiguration;\n};\n\nexport type LockerverseCommunityBranding = {\n accentColor: string | null;\n imageUrl: string | null;\n name: string;\n};\n\nexport type LockerverseCheckoutPricingPolicy = {\n currency: \"usd\";\n serviceFeeRateBasisPoints: number;\n};\n\nexport type LockerversePaymentConfiguration = {\n currency: \"usd\";\n publishableKey: string;\n};\n\nexport type LockerverseWidgetFields = {\n memberId: boolean;\n merchSize: boolean;\n phone: boolean;\n promoCode: boolean;\n serviceFee: boolean;\n shipping: boolean;\n tipping: boolean;\n};\n\nexport type LockerverseCustomFieldOption = { id: string; label: string };\n\ntype LockerverseCustomFieldBase = {\n id: string;\n label: string;\n required: boolean;\n};\n\nexport type LockerverseTextCustomField = LockerverseCustomFieldBase & {\n type: \"text\" | \"textarea\";\n};\n\nexport type LockerverseSingleOptionCustomField = LockerverseCustomFieldBase & {\n options: LockerverseCustomFieldOption[];\n type: \"radio\" | \"select\";\n};\n\nexport type LockerverseMultiOptionCustomField = LockerverseCustomFieldBase & {\n options: LockerverseCustomFieldOption[];\n type: \"checkboxes\" | \"multi_select\";\n};\n\nexport type LockerverseCustomField =\n | LockerverseTextCustomField\n | LockerverseSingleOptionCustomField\n | LockerverseMultiOptionCustomField;\n\nexport type LockerverseCustomFieldAnswerValue<\n Field extends LockerverseCustomField,\n> = Field extends LockerverseMultiOptionCustomField ? string[] : string;\n\nexport type LockerverseCustomFieldAnswer<\n Field extends LockerverseCustomField = LockerverseCustomField,\n> = Field extends LockerverseCustomField\n ? { fieldId: Field[\"id\"]; value: LockerverseCustomFieldAnswerValue<Field> }\n : never;\n\nexport type LockerverseWidgetConfiguration = {\n customFields: LockerverseCustomField[];\n description: string | null;\n fields: LockerverseWidgetFields;\n id: string;\n name: string;\n showCommunityBranding: boolean;\n title: string | null;\n};\n\nexport type LockerverseSdkErrorCode =\n | \"widget_load_failed\"\n | \"signup_load_failed\"\n | \"signup_submit_failed\"\n | \"payment_status_failed\"\n | \"session_create_failed\"\n | \"session_update_failed\"\n | \"invalid_selection\";\n\nexport type LockerverseSdkOperation =\n | \"load_widget\"\n | \"load_signup\"\n | \"submit_signup\"\n | \"get_payment_status\"\n | \"create_session\"\n | \"update_session_details\"\n | \"update_session_discount\"\n | \"update_session_pricing\";\n\nexport class LockerverseSdkError extends Error {\n readonly code: LockerverseSdkErrorCode;\n readonly operation: LockerverseSdkOperation;\n readonly reportable: boolean;\n readonly recoveryRecommended: boolean;\n readonly sdkVersion: string;\n readonly status: number | undefined;\n\n constructor({\n code,\n message,\n operation,\n reportable,\n recoveryRecommended = false,\n status,\n }: {\n code: LockerverseSdkErrorCode;\n message: string;\n operation: LockerverseSdkOperation;\n reportable: boolean;\n recoveryRecommended?: boolean;\n status?: number;\n }) {\n super(message);\n this.name = \"LockerverseSdkError\";\n this.code = code;\n this.operation = operation;\n this.reportable = reportable;\n this.recoveryRecommended = recoveryRecommended;\n this.sdkVersion = LOCKERVERSE_SDK_VERSION;\n this.status = status;\n }\n}\n\nexport type LockerversePaymentStatus =\n | \"action_required\"\n | \"failed\"\n | \"pending\"\n | \"success\";\n\nexport type LockerversePaymentResult = {\n checkoutId: string;\n paymentReference: string;\n checkoutStatus: LockerversePaymentStatus;\n clientSecret: string | null;\n requiresAction: boolean;\n status: string | null;\n};\n\nexport type LockerverseCheckoutItem =\n | { productSlug: string; quantity: number }\n | { productSlug: string; amountCents: number };\n\nexport type LockerverseCreateCheckoutSessionInput = {\n email?: string;\n includeServiceFee?: boolean;\n items: LockerverseCheckoutItem[];\n metadata?: Record<string, string>;\n requestKey: string;\n returnUrl: string;\n tipCents?: number;\n};\n\nexport type LockerverseCheckoutSession = {\n catalog: LockerverseCatalog;\n checkoutId: string;\n clientSecret: string;\n connectedAccountId: string | null;\n paymentReference: string;\n sessionId: string;\n};\n\nexport type LockerverseCheckoutSessionDiscount = {\n discountCents: number;\n paymentReference: string;\n totalCents: number;\n};\n\nexport type LockerverseCheckoutSessionPricing = {\n includeServiceFee: boolean;\n paymentReference: string;\n serviceFeeCents: number;\n tipCents: number;\n totalCents: number;\n};\n\nexport type LockerverseCheckoutSessionDetailsInput = {\n customFieldAnswers?: LockerverseCustomFieldAnswer[];\n email: string;\n memberId?: string;\n merchSize?: \"XS\" | \"S\" | \"M\" | \"L\" | \"XL\" | \"XXL\" | \"XXXL\";\n paymentReference: string;\n phone?: string;\n};\n\ntype CreateLockerverseWidgetBaseOptions = {\n communitySlug: string;\n fetch?: typeof globalThis.fetch;\n onError?: (error: LockerverseSdkError) => void;\n requestTimeoutMs?: number;\n sentryDsn?: string | null;\n widgetSlug: string;\n};\n\nexport type CreateLockerverseWidgetOptions =\n CreateLockerverseWidgetBaseOptions &\n (\n | {\n apiBaseUrl: string;\n environment: LockerverseEnvironment;\n }\n | {\n apiBaseUrl?: undefined;\n environment?: \"production\";\n }\n );\n\nexport type LockerverseCheckoutClient = {\n readonly stripePublishableKey: string;\n createSession: (\n input: LockerverseCreateCheckoutSessionInput\n ) => Promise<LockerverseCheckoutSession>;\n getPaymentStatus: (\n paymentReference: string\n ) => Promise<LockerversePaymentResult>;\n load: () => Promise<LockerverseCatalog>;\n updateSessionDiscount: (input: {\n paymentReference: string;\n promoCode?: string;\n }) => Promise<LockerverseCheckoutSessionDiscount>;\n updateSessionDetails: (\n input: LockerverseCheckoutSessionDetailsInput\n ) => Promise<{ paymentReference: string; totalCents: number }>;\n updateSessionPricing: (input: {\n includeServiceFee: boolean;\n paymentReference: string;\n tipCents: number;\n }) => Promise<LockerverseCheckoutSessionPricing>;\n};\n"],"mappings":"ACKA,MAAa,EAA0BA,SAsHvC,IAAa,EAAb,cAAyC,KAAM,CAC7C,KACA,UACA,WACA,oBACA,WACA,OAEA,YAAY,CACV,OACA,UACA,YACA,aACA,sBAAsB,GACtB,UAQC,CACD,MAAM,CAAO,EACb,KAAK,KAAO,sBACZ,KAAK,KAAO,EACZ,KAAK,UAAY,EACjB,KAAK,WAAa,EAClB,KAAK,oBAAsB,EAC3B,KAAK,WAAa,EAClB,KAAK,OAAS,CAChB,CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lockerverse/sdk",
3
- "version": "0.2.27",
3
+ "version": "0.2.31",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Lockerverse/lockerverse-sdk.git",