commerce-kit 0.0.17 → 0.0.19

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.
@@ -0,0 +1,263 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const configSchema: z.ZodObject<{
4
+ hero: z.ZodObject<{
5
+ show: z.ZodBoolean;
6
+ title: z.ZodString;
7
+ description: z.ZodString;
8
+ button: z.ZodObject<{
9
+ label: z.ZodString;
10
+ path: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ path: string;
13
+ label: string;
14
+ }, {
15
+ path: string;
16
+ label: string;
17
+ }>;
18
+ image: z.ZodObject<{
19
+ src: z.ZodString;
20
+ alt: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ src: string;
23
+ alt: string;
24
+ }, {
25
+ src: string;
26
+ alt: string;
27
+ }>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ show: boolean;
30
+ title: string;
31
+ description: string;
32
+ button: {
33
+ path: string;
34
+ label: string;
35
+ };
36
+ image: {
37
+ src: string;
38
+ alt: string;
39
+ };
40
+ }, {
41
+ show: boolean;
42
+ title: string;
43
+ description: string;
44
+ button: {
45
+ path: string;
46
+ label: string;
47
+ };
48
+ image: {
49
+ src: string;
50
+ alt: string;
51
+ };
52
+ }>;
53
+ categorySection: z.ZodObject<{
54
+ show: z.ZodBoolean;
55
+ }, "strip", z.ZodTypeAny, {
56
+ show: boolean;
57
+ }, {
58
+ show: boolean;
59
+ }>;
60
+ nav: z.ZodObject<{
61
+ title: z.ZodString;
62
+ searchBar: z.ZodObject<{
63
+ show: z.ZodBoolean;
64
+ }, "strip", z.ZodTypeAny, {
65
+ show: boolean;
66
+ }, {
67
+ show: boolean;
68
+ }>;
69
+ links: z.ZodArray<z.ZodObject<{
70
+ label: z.ZodString;
71
+ href: z.ZodString;
72
+ }, "strip", z.ZodTypeAny, {
73
+ label: string;
74
+ href: string;
75
+ }, {
76
+ label: string;
77
+ href: string;
78
+ }>, "many">;
79
+ }, "strip", z.ZodTypeAny, {
80
+ title: string;
81
+ searchBar: {
82
+ show: boolean;
83
+ };
84
+ links: {
85
+ label: string;
86
+ href: string;
87
+ }[];
88
+ }, {
89
+ title: string;
90
+ searchBar: {
91
+ show: boolean;
92
+ };
93
+ links: {
94
+ label: string;
95
+ href: string;
96
+ }[];
97
+ }>;
98
+ footer: z.ZodObject<{
99
+ name: z.ZodString;
100
+ tagline: z.ZodString;
101
+ newsletter: z.ZodObject<{
102
+ show: z.ZodBoolean;
103
+ }, "strip", z.ZodTypeAny, {
104
+ show: boolean;
105
+ }, {
106
+ show: boolean;
107
+ }>;
108
+ credits: z.ZodBoolean;
109
+ sections: z.ZodArray<z.ZodObject<{
110
+ header: z.ZodString;
111
+ links: z.ZodArray<z.ZodObject<{
112
+ label: z.ZodString;
113
+ href: z.ZodString;
114
+ }, "strip", z.ZodTypeAny, {
115
+ label: string;
116
+ href: string;
117
+ }, {
118
+ label: string;
119
+ href: string;
120
+ }>, "many">;
121
+ }, "strip", z.ZodTypeAny, {
122
+ links: {
123
+ label: string;
124
+ href: string;
125
+ }[];
126
+ header: string;
127
+ }, {
128
+ links: {
129
+ label: string;
130
+ href: string;
131
+ }[];
132
+ header: string;
133
+ }>, "many">;
134
+ }, "strip", z.ZodTypeAny, {
135
+ name: string;
136
+ tagline: string;
137
+ newsletter: {
138
+ show: boolean;
139
+ };
140
+ credits: boolean;
141
+ sections: {
142
+ links: {
143
+ label: string;
144
+ href: string;
145
+ }[];
146
+ header: string;
147
+ }[];
148
+ }, {
149
+ name: string;
150
+ tagline: string;
151
+ newsletter: {
152
+ show: boolean;
153
+ };
154
+ credits: boolean;
155
+ sections: {
156
+ links: {
157
+ label: string;
158
+ href: string;
159
+ }[];
160
+ header: string;
161
+ }[];
162
+ }>;
163
+ pages: z.ZodRecord<z.ZodString, z.ZodObject<{
164
+ content: z.ZodString;
165
+ }, "strip", z.ZodTypeAny, {
166
+ content: string;
167
+ }, {
168
+ content: string;
169
+ }>>;
170
+ }, "strip", z.ZodTypeAny, {
171
+ hero: {
172
+ show: boolean;
173
+ title: string;
174
+ description: string;
175
+ button: {
176
+ path: string;
177
+ label: string;
178
+ };
179
+ image: {
180
+ src: string;
181
+ alt: string;
182
+ };
183
+ };
184
+ categorySection: {
185
+ show: boolean;
186
+ };
187
+ nav: {
188
+ title: string;
189
+ searchBar: {
190
+ show: boolean;
191
+ };
192
+ links: {
193
+ label: string;
194
+ href: string;
195
+ }[];
196
+ };
197
+ footer: {
198
+ name: string;
199
+ tagline: string;
200
+ newsletter: {
201
+ show: boolean;
202
+ };
203
+ credits: boolean;
204
+ sections: {
205
+ links: {
206
+ label: string;
207
+ href: string;
208
+ }[];
209
+ header: string;
210
+ }[];
211
+ };
212
+ pages: Record<string, {
213
+ content: string;
214
+ }>;
215
+ }, {
216
+ hero: {
217
+ show: boolean;
218
+ title: string;
219
+ description: string;
220
+ button: {
221
+ path: string;
222
+ label: string;
223
+ };
224
+ image: {
225
+ src: string;
226
+ alt: string;
227
+ };
228
+ };
229
+ categorySection: {
230
+ show: boolean;
231
+ };
232
+ nav: {
233
+ title: string;
234
+ searchBar: {
235
+ show: boolean;
236
+ };
237
+ links: {
238
+ label: string;
239
+ href: string;
240
+ }[];
241
+ };
242
+ footer: {
243
+ name: string;
244
+ tagline: string;
245
+ newsletter: {
246
+ show: boolean;
247
+ };
248
+ credits: boolean;
249
+ sections: {
250
+ links: {
251
+ label: string;
252
+ href: string;
253
+ }[];
254
+ header: string;
255
+ }[];
256
+ };
257
+ pages: Record<string, {
258
+ content: string;
259
+ }>;
260
+ }>;
261
+ type Config = z.infer<typeof configSchema>;
262
+
263
+ export { type Config, configSchema };
@@ -0,0 +1 @@
1
+ import{z as t}from"zod";var o=t.object({hero:t.object({show:t.boolean(),title:t.string(),description:t.string(),button:t.object({label:t.string(),path:t.string()}),image:t.object({src:t.string(),alt:t.string()})}),categorySection:t.object({show:t.boolean()}),nav:t.object({title:t.string(),searchBar:t.object({show:t.boolean()}),links:t.array(t.object({label:t.string(),href:t.string()}))}),footer:t.object({name:t.string(),tagline:t.string(),newsletter:t.object({show:t.boolean()}),credits:t.boolean(),sections:t.array(t.object({header:t.string(),links:t.array(t.object({label:t.string(),href:t.string()}))}))}),pages:t.record(t.string(),t.object({content:t.string()}))});export{o as configSchema};
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CartMetadata, MappedCart } from './internal.js';
2
2
  export { MappedProduct, MappedShippingRate } from './internal.js';
3
- import { Config } from './yns.js';
3
+ import { Config } from './browser.js';
4
4
  import Stripe from 'stripe';
5
5
  import { z, TypeOf } from 'zod';
6
6
 
