@seatlayer/js 0.95.1 → 0.97.0
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/chunk-ICMSBXRJ.js +1 -0
- package/dist/chunk-URLBBOTJ.js +1 -0
- package/dist/hostedCheckout-4BFFNCCU.js +146 -0
- package/dist/index.cjs +148 -60
- package/dist/index.d.cts +57 -7
- package/dist/index.d.ts +57 -7
- package/dist/index.js +17 -17
- package/dist/manager.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-JELR6YYZ.js +0 -1
- package/dist/hostedCheckout-GQQF4XDN.js +0 -58
package/dist/index.d.cts
CHANGED
|
@@ -502,6 +502,13 @@ declare function createControllerSink(controller: PickerControllerLike, options?
|
|
|
502
502
|
* follows the card's rule: NO RUNTIME IMPORTS. Everything it needs — the ticket
|
|
503
503
|
* keys, the translator, the buyer's own details — arrives as arguments.
|
|
504
504
|
*
|
|
505
|
+
* Nothing is asked twice (docs/design/checkout-ux-2026-09-22 in the app repo):
|
|
506
|
+
* ticket 1 copies the buyer's own name and email and is shown as one line,
|
|
507
|
+
* "You · Asha", with a way to change it; a one-ticket order has no holder
|
|
508
|
+
* block at all; holder details that are all optional wait behind one line.
|
|
509
|
+
* What is SENT is unchanged — ticket 1's attendee still carries the buyer's
|
|
510
|
+
* name and email.
|
|
511
|
+
*
|
|
505
512
|
* The server is the authority on every rule below (`booking_form_incomplete`).
|
|
506
513
|
* These checks only exist so a buyer hears about a missing name next to the
|
|
507
514
|
* field, before a round trip, in the same words the refusal would map to.
|
|
@@ -684,8 +691,8 @@ interface BestAvailableResult {
|
|
|
684
691
|
/** See {@link HoldResult.ticketKeyDetails}. */
|
|
685
692
|
ticketKeyDetails?: TicketKeyDetail[];
|
|
686
693
|
}
|
|
687
|
-
/** A gateway the organizer can be connected to. */
|
|
688
|
-
type PaymentProviderName =
|
|
694
|
+
/** A gateway the organizer can be connected to. Provider ids are server-owned. */
|
|
695
|
+
type PaymentProviderName = string;
|
|
689
696
|
/**
|
|
690
697
|
* Why `payment-options` came back with an empty list.
|
|
691
698
|
*
|
|
@@ -718,7 +725,7 @@ interface PaymentOptionsResult {
|
|
|
718
725
|
/** What hosted checkout must ask: attendee details and active questions. */
|
|
719
726
|
bookingForm?: BookingForm | null;
|
|
720
727
|
}
|
|
721
|
-
/** A started payment.
|
|
728
|
+
/** A started payment. Paid checkouts continue through one provider-neutral redirect. */
|
|
722
729
|
interface CheckoutSessionResult {
|
|
723
730
|
orderId: string;
|
|
724
731
|
totalMinor: number;
|
|
@@ -726,8 +733,6 @@ interface CheckoutSessionResult {
|
|
|
726
733
|
expiresAt: number;
|
|
727
734
|
/** Hosted gateway page — navigate to it. */
|
|
728
735
|
redirectUrl?: string;
|
|
729
|
-
/** In-page modal gateway — open it without leaving the page. */
|
|
730
|
-
clientPayload?: Record<string, unknown>;
|
|
731
736
|
/**
|
|
732
737
|
* `'confirmed'` when the booking needed no payment (a free event, or a hold
|
|
733
738
|
* that sums to zero): the seats are already booked and the tickets issued,
|
|
@@ -836,6 +841,10 @@ interface GaPromptPicker {
|
|
|
836
841
|
gaQty: GaQtyMap;
|
|
837
842
|
maxTickets: number;
|
|
838
843
|
salesClosed: boolean;
|
|
844
|
+
/** The closed-sales words for this event's state; absent on older hosts. */
|
|
845
|
+
closedWords?(): {
|
|
846
|
+
toast: string;
|
|
847
|
+
};
|
|
839
848
|
gaPromptEl: HTMLDivElement | null;
|
|
840
849
|
gaPromptReturnFocus: HTMLElement | null;
|
|
841
850
|
gaAreasExpanded: boolean;
|
|
@@ -1013,6 +1022,13 @@ interface CheckoutLineItem {
|
|
|
1013
1022
|
sectionLabel?: string;
|
|
1014
1023
|
rowLabel?: string;
|
|
1015
1024
|
seatNumber?: string;
|
|
1025
|
+
/**
|
|
1026
|
+
* Buyer-facing category name ("Standard") and ticket type ("Adult") for
|
|
1027
|
+
* `categoryKey` / `tierId`, so an order summary need not look them up.
|
|
1028
|
+
* Absent when the chart names neither (or on an older SDK).
|
|
1029
|
+
*/
|
|
1030
|
+
categoryLabel?: string;
|
|
1031
|
+
tierLabel?: string;
|
|
1016
1032
|
}
|
|
1017
1033
|
interface CheckoutHandoff {
|
|
1018
1034
|
/** Server hold id — pass this to YOUR book call. */
|
|
@@ -3479,6 +3495,40 @@ interface WebMcpRegistration {
|
|
|
3479
3495
|
/** What `PickerController.render()` reports back about the loaded event. */
|
|
3480
3496
|
type PickerRenderInfo = NonNullable<Awaited<ReturnType<PickerController['render']>>>;
|
|
3481
3497
|
|
|
3498
|
+
/**
|
|
3499
|
+
* pickerTray — the renderable pieces of the selection tray: the ticket-card
|
|
3500
|
+
* identity grid, the card's icon rail, the best-available card, the tray's
|
|
3501
|
+
* opening line, and the hold countdown copy.
|
|
3502
|
+
*
|
|
3503
|
+
* The mobile peek bar used to live here too — a one-liner that restated the
|
|
3504
|
+
* count, the total and the way forward for a collapsed bottom sheet. The
|
|
3505
|
+
* collapsed sheet now shows the SAME footer block the desktop panel has (owner
|
|
3506
|
+
* call 2026-09-05), so there is one cart summary in the widget instead of two
|
|
3507
|
+
* that had to be kept saying the same thing.
|
|
3508
|
+
*
|
|
3509
|
+
* These are pure: they take values and return strings. Bodies are verbatim from
|
|
3510
|
+
* SeatPicker.ts; the only edits are that each value the closure used to read
|
|
3511
|
+
* off `this` (or look up mid-body) is now a parameter, and `this.tf` is the
|
|
3512
|
+
* `tfStatic` it always delegated to.
|
|
3513
|
+
*
|
|
3514
|
+
* NOT moved, deliberately: `syncTray` itself. It is ~350 lines of
|
|
3515
|
+
* orchestration that touches about fifty-five SeatPicker members and WRITES a
|
|
3516
|
+
* dozen of them (`baQty`, `baCat`, `baZone`, `baPremium`,
|
|
3517
|
+
* `bestAvailableConfirm`, `gaQty`, `lastTrayKeys`, `lastTrayCount`,
|
|
3518
|
+
* `lastTrayTotal`, `sideCollapsed`), wires fifteen event
|
|
3519
|
+
* handlers that call back into the widget, and re-enters itself from nine of
|
|
3520
|
+
* them. A host interface wide enough to carry that is the class with a layer of
|
|
3521
|
+
* indirection bolted on — strictly worse than leaving the orchestration on the
|
|
3522
|
+
* object it orchestrates. So the STRINGS moved and the wiring stayed.
|
|
3523
|
+
*/
|
|
3524
|
+
|
|
3525
|
+
/** What every closed-sales surface says for one state: the pill, the button and the toast. */
|
|
3526
|
+
interface SalesClosedWords {
|
|
3527
|
+
pill: string;
|
|
3528
|
+
cta: string;
|
|
3529
|
+
toast: string;
|
|
3530
|
+
}
|
|
3531
|
+
|
|
3482
3532
|
/**
|
|
3483
3533
|
* Hosted checkout — the payment step, as a module nobody downloads until a
|
|
3484
3534
|
* buyer actually asks to pay.
|
|
@@ -4176,6 +4226,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
4176
4226
|
*/
|
|
4177
4227
|
/** @internal The host's GA prompt takeover, if it supplied one. */
|
|
4178
4228
|
get onGAPromptHook(): SeatPickerOptions['onGAPrompt'];
|
|
4229
|
+
/** @internal The closed-sales words for this event's own sales state. */
|
|
4230
|
+
closedWords(): SalesClosedWords;
|
|
4179
4231
|
/** @internal */ tf(key: string, fallback: string): string;
|
|
4180
4232
|
/** Sold-out overlay — an informational state with no unavailable action. */
|
|
4181
4233
|
private buildSoldoutOverlay;
|
|
@@ -5511,8 +5563,6 @@ interface SeasonCheckoutSession {
|
|
|
5511
5563
|
expiresAt: number;
|
|
5512
5564
|
/** Hosted gateway page — navigate to it. */
|
|
5513
5565
|
redirectUrl?: string;
|
|
5514
|
-
/** In-page modal gateway — open it without leaving the page. */
|
|
5515
|
-
clientPayload?: Record<string, unknown>;
|
|
5516
5566
|
}
|
|
5517
5567
|
interface SeasonCheckoutRequest {
|
|
5518
5568
|
operationId: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -502,6 +502,13 @@ declare function createControllerSink(controller: PickerControllerLike, options?
|
|
|
502
502
|
* follows the card's rule: NO RUNTIME IMPORTS. Everything it needs — the ticket
|
|
503
503
|
* keys, the translator, the buyer's own details — arrives as arguments.
|
|
504
504
|
*
|
|
505
|
+
* Nothing is asked twice (docs/design/checkout-ux-2026-09-22 in the app repo):
|
|
506
|
+
* ticket 1 copies the buyer's own name and email and is shown as one line,
|
|
507
|
+
* "You · Asha", with a way to change it; a one-ticket order has no holder
|
|
508
|
+
* block at all; holder details that are all optional wait behind one line.
|
|
509
|
+
* What is SENT is unchanged — ticket 1's attendee still carries the buyer's
|
|
510
|
+
* name and email.
|
|
511
|
+
*
|
|
505
512
|
* The server is the authority on every rule below (`booking_form_incomplete`).
|
|
506
513
|
* These checks only exist so a buyer hears about a missing name next to the
|
|
507
514
|
* field, before a round trip, in the same words the refusal would map to.
|
|
@@ -684,8 +691,8 @@ interface BestAvailableResult {
|
|
|
684
691
|
/** See {@link HoldResult.ticketKeyDetails}. */
|
|
685
692
|
ticketKeyDetails?: TicketKeyDetail[];
|
|
686
693
|
}
|
|
687
|
-
/** A gateway the organizer can be connected to. */
|
|
688
|
-
type PaymentProviderName =
|
|
694
|
+
/** A gateway the organizer can be connected to. Provider ids are server-owned. */
|
|
695
|
+
type PaymentProviderName = string;
|
|
689
696
|
/**
|
|
690
697
|
* Why `payment-options` came back with an empty list.
|
|
691
698
|
*
|
|
@@ -718,7 +725,7 @@ interface PaymentOptionsResult {
|
|
|
718
725
|
/** What hosted checkout must ask: attendee details and active questions. */
|
|
719
726
|
bookingForm?: BookingForm | null;
|
|
720
727
|
}
|
|
721
|
-
/** A started payment.
|
|
728
|
+
/** A started payment. Paid checkouts continue through one provider-neutral redirect. */
|
|
722
729
|
interface CheckoutSessionResult {
|
|
723
730
|
orderId: string;
|
|
724
731
|
totalMinor: number;
|
|
@@ -726,8 +733,6 @@ interface CheckoutSessionResult {
|
|
|
726
733
|
expiresAt: number;
|
|
727
734
|
/** Hosted gateway page — navigate to it. */
|
|
728
735
|
redirectUrl?: string;
|
|
729
|
-
/** In-page modal gateway — open it without leaving the page. */
|
|
730
|
-
clientPayload?: Record<string, unknown>;
|
|
731
736
|
/**
|
|
732
737
|
* `'confirmed'` when the booking needed no payment (a free event, or a hold
|
|
733
738
|
* that sums to zero): the seats are already booked and the tickets issued,
|
|
@@ -836,6 +841,10 @@ interface GaPromptPicker {
|
|
|
836
841
|
gaQty: GaQtyMap;
|
|
837
842
|
maxTickets: number;
|
|
838
843
|
salesClosed: boolean;
|
|
844
|
+
/** The closed-sales words for this event's state; absent on older hosts. */
|
|
845
|
+
closedWords?(): {
|
|
846
|
+
toast: string;
|
|
847
|
+
};
|
|
839
848
|
gaPromptEl: HTMLDivElement | null;
|
|
840
849
|
gaPromptReturnFocus: HTMLElement | null;
|
|
841
850
|
gaAreasExpanded: boolean;
|
|
@@ -1013,6 +1022,13 @@ interface CheckoutLineItem {
|
|
|
1013
1022
|
sectionLabel?: string;
|
|
1014
1023
|
rowLabel?: string;
|
|
1015
1024
|
seatNumber?: string;
|
|
1025
|
+
/**
|
|
1026
|
+
* Buyer-facing category name ("Standard") and ticket type ("Adult") for
|
|
1027
|
+
* `categoryKey` / `tierId`, so an order summary need not look them up.
|
|
1028
|
+
* Absent when the chart names neither (or on an older SDK).
|
|
1029
|
+
*/
|
|
1030
|
+
categoryLabel?: string;
|
|
1031
|
+
tierLabel?: string;
|
|
1016
1032
|
}
|
|
1017
1033
|
interface CheckoutHandoff {
|
|
1018
1034
|
/** Server hold id — pass this to YOUR book call. */
|
|
@@ -3479,6 +3495,40 @@ interface WebMcpRegistration {
|
|
|
3479
3495
|
/** What `PickerController.render()` reports back about the loaded event. */
|
|
3480
3496
|
type PickerRenderInfo = NonNullable<Awaited<ReturnType<PickerController['render']>>>;
|
|
3481
3497
|
|
|
3498
|
+
/**
|
|
3499
|
+
* pickerTray — the renderable pieces of the selection tray: the ticket-card
|
|
3500
|
+
* identity grid, the card's icon rail, the best-available card, the tray's
|
|
3501
|
+
* opening line, and the hold countdown copy.
|
|
3502
|
+
*
|
|
3503
|
+
* The mobile peek bar used to live here too — a one-liner that restated the
|
|
3504
|
+
* count, the total and the way forward for a collapsed bottom sheet. The
|
|
3505
|
+
* collapsed sheet now shows the SAME footer block the desktop panel has (owner
|
|
3506
|
+
* call 2026-09-05), so there is one cart summary in the widget instead of two
|
|
3507
|
+
* that had to be kept saying the same thing.
|
|
3508
|
+
*
|
|
3509
|
+
* These are pure: they take values and return strings. Bodies are verbatim from
|
|
3510
|
+
* SeatPicker.ts; the only edits are that each value the closure used to read
|
|
3511
|
+
* off `this` (or look up mid-body) is now a parameter, and `this.tf` is the
|
|
3512
|
+
* `tfStatic` it always delegated to.
|
|
3513
|
+
*
|
|
3514
|
+
* NOT moved, deliberately: `syncTray` itself. It is ~350 lines of
|
|
3515
|
+
* orchestration that touches about fifty-five SeatPicker members and WRITES a
|
|
3516
|
+
* dozen of them (`baQty`, `baCat`, `baZone`, `baPremium`,
|
|
3517
|
+
* `bestAvailableConfirm`, `gaQty`, `lastTrayKeys`, `lastTrayCount`,
|
|
3518
|
+
* `lastTrayTotal`, `sideCollapsed`), wires fifteen event
|
|
3519
|
+
* handlers that call back into the widget, and re-enters itself from nine of
|
|
3520
|
+
* them. A host interface wide enough to carry that is the class with a layer of
|
|
3521
|
+
* indirection bolted on — strictly worse than leaving the orchestration on the
|
|
3522
|
+
* object it orchestrates. So the STRINGS moved and the wiring stayed.
|
|
3523
|
+
*/
|
|
3524
|
+
|
|
3525
|
+
/** What every closed-sales surface says for one state: the pill, the button and the toast. */
|
|
3526
|
+
interface SalesClosedWords {
|
|
3527
|
+
pill: string;
|
|
3528
|
+
cta: string;
|
|
3529
|
+
toast: string;
|
|
3530
|
+
}
|
|
3531
|
+
|
|
3482
3532
|
/**
|
|
3483
3533
|
* Hosted checkout — the payment step, as a module nobody downloads until a
|
|
3484
3534
|
* buyer actually asks to pay.
|
|
@@ -4176,6 +4226,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
4176
4226
|
*/
|
|
4177
4227
|
/** @internal The host's GA prompt takeover, if it supplied one. */
|
|
4178
4228
|
get onGAPromptHook(): SeatPickerOptions['onGAPrompt'];
|
|
4229
|
+
/** @internal The closed-sales words for this event's own sales state. */
|
|
4230
|
+
closedWords(): SalesClosedWords;
|
|
4179
4231
|
/** @internal */ tf(key: string, fallback: string): string;
|
|
4180
4232
|
/** Sold-out overlay — an informational state with no unavailable action. */
|
|
4181
4233
|
private buildSoldoutOverlay;
|
|
@@ -5511,8 +5563,6 @@ interface SeasonCheckoutSession {
|
|
|
5511
5563
|
expiresAt: number;
|
|
5512
5564
|
/** Hosted gateway page — navigate to it. */
|
|
5513
5565
|
redirectUrl?: string;
|
|
5514
|
-
/** In-page modal gateway — open it without leaving the page. */
|
|
5515
|
-
clientPayload?: Record<string, unknown>;
|
|
5516
5566
|
}
|
|
5517
5567
|
interface SeasonCheckoutRequest {
|
|
5518
5568
|
operationId: string;
|