@session-services/web-elements 0.1.27 → 0.1.30
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 +19 -0
- package/dist/cjs/{index-BYBgrATL.js → index-B2ZmNnji.js} +292 -245
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/session-services-elements.cjs.js +3 -3
- package/dist/cjs/session-services-formatted-text.cjs.entry.js +8 -20
- package/dist/cjs/session-services-ticketing.cjs.entry.js +1051 -526
- package/dist/collection/collection-manifest.json +4 -3
- package/dist/collection/components/session-services-ticketing/session-services-ticketing.css +0 -4
- package/dist/collection/components/session-services-ticketing/session-services-ticketing.js +116 -45
- package/dist/collection/components/session-services-ticketing/session-services-ticketing.logic.js +15 -5
- package/dist/collection/components/session-services-ticketing/session-services-ticketing.logic.test.js +28 -1
- package/dist/collection/components/session-services-ticketing/session-services-ticketing.test.js +71 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -1311
- package/dist/components/session-services-formatted-text.js +1 -1802
- package/dist/components/session-services-ticketing.js +1 -25072
- package/dist/esm/{index-CNOpF6tk.js → index-DhbVMqIT.js} +292 -245
- package/dist/esm/loader.js +3 -3
- package/dist/esm/session-services-elements.js +4 -4
- package/dist/esm/session-services-formatted-text.entry.js +8 -20
- package/dist/esm/session-services-ticketing.entry.js +1051 -526
- package/dist/session-services-elements/p-4dd3f723.entry.js +1 -0
- package/dist/session-services-elements/{p-703444ed.entry.js → p-8483ca88.entry.js} +1 -1
- package/dist/session-services-elements/p-DhbVMqIT.js +2 -0
- package/dist/session-services-elements/session-services-elements.esm.js +1 -1
- package/dist/types/components/session-services-ticketing/session-services-ticketing.d.ts +15 -4
- package/dist/types/components/session-services-ticketing/session-services-ticketing.logic.d.ts +5 -3
- package/dist/types/components.d.ts +36 -8
- package/dist/types/index.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +67 -5
- package/exports/components/formatted-text.d.ts +17 -0
- package/exports/components/formatted-text.js +5 -0
- package/exports/components/index.d.ts +13 -0
- package/exports/components/index.js +6 -0
- package/exports/components/ticketing.d.ts +17 -0
- package/exports/components/ticketing.js +5 -0
- package/exports/formatted-text.d.ts +7 -0
- package/exports/formatted-text.js +5 -0
- package/exports/ticketing.d.ts +7 -0
- package/exports/ticketing.js +5 -0
- package/package.json +93 -15
- package/dist/session-services-elements/p-40ac30a0.entry.js +0 -1
- package/dist/session-services-elements/p-CNOpF6tk.js +0 -2
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"entries": [
|
|
3
|
-
"components/session-services-
|
|
4
|
-
"components/session-services-
|
|
3
|
+
"components/session-services-ticketing/session-services-ticketing.js",
|
|
4
|
+
"components/session-services-formatted-text/session-services-formatted-text.js"
|
|
5
5
|
],
|
|
6
|
+
"mixins": [],
|
|
6
7
|
"compiler": {
|
|
7
8
|
"name": "@stencil/core",
|
|
8
|
-
"version": "4.
|
|
9
|
+
"version": "4.43.5",
|
|
9
10
|
"typescriptVersion": "5.8.3"
|
|
10
11
|
},
|
|
11
12
|
"collections": [],
|
package/dist/collection/components/session-services-ticketing/session-services-ticketing.css
CHANGED
|
@@ -1059,10 +1059,6 @@ textarea {
|
|
|
1059
1059
|
}
|
|
1060
1060
|
|
|
1061
1061
|
@media (max-width: 767px) {
|
|
1062
|
-
:host([data-sticky-checkout="true"]) .session-services-ticketing-container {
|
|
1063
|
-
padding-bottom: calc(var(--internal-spacing-xl) * 3);
|
|
1064
|
-
}
|
|
1065
|
-
|
|
1066
1062
|
:host([data-sticky-checkout="true"]) .checkout-actions > .checkout-btn,
|
|
1067
1063
|
:host([data-sticky-checkout="true"]) .inline-external-ticket-button {
|
|
1068
1064
|
display: none;
|
|
@@ -36,8 +36,12 @@ function parseJson(value) {
|
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
39
|
+
function analyticsSkipReason(event) {
|
|
40
|
+
if (!event.teamId)
|
|
41
|
+
return "missing_team_id";
|
|
42
|
+
if (!event.promoterId)
|
|
43
|
+
return "missing_promoter_id";
|
|
44
|
+
return null;
|
|
41
45
|
}
|
|
42
46
|
function eventVenueName(event) {
|
|
43
47
|
return [event.location?.venue?.name, event.location?.name].find(Boolean);
|
|
@@ -128,6 +132,7 @@ export class SessionsTicketing {
|
|
|
128
132
|
checkoutInit;
|
|
129
133
|
cartUpdate;
|
|
130
134
|
errorOccurred;
|
|
135
|
+
analyticsEventSkipped;
|
|
131
136
|
client;
|
|
132
137
|
analytics;
|
|
133
138
|
mediaQueryList;
|
|
@@ -269,36 +274,62 @@ export class SessionsTicketing {
|
|
|
269
274
|
}
|
|
270
275
|
};
|
|
271
276
|
trackEvent(eventType, properties = {}) {
|
|
272
|
-
const context = this.analyticsContext();
|
|
277
|
+
const context = this.analyticsContext(eventType);
|
|
273
278
|
if (!context)
|
|
274
279
|
return;
|
|
275
280
|
context.analytics.track(eventType, {
|
|
276
|
-
|
|
277
|
-
team_id: context.event.teamId,
|
|
278
|
-
promoter_id: context.event.promoterId,
|
|
279
|
-
event_name: context.event.name,
|
|
280
|
-
event_slug: context.event.slug,
|
|
281
|
-
currency: context.event.currency,
|
|
281
|
+
...this.analyticsProperties(context.event),
|
|
282
282
|
...properties,
|
|
283
283
|
});
|
|
284
284
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
285
|
+
analyticsProperties(event, properties = {}) {
|
|
286
|
+
return {
|
|
287
|
+
event_id: this.eventId,
|
|
288
|
+
team_id: event.teamId,
|
|
289
|
+
promoter_id: event.promoterId,
|
|
290
|
+
event_name: event.name,
|
|
291
|
+
event_slug: event.slug,
|
|
292
|
+
currency: event.currency,
|
|
293
|
+
...properties,
|
|
294
|
+
};
|
|
291
295
|
}
|
|
292
|
-
|
|
296
|
+
analyticsForEvent(eventType, event) {
|
|
293
297
|
if (!this.enableAnalytics)
|
|
294
298
|
return undefined;
|
|
299
|
+
const reason = analyticsSkipReason(event);
|
|
300
|
+
if (reason) {
|
|
301
|
+
this.emitAnalyticsEventSkipped(eventType, reason, event);
|
|
302
|
+
return undefined;
|
|
303
|
+
}
|
|
304
|
+
if (!this.analytics) {
|
|
305
|
+
this.emitAnalyticsEventSkipped(eventType, "analytics_not_initialized", event);
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
295
308
|
return this.analytics;
|
|
296
309
|
}
|
|
297
|
-
|
|
310
|
+
analyticsContext(eventType) {
|
|
298
311
|
const event = this.event;
|
|
299
|
-
if (!event)
|
|
312
|
+
if (!event) {
|
|
313
|
+
this.emitAnalyticsEventSkipped(eventType, "missing_event");
|
|
314
|
+
return undefined;
|
|
315
|
+
}
|
|
316
|
+
const analytics = this.analyticsForEvent(eventType, event);
|
|
317
|
+
if (!analytics)
|
|
300
318
|
return undefined;
|
|
301
|
-
return
|
|
319
|
+
return { analytics, event };
|
|
320
|
+
}
|
|
321
|
+
emitAnalyticsEventSkipped(eventType, reason, event, err) {
|
|
322
|
+
const detail = {
|
|
323
|
+
eventType,
|
|
324
|
+
eventId: this.eventId,
|
|
325
|
+
reason,
|
|
326
|
+
promoterId: event?.promoterId || undefined,
|
|
327
|
+
teamId: event?.teamId || undefined,
|
|
328
|
+
};
|
|
329
|
+
this.analyticsEventSkipped.emit(detail);
|
|
330
|
+
if (this.debugAnalytics) {
|
|
331
|
+
console.warn("[SessionServicesTicketing] Analytics event skipped:", detail, err);
|
|
332
|
+
}
|
|
302
333
|
}
|
|
303
334
|
getLowestPrice() {
|
|
304
335
|
const event = this.event;
|
|
@@ -357,7 +388,9 @@ export class SessionsTicketing {
|
|
|
357
388
|
this.quoteError = null;
|
|
358
389
|
}
|
|
359
390
|
trackLoadedEvent(event) {
|
|
360
|
-
this.setupAnalytics(event)
|
|
391
|
+
if (!this.setupAnalytics(event))
|
|
392
|
+
return;
|
|
393
|
+
this.trackPageViewed(event);
|
|
361
394
|
this.trackProductViewed(event);
|
|
362
395
|
this.trackEvent("Product List Viewed", {
|
|
363
396
|
list_id: this.eventId,
|
|
@@ -366,19 +399,32 @@ export class SessionsTicketing {
|
|
|
366
399
|
});
|
|
367
400
|
}
|
|
368
401
|
setupAnalytics(event) {
|
|
369
|
-
if (!this.enableAnalytics
|
|
402
|
+
if (!this.enableAnalytics)
|
|
403
|
+
return false;
|
|
404
|
+
const reason = analyticsSkipReason(event);
|
|
405
|
+
if (reason) {
|
|
406
|
+
this.emitAnalyticsEventSkipped("Page Viewed", reason, event);
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
if (this.analytics)
|
|
410
|
+
return true;
|
|
411
|
+
try {
|
|
412
|
+
this.analytics = createAnalytics({
|
|
413
|
+
client: this.client,
|
|
414
|
+
debug: this.debugAnalytics,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
catch (err) {
|
|
418
|
+
this.emitAnalyticsEventSkipped("Page Viewed", "analytics_initialization_failed", event, err);
|
|
419
|
+
return false;
|
|
420
|
+
}
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
trackPageViewed(event) {
|
|
424
|
+
const analytics = this.analyticsForEvent("Page Viewed", event);
|
|
425
|
+
if (!analytics)
|
|
370
426
|
return;
|
|
371
|
-
|
|
372
|
-
client: this.client,
|
|
373
|
-
debug: this.debugAnalytics,
|
|
374
|
-
});
|
|
375
|
-
this.analytics.page("Ticketing Widget", {
|
|
376
|
-
event_id: this.eventId,
|
|
377
|
-
team_id: event.teamId,
|
|
378
|
-
promoter_id: event.promoterId,
|
|
379
|
-
event_name: event.name,
|
|
380
|
-
event_slug: event.slug,
|
|
381
|
-
});
|
|
427
|
+
analytics.page("Ticketing Widget", this.analyticsProperties(event));
|
|
382
428
|
}
|
|
383
429
|
trackProductViewed(event) {
|
|
384
430
|
const lowestPrice = this.getLowestPrice();
|
|
@@ -1214,10 +1260,11 @@ export class SessionsTicketing {
|
|
|
1214
1260
|
renderStickyExternalTicketing(state) {
|
|
1215
1261
|
if (!this.stickyCheckout)
|
|
1216
1262
|
return null;
|
|
1217
|
-
|
|
1263
|
+
const url = state.externalTicketUrl;
|
|
1264
|
+
if (!url)
|
|
1218
1265
|
return null;
|
|
1219
|
-
const domain = urlDomain(
|
|
1220
|
-
return (h("div", { class: "sticky-checkout-bar" }, h("a", { class: "external-ticket-button sticky-checkout-btn", href:
|
|
1266
|
+
const domain = urlDomain(url);
|
|
1267
|
+
return (h("div", { class: "sticky-checkout-bar" }, h("a", { class: "external-ticket-button sticky-checkout-btn", href: url, target: "_blank", rel: "noreferrer", onClick: () => this.trackExternalTicketClick(url, "sticky") }, h("span", { class: "external-ticket-label" }, "Get tickets"), h("span", { class: "external-ticket-domain" }, "via ", domain))));
|
|
1221
1268
|
}
|
|
1222
1269
|
renderModal() {
|
|
1223
1270
|
if (!this.openModalAdmissionId)
|
|
@@ -1280,10 +1327,11 @@ export class SessionsTicketing {
|
|
|
1280
1327
|
this.renderCheckoutActions()), this.renderStickyCheckout(state), this.renderModal()));
|
|
1281
1328
|
}
|
|
1282
1329
|
renderExternalTicketing(state) {
|
|
1283
|
-
const
|
|
1284
|
-
if (!
|
|
1330
|
+
const url = state.externalTicketUrl;
|
|
1331
|
+
if (!url)
|
|
1285
1332
|
return null;
|
|
1286
|
-
|
|
1333
|
+
const domain = urlDomain(url);
|
|
1334
|
+
return (h("div", { class: "tickets-wrapper" }, h("h2", { class: "tickets-heading" }, state.ticketHeading), h("div", { class: "external-ticket-panel" }, h("p", { class: "external-ticket-warning" }, "This event sells through an external ticketing site. Checkout, tickets, and support are handled there."), h("a", { class: "external-ticket-button inline-external-ticket-button", href: url, target: "_blank", rel: "noreferrer", onClick: () => this.trackExternalTicketClick(url, "inline") }, h("span", { class: "external-ticket-label" }, "Get tickets"), h("span", { class: "external-ticket-domain" }, "via ", domain)))));
|
|
1287
1335
|
}
|
|
1288
1336
|
renderUnavailableState(state) {
|
|
1289
1337
|
return (h("div", { class: "empty-ticketing-state" }, h("strong", null, "Tickets Unavailable"), h("span", null, state.isEnded
|
|
@@ -1428,7 +1476,7 @@ export class SessionsTicketing {
|
|
|
1428
1476
|
"mutable": false,
|
|
1429
1477
|
"complexType": {
|
|
1430
1478
|
"original": "| Record<string, { discount: number; gross: number; total: number }>\n | string",
|
|
1431
|
-
"resolved": "string | {
|
|
1479
|
+
"resolved": "string | { discount: number; gross: number; total: number; }",
|
|
1432
1480
|
"references": {
|
|
1433
1481
|
"Record": {
|
|
1434
1482
|
"location": "global",
|
|
@@ -1452,12 +1500,13 @@ export class SessionsTicketing {
|
|
|
1452
1500
|
"mutable": false,
|
|
1453
1501
|
"complexType": {
|
|
1454
1502
|
"original": "OrderQuote | string",
|
|
1455
|
-
"resolved": "string | { items: { id: string; kind: \"ADMISSION\" | \"ADDON\"; quantity: number; price: { net: number; total: number; gross: number; base: number; booking: number; refunded: number; discount: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; admissionId?: string; sectionId?: string; admission?: { name: string; capacity: number; limit: number; order: number; entryStartsAt: string; entryEndsAt: string; saleStartsAt: string; saleEndsAt: string; saleEndsBehavior: \"SALE_ENDED\" | \"SOLD_OUT\" | \"DOOR\"; price: { base: number; booking: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; visibility: \"ALWAYS\" | \"HIDDEN\"; teamId: string; promoterId: string; eventId: string; eventSlug: string; id?: string; subtitle?: string; description?: string; available?: number; sold?: number; reserved?: number; createdAt?: string; updatedAt?: string; sectionId?: string; }; section?: { name: string; capacity: number; limit: number; order: number; visibility: \"ALWAYS\" | \"
|
|
1503
|
+
"resolved": "string | { items: { id: string; kind: \"ADMISSION\" | \"ADDON\"; quantity: number; price: { net: number; total: number; gross: number; base: number; booking: number; refunded: number; discount: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; admissionId?: string; sectionId?: string; admission?: { name: string; capacity: number; limit: number; order: number; entryStartsAt: string; entryEndsAt: string; saleStartsAt: string; saleEndsAt: string; saleEndsBehavior: \"SALE_ENDED\" | \"SOLD_OUT\" | \"DOOR\"; price: { base: number; booking: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; visibility: \"ALWAYS\" | \"HIDDEN\" | \"AFTER_ADMISSION\"; teamId: string; promoterId: string; eventId: string; eventSlug: string; id?: string; subtitle?: string; description?: string; available?: number; sold?: number; reserved?: number; createdAt?: string; updatedAt?: string; visibleAfterAdmissionId?: string; sectionId?: string; }; section?: { name: string; capacity: number; limit: number; order: number; visibility: \"ALWAYS\" | \"STACKED\" | \"HIDDEN\"; location: { createdAt: string; updatedAt: string; name: string; address: string; country: string; latitude: number; longitude: number; timeZone: string; id?: string; googlePlaceId?: string; city?: string; state?: string; postcode?: string; types?: string[]; description?: string; image?: { src: string; alt: string; width: number; height: number; }; venueId?: string; }; teamId: string; promoterId: string; eventId: string; eventSlug: string; id?: string; createdAt?: string; updatedAt?: string; available?: number; sold?: number; reserved?: number; }; }[]; price: { net: number; total: number; gross: number; base: number; booking: number; shipping: number; sms: number; refunded: number; discount: number; gateway: number; dispute: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; couponCode?: { name: string; active: boolean; couponId: string; teamId: string; id?: string; createdAt?: string; updatedAt?: string; uses?: number; }; }",
|
|
1456
1504
|
"references": {
|
|
1457
1505
|
"OrderQuote": {
|
|
1458
1506
|
"location": "import",
|
|
1459
1507
|
"path": "@session-services/sdk/schemas",
|
|
1460
|
-
"id": "../../sdk/src/schemas.ts::OrderQuote"
|
|
1508
|
+
"id": "../../sdk/src/schemas.ts::OrderQuote",
|
|
1509
|
+
"referenceLocation": "OrderQuote"
|
|
1461
1510
|
}
|
|
1462
1511
|
}
|
|
1463
1512
|
},
|
|
@@ -1608,8 +1657,8 @@ export class SessionsTicketing {
|
|
|
1608
1657
|
"text": ""
|
|
1609
1658
|
},
|
|
1610
1659
|
"complexType": {
|
|
1611
|
-
"original": "{\n orderId
|
|
1612
|
-
"resolved": "{ orderId
|
|
1660
|
+
"original": "{\n orderId?: string;\n checkoutUrl?: string;\n }",
|
|
1661
|
+
"resolved": "{ orderId?: string; checkoutUrl?: string; }",
|
|
1613
1662
|
"references": {}
|
|
1614
1663
|
}
|
|
1615
1664
|
}, {
|
|
@@ -1624,12 +1673,13 @@ export class SessionsTicketing {
|
|
|
1624
1673
|
},
|
|
1625
1674
|
"complexType": {
|
|
1626
1675
|
"original": "OrderQuote",
|
|
1627
|
-
"resolved": "{ items: { id: string; kind: \"ADMISSION\" | \"ADDON\"; quantity: number; price: { net: number; total: number; gross: number; base: number; booking: number; refunded: number; discount: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; admissionId?: string; sectionId?: string; admission?: { name: string; capacity: number; limit: number; order: number; entryStartsAt: string; entryEndsAt: string; saleStartsAt: string; saleEndsAt: string; saleEndsBehavior: \"SALE_ENDED\" | \"SOLD_OUT\" | \"DOOR\"; price: { base: number; booking: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; visibility: \"ALWAYS\" | \"HIDDEN\"; teamId: string; promoterId: string; eventId: string; eventSlug: string; id?: string; subtitle?: string; description?: string; available?: number; sold?: number; reserved?: number; createdAt?: string; updatedAt?: string; sectionId?: string; }; section?: { name: string; capacity: number; limit: number; order: number; visibility: \"ALWAYS\" | \"
|
|
1676
|
+
"resolved": "{ items: { id: string; kind: \"ADMISSION\" | \"ADDON\"; quantity: number; price: { net: number; total: number; gross: number; base: number; booking: number; refunded: number; discount: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; admissionId?: string; sectionId?: string; admission?: { name: string; capacity: number; limit: number; order: number; entryStartsAt: string; entryEndsAt: string; saleStartsAt: string; saleEndsAt: string; saleEndsBehavior: \"SALE_ENDED\" | \"SOLD_OUT\" | \"DOOR\"; price: { base: number; booking: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; visibility: \"ALWAYS\" | \"HIDDEN\" | \"AFTER_ADMISSION\"; teamId: string; promoterId: string; eventId: string; eventSlug: string; id?: string; subtitle?: string; description?: string; available?: number; sold?: number; reserved?: number; createdAt?: string; updatedAt?: string; visibleAfterAdmissionId?: string; sectionId?: string; }; section?: { name: string; capacity: number; limit: number; order: number; visibility: \"ALWAYS\" | \"STACKED\" | \"HIDDEN\"; location: { createdAt: string; updatedAt: string; name: string; address: string; country: string; latitude: number; longitude: number; timeZone: string; id?: string; googlePlaceId?: string; city?: string; state?: string; postcode?: string; types?: string[]; description?: string; image?: { src: string; alt: string; width: number; height: number; }; venueId?: string; }; teamId: string; promoterId: string; eventId: string; eventSlug: string; id?: string; createdAt?: string; updatedAt?: string; available?: number; sold?: number; reserved?: number; }; }[]; price: { net: number; total: number; gross: number; base: number; booking: number; shipping: number; sms: number; refunded: number; discount: number; gateway: number; dispute: number; currency: \"AUD\" | \"AED\" | \"ALL\" | \"AMD\" | \"ANG\" | \"AOA\" | \"ARS\" | \"AWG\" | \"AZN\" | \"BAM\" | \"BBD\" | \"BDT\" | \"BGN\" | \"BHD\" | \"BIF\" | \"BMD\" | \"BND\" | \"BOB\" | \"BRL\" | \"BSD\" | \"BTN\" | \"BWP\" | \"BZD\" | \"CAD\" | \"CHF\" | \"CLP\" | \"CNY\" | \"COP\" | \"CRC\" | \"CVE\" | \"CZK\" | \"DJF\" | \"DKK\" | \"DOP\" | \"DZD\" | \"EGP\" | \"ERN\" | \"ETB\" | \"EUR\" | \"FJD\" | \"FKP\" | \"GBP\" | \"GEL\" | \"GHS\" | \"GIP\" | \"GMD\" | \"GNF\" | \"GTQ\" | \"GYD\" | \"HKD\" | \"HNL\" | \"HUF\" | \"IDR\" | \"ILS\" | \"INR\" | \"ISK\" | \"JMD\" | \"JOD\" | \"JPY\" | \"KES\" | \"KGS\" | \"KHR\" | \"KMF\" | \"KRW\" | \"KWD\" | \"KYD\" | \"KZT\" | \"LAK\" | \"LBP\" | \"LKR\" | \"LRD\" | \"LSL\" | \"LYD\" | \"MAD\" | \"MDL\" | \"MGA\" | \"MKD\" | \"MNT\" | \"MOP\" | \"MUR\" | \"MVR\" | \"MWK\" | \"MXN\" | \"MYR\" | \"NAD\" | \"NGN\" | \"NIO\" | \"NOK\" | \"NPR\" | \"NZD\" | \"OMR\" | \"PAB\" | \"PEN\" | \"PGK\" | \"PHP\" | \"PKR\" | \"PLN\" | \"PYG\" | \"QAR\" | \"RON\" | \"RSD\" | \"RWF\" | \"SAR\" | \"SBD\" | \"SCR\" | \"SEK\" | \"SGD\" | \"SHP\" | \"SLE\" | \"SRD\" | \"SVC\" | \"SZL\" | \"THB\" | \"TJS\" | \"TMT\" | \"TND\" | \"TOP\" | \"TRY\" | \"TTD\" | \"TWD\" | \"TZS\" | \"UAH\" | \"UGX\" | \"USD\" | \"UYU\" | \"UZS\" | \"VND\" | \"VUV\" | \"WST\" | \"XAF\" | \"XCD\" | \"XOF\" | \"XPF\" | \"ZAR\" | \"ZMW\" | \"ZWL\"; }; couponCode?: { name: string; active: boolean; couponId: string; teamId: string; id?: string; createdAt?: string; updatedAt?: string; uses?: number; }; }",
|
|
1628
1677
|
"references": {
|
|
1629
1678
|
"OrderQuote": {
|
|
1630
1679
|
"location": "import",
|
|
1631
1680
|
"path": "@session-services/sdk/schemas",
|
|
1632
|
-
"id": "../../sdk/src/schemas.ts::OrderQuote"
|
|
1681
|
+
"id": "../../sdk/src/schemas.ts::OrderQuote",
|
|
1682
|
+
"referenceLocation": "OrderQuote"
|
|
1633
1683
|
}
|
|
1634
1684
|
}
|
|
1635
1685
|
}
|
|
@@ -1648,6 +1698,27 @@ export class SessionsTicketing {
|
|
|
1648
1698
|
"resolved": "{ error: string; }",
|
|
1649
1699
|
"references": {}
|
|
1650
1700
|
}
|
|
1701
|
+
}, {
|
|
1702
|
+
"method": "analyticsEventSkipped",
|
|
1703
|
+
"name": "analyticsEventSkipped",
|
|
1704
|
+
"bubbles": true,
|
|
1705
|
+
"cancelable": true,
|
|
1706
|
+
"composed": true,
|
|
1707
|
+
"docs": {
|
|
1708
|
+
"tags": [],
|
|
1709
|
+
"text": ""
|
|
1710
|
+
},
|
|
1711
|
+
"complexType": {
|
|
1712
|
+
"original": "AnalyticsEventSkipped",
|
|
1713
|
+
"resolved": "{ eventType: string; eventId: string; reason: AnalyticsSkipReason; promoterId?: string; teamId?: string; }",
|
|
1714
|
+
"references": {
|
|
1715
|
+
"AnalyticsEventSkipped": {
|
|
1716
|
+
"location": "local",
|
|
1717
|
+
"path": "/Users/j/Dev/sessions-repo/packages/elements/web/src/components/session-services-ticketing/session-services-ticketing.tsx",
|
|
1718
|
+
"id": "src/components/session-services-ticketing/session-services-ticketing.tsx::AnalyticsEventSkipped"
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1651
1722
|
}];
|
|
1652
1723
|
}
|
|
1653
1724
|
static get elementRef() { return "host"; }
|
package/dist/collection/components/session-services-ticketing/session-services-ticketing.logic.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { formatNaiveDateTime, isNaiveDateTimeFuture, isNaiveDateTimePast, } from "@session-services/utils/naive-datetime";
|
|
2
|
+
import { getAdmissionReleaseLabel } from "@session-services/utils/admission-release";
|
|
2
3
|
import { getAdmissionSelectionCapacity, isAdmissionSoldOut, } from "@session-services/utils/ticket-availability";
|
|
3
4
|
import { createQuoteItemMap } from "@session-services/utils/ticket-quote";
|
|
4
5
|
const UNLIMITED_CAP = 10;
|
|
@@ -50,9 +51,11 @@ function isAdmissionOnSale(admission, zone) {
|
|
|
50
51
|
function hasAdmissionCapacity(admission, section) {
|
|
51
52
|
return getAdmissionSelectionCapacity({ admission, section }) > 0;
|
|
52
53
|
}
|
|
53
|
-
function isAdmissionPurchasable(admission, zone, sections) {
|
|
54
|
+
function isAdmissionPurchasable(admission, admissions, zone, sections) {
|
|
54
55
|
if (!hasAdmissionSection(admission, sections))
|
|
55
56
|
return false;
|
|
57
|
+
if (getAdmissionReleaseLabel(admission, admissions, zone))
|
|
58
|
+
return false;
|
|
56
59
|
if (!isAdmissionOnSale(admission, zone))
|
|
57
60
|
return false;
|
|
58
61
|
return hasAdmissionCapacity(admission, admissionSection(admission, sections));
|
|
@@ -60,7 +63,7 @@ function isAdmissionPurchasable(admission, zone, sections) {
|
|
|
60
63
|
function hasPurchasableAdmissions(event) {
|
|
61
64
|
const sections = sectionsById(event);
|
|
62
65
|
const zone = eventTimeZone(event);
|
|
63
|
-
return event.admissions.some((admission) => isAdmissionPurchasable(admission, zone, sections));
|
|
66
|
+
return event.admissions.some((admission) => isAdmissionPurchasable(admission, event.admissions, zone, sections));
|
|
64
67
|
}
|
|
65
68
|
function admissionSaleLabel(admission, zone) {
|
|
66
69
|
if (!isNaiveDateTimeFuture(admission.saleStartsAt, zone)) {
|
|
@@ -129,7 +132,8 @@ export function visibleAdmissions(event, mode) {
|
|
|
129
132
|
if (mode !== "door")
|
|
130
133
|
return event.admissions;
|
|
131
134
|
const zone = eventTimeZone(event);
|
|
132
|
-
return event.admissions.filter((admission) => admission.
|
|
135
|
+
return event.admissions.filter((admission) => !getAdmissionReleaseLabel(admission, event.admissions, zone) &&
|
|
136
|
+
admission.saleEndsBehavior === "DOOR" &&
|
|
133
137
|
isNaiveDateTimePast(admission.saleEndsAt, zone));
|
|
134
138
|
}
|
|
135
139
|
function isStackableAdmission(input) {
|
|
@@ -263,6 +267,7 @@ function showScarcity(admission, soldOut, disabled) {
|
|
|
263
267
|
}
|
|
264
268
|
export function getAdmissionDisplayState(input) {
|
|
265
269
|
const zone = eventTimeZone(input.event);
|
|
270
|
+
const releaseLabel = getAdmissionReleaseLabel(input.admission, input.event.admissions, zone);
|
|
266
271
|
const saleNotStarted = isNaiveDateTimeFuture(input.admission.saleStartsAt, zone);
|
|
267
272
|
const saleEnded = isNaiveDateTimePast(input.admission.saleEndsAt, zone);
|
|
268
273
|
const saleEndedSoldOut = saleEnded && input.admission.saleEndsBehavior === "SOLD_OUT";
|
|
@@ -279,8 +284,10 @@ export function getAdmissionDisplayState(input) {
|
|
|
279
284
|
value: input.admission.saleEndsBehavior,
|
|
280
285
|
});
|
|
281
286
|
return {
|
|
282
|
-
disabled,
|
|
283
|
-
label:
|
|
287
|
+
disabled: disabled || Boolean(releaseLabel),
|
|
288
|
+
label: releaseLabel
|
|
289
|
+
? { ...releaseLabel, tone: "muted" }
|
|
290
|
+
: admissionSaleLabel(input.admission, zone),
|
|
284
291
|
maxQuantity: maxQuantity(input.admission, input.section),
|
|
285
292
|
postSale: saleEnded,
|
|
286
293
|
showScarcity: showScarcity(input.admission, soldOut, disabled),
|
|
@@ -340,6 +347,9 @@ export function previewQuoteItems(event) {
|
|
|
340
347
|
const zone = eventTimeZone(event);
|
|
341
348
|
return event.admissions
|
|
342
349
|
.filter((admission) => {
|
|
350
|
+
if (getAdmissionReleaseLabel(admission, event.admissions, zone)) {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
343
353
|
if (admission.sectionId && !ids.has(admission.sectionId))
|
|
344
354
|
return false;
|
|
345
355
|
if (isNaiveDateTimeFuture(admission.saleStartsAt, zone))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { admissionPriceSavings, discountCouponFromSearch, getAdmissionDisplayState, getAdmissionPriceDisplay, getTicketingState, topLevelTicketItems, visibleAdmissions, } from "./session-services-ticketing.logic";
|
|
2
|
+
import { admissionPriceSavings, discountCouponFromSearch, getAdmissionDisplayState, getAdmissionPriceDisplay, getTicketingState, previewQuoteItems, topLevelTicketItems, visibleAdmissions, } from "./session-services-ticketing.logic";
|
|
3
3
|
const futureStart = "2030-01-01T20:00:00";
|
|
4
4
|
const futureEnd = "2030-01-01T23:00:00";
|
|
5
5
|
const pastStart = "2020-01-01T20:00:00";
|
|
@@ -178,6 +178,33 @@ describe("session-services-ticketing logic", () => {
|
|
|
178
178
|
expect(state.disabled).toBe(true);
|
|
179
179
|
expect(state.label?.text).toContain("On sale");
|
|
180
180
|
});
|
|
181
|
+
it("disables dependent releases until the previous release ends", () => {
|
|
182
|
+
const first = admission({
|
|
183
|
+
id: "adm_first",
|
|
184
|
+
name: "First Release",
|
|
185
|
+
capacity: 100,
|
|
186
|
+
sold: 20,
|
|
187
|
+
});
|
|
188
|
+
const second = admission({
|
|
189
|
+
id: "adm_second",
|
|
190
|
+
name: "Second Release",
|
|
191
|
+
visibility: "AFTER_ADMISSION",
|
|
192
|
+
visibleAfterAdmissionId: first.id,
|
|
193
|
+
});
|
|
194
|
+
const data = event({ admissions: [first, second] });
|
|
195
|
+
const state = getAdmissionDisplayState({
|
|
196
|
+
admission: second,
|
|
197
|
+
event: data,
|
|
198
|
+
});
|
|
199
|
+
expect(state.disabled).toBe(true);
|
|
200
|
+
expect(state.label).toEqual({
|
|
201
|
+
text: "Available soon",
|
|
202
|
+
tone: "muted",
|
|
203
|
+
});
|
|
204
|
+
expect(previewQuoteItems(data).map((item) => item.admissionId)).toEqual([
|
|
205
|
+
first.id,
|
|
206
|
+
]);
|
|
207
|
+
});
|
|
181
208
|
it("treats sold-out sale endings as sold out instead of a price label", () => {
|
|
182
209
|
const data = event({
|
|
183
210
|
admissions: [
|
package/dist/collection/components/session-services-ticketing/session-services-ticketing.test.js
CHANGED
|
@@ -129,6 +129,15 @@ function rendered(value, predicate) {
|
|
|
129
129
|
const matches = predicate(value) ? [value] : [];
|
|
130
130
|
return matches.concat(value.children.flatMap((item) => rendered(item, predicate)));
|
|
131
131
|
}
|
|
132
|
+
function textContent(value) {
|
|
133
|
+
if (typeof value === "string")
|
|
134
|
+
return value;
|
|
135
|
+
if (Array.isArray(value))
|
|
136
|
+
return value.map(textContent).join(" ");
|
|
137
|
+
if (!isRenderNode(value))
|
|
138
|
+
return "";
|
|
139
|
+
return textContent(value.children);
|
|
140
|
+
}
|
|
132
141
|
function hasClass(node, name) {
|
|
133
142
|
return String(node.props.class ?? "")
|
|
134
143
|
.split(/\s+/)
|
|
@@ -160,6 +169,7 @@ function widget() {
|
|
|
160
169
|
item.cartUpdate = { emit: vi.fn() };
|
|
161
170
|
item.checkoutInit = { emit: vi.fn() };
|
|
162
171
|
item.errorOccurred = { emit: vi.fn() };
|
|
172
|
+
item.analyticsEventSkipped = { emit: vi.fn() };
|
|
163
173
|
item.client = {
|
|
164
174
|
event: {
|
|
165
175
|
get: vi.fn(),
|
|
@@ -377,6 +387,53 @@ describe("session-services-ticketing component", () => {
|
|
|
377
387
|
cta_surface: "sticky",
|
|
378
388
|
}));
|
|
379
389
|
});
|
|
390
|
+
it("tracks page, product, and product list views after event load", () => {
|
|
391
|
+
const item = widget();
|
|
392
|
+
const page = vi.fn();
|
|
393
|
+
const track = vi.fn();
|
|
394
|
+
item.analytics = { page, track };
|
|
395
|
+
item.trackLoadedEvent(item.event);
|
|
396
|
+
expect(page).toHaveBeenCalledWith("Ticketing Widget", expect.objectContaining({
|
|
397
|
+
event_id: "evt_1",
|
|
398
|
+
team_id: "team_1",
|
|
399
|
+
promoter_id: "pro_1",
|
|
400
|
+
event_name: "Test Event",
|
|
401
|
+
event_slug: "event",
|
|
402
|
+
}));
|
|
403
|
+
expect(track).toHaveBeenCalledWith("Product Viewed", expect.objectContaining({
|
|
404
|
+
event_id: "evt_1",
|
|
405
|
+
product_id: "evt_1",
|
|
406
|
+
price: 22,
|
|
407
|
+
}));
|
|
408
|
+
expect(track).toHaveBeenCalledWith("Product List Viewed", expect.objectContaining({
|
|
409
|
+
list_id: "evt_1",
|
|
410
|
+
products: [
|
|
411
|
+
expect.objectContaining({
|
|
412
|
+
admission_id: "adm_general",
|
|
413
|
+
price: 22,
|
|
414
|
+
}),
|
|
415
|
+
],
|
|
416
|
+
}));
|
|
417
|
+
expect(item.analyticsEventSkipped.emit).not.toHaveBeenCalled();
|
|
418
|
+
});
|
|
419
|
+
it("emits an analytics diagnostic when event identity is incomplete", () => {
|
|
420
|
+
const item = widget();
|
|
421
|
+
const page = vi.fn();
|
|
422
|
+
const track = vi.fn();
|
|
423
|
+
item.analytics = { page, track };
|
|
424
|
+
const missingTeam = event({ teamId: "" });
|
|
425
|
+
item.event = missingTeam;
|
|
426
|
+
item.trackLoadedEvent(missingTeam);
|
|
427
|
+
expect(page).not.toHaveBeenCalled();
|
|
428
|
+
expect(track).not.toHaveBeenCalled();
|
|
429
|
+
expect(item.analyticsEventSkipped.emit).toHaveBeenCalledWith({
|
|
430
|
+
eventType: "Page Viewed",
|
|
431
|
+
eventId: "evt_1",
|
|
432
|
+
reason: "missing_team_id",
|
|
433
|
+
promoterId: "pro_1",
|
|
434
|
+
teamId: undefined,
|
|
435
|
+
});
|
|
436
|
+
});
|
|
380
437
|
it("tracks hosted checkout starts with the created order id", async () => {
|
|
381
438
|
const item = widget();
|
|
382
439
|
const track = vi.fn();
|
|
@@ -408,13 +465,26 @@ describe("session-services-ticketing component", () => {
|
|
|
408
465
|
getBoundingClientRect: () => ({ top: 900 }),
|
|
409
466
|
};
|
|
410
467
|
vi.stubGlobal("window", { scrollY: 250, scrollTo });
|
|
411
|
-
item.handleStickyCheckoutClick(getTicketingState(
|
|
468
|
+
item.handleStickyCheckoutClick(getTicketingState(event()));
|
|
412
469
|
expect(scrollTo).toHaveBeenCalledWith({
|
|
413
470
|
behavior: "smooth",
|
|
414
471
|
top: 570,
|
|
415
472
|
});
|
|
416
473
|
vi.unstubAllGlobals();
|
|
417
474
|
});
|
|
475
|
+
it("shows only the placeholder name for secret event locations", () => {
|
|
476
|
+
const item = widget();
|
|
477
|
+
const node = item.renderEventLocation(event({
|
|
478
|
+
locationRevealAt: futureStart,
|
|
479
|
+
location: {
|
|
480
|
+
...event().location,
|
|
481
|
+
name: "Secret location",
|
|
482
|
+
},
|
|
483
|
+
}), "admission-venue");
|
|
484
|
+
expect(node.children).toHaveLength(2);
|
|
485
|
+
expect(node.children).toContain("Secret location");
|
|
486
|
+
expect(textContent(node)).not.toContain("Address revealed");
|
|
487
|
+
});
|
|
418
488
|
it("classifies only passcode access failures as passcode errors", async () => {
|
|
419
489
|
const item = widget();
|
|
420
490
|
item.client.event.get = vi
|
|
@@ -31,3 +31,5 @@ export interface SetPlatformOptions {
|
|
|
31
31
|
rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
32
32
|
}
|
|
33
33
|
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
|
|
34
|
+
|
|
35
|
+
export * from '../types';
|