@seatlayer/js 0.47.0 → 0.47.2

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/index.d.cts CHANGED
@@ -665,7 +665,6 @@ declare class SeatingChart {
665
665
  private mount;
666
666
  private hostEl;
667
667
  private rendered;
668
- private retryBtn;
669
668
  private mode_;
670
669
  private tipEl;
671
670
  private tipPos;
@@ -1070,6 +1069,59 @@ declare class EmbeddedDesigner {
1070
1069
  private handleMessage;
1071
1070
  }
1072
1071
 
1072
+ /**
1073
+ * Buyer-safe ticket-offer availability shared by the canonical picker and the
1074
+ * hosted event-page templates.
1075
+ *
1076
+ * This module intentionally owns the wire parser. A hosted page, iframe, popup
1077
+ * and SDK mount must refuse or accept the same payload; duplicating this reader
1078
+ * is how one surface eventually prints a price another surface will not charge.
1079
+ */
1080
+ type SaleState = 'on-sale' | 'low' | 'sold-out' | 'presale' | 'closed';
1081
+ interface TicketOfferSummary {
1082
+ /** Legacy ordering fields kept for older page templates and payloads. */
1083
+ index: number;
1084
+ count: number;
1085
+ /** Units currently available at this offer price; null means unlimited. */
1086
+ remaining: number | null;
1087
+ /** Buyer-facing fields added by the offers UX. Absent on older workers. */
1088
+ id?: string;
1089
+ name?: string;
1090
+ categoryKey?: string | null;
1091
+ startsAt?: number | null;
1092
+ endsAt?: number | null;
1093
+ }
1094
+ interface TicketOfferPrice {
1095
+ categoryKey: string;
1096
+ /** Major units. What a hold on this category is charged right now. */
1097
+ price: number;
1098
+ /** Major units, or null. Printed only when genuinely higher. */
1099
+ previousPrice: number | null;
1100
+ /** Offer provenance for the price row. Absent on older workers. */
1101
+ offerId?: string;
1102
+ offerName?: string;
1103
+ remaining?: number | null;
1104
+ startsAt?: number | null;
1105
+ endsAt?: number | null;
1106
+ }
1107
+ interface TicketOfferAvailability {
1108
+ state: SaleState;
1109
+ /** Currently advertised offer price, in minor units. */
1110
+ fromPrice: number | null;
1111
+ previousPrice: number | null;
1112
+ currency: string | null;
1113
+ /** The highest-priority active buy offer, when one exists. */
1114
+ release: TicketOfferSummary | null;
1115
+ /** The next scheduled price offer. It does not close ordinary ticket sales. */
1116
+ upcoming: TicketOfferSummary | null;
1117
+ /** Server-resolved active offer prices by category, in major units. */
1118
+ prices: TicketOfferPrice[];
1119
+ }
1120
+ /** Parse a public offer payload without repairing a half-understood price. */
1121
+ declare function parseTicketOfferAvailability(body: unknown): TicketOfferAvailability | null;
1122
+ /** Translate the server-resolved category map into SeatPicker pricing. */
1123
+ declare function ticketOfferPrices(availability: TicketOfferAvailability | null): Record<string, number>;
1124
+
1073
1125
  /**
1074
1126
  * SeatPicker — the full buyer experience as a widget.
1075
1127
  *
@@ -1299,6 +1351,12 @@ interface SeatPickerOptions {
1299
1351
  * fall back to the chart price.
1300
1352
  */
1301
1353
  pricing?: SeatPickerPricing;
1354
+ /**
1355
+ * Fires when the server-resolved active offer changes. Hosted event pages use
1356
+ * this to keep their headline, sticky bar and the canonical picker on the
1357
+ * same live fact. The picker remains fully functional when it is omitted.
1358
+ */
1359
+ onOfferAvailabilityChange?: (availability: TicketOfferAvailability | null) => void;
1302
1360
  /** Hold TTL in ms passed to hold(); server clamps to its own limits. */
1303
1361
  holdTtlMs?: number;
1304
1362
  /**
@@ -1473,6 +1531,8 @@ declare class SeatPicker {
1473
1531
  private readonly apiBase;
1474
1532
  private readonly controller;
1475
1533
  private readonly maxTickets;
1534
+ /** Original host pricing, kept separate from live server offer overrides. */
1535
+ private readonly hostPricing;
1476
1536
  private root;
1477
1537
  private mapHost;
1478
1538
  private rendered;
@@ -1483,9 +1543,16 @@ declare class SeatPicker {
1483
1543
  private ro;
1484
1544
  private holdTimer;
1485
1545
  private toastTimer;
1546
+ private offerRefreshTimer;
1547
+ /** Armed only when the offer schedule has a known future transition (or as a
1548
+ * bounded retry after a failed read) — never a fixed-cadence poll. */
1549
+ private offerBoundaryTimer;
1550
+ private offerVisibilityHandler;
1486
1551
  /** Short-lived UI motion timers; all are cancelled on destroy. */
1487
1552
  private motionTimers;
1488
1553
  private currency;
1554
+ private eventTimezone;
1555
+ private offerAvailability;
1489
1556
  private hold;
1490
1557
  /** Latest server expiry for the open hold (moves on extend). */
1491
1558
  private holdExpiresAt;
@@ -1856,6 +1923,28 @@ declare class SeatPicker {
1856
1923
  private openSeatView;
1857
1924
  private closeSeatView;
1858
1925
  private money;
1926
+ /**
1927
+ * Sleep until the offer schedule's next known transition, then re-read.
1928
+ *
1929
+ * A far-away boundary is capped: the wake re-reads, learns the (unchanged)
1930
+ * schedule, and re-arms — so a picker left open for days still tracks an
1931
+ * organizer's schedule edits at a cost of one request every few hours. No
1932
+ * future transition means no timer at all; an event with no releases does
1933
+ * zero background traffic. A wake in a hidden tab fetches nothing — the
1934
+ * visibilitychange handler owns catching that tab up.
1935
+ */
1936
+ private scheduleOfferBoundary;
1937
+ /** Debounce the no-store offer read behind a burst of seat-status frames. */
1938
+ private scheduleOfferRefresh;
1939
+ /**
1940
+ * Pull the server's resolved answer. A failed refresh keeps the last truthful
1941
+ * answer: flashing back to a chart price while checkout still charges an
1942
+ * offer is worse than a temporarily stale remaining count.
1943
+ */
1944
+ private refreshOfferAvailability;
1945
+ private offerPrice;
1946
+ /** The compact current/upcoming offer card above Ticket prices. */
1947
+ private syncOffer;
1859
1948
  /**
1860
1949
  * The price the buyer will actually pay for a category (+tier): the host's
1861
1950
  * `pricing` override when present, else the chart's stored price. Every
@@ -2800,4 +2889,4 @@ declare class ChannelsMode {
2800
2889
  handleBack(): boolean;
2801
2890
  }
2802
2891
 
2803
- export { AccessLinkReveal, AccessLinkStatusRecord, ApiError, AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, ChannelAccessIntent, ChannelAllocationPage, ChannelListResult, ChannelPreviewProjection, ChannelRecord, ChannelSeatStatus, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsRowView, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, attachPickerFrame, bucketRowsHtml, createBuyerAccessContext, createControllerSink };
2892
+ export { AccessLinkReveal, AccessLinkStatusRecord, ApiError, AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, ChannelAccessIntent, ChannelAllocationPage, ChannelListResult, ChannelPreviewProjection, ChannelRecord, ChannelSeatStatus, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsRowView, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, type SaleState, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bucketRowsHtml, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, ticketOfferPrices };
package/dist/index.d.ts CHANGED
@@ -665,7 +665,6 @@ declare class SeatingChart {
665
665
  private mount;
666
666
  private hostEl;
667
667
  private rendered;
668
- private retryBtn;
669
668
  private mode_;
670
669
  private tipEl;
671
670
  private tipPos;
@@ -1070,6 +1069,59 @@ declare class EmbeddedDesigner {
1070
1069
  private handleMessage;
1071
1070
  }
1072
1071
 
1072
+ /**
1073
+ * Buyer-safe ticket-offer availability shared by the canonical picker and the
1074
+ * hosted event-page templates.
1075
+ *
1076
+ * This module intentionally owns the wire parser. A hosted page, iframe, popup
1077
+ * and SDK mount must refuse or accept the same payload; duplicating this reader
1078
+ * is how one surface eventually prints a price another surface will not charge.
1079
+ */
1080
+ type SaleState = 'on-sale' | 'low' | 'sold-out' | 'presale' | 'closed';
1081
+ interface TicketOfferSummary {
1082
+ /** Legacy ordering fields kept for older page templates and payloads. */
1083
+ index: number;
1084
+ count: number;
1085
+ /** Units currently available at this offer price; null means unlimited. */
1086
+ remaining: number | null;
1087
+ /** Buyer-facing fields added by the offers UX. Absent on older workers. */
1088
+ id?: string;
1089
+ name?: string;
1090
+ categoryKey?: string | null;
1091
+ startsAt?: number | null;
1092
+ endsAt?: number | null;
1093
+ }
1094
+ interface TicketOfferPrice {
1095
+ categoryKey: string;
1096
+ /** Major units. What a hold on this category is charged right now. */
1097
+ price: number;
1098
+ /** Major units, or null. Printed only when genuinely higher. */
1099
+ previousPrice: number | null;
1100
+ /** Offer provenance for the price row. Absent on older workers. */
1101
+ offerId?: string;
1102
+ offerName?: string;
1103
+ remaining?: number | null;
1104
+ startsAt?: number | null;
1105
+ endsAt?: number | null;
1106
+ }
1107
+ interface TicketOfferAvailability {
1108
+ state: SaleState;
1109
+ /** Currently advertised offer price, in minor units. */
1110
+ fromPrice: number | null;
1111
+ previousPrice: number | null;
1112
+ currency: string | null;
1113
+ /** The highest-priority active buy offer, when one exists. */
1114
+ release: TicketOfferSummary | null;
1115
+ /** The next scheduled price offer. It does not close ordinary ticket sales. */
1116
+ upcoming: TicketOfferSummary | null;
1117
+ /** Server-resolved active offer prices by category, in major units. */
1118
+ prices: TicketOfferPrice[];
1119
+ }
1120
+ /** Parse a public offer payload without repairing a half-understood price. */
1121
+ declare function parseTicketOfferAvailability(body: unknown): TicketOfferAvailability | null;
1122
+ /** Translate the server-resolved category map into SeatPicker pricing. */
1123
+ declare function ticketOfferPrices(availability: TicketOfferAvailability | null): Record<string, number>;
1124
+
1073
1125
  /**
1074
1126
  * SeatPicker — the full buyer experience as a widget.
1075
1127
  *
@@ -1299,6 +1351,12 @@ interface SeatPickerOptions {
1299
1351
  * fall back to the chart price.
1300
1352
  */
1301
1353
  pricing?: SeatPickerPricing;
1354
+ /**
1355
+ * Fires when the server-resolved active offer changes. Hosted event pages use
1356
+ * this to keep their headline, sticky bar and the canonical picker on the
1357
+ * same live fact. The picker remains fully functional when it is omitted.
1358
+ */
1359
+ onOfferAvailabilityChange?: (availability: TicketOfferAvailability | null) => void;
1302
1360
  /** Hold TTL in ms passed to hold(); server clamps to its own limits. */
1303
1361
  holdTtlMs?: number;
1304
1362
  /**
@@ -1473,6 +1531,8 @@ declare class SeatPicker {
1473
1531
  private readonly apiBase;
1474
1532
  private readonly controller;
1475
1533
  private readonly maxTickets;
1534
+ /** Original host pricing, kept separate from live server offer overrides. */
1535
+ private readonly hostPricing;
1476
1536
  private root;
1477
1537
  private mapHost;
1478
1538
  private rendered;
@@ -1483,9 +1543,16 @@ declare class SeatPicker {
1483
1543
  private ro;
1484
1544
  private holdTimer;
1485
1545
  private toastTimer;
1546
+ private offerRefreshTimer;
1547
+ /** Armed only when the offer schedule has a known future transition (or as a
1548
+ * bounded retry after a failed read) — never a fixed-cadence poll. */
1549
+ private offerBoundaryTimer;
1550
+ private offerVisibilityHandler;
1486
1551
  /** Short-lived UI motion timers; all are cancelled on destroy. */
1487
1552
  private motionTimers;
1488
1553
  private currency;
1554
+ private eventTimezone;
1555
+ private offerAvailability;
1489
1556
  private hold;
1490
1557
  /** Latest server expiry for the open hold (moves on extend). */
1491
1558
  private holdExpiresAt;
@@ -1856,6 +1923,28 @@ declare class SeatPicker {
1856
1923
  private openSeatView;
1857
1924
  private closeSeatView;
1858
1925
  private money;
1926
+ /**
1927
+ * Sleep until the offer schedule's next known transition, then re-read.
1928
+ *
1929
+ * A far-away boundary is capped: the wake re-reads, learns the (unchanged)
1930
+ * schedule, and re-arms — so a picker left open for days still tracks an
1931
+ * organizer's schedule edits at a cost of one request every few hours. No
1932
+ * future transition means no timer at all; an event with no releases does
1933
+ * zero background traffic. A wake in a hidden tab fetches nothing — the
1934
+ * visibilitychange handler owns catching that tab up.
1935
+ */
1936
+ private scheduleOfferBoundary;
1937
+ /** Debounce the no-store offer read behind a burst of seat-status frames. */
1938
+ private scheduleOfferRefresh;
1939
+ /**
1940
+ * Pull the server's resolved answer. A failed refresh keeps the last truthful
1941
+ * answer: flashing back to a chart price while checkout still charges an
1942
+ * offer is worse than a temporarily stale remaining count.
1943
+ */
1944
+ private refreshOfferAvailability;
1945
+ private offerPrice;
1946
+ /** The compact current/upcoming offer card above Ticket prices. */
1947
+ private syncOffer;
1859
1948
  /**
1860
1949
  * The price the buyer will actually pay for a category (+tier): the host's
1861
1950
  * `pricing` override when present, else the chart's stored price. Every
@@ -2800,4 +2889,4 @@ declare class ChannelsMode {
2800
2889
  handleBack(): boolean;
2801
2890
  }
2802
2891
 
2803
- export { AccessLinkReveal, AccessLinkStatusRecord, ApiError, AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, ChannelAccessIntent, ChannelAllocationPage, ChannelListResult, ChannelPreviewProjection, ChannelRecord, ChannelSeatStatus, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsRowView, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, attachPickerFrame, bucketRowsHtml, createBuyerAccessContext, createControllerSink };
2892
+ export { AccessLinkReveal, AccessLinkStatusRecord, ApiError, AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, ChannelAccessIntent, ChannelAllocationPage, ChannelListResult, ChannelPreviewProjection, ChannelRecord, ChannelSeatStatus, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsRowView, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, type SaleState, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bucketRowsHtml, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, ticketOfferPrices };