@seatlayer/js 0.89.1 → 0.90.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/index.d.cts CHANGED
@@ -605,8 +605,15 @@ declare class ApiError extends Error {
605
605
  notice?: string;
606
606
  /** `422 booking_form_incomplete`: the fields the server refused, for inline errors. */
607
607
  fields?: BookingFormFieldError[];
608
+ /**
609
+ * The server's own statement that sending the identical request again is
610
+ * safe (`retryable: true` in the error body), for example a checkout that met
611
+ * contention. Absent when the server said nothing; never inferred here.
612
+ */
613
+ retryable?: boolean;
608
614
  constructor(status: number, message: string, code?: string, conflicts?: HoldConflict[], reason?: string, retryAfterS?: number, notice?: string, details?: {
609
615
  fields?: BookingFormFieldError[];
616
+ retryable?: boolean;
610
617
  });
611
618
  }
612
619
  interface HoldResult {
@@ -1193,8 +1200,17 @@ interface SeatPickerOptions {
1193
1200
  * sections as soon as the chart lands and fills the seats in a section at a
1194
1201
  * time, nearest the viewport first; 'plain' builds the whole scene in one
1195
1202
  * step. Small charts are built in one step either way.
1203
+ *
1204
+ * 'viewport' is an opt-in mode for very large charts. It keeps the section
1205
+ * overview light and builds seat graphics only for the visible or focused
1206
+ * sections, retaining a bounded warm cache as the buyer moves. It applies to
1207
+ * sectioned flat charts and is never selected automatically: the widget uses
1208
+ * it only when this option is set to 'viewport'. Seat availability, search
1209
+ * and selection still cover every seat. Because every seat is never built at
1210
+ * once in this mode, `onSeatsRevealed` and the `chart_seats_revealed`
1211
+ * analytics event do not fire.
1196
1212
  */
1197
- loadingReveal?: 'progressive' | 'plain';
1213
+ loadingReveal?: 'progressive' | 'plain' | 'viewport';
1198
1214
  /** Initial map projection. Buyers now toggle **Map (flat 2D) + 3D** only; the
1199
1215
  * legacy `perspective` (2.5D) value is still ACCEPTED for source compatibility
1200
1216
  * but is deprecated — it is coerced to `flat` with a one-time console warning.
@@ -1259,7 +1275,9 @@ interface SeatPickerOptions {
1259
1275
  * rest arrive in idle slices. A host that needs "the whole venue is on
1260
1276
  * screen" waits for this rather than for `render()`. Fires exactly once per
1261
1277
  * chart, and never for a chart small enough to build in one step (there is
1262
- * nothing to wait for: `render()` already was that moment).
1278
+ * nothing to wait for: `render()` already was that moment). It also never
1279
+ * fires with `loadingReveal: 'viewport'`, where only the seats around the
1280
+ * current view are built.
1263
1281
  */
1264
1282
  onSeatsRevealed?: () => void;
1265
1283
  /**
@@ -3991,6 +4009,10 @@ declare class SeatPicker implements GaPromptPicker {
3991
4009
  /** Elapsed since `render()` resolved, or undefined when it never did. */
3992
4010
  private sinceRenderResolved;
3993
4011
  /** @internal */ whenSeatsRevealed(run: () => void): void;
4012
+ /** True only when the host opted into `loadingReveal: 'viewport'`. */
4013
+ private viewportLoading;
4014
+ /** Run queued seat work once, in order, each step fenced from the next. */
4015
+ private drainSeatsRevealedWaiters;
3994
4016
  /** Keep returning buyers behind the veil until their hold is authoritative. */
3995
4017
  private restoreHoldForFirstPaint;
3996
4018
  /** Resume a redirect checkout from this tab's storage, never from the URL. */
@@ -5431,7 +5453,17 @@ interface SeasonRenewalIntent {
5431
5453
  declare class SeasonApiError extends Error {
5432
5454
  readonly code: string;
5433
5455
  readonly status: number;
5434
- constructor(code: string, status: number);
5456
+ /** Seconds from a 503's `Retry-After`, when the server sent one. */
5457
+ readonly retryAfterS?: number;
5458
+ /** The server's `retryable` flag from the error body, when present. */
5459
+ readonly retryable?: boolean;
5460
+ /** The error body's `reason` (for example `maintenance_mode`), when present. */
5461
+ readonly reason?: string;
5462
+ constructor(code: string, status: number, details?: {
5463
+ retryAfterS?: number;
5464
+ retryable?: boolean;
5465
+ reason?: string;
5466
+ });
5435
5467
  }
5436
5468
  declare class SeasonRecoveryTimeoutError extends Error {
5437
5469
  readonly operationId: string;
package/dist/index.d.ts CHANGED
@@ -605,8 +605,15 @@ declare class ApiError extends Error {
605
605
  notice?: string;
606
606
  /** `422 booking_form_incomplete`: the fields the server refused, for inline errors. */
607
607
  fields?: BookingFormFieldError[];
608
+ /**
609
+ * The server's own statement that sending the identical request again is
610
+ * safe (`retryable: true` in the error body), for example a checkout that met
611
+ * contention. Absent when the server said nothing; never inferred here.
612
+ */
613
+ retryable?: boolean;
608
614
  constructor(status: number, message: string, code?: string, conflicts?: HoldConflict[], reason?: string, retryAfterS?: number, notice?: string, details?: {
609
615
  fields?: BookingFormFieldError[];
616
+ retryable?: boolean;
610
617
  });
611
618
  }
612
619
  interface HoldResult {
@@ -1193,8 +1200,17 @@ interface SeatPickerOptions {
1193
1200
  * sections as soon as the chart lands and fills the seats in a section at a
1194
1201
  * time, nearest the viewport first; 'plain' builds the whole scene in one
1195
1202
  * step. Small charts are built in one step either way.
1203
+ *
1204
+ * 'viewport' is an opt-in mode for very large charts. It keeps the section
1205
+ * overview light and builds seat graphics only for the visible or focused
1206
+ * sections, retaining a bounded warm cache as the buyer moves. It applies to
1207
+ * sectioned flat charts and is never selected automatically: the widget uses
1208
+ * it only when this option is set to 'viewport'. Seat availability, search
1209
+ * and selection still cover every seat. Because every seat is never built at
1210
+ * once in this mode, `onSeatsRevealed` and the `chart_seats_revealed`
1211
+ * analytics event do not fire.
1196
1212
  */
1197
- loadingReveal?: 'progressive' | 'plain';
1213
+ loadingReveal?: 'progressive' | 'plain' | 'viewport';
1198
1214
  /** Initial map projection. Buyers now toggle **Map (flat 2D) + 3D** only; the
1199
1215
  * legacy `perspective` (2.5D) value is still ACCEPTED for source compatibility
1200
1216
  * but is deprecated — it is coerced to `flat` with a one-time console warning.
@@ -1259,7 +1275,9 @@ interface SeatPickerOptions {
1259
1275
  * rest arrive in idle slices. A host that needs "the whole venue is on
1260
1276
  * screen" waits for this rather than for `render()`. Fires exactly once per
1261
1277
  * chart, and never for a chart small enough to build in one step (there is
1262
- * nothing to wait for: `render()` already was that moment).
1278
+ * nothing to wait for: `render()` already was that moment). It also never
1279
+ * fires with `loadingReveal: 'viewport'`, where only the seats around the
1280
+ * current view are built.
1263
1281
  */
1264
1282
  onSeatsRevealed?: () => void;
1265
1283
  /**
@@ -3991,6 +4009,10 @@ declare class SeatPicker implements GaPromptPicker {
3991
4009
  /** Elapsed since `render()` resolved, or undefined when it never did. */
3992
4010
  private sinceRenderResolved;
3993
4011
  /** @internal */ whenSeatsRevealed(run: () => void): void;
4012
+ /** True only when the host opted into `loadingReveal: 'viewport'`. */
4013
+ private viewportLoading;
4014
+ /** Run queued seat work once, in order, each step fenced from the next. */
4015
+ private drainSeatsRevealedWaiters;
3994
4016
  /** Keep returning buyers behind the veil until their hold is authoritative. */
3995
4017
  private restoreHoldForFirstPaint;
3996
4018
  /** Resume a redirect checkout from this tab's storage, never from the URL. */
@@ -5431,7 +5453,17 @@ interface SeasonRenewalIntent {
5431
5453
  declare class SeasonApiError extends Error {
5432
5454
  readonly code: string;
5433
5455
  readonly status: number;
5434
- constructor(code: string, status: number);
5456
+ /** Seconds from a 503's `Retry-After`, when the server sent one. */
5457
+ readonly retryAfterS?: number;
5458
+ /** The server's `retryable` flag from the error body, when present. */
5459
+ readonly retryable?: boolean;
5460
+ /** The error body's `reason` (for example `maintenance_mode`), when present. */
5461
+ readonly reason?: string;
5462
+ constructor(code: string, status: number, details?: {
5463
+ retryAfterS?: number;
5464
+ retryable?: boolean;
5465
+ reason?: string;
5466
+ });
5435
5467
  }
5436
5468
  declare class SeasonRecoveryTimeoutError extends Error {
5437
5469
  readonly operationId: string;