package/dist/index.js CHANGED
@@ -1,10 +1,35 @@
1
- import"server-only";import"server-only";import{z as u}from"zod";function S(t,e){if(!t)throw new Error(e)}var z=async t=>{try{return[null,await t]}catch(e){return[e instanceof Error?e:new Error(String(e)),null]}},$=t=>{if(t==null)return 0;if(typeof t=="number")return t;let e=Number.parseInt(t,10);return Number.isNaN(e)?0:e},U=t=>{if(t==null)return null;try{return JSON.parse(t)}catch{return null}};var dt=t=>t.toString().replace(/\\/g,"\\\\").replace(/"/g,'\\"'),D=t=>Object.entries(t).map(([e,n])=>`${e}:"${dt(n)}"`).join(" AND ").trim();function M(t){return t.toSorted((e,n)=>{let a=Number(e.metadata.order),o=Number(n.metadata.order);return Number.isNaN(a)&&Number.isNaN(o)||a===o?n.updated-e.updated:Number.isNaN(a)?1:Number.isNaN(o)?-1:a-o})}var pt=u.object({category:u.string().optional(),order:u.coerce.number().optional(),slug:u.string(),variant:u.string().optional()});function q({default_price:t,marketing_features:e,...n}){return S(t,"Product must have a default price"),S(typeof t=="object","Product default price must be an object"),{...n,default_price:t,marketing_features:e.map(a=>a.name).filter(Boolean),metadata:pt.parse(n.metadata)}}function W(t){return t.data.map(q)}function H(t){return t}function J(t){return t.data.map(H)}function Y(t){return t.filter((e,n,a)=>n===a.findIndex(o=>o.metadata.slug===e.metadata.slug))}var j=t=>!t.deleted&&t.active,O=u.object({shippingRateId:u.string().optional(),taxCalculationId:u.string().optional(),taxCalculationExp:u.string().optional(),taxId:u.string().optional(),"billingAddress.city":u.string().optional(),"billingAddress.country":u.string().optional(),"billingAddress.line1":u.string().optional(),"billingAddress.line2":u.string().optional(),"billingAddress.name":u.string().optional(),"billingAddress.postalCode":u.string().optional(),"billingAddress.state":u.string().optional(),netAmount:u.string().optional(),taxBreakdown0:u.string().optional(),taxBreakdown1:u.string().optional(),taxBreakdown2:u.string().optional(),taxBreakdown3:u.string().optional(),taxBreakdown4:u.string().optional(),taxBreakdown5:u.string().optional()}).and(u.record(u.string())),X=u.object({taxType:u.string(),taxPercentage:u.string(),taxAmount:u.number()});function Q(t){let e=t.payment_method;S(typeof e!="string","Payment method is missing from cart");let n=O.parse(t.metadata),a=Object.entries(n).filter(([o])=>o.startsWith("taxBreakdown")).map(([o,r])=>{let i=X.safeParse(U(String(r)));return i.success?i.data:null}).filter(Boolean);return{...t,metadata:n,payment_method:e,taxBreakdown:a}}function Z({payment_method:t,latest_charge:e,...n}){S(typeof t=="object","Payment method is missing from order"),S(typeof e=="object","Latest charge is missing from order");let a=O.parse(n.metadata),o=Object.entries(a).filter(([r])=>r.startsWith("taxBreakdown")).map(([r,i])=>{let c=X.safeParse(U(String(i)));return c.success?c.data:null}).filter(Boolean);return{...n,payment_method:t,latest_charge:e,taxBreakdown:o,metadata:a}}import"server-only";import{revalidatePath as rt,revalidateTag as T}from"next/cache";import R from"stripe";import{z as b}from"zod";import"server-only";import{z as s}from"zod";var Mt=s.object({hero:s.object({show:s.boolean(),title:s.string(),description:s.string(),button:s.object({label:s.string(),path:s.string()}),image:s.object({src:s.string(),alt:s.string()})}),categorySection:s.object({show:s.boolean()}),nav:s.object({title:s.string(),searchBar:s.object({show:s.boolean()}),links:s.array(s.object({label:s.string(),href:s.string()}))}),footer:s.object({name:s.string(),tagline:s.string(),newsletter:s.object({show:s.boolean()}),credits:s.boolean(),sections:s.array(s.object({header:s.string(),links:s.array(s.object({label:s.string(),href:s.string()}))}))})}),l=async()=>{let t={hero:{show:!0,title:"Discover our Curated Collection",description:"Explore our carefully selected products for your home and lifestyle.",button:{label:"Shop Now",path:"/"},image:{src:"https://files.stripe.com/links/MDB8YWNjdF8xT3BaeG5GSmNWbVh6bURsfGZsX3Rlc3RfaDVvWXowdU9ZbWlobUIyaHpNc1hCeDM200NBzvUjqP",alt:"Cup of coffee"}},categorySection:{show:!0},nav:{title:"Your Next Store",searchBar:{show:!0},links:[{label:"Home",href:"/"},{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},footer:{name:"Your Next Store",tagline:"Handcrafted with passion in California",newsletter:{show:!0},credits:!0,sections:[{header:"Products",links:[{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},{header:"Support",links:[{label:"Features",href:"https://yournextstore.com/#features"},{label:"Pricing",href:"https://yournextstore.com/#pricing"},{label:"Contact Us",href:"mailto:hi@yournextstore.com"}]}]}},e={stripeAccount:void 0,storeId:void 0,secretKey:void 0,config:t},n=await global?.__ynsFindStripeAccount?.();return n?{...n,config:n.config??t}:e};import"server-only";import et from"stripe";import"server-only";var lt=process.env.STRIPE_SECRET_KEY,tt=process.env.STRIPE_CURRENCY;if(!tt)throw new Error("Missing STRIPE_CURRENCY");var w={StripeSecretKey:lt,StripeCurrency:tt};var v={DEBUG:0,LOG:1,WARN:2,ERROR:3},ft="LOG",mt=process.env.LOG_LEVEL&&process.env.LOG_LEVEL in v?process.env.LOG_LEVEL:ft,I=v[mt],d={time(t){I>v.DEBUG||console.time(t)},timeEnd(t){I>v.DEBUG||console.timeEnd(t)},log(...t){I>v.LOG||console.log(...t)},dir(t,e){I>v.LOG||console.dir(t,e)},warn(...t){I>v.WARN||console.warn(...t)},error(...t){I>v.ERROR||console.error(...t)}};var gt=(t,e)=>!t||!e?t:[...t,`prefix-${e}`,...t.map(n=>`${e}-${n}`)],m=({tags:t,revalidate:e,cache:n,tagPrefix:a,secretKey:o})=>{let r=o??w.StripeSecretKey;if(!r)throw new Error("Missing `secretKey` parameter and `STRIPE_SECRET_KEY` env variable.");d.log(`Using Stripe secret key from ${o?"parameter":"env"}.`);let i=gt(t,a);return new et(r,{typescript:!0,apiVersion:"2024-06-20",httpClient:et.createFetchHttpClient((h,p)=>fetch(h,{...p,cache:n??p?.cache,next:{tags:i??p?.next?.tags,revalidate:e??p?.next?.revalidate}})),appInfo:{name:"Commerce SDK",version:"beta",url:"https://yournextstore.com",partner_id:"CONS-003378"}})};var _=t=>t.filter(Boolean),C={accountGetById:{tags:({accountId:t})=>_(["account",t&&`account-${t}`]),revalidate:()=>{}},cartGetById:{tags:({cartId:t})=>_(["cart",`cart-${t}`]),revalidate:()=>{}},createTaxCalculation:{tags:({cartId:t})=>_(["tax-calculations",`tax-calculations-${t}`]),revalidate:()=>{}},fileGetById:{tags:({fileId:t})=>_(["files",`file-${t}`]),revalidate:()=>{}},orderGetById:{tags:({orderId:t})=>_(["order",`order-${t}`]),revalidate:()=>{}},productBrowse:{tags:({category:t})=>_(["product",t&&`category-${t}`]),revalidate:()=>{}},productGetById:{tags:({productId:t})=>_(["product",`product-${t}`]),revalidate:()=>{}},productGetBySlug:{tags:({productSlug:t})=>_(["product",`product-${t}`]),revalidate:()=>{}},shippingBrowse:{tags:()=>_(["shipping"]),revalidate:()=>{}},shippingGetById:{tags:({shippingId:t})=>_(["shipping",`shipping-${t}`]),revalidate:()=>{}},taxDefaultGet:{tags:()=>_(["tax-settings"]),revalidate:()=>{}}};import{neon as yt}from"@neondatabase/serverless";var E;process.env.DATABASE_URL&&(E=yt(process.env.DATABASE_URL));var F=1e3;function de({productId:t,cartId:e}){return e?ht({cartId:e,productId:t,operation:"INCREASE",clearTaxCalculation:!0}):xt({productId:t})}async function ht({productId:t,cartId:e,operation:n,clearTaxCalculation:a}){let[o,r]=await Promise.all([G(t),st(e)]);if(!o)throw new Error(`Product not found: ${t}`);if(!r)throw new Error(`Cart not found: ${e}`);if(w.StripeCurrency.toLowerCase()!==o.default_price.currency.toLowerCase())throw new Error(`Product currency ${o.default_price.currency} does not match cart currency ${w.StripeCurrency}`);let i=r.cart.metadata??{},p=$(i[t])+(n==="INCREASE"?1:-1);p<=0?i[t]="":i[t]=p.toString();let y=bt(r)+(o.default_price.unit_amount??0);try{return await B({paymentIntentId:e,data:{metadata:i,amount:y||F},clearTaxCalculation:a})}catch(f){d.error(f)}finally{T(`cart-${e}`)}}async function L(t){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.cartGetById.tags({cartId:t}),cache:"force-cache"});try{let r=await o.paymentIntents.retrieve(t,{expand:["payment_method"]},{stripeAccount:e});if(ot.includes(r.status)){let i=Q(r);if(!i)return null;let c=await V(i.metadata),{metadata:{shippingRateId:h}}=i,p=h&&await k(h);return{cart:i,lines:c.map(({product:y,quantity:f})=>y?{product:y,quantity:f}:null).filter(Boolean),shippingRate:p||null}}}catch(r){if(d.error(r),r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function xt({productId:t}={}){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,cache:"no-cache"});try{let r=t?await G(t):null;return await o.paymentIntents.create({currency:w.StripeCurrency,amount:r?.default_price.unit_amount||F,automatic_payment_methods:{enabled:!0},metadata:{...r&&{[r.id]:"1"}}},{stripeAccount:e})}catch(r){throw d.error(r),r}}async function pe({cart:t,add:e}){if(!e)return t;let n=await G(e);if(!n)return d.warn(`Product not found: ${e}`),t;let o=(t?.lines.find(i=>i.product.id===e)?t.lines:[...t?.lines??[],{product:n,quantity:0}]).map(i=>i.product.id===e?{...i,quantity:i.quantity+1}:i),r=t?K(t)+(n.default_price.unit_amount??0):n.default_price.unit_amount??0;return{...t,cart:{...t?.cart,amount:r},lines:o}}async function le({cartId:t,productId:e,quantity:n}){let[a,o]=await Promise.all([at(e),L(t)]);if(!a)throw new Error(`Product not found: ${e}`);if(!o)throw new Error(`Cart not found: ${t}`);if(w.StripeCurrency?.toLowerCase()!==a.default_price.currency.toLowerCase())throw new Error(`Product currency ${a.default_price.currency} does not match cart currency ${w.StripeCurrency}`);let r=o.cart.metadata??{};n<=0?r[e]="":r[e]=n.toString();let i=K(o)+(a.default_price.unit_amount??0);try{return await B({paymentIntentId:t,data:{metadata:r,amount:i||F}})}catch(c){d.error(c)}finally{T(`cart-${t}`),rt("/cart"),rt("/cart-overlay")}}async function at(t){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.productGetById.tags({productId:t}),cache:"force-cache"});try{let r=await o.products.retrieve(t,{expand:["default_price"]},{stripeAccount:e});return q(r)}catch(r){if(r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function fe({slug:t}){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),r=await m({secretKey:a,tagPrefix:n,tags:C.productGetBySlug.tags({productSlug:t}),cache:"force-cache"}).products.search({query:D({active:!0,'metadata["slug"]':t}),expand:["data.default_price"]},{stripeAccount:e});if(r.data.length>1&&r.data.some(i=>!i.metadata.variant))throw new Error(`Multiple products found with the same slug (${t}) but no variant set.`);return M(W(r).filter(j))}async function wt(t){let{stripeAccount:e,storeId:n,secretKey:a}=await l();if(t.filter?.category){let o=t.filter?.category,i=await m({secretKey:a,tagPrefix:n,tags:C.productBrowse.tags({category:o}),cache:"force-cache"}).products.search({limit:100,query:D({active:!0,'metadata["category"]':o}),expand:["data.default_price"]},{stripeAccount:e});return M(Y(W(i)).filter(j).slice(t.offset,t.first))}else{let r=await m({secretKey:a,tagPrefix:n,tags:C.productBrowse.tags({}),cache:"force-cache"}).products.list({limit:100,active:!0,expand:["data.default_price"]},{stripeAccount:e});return M(Y(W(r)).filter(j).slice(t.offset,t.first))}}async function me(){let{stripeAccount:t,storeId:e,secretKey:n}=await l(),o=await m({secretKey:n,tagPrefix:e,tags:C.shippingBrowse.tags(),cache:"force-cache"}).shippingRates.list({active:!0},{stripeAccount:t});return J(o)}async function k(t){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.shippingGetById.tags({shippingId:t}),cache:"force-cache"});try{let r=await o.shippingRates.retrieve(t,{},{stripeAccount:e});return r}catch(r){if(d.error(r),r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function ge(){let e=(await wt({first:100})).map(a=>a.metadata.category).filter(Boolean),n=new Set(e);return Array.from(n)}async function ye(t){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.fileGetById.tags({fileId:t}),cache:"force-cache"});try{return await o.fileLinks.create({file:t},{stripeAccount:e})}catch(r){if(d.error(r),r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function he(){let{stripeAccount:t,storeId:e,secretKey:n}=await l(),a=m({secretKey:n,tagPrefix:e,tags:C.accountGetById.tags({}),cache:"force-cache"});try{let[o,r]=await z(a.accounts.retrieve({expand:["settings.branding.logo"]},{stripeAccount:t})),i=r?.settings?.branding.logo??null;return!i||typeof i=="string"?{account:r,logo:null}:{account:r,logo:i}}catch(o){if(d.error(o),o instanceof R.errors.StripeError&&o.code==="resource_missing")return null;throw o}}async function Ct(t){let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.orderGetById.tags({orderId:t}),cache:"force-cache"});try{let r=await o.paymentIntents.retrieve(t,{expand:["payment_method","latest_charge"]},{stripeAccount:e});return Z(r)}catch(r){if(r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function xe(t){let e=await Ct(t);if(!e)return null;let n=it(e.metadata),a=await Promise.all(n.map(async([i,c])=>({product:await G(i),quantity:c}))),{metadata:{shippingRateId:o}}=e,r=o&&await k(o);return{order:e,lines:a.map(({product:i,quantity:c})=>i?{product:i,quantity:c}:null).filter(Boolean),shippingRate:r||null}}var G=async t=>{let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.productGetById.tags({productId:t}),cache:"force-cache"});try{let r=await o.products.retrieve(t,{expand:["default_price"]},{stripeAccount:e});return q(r)}catch(r){if(r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}},ot=["requires_action","requires_confirmation","requires_capture","requires_payment_method"],it=t=>Object.entries(t??{}).filter(([e])=>e.startsWith("prod_")).map(([e,n])=>[e,$(n)]).filter(([,e])=>e&&Number.isFinite(e)&&e>0),_t=async t=>{let{stripeAccount:e,storeId:n,secretKey:a}=await l(),o=m({secretKey:a,tagPrefix:n,tags:C.cartGetById.tags({cartId:t}),cache:"force-cache"});try{let r=await o.paymentIntents.retrieve(t,{expand:["payment_method"]},{stripeAccount:e});if(ot.includes(r.status))return Q(r)}catch(r){if(d.error(r),r instanceof R.errors.StripeError&&r.code==="resource_missing")return null;throw r}};async function V(t){let e=it(t);return await Promise.all(e.map(async([a,o])=>({product:await G(a),quantity:o})))}var st=async t=>{let e=await _t(t);if(!e)return null;let n=await V(e.metadata),{metadata:{shippingRateId:a}}=e,o=a&&await k(a);return{cart:e,lines:n.map(({product:r,quantity:i})=>r?{product:r,quantity:i}:null).filter(Boolean),shippingRate:o||null}},bt=t=>t?t.cart.metadata?.taxCalculationId?t.cart.amount:(t.shippingRate?.fixed_amount?.amount??0)+t.lines.reduce((e,{product:n,quantity:a})=>e+(n.default_price?.unit_amount??0)*a,0):0,St=["billingAddress.country","billingAddress.postalCode","billingAddress.state","taxId","shippingRateId"];function vt({oldCart:t,data:e,mergedMetadata:n,lines:a}){if(!process.env.ENABLE_STRIPE_TAX)return!1;let o=Date.now(),r=n.taxCalculationExp?Number.parseInt(n.taxCalculationExp)*1e3:null;if(!r||o>=r)return!0;let i=t.cart.metadata.netAmount||t.cart.amount,c=e.amount,h=St.some(x=>!n[x]&&!t.cart.metadata[x]?!1:n[x]!==t.cart.metadata[x]),p=a.length!==t.lines.length||a.some(x=>{let P=t.lines.find(g=>g.product.id===x.product?.id);return x.product?.default_price.unit_amount!==P?.product.default_price.unit_amount||x.quantity!==P?.quantity});return c&&i!==c||h||p}var we=t=>b.object({name:b.string({required_error:t.nameRequired}).min(1,t.nameRequired),city:b.string({required_error:t.cityRequired}).min(1,t.cityRequired),country:b.string({required_error:t.countryRequired}).min(1,t.countryRequired),line1:b.string({required_error:t.line1Required}).min(1,t.line1Required),line2:b.string().optional().nullable().default(""),postalCode:b.string({required_error:t.postalCodeRequired}).min(1,t.postalCodeRequired),state:b.string().optional().nullable().default(""),phone:b.string().optional().nullable().default(""),taxId:b.string().optional().nullable().default("")}),Rt=async({lineItems:t,billingAddress:e,cartId:n,shippingRateId:a,taxId:o})=>{if(!process.env.ENABLE_STRIPE_TAX)return null;let{stripeAccount:r,storeId:i,secretKey:c}=await l(),h=m({secretKey:c,tagPrefix:i,tags:C.createTaxCalculation.tags({cartId:n}),cache:"force-cache"});if(!e?.country)return null;let p=a?await k(a):null,y=typeof p?.tax_code=="string"?p.tax_code:p?.tax_code?.id,f=await At(),x=w.StripeCurrency==="usd"||w.StripeCurrency==="cad"?"exclusive":"inclusive",P=f.defaults.tax_behavior==="inferred_by_currency"?x:f.defaults.tax_behavior??x;f.defaults.tax_behavior||d.warn(`Tax behavior not set in Stripe settings. Inferring from currency ${w.StripeCurrency}: ${x}.`),d.time("createTaxCalculation ${cartId}");let g=await h.tax.calculations.create({expand:["line_items"],line_items:t.map(A=>({...A,tax_behavior:A.tax_behavior??P})),currency:w.StripeCurrency,shipping_cost:p?.active&&p?.fixed_amount?{amount:p.fixed_amount.amount,tax_behavior:p.tax_behavior==="inclusive"?"inclusive":p.tax_behavior==="exclusive"?"exclusive":P,tax_code:y??f.defaults.tax_code??void 0}:void 0,customer_details:{tax_ids:o?[{type:"eu_vat",value:o}]:void 0,address_source:"billing",address:{country:e.country,city:e?.city,line1:e?.line1,line2:e?.line2,postal_code:e?.postalCode,state:e?.state}}},{stripeAccount:r});return d.timeEnd("createTaxCalculation ${cartId}"),g},nt={taxBreakdown0:"",taxBreakdown1:"",taxBreakdown2:"",taxBreakdown3:"",taxBreakdown4:"",taxBreakdown5:""},B=async({paymentIntentId:t,data:e,clearTaxCalculation:n})=>{let{stripeAccount:a,storeId:o,secretKey:r}=await l(),i=await st(t);S(i,`Cart not found: ${t}`);let c=O.parse({...i.cart.metadata,...e.metadata});d.time("getProductsFromMetadata");let h=await V(c);d.timeEnd("getProductsFromMetadata");let y=!n&&vt({oldCart:i,data:e,mergedMetadata:c,lines:h})?await Rt({cartId:t,taxId:c.taxId??null,shippingRateId:c.shippingRateId??null,billingAddress:{country:c["billingAddress.country"]??"",city:c["billingAddress.city"]??"",line1:c["billingAddress.line1"]??"",line2:c["billingAddress.line2"]??"",name:c["billingAddress.name"]??"",postalCode:c["billingAddress.postalCode"]??"",state:c["billingAddress.state"]??""},lineItems:h.map(({product:g,quantity:A})=>{if(g?.default_price.unit_amount)return{product:g.id,reference:[g.metadata.slug,g.metadata.variant].filter(Boolean).join("-"),quantity:A,amount:g.default_price.unit_amount*A,tax_behavior:g.default_price.tax_behavior==="exclusive"?"exclusive":g.default_price.tax_behavior==="inclusive"?"inclusive":void 0,tax_code:g.tax_code?typeof g.tax_code=="string"?g.tax_code:g.tax_code.id:void 0}}).filter(Boolean)}):null,f=e.amount?e.amount.toString():null;if(y){let g=Object.fromEntries(y.tax_breakdown.map(N=>({taxType:N.tax_rate_details.tax_type,taxPercentage:N.tax_rate_details.percentage_decimal,taxAmount:N.amount})).map((N,ut)=>[`taxBreakdown${ut}`,JSON.stringify(N)])),A=m({secretKey:r,tagPrefix:o,cache:"no-cache"});d.time(`paymentIntents.update ${t}`);let ct=await A.paymentIntents.update(t,{...e,amount:y.amount_total,metadata:{...c,...f&&{netAmount:f},...nt,...g,taxCalculationId:y.id,taxCalculationExp:y?.expires_at}},{stripeAccount:a});return d.timeEnd(`paymentIntents.update ${t}`),ct}let x=m({secretKey:r,tagPrefix:o,cache:"no-cache"});d.time(`paymentIntents.update ${t}`);let P=await x.paymentIntents.update(t,{...e,metadata:{...c,...f&&{netAmount:f},...n&&{...nt,taxCalculationId:"",taxCalculationExp:""}}},{stripeAccount:a});return d.timeEnd(`paymentIntents.update ${t}`),P},K=t=>t?t.cart.metadata?.taxCalculationId?t.cart.amount:(t.shippingRate?.fixed_amount?.amount??0)+Pt(t):0,Pt=t=>t?t.lines.reduce((e,{product:n,quantity:a})=>e+(n.default_price?.unit_amount??0)*a,0):0;async function Ce({productId:t,cartId:e,operation:n,clearTaxCalculation:a}){let[o,r]=await Promise.all([at(t),L(e)]);if(!o)throw new Error(`Product not found: ${t}`);if(!r)throw new Error(`Cart not found: ${e}`);if(w.StripeCurrency?.toLowerCase()!==o.default_price.currency.toLowerCase())throw new Error(`Product currency ${o.default_price.currency} does not match cart currency ${w.StripeCurrency}`);let i=r.cart.metadata??{},p=$(i[t])+(n==="INCREASE"?1:-1);p<=0?i[t]="":i[t]=p.toString();let y=K(r)+(o.default_price.unit_amount??0);try{return await B({paymentIntentId:e,data:{metadata:i,amount:y||F},clearTaxCalculation:a})}catch(f){d.error(f)}finally{T(`cart-${e}`)}}var _e=async({cartId:t,taxId:e})=>{let n=await L(t);if(!n)throw new Error(`Cart not found: ${t}`);try{return await B({paymentIntentId:t,data:{metadata:{...n.cart.metadata,taxId:e}}})}catch(a){d.error(a)}finally{T(`cart-${t}`)}};async function be({cartId:t,shippingRateId:e}){let n=await L(t);if(!n)throw new Error(`Cart not found: ${t}`);d.time(`cartSaveShipping ${t}`);let a=await k(e);if(d.timeEnd(`cartSaveShipping ${t}`),!a)throw new Error(`Shipping rate not found: ${e}`);try{d.time(`updatePaymentIntent ${t}`);let o=await B({paymentIntentId:t,data:{metadata:{...n.cart.metadata,shippingRateId:e},amount:K({...n,shippingRate:a})}});return d.timeEnd(`updatePaymentIntent ${t}`),o}catch(o){d.error(o)}finally{T(`cart-${t}`)}}async function Se({cartId:t,billingAddress:e}){if(!await L(t))throw new Error(`Cart not found: ${t}`);try{return await B({paymentIntentId:t,data:{metadata:{"billingAddress.name":e.name,"billingAddress.phone":e.phone,"billingAddress.city":e.city,"billingAddress.country":e.country,"billingAddress.line1":e.line1,"billingAddress.line2":e.line2??"","billingAddress.postalCode":e.postalCode,"billingAddress.state":e.state??""}}})}catch(a){d.error(a)}finally{T(`cart-${t}`)}}async function At(){let{stripeAccount:t,storeId:e,secretKey:n}=await l();return await m({secretKey:n,tagPrefix:e,tags:["tax-settings"],cache:"force-cache"}).tax.settings.retrieve({},{stripeAccount:t})}function ve(t){return Object.entries(t??{}).filter(([e])=>e.startsWith("prod_")).map(([e,n])=>[e,$(n)]).filter(([,e])=>e&&Number.isFinite(e)&&e>0).length}async function Re(t){if(!E)return null;let{storeId:e}=await l();return await E`
1
+ import"server-only";import"server-only";import{z as c}from"zod";function S(t,e){if(!t)throw new Error(e)}var V=async t=>{try{return[null,await t]}catch(e){return[e instanceof Error?e:new Error(String(e)),null]}},N=t=>{if(t==null)return 0;if(typeof t=="number")return t;let e=Number.parseInt(t,10);return Number.isNaN(e)?0:e},U=t=>{if(t==null)return null;try{return JSON.parse(t)}catch{return null}};var ut=t=>t.toString().replace(/\\/g,"\\\\").replace(/"/g,'\\"'),j=t=>Object.entries(t).map(([e,n])=>`${e}:"${ut(n)}"`).join(" AND ").trim();function q(t){return t.toSorted((e,n)=>{let a=Number(e.metadata.order),i=Number(n.metadata.order);return Number.isNaN(a)&&Number.isNaN(i)||a===i?n.updated-e.updated:Number.isNaN(a)?1:Number.isNaN(i)?-1:a-i})}var dt=c.object({category:c.string().optional(),order:c.coerce.number().optional(),slug:c.string(),variant:c.string().optional()});function G({default_price:t,marketing_features:e,...n}){return S(t,"Product must have a default price"),S(typeof t=="object","Product default price must be an object"),{...n,default_price:t,marketing_features:e.map(a=>a.name).filter(Boolean),metadata:dt.parse(n.metadata)}}function M(t){return t.data.map(G)}function H(t){return t}function z(t){return t.data.map(H)}function D(t){return t.filter((e,n,a)=>n===a.findIndex(i=>i.metadata.slug===e.metadata.slug))}var W=t=>!t.deleted&&t.active,O=c.object({shippingRateId:c.string().optional(),taxCalculationId:c.string().optional(),taxCalculationExp:c.string().optional(),taxId:c.string().optional(),"billingAddress.city":c.string().optional(),"billingAddress.country":c.string().optional(),"billingAddress.line1":c.string().optional(),"billingAddress.line2":c.string().optional(),"billingAddress.name":c.string().optional(),"billingAddress.postalCode":c.string().optional(),"billingAddress.state":c.string().optional(),netAmount:c.string().optional(),taxBreakdown0:c.string().optional(),taxBreakdown1:c.string().optional(),taxBreakdown2:c.string().optional(),taxBreakdown3:c.string().optional(),taxBreakdown4:c.string().optional(),taxBreakdown5:c.string().optional()}).and(c.record(c.string())),J=c.object({taxType:c.string(),taxPercentage:c.string(),taxAmount:c.number()});function Y(t){let e=t.payment_method;S(typeof e!="string","Payment method is missing from cart");let n=O.parse(t.metadata),a=Object.entries(n).filter(([i])=>i.startsWith("taxBreakdown")).map(([i,r])=>{let o=J.safeParse(U(String(r)));return o.success?o.data:null}).filter(Boolean);return{...t,metadata:n,payment_method:e,taxBreakdown:a}}function X({payment_method:t,latest_charge:e,...n}){S(typeof t=="object","Payment method is missing from order"),S(typeof e=="object","Latest charge is missing from order");let a=O.parse(n.metadata),i=Object.entries(a).filter(([r])=>r.startsWith("taxBreakdown")).map(([r,o])=>{let s=J.safeParse(U(String(o)));return s.success?s.data:null}).filter(Boolean);return{...n,payment_method:t,latest_charge:e,taxBreakdown:i,metadata:a}}import"server-only";import{revalidatePath as et,revalidateTag as I}from"next/cache";import v from"stripe";import{z as _}from"zod";import"server-only";var p=async()=>{let t={hero:{show:!0,title:"Discover our Curated Collection",description:"Explore our carefully selected products for your home and lifestyle.",button:{label:"Shop Now",path:"/"},image:{src:"https://files.stripe.com/links/MDB8YWNjdF8xT3BaeG5GSmNWbVh6bURsfGZsX3Rlc3RfaDVvWXowdU9ZbWlobUIyaHpNc1hCeDM200NBzvUjqP",alt:"Cup of coffee"}},categorySection:{show:!0},nav:{title:"Your Next Store",searchBar:{show:!0},links:[{label:"Home",href:"/"},{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},footer:{name:"Your Next Store",tagline:"Handcrafted with passion in California",newsletter:{show:!0},credits:!0,sections:[{header:"Products",links:[{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},{header:"Support",links:[{label:"Features",href:"https://yournextstore.com/#features"},{label:"Pricing",href:"https://yournextstore.com/#pricing"},{label:"Contact Us",href:"mailto:hi@yournextstore.com"}]}]},pages:{"/about":{content:`# Header 1
2
+
3
+ ## Header 2
4
+
5
+ ### Header 3
6
+
7
+ #### Header 4
8
+
9
+ ##### Header 5
10
+
11
+ ###### Header 6
12
+
13
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
14
+
15
+ > This is a quote
16
+
17
+ * This is a list item
18
+ * This is another list item
19
+ * This is a third list item
20
+
21
+ \`\`\`js
22
+ function hello() {
23
+ console.log('Hello world!');
24
+ }
25
+ \`\`\`
26
+ `}}},e={stripeAccount:void 0,storeId:void 0,secretKey:void 0,config:t},n=await global?.__ynsFindStripeAccount?.();return n?{...n,config:n.config??t}:e};import"server-only";import tt from"stripe";import"server-only";var pt=process.env.STRIPE_SECRET_KEY,Z=process.env.STRIPE_CURRENCY;if(!Z)throw new Error("Missing STRIPE_CURRENCY");var x={StripeSecretKey:pt,StripeCurrency:Z};var b={DEBUG:0,LOG:1,WARN:2,ERROR:3},lt="LOG",mt=process.env.LOG_LEVEL&&process.env.LOG_LEVEL in b?process.env.LOG_LEVEL:lt,A=b[mt],u={time(t){A>b.DEBUG||console.time(t)},timeEnd(t){A>b.DEBUG||console.timeEnd(t)},log(...t){A>b.LOG||console.log(...t)},dir(t,e){A>b.LOG||console.dir(t,e)},warn(...t){A>b.WARN||console.warn(...t)},error(...t){A>b.ERROR||console.error(...t)}};var ft=(t,e)=>!t||!e?t:[...t,`prefix-${e}`,...t.map(n=>`${e}-${n}`)],m=({tags:t,revalidate:e,cache:n,tagPrefix:a,secretKey:i})=>{let r=i??x.StripeSecretKey;if(!r)throw new Error("Missing `secretKey` parameter and `STRIPE_SECRET_KEY` env variable.");u.log(`Using Stripe secret key from ${i?"parameter":"env"}.`);let o=ft(t,a);return new tt(r,{typescript:!0,apiVersion:"2024-06-20",httpClient:tt.createFetchHttpClient((h,d)=>fetch(h,{...d,cache:n??d?.cache,next:{tags:o??d?.next?.tags,revalidate:e??d?.next?.revalidate}})),appInfo:{name:"Commerce SDK",version:"beta",url:"https://yournextstore.com",partner_id:"CONS-003378"}})};var C=t=>t.filter(Boolean),w={accountGetById:{tags:({accountId:t})=>C(["account",t&&`account-${t}`]),revalidate:()=>{}},cartGetById:{tags:({cartId:t})=>C(["cart",`cart-${t}`]),revalidate:()=>{}},createTaxCalculation:{tags:({cartId:t})=>C(["tax-calculations",`tax-calculations-${t}`]),revalidate:()=>{}},fileGetById:{tags:({fileId:t})=>C(["files",`file-${t}`]),revalidate:()=>{}},orderGetById:{tags:({orderId:t})=>C(["order",`order-${t}`]),revalidate:()=>{}},productBrowse:{tags:({category:t})=>C(["product",t&&`category-${t}`]),revalidate:()=>{}},productGetById:{tags:({productId:t})=>C(["product",`product-${t}`]),revalidate:()=>{}},productGetBySlug:{tags:({productSlug:t})=>C(["product",`product-${t}`]),revalidate:()=>{}},shippingBrowse:{tags:()=>C(["shipping"]),revalidate:()=>{}},shippingGetById:{tags:({shippingId:t})=>C(["shipping",`shipping-${t}`]),revalidate:()=>{}},taxDefaultGet:{tags:()=>C(["tax-settings"]),revalidate:()=>{}}};import{neon as gt}from"@neondatabase/serverless";var E;process.env.DATABASE_URL&&(E=gt(process.env.DATABASE_URL));var F=1e3;function se({productId:t,cartId:e}){return e?ht({cartId:e,productId:t,operation:"INCREASE",clearTaxCalculation:!0}):yt({productId:t})}async function ht({productId:t,cartId:e,operation:n,clearTaxCalculation:a}){let[i,r]=await Promise.all([k(t),ot(e)]);if(!i)throw new Error(`Product not found: ${t}`);if(!r)throw new Error(`Cart not found: ${e}`);if(x.StripeCurrency.toLowerCase()!==i.default_price.currency.toLowerCase())throw new Error(`Product currency ${i.default_price.currency} does not match cart currency ${x.StripeCurrency}`);let o=r.cart.metadata??{},d=N(o[t])+(n==="INCREASE"?1:-1);d<=0?o[t]="":o[t]=d.toString();let g=_t(r)+(i.default_price.unit_amount??0);try{return await T({paymentIntentId:e,data:{metadata:o,amount:g||F},clearTaxCalculation:a})}catch(l){u.error(l)}finally{I(`cart-${e}`)}}async function $(t){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.cartGetById.tags({cartId:t}),cache:"force-cache"});try{let r=await i.paymentIntents.retrieve(t,{expand:["payment_method"]},{stripeAccount:e});if(at.includes(r.status)){let o=Y(r);if(!o)return null;let s=await Q(o.metadata),{metadata:{shippingRateId:h}}=o,d=h&&await L(h);return{cart:o,lines:s.map(({product:g,quantity:l})=>g?{product:g,quantity:l}:null).filter(Boolean),shippingRate:d||null}}}catch(r){if(u.error(r),r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function yt({productId:t}={}){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,cache:"no-cache"});try{let r=t?await k(t):null;return await i.paymentIntents.create({currency:x.StripeCurrency,amount:r?.default_price.unit_amount||F,automatic_payment_methods:{enabled:!0},metadata:{...r&&{[r.id]:"1"}}},{stripeAccount:e})}catch(r){throw u.error(r),r}}async function ce({cart:t,add:e}){if(!e)return t;let n=await k(e);if(!n)return u.warn(`Product not found: ${e}`),t;let i=(t?.lines.find(o=>o.product.id===e)?t.lines:[...t?.lines??[],{product:n,quantity:0}]).map(o=>o.product.id===e?{...o,quantity:o.quantity+1}:o),r=t?K(t)+(n.default_price.unit_amount??0):n.default_price.unit_amount??0;return{...t,cart:{...t?.cart,amount:r},lines:i}}async function ue({cartId:t,productId:e,quantity:n}){let[a,i]=await Promise.all([nt(e),$(t)]);if(!a)throw new Error(`Product not found: ${e}`);if(!i)throw new Error(`Cart not found: ${t}`);if(x.StripeCurrency?.toLowerCase()!==a.default_price.currency.toLowerCase())throw new Error(`Product currency ${a.default_price.currency} does not match cart currency ${x.StripeCurrency}`);let r=i.cart.metadata??{};n<=0?r[e]="":r[e]=n.toString();let o=K(i)+(a.default_price.unit_amount??0);try{return await T({paymentIntentId:t,data:{metadata:r,amount:o||F}})}catch(s){u.error(s)}finally{I(`cart-${t}`),et("/cart"),et("/cart-overlay")}}async function nt(t){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.productGetById.tags({productId:t}),cache:"force-cache"});try{let r=await i.products.retrieve(t,{expand:["default_price"]},{stripeAccount:e});return G(r)}catch(r){if(r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function de({slug:t}){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),r=await m({secretKey:a,tagPrefix:n,tags:w.productGetBySlug.tags({productSlug:t}),cache:"force-cache"}).products.search({query:j({active:!0,'metadata["slug"]':t}),expand:["data.default_price"]},{stripeAccount:e});if(r.data.length>1&&r.data.some(o=>!o.metadata.variant))throw new Error(`Multiple products found with the same slug (${t}) but no variant set.`);return q(M(r).filter(W))}async function xt(t){let{stripeAccount:e,storeId:n,secretKey:a}=await p();if(t.filter?.category){let i=t.filter?.category,o=await m({secretKey:a,tagPrefix:n,tags:w.productBrowse.tags({category:i}),cache:"force-cache"}).products.search({limit:100,query:j({active:!0,'metadata["category"]':i}),expand:["data.default_price"]},{stripeAccount:e});return q(D(M(o)).filter(W).slice(t.offset,t.first))}else{let r=await m({secretKey:a,tagPrefix:n,tags:w.productBrowse.tags({}),cache:"force-cache"}).products.list({limit:100,active:!0,expand:["data.default_price"]},{stripeAccount:e});return q(D(M(r)).filter(W).slice(t.offset,t.first))}}async function pe(){let{stripeAccount:t,storeId:e,secretKey:n}=await p(),i=await m({secretKey:n,tagPrefix:e,tags:w.shippingBrowse.tags(),cache:"force-cache"}).shippingRates.list({active:!0},{stripeAccount:t});return z(i)}async function L(t){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.shippingGetById.tags({shippingId:t}),cache:"force-cache"});try{let r=await i.shippingRates.retrieve(t,{},{stripeAccount:e});return r}catch(r){if(u.error(r),r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function le(){let e=(await xt({first:100})).map(a=>a.metadata.category).filter(Boolean),n=new Set(e);return Array.from(n)}async function me(t){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.fileGetById.tags({fileId:t}),cache:"force-cache"});try{return await i.fileLinks.create({file:t},{stripeAccount:e})}catch(r){if(u.error(r),r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function fe(){let{stripeAccount:t,storeId:e,secretKey:n}=await p(),a=m({secretKey:n,tagPrefix:e,tags:w.accountGetById.tags({}),cache:"force-cache"});try{let[i,r]=await V(a.accounts.retrieve({expand:["settings.branding.logo"]},{stripeAccount:t})),o=r?.settings?.branding.logo??null;return!o||typeof o=="string"?{account:r,logo:null}:{account:r,logo:o}}catch(i){if(u.error(i),i instanceof v.errors.StripeError&&i.code==="resource_missing")return null;throw i}}async function wt(t){let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.orderGetById.tags({orderId:t}),cache:"force-cache"});try{let r=await i.paymentIntents.retrieve(t,{expand:["payment_method","latest_charge"]},{stripeAccount:e});return X(r)}catch(r){if(r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}}async function ge(t){let e=await wt(t);if(!e)return null;let n=it(e.metadata),a=await Promise.all(n.map(async([o,s])=>({product:await k(o),quantity:s}))),{metadata:{shippingRateId:i}}=e,r=i&&await L(i);return{order:e,lines:a.map(({product:o,quantity:s})=>o?{product:o,quantity:s}:null).filter(Boolean),shippingRate:r||null}}var k=async t=>{let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.productGetById.tags({productId:t}),cache:"force-cache"});try{let r=await i.products.retrieve(t,{expand:["default_price"]},{stripeAccount:e});return G(r)}catch(r){if(r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}},at=["requires_action","requires_confirmation","requires_capture","requires_payment_method"],it=t=>Object.entries(t??{}).filter(([e])=>e.startsWith("prod_")).map(([e,n])=>[e,N(n)]).filter(([,e])=>e&&Number.isFinite(e)&&e>0),Ct=async t=>{let{stripeAccount:e,storeId:n,secretKey:a}=await p(),i=m({secretKey:a,tagPrefix:n,tags:w.cartGetById.tags({cartId:t}),cache:"force-cache"});try{let r=await i.paymentIntents.retrieve(t,{expand:["payment_method"]},{stripeAccount:e});if(at.includes(r.status))return Y(r)}catch(r){if(u.error(r),r instanceof v.errors.StripeError&&r.code==="resource_missing")return null;throw r}};async function Q(t){let e=it(t);return await Promise.all(e.map(async([a,i])=>({product:await k(a),quantity:i})))}var ot=async t=>{let e=await Ct(t);if(!e)return null;let n=await Q(e.metadata),{metadata:{shippingRateId:a}}=e,i=a&&await L(a);return{cart:e,lines:n.map(({product:r,quantity:o})=>r?{product:r,quantity:o}:null).filter(Boolean),shippingRate:i||null}},_t=t=>t?t.cart.metadata?.taxCalculationId?t.cart.amount:(t.shippingRate?.fixed_amount?.amount??0)+t.lines.reduce((e,{product:n,quantity:a})=>e+(n.default_price?.unit_amount??0)*a,0):0,St=["billingAddress.country","billingAddress.postalCode","billingAddress.state","taxId","shippingRateId"];function bt({oldCart:t,data:e,mergedMetadata:n,lines:a}){if(!process.env.ENABLE_STRIPE_TAX)return!1;let i=Date.now(),r=n.taxCalculationExp?Number.parseInt(n.taxCalculationExp)*1e3:null;if(!r||i>=r)return!0;let o=t.cart.metadata.netAmount||t.cart.amount,s=e.amount,h=St.some(y=>!n[y]&&!t.cart.metadata[y]?!1:n[y]!==t.cart.metadata[y]),d=a.length!==t.lines.length||a.some(y=>{let R=t.lines.find(f=>f.product.id===y.product?.id);return y.product?.default_price.unit_amount!==R?.product.default_price.unit_amount||y.quantity!==R?.quantity});return s&&o!==s||h||d}var he=t=>_.object({name:_.string({required_error:t.nameRequired}).min(1,t.nameRequired),city:_.string({required_error:t.cityRequired}).min(1,t.cityRequired),country:_.string({required_error:t.countryRequired}).min(1,t.countryRequired),line1:_.string({required_error:t.line1Required}).min(1,t.line1Required),line2:_.string().optional().nullable().default(""),postalCode:_.string({required_error:t.postalCodeRequired}).min(1,t.postalCodeRequired),state:_.string().optional().nullable().default(""),phone:_.string().optional().nullable().default(""),taxId:_.string().optional().nullable().default("")}),vt=async({lineItems:t,billingAddress:e,cartId:n,shippingRateId:a,taxId:i})=>{if(!process.env.ENABLE_STRIPE_TAX)return null;let{stripeAccount:r,storeId:o,secretKey:s}=await p(),h=m({secretKey:s,tagPrefix:o,tags:w.createTaxCalculation.tags({cartId:n}),cache:"force-cache"});if(!e?.country)return null;let d=a?await L(a):null,g=typeof d?.tax_code=="string"?d.tax_code:d?.tax_code?.id,l=await Pt(),y=x.StripeCurrency==="usd"||x.StripeCurrency==="cad"?"exclusive":"inclusive",R=l.defaults.tax_behavior==="inferred_by_currency"?y:l.defaults.tax_behavior??y;l.defaults.tax_behavior||u.warn(`Tax behavior not set in Stripe settings. Inferring from currency ${x.StripeCurrency}: ${y}.`),u.time("createTaxCalculation ${cartId}");let f=await h.tax.calculations.create({expand:["line_items"],line_items:t.map(P=>({...P,tax_behavior:P.tax_behavior??R})),currency:x.StripeCurrency,shipping_cost:d?.active&&d?.fixed_amount?{amount:d.fixed_amount.amount,tax_behavior:d.tax_behavior==="inclusive"?"inclusive":d.tax_behavior==="exclusive"?"exclusive":R,tax_code:g??l.defaults.tax_code??void 0}:void 0,customer_details:{tax_ids:i?[{type:"eu_vat",value:i}]:void 0,address_source:"billing",address:{country:e.country,city:e?.city,line1:e?.line1,line2:e?.line2,postal_code:e?.postalCode,state:e?.state}}},{stripeAccount:r});return u.timeEnd("createTaxCalculation ${cartId}"),f},rt={taxBreakdown0:"",taxBreakdown1:"",taxBreakdown2:"",taxBreakdown3:"",taxBreakdown4:"",taxBreakdown5:""},T=async({paymentIntentId:t,data:e,clearTaxCalculation:n})=>{let{stripeAccount:a,storeId:i,secretKey:r}=await p(),o=await ot(t);S(o,`Cart not found: ${t}`);let s=O.parse({...o.cart.metadata,...e.metadata});u.time("getProductsFromMetadata");let h=await Q(s);u.timeEnd("getProductsFromMetadata");let g=!n&&bt({oldCart:o,data:e,mergedMetadata:s,lines:h})?await vt({cartId:t,taxId:s.taxId??null,shippingRateId:s.shippingRateId??null,billingAddress:{country:s["billingAddress.country"]??"",city:s["billingAddress.city"]??"",line1:s["billingAddress.line1"]??"",line2:s["billingAddress.line2"]??"",name:s["billingAddress.name"]??"",postalCode:s["billingAddress.postalCode"]??"",state:s["billingAddress.state"]??""},lineItems:h.map(({product:f,quantity:P})=>{if(f?.default_price.unit_amount)return{product:f.id,reference:[f.metadata.slug,f.metadata.variant].filter(Boolean).join("-"),quantity:P,amount:f.default_price.unit_amount*P,tax_behavior:f.default_price.tax_behavior==="exclusive"?"exclusive":f.default_price.tax_behavior==="inclusive"?"inclusive":void 0,tax_code:f.tax_code?typeof f.tax_code=="string"?f.tax_code:f.tax_code.id:void 0}}).filter(Boolean)}):null,l=e.amount?e.amount.toString():null;if(g){let f=Object.fromEntries(g.tax_breakdown.map(B=>({taxType:B.tax_rate_details.tax_type,taxPercentage:B.tax_rate_details.percentage_decimal,taxAmount:B.amount})).map((B,ct)=>[`taxBreakdown${ct}`,JSON.stringify(B)])),P=m({secretKey:r,tagPrefix:i,cache:"no-cache"});u.time(`paymentIntents.update ${t}`);let st=await P.paymentIntents.update(t,{...e,amount:g.amount_total,metadata:{...s,...l&&{netAmount:l},...rt,...f,taxCalculationId:g.id,taxCalculationExp:g?.expires_at}},{stripeAccount:a});return u.timeEnd(`paymentIntents.update ${t}`),st}let y=m({secretKey:r,tagPrefix:i,cache:"no-cache"});u.time(`paymentIntents.update ${t}`);let R=await y.paymentIntents.update(t,{...e,metadata:{...s,...l&&{netAmount:l},...n&&{...rt,taxCalculationId:"",taxCalculationExp:""}}},{stripeAccount:a});return u.timeEnd(`paymentIntents.update ${t}`),R},K=t=>t?t.cart.metadata?.taxCalculationId?t.cart.amount:(t.shippingRate?.fixed_amount?.amount??0)+Rt(t):0,Rt=t=>t?t.lines.reduce((e,{product:n,quantity:a})=>e+(n.default_price?.unit_amount??0)*a,0):0;async function ye({productId:t,cartId:e,operation:n,clearTaxCalculation:a}){let[i,r]=await Promise.all([nt(t),$(e)]);if(!i)throw new Error(`Product not found: ${t}`);if(!r)throw new Error(`Cart not found: ${e}`);if(x.StripeCurrency?.toLowerCase()!==i.default_price.currency.toLowerCase())throw new Error(`Product currency ${i.default_price.currency} does not match cart currency ${x.StripeCurrency}`);let o=r.cart.metadata??{},d=N(o[t])+(n==="INCREASE"?1:-1);d<=0?o[t]="":o[t]=d.toString();let g=K(r)+(i.default_price.unit_amount??0);try{return await T({paymentIntentId:e,data:{metadata:o,amount:g||F},clearTaxCalculation:a})}catch(l){u.error(l)}finally{I(`cart-${e}`)}}var xe=async({cartId:t,taxId:e})=>{let n=await $(t);if(!n)throw new Error(`Cart not found: ${t}`);try{return await T({paymentIntentId:t,data:{metadata:{...n.cart.metadata,taxId:e}}})}catch(a){u.error(a)}finally{I(`cart-${t}`)}};async function we({cartId:t,shippingRateId:e}){let n=await $(t);if(!n)throw new Error(`Cart not found: ${t}`);u.time(`cartSaveShipping ${t}`);let a=await L(e);if(u.timeEnd(`cartSaveShipping ${t}`),!a)throw new Error(`Shipping rate not found: ${e}`);try{u.time(`updatePaymentIntent ${t}`);let i=await T({paymentIntentId:t,data:{metadata:{...n.cart.metadata,shippingRateId:e},amount:K({...n,shippingRate:a})}});return u.timeEnd(`updatePaymentIntent ${t}`),i}catch(i){u.error(i)}finally{I(`cart-${t}`)}}async function Ce({cartId:t,billingAddress:e}){if(!await $(t))throw new Error(`Cart not found: ${t}`);try{return await T({paymentIntentId:t,data:{metadata:{"billingAddress.name":e.name,"billingAddress.phone":e.phone,"billingAddress.city":e.city,"billingAddress.country":e.country,"billingAddress.line1":e.line1,"billingAddress.line2":e.line2??"","billingAddress.postalCode":e.postalCode,"billingAddress.state":e.state??""}}})}catch(a){u.error(a)}finally{I(`cart-${t}`)}}async function Pt(){let{stripeAccount:t,storeId:e,secretKey:n}=await p();return await m({secretKey:n,tagPrefix:e,tags:["tax-settings"],cache:"force-cache"}).tax.settings.retrieve({},{stripeAccount:t})}function _e(t){return Object.entries(t??{}).filter(([e])=>e.startsWith("prod_")).map(([e,n])=>[e,N(n)]).filter(([,e])=>e&&Number.isFinite(e)&&e>0).length}async function Se(t){if(!E)return null;let{storeId:e}=await p();return await E`
2
27
  select * from reviews
3
28
  where product_id = ${t.productId} and store_id = ${e}
4
29
  order by created_at desc
5
30
  limit ${t.first??100}
6
31
  offset ${t.offset??0}
7
- `}async function Pe(t){if(!E)return null;let{storeId:e}=await l();return await E`
32
+ `}async function be(t){if(!E)return null;let{storeId:e}=await p();return await E`
8
33
  insert into reviews (store_id, product_id, author, email, content, rating, created_at, updated_at)
9
34
  values (${e}, ${t.productId}, ${t.author}, ${t.email}, ${t.content}, ${t.rating}, now(), now())
10
- `}var Ae=l;export{he as accountGet,bt as calculateCartTotalNet,Pt as calculateCartTotalNetWithoutShipping,K as calculateCartTotalPossiblyWithTax,de as cartAdd,pe as cartAddOptimistic,Ce as cartChangeQuantity,ve as cartCount,xt as cartCreate,L as cartGet,Se as cartSaveBillingAddress,be as cartSaveShipping,_e as cartSaveTax,le as cartSetQuantity,ht as cartUpdateQuantity,ge as categoryBrowse,Ae as contextGet,ye as fileGet,we as getAddressSchema,st as getCartWithProductsById,it as getProductsFromCart,xe as orderGet,wt as productBrowse,fe as productGet,at as productGetById,Pe as productReviewAdd,Re as productReviewBrowse,m as provider,me as shippingBrowse,k as shippingGet,At as taxDefaultGet};
35
+ `}var ve=p;export{fe as accountGet,_t as calculateCartTotalNet,Rt as calculateCartTotalNetWithoutShipping,K as calculateCartTotalPossiblyWithTax,se as cartAdd,ce as cartAddOptimistic,ye as cartChangeQuantity,_e as cartCount,yt as cartCreate,$ as cartGet,Ce as cartSaveBillingAddress,we as cartSaveShipping,xe as cartSaveTax,ue as cartSetQuantity,ht as cartUpdateQuantity,le as categoryBrowse,ve as contextGet,me as fileGet,he as getAddressSchema,ot as getCartWithProductsById,it as getProductsFromCart,ge as orderGet,xt as productBrowse,de as productGet,nt as productGetById,be as productReviewAdd,Se as productReviewBrowse,m as provider,pe as shippingBrowse,L as shippingGet,Pt as taxDefaultGet};
package/dist/yns.d.ts CHANGED
@@ -1,251 +1,6 @@
1
- import { z } from 'zod';
1
+ import { Config } from './browser.js';
2
+ import 'zod';
2
3
 
3
- declare const configSchema: z.ZodObject<{
4
- hero: z.ZodObject<{
5
- show: z.ZodBoolean;
6
- title: z.ZodString;
7
- description: z.ZodString;
8
- button: z.ZodObject<{
9
- label: z.ZodString;
10
- path: z.ZodString;
11
- }, "strip", z.ZodTypeAny, {
12
- path: string;
13
- label: string;
14
- }, {
15
- path: string;
16
- label: string;
17
- }>;
18
- image: z.ZodObject<{
19
- src: z.ZodString;
20
- alt: z.ZodString;
21
- }, "strip", z.ZodTypeAny, {
22
- src: string;
23
- alt: string;
24
- }, {
25
- src: string;
26
- alt: string;
27
- }>;
28
- }, "strip", z.ZodTypeAny, {
29
- show: boolean;
30
- title: string;
31
- description: string;
32
- button: {
33
- path: string;
34
- label: string;
35
- };
36
- image: {
37
- src: string;
38
- alt: string;
39
- };
40
- }, {
41
- show: boolean;
42
- title: string;
43
- description: string;
44
- button: {
45
- path: string;
46
- label: string;
47
- };
48
- image: {
49
- src: string;
50
- alt: string;
51
- };
52
- }>;
53
- categorySection: z.ZodObject<{
54
- show: z.ZodBoolean;
55
- }, "strip", z.ZodTypeAny, {
56
- show: boolean;
57
- }, {
58
- show: boolean;
59
- }>;
60
- nav: z.ZodObject<{
61
- title: z.ZodString;
62
- searchBar: z.ZodObject<{
63
- show: z.ZodBoolean;
64
- }, "strip", z.ZodTypeAny, {
65
- show: boolean;
66
- }, {
67
- show: boolean;
68
- }>;
69
- links: z.ZodArray<z.ZodObject<{
70
- label: z.ZodString;
71
- href: z.ZodString;
72
- }, "strip", z.ZodTypeAny, {
73
- label: string;
74
- href: string;
75
- }, {
76
- label: string;
77
- href: string;
78
- }>, "many">;
79
- }, "strip", z.ZodTypeAny, {
80
- title: string;
81
- searchBar: {
82
- show: boolean;
83
- };
84
- links: {
85
- label: string;
86
- href: string;
87
- }[];
88
- }, {
89
- title: string;
90
- searchBar: {
91
- show: boolean;
92
- };
93
- links: {
94
- label: string;
95
- href: string;
96
- }[];
97
- }>;
98
- footer: z.ZodObject<{
99
- name: z.ZodString;
100
- tagline: z.ZodString;
101
- newsletter: z.ZodObject<{
102
- show: z.ZodBoolean;
103
- }, "strip", z.ZodTypeAny, {
104
- show: boolean;
105
- }, {
106
- show: boolean;
107
- }>;
108
- credits: z.ZodBoolean;
109
- sections: z.ZodArray<z.ZodObject<{
110
- header: z.ZodString;
111
- links: z.ZodArray<z.ZodObject<{
112
- label: z.ZodString;
113
- href: z.ZodString;
114
- }, "strip", z.ZodTypeAny, {
115
- label: string;
116
- href: string;
117
- }, {
118
- label: string;
119
- href: string;
120
- }>, "many">;
121
- }, "strip", z.ZodTypeAny, {
122
- links: {
123
- label: string;
124
- href: string;
125
- }[];
126
- header: string;
127
- }, {
128
- links: {
129
- label: string;
130
- href: string;
131
- }[];
132
- header: string;
133
- }>, "many">;
134
- }, "strip", z.ZodTypeAny, {
135
- name: string;
136
- tagline: string;
137
- newsletter: {
138
- show: boolean;
139
- };
140
- credits: boolean;
141
- sections: {
142
- links: {
143
- label: string;
144
- href: string;
145
- }[];
146
- header: string;
147
- }[];
148
- }, {
149
- name: string;
150
- tagline: string;
151
- newsletter: {
152
- show: boolean;
153
- };
154
- credits: boolean;
155
- sections: {
156
- links: {
157
- label: string;
158
- href: string;
159
- }[];
160
- header: string;
161
- }[];
162
- }>;
163
- }, "strip", z.ZodTypeAny, {
164
- hero: {
165
- show: boolean;
166
- title: string;
167
- description: string;
168
- button: {
169
- path: string;
170
- label: string;
171
- };
172
- image: {
173
- src: string;
174
- alt: string;
175
- };
176
- };
177
- categorySection: {
178
- show: boolean;
179
- };
180
- nav: {
181
- title: string;
182
- searchBar: {
183
- show: boolean;
184
- };
185
- links: {
186
- label: string;
187
- href: string;
188
- }[];
189
- };
190
- footer: {
191
- name: string;
192
- tagline: string;
193
- newsletter: {
194
- show: boolean;
195
- };
196
- credits: boolean;
197
- sections: {
198
- links: {
199
- label: string;
200
- href: string;
201
- }[];
202
- header: string;
203
- }[];
204
- };
205
- }, {
206
- hero: {
207
- show: boolean;
208
- title: string;
209
- description: string;
210
- button: {
211
- path: string;
212
- label: string;
213
- };
214
- image: {
215
- src: string;
216
- alt: string;
217
- };
218
- };
219
- categorySection: {
220
- show: boolean;
221
- };
222
- nav: {
223
- title: string;
224
- searchBar: {
225
- show: boolean;
226
- };
227
- links: {
228
- label: string;
229
- href: string;
230
- }[];
231
- };
232
- footer: {
233
- name: string;
234
- tagline: string;
235
- newsletter: {
236
- show: boolean;
237
- };
238
- credits: boolean;
239
- sections: {
240
- links: {
241
- label: string;
242
- href: string;
243
- }[];
244
- header: string;
245
- }[];
246
- };
247
- }>;
248
- type Config = z.infer<typeof configSchema>;
249
4
  type YnsFindStripeAccountResult = {
250
5
  stripeAccount: string | undefined;
251
6
  storeId: string | undefined;
@@ -267,4 +22,4 @@ declare global {
267
22
  }
268
23
  declare const getYnsContext: () => Promise<YnsContextResult>;
269
24
 
270
- export { type Config, configSchema, getYnsContext };
25
+ export { getYnsContext };
package/dist/yns.js CHANGED
@@ -1 +1,26 @@
1
- import"server-only";import{z as e}from"zod";var i=e.object({hero:e.object({show:e.boolean(),title:e.string(),description:e.string(),button:e.object({label:e.string(),path:e.string()}),image:e.object({src:e.string(),alt:e.string()})}),categorySection:e.object({show:e.boolean()}),nav:e.object({title:e.string(),searchBar:e.object({show:e.boolean()}),links:e.array(e.object({label:e.string(),href:e.string()}))}),footer:e.object({name:e.string(),tagline:e.string(),newsletter:e.object({show:e.boolean()}),credits:e.boolean(),sections:e.array(e.object({header:e.string(),links:e.array(e.object({label:e.string(),href:e.string()}))}))})}),c=async()=>{let o={hero:{show:!0,title:"Discover our Curated Collection",description:"Explore our carefully selected products for your home and lifestyle.",button:{label:"Shop Now",path:"/"},image:{src:"https://files.stripe.com/links/MDB8YWNjdF8xT3BaeG5GSmNWbVh6bURsfGZsX3Rlc3RfaDVvWXowdU9ZbWlobUIyaHpNc1hCeDM200NBzvUjqP",alt:"Cup of coffee"}},categorySection:{show:!0},nav:{title:"Your Next Store",searchBar:{show:!0},links:[{label:"Home",href:"/"},{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},footer:{name:"Your Next Store",tagline:"Handcrafted with passion in California",newsletter:{show:!0},credits:!0,sections:[{header:"Products",links:[{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},{header:"Support",links:[{label:"Features",href:"https://yournextstore.com/#features"},{label:"Pricing",href:"https://yournextstore.com/#pricing"},{label:"Contact Us",href:"mailto:hi@yournextstore.com"}]}]}},n={stripeAccount:void 0,storeId:void 0,secretKey:void 0,config:o},t=await global?.__ynsFindStripeAccount?.();return t?{...t,config:t.config??o}:n};export{i as configSchema,c as getYnsContext};
1
+ import"server-only";var o=async()=>{let t={hero:{show:!0,title:"Discover our Curated Collection",description:"Explore our carefully selected products for your home and lifestyle.",button:{label:"Shop Now",path:"/"},image:{src:"https://files.stripe.com/links/MDB8YWNjdF8xT3BaeG5GSmNWbVh6bURsfGZsX3Rlc3RfaDVvWXowdU9ZbWlobUIyaHpNc1hCeDM200NBzvUjqP",alt:"Cup of coffee"}},categorySection:{show:!0},nav:{title:"Your Next Store",searchBar:{show:!0},links:[{label:"Home",href:"/"},{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},footer:{name:"Your Next Store",tagline:"Handcrafted with passion in California",newsletter:{show:!0},credits:!0,sections:[{header:"Products",links:[{label:"Apparel",href:"/category/apparel"},{label:"Accessories",href:"/category/accessories"}]},{header:"Support",links:[{label:"Features",href:"https://yournextstore.com/#features"},{label:"Pricing",href:"https://yournextstore.com/#pricing"},{label:"Contact Us",href:"mailto:hi@yournextstore.com"}]}]},pages:{"/about":{content:`# Header 1
2
+
3
+ ## Header 2
4
+
5
+ ### Header 3
6
+
7
+ #### Header 4
8
+
9
+ ##### Header 5
10
+
11
+ ###### Header 6
12
+
13
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
14
+
15
+ > This is a quote
16
+
17
+ * This is a list item
18
+ * This is another list item
19
+ * This is a third list item
20
+
21
+ \`\`\`js
22
+ function hello() {
23
+ console.log('Hello world!');
24
+ }
25
+ \`\`\`
26
+ `}}},n={stripeAccount:void 0,storeId:void 0,secretKey:void 0,config:t},e=await global?.__ynsFindStripeAccount?.();return e?{...e,config:e.config??t}:n};export{o as getYnsContext};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "commerce-kit",
4
- "version": "0.0.17",
4
+ "version": "0.0.19",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
7
7
  "keywords": [
@@ -35,6 +35,10 @@
35
35
  "import": "./dist/yns.js",
36
36
  "types": "./dist/yns.d.ts"
37
37
  },
38
+ "./browser": {
39
+ "import": "./dist/browser.js",
40
+ "types": "./dist/browser.d.ts"
41
+ },
38
42
  "./db": {
39
43
  "import": "./dist/db.js",
40
44
  "types": "./dist/db.d.ts"