@tiledev/sdk-apptile-live-selling 0.8.0 → 0.9.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.
Files changed (184) hide show
  1. package/README.md +443 -34
  2. package/dist/auctionComments.d.ts +25 -0
  3. package/dist/auctionComments.d.ts.map +1 -0
  4. package/dist/auctionComments.js +28 -0
  5. package/dist/auctionComments.js.map +1 -0
  6. package/dist/auctionRules.d.ts +76 -0
  7. package/dist/auctionRules.d.ts.map +1 -0
  8. package/dist/auctionRules.js +106 -0
  9. package/dist/auctionRules.js.map +1 -0
  10. package/dist/auctions.d.ts.map +1 -1
  11. package/dist/auctions.js +19 -10
  12. package/dist/auctions.js.map +1 -1
  13. package/dist/client.d.ts +51 -2
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +123 -23
  16. package/dist/client.js.map +1 -1
  17. package/dist/commentHistory.d.ts +66 -0
  18. package/dist/commentHistory.d.ts.map +1 -0
  19. package/dist/commentHistory.js +125 -0
  20. package/dist/commentHistory.js.map +1 -0
  21. package/dist/engine.native.d.ts.map +1 -1
  22. package/dist/engine.native.js +17 -845
  23. package/dist/engine.native.js.map +1 -1
  24. package/dist/giveawayPrize.d.ts +13 -0
  25. package/dist/giveawayPrize.d.ts.map +1 -0
  26. package/dist/giveawayPrize.js +18 -0
  27. package/dist/giveawayPrize.js.map +1 -0
  28. package/dist/giveawayPrizeLines.d.ts +67 -0
  29. package/dist/giveawayPrizeLines.d.ts.map +1 -0
  30. package/dist/giveawayPrizeLines.js +48 -0
  31. package/dist/giveawayPrizeLines.js.map +1 -0
  32. package/dist/giveawayRoster.d.ts +53 -0
  33. package/dist/giveawayRoster.d.ts.map +1 -0
  34. package/dist/giveawayRoster.js +93 -0
  35. package/dist/giveawayRoster.js.map +1 -0
  36. package/dist/heldComments.d.ts +29 -0
  37. package/dist/heldComments.d.ts.map +1 -0
  38. package/dist/heldComments.js +61 -0
  39. package/dist/heldComments.js.map +1 -0
  40. package/dist/hiddenShows.d.ts +34 -0
  41. package/dist/hiddenShows.d.ts.map +1 -0
  42. package/dist/hiddenShows.js +42 -0
  43. package/dist/hiddenShows.js.map +1 -0
  44. package/dist/index.d.ts +17 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +86 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/liveShow.d.ts +58 -0
  49. package/dist/liveShow.d.ts.map +1 -0
  50. package/dist/liveShow.js +55 -0
  51. package/dist/liveShow.js.map +1 -0
  52. package/dist/pipWindow.d.ts +85 -0
  53. package/dist/pipWindow.d.ts.map +1 -0
  54. package/dist/pipWindow.js +88 -0
  55. package/dist/pipWindow.js.map +1 -0
  56. package/dist/polls.d.ts.map +1 -1
  57. package/dist/polls.js +3 -0
  58. package/dist/polls.js.map +1 -1
  59. package/dist/react/LiveSellingProvider.d.ts +10 -1
  60. package/dist/react/LiveSellingProvider.d.ts.map +1 -1
  61. package/dist/react/LiveSellingProvider.js +6 -2
  62. package/dist/react/LiveSellingProvider.js.map +1 -1
  63. package/dist/react/LiveVideoTarget.d.ts.map +1 -1
  64. package/dist/react/LiveVideoTarget.js +41 -3
  65. package/dist/react/LiveVideoTarget.js.map +1 -1
  66. package/dist/react/clocks.d.ts +29 -0
  67. package/dist/react/clocks.d.ts.map +1 -0
  68. package/dist/react/clocks.js +124 -0
  69. package/dist/react/clocks.js.map +1 -0
  70. package/dist/react/index.d.ts +7 -2
  71. package/dist/react/index.d.ts.map +1 -1
  72. package/dist/react/index.js +15 -1
  73. package/dist/react/index.js.map +1 -1
  74. package/dist/react/index.web.d.ts +9 -2
  75. package/dist/react/index.web.d.ts.map +1 -1
  76. package/dist/react/index.web.js +27 -4
  77. package/dist/react/index.web.js.map +1 -1
  78. package/dist/react/startSignIn.d.ts +3 -0
  79. package/dist/react/startSignIn.d.ts.map +1 -0
  80. package/dist/react/startSignIn.js +19 -0
  81. package/dist/react/startSignIn.js.map +1 -0
  82. package/dist/react/useAuctionBidGate.d.ts +54 -4
  83. package/dist/react/useAuctionBidGate.d.ts.map +1 -1
  84. package/dist/react/useAuctionBidGate.js +169 -25
  85. package/dist/react/useAuctionBidGate.js.map +1 -1
  86. package/dist/react/useAuctionWins.d.ts +9 -1
  87. package/dist/react/useAuctionWins.d.ts.map +1 -1
  88. package/dist/react/useAuctionWins.js +9 -3
  89. package/dist/react/useAuctionWins.js.map +1 -1
  90. package/dist/react/useGiveawayEntry.d.ts +59 -0
  91. package/dist/react/useGiveawayEntry.d.ts.map +1 -0
  92. package/dist/react/useGiveawayEntry.js +170 -0
  93. package/dist/react/useGiveawayEntry.js.map +1 -0
  94. package/dist/react/useGiveawayPrize.d.ts +12 -0
  95. package/dist/react/useGiveawayPrize.d.ts.map +1 -0
  96. package/dist/react/useGiveawayPrize.js +53 -0
  97. package/dist/react/useGiveawayPrize.js.map +1 -0
  98. package/dist/react/useHiddenShows.d.ts +10 -0
  99. package/dist/react/useHiddenShows.d.ts.map +1 -0
  100. package/dist/react/useHiddenShows.js +30 -0
  101. package/dist/react/useHiddenShows.js.map +1 -0
  102. package/dist/react/useLiveSession.d.ts +7 -3
  103. package/dist/react/useLiveSession.d.ts.map +1 -1
  104. package/dist/react/useLiveSession.js +522 -157
  105. package/dist/react/useLiveSession.js.map +1 -1
  106. package/dist/react/useLiveShow.d.ts +3 -0
  107. package/dist/react/useLiveShow.d.ts.map +1 -0
  108. package/dist/react/useLiveShow.js +21 -0
  109. package/dist/react/useLiveShow.js.map +1 -0
  110. package/dist/react/useLiveStreams.d.ts.map +1 -1
  111. package/dist/react/useLiveStreams.js +6 -2
  112. package/dist/react/useLiveStreams.js.map +1 -1
  113. package/dist/react/useOngoingLive.d.ts +1 -0
  114. package/dist/react/useOngoingLive.d.ts.map +1 -1
  115. package/dist/react/useOngoingLive.js +7 -1
  116. package/dist/react/useOngoingLive.js.map +1 -1
  117. package/dist/react/useReplays.d.ts +12 -0
  118. package/dist/react/useReplays.d.ts.map +1 -1
  119. package/dist/react/useReplays.js +56 -24
  120. package/dist/react/useReplays.js.map +1 -1
  121. package/dist/react/useStreamInfo.d.ts +13 -2
  122. package/dist/react/useStreamInfo.d.ts.map +1 -1
  123. package/dist/react/useStreamInfo.js +31 -5
  124. package/dist/react/useStreamInfo.js.map +1 -1
  125. package/dist/replayPages.d.ts +31 -0
  126. package/dist/replayPages.d.ts.map +1 -0
  127. package/dist/replayPages.js +34 -0
  128. package/dist/replayPages.js.map +1 -0
  129. package/dist/replays.d.ts +7 -0
  130. package/dist/replays.d.ts.map +1 -1
  131. package/dist/replays.js +52 -22
  132. package/dist/replays.js.map +1 -1
  133. package/dist/session.d.ts +39 -6
  134. package/dist/session.d.ts.map +1 -1
  135. package/dist/session.js +209 -22
  136. package/dist/session.js.map +1 -1
  137. package/dist/sessionTypes.d.ts +190 -14
  138. package/dist/sessionTypes.d.ts.map +1 -1
  139. package/dist/sessionTypes.js +2 -1
  140. package/dist/sessionTypes.js.map +1 -1
  141. package/dist/shopifyCommerce.d.ts +149 -0
  142. package/dist/shopifyCommerce.d.ts.map +1 -0
  143. package/dist/shopifyCommerce.js +123 -0
  144. package/dist/shopifyCommerce.js.map +1 -0
  145. package/dist/shopifyIdentity.d.ts +51 -0
  146. package/dist/shopifyIdentity.d.ts.map +1 -0
  147. package/dist/shopifyIdentity.js +52 -0
  148. package/dist/shopifyIdentity.js.map +1 -0
  149. package/dist/shopifyIds.d.ts +9 -0
  150. package/dist/shopifyIds.d.ts.map +1 -0
  151. package/dist/shopifyIds.js +18 -0
  152. package/dist/shopifyIds.js.map +1 -0
  153. package/dist/showLinks.d.ts +24 -0
  154. package/dist/showLinks.d.ts.map +1 -0
  155. package/dist/showLinks.js +23 -0
  156. package/dist/showLinks.js.map +1 -0
  157. package/dist/showLots.d.ts +28 -0
  158. package/dist/showLots.d.ts.map +1 -0
  159. package/dist/showLots.js +51 -0
  160. package/dist/showLots.js.map +1 -0
  161. package/dist/showNames.d.ts +45 -0
  162. package/dist/showNames.d.ts.map +1 -0
  163. package/dist/showNames.js +74 -0
  164. package/dist/showNames.js.map +1 -0
  165. package/dist/streams.d.ts +27 -1
  166. package/dist/streams.d.ts.map +1 -1
  167. package/dist/streams.js +90 -21
  168. package/dist/streams.js.map +1 -1
  169. package/dist/types.d.ts +195 -8
  170. package/dist/types.d.ts.map +1 -1
  171. package/dist/types.js +2 -1
  172. package/dist/types.js.map +1 -1
  173. package/dist/wire.d.ts +31 -0
  174. package/dist/wire.d.ts.map +1 -1
  175. package/dist/wire.js +25 -0
  176. package/dist/wire.js.map +1 -1
  177. package/dist/zego.d.ts +3 -1
  178. package/dist/zego.d.ts.map +1 -1
  179. package/dist/zego.js +1 -1
  180. package/dist/zegoEngine.d.ts +168 -0
  181. package/dist/zegoEngine.d.ts.map +1 -0
  182. package/dist/zegoEngine.js +1052 -0
  183. package/dist/zegoEngine.js.map +1 -0
  184. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"useStreamInfo.js","sourceRoot":"","sources":["../../src/react/useStreamInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useStreamInfo.js","sourceRoot":"","sources":["../../src/react/useStreamInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The replay archive read a page at a time, by offset: the bookkeeping behind `useReplays`.
3
+ *
4
+ * The gateway pages by offset over every entry it holds; `replays.list` then drops what can't be shown
5
+ * (no playlist, not a finished livestream). So the next page starts after everything the gateway SENT
6
+ * (`ReplayFeed.receivedCount`), never after what was kept. Moving by the kept count (what `useReplays`
7
+ * did until 0.9.0) asks again for entries already read, so pages overlap; and after a page where
8
+ * nothing was kept the offset doesn't move at all, so that same page is asked for again, forever.
9
+ *
10
+ * Kept free of React so it loads in plain Node for tests.
11
+ */
12
+ import type { Replay, ReplayFeed } from './types';
13
+ export interface ReplayPages {
14
+ /** Every recording read so far, in the gateway's order, each once. */
15
+ replays: Replay[];
16
+ /** Where the next page starts: how many entries the gateway has sent so far. */
17
+ nextOffset: number;
18
+ /** The gateway has more. True before anything is read. */
19
+ hasMore: boolean;
20
+ }
21
+ /** Nothing read yet. */
22
+ export declare const NO_REPLAY_PAGES: ReplayPages;
23
+ /** The first page, read (again): it replaces everything read before. */
24
+ export declare function firstReplayPage(feed: ReplayFeed): ReplayPages;
25
+ /**
26
+ * The pages so far with the next one after them. A recording read before isn't added twice: an
27
+ * archive that gains a recording while it is being paged shifts every later entry down by one, so the
28
+ * next page starts with the last one already held.
29
+ */
30
+ export declare function addReplayPage(pages: ReplayPages, feed: ReplayFeed): ReplayPages;
31
+ //# sourceMappingURL=replayPages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayPages.d.ts","sourceRoot":"","sources":["../src/replayPages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAwB;AACxB,eAAO,MAAM,eAAe,EAAE,WAA2D,CAAC;AAE1F,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,CAe/E"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NO_REPLAY_PAGES = void 0;
4
+ exports.firstReplayPage = firstReplayPage;
5
+ exports.addReplayPage = addReplayPage;
6
+ /** Nothing read yet. */
7
+ exports.NO_REPLAY_PAGES = { replays: [], nextOffset: 0, hasMore: true };
8
+ /** The first page, read (again): it replaces everything read before. */
9
+ function firstReplayPage(feed) {
10
+ return addReplayPage({ ...exports.NO_REPLAY_PAGES, replays: [] }, feed);
11
+ }
12
+ /**
13
+ * The pages so far with the next one after them. A recording read before isn't added twice: an
14
+ * archive that gains a recording while it is being paged shifts every later entry down by one, so the
15
+ * next page starts with the last one already held.
16
+ */
17
+ function addReplayPage(pages, feed) {
18
+ const held = new Set(pages.replays.map((replay) => replay.id));
19
+ const added = [];
20
+ for (const replay of feed.replays) {
21
+ if (held.has(replay.id))
22
+ continue;
23
+ held.add(replay.id);
24
+ added.push(replay);
25
+ }
26
+ // A feed made without `receivedCount` (a host's own stand-in) moves by what it holds, as before.
27
+ const received = Number.isFinite(feed.receivedCount) ? Math.max(0, feed.receivedCount) : feed.replays.length;
28
+ return {
29
+ replays: added.length ? [...pages.replays, ...added] : pages.replays,
30
+ nextOffset: pages.nextOffset + received,
31
+ hasMore: feed.hasMore,
32
+ };
33
+ }
34
+ //# sourceMappingURL=replayPages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayPages.js","sourceRoot":"","sources":["../src/replayPages.ts"],"names":[],"mappings":";;;AA0BA,0CAEC;AAOD,sCAeC;AA5BD,wBAAwB;AACX,QAAA,eAAe,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAE1F,wEAAwE;AACxE,SAAgB,eAAe,CAAC,IAAgB;IAC9C,OAAO,aAAa,CAAC,EAAE,GAAG,uBAAe,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAkB,EAAE,IAAgB;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,SAAS;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,iGAAiG;IACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7G,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;QACpE,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,QAAQ;QACvC,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
package/dist/replays.d.ts CHANGED
@@ -1,3 +1,10 @@
1
1
  import type { ReplaysAPI } from './types';
2
+ /**
3
+ * Where a recording's chat is published: one static file per show, `<streaming id>.json`.
4
+ *
5
+ * Not the gateway's `/live-streaming/comments/{id}`, which answers 404 for every recording (checked on
6
+ * 2026-10-05 against company `cafaed78a1`: all 332 recordings 404 there, while 122 have a file here).
7
+ */
8
+ export declare const REPLAY_COMMENTS_URL = "https://cdn.apptile.io/assets/live-replay-comments";
2
9
  export declare const replays: ReplaysAPI;
3
10
  //# sourceMappingURL=replays.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replays.d.ts","sourceRoot":"","sources":["../src/replays.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAMV,UAAU,EACX,MAAM,SAAS,CAAC;AA6EjB,eAAO,MAAM,OAAO,EAAE,UA6ErB,CAAC"}
1
+ {"version":3,"file":"replays.d.ts","sourceRoot":"","sources":["../src/replays.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAMV,UAAU,EACX,MAAM,SAAS,CAAC;AA2DjB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,uDAAuD,CAAC;AA0BxF,eAAO,MAAM,OAAO,EAAE,UA6FrB,CAAC"}
package/dist/replays.js CHANGED
@@ -1,23 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replays = void 0;
3
+ exports.replays = exports.REPLAY_COMMENTS_URL = void 0;
4
4
  /**
5
5
  * Replays, from the live-selling gateway. A replay is an HLS recording plus stored product windows, so
6
6
  * the whole feature works without the live engine — nothing here touches Zego.
7
7
  */
8
8
  const client_1 = require("./client");
9
9
  const types_1 = require("./types");
10
+ const showNames_1 = require("./showNames");
11
+ const wire_1 = require("./wire");
10
12
  /** The service resolves the company from the header and never reads this path segment. */
11
13
  const WIDGET_PLACEHOLDER = 'app';
12
14
  /** `shoppable-feeds` is one generic endpoint; anything that is not a finished livestream is dropped. */
13
15
  const REPLAY_SF_TYPE = 'livestream_replay';
14
16
  /** Encoder poster, falling back to the lead product's image — a grey box reads as broken. */
15
17
  function toThumbnailUrl(raw) {
16
- var _a, _b, _c;
18
+ var _a, _b;
17
19
  return (raw.thumbnail ||
18
20
  raw.thumbnail_image ||
19
21
  raw.streaming_thumbnail_image ||
20
- ((_c = (_b = (_a = raw.product_info) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.product_thumbnail) === null || _c === void 0 ? void 0 : _c.url) ||
22
+ (0, wire_1.imageUrl)((_b = (_a = raw.product_info) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.product_thumbnail) ||
21
23
  null);
22
24
  }
23
25
  function toReplay(raw) {
@@ -33,8 +35,15 @@ function toReplay(raw) {
33
35
  publishedAt: (_f = (_e = raw.published_at) !== null && _e !== void 0 ? _e : raw.created_at) !== null && _f !== void 0 ? _f : null,
34
36
  };
35
37
  }
38
+ /**
39
+ * Where a recording's chat is published: one static file per show, `<streaming id>.json`.
40
+ *
41
+ * Not the gateway's `/live-streaming/comments/{id}`, which answers 404 for every recording (checked on
42
+ * 2026-10-05 against company `cafaed78a1`: all 332 recordings 404 there, while 122 have a file here).
43
+ */
44
+ exports.REPLAY_COMMENTS_URL = 'https://cdn.apptile.io/assets/live-replay-comments';
36
45
  function toCommentSource(source) {
37
- const upper = source === null || source === void 0 ? void 0 : source.toUpperCase();
46
+ const upper = source === null || source === void 0 ? void 0 : source.trim().toUpperCase();
38
47
  return types_1.COMMENT_SOURCES.includes(upper) ? upper : 'USER';
39
48
  }
40
49
  async function request(path, params) {
@@ -52,7 +61,10 @@ exports.replays = {
52
61
  // A feed with no playlist opens onto nothing — worse than one fewer card.
53
62
  .filter((feed) => !!(feed.streaming_url || feed.url))
54
63
  .map(toReplay),
55
- hasMore: (_e = (_d = (_c = body.data) === null || _c === void 0 ? void 0 : _c.pagination) === null || _d === void 0 ? void 0 : _d.has_more) !== null && _e !== void 0 ? _e : false,
64
+ // An empty page is the end, whatever the flag says: asking again would get the same nothing.
65
+ hasMore: feeds.length > 0 && ((_e = (_d = (_c = body.data) === null || _c === void 0 ? void 0 : _c.pagination) === null || _d === void 0 ? void 0 : _d.has_more) !== null && _e !== void 0 ? _e : false),
66
+ // Everything the gateway sent, kept or not: what the next page's offset moves by.
67
+ receivedCount: feeds.length,
56
68
  };
57
69
  },
58
70
  async segments(feedId) {
@@ -70,40 +82,58 @@ exports.replays = {
70
82
  .sort((a, b) => a.startMs - b.startMs);
71
83
  },
72
84
  async comments(streamingId) {
73
- var _a;
74
85
  if (!streamingId)
75
86
  return [];
76
- const body = await (0, client_1.liveSellingRequest)(`/live-streaming/comments/${streamingId}`, { params: { limit: 5000 } });
77
- return ((_a = body === null || body === void 0 ? void 0 : body.data) !== null && _a !== void 0 ? _a : [])
78
- .filter((raw) => !!(raw === null || raw === void 0 ? void 0 : raw.comment) && Number.isFinite(raw === null || raw === void 0 ? void 0 : raw.relative_timestamp))
87
+ // A plain static file: no company header, no envelope — but the same timeout as the gateway.
88
+ const url = `${exports.REPLAY_COMMENTS_URL}/${encodeURIComponent(streamingId)}.json`;
89
+ const rows = await (0, client_1.withRequestTimeout)(url, async (signal) => {
90
+ const response = await fetch(url, { signal });
91
+ // No file: nobody talked during the show (S3 answers 403 for a missing key, not 404).
92
+ if (response.status === 403 || response.status === 404)
93
+ return [];
94
+ if (!response.ok)
95
+ throw new client_1.LiveSellingError(response.status);
96
+ return (await response.json());
97
+ });
98
+ if (!Array.isArray(rows))
99
+ return [];
100
+ return rows
101
+ .filter((raw) => !!(raw === null || raw === void 0 ? void 0 : raw.body) && raw.relative_timestamp != null && Number.isFinite(Number(raw.relative_timestamp)))
79
102
  .map((raw, index) => {
80
103
  var _a;
81
104
  return ({
82
105
  atMs: Number(raw.relative_timestamp),
83
106
  comment: {
84
- id: raw.comment_id || `replay-${index}`,
85
- text: String(raw.comment),
86
- userName: ((_a = raw.user_name) === null || _a === void 0 ? void 0 : _a.trim()) || 'Anonymous',
107
+ // The file has no ids; a row's place in a static file doesn't change.
108
+ id: `replay-comment-${index}`,
109
+ text: String(raw.body),
110
+ // Never an email (`publicName`): the file keeps what each phone published. The host's rows say "You".
111
+ userName: (_a = (0, showNames_1.publicName)(raw.heading)) !== null && _a !== void 0 ? _a : 'Anonymous',
87
112
  source: toCommentSource(raw.source),
113
+ // Said by people who aren't watching now.
88
114
  isOwn: false,
89
115
  },
90
116
  });
91
117
  })
92
- // The endpoint sorts newest first; a replay needs them in the order said.
118
+ // Written in order, but a replay depends on it, so it is sorted rather than assumed.
93
119
  .sort((a, b) => a.atMs - b.atMs);
94
120
  },
95
121
  async incrementViews(feedId) {
96
- var _a;
97
122
  try {
98
123
  const config = (0, client_1.getConfig)();
99
- await fetch(`${config.apiUrl}/event-count/view-count`, {
100
- method: 'POST',
101
- headers: {
102
- 'x-company-id': config.companyId,
103
- 'X-Request-Source': (_a = config.requestSource) !== null && _a !== void 0 ? _a : 'APPTILE',
104
- 'Content-Type': 'application/json',
105
- },
106
- body: JSON.stringify({ shoppable_feed_id: feedId }),
124
+ const url = `${config.apiUrl}/event-count/view-count`;
125
+ await (0, client_1.withRequestTimeout)(url, (signal) => {
126
+ var _a;
127
+ return fetch(url, {
128
+ method: 'POST',
129
+ headers: {
130
+ 'x-company-id': config.companyId,
131
+ 'X-Request-Source': (_a = config.requestSource) !== null && _a !== void 0 ? _a : 'APPTILE',
132
+ 'Content-Type': 'application/json',
133
+ },
134
+ body: JSON.stringify({ shoppable_feed_id: feedId }),
135
+ signal,
136
+ });
107
137
  });
108
138
  }
109
139
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"replays.js","sourceRoot":"","sources":["../src/replays.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replays.js","sourceRoot":"","sources":["../src/replays.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -1,6 +1,8 @@
1
+ import type { LiveStreamStatus } from './types';
1
2
  import type { LiveSessionStatus, SessionAction, SessionReducerState } from './sessionTypes';
2
3
  /**
3
- * Transient cards carry their own lifetime; `prune` is driven by the session's 1s tick.
4
+ * Transient cards carry their own lifetime; `prune` drops them, dispatched by one timer set for the
5
+ * moment the next one runs out (`nextExpiryAt`).
4
6
  *
5
7
  * Ten seconds because that is `VISIBLE_DURATION_MS` in the host's own `SoldAnnouncementCards` widget,
6
8
  * and the two render the same room side by side — a sale that leaves a viewer's screen four seconds
@@ -19,13 +21,44 @@ export declare const CART_CARD_MS = 5000;
19
21
  export declare const initialSessionState: SessionReducerState;
20
22
  export declare function sessionReducer(state: SessionReducerState, action: SessionAction): SessionReducerState;
21
23
  /**
22
- * Milliseconds to the deadline on the host's clock. Goes negative once it has passed — signed on
23
- * purpose, so a ticker can wait out a grace period before closing the round itself.
24
+ * Whether a giveaway the record calls open is the one this device watched end: the same lot, and the
25
+ * same start. When either start is unknown (a record with no readable `giveawayStartTime`, or an end
26
+ * heard before any record read of that giveaway) the lot alone decides, so a stale record can't open it
27
+ * again. The cost: a repeat of that product that this device never heard start (and whose start time
28
+ * it can't read) isn't shown until the room starts it again.
24
29
  */
25
- export declare function remainingMs(state: SessionReducerState, now: number): number;
26
- /** What a timer shows. Clamped at zero rather than counting up past the deadline. */
27
- export declare function timeLeftMs(state: SessionReducerState, now: number): number;
30
+ export declare function isTheEndedGiveaway(ended: SessionReducerState['endedGiveaway'], storeProductId: string | null, startedAtMs: number | null): boolean;
31
+ /**
32
+ * When the open round closes, on this phone's clock (ms, like `Date.now()`): the host's deadline less
33
+ * the offset measured when the host last moved it. Null with no round open, or an open round with no
34
+ * deadline yet (a bid that reached this phone before the round's opening, carrying none).
35
+ *
36
+ * The session's `auction.closesAt`. It moves only when the host moves the deadline, so a component can
37
+ * count down to it on its own clock (`useAuctionCountdown`) without the session ticking.
38
+ */
39
+ export declare function roundClosesAt(state: SessionReducerState): number | null;
40
+ /**
41
+ * When the next sold card, cart card or reaction runs out (ms, on the clock their `createdAt` is on),
42
+ * or null with none on screen. The session sets one timer for this moment and drops it then (`prune`).
43
+ */
44
+ export declare function nextExpiryAt(state: SessionReducerState): number | null;
28
45
  export declare function deriveStatus(state: SessionReducerState, hasStream: boolean, joining: boolean, error: string | null,
29
46
  /** From the polled record — the server's own view, and the tiebreaker. */
30
47
  serverSaysLive: boolean): LiveSessionStatus;
48
+ /**
49
+ * Whether the off-air wait should run: a record read has finished, it shows nothing on air for the
50
+ * watched show (no record at all, or one that is not `live`), and the room is not reconnecting.
51
+ *
52
+ * Connecting is excluded on purpose — a dropped socket is never read as a finished show.
53
+ */
54
+ export declare function isNothingOnAir(input: {
55
+ hasRead: boolean;
56
+ streamStatus: LiveStreamStatus | null;
57
+ status: LiveSessionStatus;
58
+ }): boolean;
59
+ /**
60
+ * The status a session reports once the off-air wait has run out: `ended`, where `deriveStatus` alone
61
+ * would say `loading` for ever because no record ever arrived. An error is never hidden by it.
62
+ */
63
+ export declare function withOffAirSettled(status: LiveSessionStatus, settledOffAir: boolean): LiveSessionStatus;
31
64
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AASxB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAWjC,eAAO,MAAM,mBAAmB,EAAE,mBA+CjC,CAAC;AAsBF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,aAAa,GACpB,mBAAmB,CAuHrB;AAuSD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,qFAAqF;AACrF,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1E;AAuCD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GAAG,IAAI;AACpB,0EAA0E;AAC1E,cAAc,EAAE,OAAO,GACtB,iBAAiB,CAYnB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AASxB;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAWjC,eAAO,MAAM,mBAAmB,EAAE,mBAuDjC,CAAC;AA+BF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,aAAa,GACpB,mBAAmB,CAkLrB;AAuWD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,EAC3C,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,OAAO,CAIT;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAGvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAOtE;AAuCD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GAAG,IAAI;AACpB,0EAA0E;AAC1E,cAAc,EAAE,OAAO,GACtB,iBAAiB,CAYnB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,iBAAiB,CAAC;CAC3B,GAAG,OAAO,CAEV;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,GAAG,iBAAiB,CAEtG"}