@getmicdrop/venue-calendar 4.0.19 → 4.0.21
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/dist/{AirbnbSplitMain-D1ktGJoQ.js → AirbnbSplitMain-DEFvlAso.js} +306 -306
- package/dist/AirbnbSplitMain-DEFvlAso.js.map +1 -0
- package/dist/{CarouselView.legacy-ClsjI4wG.js → CarouselView.legacy-Cd8kK6vH.js} +6 -6
- package/dist/{CarouselView.legacy-ClsjI4wG.js.map → CarouselView.legacy-Cd8kK6vH.js.map} +1 -1
- package/dist/{CartView-XnpveVN5.js → CartView-AbAuzng5.js} +3 -3
- package/dist/{CartView-XnpveVN5.js.map → CartView-AbAuzng5.js.map} +1 -1
- package/dist/{Checkout-BV840oyO.js → Checkout-DPDYZJu9.js} +4 -4
- package/dist/{Checkout-BV840oyO.js.map → Checkout-DPDYZJu9.js.map} +1 -1
- package/dist/{Checkout.legacy-DXDFB0sk.js → Checkout.legacy-D3xOmyWR.js} +28 -28
- package/dist/{Checkout.legacy-DXDFB0sk.js.map → Checkout.legacy-D3xOmyWR.js.map} +1 -1
- package/dist/{CheckoutMain-BQ8776ZS.js → CheckoutMain-DhAWxvma.js} +323 -320
- package/dist/CheckoutMain-DhAWxvma.js.map +1 -0
- package/dist/{CheckoutTimer-CrJ_ISKu.js → CheckoutTimer-CtI_yoge.js} +2 -2
- package/dist/{CheckoutTimer-CrJ_ISKu.js.map → CheckoutTimer-CtI_yoge.js.map} +1 -1
- package/dist/{CollectionView-Bj1UUA3g.js → CollectionView-DKsii170.js} +26 -26
- package/dist/{CollectionView-Bj1UUA3g.js.map → CollectionView-DKsii170.js.map} +1 -1
- package/dist/{CollectionView.legacy-D85Bcb49.js → CollectionView.legacy-DwdER9RM.js} +24 -24
- package/dist/{CollectionView.legacy-D85Bcb49.js.map → CollectionView.legacy-DwdER9RM.js.map} +1 -1
- package/dist/{EventDetailsView-yNaTsG9s.js → EventDetailsView-CLXxv27A.js} +2 -2
- package/dist/{EventDetailsView-yNaTsG9s.js.map → EventDetailsView-CLXxv27A.js.map} +1 -1
- package/dist/{FeaturedView.legacy-C8PRE0Yl.js → FeaturedView.legacy-Cgb7Gh1A.js} +17 -17
- package/dist/{FeaturedView.legacy-C8PRE0Yl.js.map → FeaturedView.legacy-Cgb7Gh1A.js.map} +1 -1
- package/dist/{GalleryCard-D4m6USyN.js → GalleryCard-CUq64HSt.js} +12 -12
- package/dist/{GalleryCard-D4m6USyN.js.map → GalleryCard-CUq64HSt.js.map} +1 -1
- package/dist/{GalleryView.legacy-Dkc2p9-3.js → GalleryView.legacy-ro2kmczW.js} +5 -5
- package/dist/{GalleryView.legacy-Dkc2p9-3.js.map → GalleryView.legacy-ro2kmczW.js.map} +1 -1
- package/dist/{GroupedListView.legacy-BEF3wLRm.js → GroupedListView.legacy-Y3GcXSh5.js} +11 -11
- package/dist/{GroupedListView.legacy-BEF3wLRm.js.map → GroupedListView.legacy-Y3GcXSh5.js.map} +1 -1
- package/dist/{SeriesPage-BGIBDhAb.js → SeriesPage-V1FMQvts.js} +5 -5
- package/dist/{SeriesPage-BGIBDhAb.js.map → SeriesPage-V1FMQvts.js.map} +1 -1
- package/dist/{SeriesPage.legacy-Cke7iLEf.js → SeriesPage.legacy-CYr6CzQZ.js} +31 -31
- package/dist/{SeriesPage.legacy-Cke7iLEf.js.map → SeriesPage.legacy-CYr6CzQZ.js.map} +1 -1
- package/dist/{Success-BxBKmrdp.js → Success-8jEuM9Cy.js} +121 -119
- package/dist/Success-8jEuM9Cy.js.map +1 -0
- package/dist/{Success.legacy-CAIcvbKu.js → Success.legacy-DOa5jZEz.js} +13 -13
- package/dist/{Success.legacy-CAIcvbKu.js.map → Success.legacy-DOa5jZEz.js.map} +1 -1
- package/dist/{VenueCalendar-DGVnL-ZI.js → VenueCalendar-l9O0LTJ8.js} +6140 -5779
- package/dist/VenueCalendar-l9O0LTJ8.js.map +1 -0
- package/dist/{ViewTicketsEmbed-8W-tCTuc.js → ViewTicketsEmbed-B7MIbkYB.js} +2 -2
- package/dist/{ViewTicketsEmbed-8W-tCTuc.js.map → ViewTicketsEmbed-B7MIbkYB.js.map} +1 -1
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +423 -422
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/gift-cards.d.ts +0 -5
- package/dist/{labels-DdvfRlAl.js → labels-BjvH_aoG.js} +2 -2
- package/dist/{labels-DdvfRlAl.js.map → labels-BjvH_aoG.js.map} +1 -1
- package/dist/{transform-n7lJc0-D.js → transform-C5z6VUGn.js} +2 -2
- package/dist/{transform-n7lJc0-D.js.map → transform-C5z6VUGn.js.map} +1 -1
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +12 -12
- package/dist/venue-calendar.iife.js +32 -34
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +32 -34
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +1 -1
- package/dist/AirbnbSplitMain-D1ktGJoQ.js.map +0 -1
- package/dist/CheckoutMain-BQ8776ZS.js.map +0 -1
- package/dist/Success-BxBKmrdp.js.map +0 -1
- package/dist/VenueCalendar-DGVnL-ZI.js.map +0 -1
package/dist/api/api.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("@getmicdrop/svelte-components/utils/logger"),k=require("@getmicdrop/svelte-components/utils/formatters"),x=C.createLogger("VC"),J={baseUrl:"https://get-micdrop.com",timeout:3e4,retries:2,retryDelay:500,onError:e=>x.error("API Error:",e)};let y={...J};function W(e){y={...y,...e}}function Q(){return{...y}}function c(){return`${y.baseUrl}/api/v2/public`}function V(){return`${y.baseUrl}/api/public`}function $(){return`${y.baseUrl}/api/orders/v2/public`}async function Y(){return""}const K=e=>new Promise(t=>setTimeout(t,e));async function O(e,t,r){const n=(t.method||"GET").toUpperCase(),a=n==="GET"||n==="HEAD"?r.retries+1:1;let s;for(let i=1;i<=a;i++){const l=new AbortController,_=setTimeout(()=>l.abort(),r.timeout),h=t.signal;let m;h&&(h.aborted?l.abort():(m=()=>l.abort(),h.addEventListener("abort",m,{once:!0})));try{const g=await fetch(e,{...t,signal:l.signal});if(g.status>=500&&i<a)s=new Error(`HTTP ${g.status}`);else return g}catch(g){if(s=g,h?.aborted)throw g}finally{clearTimeout(_),h&&m&&h.removeEventListener("abort",m)}i<a&&await K(r.retryDelay*Math.pow(2,i-1))}throw s}async function X(e,t){return j("GET",e,void 0,t)}async function Z(e,t,r){return j("POST",e,t,r)}async function ee(e,t,r){return j("PUT",e,t,r)}async function te(e,t){return j("DELETE",e,void 0,t)}async function j(e,t,r,n){const o=t.startsWith("http")?t:`${c()}${t}`;try{const a=await O(o,{method:e,headers:{"Content-Type":"application/json",...n?.headers},body:r!==void 0?JSON.stringify(r):void 0,credentials:"include",...n},y);if(!a.ok){const i=await a.json().catch(()=>({})),l=i.error||i.message||`HTTP ${a.status}`;return y.onError(new Error(l)),{success:!1,error:l,statusCode:a.status}}return{success:!0,data:await a.json(),statusCode:a.status}}catch(a){const s=a instanceof Error?a.name==="AbortError"?"Request timed out":a.message:"Unknown error";return y.onError(a instanceof Error?a:new Error(s)),{success:!1,error:s}}}async function re(e,t){try{const r=await O(e,{credentials:"include",...t},y);if(!r.ok){const n=await r.json().catch(()=>({}));return x.error(`API request failed: ${r.status}`,n),null}return r.json()}catch(r){return x.error("API request error:",r),null}}const f=C.createLogger("VC");async function ne(e,t,r){try{const n=await fetch(`${$()}/cart/${e}/payment-intent`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({productQuantities:t,...r&&Object.keys(r).length>0?{donationAmounts:r}:{}})});if(!n.ok){const a=await n.json().catch(()=>({}));throw f.error("Payment intent creation failed:",a),new Error(a.error||"Failed to create payment intent")}const o=await n.json();return f.debug("Payment intent created:",o),o}catch(n){return f.error("createPaymentIntent error:",n),null}}async function oe(e,t){if(!e)return null;try{const r=await fetch(`${$()}/cart/${e}`,{method:"GET",headers:{"Content-Type":"application/json"},credentials:"include"});if(!r.ok)return null;const n=await r.json(),o=n.UUID??n.uuid??"",a=Number(n.EventID??n.eventID??0),s=n.Status??n.status??"",i=n.ExpiresAt??n.expiresAt??"",_=(n.Reservations??n.reservations??[]).map(h=>{const m=h;return{ticketID:Number(m.TicketID??m.ticketID??0),quantity:Number(m.Quantity??m.quantity??0),priceAtReservation:Number(m.PriceAtReservation??m.priceAtReservation??0),status:String(m.Status??m.status??"")}});return s!=="reserved"&&s!=="active"||t!==void 0&&a!==Number(t)?null:{uuid:o,eventID:a,status:s,expiresAt:i,reservations:_}}catch(r){return f.error("getCartByUUID error:",r),null}}async function se(e,t,r){try{const n={};for(const[s,i]of Object.entries(t)){const l=typeof s=="number"?s:parseInt(s,10);!Number.isNaN(l)&&i>0&&(n[l]=i)}const o={};if(r)for(const[s,i]of Object.entries(r)){const l=typeof s=="number"?s:parseInt(s,10);!Number.isNaN(l)&&i>0&&(o[l]=i)}const a=await fetch(`${$()}/cart/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({quantities:n,...Object.keys(o).length>0?{donationAmounts:o}:{}})});if(!a.ok){const s=await a.json().catch(()=>({}));return f.error("Cart update failed:",s),!1}return!0}catch(n){return f.error("updateCartQuantities error:",n),!1}}async function ae(e){try{const t=await fetch(`${c()}/orders/complete/${e}`,{method:"POST",headers:{"Content-Type":"application/json"}});return t.ok?{success:!0,message:(await t.json()).message}:{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to complete reservation"}}catch(t){return f.error("Error completing reservation:",t),{success:!1,error:"Network error completing reservation"}}}async function ce(e){try{const t=await fetch(`${c()}/orders/cancel/${e}`,{method:"POST",headers:{"Content-Type":"application/json"}});return t.ok?{success:!0,message:(await t.json()).message}:{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to cancel reservation"}}catch(t){return f.error("Error cancelling reservation:",t),{success:!1,error:"Network error cancelling reservation"}}}async function ie(e,t){try{const r=await fetch(`${c()}/orders/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventID:e,promoCode:t})});if(!r.ok){const n=await r.json().catch(()=>({}));return f.error("Create order failed:",n),null}return r.json()}catch(r){return f.error("createOrder error:",r),null}}async function ue(e){return re(`${c()}/orders/${e}`)}async function le(e,t){try{const r=await fetch(`${$()}/validatePaymentIntent/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){const o=await r.json().catch(()=>({}));return f.error("Payment validation failed:",o),{success:!1,status:"failed",error:o.error||"Payment validation failed"}}const n=await r.json();return{success:!0,status:n.status||"Payment succeeded",orderUUID:n.orderUUID||n.uuid}}catch(r){return f.error("validatePaymentIntent error:",r),null}}async function de(e){try{const t=await fetch(`${c()}/orders/extend-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderUuid:e})});if(!t.ok)return{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to extend session",statusCode:t.status};const r=await t.json();return{success:!0,newExpiryTime:r.newExpiryTime,remainingExtensions:r.remainingExtensions}}catch(t){return f.error("Error extending checkout session:",t),{success:!1,error:"Network error extending session"}}}async function fe(e){try{const t=await fetch(`${c()}/orders/session/${e}`);if(!t.ok)return{error:(await t.json().catch(()=>({}))).error||"No active session found",notFound:t.status===404};const r=await t.json();return{expiresAt:r.expiresAt,extensionCount:r.extensionCount,remainingExtensions:r.remainingExtensions,canExtend:r.canExtend,reservationCount:r.reservationCount}}catch(t){return f.error("Error getting session status:",t),{error:"Network error getting session status"}}}async function me(e={}){try{const t=await fetch(`${c()}/orders/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().catch(()=>({}));return f.error("Order initiation failed:",n),null}return(await t.json()).uuid}catch(t){return f.error("initiateOrder error:",t),null}}async function he(e){if(typeof window>"u")return;const r=new URLSearchParams(window.location.search).get("utm_source")||"Direct";try{await fetch(`${c()}/utm/${e}/${encodeURIComponent(r)}`)}catch(n){f.error("UTM tracking failed:",n)}}const N=C.createLogger("VC");async function ye(e,t){try{if(!t||!t.trim())return{valid:!1,error:"Promo code is required"};const r=encodeURIComponent(t.trim()),n=await fetch(`${c()}/promo-codes/validate/${e}/${r}`);if(!n.ok)return n.status===404?{valid:!1,error:"Invalid promo code"}:{valid:!1,error:(await n.json().catch(()=>({}))).error||"Failed to validate code"};const o=await n.json();return{valid:o.valid??!0,revealHiddenTickets:o.revealHiddenTickets,revealTicketIds:o.revealTicketIds,provideDiscount:o.provideDiscount,discountType:o.discountType,amount:o.amount,code:o.code||t}}catch(r){return N.error("Error validating promo code:",r),{valid:!1,error:"Network error validating code"}}}async function ge(e){try{const t=await fetch(`${c()}/promo-codes/check/${e}`);return t.ok?(await t.json()).hasPromoCodes===!0:!0}catch(t){return N.error("Error checking promo codes availability:",t),!0}}async function we(e,t){try{const r=await fetch(`${c()}/orders/${e}/apply-promo`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:t})});return r.ok?{success:!0}:{success:!1,error:(await r.json().catch(()=>({}))).error||"Failed to apply promo code"}}catch(r){return N.error("Error applying promo code:",r),{success:!1,error:"Network error applying code"}}}async function ve(e){try{const t=await fetch(`${c()}/orders/${e}/remove-promo`,{method:"POST",headers:{"Content-Type":"application/json"}});return t.ok?{success:!0}:{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to remove promo code"}}catch(t){return N.error("Error removing promo code:",t),{success:!1,error:"Network error removing code"}}}const u=C.createLogger("VC"),I=new Map;async function _e(e,t=fetch){const r=String(e);if(t===fetch){const o=I.get(r);if(o)return o}const n=(async()=>{try{const o=await t(`${c()}/events/${e}`);if(!o.ok)throw new Error(`Failed to fetch event details: ${o.status}`);return await o.json()}catch(o){return u.error("Error fetching event details:",o),null}})();return t===fetch&&(I.set(r,n),n.finally(()=>{I.get(r)===n&&I.delete(r)})),n}async function pe(e){try{const t=await fetch(`${c()}/tickets/event/${e}`);if(!t.ok)throw new Error(`Failed to fetch tickets: ${t.status}`);const r=await t.json();return Array.isArray(r)?r:[]}catch(t){return u.error("Error fetching tickets:",t),[]}}async function Ce(e){try{if(!e)return u.warn("fetchEventPerformers called without eventId"),{performers:[],showPerformers:!1};const t=await fetch(`${c()}/events/${e}/performers`);if(!t.ok)return u.error(`Failed to fetch performers: ${t.status} ${t.statusText}`),{performers:[],showPerformers:!1};const r=await t.json();return{performers:Array.isArray(r.performers)?r.performers:[],showPerformers:r.showPerformers===!0}}catch(t){return u.error("Error fetching event performers:",t),{performers:[],showPerformers:!1}}}async function Pe(e){try{if(!e)return u.warn("fetchAllVenues called without orgId"),[];const t=await fetch(`${c()}/venues/organization/${e}`);if(!t.ok)return u.error(`Failed to fetch venues: ${t.status} ${t.statusText}`),[];const r=await t.json();return Array.isArray(r)?r:[]}catch(t){return u.error("Error fetching venues:",t),[]}}async function be(e){try{if(!e)return u.warn("fetchVenueEvents called without venueId"),[];const t=await fetch(`${c()}/events/venue/${e}`);if(!t.ok)return u.error(`Failed to fetch venue events: ${t.status} ${t.statusText}`),[];const r=await t.json();return Array.isArray(r)?r:[]}catch(t){return u.error("Error fetching venue events:",t),[]}}async function $e(e,t,r){try{const n=await fetch(`${c()}/events/venue/${e}/month/${t}/${r}`);if(!n.ok)return u.error(`Failed to fetch month events: ${n.status}`),[];const o=await n.json();return Array.isArray(o.events)?o.events:Array.isArray(o)?o:[]}catch(n){return u.error("Error fetching month events:",n),[]}}async function Se(e,t,r){try{const n=await fetch(`${c()}/events/organization/${e}/month/${t}/${r}`);if(!n.ok)return u.error(`Failed to fetch org month events: ${n.status}`),[];const o=await n.json();return Array.isArray(o.events)?o.events:Array.isArray(o)?o:[]}catch(n){return u.error("Error fetching org month events:",n),[]}}async function De(e){try{const t=await fetch(`${c()}/series/${e}/occurrences`);return t.ok?t.json():(u.error(`Failed to fetch series occurrences: ${t.status}`),null)}catch(t){return u.error("Error fetching series occurrences:",t),null}}async function Ae(e,t){try{const r=await fetch(`${c()}/series/${e}/occurrences?venueId=${t}`);return r.ok?r.json():(u.error(`Failed to fetch series with CTA: ${r.status}`),null)}catch(r){return u.error("Error fetching series occurrences:",r),null}}async function Ie(e){try{const t=await fetch(`${c()}/series/${e}/page`);if(!t.ok)throw new Error(`Failed to fetch series page: ${t.status}`);return t.json()}catch(t){return u.error("Error fetching series page:",t),null}}async function je(e,t){try{const r=t?`${c()}/collections/${e}/public?password=${encodeURIComponent(t)}`:`${c()}/collections/${e}/public`,n=await fetch(r);if(!n.ok)throw new Error(`Failed to fetch collection: ${n.status}`);return n.json()}catch(r){return u.error("Error fetching collection:",r),null}}async function Ne(e,t){try{const r=encodeURIComponent(t),n=await fetch(`${c()}/collections/${e}/check-password/${r}`);return n.ok?(await n.json()).valid===!0:!1}catch(r){return u.error("Error checking collection password:",r),!1}}async function ke(e,t){try{const r=await fetch(`${c()}/events/${e}/check-password`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:t})});if(!r.ok)return{valid:!1};const n=await r.json();return typeof n=="boolean"?{valid:n}:{valid:n.valid===!0||n===!0}}catch(r){return u.error("Error checking event password:",r),{valid:!1}}}async function xe(e,t){try{const r=t?`${c()}/events/venue/${t}`:e?`${c()}/venues/organization/${e}`:`${c()}/health`;return(await fetch(r,{method:"HEAD"})).ok}catch(r){return u.error("Network connection test failed:",r),!1}}const b=C.createLogger("VC");async function L(e){try{if(!e)return b.warn("getVenue called without venueId"),null;const t=await fetch(`${c()}/venues/${e}`);return t.ok?t.json():(b.error(`Failed to fetch venue: ${t.status}`),null)}catch(t){return b.error("Error fetching venue:",t),null}}async function Ue(e){const t=await L(e);return t?{serviceFeePercentage:t.serviceFeePercentage??0,serviceFeeCents:t.serviceFeeCents??0,taxPercentage:t.taxPercentage??0}:null}async function Te(e){try{if(!e)return b.warn("getVenueBySlug called without slug"),null;const t=encodeURIComponent(e),r=await fetch(`${c()}/venues/slug/${t}`);return r.ok?r.json():(b.error(`Failed to fetch venue by slug: ${r.status}`),null)}catch(t){return b.error("Error fetching venue by slug:",t),null}}const v=C.createLogger("VC"),Fe="https://get-micdrop.com",Re=`${Fe}/api/orders/v2`,F=()=>$();async function Ee(e){try{const t=await fetch(`${Re}/gift-cards`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().catch(()=>({}));throw v.error("Gift card purchase creation failed:",n),new Error(n.error||"Failed to create gift card purchase")}const r=await t.json();return v.debug("Gift card purchase created:",r),r}catch(t){return v.error("Gift card purchase creation error:",t),null}}async function Oe(e,t){try{const r=await fetch(`${F()}/cart/${e}/apply-gift-card`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({giftCardCode:t})});if(!r.ok){if(r.status===429)return{valid:!1,error:"Too many attempts. Please wait a moment and try again."};const o=await r.json().catch(()=>({}));return v.error("Apply gift card failed:",o),{valid:!1,error:o.error||"Invalid gift card code"}}const n=await r.json();return{valid:!0,giftCardCode:n.giftCardCode,giftCardAmount:n.giftCardAmount,giftCardBalance:n.giftCardBalance,paymentType:n.paymentType,stripeAmount:n.stripeAmount,orderTotal:n.orderTotal,requiresStripe:n.requiresStripe}}catch(r){return v.error("applyGiftCard error:",r),{valid:!1,error:"Network error. Please check your connection and try again."}}}async function Le(e){try{const t=await fetch(`${F()}/cart/${e}/gift-card`,{method:"DELETE",headers:{"Content-Type":"application/json"}});if(!t.ok){const r=await t.json().catch(()=>({}));return v.error("Remove gift card failed:",r),{success:!1,error:r.error||"Failed to remove gift card"}}return{success:!0}}catch(t){return v.error("removeGiftCard error:",t),{success:!1,error:"Network error. Please check your connection and try again."}}}async function qe(e,t){try{const r=await fetch(`${F()}/cart/${e}/complete-gift-card-payment`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({firstName:t.firstName,lastName:t.lastName,email:t.email,phoneNumber:t.phoneNumber||null,mailingList:t.mailingList||!1})});if(!r.ok){const o=await r.json().catch(()=>({}));return v.error("Complete gift card payment failed:",o),{success:!1,error:o.error||"Failed to complete payment"}}const n=await r.json();return{success:!0,orderId:n.orderId,confirmationNumber:n.confirmationNumber}}catch(r){return v.error("completeGiftCardPayment error:",r),{success:!1,error:"Network error. Please check your connection and try again."}}}const U=C.createLogger("VC"),Ge={waitlist_not_enabled:"Waitlist is not available for this event",event_not_found:"Event not found",invalid_phone:"Please enter a valid phone number",already_purchased:"You have already purchased tickets for this event",phone_already_registered:"This phone number is already on the waitlist"};async function Be(e,t,r=null,n=!1){try{const o={email:t};r&&n&&(o.phone=r,o.smsOptIn=!0);const a=await fetch(`${c()}/events/${e}/waitlist`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){const i=await a.json().catch(()=>({}));return U.error("Join waitlist failed:",i),{success:!1,error:Ge[i.error]||"Failed to join waitlist. Please try again."}}const s=await a.json();return{success:!0,position:s.position,updated:s.updated}}catch(o){return U.error("joinWaitlist error:",o),{success:!1,error:"Network error. Please check your connection and try again."}}}async function Me(e,t){try{const r=await fetch(`${c()}/events/${e}/waitlist/position?email=${encodeURIComponent(t)}`);return r.ok?{position:(await r.json()).position}:r.status===404?{position:null}:{position:null,error:"Failed to check position"}}catch(r){return U.error("getWaitlistPosition error:",r),{position:null,error:"Network error"}}}function ze(e){if(!e||!(e.isHidden===!0||typeof e.visibility=="number"&&e.visibility>=2)||e.salesChannel===2)return!1;const r=new Date,n=e.salesBegin||e.salesStart||e.saleBegin||e.onSaleStart,o=e.salesEnd||e.saleEnd||e.onSaleEnd;if(n&&new Date(n)>r||o&&new Date(o)<r)return!1;const a=e.remainingCapacity??e.quantityRemaining??e.quantity;return!(e.soldOut||a!=null&&a<=0)}function He(e,t,r={}){const{cancelled:n=!1,isRegistration:o=!1,waitlistEnabled:a=!1}=r,s=new Date;if(n)return{text:"Cancelled",disabled:!0,reason:"cancelled"};const i=e.endDateTime||e.startDateTime;if(i&&new Date(i)<s)return{text:"Sales ended",disabled:!0,reason:"event_past"};const l=e?.hasPurchasableHiddenTickets===!0||Array.isArray(t)&&t.some(ze),_=(t||[]).filter(d=>d.salesChannel!==2&&!d.isHidden&&!(typeof d.visibility=="number"&&d.visibility>=2));if(_.length===0)return l?{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"No tickets available",disabled:!0,reason:"no_tickets"};let h=!1,m=!0,g=!0,w=null;for(const d of _){const P=d.salesBegin||d.salesStart||d.saleBegin||d.onSaleStart,A=d.salesEnd||d.saleEnd||d.onSaleEnd,p=d.remainingCapacity??d.quantityRemaining??d.quantity,S=d.soldOut||p!=null&&p<=0,D=P?new Date(P)>s:!1,R=A?new Date(A)<s:!1;if(!S&&!D&&!R&&(h=!0),S||(m=!1),D||(g=!1),D&&P&&!S&&!R){const E=new Date(P);(!w||E<w)&&(w=E)}}if(h)return{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"available"};if(g&&w){if(l)return{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"};const d=w.getTime()-s.getTime(),P=d/(1e3*60*60),A=d/(1e3*60*60*24);let p;if(P<24)p=w.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});else if(A<=7)p=k.formatDateRaw(w,{weekday:"short",hour:"numeric",minute:"2-digit",hour12:!0},"en-US");else{const S=k.formatDateRaw(w,{month:"short",day:"numeric"},"en-US"),D=w.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});p=`${S} ${D}`}return{text:`On sale ${p}`,disabled:!0,reason:"coming_soon"}}return m?l?{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:a?{text:"Join Waitlist",disabled:!1,reason:"sold_out_waitlist"}:{text:"Sold out",disabled:!0,reason:"sold_out"}:l?{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"Sales ended",disabled:!0,reason:"sales_ended"}}function q(e){return{uuid:e.uuid||String(e.id||e.ID||""),id:e.id||e.ID,ticketNumber:e.ticketNumber||e.ticket_number,orderId:e.orderId||e.order_id,attendeeFirstName:e.attendeeFirstName||e.attendee_first_name||e.firstName,attendeeLastName:e.attendeeLastName||e.attendee_last_name||e.lastName,attendeeEmail:e.attendeeEmail||e.attendee_email||e.email,ticketName:e.ticketName||e.ticket_name||e.name||"",ticketTypeId:e.ticketTypeId||e.ticket_type_id,purchasePrice:e.purchasePrice||e.purchase_price||e.price||0,status:e.status,checkedIn:e.checkedIn||e.checked_in,checkedInAt:e.checkedInAt||e.checked_in_at}}function G(e){const t=e.purchasedTickets||e.tickets||e.purchased_tickets||[];return{uuid:e.uuid||String(e.id||e.ID||""),id:e.id||e.ID,customerEmail:e.customerEmail||e.email||e.customer_email||"",customerFirstName:e.customerFirstName||e.firstName||e.first_name,customerLastName:e.customerLastName||e.lastName||e.last_name,status:e.status||"unknown",totalAmount:e.totalAmount||e.total||e.total_amount||0,subtotal:e.subtotal,serviceFeesAmount:e.serviceFeesAmount||e.serviceFee||e.service_fee||e.service_fees_amount||0,taxAmount:e.taxAmount||e.tax||e.tax_amount||0,discount:e.discount||0,paymentIntentId:e.paymentIntentId||e.payment_intent_id,paymentMethod:e.paymentMethod||e.payment_method,purchasedTickets:t.map(q),createdAt:e.createdAt||e.created_at,updatedAt:e.updatedAt||e.updated_at}}function Je(e){const t=G(e),r=t.uuid.split("-")[0]||t.uuid;return{orderId:t.uuid,displayOrderId:r,email:t.customerEmail,customerName:[t.customerFirstName,t.customerLastName].filter(Boolean).join(" "),total:t.totalAmount,formattedTotal:`${k.formatCurrency(t.totalAmount/100)}`,ticketCount:t.purchasedTickets.length,status:t.status}}const We="https://micdrop-images.sfo3.digitaloceanspaces.com";function B(e){return e?e.startsWith("http")?e:`${We}/${e.replace(/^\//,"")}`:""}function T(e){const t=e.imageUrl||e.imageURL||e.image_url||e.image||"";return B(t)}function M(e){const t=e.ctaState||e.cta_state;if(t)return t;if(e.isCancelled||e.is_cancelled)return"ended";const r=e.startDateTime||e.start_date_time||e.date;if(r){const s=new Date(r).getTime(),i=Date.now();if(s<i)return"ended"}const n=e.ticketsAvailable??e.tickets_available;if(n!==void 0)return n<=0?"sold_out":"available";const o=e.availableTickets||e.available_tickets||e.tickets||[];return o.length===0?"coming_soon":o.reduce((s,i)=>{const l=i.quantityAvailable??i.quantity_available??i.quantity??0,_=i.quantitySold??i.quantity_sold??0;return s+Math.max(0,l-_)},0)<=0?"sold_out":"available"}function z(e){return{id:e.id||e.ID,name:e.name||e.ticketName||"",description:e.description,price:e.price||0,quantity:e.quantity||e.totalQuantity||0,quantitySold:e.quantitySold||e.quantity_sold||0,quantityAvailable:e.quantityAvailable||e.quantity_available||(e.quantity||0)-(e.quantitySold||0),minPerOrder:e.minPerOrder||e.min_per_order||1,maxPerOrder:e.maxPerOrder||e.max_per_order||10,saleStartDate:e.saleStartDate||e.sale_start_date,saleEndDate:e.saleEndDate||e.sale_end_date,isHidden:e.isHidden||e.is_hidden||!1,revealWithPromoCode:e.revealWithPromoCode||e.reveal_with_promo_code,ticketType:e.ticketType||e.ticket_type||0,sectionId:e.sectionId||e.section_id,sortOrder:e.sortOrder||e.sort_order||0}}function H(e){const r=(e.availableTickets||e.available_tickets||e.tickets||[]).map(z),n=r.map(s=>s.price).filter(s=>s>0),o=n.length>0?Math.min(...n):void 0,a=n.length>0?Math.max(...n):void 0;return{eventID:e.eventID||e.id||e.ID||0,id:e.id||e.ID,name:e.name||e.title||"",title:e.title||e.name,slug:e.slug,description:e.description,date:e.date||e.startDateTime||e.start_date_time||"",startDateTime:e.startDateTime||e.start_date_time,endDateTime:e.endDateTime||e.end_date_time,doorsOpenTime:e.doorsOpenTime||e.doors_open_time,timezone:e.timezone||e.time_zone,venueId:e.venueId||e.venue_id,venueName:e.venueName||e.venue_name,venueAddress:e.venueAddress||e.venue_address,location:e.location||e.venueAddress||e.venue_address,imageUrl:T(e),imageURL:T(e),status:e.status,isPublished:e.isPublished??e.is_published,isCancelled:e.isCancelled??e.is_cancelled,availableTickets:r,ticketsAvailable:e.ticketsAvailable??e.tickets_available??r.reduce((s,i)=>s+(i.quantityAvailable||0),0),ticketsSold:e.ticketsSold??e.tickets_sold,minPrice:e.minPrice??e.min_price??o,maxPrice:e.maxPrice??e.max_price??a,ctaText:e.ctaText||e.cta_text,ctaState:M(e),showPerformers:e.showPerformers??e.show_performers,eventSeriesId:e.eventSeriesId||e.event_series_id,seriesInstanceNumber:e.seriesInstanceNumber||e.series_instance_number}}const Qe=H,Ve="https://micdrop-images.sfo3.digitaloceanspaces.com";function Ye(e){return e?e.startsWith("http")?e:`${Ve}/${e.replace(/^\//,"")}`:""}function Ke(e){const t=e.logoUrl||e.logo_url||e.logo;return{id:e.id||e.ID||0,name:e.name||"",slug:e.slug,address:e.address,googleLocationNameCache:e.googleLocationNameCache||e.google_location_name_cache,city:e.city,state:e.state,zipCode:e.zipCode||e.zip_code,country:e.country,timezone:e.timezone||e.time_zone,logoUrl:Ye(t),serviceFeePercentage:e.serviceFeePercentage??e.service_fee_percentage??0,serviceFeeCents:e.serviceFeeCents??e.service_fee_cents??0,taxPercentage:e.taxPercentage??e.tax_percentage??0,organizationId:e.organizationId||e.organization_id}}function Xe(e){return{serviceFeePercentage:e.serviceFeePercentage??e.service_fee_percentage??0,serviceFeeCents:e.serviceFeeCents??e.service_fee_cents??0,taxPercentage:e.taxPercentage??e.tax_percentage??0}}function Ze(e){return[e.address,e.city,e.state,e.zipCode].filter(Boolean).join(", ")}exports.apiDelete=te;exports.apiGet=X;exports.apiPost=Z;exports.apiPut=ee;exports.applyGiftCard=Oe;exports.applyPromoCode=we;exports.calculateCtaState=M;exports.cancelReservation=ce;exports.checkCollectionPassword=Ne;exports.checkEventPassword=ke;exports.completeGiftCardPayment=qe;exports.completeReservation=ae;exports.computeCtaState=He;exports.configureApi=W;exports.createGiftCardPurchase=Ee;exports.createOrder=ie;exports.createPaymentIntent=ne;exports.extendCheckoutSession=de;exports.extractVenueFees=Xe;exports.fetchAllVenues=Pe;exports.fetchEventDetails=_e;exports.fetchEventPerformers=Ce;exports.fetchEventTickets=pe;exports.fetchPublicCollection=je;exports.fetchSeriesOccurrences=Ae;exports.fetchSeriesPage=Ie;exports.fetchVenueEvents=be;exports.formatVenueAddress=Ze;exports.getApiConfig=Q;exports.getCDNImageUrl=B;exports.getCartByUUID=oe;exports.getClientIP=Y;exports.getEventImageUrl=T;exports.getLegacyPublicUrl=V;exports.getMonthEvents=$e;exports.getOrder=ue;exports.getOrdersV2Url=$;exports.getOrgMonthEvents=Se;exports.getPublicBaseUrl=c;exports.getSeriesOccurrences=De;exports.getSessionStatus=fe;exports.getVenue=L;exports.getVenueBySlug=Te;exports.getVenueFees=Ue;exports.getWaitlistPosition=Me;exports.hasPromoCodes=ge;exports.initiateOrder=me;exports.joinWaitlist=Be;exports.removeGiftCard=Le;exports.removePromoCode=ve;exports.testNetworkConnection=xe;exports.trackUTMSource=he;exports.transformAvailableTicket=z;exports.transformEvent=H;exports.transformEventData=Qe;exports.transformOrder=G;exports.transformOrderForDisplay=Je;exports.transformTicket=q;exports.transformVenue=Ke;exports.updateCartQuantities=se;exports.validatePaymentIntent=le;exports.validatePromoCode=ye;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("@getmicdrop/svelte-components/utils/logger"),$=require("@getmicdrop/svelte-components"),x=require("@getmicdrop/svelte-components/utils/formatters"),T=P.createLogger("VC"),W={baseUrl:"https://get-micdrop.com",timeout:3e4,retries:2,retryDelay:500,onError:e=>T.error("API Error:",e)};let y={...W};function Q(e){y={...y,...e}}function V(){return{...y}}function c(){return`${y.baseUrl}/api/v2/public`}function Y(){return`${y.baseUrl}/api/public`}function S(){return`${y.baseUrl}/api/orders/v2/public`}async function K(){return""}const X=e=>new Promise(t=>setTimeout(t,e));async function L(e,t,r){const n=(t.method||"GET").toUpperCase(),a=n==="GET"||n==="HEAD"?r.retries+1:1;let s;for(let i=1;i<=a;i++){const l=new AbortController,p=setTimeout(()=>l.abort(),r.timeout),h=t.signal;let m;h&&(h.aborted?l.abort():(m=()=>l.abort(),h.addEventListener("abort",m,{once:!0})));try{const g=await fetch(e,{...t,signal:l.signal});if(g.status>=500&&i<a)s=new Error(`HTTP ${g.status}`);else return g}catch(g){if(s=g,h?.aborted)throw g}finally{clearTimeout(p),h&&m&&h.removeEventListener("abort",m)}i<a&&await X(r.retryDelay*Math.pow(2,i-1))}throw s}async function Z(e,t){return N("GET",e,void 0,t)}async function ee(e,t,r){return N("POST",e,t,r)}async function te(e,t,r){return N("PUT",e,t,r)}async function re(e,t){return N("DELETE",e,void 0,t)}async function N(e,t,r,n){const o=t.startsWith("http")?t:`${c()}${t}`;try{const a=await L(o,{method:e,headers:{"Content-Type":"application/json",...n?.headers},body:r!==void 0?JSON.stringify(r):void 0,credentials:"include",...n},y);if(!a.ok){const i=await a.json().catch(()=>({})),l=i.error||i.message||`HTTP ${a.status}`;return y.onError(new Error(l)),{success:!1,error:l,statusCode:a.status}}return{success:!0,data:await a.json(),statusCode:a.status}}catch(a){const s=a instanceof Error?a.name==="AbortError"?"Request timed out":a.message:"Unknown error";return y.onError(a instanceof Error?a:new Error(s)),{success:!1,error:s}}}async function ne(e,t){try{const r=await L(e,{credentials:"include",...t},y);if(!r.ok){const n=await r.json().catch(()=>({}));return T.error(`API request failed: ${r.status}`,n),null}return r.json()}catch(r){return T.error("API request error:",r),null}}const f=P.createLogger("VC");async function oe(e,t,r){try{const n=await fetch(`${S()}/cart/${e}/payment-intent`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({productQuantities:t,...r&&Object.keys(r).length>0?{donationAmounts:r}:{}})});if(!n.ok){const a=await n.json().catch(()=>({}));throw f.error("Payment intent creation failed:",a),new $.AppError(a.error||"Failed to create payment intent","lib/api/orders/createPaymentIntent")}const o=await n.json();return f.debug("Payment intent created:",o),o}catch(n){return f.error("createPaymentIntent error:",n),null}}async function se(e,t){if(!e)return null;try{const r=await fetch(`${S()}/cart/${e}`,{method:"GET",headers:{"Content-Type":"application/json"},credentials:"include"});if(!r.ok)return null;const n=await r.json(),o=n.UUID??n.uuid??"",a=Number(n.EventID??n.eventID??0),s=n.Status??n.status??"",i=n.ExpiresAt??n.expiresAt??"",p=(n.Reservations??n.reservations??[]).map(h=>{const m=h;return{ticketID:Number(m.TicketID??m.ticketID??0),quantity:Number(m.Quantity??m.quantity??0),priceAtReservation:Number(m.PriceAtReservation??m.priceAtReservation??0),status:String(m.Status??m.status??"")}});return s!=="reserved"&&s!=="active"||t!==void 0&&a!==Number(t)?null:{uuid:o,eventID:a,status:s,expiresAt:i,reservations:p}}catch(r){return f.error("getCartByUUID error:",r),null}}async function ae(e,t,r){try{const n={};for(const[s,i]of Object.entries(t)){const l=typeof s=="number"?s:parseInt(s,10);!Number.isNaN(l)&&i>0&&(n[l]=i)}const o={};if(r)for(const[s,i]of Object.entries(r)){const l=typeof s=="number"?s:parseInt(s,10);!Number.isNaN(l)&&i>0&&(o[l]=i)}const a=await fetch(`${S()}/cart/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({quantities:n,...Object.keys(o).length>0?{donationAmounts:o}:{}})});if(!a.ok){const s=await a.json().catch(()=>({}));return f.error("Cart update failed:",s),!1}return!0}catch(n){return f.error("updateCartQuantities error:",n),!1}}async function ce(e){try{const t=await fetch(`${c()}/orders/complete/${e}`,{method:"POST",headers:{"Content-Type":"application/json"}});return t.ok?{success:!0,message:(await t.json()).message}:{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to complete reservation"}}catch(t){return f.error("Error completing reservation:",t),{success:!1,error:"Network error completing reservation"}}}async function ie(e){try{const t=await fetch(`${c()}/orders/cancel/${e}`,{method:"POST",headers:{"Content-Type":"application/json"}});return t.ok?{success:!0,message:(await t.json()).message}:{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to cancel reservation"}}catch(t){return f.error("Error cancelling reservation:",t),{success:!1,error:"Network error cancelling reservation"}}}async function ue(e,t){try{const r=await fetch(`${c()}/orders/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventID:e,promoCode:t})});if(!r.ok){const n=await r.json().catch(()=>({}));return f.error("Create order failed:",n),null}return r.json()}catch(r){return f.error("createOrder error:",r),null}}async function le(e){return ne(`${c()}/orders/${e}`)}async function de(e,t){try{const r=await fetch(`${S()}/validatePaymentIntent/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){const o=await r.json().catch(()=>({}));return f.error("Payment validation failed:",o),{success:!1,status:"failed",error:o.error||"Payment validation failed"}}const n=await r.json();return{success:!0,status:n.status||"Payment succeeded",orderUUID:n.orderUUID||n.uuid}}catch(r){return f.error("validatePaymentIntent error:",r),null}}async function fe(e){try{const t=await fetch(`${c()}/orders/extend-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({orderUuid:e})});if(!t.ok)return{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to extend session",statusCode:t.status};const r=await t.json();return{success:!0,newExpiryTime:r.newExpiryTime,remainingExtensions:r.remainingExtensions}}catch(t){return f.error("Error extending checkout session:",t),{success:!1,error:"Network error extending session"}}}async function me(e){try{const t=await fetch(`${c()}/orders/session/${e}`);if(!t.ok)return{error:(await t.json().catch(()=>({}))).error||"No active session found",notFound:t.status===404};const r=await t.json();return{expiresAt:r.expiresAt,extensionCount:r.extensionCount,remainingExtensions:r.remainingExtensions,canExtend:r.canExtend,reservationCount:r.reservationCount}}catch(t){return f.error("Error getting session status:",t),{error:"Network error getting session status"}}}async function he(e={}){try{const t=await fetch(`${c()}/orders/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().catch(()=>({}));return f.error("Order initiation failed:",n),null}return(await t.json()).uuid}catch(t){return f.error("initiateOrder error:",t),null}}async function ye(e){if(typeof window>"u")return;const r=new URLSearchParams(window.location.search).get("utm_source")||"Direct";try{await fetch(`${c()}/utm/${e}/${encodeURIComponent(r)}`)}catch(n){f.error("UTM tracking failed:",n)}}const k=P.createLogger("VC");async function ge(e,t){try{if(!t||!t.trim())return{valid:!1,error:"Promo code is required"};const r=encodeURIComponent(t.trim()),n=await fetch(`${c()}/promo-codes/validate/${e}/${r}`);if(!n.ok)return n.status===404?{valid:!1,error:"Invalid promo code"}:{valid:!1,error:(await n.json().catch(()=>({}))).error||"Failed to validate code"};const o=await n.json();return{valid:o.valid??!0,revealHiddenTickets:o.revealHiddenTickets,revealTicketIds:o.revealTicketIds,provideDiscount:o.provideDiscount,discountType:o.discountType,amount:o.amount,code:o.code||t}}catch(r){return k.error("Error validating promo code:",r),{valid:!1,error:"Network error validating code"}}}async function we(e){try{const t=await fetch(`${c()}/promo-codes/check/${e}`);return t.ok?(await t.json()).hasPromoCodes===!0:!0}catch(t){return k.error("Error checking promo codes availability:",t),!0}}async function ve(e,t){try{const r=await fetch(`${c()}/orders/${e}/apply-promo`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:t})});return r.ok?{success:!0}:{success:!1,error:(await r.json().catch(()=>({}))).error||"Failed to apply promo code"}}catch(r){return k.error("Error applying promo code:",r),{success:!1,error:"Network error applying code"}}}async function pe(e){try{const t=await fetch(`${c()}/orders/${e}/remove-promo`,{method:"POST",headers:{"Content-Type":"application/json"}});return t.ok?{success:!0}:{success:!1,error:(await t.json().catch(()=>({}))).error||"Failed to remove promo code"}}catch(t){return k.error("Error removing promo code:",t),{success:!1,error:"Network error removing code"}}}const u=P.createLogger("VC"),j=new Map;async function be(e,t=fetch){const r=String(e);if(t===fetch){const o=j.get(r);if(o)return o}const n=(async()=>{try{const o=await t(`${c()}/events/${e}`);if(!o.ok)throw new $.AppError(`Failed to fetch event details: ${o.status}`,"lib/api/events/fetchEventDetails");return await o.json()}catch(o){return u.error("Error fetching event details:",o),null}})();return t===fetch&&(j.set(r,n),n.finally(()=>{j.get(r)===n&&j.delete(r)})),n}async function Pe(e){try{const t=await fetch(`${c()}/tickets/event/${e}`);if(!t.ok)throw new $.AppError(`Failed to fetch tickets: ${t.status}`,"lib/api/events/fetchEventTickets");const r=await t.json();return Array.isArray(r)?r:[]}catch(t){return u.error("Error fetching tickets:",t),[]}}async function _e(e){try{if(!e)return u.warn("fetchEventPerformers called without eventId"),{performers:[],showPerformers:!1};const t=await fetch(`${c()}/events/${e}/performers`);if(!t.ok)return u.error(`Failed to fetch performers: ${t.status} ${t.statusText}`),{performers:[],showPerformers:!1};const r=await t.json();return{performers:Array.isArray(r.performers)?r.performers:[],showPerformers:r.showPerformers===!0}}catch(t){return u.error("Error fetching event performers:",t),{performers:[],showPerformers:!1}}}async function Ce(e){try{if(!e)return u.warn("fetchAllVenues called without orgId"),[];const t=await fetch(`${c()}/venues/organization/${e}`);if(!t.ok)return u.error(`Failed to fetch venues: ${t.status} ${t.statusText}`),[];const r=await t.json();return Array.isArray(r)?r:[]}catch(t){return u.error("Error fetching venues:",t),[]}}async function $e(e){try{if(!e)return u.warn("fetchVenueEvents called without venueId"),[];const t=await fetch(`${c()}/events/venue/${e}`);if(!t.ok)return u.error(`Failed to fetch venue events: ${t.status} ${t.statusText}`),[];const r=await t.json();return Array.isArray(r)?r:[]}catch(t){return u.error("Error fetching venue events:",t),[]}}async function Se(e,t,r){try{const n=await fetch(`${c()}/events/venue/${e}/month/${t}/${r}`);if(!n.ok)return u.error(`Failed to fetch month events: ${n.status}`),[];const o=await n.json();return Array.isArray(o.events)?o.events:Array.isArray(o)?o:[]}catch(n){return u.error("Error fetching month events:",n),[]}}async function De(e,t,r){try{const n=await fetch(`${c()}/events/organization/${e}/month/${t}/${r}`);if(!n.ok)return u.error(`Failed to fetch org month events: ${n.status}`),[];const o=await n.json();return Array.isArray(o.events)?o.events:Array.isArray(o)?o:[]}catch(n){return u.error("Error fetching org month events:",n),[]}}async function Ae(e){try{const t=await fetch(`${c()}/series/${e}/occurrences`);return t.ok?t.json():(u.error(`Failed to fetch series occurrences: ${t.status}`),null)}catch(t){return u.error("Error fetching series occurrences:",t),null}}async function Ie(e,t){try{const r=await fetch(`${c()}/series/${e}/occurrences?venueId=${t}`);return r.ok?r.json():(u.error(`Failed to fetch series with CTA: ${r.status}`),null)}catch(r){return u.error("Error fetching series occurrences:",r),null}}async function je(e){try{const t=await fetch(`${c()}/series/${e}/page`);if(!t.ok)throw new $.AppError(`Failed to fetch series page: ${t.status}`,"lib/api/events/fetchSeriesPage");return t.json()}catch(t){return u.error("Error fetching series page:",t),null}}async function Ne(e,t){try{const r=t?`${c()}/collections/${e}/public?password=${encodeURIComponent(t)}`:`${c()}/collections/${e}/public`,n=await fetch(r);if(!n.ok)throw new $.AppError(`Failed to fetch collection: ${n.status}`,"lib/api/events/fetchPublicCollection");return n.json()}catch(r){return u.error("Error fetching collection:",r),null}}async function ke(e,t){try{const r=encodeURIComponent(t),n=await fetch(`${c()}/collections/${e}/check-password/${r}`);return n.ok?(await n.json()).valid===!0:!1}catch(r){return u.error("Error checking collection password:",r),!1}}async function xe(e,t){try{const r=await fetch(`${c()}/events/${e}/check-password`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:t})});if(!r.ok)return{valid:!1};const n=await r.json();return typeof n=="boolean"?{valid:n}:{valid:n.valid===!0||n===!0}}catch(r){return u.error("Error checking event password:",r),{valid:!1}}}async function Te(e,t){try{const r=t?`${c()}/events/venue/${t}`:e?`${c()}/venues/organization/${e}`:`${c()}/health`;return(await fetch(r,{method:"HEAD"})).ok}catch(r){return u.error("Network connection test failed:",r),!1}}const C=P.createLogger("VC");async function q(e){try{if(!e)return C.warn("getVenue called without venueId"),null;const t=await fetch(`${c()}/venues/${e}`);return t.ok?t.json():(C.error(`Failed to fetch venue: ${t.status}`),null)}catch(t){return C.error("Error fetching venue:",t),null}}async function Ue(e){const t=await q(e);return t?{serviceFeePercentage:t.serviceFeePercentage??0,serviceFeeCents:t.serviceFeeCents??0,taxPercentage:t.taxPercentage??0}:null}async function Fe(e){try{if(!e)return C.warn("getVenueBySlug called without slug"),null;const t=encodeURIComponent(e),r=await fetch(`${c()}/venues/slug/${t}`);return r.ok?r.json():(C.error(`Failed to fetch venue by slug: ${r.status}`),null)}catch(t){return C.error("Error fetching venue by slug:",t),null}}const v=P.createLogger("VC"),Ee="https://get-micdrop.com",Re=`${Ee}/api/orders/v2`,E=()=>S();async function Oe(e){try{const t=await fetch(`${Re}/gift-cards`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){const n=await t.json().catch(()=>({}));throw v.error("Gift card purchase creation failed:",n),new $.AppError(n.error||"Failed to create gift card purchase","lib/api/gift-cards/createGiftCardPurchase")}const r=await t.json();return v.debug("Gift card purchase created:",r),r}catch(t){return v.error("Gift card purchase creation error:",t),null}}async function Le(e,t){try{const r=await fetch(`${E()}/cart/${e}/apply-gift-card`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({giftCardCode:t})});if(!r.ok){if(r.status===429)return{valid:!1,error:"Too many attempts. Please wait a moment and try again."};const o=await r.json().catch(()=>({}));return v.error("Apply gift card failed:",o),{valid:!1,error:o.error||"Invalid gift card code"}}const n=await r.json();return{valid:!0,giftCardCode:n.giftCardCode,giftCardAmount:n.giftCardAmount,giftCardBalance:n.giftCardBalance,paymentType:n.paymentType,stripeAmount:n.stripeAmount,orderTotal:n.orderTotal,requiresStripe:n.requiresStripe}}catch(r){return v.error("applyGiftCard error:",r),{valid:!1,error:"Network error. Please check your connection and try again."}}}async function qe(e){try{const t=await fetch(`${E()}/cart/${e}/gift-card`,{method:"DELETE",headers:{"Content-Type":"application/json"}});if(!t.ok){const r=await t.json().catch(()=>({}));return v.error("Remove gift card failed:",r),{success:!1,error:r.error||"Failed to remove gift card"}}return{success:!0}}catch(t){return v.error("removeGiftCard error:",t),{success:!1,error:"Network error. Please check your connection and try again."}}}async function Ge(e,t){try{const r=await fetch(`${E()}/cart/${e}/complete-gift-card-payment`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({firstName:t.firstName,lastName:t.lastName,email:t.email,phoneNumber:t.phoneNumber||null,mailingList:t.mailingList||!1})});if(!r.ok){const o=await r.json().catch(()=>({}));return v.error("Complete gift card payment failed:",o),{success:!1,error:o.error||"Failed to complete payment"}}const n=await r.json();return{success:!0,orderId:n.orderId,confirmationNumber:n.confirmationNumber}}catch(r){return v.error("completeGiftCardPayment error:",r),{success:!1,error:"Network error. Please check your connection and try again."}}}const U=P.createLogger("VC"),Be={waitlist_not_enabled:"Waitlist is not available for this event",event_not_found:"Event not found",invalid_phone:"Please enter a valid phone number",already_purchased:"You have already purchased tickets for this event",phone_already_registered:"This phone number is already on the waitlist"};async function Me(e,t,r=null,n=!1){try{const o={email:t};r&&n&&(o.phone=r,o.smsOptIn=!0);const a=await fetch(`${c()}/events/${e}/waitlist`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!a.ok){const i=await a.json().catch(()=>({}));return U.error("Join waitlist failed:",i),{success:!1,error:Be[i.error]||"Failed to join waitlist. Please try again."}}const s=await a.json();return{success:!0,position:s.position,updated:s.updated}}catch(o){return U.error("joinWaitlist error:",o),{success:!1,error:"Network error. Please check your connection and try again."}}}async function ze(e,t){try{const r=await fetch(`${c()}/events/${e}/waitlist/position?email=${encodeURIComponent(t)}`);return r.ok?{position:(await r.json()).position}:r.status===404?{position:null}:{position:null,error:"Failed to check position"}}catch(r){return U.error("getWaitlistPosition error:",r),{position:null,error:"Network error"}}}function He(e){if(!e||!(e.isHidden===!0||typeof e.visibility=="number"&&e.visibility>=2)||e.salesChannel===2)return!1;const r=new Date,n=e.salesBegin||e.salesStart||e.saleBegin||e.onSaleStart,o=e.salesEnd||e.saleEnd||e.onSaleEnd;if(n&&new Date(n)>r||o&&new Date(o)<r)return!1;const a=e.remainingCapacity??e.quantityRemaining??e.quantity;return!(e.soldOut||a!=null&&a<=0)}function Je(e,t,r={}){const{cancelled:n=!1,isRegistration:o=!1,waitlistEnabled:a=!1}=r,s=new Date;if(n)return{text:"Cancelled",disabled:!0,reason:"cancelled"};const i=e.endDateTime||e.startDateTime;if(i&&new Date(i)<s)return{text:"Sales ended",disabled:!0,reason:"event_past"};const l=e?.hasPurchasableHiddenTickets===!0||Array.isArray(t)&&t.some(He),p=(t||[]).filter(d=>d.salesChannel!==2&&!d.isHidden&&!(typeof d.visibility=="number"&&d.visibility>=2));if(p.length===0)return l?{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"No tickets available",disabled:!0,reason:"no_tickets"};let h=!1,m=!0,g=!0,w=null;for(const d of p){const _=d.salesBegin||d.salesStart||d.saleBegin||d.onSaleStart,I=d.salesEnd||d.saleEnd||d.onSaleEnd,b=d.remainingCapacity??d.quantityRemaining??d.quantity,D=d.soldOut||b!=null&&b<=0,A=_?new Date(_)>s:!1,R=I?new Date(I)<s:!1;if(!D&&!A&&!R&&(h=!0),D||(m=!1),A||(g=!1),A&&_&&!D&&!R){const O=new Date(_);(!w||O<w)&&(w=O)}}if(h)return{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"available"};if(g&&w){if(l)return{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"};const d=w.getTime()-s.getTime(),_=d/(1e3*60*60),I=d/(1e3*60*60*24);let b;if(_<24)b=w.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});else if(I<=7)b=x.formatDateRaw(w,{weekday:"short",hour:"numeric",minute:"2-digit",hour12:!0},"en-US");else{const D=x.formatDateRaw(w,{month:"short",day:"numeric"},"en-US"),A=w.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});b=`${D} ${A}`}return{text:`On sale ${b}`,disabled:!0,reason:"coming_soon"}}return m?l?{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:a?{text:"Join Waitlist",disabled:!1,reason:"sold_out_waitlist"}:{text:"Sold out",disabled:!0,reason:"sold_out"}:l?{text:o?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"Sales ended",disabled:!0,reason:"sales_ended"}}function G(e){return{uuid:e.uuid||String(e.id||e.ID||""),id:e.id||e.ID,ticketNumber:e.ticketNumber||e.ticket_number,orderId:e.orderId||e.order_id,attendeeFirstName:e.attendeeFirstName||e.attendee_first_name||e.firstName,attendeeLastName:e.attendeeLastName||e.attendee_last_name||e.lastName,attendeeEmail:e.attendeeEmail||e.attendee_email||e.email,ticketName:e.ticketName||e.ticket_name||e.name||"",ticketTypeId:e.ticketTypeId||e.ticket_type_id,purchasePrice:e.purchasePrice||e.purchase_price||e.price||0,status:e.status,checkedIn:e.checkedIn||e.checked_in,checkedInAt:e.checkedInAt||e.checked_in_at}}function B(e){const t=e.purchasedTickets||e.tickets||e.purchased_tickets||[];return{uuid:e.uuid||String(e.id||e.ID||""),id:e.id||e.ID,customerEmail:e.customerEmail||e.email||e.customer_email||"",customerFirstName:e.customerFirstName||e.firstName||e.first_name,customerLastName:e.customerLastName||e.lastName||e.last_name,status:e.status||"unknown",totalAmount:e.totalAmount||e.total||e.total_amount||0,subtotal:e.subtotal,serviceFeesAmount:e.serviceFeesAmount||e.serviceFee||e.service_fee||e.service_fees_amount||0,taxAmount:e.taxAmount||e.tax||e.tax_amount||0,discount:e.discount||0,paymentIntentId:e.paymentIntentId||e.payment_intent_id,paymentMethod:e.paymentMethod||e.payment_method,purchasedTickets:t.map(G),createdAt:e.createdAt||e.created_at,updatedAt:e.updatedAt||e.updated_at}}function We(e){const t=B(e),r=t.uuid.split("-")[0]||t.uuid;return{orderId:t.uuid,displayOrderId:r,email:t.customerEmail,customerName:[t.customerFirstName,t.customerLastName].filter(Boolean).join(" "),total:t.totalAmount,formattedTotal:`${x.formatCurrency(t.totalAmount/100)}`,ticketCount:t.purchasedTickets.length,status:t.status}}const Qe="https://micdrop-images.sfo3.digitaloceanspaces.com";function M(e){return e?e.startsWith("http")?e:`${Qe}/${e.replace(/^\//,"")}`:""}function F(e){const t=e.imageUrl||e.imageURL||e.image_url||e.image||"";return M(t)}function z(e){const t=e.ctaState||e.cta_state;if(t)return t;if(e.isCancelled||e.is_cancelled)return"ended";const r=e.startDateTime||e.start_date_time||e.date;if(r){const s=new Date(r).getTime(),i=Date.now();if(s<i)return"ended"}const n=e.ticketsAvailable??e.tickets_available;if(n!==void 0)return n<=0?"sold_out":"available";const o=e.availableTickets||e.available_tickets||e.tickets||[];return o.length===0?"coming_soon":o.reduce((s,i)=>{const l=i.quantityAvailable??i.quantity_available??i.quantity??0,p=i.quantitySold??i.quantity_sold??0;return s+Math.max(0,l-p)},0)<=0?"sold_out":"available"}function H(e){return{id:e.id||e.ID,name:e.name||e.ticketName||"",description:e.description,price:e.price||0,quantity:e.quantity||e.totalQuantity||0,quantitySold:e.quantitySold||e.quantity_sold||0,quantityAvailable:e.quantityAvailable||e.quantity_available||(e.quantity||0)-(e.quantitySold||0),minPerOrder:e.minPerOrder||e.min_per_order||1,maxPerOrder:e.maxPerOrder||e.max_per_order||10,saleStartDate:e.saleStartDate||e.sale_start_date,saleEndDate:e.saleEndDate||e.sale_end_date,isHidden:e.isHidden||e.is_hidden||!1,revealWithPromoCode:e.revealWithPromoCode||e.reveal_with_promo_code,ticketType:e.ticketType||e.ticket_type||0,sectionId:e.sectionId||e.section_id,sortOrder:e.sortOrder||e.sort_order||0}}function J(e){const r=(e.availableTickets||e.available_tickets||e.tickets||[]).map(H),n=r.map(s=>s.price).filter(s=>s>0),o=n.length>0?Math.min(...n):void 0,a=n.length>0?Math.max(...n):void 0;return{eventID:e.eventID||e.id||e.ID||0,id:e.id||e.ID,name:e.name||e.title||"",title:e.title||e.name,slug:e.slug,description:e.description,date:e.date||e.startDateTime||e.start_date_time||"",startDateTime:e.startDateTime||e.start_date_time,endDateTime:e.endDateTime||e.end_date_time,doorsOpenTime:e.doorsOpenTime||e.doors_open_time,timezone:e.timezone||e.time_zone,venueId:e.venueId||e.venue_id,venueName:e.venueName||e.venue_name,venueAddress:e.venueAddress||e.venue_address,location:e.location||e.venueAddress||e.venue_address,imageUrl:F(e),imageURL:F(e),status:e.status,isPublished:e.isPublished??e.is_published,isCancelled:e.isCancelled??e.is_cancelled,availableTickets:r,ticketsAvailable:e.ticketsAvailable??e.tickets_available??r.reduce((s,i)=>s+(i.quantityAvailable||0),0),ticketsSold:e.ticketsSold??e.tickets_sold,minPrice:e.minPrice??e.min_price??o,maxPrice:e.maxPrice??e.max_price??a,ctaText:e.ctaText||e.cta_text,ctaState:z(e),showPerformers:e.showPerformers??e.show_performers,eventSeriesId:e.eventSeriesId||e.event_series_id,seriesInstanceNumber:e.seriesInstanceNumber||e.series_instance_number}}const Ve=J,Ye="https://micdrop-images.sfo3.digitaloceanspaces.com";function Ke(e){return e?e.startsWith("http")?e:`${Ye}/${e.replace(/^\//,"")}`:""}function Xe(e){const t=e.logoUrl||e.logo_url||e.logo;return{id:e.id||e.ID||0,name:e.name||"",slug:e.slug,address:e.address,googleLocationNameCache:e.googleLocationNameCache||e.google_location_name_cache,city:e.city,state:e.state,zipCode:e.zipCode||e.zip_code,country:e.country,timezone:e.timezone||e.time_zone,logoUrl:Ke(t),serviceFeePercentage:e.serviceFeePercentage??e.service_fee_percentage??0,serviceFeeCents:e.serviceFeeCents??e.service_fee_cents??0,taxPercentage:e.taxPercentage??e.tax_percentage??0,organizationId:e.organizationId||e.organization_id}}function Ze(e){return{serviceFeePercentage:e.serviceFeePercentage??e.service_fee_percentage??0,serviceFeeCents:e.serviceFeeCents??e.service_fee_cents??0,taxPercentage:e.taxPercentage??e.tax_percentage??0}}function et(e){return[e.address,e.city,e.state,e.zipCode].filter(Boolean).join(", ")}exports.apiDelete=re;exports.apiGet=Z;exports.apiPost=ee;exports.apiPut=te;exports.applyGiftCard=Le;exports.applyPromoCode=ve;exports.calculateCtaState=z;exports.cancelReservation=ie;exports.checkCollectionPassword=ke;exports.checkEventPassword=xe;exports.completeGiftCardPayment=Ge;exports.completeReservation=ce;exports.computeCtaState=Je;exports.configureApi=Q;exports.createGiftCardPurchase=Oe;exports.createOrder=ue;exports.createPaymentIntent=oe;exports.extendCheckoutSession=fe;exports.extractVenueFees=Ze;exports.fetchAllVenues=Ce;exports.fetchEventDetails=be;exports.fetchEventPerformers=_e;exports.fetchEventTickets=Pe;exports.fetchPublicCollection=Ne;exports.fetchSeriesOccurrences=Ie;exports.fetchSeriesPage=je;exports.fetchVenueEvents=$e;exports.formatVenueAddress=et;exports.getApiConfig=V;exports.getCDNImageUrl=M;exports.getCartByUUID=se;exports.getClientIP=K;exports.getEventImageUrl=F;exports.getLegacyPublicUrl=Y;exports.getMonthEvents=Se;exports.getOrder=le;exports.getOrdersV2Url=S;exports.getOrgMonthEvents=De;exports.getPublicBaseUrl=c;exports.getSeriesOccurrences=Ae;exports.getSessionStatus=me;exports.getVenue=q;exports.getVenueBySlug=Fe;exports.getVenueFees=Ue;exports.getWaitlistPosition=ze;exports.hasPromoCodes=we;exports.initiateOrder=he;exports.joinWaitlist=Me;exports.removeGiftCard=qe;exports.removePromoCode=pe;exports.testNetworkConnection=Te;exports.trackUTMSource=ye;exports.transformAvailableTicket=H;exports.transformEvent=J;exports.transformEventData=Ve;exports.transformOrder=B;exports.transformOrderForDisplay=We;exports.transformTicket=G;exports.transformVenue=Xe;exports.updateCartQuantities=ae;exports.validatePaymentIntent=de;exports.validatePromoCode=ge;
|
|
2
2
|
//# sourceMappingURL=api.cjs.map
|