@tiledev/sdk-apptile-live-selling 0.1.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/README.md +322 -0
- package/android/build.gradle +33 -0
- package/android/src/main/AndroidManifest.xml +7 -0
- package/android/src/main/java/expo/modules/livepip/LivePipModule.kt +310 -0
- package/app.plugin.js +3 -0
- package/dist/auctions.d.ts +3 -0
- package/dist/auctions.d.ts.map +1 -0
- package/dist/auctions.js +152 -0
- package/dist/auctions.js.map +1 -0
- package/dist/client.d.ts +63 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +154 -0
- package/dist/client.js.map +1 -0
- package/dist/clips.d.ts +3 -0
- package/dist/clips.d.ts.map +1 -0
- package/dist/clips.js +53 -0
- package/dist/clips.js.map +1 -0
- package/dist/commentLinks.d.ts +46 -0
- package/dist/commentLinks.d.ts.map +1 -0
- package/dist/commentLinks.js +120 -0
- package/dist/commentLinks.js.map +1 -0
- package/dist/engine.d.ts +13 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +40 -0
- package/dist/engine.js.map +1 -0
- package/dist/engine.native.d.ts +3 -0
- package/dist/engine.native.d.ts.map +1 -0
- package/dist/engine.native.js +815 -0
- package/dist/engine.native.js.map +1 -0
- package/dist/flags.d.ts +5 -0
- package/dist/flags.d.ts.map +1 -0
- package/dist/flags.js +61 -0
- package/dist/flags.js.map +1 -0
- package/dist/guest.d.ts +5 -0
- package/dist/guest.d.ts.map +1 -0
- package/dist/guest.js +89 -0
- package/dist/guest.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/liveSelling.d.ts +3 -0
- package/dist/liveSelling.d.ts.map +1 -0
- package/dist/liveSelling.js +44 -0
- package/dist/liveSelling.js.map +1 -0
- package/dist/nativeViewTag.d.ts +15 -0
- package/dist/nativeViewTag.d.ts.map +1 -0
- package/dist/nativeViewTag.js +23 -0
- package/dist/nativeViewTag.js.map +1 -0
- package/dist/pip.d.ts +14 -0
- package/dist/pip.d.ts.map +1 -0
- package/dist/pip.js +15 -0
- package/dist/pip.js.map +1 -0
- package/dist/pip.native.d.ts +11 -0
- package/dist/pip.native.d.ts.map +1 -0
- package/dist/pip.native.js +47 -0
- package/dist/pip.native.js.map +1 -0
- package/dist/polls.d.ts +11 -0
- package/dist/polls.d.ts.map +1 -0
- package/dist/polls.js +135 -0
- package/dist/polls.js.map +1 -0
- package/dist/react/LiveSellingProvider.d.ts +16 -0
- package/dist/react/LiveSellingProvider.d.ts.map +1 -0
- package/dist/react/LiveSellingProvider.js +49 -0
- package/dist/react/LiveSellingProvider.js.map +1 -0
- package/dist/react/LiveVideoTarget.d.ts +22 -0
- package/dist/react/LiveVideoTarget.d.ts.map +1 -0
- package/dist/react/LiveVideoTarget.js +73 -0
- package/dist/react/LiveVideoTarget.js.map +1 -0
- package/dist/react/index.d.ts +19 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +43 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/useAuction.d.ts +28 -0
- package/dist/react/useAuction.d.ts.map +1 -0
- package/dist/react/useAuction.js +66 -0
- package/dist/react/useAuction.js.map +1 -0
- package/dist/react/useAuctionBidGate.d.ts +48 -0
- package/dist/react/useAuctionBidGate.d.ts.map +1 -0
- package/dist/react/useAuctionBidGate.js +144 -0
- package/dist/react/useAuctionBidGate.js.map +1 -0
- package/dist/react/useAuctionWins.d.ts +51 -0
- package/dist/react/useAuctionWins.d.ts.map +1 -0
- package/dist/react/useAuctionWins.js +268 -0
- package/dist/react/useAuctionWins.js.map +1 -0
- package/dist/react/useClips.d.ts +9 -0
- package/dist/react/useClips.d.ts.map +1 -0
- package/dist/react/useClips.js +37 -0
- package/dist/react/useClips.js.map +1 -0
- package/dist/react/useLiveSession.d.ts +34 -0
- package/dist/react/useLiveSession.d.ts.map +1 -0
- package/dist/react/useLiveSession.js +876 -0
- package/dist/react/useLiveSession.js.map +1 -0
- package/dist/react/useLiveStreams.d.ts +9 -0
- package/dist/react/useLiveStreams.d.ts.map +1 -0
- package/dist/react/useLiveStreams.js +35 -0
- package/dist/react/useLiveStreams.js.map +1 -0
- package/dist/react/useOngoingLive.d.ts +13 -0
- package/dist/react/useOngoingLive.d.ts.map +1 -0
- package/dist/react/useOngoingLive.js +45 -0
- package/dist/react/useOngoingLive.js.map +1 -0
- package/dist/react/useReplays.d.ts +15 -0
- package/dist/react/useReplays.d.ts.map +1 -0
- package/dist/react/useReplays.js +66 -0
- package/dist/react/useReplays.js.map +1 -0
- package/dist/react/useStreamInfo.d.ts +21 -0
- package/dist/react/useStreamInfo.d.ts.map +1 -0
- package/dist/react/useStreamInfo.js +125 -0
- package/dist/react/useStreamInfo.js.map +1 -0
- package/dist/replays.d.ts +3 -0
- package/dist/replays.d.ts.map +1 -0
- package/dist/replays.js +114 -0
- package/dist/replays.js.map +1 -0
- package/dist/session.d.ts +23 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +464 -0
- package/dist/session.js.map +1 -0
- package/dist/sessionTypes.d.ts +462 -0
- package/dist/sessionTypes.d.ts.map +1 -0
- package/dist/sessionTypes.js +55 -0
- package/dist/sessionTypes.js.map +1 -0
- package/dist/streams.d.ts +67 -0
- package/dist/streams.d.ts.map +1 -0
- package/dist/streams.js +170 -0
- package/dist/streams.js.map +1 -0
- package/dist/types.d.ts +591 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/dist/viewer.d.ts +5 -0
- package/dist/viewer.d.ts.map +1 -0
- package/dist/viewer.js +66 -0
- package/dist/viewer.js.map +1 -0
- package/dist/wire.d.ts +155 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +73 -0
- package/dist/wire.js.map +1 -0
- package/dist/zego.d.ts +83 -0
- package/dist/zego.d.ts.map +1 -0
- package/dist/zego.js +13 -0
- package/dist/zego.js.map +1 -0
- package/expo-module.config.json +9 -0
- package/ios/LivePip.podspec +20 -0
- package/ios/LivePipController.swift +327 -0
- package/ios/LivePipModule.swift +35 -0
- package/package.json +91 -0
- package/plugin/build/index.d.ts +29 -0
- package/plugin/build/index.js +101 -0
- package/react/package.json +6 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@tiledev/sdk-apptile-live-selling` — public types.
|
|
3
|
+
*
|
|
4
|
+
* The whole surface a host app sees: the config it configures the client with, the domain shapes the
|
|
5
|
+
* namespaces return, the event union the live engine emits, and the namespace/engine interfaces the
|
|
6
|
+
* singleton is typed against.
|
|
7
|
+
*
|
|
8
|
+
* Nothing here imports React, React Native or Zego, so the pure data layer typechecks and runs in any
|
|
9
|
+
* JavaScript runtime. Product ids are Shopify GIDs (`gid://shopify/Product/…`), ready to hand to a
|
|
10
|
+
* Storefront client such as `@apptile/sdk-shopify`; this package never resolves a product itself.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Minimal async key/value store. Satisfied by React Native's AsyncStorage as-is, and by a thin
|
|
14
|
+
* wrapper over `window.localStorage`. Backs the durable per-install ids (viewer, guest), the remembered
|
|
15
|
+
* poll votes and the auction-terms acceptance.
|
|
16
|
+
*/
|
|
17
|
+
export interface StorageAdapter {
|
|
18
|
+
getItem(key: string): Promise<string | null> | string | null;
|
|
19
|
+
setItem(key: string, value: string): Promise<void> | void;
|
|
20
|
+
removeItem(key: string): Promise<void> | void;
|
|
21
|
+
}
|
|
22
|
+
/** Minimal logger. Satisfied by `console`. Defaults to a silent no-op. */
|
|
23
|
+
export interface Logger {
|
|
24
|
+
error(...args: unknown[]): void;
|
|
25
|
+
/**
|
|
26
|
+
* Something worth a developer's attention that the SDK has already handled.
|
|
27
|
+
*
|
|
28
|
+
* Optional, so a host app that only supplies `error` keeps working — those reports fall back to
|
|
29
|
+
* `error` rather than disappearing. Implement it to keep the two apart: `error` is "this failed", and
|
|
30
|
+
* `warn` is "the data was wrong and here is what was done about it", which is most of what this
|
|
31
|
+
* package has to say about a host dashboard's records. Reported at `error` level they read as crashes
|
|
32
|
+
* on a screen that is working, and a red box a shopper's own device shows for a merchant's typo
|
|
33
|
+
* teaches everyone to ignore red boxes.
|
|
34
|
+
*/
|
|
35
|
+
warn?(...args: unknown[]): void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The customer-account bearer transport, injected by the host app.
|
|
39
|
+
*
|
|
40
|
+
* The unpaid-auction-wins read is the ONE call in this package that needs the signed-in customer's own
|
|
41
|
+
* token (it reads a customer metafield) rather than the anonymous company header. The package never
|
|
42
|
+
* touches that token; the host passes a function that runs the query. Omit it and the wins helpers
|
|
43
|
+
* simply return empty — every other feature is fully anonymous.
|
|
44
|
+
*/
|
|
45
|
+
export type CustomerAccountRequest = <T>(query: string, variables?: Record<string, unknown>) => Promise<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Everything the client needs to talk to the Apptile live-selling gateway.
|
|
48
|
+
*
|
|
49
|
+
* `companyId` is Apptile's "brand id" — the only credential the plugin API takes. Every viewer endpoint
|
|
50
|
+
* is anonymous and the company header scopes the response; there is no token. Deliberately NOT the
|
|
51
|
+
* Shopify store id and not this app's Tile id.
|
|
52
|
+
*/
|
|
53
|
+
export interface LiveSellingConfig {
|
|
54
|
+
/** Gateway base URL, e.g. `https://live-selling.apptile.io`. No trailing slash. */
|
|
55
|
+
apiUrl: string;
|
|
56
|
+
/** The brand id. The only credential; sent as the `x-company-id` header. */
|
|
57
|
+
companyId: string;
|
|
58
|
+
/**
|
|
59
|
+
* The curated clip reel. NOT scoped by the company header, so a stale id from another tenant returns
|
|
60
|
+
* that tenant's clips with a 200 — the clips namespace early-returns `[]` when this is unset.
|
|
61
|
+
*/
|
|
62
|
+
videoCollectionId?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Platform-level Zego application id the gateway signs room tokens against. Only needed by the native
|
|
65
|
+
* live engine; the pure data layer never reads it.
|
|
66
|
+
*/
|
|
67
|
+
zegoAppId?: number;
|
|
68
|
+
/** Marks gateway traffic as first-party app rather than a web widget. Defaults to `"APPTILE"`. */
|
|
69
|
+
requestSource?: string;
|
|
70
|
+
/** Backs the durable ids, remembered votes and terms flag. Defaults to localStorage, else in-memory. */
|
|
71
|
+
storage?: StorageAdapter;
|
|
72
|
+
/** Defaults to a silent no-op. */
|
|
73
|
+
logger?: Logger;
|
|
74
|
+
/** See {@link CustomerAccountRequest}. Only the unpaid-wins helpers use it. */
|
|
75
|
+
customerAccountRequest?: CustomerAccountRequest;
|
|
76
|
+
/**
|
|
77
|
+
* Resolves lots to products and sells them. Only the session layer reads it; without one a stream's
|
|
78
|
+
* products stay unresolved and nothing is shoppable. See {@link CommerceAdapter}.
|
|
79
|
+
*/
|
|
80
|
+
commerce?: import('./sessionTypes').CommerceAdapter<unknown>;
|
|
81
|
+
/**
|
|
82
|
+
* Who is watching, beyond the per-install viewer id. Bidding and giveaway entry need a customer, so
|
|
83
|
+
* without this the session offers neither. See {@link IdentityAdapter}.
|
|
84
|
+
*/
|
|
85
|
+
identity?: import('./sessionTypes').IdentityAdapter;
|
|
86
|
+
}
|
|
87
|
+
export type LiveStreamStatus = 'live' | 'scheduled' | 'ended';
|
|
88
|
+
/** How one reaction tap animates: `single` is one emoji, `multiple` a burst. Per stream. */
|
|
89
|
+
export type ReactionStyle = 'single' | 'multiple';
|
|
90
|
+
export interface LiveStreamProduct {
|
|
91
|
+
storeProductId: string;
|
|
92
|
+
/** Ready for a Storefront `products.byIds`. */
|
|
93
|
+
productGid: string;
|
|
94
|
+
name: string;
|
|
95
|
+
price: string | null;
|
|
96
|
+
thumbnailUrl: string | null;
|
|
97
|
+
isCurrent: boolean;
|
|
98
|
+
/** Ms offset the host switched to this product; drives replay seeking. */
|
|
99
|
+
startedAtMs: number | null;
|
|
100
|
+
/** Auction only: opening bid, or null on a lot the host has not priced. */
|
|
101
|
+
baseBidPrice: number | null;
|
|
102
|
+
/** Auction only: rounds already won on this lot. Non-zero means bidding closed. */
|
|
103
|
+
winnerCount: number;
|
|
104
|
+
}
|
|
105
|
+
export type GiveawayStatus = 'active' | 'ended';
|
|
106
|
+
export interface GiveawayEntry {
|
|
107
|
+
/** Bare Shopify customer id, not a GID. */
|
|
108
|
+
userId: string;
|
|
109
|
+
displayName: string;
|
|
110
|
+
/** Withdrawn entries stay in the record; only active ones count. */
|
|
111
|
+
active: boolean;
|
|
112
|
+
}
|
|
113
|
+
export interface LiveGiveaway {
|
|
114
|
+
storeProductId: string;
|
|
115
|
+
variantId: string | null;
|
|
116
|
+
status: GiveawayStatus;
|
|
117
|
+
productName: string;
|
|
118
|
+
thumbnailUrl: string | null;
|
|
119
|
+
variantTitle: string | null;
|
|
120
|
+
/** Retail price, struck through beside FREE. */
|
|
121
|
+
variantPrice: string | null;
|
|
122
|
+
/** The roster the host keeps on the lot, for the winner-roll animation. */
|
|
123
|
+
entrantNames: string[];
|
|
124
|
+
entries: GiveawayEntry[];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A replay timeline entry — when a product was on screen during a recording.
|
|
128
|
+
*
|
|
129
|
+
* Passed through in the gateway's raw (snake_case) shape, exactly as the app's `LiveStream` carried it:
|
|
130
|
+
* the reducer that seeks a replay reads these directly, so mapping them here would only rename fields a
|
|
131
|
+
* caller then has to rename back.
|
|
132
|
+
*/
|
|
133
|
+
export interface ProductSegment {
|
|
134
|
+
product_id: string;
|
|
135
|
+
/** Milliseconds from the recording's reference time. */
|
|
136
|
+
start_time: number;
|
|
137
|
+
sequence: number;
|
|
138
|
+
}
|
|
139
|
+
export interface LiveStream {
|
|
140
|
+
streamingId: string;
|
|
141
|
+
roomId: string;
|
|
142
|
+
/** Provided by the service during a cohost mix; never build `${id}_mixed` by hand. */
|
|
143
|
+
mixedStreamId: string | null;
|
|
144
|
+
title: string;
|
|
145
|
+
description: string | null;
|
|
146
|
+
thumbnailUrl: string | null;
|
|
147
|
+
status: LiveStreamStatus;
|
|
148
|
+
isAuction: boolean;
|
|
149
|
+
/** Epoch ms the stream went live, or null when it has not started. */
|
|
150
|
+
startedAtMs: number | null;
|
|
151
|
+
scheduledAtMs: number | null;
|
|
152
|
+
hostName: string | null;
|
|
153
|
+
/** The host inflates the displayed audience by this factor. 1 means untouched. */
|
|
154
|
+
viewerMultiplier: number;
|
|
155
|
+
reactionStyle: ReactionStyle;
|
|
156
|
+
/** Device ids the host has shadow-muted, seeded from the record. */
|
|
157
|
+
mutedDeviceIds: string[];
|
|
158
|
+
products: LiveStreamProduct[];
|
|
159
|
+
productSegments: ProductSegment[];
|
|
160
|
+
/** Auction only: highest bid the host will accept, or null for no ceiling. */
|
|
161
|
+
bidCap: number | null;
|
|
162
|
+
/** Auction only: ms a late bid adds to the clock. 0 when the host disabled extended bidding. */
|
|
163
|
+
extendedBiddingMs: number;
|
|
164
|
+
/** Every giveaway the host has run on this stream, active and finished. */
|
|
165
|
+
giveaways: LiveGiveaway[];
|
|
166
|
+
}
|
|
167
|
+
export declare const COMMENT_SOURCES: readonly ["USER", "MODERATOR", "HOST", "TIP"];
|
|
168
|
+
export type CommentSource = (typeof COMMENT_SOURCES)[number];
|
|
169
|
+
/** Open Graph metadata for a link the host pasted. Present on host comments only. */
|
|
170
|
+
export interface CommentUrlPreview {
|
|
171
|
+
url: string;
|
|
172
|
+
title: string | null;
|
|
173
|
+
description: string | null;
|
|
174
|
+
image: string | null;
|
|
175
|
+
}
|
|
176
|
+
export interface LiveComment {
|
|
177
|
+
id: string;
|
|
178
|
+
text: string;
|
|
179
|
+
userName: string;
|
|
180
|
+
source: CommentSource;
|
|
181
|
+
/** Present only for TIP comments. */
|
|
182
|
+
tipAmount?: string;
|
|
183
|
+
urlPreview?: CommentUrlPreview;
|
|
184
|
+
/** True for comments this device sent, so the UI can align them like the host's. */
|
|
185
|
+
isOwn: boolean;
|
|
186
|
+
}
|
|
187
|
+
export interface SoldAnnouncement {
|
|
188
|
+
productName: string;
|
|
189
|
+
variantLabel: string | null;
|
|
190
|
+
quantity: number;
|
|
191
|
+
productImage: string | null;
|
|
192
|
+
}
|
|
193
|
+
export interface LivePollOption {
|
|
194
|
+
optionId: string;
|
|
195
|
+
text: string;
|
|
196
|
+
}
|
|
197
|
+
export interface LivePoll {
|
|
198
|
+
pollUuid: string;
|
|
199
|
+
streamingId: string | null;
|
|
200
|
+
question: string;
|
|
201
|
+
options: LivePollOption[];
|
|
202
|
+
/** The option ids exactly as they arrived, by normalised id — a vote must echo the original type. */
|
|
203
|
+
wireOptionIds: Record<string, string | number>;
|
|
204
|
+
}
|
|
205
|
+
export interface LivePollResults {
|
|
206
|
+
pollUuid: string | null;
|
|
207
|
+
totalVotes: number;
|
|
208
|
+
/** Votes by option id. A missing key means nobody has picked that option yet. */
|
|
209
|
+
votes: Record<string, number>;
|
|
210
|
+
}
|
|
211
|
+
/** Whoever holds the current high bid. `userId` is the bare Shopify customer id for a signed-in bidder. */
|
|
212
|
+
export interface BidLeader {
|
|
213
|
+
userId: string;
|
|
214
|
+
userName: string;
|
|
215
|
+
}
|
|
216
|
+
export interface AuctionWin {
|
|
217
|
+
userName: string;
|
|
218
|
+
winningBid: number;
|
|
219
|
+
storeProductId: string | null;
|
|
220
|
+
}
|
|
221
|
+
/** One lot a customer won and has not yet checked out. */
|
|
222
|
+
export interface AuctionWinItem {
|
|
223
|
+
productGid: string;
|
|
224
|
+
variantId: string | null;
|
|
225
|
+
/** What the customer owes. 0 for a giveaway. */
|
|
226
|
+
winningBid: number;
|
|
227
|
+
isGiveaway: boolean;
|
|
228
|
+
discountCode: string | null;
|
|
229
|
+
}
|
|
230
|
+
export interface AuctionWins {
|
|
231
|
+
/** The stream the tab is settled against — `auction_id` on the checkout cart. */
|
|
232
|
+
streamingId: string;
|
|
233
|
+
items: AuctionWinItem[];
|
|
234
|
+
}
|
|
235
|
+
export interface Replay {
|
|
236
|
+
id: string;
|
|
237
|
+
streamingId: string;
|
|
238
|
+
title: string;
|
|
239
|
+
/** HLS playlist. */
|
|
240
|
+
videoUrl: string | null;
|
|
241
|
+
thumbnailUrl: string | null;
|
|
242
|
+
/** Shopify product GIDs. */
|
|
243
|
+
productIds: string[];
|
|
244
|
+
viewCount: number;
|
|
245
|
+
publishedAt: string | null;
|
|
246
|
+
}
|
|
247
|
+
export interface ReplayFeed {
|
|
248
|
+
replays: Replay[];
|
|
249
|
+
hasMore: boolean;
|
|
250
|
+
}
|
|
251
|
+
export interface ReplaySegment {
|
|
252
|
+
productGid: string;
|
|
253
|
+
startMs: number;
|
|
254
|
+
endMs: number;
|
|
255
|
+
}
|
|
256
|
+
export interface ReplayComment {
|
|
257
|
+
comment: LiveComment;
|
|
258
|
+
atMs: number;
|
|
259
|
+
}
|
|
260
|
+
export interface ClipItem {
|
|
261
|
+
/** `shoppable_feed_id`. The clip's own id. */
|
|
262
|
+
id: string;
|
|
263
|
+
title: string;
|
|
264
|
+
/** HLS playlist of the recording this was cut from, with the inert trim params removed. */
|
|
265
|
+
videoUrl: string;
|
|
266
|
+
posterUrl: string | null;
|
|
267
|
+
/** Where the cut begins. `null` means play from the top. */
|
|
268
|
+
startMs: number | null;
|
|
269
|
+
/** Where it ends. `null` means run to the end of the recording. */
|
|
270
|
+
endMs: number | null;
|
|
271
|
+
/** Shopify product GIDs, in the collection's order. */
|
|
272
|
+
productIds: string[];
|
|
273
|
+
}
|
|
274
|
+
export type MixerLayout = 'SPLIT' | 'PIP_HOST_MAIN' | 'PIP_GUEST_MAIN';
|
|
275
|
+
/** What the service hands back on accept. Everything needed to publish, and nothing more. */
|
|
276
|
+
export interface GuestCredentials {
|
|
277
|
+
token: string;
|
|
278
|
+
appId: number;
|
|
279
|
+
userId: string;
|
|
280
|
+
userName: string;
|
|
281
|
+
roomId: string;
|
|
282
|
+
streamingId: string;
|
|
283
|
+
slot: number;
|
|
284
|
+
/** What this guest publishes. */
|
|
285
|
+
guestStreamId: string;
|
|
286
|
+
/** The composited output viewers watch; the guest never plays it (it would hear itself). */
|
|
287
|
+
mixedStreamId: string;
|
|
288
|
+
thumbnailUrl: string | null;
|
|
289
|
+
status: 'waiting' | 'active';
|
|
290
|
+
}
|
|
291
|
+
export interface LiveCompanyFlags {
|
|
292
|
+
/** The host may attach link cards to comments. */
|
|
293
|
+
commentUrlCard: boolean;
|
|
294
|
+
/** Guests can be invited on air. */
|
|
295
|
+
cohost: boolean;
|
|
296
|
+
/** Moderators can shadow-mute a viewer. */
|
|
297
|
+
shadowComments: boolean;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Domain events the live session emits, translated out of Zego's channels.
|
|
301
|
+
*
|
|
302
|
+
* The wire shapes are dictated by the host, misspellings included (`REACTION_ANNOUCEMENT`,
|
|
303
|
+
* `CART_ANNOUCEMENT`). Anything unrecognised surfaces as `unknown` so a new host-side message is
|
|
304
|
+
* visible rather than silently dropped.
|
|
305
|
+
*/
|
|
306
|
+
export type LiveEvent = {
|
|
307
|
+
type: 'roomState';
|
|
308
|
+
connected: boolean;
|
|
309
|
+
} | {
|
|
310
|
+
type: 'streamEnded';
|
|
311
|
+
} | {
|
|
312
|
+
type: 'publisher';
|
|
313
|
+
publishing: boolean;
|
|
314
|
+
} | {
|
|
315
|
+
type: 'hostMedia';
|
|
316
|
+
kind: 'video' | 'audio';
|
|
317
|
+
broken: boolean;
|
|
318
|
+
} | {
|
|
319
|
+
type: 'hostVideo';
|
|
320
|
+
receiving: boolean;
|
|
321
|
+
} | {
|
|
322
|
+
type: 'viewers';
|
|
323
|
+
count: number;
|
|
324
|
+
} | {
|
|
325
|
+
type: 'productChange';
|
|
326
|
+
storeProductId: string;
|
|
327
|
+
} | {
|
|
328
|
+
type: 'productRemoved';
|
|
329
|
+
storeProductId: string;
|
|
330
|
+
} | {
|
|
331
|
+
type: 'viewerMultiplier';
|
|
332
|
+
multiplier: number;
|
|
333
|
+
} | {
|
|
334
|
+
type: 'comment';
|
|
335
|
+
comment: LiveComment;
|
|
336
|
+
} | {
|
|
337
|
+
type: 'reaction';
|
|
338
|
+
reactionUrl: string;
|
|
339
|
+
userName: string;
|
|
340
|
+
} | {
|
|
341
|
+
type: 'cartAnnouncement';
|
|
342
|
+
productTitle: string;
|
|
343
|
+
userName: string;
|
|
344
|
+
} | {
|
|
345
|
+
type: 'sold';
|
|
346
|
+
announcement: SoldAnnouncement;
|
|
347
|
+
} | {
|
|
348
|
+
type: 'pollStarted';
|
|
349
|
+
poll: LivePoll;
|
|
350
|
+
results: LivePollResults | null;
|
|
351
|
+
} | {
|
|
352
|
+
type: 'pollResults';
|
|
353
|
+
results: LivePollResults;
|
|
354
|
+
} | {
|
|
355
|
+
type: 'pollEnded';
|
|
356
|
+
} | {
|
|
357
|
+
type: 'biddingStarted';
|
|
358
|
+
endsAtMs: number;
|
|
359
|
+
serverNowMs: number;
|
|
360
|
+
storeProductId: string | null;
|
|
361
|
+
moderatorId: string | null;
|
|
362
|
+
} | {
|
|
363
|
+
type: 'bidInfo';
|
|
364
|
+
highestBid: number;
|
|
365
|
+
nextBid: number;
|
|
366
|
+
endsAtMs: number | null;
|
|
367
|
+
serverNowMs: number;
|
|
368
|
+
leader: BidLeader | null;
|
|
369
|
+
} | {
|
|
370
|
+
type: 'biddingClosed';
|
|
371
|
+
} | {
|
|
372
|
+
type: 'auctionWon';
|
|
373
|
+
win: AuctionWin;
|
|
374
|
+
} | {
|
|
375
|
+
type: 'giveawayStarted';
|
|
376
|
+
storeProductId: string;
|
|
377
|
+
variantId: string | null;
|
|
378
|
+
entryCount: number | null;
|
|
379
|
+
} | {
|
|
380
|
+
type: 'giveawayEnded';
|
|
381
|
+
storeProductId: string;
|
|
382
|
+
winnerName: string | null;
|
|
383
|
+
} | {
|
|
384
|
+
type: 'giveawayEntries';
|
|
385
|
+
count: number;
|
|
386
|
+
} | {
|
|
387
|
+
type: 'mutedUsers';
|
|
388
|
+
deviceIds: string[];
|
|
389
|
+
} | {
|
|
390
|
+
type: 'guestAdmitted';
|
|
391
|
+
slot: number;
|
|
392
|
+
mixerLayout: MixerLayout | null;
|
|
393
|
+
} | {
|
|
394
|
+
type: 'guestRemoved';
|
|
395
|
+
slot: number;
|
|
396
|
+
} | {
|
|
397
|
+
type: 'guestMutedByHost';
|
|
398
|
+
slot: number;
|
|
399
|
+
muted: boolean;
|
|
400
|
+
} | {
|
|
401
|
+
type: 'guestCameraOffByHost';
|
|
402
|
+
slot: number;
|
|
403
|
+
off: boolean;
|
|
404
|
+
} | {
|
|
405
|
+
type: 'mixerLayout';
|
|
406
|
+
layout: MixerLayout;
|
|
407
|
+
} | {
|
|
408
|
+
type: 'guestMode';
|
|
409
|
+
active: boolean;
|
|
410
|
+
} | {
|
|
411
|
+
type: 'videoBound';
|
|
412
|
+
tag: number | null;
|
|
413
|
+
} | {
|
|
414
|
+
type: 'mixer';
|
|
415
|
+
active: boolean;
|
|
416
|
+
} | {
|
|
417
|
+
type: 'unknown';
|
|
418
|
+
channel: string;
|
|
419
|
+
payload: unknown;
|
|
420
|
+
};
|
|
421
|
+
export type LiveEventListener = (event: LiveEvent) => void;
|
|
422
|
+
/** What the engine needs to enter and play a room. */
|
|
423
|
+
export interface JoinParams {
|
|
424
|
+
streamingId: string;
|
|
425
|
+
roomId: string;
|
|
426
|
+
mixedStreamId: string | null;
|
|
427
|
+
viewerId: string;
|
|
428
|
+
viewerName: string;
|
|
429
|
+
token: string;
|
|
430
|
+
mutedDeviceIds: string[];
|
|
431
|
+
}
|
|
432
|
+
export interface SendBidParams {
|
|
433
|
+
bidAmount: number;
|
|
434
|
+
bidder: {
|
|
435
|
+
userId: string;
|
|
436
|
+
userName: string;
|
|
437
|
+
email: string | null;
|
|
438
|
+
};
|
|
439
|
+
moderatorId: string | null;
|
|
440
|
+
/** Where in the round the bid was placed, on the host's clock. */
|
|
441
|
+
placedAtMs: number;
|
|
442
|
+
variantId: string | null;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Sole owner of the Zego engine. Two builds satisfy this: the native one (`engine.native.ts`) drives
|
|
446
|
+
* `zego-express-engine-reactnative`, and the default one (`engine.ts`) is a no-op so the web bundle,
|
|
447
|
+
* the editor preview and any non-native runtime never import the native SDK. Metro resolves the split.
|
|
448
|
+
*/
|
|
449
|
+
export interface LiveEngine {
|
|
450
|
+
subscribe(listener: LiveEventListener): () => void;
|
|
451
|
+
setBackgroundVideoEnabled(enabled: boolean): Promise<void>;
|
|
452
|
+
join(params: JoinParams): Promise<void>;
|
|
453
|
+
leave(): Promise<void>;
|
|
454
|
+
bindView(reactTag: number | null, force?: boolean): Promise<void>;
|
|
455
|
+
refreshPlayback(): Promise<void>;
|
|
456
|
+
stopPlayback(): Promise<void>;
|
|
457
|
+
joinAsGuest(credentials: GuestCredentials, previewTag: number | null): Promise<void>;
|
|
458
|
+
bindGuestPreview(reactTag: number | null): Promise<void>;
|
|
459
|
+
bindGuestHostView(reactTag: number | null): Promise<void>;
|
|
460
|
+
setGuestMicMuted(muted: boolean): Promise<void>;
|
|
461
|
+
setGuestCameraOff(off: boolean): Promise<void>;
|
|
462
|
+
flipGuestCamera(front: boolean): Promise<void>;
|
|
463
|
+
leaveGuest(): Promise<void>;
|
|
464
|
+
setMutedDeviceIds(ids: string[]): void;
|
|
465
|
+
setViewerName(name: string | null): void;
|
|
466
|
+
setMuted(muted: boolean): void;
|
|
467
|
+
sendComment(text: string, deviceId: string): Promise<LiveComment | null>;
|
|
468
|
+
sendReaction(reactionUrl: string): Promise<void>;
|
|
469
|
+
sendBid(params: SendBidParams): Promise<void>;
|
|
470
|
+
sendCartAnnouncement(productTitle: string): Promise<void>;
|
|
471
|
+
destroy(): Promise<void>;
|
|
472
|
+
/** True for the no-op default build, false for the native Zego one. */
|
|
473
|
+
readonly isNoop: boolean;
|
|
474
|
+
}
|
|
475
|
+
export interface LiveStreamsAPI {
|
|
476
|
+
/** Every stream the tenant has, soonest first. */
|
|
477
|
+
list(): Promise<LiveStream[]>;
|
|
478
|
+
/** The stream currently on air, or null. The first with status `'live'`. */
|
|
479
|
+
ongoing(): Promise<LiveStream | null>;
|
|
480
|
+
/** One stream, public. Refreshes giveaway/mixer state without refetching the list. */
|
|
481
|
+
byId(streamingId: string): Promise<LiveStream | null>;
|
|
482
|
+
/** The anonymous Zego room credential for this viewer. */
|
|
483
|
+
zegoToken(viewerId: string, streamingId: string): Promise<string | null>;
|
|
484
|
+
}
|
|
485
|
+
export interface AuctionsAPI {
|
|
486
|
+
/** Records a bid against the stream. Fire-and-forget; the round is decided by the host's broadcast. */
|
|
487
|
+
recordBid(params: {
|
|
488
|
+
streamingId: string;
|
|
489
|
+
amount: number;
|
|
490
|
+
bidderId: string;
|
|
491
|
+
bidderName: string;
|
|
492
|
+
storeProductId: string | null;
|
|
493
|
+
}): Promise<void>;
|
|
494
|
+
/** Enters the open giveaway. Needs a signed-in customer (full Shopify customer GID). */
|
|
495
|
+
enterGiveaway(params: {
|
|
496
|
+
streamingId: string;
|
|
497
|
+
storeProductId: string;
|
|
498
|
+
customerGid: string;
|
|
499
|
+
displayName: string;
|
|
500
|
+
viewerId: string;
|
|
501
|
+
}): Promise<boolean>;
|
|
502
|
+
/** Whether this install has accepted the bidding rules. Shown once before the first bid. */
|
|
503
|
+
hasAcceptedTerms(): Promise<boolean>;
|
|
504
|
+
acceptTerms(): Promise<void>;
|
|
505
|
+
/** Streams the customer owes on. Needs `customerAccountRequest`; `[]` without it. Never throws. */
|
|
506
|
+
unpaidStreamIds(): Promise<string[]>;
|
|
507
|
+
/** Everything the customer has won and not checked out. Needs `customerAccountRequest`; null without it. */
|
|
508
|
+
wins(): Promise<AuctionWins | null>;
|
|
509
|
+
/** Whether bidding is blocked by an unsettled previous auction. Pure. */
|
|
510
|
+
isBiddingBlocked(unpaidStreamIds: string[], streamingId: string | null): boolean;
|
|
511
|
+
}
|
|
512
|
+
export interface PollsAPI {
|
|
513
|
+
/** Casting a vote — the only poll request a viewer makes. */
|
|
514
|
+
vote(params: {
|
|
515
|
+
streamingId: string;
|
|
516
|
+
pollUuid: string;
|
|
517
|
+
viewerId: string;
|
|
518
|
+
optionId: string | number;
|
|
519
|
+
}): Promise<void>;
|
|
520
|
+
/** Which option this install voted for, from storage. Null if it has not voted. */
|
|
521
|
+
loadVotedOption(pollUuid: string): Promise<string | null>;
|
|
522
|
+
/** Remember the vote — the service does not dedupe, so only the app can. */
|
|
523
|
+
rememberVote(pollUuid: string, optionId: string): Promise<void>;
|
|
524
|
+
/** Forget it, so a failed request does not lock the viewer out of a poll they never voted in. */
|
|
525
|
+
forgetVote(pollUuid: string): Promise<void>;
|
|
526
|
+
}
|
|
527
|
+
export interface ClipsAPI {
|
|
528
|
+
/** The reel, in the collection's order. Empty when no `videoCollectionId` is configured. */
|
|
529
|
+
list(): Promise<ClipItem[]>;
|
|
530
|
+
}
|
|
531
|
+
export interface ReplaysAPI {
|
|
532
|
+
list(limit?: number, offset?: number): Promise<ReplayFeed>;
|
|
533
|
+
/** Product windows for a recording, keyed by shoppable_feed_id. */
|
|
534
|
+
segments(feedId: string): Promise<ReplaySegment[]>;
|
|
535
|
+
/** Stored comments for a recording, keyed by streaming_id, in the order said. */
|
|
536
|
+
comments(streamingId: string): Promise<ReplayComment[]>;
|
|
537
|
+
/** Records a play. Fire-and-forget. */
|
|
538
|
+
incrementViews(feedId: string): Promise<void>;
|
|
539
|
+
}
|
|
540
|
+
export interface GuestAPI {
|
|
541
|
+
/** Redeem an invite and take the room as a guest. Rejects (with a showable message) when spent/expired. */
|
|
542
|
+
acceptInvite(params: {
|
|
543
|
+
inviteToken: string;
|
|
544
|
+
streamingId?: string;
|
|
545
|
+
userName: string;
|
|
546
|
+
}): Promise<GuestCredentials | null>;
|
|
547
|
+
/** Give up the slot. The invite token is the only credential. */
|
|
548
|
+
leaveSlot(inviteToken: string): Promise<void>;
|
|
549
|
+
/** A stable per-install id for appearing as a guest. Distinct from the viewer id. */
|
|
550
|
+
userId(): Promise<string>;
|
|
551
|
+
}
|
|
552
|
+
export interface FlagsAPI {
|
|
553
|
+
/** Per-company feature flags. Cached for the process; all false until the first read lands. */
|
|
554
|
+
fetch(): Promise<LiveCompanyFlags>;
|
|
555
|
+
}
|
|
556
|
+
export interface ViewerAPI {
|
|
557
|
+
/** A stable per-install viewer id, reused across streams and launches. Not the customer id. */
|
|
558
|
+
id(): Promise<string>;
|
|
559
|
+
/** The name a signed-out shopper comments under, from storage. Null means "no name given". */
|
|
560
|
+
loadName(): Promise<string | null>;
|
|
561
|
+
/** Synchronous read; null until `loadName` has run once. */
|
|
562
|
+
cachedName(): string | null;
|
|
563
|
+
/** Persist a name. Returns it normalised, or null if the input was empty. */
|
|
564
|
+
saveName(raw: string): Promise<string | null>;
|
|
565
|
+
/** Trim, collapse and cap a raw name. */
|
|
566
|
+
normaliseName(raw: string): string;
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* The imperative, typed live-selling client — a singleton driven by one `companyId` brand-id config.
|
|
570
|
+
*
|
|
571
|
+
* Mirrors `@apptile/sdk-shopify`'s `shopify` facade: `configure` once, then read the namespaces. The
|
|
572
|
+
* `engine` is the optional Zego boundary and is a no-op off-device.
|
|
573
|
+
*/
|
|
574
|
+
export interface LiveSellingClient {
|
|
575
|
+
/** Must be called before any namespace method. Safe to call again to replace the config. */
|
|
576
|
+
configure(config: LiveSellingConfig): void;
|
|
577
|
+
isReady(): boolean;
|
|
578
|
+
/** The configured brand id, or null before `configure`. */
|
|
579
|
+
companyId(): string | null;
|
|
580
|
+
streams: LiveStreamsAPI;
|
|
581
|
+
auctions: AuctionsAPI;
|
|
582
|
+
polls: PollsAPI;
|
|
583
|
+
clips: ClipsAPI;
|
|
584
|
+
replays: ReplaysAPI;
|
|
585
|
+
guest: GuestAPI;
|
|
586
|
+
flags: FlagsAPI;
|
|
587
|
+
viewer: ViewerAPI;
|
|
588
|
+
/** The Zego live engine. No-op unless the native build is bundled. */
|
|
589
|
+
engine: LiveEngine;
|
|
590
|
+
}
|
|
591
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `@tiledev/sdk-apptile-live-selling` — public types.
|
|
4
|
+
*
|
|
5
|
+
* The whole surface a host app sees: the config it configures the client with, the domain shapes the
|
|
6
|
+
* namespaces return, the event union the live engine emits, and the namespace/engine interfaces the
|
|
7
|
+
* singleton is typed against.
|
|
8
|
+
*
|
|
9
|
+
* Nothing here imports React, React Native or Zego, so the pure data layer typechecks and runs in any
|
|
10
|
+
* JavaScript runtime. Product ids are Shopify GIDs (`gid://shopify/Product/…`), ready to hand to a
|
|
11
|
+
* Storefront client such as `@apptile/sdk-shopify`; this package never resolves a product itself.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.COMMENT_SOURCES = void 0;
|
|
15
|
+
// ─── Comments & announcements ────────────────────────────────────────────────
|
|
16
|
+
exports.COMMENT_SOURCES = ['USER', 'MODERATOR', 'HOST', 'TIP'];
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AA6KH,gFAAgF;AAEnE,QAAA,eAAe,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC"}
|
package/dist/viewer.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../src/viewer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKzC,wFAAwF;AACxF,eAAO,MAAM,eAAe,KAAK,CAAC;AASlC,eAAO,MAAM,MAAM,EAAE,SA0CpB,CAAC"}
|