@getmicdrop/venue-calendar 4.0.79 → 4.0.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -128
- package/dist/{CarouselView.legacy-CsMGxVbb.js → CarouselView.legacy-Bn76lnuH.js} +3 -3
- package/dist/{CarouselView.legacy-CsMGxVbb.js.map → CarouselView.legacy-Bn76lnuH.js.map} +1 -1
- package/dist/{CartView-BOaZufWZ.js → CartView-lR1zLxmN.js} +277 -280
- package/dist/CartView-lR1zLxmN.js.map +1 -0
- package/dist/{Checkout-bkXNpxIB.js → Checkout-D5mXj5zN.js} +69 -73
- package/dist/Checkout-D5mXj5zN.js.map +1 -0
- package/dist/Checkout-KyLZlwLk.js +1673 -0
- package/dist/Checkout-KyLZlwLk.js.map +1 -0
- package/dist/{Checkout.legacy-BOPwZMyO.js → Checkout.legacy-Dl8Oh7y3.js} +95 -99
- package/dist/Checkout.legacy-Dl8Oh7y3.js.map +1 -0
- package/dist/CheckoutTimer-Deo1mLnO.js +141 -0
- package/dist/CheckoutTimer-Deo1mLnO.js.map +1 -0
- package/dist/CollectionView-C1O9xfVC.js +338 -0
- package/dist/CollectionView-C1O9xfVC.js.map +1 -0
- package/dist/{CollectionView.legacy-Dw-J6Ycd.js → CollectionView.legacy-DK_mCA_g.js} +21 -24
- package/dist/{CollectionView.legacy-Dw-J6Ycd.js.map → CollectionView.legacy-DK_mCA_g.js.map} +1 -1
- package/dist/Event-B5WRygEf.js +2240 -0
- package/dist/Event-B5WRygEf.js.map +1 -0
- package/dist/EventPage-f1AOk4Jb.js +577 -0
- package/dist/EventPage-f1AOk4Jb.js.map +1 -0
- package/dist/{EventPage.legacy-Br2M8N9-.js → EventPage.legacy-Bk3PJyJs.js} +408 -411
- package/dist/EventPage.legacy-Bk3PJyJs.js.map +1 -0
- package/dist/{FeaturedView.legacy-B86kMzvH.js → FeaturedView.legacy-BzCt1X1W.js} +18 -18
- package/dist/{FeaturedView.legacy-B86kMzvH.js.map → FeaturedView.legacy-BzCt1X1W.js.map} +1 -1
- package/dist/{GalleryCard-CTsYUZu6.js → GalleryCard-C1EKGErR.js} +14 -14
- package/dist/{GalleryCard-CTsYUZu6.js.map → GalleryCard-C1EKGErR.js.map} +1 -1
- package/dist/{GalleryView.legacy-uIexOsl5.js → GalleryView.legacy-BmQtZKl7.js} +3 -3
- package/dist/{GalleryView.legacy-uIexOsl5.js.map → GalleryView.legacy-BmQtZKl7.js.map} +1 -1
- package/dist/{GroupedListView.legacy-DMAwHQ9T.js → GroupedListView.legacy-D72fbNfA.js} +21 -21
- package/dist/{GroupedListView.legacy-DMAwHQ9T.js.map → GroupedListView.legacy-D72fbNfA.js.map} +1 -1
- package/dist/Heading-Bwevh2c4.js +81 -0
- package/dist/Heading-Bwevh2c4.js.map +1 -0
- package/dist/ModalHeader-DKwE5ZYZ.js +22 -0
- package/dist/ModalHeader-DKwE5ZYZ.js.map +1 -0
- package/dist/OrderSummarySkeleton-DKWKZNLL.js +632 -0
- package/dist/OrderSummarySkeleton-DKWKZNLL.js.map +1 -0
- package/dist/{ScarcityBadge-D9RzN3Tz.js → ScarcityBadge-3cFxTOCh.js} +25 -29
- package/dist/{ScarcityBadge-D9RzN3Tz.js.map → ScarcityBadge-3cFxTOCh.js.map} +1 -1
- package/dist/{SeriesPage-D0pf6VuS.js → SeriesPage-Cq4Q8Vah.js} +17 -21
- package/dist/{SeriesPage-D0pf6VuS.js.map → SeriesPage-Cq4Q8Vah.js.map} +1 -1
- package/dist/{SeriesPage.legacy-VYpfyT7B.js → SeriesPage.legacy-zvgW0S_y.js} +67 -71
- package/dist/SeriesPage.legacy-zvgW0S_y.js.map +1 -0
- package/dist/{Success-Dxgbo_Ct.js → Success-kyiEO6_Z.js} +186 -175
- package/dist/{Success-Dxgbo_Ct.js.map → Success-kyiEO6_Z.js.map} +1 -1
- package/dist/{Success.legacy-umzUtow7.js → Success.legacy-BxKYmXgz.js} +53 -57
- package/dist/{Success.legacy-umzUtow7.js.map → Success.legacy-BxKYmXgz.js.map} +1 -1
- package/dist/Text-_bLxSPv-.js +158 -0
- package/dist/Text-_bLxSPv-.js.map +1 -0
- package/dist/{VenueCalendar-D9TCV_XB.js → VenueCalendar-d8u6MKEu.js} +8131 -22680
- package/dist/VenueCalendar-d8u6MKEu.js.map +1 -0
- package/dist/ViewTicketsEmbed-DquJJVIK.js +2081 -0
- package/dist/ViewTicketsEmbed-DquJJVIK.js.map +1 -0
- package/dist/__SKIP_NAVIGATION__-CmipjatL.js +18 -0
- package/dist/__SKIP_NAVIGATION__-CmipjatL.js.map +1 -0
- package/dist/api/api.cjs +1 -1
- package/dist/api/api.cjs.map +1 -1
- package/dist/api/api.mjs +482 -374
- package/dist/api/api.mjs.map +1 -1
- package/dist/api/cta.d.ts +2 -10
- package/dist/api/transformers/address.d.ts +18 -0
- package/dist/api/transformers/cart.d.ts +19 -0
- package/dist/api/transformers/collection.d.ts +12 -0
- package/dist/api/transformers/event.d.ts +50 -1
- package/dist/api/transformers/giftCard.d.ts +11 -0
- package/dist/api/transformers/index.d.ts +10 -3
- package/dist/api/transformers/performer.d.ts +8 -0
- package/dist/api/transformers/series.d.ts +12 -0
- package/dist/api/types.d.ts +423 -383
- package/dist/api-BzICORqy.js +6 -0
- package/dist/{api-DFMsiBOR.js.map → api-BzICORqy.js.map} +1 -1
- package/dist/colors-CmP-sSZD.js.map +1 -1
- package/dist/{data-toggle-store.svelte-DtDqN-QD.js → data-toggle-store.svelte-BGbzblUJ.js} +10 -15
- package/dist/data-toggle-store.svelte-BGbzblUJ.js.map +1 -0
- package/dist/index-BsWecoW1.js +63 -0
- package/dist/index-BsWecoW1.js.map +1 -0
- package/dist/labels-Bj_cocb1.js +966 -0
- package/dist/labels-Bj_cocb1.js.map +1 -0
- package/dist/seo/seo.cjs +1 -1
- package/dist/seo/seo.cjs.map +1 -1
- package/dist/seo/seo.mjs +131 -122
- package/dist/seo/seo.mjs.map +1 -1
- package/dist/transform-D7Oe8jUp.js +276 -0
- package/dist/transform-D7Oe8jUp.js.map +1 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/venue-calendar.css +1 -1
- package/dist/venue-calendar.es.js +31 -37
- package/dist/venue-calendar.es.js.map +1 -1
- package/dist/venue-calendar.iife.js +40 -107
- package/dist/venue-calendar.iife.js.map +1 -1
- package/dist/venue-calendar.umd.js +38 -125
- package/dist/venue-calendar.umd.js.map +1 -1
- package/package.json +170 -169
- package/dist/CartView-BOaZufWZ.js.map +0 -1
- package/dist/Checkout-DD6ZTUh-.js +0 -1531
- package/dist/Checkout-DD6ZTUh-.js.map +0 -1
- package/dist/Checkout-bkXNpxIB.js.map +0 -1
- package/dist/Checkout.legacy-BOPwZMyO.js.map +0 -1
- package/dist/CheckoutTimer-CHoKjZyH.js +0 -35
- package/dist/CheckoutTimer-CHoKjZyH.js.map +0 -1
- package/dist/CollectionView-Ce-OAEC4.js +0 -148
- package/dist/CollectionView-Ce-OAEC4.js.map +0 -1
- package/dist/Event-rdstzev0.js +0 -1910
- package/dist/Event-rdstzev0.js.map +0 -1
- package/dist/EventPage-B8VRC83d.js +0 -336
- package/dist/EventPage-B8VRC83d.js.map +0 -1
- package/dist/EventPage.legacy-Br2M8N9-.js.map +0 -1
- package/dist/Heading-AFd3o0xt.js +0 -44
- package/dist/Heading-AFd3o0xt.js.map +0 -1
- package/dist/OrderSummarySkeleton-dDKUH741.js +0 -16
- package/dist/OrderSummarySkeleton-dDKUH741.js.map +0 -1
- package/dist/SeriesPage.legacy-VYpfyT7B.js.map +0 -1
- package/dist/Text-CXR2fhx6.js +0 -54
- package/dist/Text-CXR2fhx6.js.map +0 -1
- package/dist/VenueCalendar-D9TCV_XB.js.map +0 -1
- package/dist/ViewTicketsEmbed-Bt05E5Ex.js +0 -2039
- package/dist/ViewTicketsEmbed-Bt05E5Ex.js.map +0 -1
- package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js +0 -7
- package/dist/__SKIP_NAVIGATION__-CJ96TTPE.js.map +0 -1
- package/dist/api-DFMsiBOR.js +0 -12
- package/dist/data-toggle-store.svelte-DtDqN-QD.js.map +0 -1
- package/dist/labels-CClq3Rb9.js +0 -659
- package/dist/labels-CClq3Rb9.js.map +0 -1
- package/dist/transform-CWf-YI_e.js +0 -275
- package/dist/transform-CWf-YI_e.js.map +0 -1
package/dist/api/types.d.ts
CHANGED
|
@@ -1,383 +1,423 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Types for MicDrop Public Checkout API
|
|
3
|
-
*
|
|
4
|
-
* These types define the shape of API requests and responses
|
|
5
|
-
* for the public checkout flow (no authentication required).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { EventId, SeriesId } from '@getmicdrop/svelte-components';
|
|
9
|
-
|
|
10
|
-
// ============================================================================
|
|
11
|
-
// Payment & Orders
|
|
12
|
-
// ============================================================================
|
|
13
|
-
|
|
14
|
-
export interface PaymentIntentRequest {
|
|
15
|
-
IP?: string;
|
|
16
|
-
productQuantities: Record<string | number, number>;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface PaymentIntentResponse {
|
|
20
|
-
client_secret: string;
|
|
21
|
-
amount: number;
|
|
22
|
-
amount_total: number;
|
|
23
|
-
tax_amount_exclusive?: number;
|
|
24
|
-
service_fee?: number;
|
|
25
|
-
discount?: number;
|
|
26
|
-
gift_card_amount?: number;
|
|
27
|
-
gift_card_code?: string;
|
|
28
|
-
stripe_publishable_key?: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface CompleteReservationResponse {
|
|
32
|
-
success: boolean;
|
|
33
|
-
message?: string;
|
|
34
|
-
error?: string;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface CancelReservationResponse {
|
|
38
|
-
success: boolean;
|
|
39
|
-
message?: string;
|
|
40
|
-
error?: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface CreateOrderRequest {
|
|
44
|
-
eventId: string | number;
|
|
45
|
-
promoCode?: string;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export interface CreateOrderResponse {
|
|
49
|
-
uuid: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface ValidatePaymentRequest {
|
|
53
|
-
id: string;
|
|
54
|
-
paymentIntentId: string;
|
|
55
|
-
tickets: Record<string | number, number>;
|
|
56
|
-
firstName: string;
|
|
57
|
-
lastName: string;
|
|
58
|
-
email: string;
|
|
59
|
-
paymentMethod: string;
|
|
60
|
-
mailingList?: boolean;
|
|
61
|
-
saleType?: string;
|
|
62
|
-
attendees?: AttendeeInfo[];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export interface AttendeeInfo {
|
|
66
|
-
ticketId: string | number;
|
|
67
|
-
firstName: string;
|
|
68
|
-
lastName: string;
|
|
69
|
-
email: string;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export interface ValidatePaymentResponse {
|
|
73
|
-
success: boolean;
|
|
74
|
-
status: string;
|
|
75
|
-
orderUUID?: string;
|
|
76
|
-
error?: string;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// ============================================================================
|
|
80
|
-
// Session Management
|
|
81
|
-
// ============================================================================
|
|
82
|
-
|
|
83
|
-
export interface ExtendSessionRequest {
|
|
84
|
-
orderUuid: string;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export interface ExtendSessionResponse {
|
|
88
|
-
success: boolean;
|
|
89
|
-
newExpiryTime?: string;
|
|
90
|
-
remainingExtensions?: number;
|
|
91
|
-
error?: string;
|
|
92
|
-
/**
|
|
93
|
-
* HTTP status code from the backend on failure. Populated on non-OK
|
|
94
|
-
* responses so callers can distinguish "session already expired"
|
|
95
|
-
* (typically 410 Gone) from "max extensions reached" or generic 5xx.
|
|
96
|
-
* Undefined on network errors and on success.
|
|
97
|
-
*/
|
|
98
|
-
statusCode?: number;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export interface SessionStatus {
|
|
102
|
-
expiresAt?: string;
|
|
103
|
-
extensionCount?: number;
|
|
104
|
-
remainingExtensions?: number;
|
|
105
|
-
canExtend?: boolean;
|
|
106
|
-
reservationCount?: number;
|
|
107
|
-
error?: string;
|
|
108
|
-
// 404 from /orders/session/{uuid}: the cart's reservations are
|
|
109
|
-
// gone (expired or never existed). Callers polling on an interval
|
|
110
|
-
// MUST treat this as terminal and stop — see CartView.svelte.
|
|
111
|
-
notFound?: boolean;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// ============================================================================
|
|
115
|
-
// Promo Codes
|
|
116
|
-
// ============================================================================
|
|
117
|
-
|
|
118
|
-
export interface PromoValidationResponse {
|
|
119
|
-
valid: boolean;
|
|
120
|
-
revealHiddenTickets?: boolean;
|
|
121
|
-
revealTicketIds?: number[];
|
|
122
|
-
provideDiscount?: boolean;
|
|
123
|
-
discountType?: 'percentage' | 'fixed';
|
|
124
|
-
amount?: number;
|
|
125
|
-
code?: string;
|
|
126
|
-
error?: string;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export interface HasPromoCodesResponse {
|
|
130
|
-
hasPromoCodes: boolean;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// ============================================================================
|
|
134
|
-
// Orders
|
|
135
|
-
// ============================================================================
|
|
136
|
-
|
|
137
|
-
export interface Order {
|
|
138
|
-
uuid: string;
|
|
139
|
-
id?: number;
|
|
140
|
-
customerEmail: string;
|
|
141
|
-
customerFirstName?: string;
|
|
142
|
-
customerLastName?: string;
|
|
143
|
-
status: string;
|
|
144
|
-
totalAmount: number;
|
|
145
|
-
subtotal?: number;
|
|
146
|
-
serviceFeesAmount: number;
|
|
147
|
-
taxAmount: number;
|
|
148
|
-
discount?: number;
|
|
149
|
-
paymentIntentId?: string;
|
|
150
|
-
paymentMethod?: string;
|
|
151
|
-
purchasedTickets: PurchasedTicket[];
|
|
152
|
-
createdAt?: string;
|
|
153
|
-
updatedAt?: string;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export interface PurchasedTicket {
|
|
157
|
-
uuid: string;
|
|
158
|
-
id?: number;
|
|
159
|
-
ticketNumber?: string;
|
|
160
|
-
orderId?: string | number;
|
|
161
|
-
attendeeFirstName?: string;
|
|
162
|
-
attendeeLastName?: string;
|
|
163
|
-
attendeeEmail?: string;
|
|
164
|
-
ticketName: string;
|
|
165
|
-
ticketTypeId?: number;
|
|
166
|
-
purchasePrice: number;
|
|
167
|
-
status?: string;
|
|
168
|
-
checkedIn?: boolean;
|
|
169
|
-
checkedInAt?: string;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// ============================================================================
|
|
173
|
-
// Events
|
|
174
|
-
// ============================================================================
|
|
175
|
-
|
|
176
|
-
export interface Event {
|
|
177
|
-
eventID: number;
|
|
178
|
-
id?: number;
|
|
179
|
-
name: string;
|
|
180
|
-
title?: string;
|
|
181
|
-
slug?: string;
|
|
182
|
-
description?: string;
|
|
183
|
-
date: string;
|
|
184
|
-
startDateTime?: string;
|
|
185
|
-
endDateTime?: string;
|
|
186
|
-
doorsOpenTime?: string;
|
|
187
|
-
timezone?: string;
|
|
188
|
-
venueId?: number;
|
|
189
|
-
venueName?: string;
|
|
190
|
-
venueAddress?: string;
|
|
191
|
-
location?: string;
|
|
192
|
-
imageUrl?: string;
|
|
193
|
-
imageURL?: string;
|
|
194
|
-
status?: string;
|
|
195
|
-
isPublished?: boolean;
|
|
196
|
-
isCancelled?: boolean;
|
|
197
|
-
availableTickets?: AvailableTicket[];
|
|
198
|
-
ticketsAvailable?: number;
|
|
199
|
-
ticketsSold?: number;
|
|
200
|
-
minPrice?: number;
|
|
201
|
-
maxPrice?: number;
|
|
202
|
-
ctaText?: string;
|
|
203
|
-
ctaState?: 'available' | 'sold_out' | 'coming_soon' | 'ended';
|
|
204
|
-
showPerformers?: boolean;
|
|
205
|
-
eventSeriesId?: number;
|
|
206
|
-
seriesInstanceNumber?: number;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
//
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
// ============================================================================
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
// ============================================================================
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
id: number;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}>;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
// ============================================================================
|
|
361
|
-
//
|
|
362
|
-
// ============================================================================
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
1
|
+
/**
|
|
2
|
+
* API Types for MicDrop Public Checkout API
|
|
3
|
+
*
|
|
4
|
+
* These types define the shape of API requests and responses
|
|
5
|
+
* for the public checkout flow (no authentication required).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { EventId, SeriesId } from '@getmicdrop/svelte-components';
|
|
9
|
+
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Payment & Orders
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
export interface PaymentIntentRequest {
|
|
15
|
+
IP?: string;
|
|
16
|
+
productQuantities: Record<string | number, number>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface PaymentIntentResponse {
|
|
20
|
+
client_secret: string;
|
|
21
|
+
amount: number;
|
|
22
|
+
amount_total: number;
|
|
23
|
+
tax_amount_exclusive?: number;
|
|
24
|
+
service_fee?: number;
|
|
25
|
+
discount?: number;
|
|
26
|
+
gift_card_amount?: number;
|
|
27
|
+
gift_card_code?: string;
|
|
28
|
+
stripe_publishable_key?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface CompleteReservationResponse {
|
|
32
|
+
success: boolean;
|
|
33
|
+
message?: string;
|
|
34
|
+
error?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface CancelReservationResponse {
|
|
38
|
+
success: boolean;
|
|
39
|
+
message?: string;
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface CreateOrderRequest {
|
|
44
|
+
eventId: string | number;
|
|
45
|
+
promoCode?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface CreateOrderResponse {
|
|
49
|
+
uuid: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface ValidatePaymentRequest {
|
|
53
|
+
id: string;
|
|
54
|
+
paymentIntentId: string;
|
|
55
|
+
tickets: Record<string | number, number>;
|
|
56
|
+
firstName: string;
|
|
57
|
+
lastName: string;
|
|
58
|
+
email: string;
|
|
59
|
+
paymentMethod: string;
|
|
60
|
+
mailingList?: boolean;
|
|
61
|
+
saleType?: string;
|
|
62
|
+
attendees?: AttendeeInfo[];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface AttendeeInfo {
|
|
66
|
+
ticketId: string | number;
|
|
67
|
+
firstName: string;
|
|
68
|
+
lastName: string;
|
|
69
|
+
email: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface ValidatePaymentResponse {
|
|
73
|
+
success: boolean;
|
|
74
|
+
status: string;
|
|
75
|
+
orderUUID?: string;
|
|
76
|
+
error?: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ============================================================================
|
|
80
|
+
// Session Management
|
|
81
|
+
// ============================================================================
|
|
82
|
+
|
|
83
|
+
export interface ExtendSessionRequest {
|
|
84
|
+
orderUuid: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface ExtendSessionResponse {
|
|
88
|
+
success: boolean;
|
|
89
|
+
newExpiryTime?: string;
|
|
90
|
+
remainingExtensions?: number;
|
|
91
|
+
error?: string;
|
|
92
|
+
/**
|
|
93
|
+
* HTTP status code from the backend on failure. Populated on non-OK
|
|
94
|
+
* responses so callers can distinguish "session already expired"
|
|
95
|
+
* (typically 410 Gone) from "max extensions reached" or generic 5xx.
|
|
96
|
+
* Undefined on network errors and on success.
|
|
97
|
+
*/
|
|
98
|
+
statusCode?: number;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface SessionStatus {
|
|
102
|
+
expiresAt?: string;
|
|
103
|
+
extensionCount?: number;
|
|
104
|
+
remainingExtensions?: number;
|
|
105
|
+
canExtend?: boolean;
|
|
106
|
+
reservationCount?: number;
|
|
107
|
+
error?: string;
|
|
108
|
+
// 404 from /orders/session/{uuid}: the cart's reservations are
|
|
109
|
+
// gone (expired or never existed). Callers polling on an interval
|
|
110
|
+
// MUST treat this as terminal and stop — see CartView.svelte.
|
|
111
|
+
notFound?: boolean;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ============================================================================
|
|
115
|
+
// Promo Codes
|
|
116
|
+
// ============================================================================
|
|
117
|
+
|
|
118
|
+
export interface PromoValidationResponse {
|
|
119
|
+
valid: boolean;
|
|
120
|
+
revealHiddenTickets?: boolean;
|
|
121
|
+
revealTicketIds?: number[];
|
|
122
|
+
provideDiscount?: boolean;
|
|
123
|
+
discountType?: 'percentage' | 'fixed';
|
|
124
|
+
amount?: number;
|
|
125
|
+
code?: string;
|
|
126
|
+
error?: string;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface HasPromoCodesResponse {
|
|
130
|
+
hasPromoCodes: boolean;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// Orders
|
|
135
|
+
// ============================================================================
|
|
136
|
+
|
|
137
|
+
export interface Order {
|
|
138
|
+
uuid: string;
|
|
139
|
+
id?: number;
|
|
140
|
+
customerEmail: string;
|
|
141
|
+
customerFirstName?: string;
|
|
142
|
+
customerLastName?: string;
|
|
143
|
+
status: string;
|
|
144
|
+
totalAmount: number;
|
|
145
|
+
subtotal?: number;
|
|
146
|
+
serviceFeesAmount: number;
|
|
147
|
+
taxAmount: number;
|
|
148
|
+
discount?: number;
|
|
149
|
+
paymentIntentId?: string;
|
|
150
|
+
paymentMethod?: string;
|
|
151
|
+
purchasedTickets: PurchasedTicket[];
|
|
152
|
+
createdAt?: string;
|
|
153
|
+
updatedAt?: string;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface PurchasedTicket {
|
|
157
|
+
uuid: string;
|
|
158
|
+
id?: number;
|
|
159
|
+
ticketNumber?: string;
|
|
160
|
+
orderId?: string | number;
|
|
161
|
+
attendeeFirstName?: string;
|
|
162
|
+
attendeeLastName?: string;
|
|
163
|
+
attendeeEmail?: string;
|
|
164
|
+
ticketName: string;
|
|
165
|
+
ticketTypeId?: number;
|
|
166
|
+
purchasePrice: number;
|
|
167
|
+
status?: string;
|
|
168
|
+
checkedIn?: boolean;
|
|
169
|
+
checkedInAt?: string;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// ============================================================================
|
|
173
|
+
// Events
|
|
174
|
+
// ============================================================================
|
|
175
|
+
|
|
176
|
+
export interface Event {
|
|
177
|
+
eventID: number;
|
|
178
|
+
id?: number;
|
|
179
|
+
name: string;
|
|
180
|
+
title?: string;
|
|
181
|
+
slug?: string;
|
|
182
|
+
description?: string;
|
|
183
|
+
date: string;
|
|
184
|
+
startDateTime?: string;
|
|
185
|
+
endDateTime?: string;
|
|
186
|
+
doorsOpenTime?: string;
|
|
187
|
+
timezone?: string;
|
|
188
|
+
venueId?: number;
|
|
189
|
+
venueName?: string;
|
|
190
|
+
venueAddress?: string;
|
|
191
|
+
location?: string;
|
|
192
|
+
imageUrl?: string;
|
|
193
|
+
imageURL?: string;
|
|
194
|
+
status?: string;
|
|
195
|
+
isPublished?: boolean;
|
|
196
|
+
isCancelled?: boolean;
|
|
197
|
+
availableTickets?: AvailableTicket[];
|
|
198
|
+
ticketsAvailable?: number;
|
|
199
|
+
ticketsSold?: number;
|
|
200
|
+
minPrice?: number;
|
|
201
|
+
maxPrice?: number;
|
|
202
|
+
ctaText?: string;
|
|
203
|
+
ctaState?: 'available' | 'sold_out' | 'coming_soon' | 'ended';
|
|
204
|
+
showPerformers?: boolean;
|
|
205
|
+
eventSeriesId?: number;
|
|
206
|
+
seriesInstanceNumber?: number;
|
|
207
|
+
// ── Passthrough seams (events convergence) ─────────────────────────────
|
|
208
|
+
// Carried verbatim from the wire by parseEvent so view-shape projections
|
|
209
|
+
// (utils/event-transform.js, public-calendar-flow/transform.ts) compose the
|
|
210
|
+
// canonical instead of reading wire fields directly. The object-valued
|
|
211
|
+
// fields are intentionally raw (see composition note in
|
|
212
|
+
// api/transformers/event.ts) — their consumers own the wire variance.
|
|
213
|
+
timeZone?: string;
|
|
214
|
+
eventSummary?: string;
|
|
215
|
+
password?: string;
|
|
216
|
+
hasPassword?: boolean;
|
|
217
|
+
disclaimer?: string;
|
|
218
|
+
ticketType?: number;
|
|
219
|
+
eventTicketingType?: number;
|
|
220
|
+
ageRestriction?: number;
|
|
221
|
+
displayAgeRestriction?: boolean;
|
|
222
|
+
displayStartTime?: boolean;
|
|
223
|
+
displayEndTime?: boolean;
|
|
224
|
+
displayDoorsTime?: boolean;
|
|
225
|
+
collectionId?: number;
|
|
226
|
+
ticketsRemaining?: number;
|
|
227
|
+
ticketsTotal?: number;
|
|
228
|
+
hasHiddenTickets?: boolean;
|
|
229
|
+
stage?: { name?: string } | null;
|
|
230
|
+
stageName?: string;
|
|
231
|
+
// Widget-filter dimensions on the public month feeds (saved-widget engine):
|
|
232
|
+
// stage/category/performer/collection data the embed adapts onto the SC
|
|
233
|
+
// FilterableEvent view (lib/widget-filters.js).
|
|
234
|
+
stageId?: number;
|
|
235
|
+
eventCategoryTypes?: number[] | null;
|
|
236
|
+
publicPerformers?: Array<{
|
|
237
|
+
id?: number;
|
|
238
|
+
displayName?: string;
|
|
239
|
+
image?: string;
|
|
240
|
+
}> | null;
|
|
241
|
+
collectionIds?: number[] | null;
|
|
242
|
+
venue?: Record<string, any>;
|
|
243
|
+
performers?: Record<string, any>[];
|
|
244
|
+
faqs?: Record<string, any>[];
|
|
245
|
+
showtimes?: Record<string, any>[];
|
|
246
|
+
purchasedTickets?: Record<string, any>[];
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export interface AvailableTicket {
|
|
250
|
+
id: number;
|
|
251
|
+
name: string;
|
|
252
|
+
description?: string;
|
|
253
|
+
price: number;
|
|
254
|
+
quantity: number;
|
|
255
|
+
quantitySold?: number;
|
|
256
|
+
quantityAvailable?: number;
|
|
257
|
+
minPerOrder?: number;
|
|
258
|
+
maxPerOrder?: number;
|
|
259
|
+
saleStartDate?: string;
|
|
260
|
+
saleEndDate?: string;
|
|
261
|
+
isHidden?: boolean;
|
|
262
|
+
revealWithPromoCode?: boolean;
|
|
263
|
+
ticketType?: number; // 0 = GA, 1 = assigned
|
|
264
|
+
sectionId?: number;
|
|
265
|
+
sortOrder?: number;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export interface EventPerformersResponse {
|
|
269
|
+
performers: Performer[];
|
|
270
|
+
showPerformers: boolean;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export interface Performer {
|
|
274
|
+
id: number;
|
|
275
|
+
displayName: string;
|
|
276
|
+
avatar?: string;
|
|
277
|
+
order?: number;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// ============================================================================
|
|
281
|
+
// Venues
|
|
282
|
+
// ============================================================================
|
|
283
|
+
|
|
284
|
+
export interface Venue {
|
|
285
|
+
id: number;
|
|
286
|
+
name: string;
|
|
287
|
+
slug?: string;
|
|
288
|
+
address?: string;
|
|
289
|
+
googleLocationNameCache?: string;
|
|
290
|
+
city?: string;
|
|
291
|
+
state?: string;
|
|
292
|
+
zipCode?: string;
|
|
293
|
+
country?: string;
|
|
294
|
+
timezone?: string;
|
|
295
|
+
logoUrl?: string;
|
|
296
|
+
serviceFeePercentage?: number;
|
|
297
|
+
serviceFeeCents?: number;
|
|
298
|
+
taxPercentage?: number;
|
|
299
|
+
organizationId?: number;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// ============================================================================
|
|
303
|
+
// Series
|
|
304
|
+
// ============================================================================
|
|
305
|
+
|
|
306
|
+
export interface SeriesOccurrence {
|
|
307
|
+
eventId: EventId;
|
|
308
|
+
date: string;
|
|
309
|
+
startDateTime: string;
|
|
310
|
+
endDateTime?: string;
|
|
311
|
+
instanceNumber: number;
|
|
312
|
+
status: string;
|
|
313
|
+
ticketsAvailable?: number;
|
|
314
|
+
ctaState?: string;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
export interface SeriesOccurrencesResponse {
|
|
318
|
+
seriesId: SeriesId;
|
|
319
|
+
occurrences: SeriesOccurrence[];
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// ============================================================================
|
|
323
|
+
// Series Page
|
|
324
|
+
// ============================================================================
|
|
325
|
+
|
|
326
|
+
export interface SeriesPageData {
|
|
327
|
+
id: number;
|
|
328
|
+
title: string;
|
|
329
|
+
description: string;
|
|
330
|
+
eventSummary?: string;
|
|
331
|
+
image?: string;
|
|
332
|
+
timeZone: string;
|
|
333
|
+
venue: {
|
|
334
|
+
id: number;
|
|
335
|
+
name: string;
|
|
336
|
+
location?: string;
|
|
337
|
+
googleLocationNameCache?: string;
|
|
338
|
+
faq?: Array<{ question: string; answer: string }> | string;
|
|
339
|
+
disclaimer?: string;
|
|
340
|
+
};
|
|
341
|
+
performers: Array<{
|
|
342
|
+
displayName: string;
|
|
343
|
+
firstName?: string;
|
|
344
|
+
lastName?: string;
|
|
345
|
+
profileImage?: string;
|
|
346
|
+
}>;
|
|
347
|
+
occurrences: Array<{
|
|
348
|
+
id: number;
|
|
349
|
+
slug: string;
|
|
350
|
+
startDateTime: string;
|
|
351
|
+
endDateTime: string;
|
|
352
|
+
ctaState: {
|
|
353
|
+
text: string;
|
|
354
|
+
disabled: boolean;
|
|
355
|
+
reason?: string;
|
|
356
|
+
};
|
|
357
|
+
}>;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// ============================================================================
|
|
361
|
+
// Entity resolution (type-agnostic public id → concrete entity)
|
|
362
|
+
// ============================================================================
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Response shape of `/api/v2/public/resolve/{id}`. The embed deep-link is
|
|
366
|
+
* type-agnostic (`#{id}-{slug}`), so the backend resolves which kind of entity
|
|
367
|
+
* the id points at; `data` is the corresponding event / series / collection
|
|
368
|
+
* payload (same shape the dedicated fetchers return for that type).
|
|
369
|
+
*/
|
|
370
|
+
export interface ResolvedEntity {
|
|
371
|
+
type: 'event' | 'series' | 'collection';
|
|
372
|
+
id: string | number;
|
|
373
|
+
title?: string;
|
|
374
|
+
data: any;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// ============================================================================
|
|
378
|
+
// Public Collection
|
|
379
|
+
// ============================================================================
|
|
380
|
+
|
|
381
|
+
export interface PublicCollectionData {
|
|
382
|
+
id: number;
|
|
383
|
+
collectionTitle: string;
|
|
384
|
+
summary?: string;
|
|
385
|
+
description?: string;
|
|
386
|
+
coverImage?: string;
|
|
387
|
+
events: Array<{
|
|
388
|
+
id: number;
|
|
389
|
+
title: string;
|
|
390
|
+
slug?: string;
|
|
391
|
+
startDateTime?: string;
|
|
392
|
+
endDateTime?: string;
|
|
393
|
+
image?: string;
|
|
394
|
+
status?: string;
|
|
395
|
+
venue?: { name: string };
|
|
396
|
+
minPrice?: number;
|
|
397
|
+
}>;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// ============================================================================
|
|
401
|
+
// API Configuration
|
|
402
|
+
// ============================================================================
|
|
403
|
+
|
|
404
|
+
export interface ApiConfig {
|
|
405
|
+
baseUrl?: string;
|
|
406
|
+
timeout?: number;
|
|
407
|
+
/** Number of additional attempts after the first try (default: 2 = 3 total tries). */
|
|
408
|
+
retries?: number;
|
|
409
|
+
/** Base delay before the first retry; doubles each attempt (default: 500ms). */
|
|
410
|
+
retryDelay?: number;
|
|
411
|
+
onError?: (_error: Error) => void;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// ============================================================================
|
|
415
|
+
// Generic API Response
|
|
416
|
+
// ============================================================================
|
|
417
|
+
|
|
418
|
+
export interface ApiResponse<T> {
|
|
419
|
+
success: boolean;
|
|
420
|
+
data?: T;
|
|
421
|
+
error?: string;
|
|
422
|
+
statusCode?: number;
|
|
423
|
+
}
|