ravejs
v1.11.9
Published
API Wrapper on TypeScript for app Rave - Watch Party
Downloads
1,873
Maintainers
Readme
Содержание
Возможности
RaveJS обладает рядом преимуществ:
- Модульная архитектура
- Простота в использовании
- Поддержка всех необходимых функций
- Первая библиотека на TypeScript для Rave API
Начало работы
Чтобы начать использовать RaveJS, выполните следующие шаги:
- Инициализируйте npm-пакет:
npm init- Установите TypeScript глобально (опционально):
npm install -g typescript- Создайте конфигурацию TypeScript:
tsc --init- Установите RaveJS:
npm install ravejsИспользование
Базовая авторизация
import { Rave } from 'ravejs';
(async () => {
const rave = new Rave({
credentials: {
deviceId: 'ваш_device_id',
token: 'ваш_токен'
}
});
console.log(`Авторизован как ${(await rave.getAccount()).id}`);
})();Документация API
Rave(config: RaveConfig)
Главный класс для взаимодействия с API Rave.
Конфигурация (RaveConfig)
credentials?:{ deviceId: string, token: string }— данные для авторизацииenableLogging?:boolean— включить логированиеaccount?:Account— профиль пользователя после авторизации
Свойства экземпляра Rave
token: string— Bearer-токен авторизацииJWT: string— JWT-токен для Web Mesh APIaccount: Account— информация о профиле пользователяproxy?: string— прокси для запросов (поддерживаются SOCKS-прокси; можно задать через сеттер)
Методы экземпляра Rave
refreshJWT(deviceId?: string): Promise<string>— обновить JWT-токенgetAccount(): Promise<Account>— получить данные авторизованного пользователяproxyIsAlive = async (): Promise<boolean>- Проверить, работает ли прокси
Фабрики
RaveJS использует модульную архитектуру, основанную на фабриках.
AuthFactory
Фабрика для авторизации и аутентификации. Доступна через rave.auth.
Методы AuthFactory
sendMagicLink(email: string, language = 'ru'): Promise<{ stateId: string }>
Отправить «волшебную» ссылку на почту для входа или регистрации.checkRegisterState(stateId: string): Promise<CheckRegisterStateResponse>
Проверить статус регистрации поstateId.
Ответ:
{
authenticated: boolean,
isSecondFactorLogin: boolean,
oauth: {
accessToken: string,
idToken: string,
refreshToken: string,
expiresIn: string,
tokenType: string
},
user: {
createdAt: string,
updatedAt: string,
issuer: string,
userId: string,
identifier: string,
email: string
}
}parseUserCredentials(idToken: string, email: string): Promise<{ objectId: string; createdAt: string; username: string; sessionToken: string }>
Извлечь учётные данные изidTokenи email.mojoLogin(email: string, parseId: string, parseToken: string, name: string, deviceId?: string, language = 'ru'): Promise<{ data: { isValid: boolean; newUser: boolean; suggestedHandles: string[] } }>
Вход через сервис Mojo.login(stateId: string, name?: string, deviceId?: string, language = 'ru'): Promise<AuthenticateResponse>
Упрощённый метод входа (комбинирует предыдущие шаги).
Ответ (AuthenticateResponse):
{
isNewUser: boolean,
email: string,
username: string,
deviceId: string,
token: string
}register(email: string, name: string, deviceId?: string, language = 'ru'): Promise<RegisterResponse>
Регистрация нового пользователя (аналогичноlogin, но гарантирует создание аккаунта).
MeshFactory
Фабрика для работы с мешами (комнатами просмотра). Доступна через rave.mesh.
Методы MeshFactory
get(meshId: string): Promise<GetMeshResponse>
Получить информацию о меше по ID.
Ответ (GetMeshResponse.data):
{
blurT?: boolean;
category: string;
channel: number;
createdAt: string;
currentState: 'play' | 'paus';
explicit: boolean;
id: string;
isFriend: boolean;
isLocal: boolean;
isPublic: boolean;
kickMode: string;
maturity: string;
mediaUrl: string;
originator: number;
playMode: string;
position: number;
server: string;
shareLink: string;
thumbnails?: {
channel?: string;
standard?: string;
animated?: string;
maxres?: string;
medium?: string;
default?: string;
high?: string;
};
time: number;
videoAuthor: string;
videoDuration: number;
videoProvider: string;
videoPublishedAt: string;
videoThumbnail: string;
videoTitle: string;
videoUrl: string;
vikiPass: boolean;
voipMode: string;
users: {
avatar: string;
country: string;
displayName?: string;
handle?: string;
id: number;
lang?: string;
lat: number;
lng: number;
name: string;
}[];
}getByLink(meshLink: string): Promise<GetMeshResponse>
Получить меш по публичной ссылке (shareLink).getMany(params: GetManyMeshesParams): Promise<GetMeshResponse[]>
Получить список мешей.
Параметры (GetManyMeshesParams):
{
isPublic?: boolean;
limit: number;
hasFriends: boolean;
local: boolean;
hasInvited: boolean;
language?: string;
}join(meshId: string): Promise<MeshSocket>
Присоединиться к мешу. Возвращает экземплярMeshSocketдля взаимодействия через WebSocket.
ThreadFactory
Фабрика для работы с переписками. Доступна через rave.thread.
Методы ThreadFactory
getMany(): Promise<Thread[]>
Получить все переписки.
СтруктураThread:
{
expiryMode: number;
isFriend: boolean;
myself: number;
opposingUser: number;
spokenLangs: string[];
threadId: string;
}create(userId: number): Promise<Thread>
Создать новую переписку с пользователем.sendMessage(threadId: string, content: string): Promise<SendMessageResponse>
Отправить сообщение в переписку.
Ответ (SendMessageResponse.data):
{
correlateId: string;
threadId: string;
messageType: string;
originator: number;
messageBody: {
content: string;
detectedLang: string;
id: string;
translations: Record<string, string>;
}
}UserFactory
Фабрика для работы с пользователями. Доступна через rave.user.
Методы UserFactory
get(userId: number): Promise<GetUserResponse>
Получить профиль пользователя.
Ответ (GetUserResponse.data):
{
bio: {
bio?: string;
metadata: { position: number; privacy: string };
};
profile: {
avatar: string;
country: string;
displayName?: string;
handle?: string;
};
}sendFriendship(userId: number): Promise<FriendshipResponse>
Отправить запрос на добавление в друзья.
Ответ (FriendshipResponse.data):
{
fromUserId: number;
state: string;
toUserId: number;
}acceptFriendship(userId: number): Promise<void>
Принять запрос в друзья.declineFriendship(userId: number): Promise<void>
Отклонить запрос в друзья.edit(builder: EditProfileBuilder): Promise<EditProfileResponse>
Редактировать профиль.
Параметры (EditProfileBuilder):
{
displayAvatar?: string;
displayName?: string;
handle?: string;
}**Ответ (`EditProfileResponse.data`)** — объект `User`.getAvatarUpload(): Promise<GetAvatarUploadResponse>
Получить URL для загрузки аватара.
Ответ (GetAvatarUploadResponse.data):
{
expiresAt: string;
fileName: string;
mime: string;
uploadUrl: string;
}uploadOnUrl(uploadUrl: string, image: Buffer): Promise<void>
Загрузить изображение по полученному URL.uploadAvatar(image: Buffer): Promise<string>
Упрощённый метод: получить URL и загрузить аватар за один вызов. ВозвращаетdisplayAvatar(новый URL аватара).
MeshSocket
Класс для работы с WebSocket-соединением в меше.
Методы и свойства MeshSocket
onclose(handler: () => Promise<void>): void
Обработчик закрытия соединения.onerror(handler: () => Promise<void>): void
Обработчик ошибок.onmessage(handler: (data: string) => Promise<void>): void
Обработчик входящих сообщений (сырой JSON-строки).sendMessage(content: string): void
Отправить сообщение в меш (например, команды управления воспроизведением).leave(): void
Покинуть меш (закрывает сокет).
Участие в разработке
Приветствуются pull request'ы и предложения по улучшению!
Если вы используете мои генераторы кода — напишите мне в личные сообщения Telegram.
Лицензия
RaveJS распространяется под лицензией MIT. Подробнее см. в файле LICENSE.
