fix(install): публичный адрес LiveKit вычисляется после TLS_ENABLED

Установщик падал на 'TLS_ENABLED: unbound variable': расчёт LIVEKIT_PUBLIC_URL
стоял выше определения TLS_ENABLED. Значение перенесено после блока TLS,
dry-run проходит.
This commit is contained in:
2026-09-20 18:13:04 +03:00
parent ecd52c11d3
commit ca34d05377
33 changed files with 2505 additions and 71 deletions
+21
View File
@@ -1,5 +1,7 @@
import { parseGuildEmojiList } from './emojis';
import { userStatuses, type Channel, type UserStatus } from './types';
import type { GatewayUser } from './gateway';
import type { GuildEmoji } from './emojis';
import type { Message, MessageAttachment, MessageReaction } from './messages';
/**
@@ -51,6 +53,11 @@ export interface RoleEvent {
role_id: string;
}
export interface GuildEmojisUpdateEvent {
guild_id: string;
emojis: GuildEmoji[];
}
function asRecord(value: unknown): Record<string, unknown> | null {
return typeof value === 'object' && value !== null ? (value as Record<string, unknown>) : null;
}
@@ -182,6 +189,20 @@ export function parseRoleEvent(value: unknown): RoleEvent | null {
return { guild_id: guildId, role_id: roleId };
}
/**
* `GUILD_EMOJIS_UPDATE`: набор эмодзи сервера изменился (загрузка,
* переименование, удаление). Список приходит целиком — тем же форматом, что
* и в снапшоте READY, поэтому заменяем его в сторе, а не мержим.
*/
export function parseGuildEmojisUpdate(value: unknown): GuildEmojisUpdateEvent | null {
const record = asRecord(value);
const guildId = asString(record?.['guild_id']);
if (record === null || guildId === undefined) {
return null;
}
return { guild_id: guildId, emojis: parseGuildEmojiList(record['emojis']) };
}
/** Канал из `CHANNEL_CREATE`/`CHANNEL_UPDATE` — та же форма, что в REST. */
export function parseChannelPayload(value: unknown): Channel | null {
const record = asRecord(value);