@getmicdrop/venue-calendar 4.0.94 → 4.0.95
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/{CartView-hnrXbE_O.js → CartView-Cq0DU1Cy.js} +101 -101
- package/dist/{CartView-hnrXbE_O.js.map → CartView-Cq0DU1Cy.js.map} +1 -1
- package/dist/{Checkout-Bvre3lYs.js → Checkout-BA43iGDc.js} +263 -263
- package/dist/Checkout-BA43iGDc.js.map +1 -0
- package/dist/{Checkout-C4Kr5pVp.js → Checkout-BV5f49vY.js} +3 -3
- package/dist/{Checkout-C4Kr5pVp.js.map → Checkout-BV5f49vY.js.map} +1 -1
- package/dist/{CheckoutTimer-D2HnWYm7.js → CheckoutTimer-KyKyInco.js} +5 -5
- package/dist/{CheckoutTimer-D2HnWYm7.js.map → CheckoutTimer-KyKyInco.js.map} +1 -1
- package/dist/{ClockIcon-DA4wXK5Q.js → ClockIcon-BD24dBol.js} +2 -2
- package/dist/{ClockIcon-DA4wXK5Q.js.map → ClockIcon-BD24dBol.js.map} +1 -1
- package/dist/{CollectionView-DU1lTGU_.js → CollectionView-CKIxku9-.js} +18 -18
- package/dist/{CollectionView-DU1lTGU_.js.map → CollectionView-CKIxku9-.js.map} +1 -1
- package/dist/{Event-BuOnGjPB.js → Event-BPdt1Io5.js} +174 -169
- package/dist/{Event-BuOnGjPB.js.map → Event-BPdt1Io5.js.map} +1 -1
- package/dist/EventPage-DRnTMGTK.js +575 -0
- package/dist/EventPage-DRnTMGTK.js.map +1 -0
- package/dist/{Heading-D4iOOm-C.js → Heading-pQuVpBrL.js} +8 -8
- package/dist/{Heading-D4iOOm-C.js.map → Heading-pQuVpBrL.js.map} +1 -1
- package/dist/{ScarcityBadge-D37JY-BJ.js → ScarcityBadge-DoYdujCs.js} +7 -7
- package/dist/{ScarcityBadge-D37JY-BJ.js.map → ScarcityBadge-DoYdujCs.js.map} +1 -1
- package/dist/{SeriesPage-CZdi_-a4.js → SeriesPage-vw7Hva9F.js} +7 -7
- package/dist/{SeriesPage-CZdi_-a4.js.map → SeriesPage-vw7Hva9F.js.map} +1 -1
- package/dist/{Spinner-BZYln43S.js → Spinner-BfFZMaDP.js} +5 -5
- package/dist/{Spinner-BZYln43S.js.map → Spinner-BfFZMaDP.js.map} +1 -1
- package/dist/{Success-CQYI5SZO.js → Success-Cjj6CC4w.js} +325 -329
- package/dist/{Success-CQYI5SZO.js.map → Success-Cjj6CC4w.js.map} +1 -1
- package/dist/{Text-C-6sDfH2.js → Text-CT79Zi5n.js} +2 -2
- package/dist/{Text-C-6sDfH2.js.map → Text-CT79Zi5n.js.map} +1 -1
- package/dist/{VenueCalendar-Um0PQCVy.js → VenueCalendar-Cz7_VBC6.js} +1948 -1951
- package/dist/VenueCalendar-Cz7_VBC6.js.map +1 -0
- package/dist/{ViewTicketsEmbed-D2jQ8AMb.js → ViewTicketsEmbed-BvCfoKY3.js} +80 -80
- package/dist/{ViewTicketsEmbed-D2jQ8AMb.js.map → ViewTicketsEmbed-BvCfoKY3.js.map} +1 -1
- package/dist/api/api/events.d.ts +18 -0
- package/dist/api/api/gift-cards.d.ts +19 -0
- package/dist/api/api/index.d.ts +2 -2
- package/dist/api/api/result.d.ts +31 -1
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +295 -284
- package/dist/api/api.mjs.map +1 -1
- package/dist/{data-toggle-store.svelte-CyXPU9Oq.js → data-toggle-store.svelte-BHwbM34q.js} +2 -2
- package/dist/{data-toggle-store.svelte-CyXPU9Oq.js.map → data-toggle-store.svelte-BHwbM34q.js.map} +1 -1
- package/dist/{labels-BNiV89mT.js → labels-_x9WkVuZ.js} +65 -62
- package/dist/labels-_x9WkVuZ.js.map +1 -0
- package/dist/{modalManager.svelte-D_9E6W5P.js → modalManager.svelte-Csm1WlvP.js} +2 -2
- package/dist/{modalManager.svelte-D_9E6W5P.js.map → modalManager.svelte-Csm1WlvP.js.map} +1 -1
- package/dist/{transform-HKz55B2D.js → transform-WRPgSKLN.js} +6 -6
- package/dist/{transform-HKz55B2D.js.map → transform-WRPgSKLN.js.map} +1 -1
- package/dist/venue-calendar.es.js +1 -1
- package/dist/venue-calendar.iife.js +33 -33
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +36 -36
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +2 -2
- package/dist/Checkout-Bvre3lYs.js.map +0 -1
- package/dist/EventPage-vBSbuSaG.js +0 -566
- package/dist/EventPage-vBSbuSaG.js.map +0 -1
- package/dist/VenueCalendar-Um0PQCVy.js.map +0 -1
- package/dist/labels-BNiV89mT.js.map +0 -1
package/dist/api/api/events.d.ts
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import { Result } from './result.js';
|
|
2
2
|
import { Event, AvailableTicket, EventPerformersResponse, SeriesOccurrencesResponse, SeriesPageData, PublicCollectionData, ResolvedEntity } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fetch event details, discriminating a real 404 from a transient failure.
|
|
5
|
+
*
|
|
6
|
+
* The SSR loader (`[id]/[slug]/+page.js`) gates its HTTP status on this: only an
|
|
7
|
+
* upstream 404 (`errNotFound`) becomes a page 404. A 5xx, a network error, or a
|
|
8
|
+
* timeout is `err(...)` (transient) so the loader can answer 503/retry instead
|
|
9
|
+
* of rendering a permanent-looking 404 to a buyer or crawler on a backend blip.
|
|
10
|
+
*
|
|
11
|
+
* @param eventId - The event ID
|
|
12
|
+
* @param customFetch - Optional custom fetch function (for SSR)
|
|
13
|
+
* @param password - Optional password for gated events
|
|
14
|
+
* @returns `ok(event)`, `errNotFound(...)` for a real 404, or `err(...)` transient
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchEventDetailsResult(eventId: string | number, customFetch?: typeof fetch, password?: string): Promise<Result<Event>>;
|
|
3
17
|
/**
|
|
4
18
|
* Fetch event details
|
|
5
19
|
*
|
|
6
20
|
* Gets full event information including venue and ticket data.
|
|
7
21
|
*
|
|
22
|
+
* Fail-open adapter over {@link fetchEventDetailsResult}: existing in-widget
|
|
23
|
+
* callers (Checkout, CartView, EventPage) keep degrading to `null` on any
|
|
24
|
+
* failure. SSR loaders that need to answer 404-vs-503 use the Result variant.
|
|
25
|
+
*
|
|
8
26
|
* @param eventId - The event ID
|
|
9
27
|
* @param customFetch - Optional custom fetch function (for SSR)
|
|
10
28
|
* @returns Event details or null on error
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { VenueId } from '@getmicdrop/svelte-components';
|
|
2
|
+
import { Result } from './result.js';
|
|
2
3
|
/**
|
|
3
4
|
* Request payload for creating a gift card purchase
|
|
4
5
|
*/
|
|
@@ -81,8 +82,26 @@ export interface CompleteGiftCardPaymentResult {
|
|
|
81
82
|
* Complete a gift-card-only payment (no Stripe required when balance >= total).
|
|
82
83
|
*/
|
|
83
84
|
export declare function completeGiftCardPayment(cartId: string, customerDetails: CompleteGiftCardPaymentInput): Promise<CompleteGiftCardPaymentResult>;
|
|
85
|
+
/**
|
|
86
|
+
* Fetch venue information by slug, discriminating a real 404 from a transient
|
|
87
|
+
* failure.
|
|
88
|
+
*
|
|
89
|
+
* The gift-card SSR loader (`v/[venueSlug]/gift-cards/purchase/+page.ts`) gates
|
|
90
|
+
* its HTTP status on this: only an upstream 404 (`errNotFound`) becomes a page
|
|
91
|
+
* 404. A 5xx, network error, or timeout is `err(...)` (transient) so the loader
|
|
92
|
+
* answers 503/retry rather than a permanent-looking 404 on a backend blip.
|
|
93
|
+
*
|
|
94
|
+
* @param slug - Venue slug
|
|
95
|
+
* @param customFetch - Optional custom fetch function (for SSR)
|
|
96
|
+
* @returns `ok(venue)`, `errNotFound(...)` for a real 404, or `err(...)` transient
|
|
97
|
+
*/
|
|
98
|
+
export declare function getVenueBySlugResult(slug: string, customFetch?: typeof fetch): Promise<Result<VenueInfo>>;
|
|
84
99
|
/**
|
|
85
100
|
* Fetch venue information by slug
|
|
101
|
+
*
|
|
102
|
+
* Fail-open adapter over {@link getVenueBySlugResult}: returns `null` on any
|
|
103
|
+
* failure. SSR loaders that need 404-vs-503 use the Result variant.
|
|
104
|
+
*
|
|
86
105
|
* @param slug - Venue slug
|
|
87
106
|
* @returns Venue info or null on failure
|
|
88
107
|
*/
|
package/dist/api/api/index.d.ts
CHANGED
|
@@ -33,8 +33,8 @@ export { configureApi, getApiConfig, getPublicBaseUrl, getLegacyPublicUrl, getOr
|
|
|
33
33
|
export { createPaymentIntent, validatePaymentIntent, updateCartQuantities, getCartByUUID, createOrder, getOrder, completeReservation, cancelReservation, extendCheckoutSession, getSessionStatus, initiateOrder, trackUTMSource, } from './orders.js';
|
|
34
34
|
export type { CartReservationView, CartView } from './orders.js';
|
|
35
35
|
export { validatePromoCode, hasPromoCodes, applyPromoCode, removePromoCode, } from './promo.js';
|
|
36
|
-
export { fetchEventDetails, fetchEventTickets, fetchEventPerformers, fetchAllVenues, fetchVenueEvents, getMonthEvents, getOrgMonthEvents, getSeriesOccurrences, fetchSeriesOccurrences, fetchSeriesPage, fetchPublicCollection, resolvePublicEntity, checkEventPassword, checkCollectionPassword, testNetworkConnection, fetchEventTicketsResult, fetchEventPerformersResult, fetchAllVenuesResult, fetchVenueEventsResult, getMonthEventsResult, getOrgMonthEventsResult, getSeriesOccurrencesResult, fetchSeriesOccurrencesResult, } from './events.js';
|
|
37
|
-
export { ok, err, isOk, unwrapOr, type Result } from './result.js';
|
|
36
|
+
export { fetchEventDetails, fetchEventTickets, fetchEventPerformers, fetchAllVenues, fetchVenueEvents, getMonthEvents, getOrgMonthEvents, getSeriesOccurrences, fetchSeriesOccurrences, fetchSeriesPage, fetchPublicCollection, resolvePublicEntity, checkEventPassword, checkCollectionPassword, testNetworkConnection, fetchEventDetailsResult, fetchEventTicketsResult, fetchEventPerformersResult, fetchAllVenuesResult, fetchVenueEventsResult, getMonthEventsResult, getOrgMonthEventsResult, getSeriesOccurrencesResult, fetchSeriesOccurrencesResult, } from './events.js';
|
|
37
|
+
export { ok, err, errNotFound, isOk, isErr, unwrapOr, type Result, } from './result.js';
|
|
38
38
|
export { getVenue, getVenueFees, getVenueBySlug } from './venues.js';
|
|
39
39
|
export { createGiftCardPurchase, applyGiftCard, removeGiftCard, completeGiftCardPayment, } from './gift-cards.js';
|
|
40
40
|
export type { GiftCardPurchaseRequest, GiftCardPurchaseResponse, ApplyGiftCardResult, RemoveGiftCardResult, CompleteGiftCardPaymentInput, CompleteGiftCardPaymentResult, } from './gift-cards.js';
|
package/dist/api/api/result.d.ts
CHANGED
|
@@ -28,16 +28,46 @@ export type Result<T> = {
|
|
|
28
28
|
} | {
|
|
29
29
|
ok: false;
|
|
30
30
|
error: string;
|
|
31
|
+
notFound?: boolean;
|
|
31
32
|
};
|
|
32
33
|
/** Wrap a successful value. */
|
|
33
34
|
export declare function ok<T>(data: T): Result<T>;
|
|
34
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Wrap a failure with a short, stable error code (used for i18n/render).
|
|
37
|
+
*
|
|
38
|
+
* This is a TRANSIENT failure by default (`notFound` is unset) — the request
|
|
39
|
+
* couldn't complete (network, timeout, 5xx). Loaders that gate an SSR 404 on a
|
|
40
|
+
* Result must treat a plain `err(...)` as retryable (503), not "gone" (404), so
|
|
41
|
+
* a backend blip never renders a permanent-looking 404 to a buyer or crawler.
|
|
42
|
+
*/
|
|
35
43
|
export declare function err(error: string): Result<never>;
|
|
44
|
+
/**
|
|
45
|
+
* Wrap a genuine "this resource does not exist" failure (upstream 404).
|
|
46
|
+
*
|
|
47
|
+
* Distinct from `err(...)`: only this warrants an SSR 404. A transient upstream
|
|
48
|
+
* failure must NOT collapse to `errNotFound` — that is exactly the bug this
|
|
49
|
+
* channel exists to prevent (a fetch blip becoming a permanent 404).
|
|
50
|
+
*/
|
|
51
|
+
export declare function errNotFound(error: string): Result<never>;
|
|
36
52
|
/** Narrowing guard — true when the result carries data. */
|
|
37
53
|
export declare function isOk<T>(result: Result<T>): result is {
|
|
38
54
|
ok: true;
|
|
39
55
|
data: T;
|
|
40
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Narrowing guard — true when the result is a failure (transient OR not-found).
|
|
59
|
+
*
|
|
60
|
+
* This package typechecks with `strictNullChecks` off, where the ELSE flow of a
|
|
61
|
+
* discriminated union does NOT narrow (`if (r.ok) {…}` narrows the positive
|
|
62
|
+
* branch, but the fall-through keeps the full union). Consumers that need the
|
|
63
|
+
* failure branch's `error`/`notFound` must narrow POSITIVELY through this guard
|
|
64
|
+
* rather than relying on `!r.ok` control flow.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isErr<T>(result: Result<T>): result is {
|
|
67
|
+
ok: false;
|
|
68
|
+
error: string;
|
|
69
|
+
notFound?: boolean;
|
|
70
|
+
};
|
|
41
71
|
/**
|
|
42
72
|
* Collapse a Result to its data, substituting `fallback` on failure.
|
|
43
73
|
*
|
package/dist/api/api.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("@getmicdrop/svelte-components/utils/logger"),f=require("@getmicdrop/svelte-components"),L=require("@getmicdrop/svelte-components/datetime"),he=require("@getmicdrop/svelte-components/transforms");require("@getmicdrop/svelte-components/utils/timezones");const q=P.createLogger("VC"),_e={baseUrl:"https://get-micdrop.com",timeout:3e4,retries:2,retryDelay:500,onError:t=>q.error("API Error:",t)};let g={..._e};function we(t){g={...g,...t}}function ke(){return{...g}}function c(){return`${g.baseUrl}/api/v2/public`}function Ce(){return`${g.baseUrl}/api/public`}function $(){return`${g.baseUrl}/api/orders/v2/public`}async function be(){return""}const Pe=t=>new Promise(e=>setTimeout(e,t));async function J(t,e,r){const n=(e.method||"GET").toUpperCase(),s=n==="GET"||n==="HEAD"?r.retries+1:1;let o;for(let i=1;i<=s;i++){const u=new AbortController,E=setTimeout(()=>u.abort(),r.timeout),y=e.signal;let b;y&&(y.aborted?u.abort():(b=()=>u.abort(),y.addEventListener("abort",b,{once:!0})));try{const v=await fetch(t,{...e,signal:u.signal});if(v.status>=500&&i<s)o=new Error(`HTTP ${v.status}`);else return v}catch(v){if(o=v,y?.aborted)throw v}finally{clearTimeout(E),y&&b&&y.removeEventListener("abort",b)}i<s&&await Pe(r.retryDelay*Math.pow(2,i-1))}throw o}async function k(t,e){return F("GET",t,void 0,e)}async function m(t,e,r){return F("POST",t,e,r)}async function $e(t,e,r){return F("PUT",t,e,r)}async function Y(t,e){return F("DELETE",t,void 0,e)}async function F(t,e,r,n){const a=e.startsWith("http")?e:`${c()}${e}`;try{const s=await J(a,{method:t,headers:{"Content-Type":"application/json",...n?.headers},body:r!==void 0?JSON.stringify(r):void 0,credentials:"include",...n},g);if(!s.ok){const i=await s.json().catch(()=>({})),u=i.error||i.message||`HTTP ${s.status}`;return g.onError(new Error(u)),{success:!1,error:u,statusCode:s.status}}return{success:!0,data:await s.json(),statusCode:s.status}}catch(s){const o=s instanceof Error?s.name==="AbortError"?"Request timed out":s.message:"Unknown error";return g.onError(s instanceof Error?s:new Error(o)),{success:!1,error:o}}}async function U(t,e){try{const r=await J(t,{credentials:"include",...e},g);if(!r.ok){const n=await r.json().catch(()=>({}));return q.error(`API request failed: ${r.status}`,n),null}return r.json()}catch(r){return q.error("API request error:",r),null}}function Se(t){const e=t??{};return{ticketID:Number(e.TicketID??e.ticketID??0),quantity:Number(e.Quantity??e.quantity??0),priceAtReservation:Number(e.PriceAtReservation??e.priceAtReservation??0),status:String(e.Status??e.status??"")}}function Ee(t){const e=t??{},r=e.UUID??e.uuid??"",n=Number(e.EventID??e.eventID??0),a=e.Status??e.status??"",s=e.ExpiresAt??e.expiresAt??"",i=(e.Reservations??e.reservations??[]).map(Se);return{uuid:r,eventID:n,status:a,expiresAt:s,reservations:i}}const K=["utmSource","utmMedium","utmCampaign","utmContent","utmTerm"],Te={utmSource:"utm_source",utmMedium:"utm_medium",utmCampaign:"utm_campaign",utmContent:"utm_content",utmTerm:"utm_term"},Z="direct";function X(t){return t?t.trim().toLowerCase().replace(/\s+/g,"_"):""}function Ie(t){const e={};for(const r of K)e[r]=X(t[r]);return e.utmSource||(e.utmSource=Z),e}function Re(t){const e={};for(const r of K)e[r]=t.get(Te[r]);return Ie(e)}function Ae(){if(typeof window>"u")return!0;try{return window.self===window.top}catch{return!1}}function De(){const t=typeof window<"u",e=Ae(),r=t?window.location.search:"",n=(typeof document<"u"?document.referrer:"")??"",a=t&&e?window.location.href:"";return{utm:Re(new URLSearchParams(r)),referrer:n||"",pageUrl:a||""}}let Ue=!1;function Ne(){return typeof window<"u"&&typeof window.__tcfapi=="function"}function Oe(){return Ne()}function xe(){return Oe()?Ue:!0}const W="micdrop_session_id",Q="micdrop_visitor_id",Fe=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Ve(t){return typeof t=="string"&&Fe.test(t)}function ee(){const t=typeof crypto<"u"?crypto:void 0;if(t?.randomUUID)return t.randomUUID();const e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else for(let n=0;n<16;n++)e[n]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;const r=[];for(let n=0;n<16;n++)r.push(e[n].toString(16).padStart(2,"0"));return`${r[0]}${r[1]}${r[2]}${r[3]}-${r[4]}${r[5]}-${r[6]}${r[7]}-${r[8]}${r[9]}-${r[10]}${r[11]}${r[12]}${r[13]}${r[14]}${r[15]}`}function Le(){let t=f.getSessionStorage(W);return t||(t=ee(),f.setSessionStorage(W,t)),t}function qe(){if(!xe())return null;const t=f.getLocalStorage(Q);if(Ve(t))return t;const e=ee();return f.setLocalStorage(Q,e),e}const Me="micdrop_attribution";function Ge(){const t=f.getSessionStorage(Me);return!t||!t.utm||typeof t.utm.utmSource!="string"?null:t}function N(){const e=Ge()??De();return{sessionId:Le(),visitorId:qe(),utmSource:e.utm.utmSource,utmMedium:e.utm.utmMedium,utmCampaign:e.utm.utmCampaign,utmContent:e.utm.utmContent,utmTerm:e.utm.utmTerm,referrer:e.referrer||""}}f.createLogger("tracking");const d=P.createLogger("VC");async function je(t,e,r){try{const n=await m(`${$()}/cart/${t}/payment-intent`,{productQuantities:e,...r&&Object.keys(r).length>0?{donationAmounts:r}:{},attribution:N()});if(!n.success)throw d.error("Payment intent creation failed:",n.error),new f.AppError(n.error||"Failed to create payment intent","lib/api/orders/createPaymentIntent");return d.debug("Payment intent created:",n.data),n.data}catch(n){return d.error("createPaymentIntent error:",n),null}}async function Be(t,e){if(!t)return null;try{const r=await k(`${$()}/cart/${t}`);if(!r.success)return null;const{uuid:n,eventID:a,status:s,expiresAt:o,reservations:i}=Ee(r.data);return s!=="reserved"&&s!=="active"||e!==void 0&&a!==Number(e)?null:{uuid:n,eventID:a,status:s,expiresAt:o,reservations:i}}catch(r){return d.error("getCartByUUID error:",r),null}}async function ze(t,e,r){try{const n={};for(const[o,i]of Object.entries(e)){const u=typeof o=="number"?o:parseInt(o,10);!Number.isNaN(u)&&i>0&&(n[u]=i)}const a={};if(r)for(const[o,i]of Object.entries(r)){const u=typeof o=="number"?o:parseInt(o,10);!Number.isNaN(u)&&i>0&&(a[u]=i)}const s=await fetch(`${$()}/cart/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({quantities:n,...Object.keys(a).length>0?{donationAmounts:a}:{}})});if(!s.ok){const o=await s.json().catch(()=>({}));return d.error("Cart update failed:",o),!1}return!0}catch(n){return d.error("updateCartQuantities error:",n),!1}}async function He(t){try{const e=await m(`${c()}/orders/complete/${t}`);return e.success?{success:!0,message:e.data?.message}:{success:!1,error:e.error||"Failed to complete reservation"}}catch(e){return d.error("Error completing reservation:",e),{success:!1,error:"Network error completing reservation"}}}async function We(t){try{const e=await m(`${c()}/orders/cancel/${t}`);return e.success?{success:!0,message:e.data?.message}:{success:!1,error:e.error||"Failed to cancel reservation"}}catch(e){return d.error("Error cancelling reservation:",e),{success:!1,error:"Network error cancelling reservation"}}}async function Qe(t,e){try{const r=await m(`${c()}/orders/create`,{eventID:t,promoCode:e,attribution:N()});return r.success?r.data:(d.error("Create order failed:",r.error),null)}catch(r){return d.error("createOrder error:",r),null}}async function Je(t){return U(`${c()}/orders/${t}`)}async function Ye(t,e){try{const r=await m(`${$()}/validatePaymentIntent/${t}`,{...e,attribution:N()});if(!r.success)return d.error("Payment validation failed:",r.error),{success:!1,status:"failed",error:r.error||"Payment validation failed"};const n=r.data;return n.eventCanceled||n.eventPostponed?{success:!1,status:"failed",eventCanceled:n.eventCanceled,eventPostponed:n.eventPostponed}:{success:!0,status:n.status||"Payment succeeded",orderUUID:n.orderUUID||n.uuid}}catch(r){return d.error("validatePaymentIntent error:",r),null}}async function Ke(t){try{const e=await m(`${c()}/orders/extend-session`,{orderUuid:t});if(!e.success)return{success:!1,error:e.error||"Failed to extend session",statusCode:e.statusCode};const r=e.data;return{success:!0,newExpiryTime:r.newExpiryTime,remainingExtensions:r.remainingExtensions}}catch(e){return d.error("Error extending checkout session:",e),{success:!1,error:"Network error extending session"}}}async function Ze(t){try{const e=await k(`${c()}/orders/session/${t}`);if(!e.success)return{error:e.error||"No active session found",notFound:e.statusCode===404};const r=e.data;return{expiresAt:r.expiresAt,extensionCount:r.extensionCount,remainingExtensions:r.remainingExtensions,canExtend:r.canExtend,reservationCount:r.reservationCount,eventStatus:r.eventStatus}}catch(e){return d.error("Error getting session status:",e),{error:"Network error getting session status"}}}async function Xe(t={eventID:""}){try{const e=await m(`${c()}/orders/create`,{...t,attribution:N()});return e.success?e.data?.uuid??null:(d.error("Order initiation failed:",e.error),null)}catch(e){return d.error("initiateOrder error:",e),null}}async function et(t){if(typeof window>"u")return;const e=new URLSearchParams(window.location.search),r=X(e.get("utm_source"))||Z;try{await fetch(`${c()}/utm/${t}/${encodeURIComponent(r)}`)}catch(n){d.error("UTM tracking failed:",n)}}const V=P.createLogger("VC"),tt=()=>$();async function rt(t,e){try{if(!e||!e.trim())return{valid:!1,error:"Promo code is required"};const r=encodeURIComponent(e.trim()),n=await k(`/promo-codes/validate/${t}/${r}`);if(!n.success)return n.statusCode===404?{valid:!1,error:"Invalid promo code"}:{valid:!1,error:"Failed to validate code"};const a=n.data;return{valid:a.valid??!0,revealHiddenTickets:a.revealHiddenTickets,revealTicketIds:a.revealTicketIds,provideDiscount:a.provideDiscount,discountType:a.discountType,amount:a.amount,code:a.code||e}}catch(r){return V.error("Error validating promo code:",r),{valid:!1,error:"Network error validating code"}}}async function nt(t){try{const e=await k(`/promo-codes/check/${t}`);return e.success?e.data.hasPromoCodes===!0:!0}catch(e){return V.error("Error checking promo codes availability:",e),!0}}async function at(t,e){try{const r=await m(`${tt()}/cart/${t}/apply-promo`,{promoCode:e});return r.success?{success:!0}:{success:!1,error:r.error||"Failed to apply promo code"}}catch(r){return V.error("Error applying promo code:",r),{success:!1,error:"Network error applying code"}}}async function st(t){try{const e=await m(`/orders/${t}/remove-promo`);return e.success?{success:!0}:{success:!1,error:e.error||"Failed to remove promo code"}}catch(e){return V.error("Error removing promo code:",e),{success:!1,error:"Network error removing code"}}}function ot(t){const e=t??{};return{performers:Array.isArray(e.performers)?e.performers:[],showPerformers:e.showPerformers===!0}}function te(t){return{ok:!0,data:t}}function D(t){return{ok:!1,error:t}}function it(t){return t.ok}function S(t,e){return t.ok?t.data:e}const p=P.createLogger("VC"),x=new Map;async function ct(t,e=fetch,r){const n=r?`${t}:pw`:String(t);if(e===fetch){const s=x.get(n);if(s)return s}const a=(async()=>{try{const s=r?`${c()}/events/${t}?password=${encodeURIComponent(r)}`:`${c()}/events/${t}`,o=await e(s);if(!o.ok)throw new f.AppError(`Failed to fetch event details: ${o.status}`,"lib/api/events/fetchEventDetails");return await o.json()}catch(s){return p.error("Error fetching event details:",s),null}})();return e===fetch&&(x.set(n,a),a.finally(()=>{x.get(n)===a&&x.delete(n)})),a}async function C(t,e,r=n=>n){try{const n=await U(t);return n?te(r(n)):(p.error(`Failed to load (${e}): network or server error`),D(e))}catch(n){return p.error(`Error loading (${e}):`,n),D(e)}}function j(t){return Array.isArray(t)?t:[]}async function re(t){return C(`${c()}/tickets/event/${t}`,"tickets_fetch_failed",j)}async function ut(t){return S(await re(t),[])}async function ne(t){return t?C(`${c()}/events/${t}/performers`,"performers_fetch_failed",e=>ot(e)):(p.warn("fetchEventPerformers called without eventId"),D("performers_missing_event_id"))}async function lt(t){return S(await ne(t),{performers:[],showPerformers:!1})}async function ae(t){return t?C(`${c()}/venues/organization/${t}`,"venues_fetch_failed",j):(p.warn("fetchAllVenues called without orgId"),D("venues_missing_org_id"))}async function dt(t){return S(await ae(t),[])}async function se(t){return t?C(`${c()}/events/venue/${t}`,"venue_events_fetch_failed",j):(p.warn("fetchVenueEvents called without venueId"),D("venue_events_missing_venue_id"))}async function ft(t){return S(await se(t),[])}function oe(t){return Array.isArray(t)?t:Array.isArray(t.events)?t.events:[]}async function ie(t,e,r){return C(`${c()}/events/venue/${t}/month/${e}/${r}`,"month_events_fetch_failed",n=>oe(n))}async function mt(t,e,r){return S(await ie(t,e,r),[])}async function ce(t,e,r){return C(`${c()}/events/organization/${t}/month/${e}/${r}`,"org_month_events_fetch_failed",n=>oe(n))}async function pt(t,e,r){return S(await ce(t,e,r),[])}async function ue(t){return C(`${c()}/series/${t}/occurrences`,"series_occurrences_fetch_failed")}async function gt(t){const e=await ue(t);return e.ok?e.data:null}async function le(t,e){return C(`${c()}/series/${t}/occurrences?venueId=${e}`,"series_cta_fetch_failed")}async function yt(t,e){const r=await le(t,e);return r.ok?r.data:null}async function vt(t,e){try{const r=e?`?slug=${encodeURIComponent(e)}`:"",n=await U(`${c()}/resolve/${encodeURIComponent(String(t))}${r}`);if(!n||!n.type)throw new f.AppError("Failed to resolve entity","lib/api/events/resolvePublicEntity");return n}catch(r){return p.error("Error resolving public entity:",r),null}}async function ht(t){try{const e=await U(`${c()}/series/${t}/page`);if(!e)throw new f.AppError("Failed to fetch series page","lib/api/events/fetchSeriesPage");return e}catch(e){return p.error("Error fetching series page:",e),null}}async function _t(t,e){try{const r=e?`${c()}/collections/${t}?password=${encodeURIComponent(e)}`:`${c()}/collections/${t}`,n=await U(r);if(!n)throw new f.AppError("Failed to fetch collection","lib/api/events/fetchPublicCollection");return n}catch(r){return p.error("Error fetching collection:",r),null}}async function wt(t,e){try{const r=encodeURIComponent(e);return(await U(`${c()}/collections/${t}/check-password/${r}`))?.valid===!0}catch(r){return p.error("Error checking collection password:",r),!1}}async function kt(t,e){try{const r=await m(`${c()}/events/${t}/check-password`,{password:e});if(!r.success)return{valid:!1};const n=r.data;return typeof n=="boolean"?{valid:n}:{valid:n.valid===!0}}catch(r){return p.error("Error checking event password:",r),{valid:!1}}}async function Ct(t,e){try{const r=e?`${c()}/events/venue/${e}`:t?`${c()}/venues/organization/${t}`:`${c()}/health`;return(await fetch(r,{method:"HEAD"})).ok}catch(r){return p.error("Network connection test failed:",r),!1}}const A=P.createLogger("VC");async function de(t){try{if(!t)return A.warn("getVenue called without venueId"),null;const e=await k(`/venues/${t}`);return e.success?e.data??null:(A.error(`Failed to fetch venue: ${e.statusCode}`),null)}catch(e){return A.error("Error fetching venue:",e),null}}async function bt(t){const e=await de(t);return e?{serviceFeePercentage:e.serviceFeePercentage??0,serviceFeeCents:e.serviceFeeCents??0,taxPercentage:e.taxPercentage??0}:null}async function Pt(t){try{if(!t)return A.warn("getVenueBySlug called without slug"),null;const e=encodeURIComponent(t),r=await k(`/venues/slug/${e}`);return r.success?r.data??null:(A.error(`Failed to fetch venue by slug: ${r.statusCode}`),null)}catch(e){return A.error("Error fetching venue by slug:",e),null}}function $t(t){const e=t??{},r=(e.appliedAmount??0)/100,n=e.remainingTotal??0,a=e.fullyCoveredByCard??n<=0,s=!a;return{valid:!0,giftCardCode:e.giftCardCode,giftCardAmount:r,giftCardBalance:e.giftCardBalance,paymentType:a?"gift_card_only":"split",stripeAmount:n,orderTotal:r+n,requiresStripe:s}}const _=P.createLogger("VC"),St="https://get-micdrop.com",Et=`${St}/api/orders/v2`,B=()=>$();async function Tt(t){try{const e=await m(`${Et}/gift-cards`,t);if(!e.success)throw _.error("Gift card purchase creation failed:",e.error),new f.AppError(e.error||"Failed to create gift card purchase","lib/api/gift-cards/createGiftCardPurchase");return _.debug("Gift card purchase created:",e.data),e.data}catch(e){return _.error("Gift card purchase creation error:",e),null}}async function It(t,e){try{const r=await m(`${B()}/cart/${t}/apply-gift-card`,{giftCardCode:e});return r.success?$t(r.data):r.statusCode===429?{valid:!1,error:"Too many attempts. Please wait a moment and try again."}:(_.error("Apply gift card failed:",r.error),{valid:!1,error:r.error||"Invalid gift card code"})}catch(r){return _.error("applyGiftCard error:",r),{valid:!1,error:"Network error. Please check your connection and try again."}}}async function Rt(t,e){try{const r=await Y(`${B()}/cart/${t}/gift-card`,e?{body:JSON.stringify({giftCardCode:e})}:void 0);return r.success?{success:!0}:(_.error("Remove gift card failed:",r.error),{success:!1,error:r.error||"Failed to remove gift card"})}catch(r){return _.error("removeGiftCard error:",r),{success:!1,error:"Network error. Please check your connection and try again."}}}async function At(t,e){try{const r=await m(`${B()}/cart/${t}/complete-gift-card-payment`,{firstName:e.firstName,lastName:e.lastName,email:e.email,phoneNumber:e.phoneNumber||null,mailingList:e.mailingList||!1,attribution:N()});return r.success?{success:!0,orderId:r.data?.orderId,confirmationNumber:r.data?.confirmationNumber}:(_.error("Complete gift card payment failed:",r.error),{success:!1,error:r.error||"Failed to complete payment"})}catch(r){return _.error("completeGiftCardPayment error:",r),{success:!1,error:"Network error. Please check your connection and try again."}}}const M=P.createLogger("VC"),Dt={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 Ut(t,e,r=null,n=!1){try{const a={email:e};r&&n&&(a.phone=r,a.smsOptIn=!0);const s=await m(`/events/${t}/waitlist`,a);return s.success?{success:!0,updated:s.data?.updated}:(M.error("Join waitlist failed:",s.error),{success:!1,error:Dt[s.error??""]||"Failed to join waitlist. Please try again."})}catch(a){return M.error("joinWaitlist error:",a),{success:!1,error:"Network error. Please check your connection and try again."}}}async function Nt(t){const e={waitlistEnabled:!1,soldOut:!1,gated:!1};try{const r=await k(`/events/${t}/waitlist/status`);return r.success?{waitlistEnabled:!!r.data?.waitlistEnabled,soldOut:!!r.data?.soldOut,gated:!!r.data?.gated}:e}catch(r){return M.error("getWaitlistStatus error:",r),e}}function Ot(t,e,r={}){const{cancelled:n=!1,isRegistration:a=!1,waitlistEnabled:s=!1}=r,o=new Date;if(n)return{text:"Cancelled",disabled:!0,reason:"cancelled"};const i=t.endDateTime||t.startDateTime;if(i&&new Date(i)<o)return{text:"Sales ended",disabled:!0,reason:"event_past"};const u=t?.hasPurchasableHiddenTickets===!0||Array.isArray(e)&&e.some(he.isHiddenTicketPurchasable),E=(e||[]).filter(l=>l.salesChannel!==2&&!l.isHidden&&!(typeof l.visibility=="number"&&l.visibility>=2));if(E.length===0)return u?{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"No tickets available",disabled:!0,reason:"no_tickets"};let y=!1,b=!0,v=!0,h=null;for(const l of E){const T=l.salesBegin||l.salesStart||l.saleBegin||l.onSaleStart,O=l.salesEnd||l.saleEnd||l.onSaleEnd,I=l.remainingCapacity??l.quantityRemaining??l.quantity,w=l.soldOut||I!=null&&I<=0,R=T?new Date(T)>o:!1,z=O?new Date(O)<o:!1;if(!w&&!R&&!z&&(y=!0),w||(b=!1),R||(v=!1),R&&T&&!w&&!z){const H=new Date(T);(!h||H<h)&&(h=H)}}if(y)return{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"available"};if(v&&h){if(u)return{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"};const l=h.getTime()-o.getTime(),T=l/(1e3*60*60),O=l/(1e3*60*60*24),I=R=>L.formatLocal(R,{hour:"numeric",minute:"2-digit",hour12:!0},"en-US");let w;return T<24?w=I(h):O<=7?w=L.formatLocal(h,{weekday:"short",hour:"numeric",minute:"2-digit",hour12:!0},"en-US"):w=`${L.formatLocal(h,{month:"short",day:"numeric"},"en-US")} ${I(h)}`,{text:`On sale ${w}`,disabled:!0,reason:"coming_soon"}}return b?u?{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:s?{text:"Join Waitlist",disabled:!1,reason:"sold_out_waitlist"}:{text:"Sold out",disabled:!0,reason:"sold_out"}:u?{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"Sales ended",disabled:!0,reason:"sales_ended"}}function fe(t){const e=t;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 me(t){const e=t,r=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:r.map(fe),createdAt:e.createdAt||e.created_at,updatedAt:e.updatedAt||e.updated_at}}const xt=fe,Ft=me;function Vt(t){const e=me(t),r=e.uuid.split("-")[0]||e.uuid;return{orderId:e.uuid,displayOrderId:r,email:e.customerEmail,customerName:[e.customerFirstName,e.customerLastName].filter(Boolean).join(" "),total:e.totalAmount,formattedTotal:`${f.formatCurrency(e.totalAmount/100)}`,ticketCount:e.purchasedTickets.length,status:e.status}}function pe(t){return f.resolveImageUrl(t,{cdn:!0})}function G(t){const e=t.imageUrl||t.imageURL||t.image_url||t.image||"";return pe(e)}function Lt(t){switch(t){case"available":case"sold_out":case"coming_soon":case"ended":return t;default:return null}}function ge(t){const e=t.ctaState||t.cta_state;if(e){const o=Lt(e);if(o)return o}if(t.isCancelled||t.is_cancelled)return"ended";const r=t.startDateTime||t.start_date_time||t.date;if(r){const o=new Date(r).getTime(),i=Date.now();if(o<i)return"ended"}const n=t.ticketsAvailable??t.tickets_available;if(n!==void 0)return n<=0?"sold_out":"available";const a=t.availableTickets||t.available_tickets||t.tickets||[];return a.length===0?"coming_soon":a.reduce((o,i)=>{const u=i.quantityAvailable??i.quantity_available??i.quantity??0,E=i.quantitySold??i.quantity_sold??0;return o+Math.max(0,u-E)},0)<=0?"sold_out":"available"}function ye(t){const e=t;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 ve(t){const e=t,n=(e.availableTickets||e.available_tickets||e.tickets||[]).map(ye),a=n.map(i=>i.price).filter(i=>i>0),s=a.length>0?Math.min(...a):void 0,o=a.length>0?Math.max(...a):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:G(e),imageURL:G(e),status:e.status,isPublished:e.isPublished??e.is_published,isCancelled:e.isCancelled??e.is_cancelled,availableTickets:n,ticketsAvailable:e.ticketsAvailable??e.tickets_available??n.reduce((i,u)=>i+(u.quantityAvailable||0),0),ticketsSold:e.ticketsSold??e.tickets_sold,minPrice:e.minPrice??e.min_price??s,maxPrice:e.maxPrice??e.max_price??o,ctaText:e.ctaText||e.cta_text,ctaState:ge(e),showPerformers:e.showPerformers??e.show_performers,eventSeriesId:e.eventSeriesId||e.event_series_id,seriesInstanceNumber:e.seriesInstanceNumber||e.series_instance_number,timeZone:e.timeZone,eventSummary:e.eventSummary,password:e.password,hasPassword:e.hasPassword,disclaimer:e.disclaimer,ticketType:e.ticketType,eventTicketingType:e.eventTicketingType,ageRestriction:e.ageRestriction,displayAgeRestriction:e.displayAgeRestriction,displayStartTime:e.displayStartTime,displayEndTime:e.displayEndTime,displayDoorsTime:e.displayDoorsTime,collectionId:e.collectionId||e.collection_id,ticketsRemaining:e.ticketsRemaining,ticketsTotal:e.ticketsTotal,hasHiddenTickets:e.hasHiddenTickets,stage:e.stage,stageName:e.stageName,stageId:e.stageId,eventCategoryTypes:e.eventCategoryTypes,publicPerformers:e.publicPerformers,collectionIds:e.collectionIds,venue:e.venue,performers:e.performers,faqs:e.faqs,showtimes:e.showtimes,purchasedTickets:e.purchasedTickets}}const qt=ye,Mt=ve,Gt=ve;function jt(t){return f.resolveImageUrl(t,{cdn:!0})}function Bt(t){const e=t,r=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:jt(r),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}}const zt=Bt;function Ht(t){const e=t;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 Wt(t){return[t.address,t.city,t.state,t.zipCode].filter(Boolean).join(", ")}exports.apiDelete=Y;exports.apiGet=k;exports.apiPost=m;exports.apiPut=$e;exports.applyGiftCard=It;exports.applyPromoCode=at;exports.calculateCtaState=ge;exports.cancelReservation=We;exports.checkCollectionPassword=wt;exports.checkEventPassword=kt;exports.completeGiftCardPayment=At;exports.completeReservation=He;exports.computeCtaState=Ot;exports.configureApi=we;exports.createGiftCardPurchase=Tt;exports.createOrder=Qe;exports.createPaymentIntent=je;exports.err=D;exports.extendCheckoutSession=Ke;exports.extractVenueFees=Ht;exports.fetchAllVenues=dt;exports.fetchAllVenuesResult=ae;exports.fetchEventDetails=ct;exports.fetchEventPerformers=lt;exports.fetchEventPerformersResult=ne;exports.fetchEventTickets=ut;exports.fetchEventTicketsResult=re;exports.fetchPublicCollection=_t;exports.fetchSeriesOccurrences=yt;exports.fetchSeriesOccurrencesResult=le;exports.fetchSeriesPage=ht;exports.fetchVenueEvents=ft;exports.fetchVenueEventsResult=se;exports.formatVenueAddress=Wt;exports.getApiConfig=ke;exports.getCDNImageUrl=pe;exports.getCartByUUID=Be;exports.getClientIP=be;exports.getEventImageUrl=G;exports.getLegacyPublicUrl=Ce;exports.getMonthEvents=mt;exports.getMonthEventsResult=ie;exports.getOrder=Je;exports.getOrdersV2Url=$;exports.getOrgMonthEvents=pt;exports.getOrgMonthEventsResult=ce;exports.getPublicBaseUrl=c;exports.getSeriesOccurrences=gt;exports.getSeriesOccurrencesResult=ue;exports.getSessionStatus=Ze;exports.getVenue=de;exports.getVenueBySlug=Pt;exports.getVenueFees=bt;exports.getWaitlistStatus=Nt;exports.hasPromoCodes=nt;exports.initiateOrder=Xe;exports.isOk=it;exports.joinWaitlist=Ut;exports.ok=te;exports.removeGiftCard=Rt;exports.removePromoCode=st;exports.resolvePublicEntity=vt;exports.testNetworkConnection=Ct;exports.trackUTMSource=et;exports.transformAvailableTicket=qt;exports.transformEvent=Mt;exports.transformEventData=Gt;exports.transformOrder=Ft;exports.transformOrderForDisplay=Vt;exports.transformTicket=xt;exports.transformVenue=zt;exports.unwrapOr=S;exports.updateCartQuantities=ze;exports.validatePaymentIntent=Ye;exports.validatePromoCode=rt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("@getmicdrop/svelte-components/utils/logger"),m=require("@getmicdrop/svelte-components"),L=require("@getmicdrop/svelte-components/datetime"),we=require("@getmicdrop/svelte-components/transforms");require("@getmicdrop/svelte-components/utils/timezones");const q=$.createLogger("VC"),ke={baseUrl:"https://get-micdrop.com",timeout:3e4,retries:2,retryDelay:500,onError:t=>q.error("API Error:",t)};let g={...ke};function Ce(t){g={...g,...t}}function be(){return{...g}}function c(){return`${g.baseUrl}/api/v2/public`}function Pe(){return`${g.baseUrl}/api/public`}function S(){return`${g.baseUrl}/api/orders/v2/public`}async function $e(){return""}const Se=t=>new Promise(e=>setTimeout(e,t));async function K(t,e,r){const n=(e.method||"GET").toUpperCase(),s=n==="GET"||n==="HEAD"?r.retries+1:1;let o;for(let i=1;i<=s;i++){const u=new AbortController,T=setTimeout(()=>u.abort(),r.timeout),y=e.signal;let P;y&&(y.aborted?u.abort():(P=()=>u.abort(),y.addEventListener("abort",P,{once:!0})));try{const v=await fetch(t,{...e,signal:u.signal});if(v.status>=500&&i<s)o=new Error(`HTTP ${v.status}`);else return v}catch(v){if(o=v,y?.aborted)throw v}finally{clearTimeout(T),y&&P&&y.removeEventListener("abort",P)}i<s&&await Se(r.retryDelay*Math.pow(2,i-1))}throw o}async function C(t,e){return F("GET",t,void 0,e)}async function f(t,e,r){return F("POST",t,e,r)}async function Ee(t,e,r){return F("PUT",t,e,r)}async function Z(t,e){return F("DELETE",t,void 0,e)}async function F(t,e,r,n){const a=e.startsWith("http")?e:`${c()}${e}`;try{const s=await K(a,{method:t,headers:{"Content-Type":"application/json",...n?.headers},body:r!==void 0?JSON.stringify(r):void 0,credentials:"include",...n},g);if(!s.ok){const i=await s.json().catch(()=>({})),u=i.error||i.message||`HTTP ${s.status}`;return g.onError(new Error(u)),{success:!1,error:u,statusCode:s.status}}return{success:!0,data:await s.json(),statusCode:s.status}}catch(s){const o=s instanceof Error?s.name==="AbortError"?"Request timed out":s.message:"Unknown error";return g.onError(s instanceof Error?s:new Error(o)),{success:!1,error:o}}}async function U(t,e){try{const r=await K(t,{credentials:"include",...e},g);if(!r.ok){const n=await r.json().catch(()=>({}));return q.error(`API request failed: ${r.status}`,n),null}return r.json()}catch(r){return q.error("API request error:",r),null}}function Te(t){const e=t??{};return{ticketID:Number(e.TicketID??e.ticketID??0),quantity:Number(e.Quantity??e.quantity??0),priceAtReservation:Number(e.PriceAtReservation??e.priceAtReservation??0),status:String(e.Status??e.status??"")}}function Ie(t){const e=t??{},r=e.UUID??e.uuid??"",n=Number(e.EventID??e.eventID??0),a=e.Status??e.status??"",s=e.ExpiresAt??e.expiresAt??"",i=(e.Reservations??e.reservations??[]).map(Te);return{uuid:r,eventID:n,status:a,expiresAt:s,reservations:i}}const X=["utmSource","utmMedium","utmCampaign","utmContent","utmTerm"],Re={utmSource:"utm_source",utmMedium:"utm_medium",utmCampaign:"utm_campaign",utmContent:"utm_content",utmTerm:"utm_term"},ee="direct";function te(t){return t?t.trim().toLowerCase().replace(/\s+/g,"_"):""}function Ae(t){const e={};for(const r of X)e[r]=te(t[r]);return e.utmSource||(e.utmSource=ee),e}function De(t){const e={};for(const r of X)e[r]=t.get(Re[r]);return Ae(e)}function Ue(){if(typeof window>"u")return!0;try{return window.self===window.top}catch{return!1}}function Ne(){const t=typeof window<"u",e=Ue(),r=t?window.location.search:"",n=(typeof document<"u"?document.referrer:"")??"",a=t&&e?window.location.href:"";return{utm:De(new URLSearchParams(r)),referrer:n||"",pageUrl:a||""}}let Oe=!1;function xe(){return typeof window<"u"&&typeof window.__tcfapi=="function"}function Fe(){return xe()}function Ve(){return Fe()?Oe:!0}const J="micdrop_session_id",Y="micdrop_visitor_id",Le=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function qe(t){return typeof t=="string"&&Le.test(t)}function re(){const t=typeof crypto<"u"?crypto:void 0;if(t?.randomUUID)return t.randomUUID();const e=new Uint8Array(16);if(t?.getRandomValues)t.getRandomValues(e);else for(let n=0;n<16;n++)e[n]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;const r=[];for(let n=0;n<16;n++)r.push(e[n].toString(16).padStart(2,"0"));return`${r[0]}${r[1]}${r[2]}${r[3]}-${r[4]}${r[5]}-${r[6]}${r[7]}-${r[8]}${r[9]}-${r[10]}${r[11]}${r[12]}${r[13]}${r[14]}${r[15]}`}function Me(){let t=m.getSessionStorage(J);return t||(t=re(),m.setSessionStorage(J,t)),t}function Ge(){if(!Ve())return null;const t=m.getLocalStorage(Y);if(qe(t))return t;const e=re();return m.setLocalStorage(Y,e),e}const je="micdrop_attribution";function Be(){const t=m.getSessionStorage(je);return!t||!t.utm||typeof t.utm.utmSource!="string"?null:t}function N(){const e=Be()??Ne();return{sessionId:Me(),visitorId:Ge(),utmSource:e.utm.utmSource,utmMedium:e.utm.utmMedium,utmCampaign:e.utm.utmCampaign,utmContent:e.utm.utmContent,utmTerm:e.utm.utmTerm,referrer:e.referrer||""}}m.createLogger("tracking");const d=$.createLogger("VC");async function ze(t,e,r){try{const n=await f(`${S()}/cart/${t}/payment-intent`,{productQuantities:e,...r&&Object.keys(r).length>0?{donationAmounts:r}:{},attribution:N()});if(!n.success)throw d.error("Payment intent creation failed:",n.error),new m.AppError(n.error||"Failed to create payment intent","lib/api/orders/createPaymentIntent");return d.debug("Payment intent created:",n.data),n.data}catch(n){return d.error("createPaymentIntent error:",n),null}}async function He(t,e){if(!t)return null;try{const r=await C(`${S()}/cart/${t}`);if(!r.success)return null;const{uuid:n,eventID:a,status:s,expiresAt:o,reservations:i}=Ie(r.data);return s!=="reserved"&&s!=="active"||e!==void 0&&a!==Number(e)?null:{uuid:n,eventID:a,status:s,expiresAt:o,reservations:i}}catch(r){return d.error("getCartByUUID error:",r),null}}async function We(t,e,r){try{const n={};for(const[o,i]of Object.entries(e)){const u=typeof o=="number"?o:parseInt(o,10);!Number.isNaN(u)&&i>0&&(n[u]=i)}const a={};if(r)for(const[o,i]of Object.entries(r)){const u=typeof o=="number"?o:parseInt(o,10);!Number.isNaN(u)&&i>0&&(a[u]=i)}const s=await fetch(`${S()}/cart/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({quantities:n,...Object.keys(a).length>0?{donationAmounts:a}:{}})});if(!s.ok){const o=await s.json().catch(()=>({}));return d.error("Cart update failed:",o),!1}return!0}catch(n){return d.error("updateCartQuantities error:",n),!1}}async function Qe(t){try{const e=await f(`${c()}/orders/complete/${t}`);return e.success?{success:!0,message:e.data?.message}:{success:!1,error:e.error||"Failed to complete reservation"}}catch(e){return d.error("Error completing reservation:",e),{success:!1,error:"Network error completing reservation"}}}async function Je(t){try{const e=await f(`${c()}/orders/cancel/${t}`);return e.success?{success:!0,message:e.data?.message}:{success:!1,error:e.error||"Failed to cancel reservation"}}catch(e){return d.error("Error cancelling reservation:",e),{success:!1,error:"Network error cancelling reservation"}}}async function Ye(t,e){try{const r=await f(`${c()}/orders/create`,{eventID:t,promoCode:e,attribution:N()});return r.success?r.data:(d.error("Create order failed:",r.error),null)}catch(r){return d.error("createOrder error:",r),null}}async function Ke(t){return U(`${c()}/orders/${t}`)}async function Ze(t,e){try{const r=await f(`${S()}/validatePaymentIntent/${t}`,{...e,attribution:N()});if(!r.success)return d.error("Payment validation failed:",r.error),{success:!1,status:"failed",error:r.error||"Payment validation failed"};const n=r.data;return n.eventCanceled||n.eventPostponed?{success:!1,status:"failed",eventCanceled:n.eventCanceled,eventPostponed:n.eventPostponed}:{success:!0,status:n.status||"Payment succeeded",orderUUID:n.orderUUID||n.uuid}}catch(r){return d.error("validatePaymentIntent error:",r),null}}async function Xe(t){try{const e=await f(`${c()}/orders/extend-session`,{orderUuid:t});if(!e.success)return{success:!1,error:e.error||"Failed to extend session",statusCode:e.statusCode};const r=e.data;return{success:!0,newExpiryTime:r.newExpiryTime,remainingExtensions:r.remainingExtensions}}catch(e){return d.error("Error extending checkout session:",e),{success:!1,error:"Network error extending session"}}}async function et(t){try{const e=await C(`${c()}/orders/session/${t}`);if(!e.success)return{error:e.error||"No active session found",notFound:e.statusCode===404};const r=e.data;return{expiresAt:r.expiresAt,extensionCount:r.extensionCount,remainingExtensions:r.remainingExtensions,canExtend:r.canExtend,reservationCount:r.reservationCount,eventStatus:r.eventStatus}}catch(e){return d.error("Error getting session status:",e),{error:"Network error getting session status"}}}async function tt(t={eventID:""}){try{const e=await f(`${c()}/orders/create`,{...t,attribution:N()});return e.success?e.data?.uuid??null:(d.error("Order initiation failed:",e.error),null)}catch(e){return d.error("initiateOrder error:",e),null}}async function rt(t){if(typeof window>"u")return;const e=new URLSearchParams(window.location.search),r=te(e.get("utm_source"))||ee;try{await fetch(`${c()}/utm/${t}/${encodeURIComponent(r)}`)}catch(n){d.error("UTM tracking failed:",n)}}const V=$.createLogger("VC"),nt=()=>S();async function at(t,e){try{if(!e||!e.trim())return{valid:!1,error:"Promo code is required"};const r=encodeURIComponent(e.trim()),n=await C(`/promo-codes/validate/${t}/${r}`);if(!n.success)return n.statusCode===404?{valid:!1,error:"Invalid promo code"}:{valid:!1,error:"Failed to validate code"};const a=n.data;return{valid:a.valid??!0,revealHiddenTickets:a.revealHiddenTickets,revealTicketIds:a.revealTicketIds,provideDiscount:a.provideDiscount,discountType:a.discountType,amount:a.amount,code:a.code||e}}catch(r){return V.error("Error validating promo code:",r),{valid:!1,error:"Network error validating code"}}}async function st(t){try{const e=await C(`/promo-codes/check/${t}`);return e.success?e.data.hasPromoCodes===!0:!0}catch(e){return V.error("Error checking promo codes availability:",e),!0}}async function ot(t,e){try{const r=await f(`${nt()}/cart/${t}/apply-promo`,{promoCode:e});return r.success?{success:!0}:{success:!1,error:r.error||"Failed to apply promo code"}}catch(r){return V.error("Error applying promo code:",r),{success:!1,error:"Network error applying code"}}}async function it(t){try{const e=await f(`/orders/${t}/remove-promo`);return e.success?{success:!0}:{success:!1,error:e.error||"Failed to remove promo code"}}catch(e){return V.error("Error removing promo code:",e),{success:!1,error:"Network error removing code"}}}function ct(t){const e=t??{};return{performers:Array.isArray(e.performers)?e.performers:[],showPerformers:e.showPerformers===!0}}function B(t){return{ok:!0,data:t}}function k(t){return{ok:!1,error:t}}function M(t){return{ok:!1,error:t,notFound:!0}}function ut(t){return t.ok}function lt(t){return!t.ok}function E(t,e){return t.ok?t.data:e}const p=$.createLogger("VC"),x=new Map;async function ne(t,e=fetch,r){const n=r?`${t}:pw`:String(t);if(e===fetch){const s=x.get(n);if(s)return s}const a=(async()=>{try{const s=r?`${c()}/events/${t}?password=${encodeURIComponent(r)}`:`${c()}/events/${t}`,o=await e(s);if(!o.ok)return o.status===404?M("event_not_found"):(p.error(`Failed to fetch event details: ${o.status}`),k("event_fetch_failed"));const i=await o.json();return i?B(i):M("event_not_found")}catch(s){return p.error("Error fetching event details:",s),k("event_fetch_failed")}})();return e===fetch&&(x.set(n,a),a.finally(()=>{x.get(n)===a&&x.delete(n)})),a}async function dt(t,e=fetch,r){const n=await ne(t,e,r);return n.ok?n.data:null}async function b(t,e,r=n=>n){try{const n=await U(t);return n?B(r(n)):(p.error(`Failed to load (${e}): network or server error`),k(e))}catch(n){return p.error(`Error loading (${e}):`,n),k(e)}}function z(t){return Array.isArray(t)?t:[]}async function ae(t){return b(`${c()}/tickets/event/${t}`,"tickets_fetch_failed",z)}async function ft(t){return E(await ae(t),[])}async function se(t){return t?b(`${c()}/events/${t}/performers`,"performers_fetch_failed",e=>ct(e)):(p.warn("fetchEventPerformers called without eventId"),k("performers_missing_event_id"))}async function mt(t){return E(await se(t),{performers:[],showPerformers:!1})}async function oe(t){return t?b(`${c()}/venues/organization/${t}`,"venues_fetch_failed",z):(p.warn("fetchAllVenues called without orgId"),k("venues_missing_org_id"))}async function pt(t){return E(await oe(t),[])}async function ie(t){return t?b(`${c()}/events/venue/${t}`,"venue_events_fetch_failed",z):(p.warn("fetchVenueEvents called without venueId"),k("venue_events_missing_venue_id"))}async function gt(t){return E(await ie(t),[])}function ce(t){return Array.isArray(t)?t:Array.isArray(t.events)?t.events:[]}async function ue(t,e,r){return b(`${c()}/events/venue/${t}/month/${e}/${r}`,"month_events_fetch_failed",n=>ce(n))}async function yt(t,e,r){return E(await ue(t,e,r),[])}async function le(t,e,r){return b(`${c()}/events/organization/${t}/month/${e}/${r}`,"org_month_events_fetch_failed",n=>ce(n))}async function vt(t,e,r){return E(await le(t,e,r),[])}async function de(t){return b(`${c()}/series/${t}/occurrences`,"series_occurrences_fetch_failed")}async function ht(t){const e=await de(t);return e.ok?e.data:null}async function fe(t,e){return b(`${c()}/series/${t}/occurrences?venueId=${e}`,"series_cta_fetch_failed")}async function _t(t,e){const r=await fe(t,e);return r.ok?r.data:null}async function wt(t,e){try{const r=e?`?slug=${encodeURIComponent(e)}`:"",n=await U(`${c()}/resolve/${encodeURIComponent(String(t))}${r}`);if(!n||!n.type)throw new m.AppError("Failed to resolve entity","lib/api/events/resolvePublicEntity");return n}catch(r){return p.error("Error resolving public entity:",r),null}}async function kt(t){try{const e=await U(`${c()}/series/${t}/page`);if(!e)throw new m.AppError("Failed to fetch series page","lib/api/events/fetchSeriesPage");return e}catch(e){return p.error("Error fetching series page:",e),null}}async function Ct(t,e){try{const r=e?`${c()}/collections/${t}?password=${encodeURIComponent(e)}`:`${c()}/collections/${t}`,n=await U(r);if(!n)throw new m.AppError("Failed to fetch collection","lib/api/events/fetchPublicCollection");return n}catch(r){return p.error("Error fetching collection:",r),null}}async function bt(t,e){try{const r=encodeURIComponent(e);return(await U(`${c()}/collections/${t}/check-password/${r}`))?.valid===!0}catch(r){return p.error("Error checking collection password:",r),!1}}async function Pt(t,e){try{const r=await f(`${c()}/events/${t}/check-password`,{password:e});if(!r.success)return{valid:!1};const n=r.data;return typeof n=="boolean"?{valid:n}:{valid:n.valid===!0}}catch(r){return p.error("Error checking event password:",r),{valid:!1}}}async function $t(t,e){try{const r=e?`${c()}/events/venue/${e}`:t?`${c()}/venues/organization/${t}`:`${c()}/health`;return(await fetch(r,{method:"HEAD"})).ok}catch(r){return p.error("Network connection test failed:",r),!1}}const D=$.createLogger("VC");async function me(t){try{if(!t)return D.warn("getVenue called without venueId"),null;const e=await C(`/venues/${t}`);return e.success?e.data??null:(D.error(`Failed to fetch venue: ${e.statusCode}`),null)}catch(e){return D.error("Error fetching venue:",e),null}}async function St(t){const e=await me(t);return e?{serviceFeePercentage:e.serviceFeePercentage??0,serviceFeeCents:e.serviceFeeCents??0,taxPercentage:e.taxPercentage??0}:null}async function Et(t){try{if(!t)return D.warn("getVenueBySlug called without slug"),null;const e=encodeURIComponent(t),r=await C(`/venues/slug/${e}`);return r.success?r.data??null:(D.error(`Failed to fetch venue by slug: ${r.statusCode}`),null)}catch(e){return D.error("Error fetching venue by slug:",e),null}}function Tt(t){const e=t??{},r=(e.appliedAmount??0)/100,n=e.remainingTotal??0,a=e.fullyCoveredByCard??n<=0,s=!a;return{valid:!0,giftCardCode:e.giftCardCode,giftCardAmount:r,giftCardBalance:e.giftCardBalance,paymentType:a?"gift_card_only":"split",stripeAmount:n,orderTotal:r+n,requiresStripe:s}}const _=$.createLogger("VC"),It="https://get-micdrop.com",Rt=`${It}/api/orders/v2`,H=()=>S();async function At(t){try{const e=await f(`${Rt}/gift-cards`,t);if(!e.success)throw _.error("Gift card purchase creation failed:",e.error),new m.AppError(e.error||"Failed to create gift card purchase","lib/api/gift-cards/createGiftCardPurchase");return _.debug("Gift card purchase created:",e.data),e.data}catch(e){return _.error("Gift card purchase creation error:",e),null}}async function Dt(t,e){try{const r=await f(`${H()}/cart/${t}/apply-gift-card`,{giftCardCode:e});return r.success?Tt(r.data):r.statusCode===429?{valid:!1,error:"Too many attempts. Please wait a moment and try again."}:(_.error("Apply gift card failed:",r.error),{valid:!1,error:r.error||"Invalid gift card code"})}catch(r){return _.error("applyGiftCard error:",r),{valid:!1,error:"Network error. Please check your connection and try again."}}}async function Ut(t,e){try{const r=await Z(`${H()}/cart/${t}/gift-card`,e?{body:JSON.stringify({giftCardCode:e})}:void 0);return r.success?{success:!0}:(_.error("Remove gift card failed:",r.error),{success:!1,error:r.error||"Failed to remove gift card"})}catch(r){return _.error("removeGiftCard error:",r),{success:!1,error:"Network error. Please check your connection and try again."}}}async function Nt(t,e){try{const r=await f(`${H()}/cart/${t}/complete-gift-card-payment`,{firstName:e.firstName,lastName:e.lastName,email:e.email,phoneNumber:e.phoneNumber||null,mailingList:e.mailingList||!1,attribution:N()});return r.success?{success:!0,orderId:r.data?.orderId,confirmationNumber:r.data?.confirmationNumber}:(_.error("Complete gift card payment failed:",r.error),{success:!1,error:r.error||"Failed to complete payment"})}catch(r){return _.error("completeGiftCardPayment error:",r),{success:!1,error:"Network error. Please check your connection and try again."}}}const G=$.createLogger("VC"),Ot={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 xt(t,e,r=null,n=!1){try{const a={email:e};r&&n&&(a.phone=r,a.smsOptIn=!0);const s=await f(`/events/${t}/waitlist`,a);return s.success?{success:!0,updated:s.data?.updated}:(G.error("Join waitlist failed:",s.error),{success:!1,error:Ot[s.error??""]||"Failed to join waitlist. Please try again."})}catch(a){return G.error("joinWaitlist error:",a),{success:!1,error:"Network error. Please check your connection and try again."}}}async function Ft(t){const e={waitlistEnabled:!1,soldOut:!1,gated:!1};try{const r=await C(`/events/${t}/waitlist/status`);return r.success?{waitlistEnabled:!!r.data?.waitlistEnabled,soldOut:!!r.data?.soldOut,gated:!!r.data?.gated}:e}catch(r){return G.error("getWaitlistStatus error:",r),e}}function Vt(t,e,r={}){const{cancelled:n=!1,isRegistration:a=!1,waitlistEnabled:s=!1}=r,o=new Date;if(n)return{text:"Cancelled",disabled:!0,reason:"cancelled"};const i=t.endDateTime||t.startDateTime;if(i&&new Date(i)<o)return{text:"Sales ended",disabled:!0,reason:"event_past"};const u=t?.hasPurchasableHiddenTickets===!0||Array.isArray(e)&&e.some(we.isHiddenTicketPurchasable),T=(e||[]).filter(l=>l.salesChannel!==2&&!l.isHidden&&!(typeof l.visibility=="number"&&l.visibility>=2));if(T.length===0)return u?{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"No tickets available",disabled:!0,reason:"no_tickets"};let y=!1,P=!0,v=!0,h=null;for(const l of T){const I=l.salesBegin||l.salesStart||l.saleBegin||l.onSaleStart,O=l.salesEnd||l.saleEnd||l.onSaleEnd,R=l.remainingCapacity??l.quantityRemaining??l.quantity,w=l.soldOut||R!=null&&R<=0,A=I?new Date(I)>o:!1,W=O?new Date(O)<o:!1;if(!w&&!A&&!W&&(y=!0),w||(P=!1),A||(v=!1),A&&I&&!w&&!W){const Q=new Date(I);(!h||Q<h)&&(h=Q)}}if(y)return{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"available"};if(v&&h){if(u)return{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"};const l=h.getTime()-o.getTime(),I=l/(1e3*60*60),O=l/(1e3*60*60*24),R=A=>L.formatLocal(A,{hour:"numeric",minute:"2-digit",hour12:!0},"en-US");let w;return I<24?w=R(h):O<=7?w=L.formatLocal(h,{weekday:"short",hour:"numeric",minute:"2-digit",hour12:!0},"en-US"):w=`${L.formatLocal(h,{month:"short",day:"numeric"},"en-US")} ${R(h)}`,{text:`On sale ${w}`,disabled:!0,reason:"coming_soon"}}return P?u?{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:s?{text:"Join Waitlist",disabled:!1,reason:"sold_out_waitlist"}:{text:"Sold out",disabled:!0,reason:"sold_out"}:u?{text:a?"Reserve a spot":"Get tickets",disabled:!1,reason:"hidden_only"}:{text:"Sales ended",disabled:!0,reason:"sales_ended"}}function pe(t){const e=t;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 ge(t){const e=t,r=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:r.map(pe),createdAt:e.createdAt||e.created_at,updatedAt:e.updatedAt||e.updated_at}}const Lt=pe,qt=ge;function Mt(t){const e=ge(t),r=e.uuid.split("-")[0]||e.uuid;return{orderId:e.uuid,displayOrderId:r,email:e.customerEmail,customerName:[e.customerFirstName,e.customerLastName].filter(Boolean).join(" "),total:e.totalAmount,formattedTotal:`${m.formatCurrency(e.totalAmount/100)}`,ticketCount:e.purchasedTickets.length,status:e.status}}function ye(t){return m.resolveImageUrl(t,{cdn:!0})}function j(t){const e=t.imageUrl||t.imageURL||t.image_url||t.image||"";return ye(e)}function Gt(t){switch(t){case"available":case"sold_out":case"coming_soon":case"ended":return t;default:return null}}function ve(t){const e=t.ctaState||t.cta_state;if(e){const o=Gt(e);if(o)return o}if(t.isCancelled||t.is_cancelled)return"ended";const r=t.startDateTime||t.start_date_time||t.date;if(r){const o=new Date(r).getTime(),i=Date.now();if(o<i)return"ended"}const n=t.ticketsAvailable??t.tickets_available;if(n!==void 0)return n<=0?"sold_out":"available";const a=t.availableTickets||t.available_tickets||t.tickets||[];return a.length===0?"coming_soon":a.reduce((o,i)=>{const u=i.quantityAvailable??i.quantity_available??i.quantity??0,T=i.quantitySold??i.quantity_sold??0;return o+Math.max(0,u-T)},0)<=0?"sold_out":"available"}function he(t){const e=t;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 _e(t){const e=t,n=(e.availableTickets||e.available_tickets||e.tickets||[]).map(he),a=n.map(i=>i.price).filter(i=>i>0),s=a.length>0?Math.min(...a):void 0,o=a.length>0?Math.max(...a):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:j(e),imageURL:j(e),status:e.status,isPublished:e.isPublished??e.is_published,isCancelled:e.isCancelled??e.is_cancelled,availableTickets:n,ticketsAvailable:e.ticketsAvailable??e.tickets_available??n.reduce((i,u)=>i+(u.quantityAvailable||0),0),ticketsSold:e.ticketsSold??e.tickets_sold,minPrice:e.minPrice??e.min_price??s,maxPrice:e.maxPrice??e.max_price??o,ctaText:e.ctaText||e.cta_text,ctaState:ve(e),showPerformers:e.showPerformers??e.show_performers,eventSeriesId:e.eventSeriesId||e.event_series_id,seriesInstanceNumber:e.seriesInstanceNumber||e.series_instance_number,timeZone:e.timeZone,eventSummary:e.eventSummary,password:e.password,hasPassword:e.hasPassword,disclaimer:e.disclaimer,ticketType:e.ticketType,eventTicketingType:e.eventTicketingType,ageRestriction:e.ageRestriction,displayAgeRestriction:e.displayAgeRestriction,displayStartTime:e.displayStartTime,displayEndTime:e.displayEndTime,displayDoorsTime:e.displayDoorsTime,collectionId:e.collectionId||e.collection_id,ticketsRemaining:e.ticketsRemaining,ticketsTotal:e.ticketsTotal,hasHiddenTickets:e.hasHiddenTickets,stage:e.stage,stageName:e.stageName,stageId:e.stageId,eventCategoryTypes:e.eventCategoryTypes,publicPerformers:e.publicPerformers,collectionIds:e.collectionIds,venue:e.venue,performers:e.performers,faqs:e.faqs,showtimes:e.showtimes,purchasedTickets:e.purchasedTickets}}const jt=he,Bt=_e,zt=_e;function Ht(t){return m.resolveImageUrl(t,{cdn:!0})}function Wt(t){const e=t,r=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:Ht(r),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}}const Qt=Wt;function Jt(t){const e=t;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 Yt(t){return[t.address,t.city,t.state,t.zipCode].filter(Boolean).join(", ")}exports.apiDelete=Z;exports.apiGet=C;exports.apiPost=f;exports.apiPut=Ee;exports.applyGiftCard=Dt;exports.applyPromoCode=ot;exports.calculateCtaState=ve;exports.cancelReservation=Je;exports.checkCollectionPassword=bt;exports.checkEventPassword=Pt;exports.completeGiftCardPayment=Nt;exports.completeReservation=Qe;exports.computeCtaState=Vt;exports.configureApi=Ce;exports.createGiftCardPurchase=At;exports.createOrder=Ye;exports.createPaymentIntent=ze;exports.err=k;exports.errNotFound=M;exports.extendCheckoutSession=Xe;exports.extractVenueFees=Jt;exports.fetchAllVenues=pt;exports.fetchAllVenuesResult=oe;exports.fetchEventDetails=dt;exports.fetchEventDetailsResult=ne;exports.fetchEventPerformers=mt;exports.fetchEventPerformersResult=se;exports.fetchEventTickets=ft;exports.fetchEventTicketsResult=ae;exports.fetchPublicCollection=Ct;exports.fetchSeriesOccurrences=_t;exports.fetchSeriesOccurrencesResult=fe;exports.fetchSeriesPage=kt;exports.fetchVenueEvents=gt;exports.fetchVenueEventsResult=ie;exports.formatVenueAddress=Yt;exports.getApiConfig=be;exports.getCDNImageUrl=ye;exports.getCartByUUID=He;exports.getClientIP=$e;exports.getEventImageUrl=j;exports.getLegacyPublicUrl=Pe;exports.getMonthEvents=yt;exports.getMonthEventsResult=ue;exports.getOrder=Ke;exports.getOrdersV2Url=S;exports.getOrgMonthEvents=vt;exports.getOrgMonthEventsResult=le;exports.getPublicBaseUrl=c;exports.getSeriesOccurrences=ht;exports.getSeriesOccurrencesResult=de;exports.getSessionStatus=et;exports.getVenue=me;exports.getVenueBySlug=Et;exports.getVenueFees=St;exports.getWaitlistStatus=Ft;exports.hasPromoCodes=st;exports.initiateOrder=tt;exports.isErr=lt;exports.isOk=ut;exports.joinWaitlist=xt;exports.ok=B;exports.removeGiftCard=Ut;exports.removePromoCode=it;exports.resolvePublicEntity=wt;exports.testNetworkConnection=$t;exports.trackUTMSource=rt;exports.transformAvailableTicket=jt;exports.transformEvent=Bt;exports.transformEventData=zt;exports.transformOrder=qt;exports.transformOrderForDisplay=Mt;exports.transformTicket=Lt;exports.transformVenue=Qt;exports.unwrapOr=E;exports.updateCartQuantities=We;exports.validatePaymentIntent=Ze;exports.validatePromoCode=at;
|
|
2
2
|
//# sourceMappingURL=api.cjs.map
|