UNPKG

tiktok-live-connector

Version:

Node.js library to receive live stream chat events like comments and gifts from TikTok LIVE.

109 lines 3.7 kB
import { AxiosRequestConfig } from 'axios'; import * as tikTokSchema from '../types/tiktok-schema'; import { MessageFns, ProtoMessageFetchResult, WebcastPushFrame } from '../types/tiktok-schema'; import { ClientOptions } from 'ws'; export type TikTokLiveConnectionOptions = { processInitialData: boolean; fetchRoomInfoOnConnect: boolean; enableExtendedGiftInfo: boolean; enableRequestPolling: boolean; requestPollingIntervalMs: number; sessionId: string | null; ttTargetIdc: string | null; signApiKey: string | null; authenticateWs: boolean; preferredAgentIds: string[]; connectWithUniqueId: boolean; disableEulerFallbacks: boolean; webClientParams: Record<string, string>; webClientHeaders: Record<string, string>; webClientOptions: AxiosRequestConfig; wsClientHeaders: Record<string, string>; wsClientParams: Record<string, string>; wsClientOptions: ClientOptions; signedWebSocketProvider?: (props: FetchSignedWebSocketParams) => Promise<ProtoMessageFetchResult>; }; export type RoomInfo = Record<string, any> & { data: { status: number; }; }; export type RoomGiftInfo = any; export type FetchSignedWebSocketParams = { roomId?: string; uniqueId?: string; preferredAgentIds?: string[]; ttTargetIdc?: string; sessionId?: string; }; export type WebcastHttpClientConfig = { customHeaders: Record<string, string>; axiosOptions: AxiosRequestConfig; clientParams: Record<string, string>; authenticateWs?: boolean; signApiKey?: string; }; export type DecodedWebcastPushFrame = WebcastPushFrame & { protoMessageFetchResult?: ProtoMessageFetchResult; }; export interface IWebcastConfig { TIKTOK_HOST_WEB: string; TIKTOK_HOST_WEBCAST: string; TIKTOK_HTTP_ORIGIN: string; DEFAULT_HTTP_CLIENT_COOKIES: Record<string, string>; DEFAULT_HTTP_CLIENT_PARAMS: Record<string, string>; DEFAULT_HTTP_CLIENT_OPTIONS: AxiosRequestConfig; DEFAULT_WS_CLIENT_PARAMS_APPEND_PARAMETER: string; DEFAULT_HTTP_CLIENT_HEADERS: Record<string, string> & { 'User-Agent': string; }; DEFAULT_WS_CLIENT_PARAMS: Record<string, string>; DEFAULT_WS_CLIENT_HEADERS: Record<string, string> & { 'User-Agent': string; }; } type ExtractMessageType<T> = T extends MessageFns<infer U> ? U : never; export type WebcastMessage = { [K in keyof typeof tikTokSchema as ExtractMessageType<typeof tikTokSchema[K]> extends never ? never : K]: ExtractMessageType<typeof tikTokSchema[K]>; }; type HasCommon<T> = T extends { common: any; } ? T : never; export type WebcastEventMessage = { [K in keyof WebcastMessage as HasCommon<WebcastMessage[K]> extends never ? never : K]: WebcastMessage[K]; }; export interface IWebcastDeserializeConfig { skipMessageTypes: (keyof WebcastEventMessage)[]; } export interface IWebcastDeserializeConfig { skipMessageTypes: (keyof WebcastEventMessage)[]; } export type DecodedData = { [K in keyof WebcastEventMessage]: { type: K; data: WebcastEventMessage[K]; }; }[keyof WebcastEventMessage]; declare module '../types/tiktok-schema' { interface BaseProtoMessage { decodedData?: DecodedData; } interface WebcastGiftMessage { extendedGiftInfo?: any; } } export type WebcastHttpClientRequestParams = Omit<Omit<AxiosRequestConfig, 'url'>, 'baseURL'> & { host: string; path: string; params?: Record<string, string>; signRequest: boolean; }; export type WebSocketParams = { [key: string]: string; compress?: string; room_id: string; internal_ext: string; cursor: string; }; export {}; //# sourceMappingURL=client.d.ts.map