refactor: update import statements to use .js extensions

- Changed all import statements across the project to include the .js extension for consistency and to comply with ES module standards.
- Updated imports in various files including bootstrap.ts, shutdown.ts, config.ts, and many others.
- Ensured that all related modules and types are correctly imported with the new extension.
This commit is contained in:
Asep Haryana Saputra
2026-05-21 12:03:31 +00:00
parent 4cd92303ef
commit 0ef6fc8d31
56 changed files with 208 additions and 193 deletions
+11 -11
View File
@@ -1,15 +1,15 @@
import { Client } from "discord.js-selfbot-v13";
import { config } from "../config";
import { closeDatabase, initializeDatabase } from "../database/drizzle";
import { createDiscordClientOptions } from "../discordClientOptions";
import { createChildLogger } from "../logger";
import { startPendingAIAnalysisWorker } from "../moderation/aiAnalyzer";
import { syncBacklogMessages } from "../moderation/backlogSync";
import { registerMessageCapture } from "../moderation/messageCapture";
import { discordPlayer } from "../player";
import { VoiceController } from "../voiceController";
import { startWebserver } from "../webserver";
import { createGracefulShutdown } from "./shutdown";
import { config } from "../config.js";
import { closeDatabase, initializeDatabase } from "../database/drizzle.js";
import { createDiscordClientOptions } from "../discordClientOptions.js";
import { createChildLogger } from "../logger.js";
import { startPendingAIAnalysisWorker } from "../moderation/aiAnalyzer.js";
import { syncBacklogMessages } from "../moderation/backlogSync.js";
import { registerMessageCapture } from "../moderation/messageCapture.js";
import { discordPlayer } from "../player.js";
import { VoiceController } from "../voiceController.js";
import { startWebserver } from "../webserver.js";
import { createGracefulShutdown } from "./shutdown.js";
export async function initializeApp() {
const logger = createChildLogger("bot");
+4 -4
View File
@@ -1,8 +1,8 @@
import type { Client } from "discord.js-selfbot-v13";
import type { closeDatabase } from "../database/drizzle";
import type { createChildLogger } from "../logger";
import type { discordPlayer } from "../player";
import type { VoiceController } from "../voiceController";
import type { closeDatabase } from "../database/drizzle.js";
import type { createChildLogger } from "../logger.js";
import type { discordPlayer } from "../player.js";
import type { VoiceController } from "../voiceController.js";
type Logger = ReturnType<typeof createChildLogger>;
type CloseDatabase = typeof closeDatabase;
+1 -1
View File
@@ -1,5 +1,5 @@
import { z } from "zod";
import { ConfigError } from "./errors.ts";
import { ConfigError } from "./errors.js";
const configSchema = z
.object({
+3 -3
View File
@@ -2,9 +2,9 @@ import Database from "better-sqlite3";
import { drizzle as drizzleSqlite } from "drizzle-orm/better-sqlite3";
import { drizzle as drizzlePostgres } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { config } from "../config.ts";
import { createChildLogger } from "../logger.ts";
import * as schema from "./schema.ts";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import * as schema from "./schema.js";
const logger = createChildLogger("drizzle");
+3 -3
View File
@@ -3,9 +3,9 @@ import Database from "better-sqlite3";
import { drizzle as drizzleSqlite } from "drizzle-orm/better-sqlite3";
import { migrate as migrateSqlite } from "drizzle-orm/better-sqlite3/migrator";
import { migrate as migratePostgres } from "drizzle-orm/node-postgres/migrator";
import { config } from "../config";
import { createChildLogger } from "../logger";
import { closeDatabase, initializeDatabase } from "./drizzle";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import { closeDatabase, initializeDatabase } from "./drizzle.js";
const logger = createChildLogger("migrate");
+1 -1
View File
@@ -14,7 +14,7 @@ import {
sqliteTable,
text as sqliteText,
} from "drizzle-orm/sqlite-core";
import { config } from "../config.ts";
import { config } from "../config.js";
// PostgreSQL Schema
// ==================
+3 -3
View File
@@ -1,11 +1,11 @@
import { desc, eq } from "drizzle-orm";
import { createChildLogger } from "../logger";
import { getDatabase } from "./drizzle";
import { createChildLogger } from "../logger.js";
import { getDatabase } from "./drizzle.js";
import {
type VoiceRecording,
type VoiceRecordingInsert,
voiceRecordingsTable,
} from "./schema";
} from "./schema.js";
const logger = createChildLogger("voice-recording-repo");
+14 -14
View File
@@ -8,20 +8,20 @@ import express, {
type Response,
} from "express";
import helmet from "helmet";
import { AppError } from "../errors";
import type { createChildLogger } from "../logger";
import type { MediaController } from "../media/mediaController";
import type { ModerationBroadcaster } from "../moderation/types";
import { createAnalysisRoutes } from "../routes/analysisRoutes";
import { createMediaRoutes } from "../routes/mediaRoutes";
import { createMessageRoutes } from "../routes/messageRoutes";
import { createRecordingsRoutes } from "../routes/recordingsRoutes";
import { createSyncRoutes } from "../routes/syncRoutes";
import { createUIStateRoutes } from "../routes/uiStateRoutes";
import { createVoiceRoutes } from "../routes/voiceRoutes";
import type { SharedUIStatePatch } from "../state/uiState";
import type { VoiceController } from "../voiceController";
import { createHealthRoutes } from "./health";
import { AppError } from "../errors.js";
import type { createChildLogger } from "../logger.js";
import type { MediaController } from "../media/mediaController.js";
import type { ModerationBroadcaster } from "../moderation/types.js";
import { createAnalysisRoutes } from "../routes/analysisRoutes.js";
import { createMediaRoutes } from "../routes/mediaRoutes.js";
import { createMessageRoutes } from "../routes/messageRoutes.js";
import { createRecordingsRoutes } from "../routes/recordingsRoutes.js";
import { createSyncRoutes } from "../routes/syncRoutes.js";
import { createUIStateRoutes } from "../routes/uiStateRoutes.js";
import { createVoiceRoutes } from "../routes/voiceRoutes.js";
import type { SharedUIStatePatch } from "../state/uiState.js";
import type { VoiceController } from "../voiceController.js";
import { createHealthRoutes } from "./health.js";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
+1 -1
View File
@@ -1,5 +1,5 @@
import { Router } from "express";
import { getMetrics, uptimeGauge } from "../metrics";
import { getMetrics, uptimeGauge } from "../metrics.js";
export interface HealthRoutesOptions {
adminPassword: string;
+12 -12
View File
@@ -1,25 +1,25 @@
import http from "node:http";
import type { Client } from "discord.js-selfbot-v13";
import { config } from "../config";
import { createChildLogger } from "../logger";
import { MediaController } from "../media/mediaController";
import { createScreenShareController } from "../media/screenShareController";
import { createBroadcaster } from "../moderation/broadcaster";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import { MediaController } from "../media/mediaController.js";
import { createScreenShareController } from "../media/screenShareController.js";
import { createBroadcaster } from "../moderation/broadcaster.js";
import {
initializeMediaSettings,
persistMediaSettings,
} from "../state/mediaSettings";
import { createSharedUIStateStore } from "../state/uiState";
import { Streamer } from "../streaming";
import type { VoiceController } from "../voiceController";
} from "../state/mediaSettings.js";
import { createSharedUIStateStore } from "../state/uiState.js";
import { Streamer } from "../streaming/index.js";
import type { VoiceController } from "../voiceController.js";
import {
exposeActiveUserGlobal,
exposeModerationGlobals,
exposePcmBroadcastGlobal,
exposeVideoBroadcastGlobal,
} from "../ws/broadcastGlobals";
import { startWebSocketServer } from "../ws/server";
import { createHttpApp } from "./app";
} from "../ws/broadcastGlobals.js";
import { startWebSocketServer } from "../ws/server.js";
import { createHttpApp } from "./app.js";
const serverLogger = createChildLogger("webserver");
+2 -2
View File
@@ -2,8 +2,8 @@ import "./mock-crc";
import "libsodium-wrappers";
import "@snazzah/davey";
import "dotenv/config";
import { initializeApp } from "./app/bootstrap";
import { createChildLogger } from "./logger";
import { initializeApp } from "./app/bootstrap.js";
import { createChildLogger } from "./logger.js";
const logger = createChildLogger("bot");
+1 -1
View File
@@ -1,7 +1,7 @@
import fs from "node:fs";
import path from "node:path";
import winston from "winston";
import { formatLogMetadata, serializeLogValue } from "./loggerSerialization";
import { formatLogMetadata, serializeLogValue } from "./loggerSerialization.js";
const isDev = process.env.NODE_ENV !== "production";
const logLevel = process.env.LOG_LEVEL || (isDev ? "debug" : "info");
+7 -7
View File
@@ -1,8 +1,8 @@
import { AppError } from "../errors";
import { createChildLogger } from "../logger";
import { discordPlayer } from "../player";
import { MediaQueue } from "./mediaQueue";
import { resolveMediaSource } from "./mediaResolver";
import { AppError } from "../errors.js";
import { createChildLogger } from "../logger.js";
import { discordPlayer } from "../player.js";
import { MediaQueue } from "./mediaQueue.js";
import { resolveMediaSource } from "./mediaResolver.js";
import type {
MediaMode,
MediaState,
@@ -12,8 +12,8 @@ import type {
ResolvedMediaSource,
ScreenShareController,
ScreenSharePlayback,
} from "./mediaTypes";
import { createMusicPlayer } from "./musicPlayer";
} from "./mediaTypes.js";
import { createMusicPlayer } from "./musicPlayer.js";
const logger = createChildLogger("mediaController");
+1 -1
View File
@@ -3,7 +3,7 @@ import type {
MediaQueueItem,
MediaState,
ResolvedMediaSource,
} from "./mediaTypes";
} from "./mediaTypes.js";
export class MediaQueue {
private current: MediaQueueItem | null = null;
+4 -4
View File
@@ -1,9 +1,9 @@
import { existsSync, statSync } from "node:fs";
import path from "node:path";
import { AppError } from "../errors";
import type { MediaMode, ResolvedMediaSource } from "./mediaTypes";
import { createPlayDlResolver } from "./playDlResolver";
import { createYtDlp, type YtDlpClient } from "./ytdlp";
import { AppError } from "../errors.js";
import type { MediaMode, ResolvedMediaSource } from "./mediaTypes.js";
import { createPlayDlResolver } from "./playDlResolver.js";
import { createYtDlp, type YtDlpClient } from "./ytdlp.js";
type PlayDlResolver = ReturnType<typeof createPlayDlResolver>;
+2 -2
View File
@@ -1,13 +1,13 @@
import type { ChildProcessWithoutNullStreams } from "node:child_process";
import { spawn as nodeSpawn } from "node:child_process";
import { StreamType } from "@discordjs/voice";
import { discordPlayer } from "../player";
import { discordPlayer } from "../player.js";
import type {
DiscordAudioPlayer,
MusicPlayback,
MusicPlayer,
ResolvedMediaSource,
} from "./mediaTypes";
} from "./mediaTypes.js";
export interface MusicPlayerDependencies {
spawn?: typeof nodeSpawn;
+8 -8
View File
@@ -1,12 +1,12 @@
import { AppError } from "../errors";
import { createChildLogger } from "../logger";
import { discordPlayer } from "../player";
import { playPreparedStream, Streamer } from "../streaming";
import { AppError } from "../errors.js";
import { createChildLogger } from "../logger.js";
import { discordPlayer } from "../player.js";
import { playPreparedStream, Streamer } from "../streaming/index.js";
const logger = createChildLogger("screen-share");
import type { DiscordPlayerOwner, ScreenSharePlayback } from "./mediaTypes";
import { createYtDlp } from "./ytdlp";
import type { DiscordPlayerOwner, ScreenSharePlayback } from "./mediaTypes.js";
import { createYtDlp } from "./ytdlp.js";
export interface ScreenShareVoiceStatus {
connected: boolean;
@@ -105,8 +105,8 @@ export function createScreenShareController(
let stopped = false;
const playFn = dependencies.useTranscoder
? (await import("../streaming")).playTranscodedPreparedStream
: (await import("../streaming")).playPreparedStream;
? (await import("../streaming/index.js")).playTranscodedPreparedStream
: (await import("../streaming/index.js")).playPreparedStream;
const done = playFn(directUrl, session, {
fps: 30,
+2 -2
View File
@@ -1,6 +1,6 @@
import { NextFunction, Request, Response } from "express";
import { AppError } from "./errors";
import { createChildLogger } from "./logger";
import { AppError } from "./errors.js";
import { createChildLogger } from "./logger.js";
const logger = createChildLogger("middleware");
+6 -6
View File
@@ -1,14 +1,14 @@
import { parentPort } from "node:worker_threads";
import { config } from "../config.ts";
import { initializeDatabase } from "../database/drizzle.ts";
import { buildConversationPromptMessages } from "./conversationContext.ts";
import { runModerationAnalysis } from "./llmModerationClient.ts";
import { config } from "../config.js";
import { initializeDatabase } from "../database/drizzle.js";
import { buildConversationPromptMessages } from "./conversationContext.js";
import { runModerationAnalysis } from "./llmModerationClient.js";
import {
getAttachmentsForMessages,
getConversationContextBefore,
updateMessageAIAnalysis,
} from "./messageStore.ts";
import type { MessageRecord } from "./types";
} from "./messageStore.js";
import type { MessageRecord } from "./types.js";
let dbInitialized = false;
+5 -5
View File
@@ -1,16 +1,16 @@
import { Worker } from "node:worker_threads";
import { config } from "../config";
import { createChildLogger } from "../logger";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import {
getMessageById,
getPendingConversationKeys,
getPendingMessagesByConversation,
} from "./messageStore";
} from "./messageStore.js";
import type {
AnalysisQueueStatus,
MessageRecord,
ModerationBroadcaster,
} from "./types";
} from "./types.js";
const logger = createChildLogger("ai-analyzer");
@@ -163,7 +163,7 @@ async function runAnalysisInWorker(
): Promise<AnalysisWorkerResponse> {
return new Promise((resolve, reject) => {
const worker = new Worker(
new URL("./aiAnalysisWorker.ts", import.meta.url),
new URL("./aiAnalysisWorker.js", import.meta.url),
{ execArgv: process.execArgv },
);
+4 -4
View File
@@ -1,11 +1,11 @@
import { config } from "../config";
import { createChildLogger } from "../logger";
import { uploadToTele } from "../uploader/teleUpload";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import { uploadToTele } from "../uploader/teleUpload.js";
import {
updateAttachmentAsFailedUpload,
updateAttachmentAsUploaded,
updateAttachmentDiscordUrl,
} from "./messageStore";
} from "./messageStore.js";
const logger = createChildLogger("attachment-uploader");
+3 -3
View File
@@ -1,7 +1,7 @@
import type { Channel, Client, Message } from "discord.js-selfbot-v13";
import { config } from "../config";
import { createChildLogger } from "../logger";
import { captureMessage } from "./messageCapture";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import { captureMessage } from "./messageCapture.js";
const logger = createChildLogger("backlog-sync");
+2 -2
View File
@@ -1,12 +1,12 @@
import type { WebSocket } from "ws";
import { createChildLogger } from "../logger";
import { createChildLogger } from "../logger.js";
import type {
AnalysisQueueStatus,
AttachmentRecord,
MediaState,
MessageRecord,
ModerationWsEvent,
} from "./types";
} from "./types.js";
export type BroadcasterClient = Pick<WebSocket, "readyState" | "send">;
+1 -1
View File
@@ -1,4 +1,4 @@
import type { MessageRecord } from "./types";
import type { MessageRecord } from "./types.js";
export interface ConversationContextInput {
contextBefore: MessageRecord[];
+20 -5
View File
@@ -1,8 +1,8 @@
import OpenAI from "openai";
import { config } from "../config.ts";
import { createChildLogger } from "../logger.ts";
import { retryWithBackoff } from "../retry.ts";
import type { AnalysisResult, AttachmentRecord, MessageRecord } from "./types";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import { retryWithBackoff } from "../retry.js";
import type { AnalysisResult, AttachmentRecord, MessageRecord } from "./types.js";
const log = createChildLogger("llmModerationClient");
const openai = new OpenAI({
@@ -35,9 +35,13 @@ const openai = new OpenAI({
}
}
const headers = new Headers(response.headers ?? undefined);
headers.set("Content-Type", "application/json");
headers.delete("Content-Length");
return new Response(normalizedBody, {
status: response.status ?? 200,
headers: response.headers ?? { "Content-Type": "application/json" },
headers,
});
},
});
@@ -592,6 +596,17 @@ Return ONLY valid JSON, no other text.`;
? parseError.message
: String(parseError);
lastInvalidContent = content;
log.warn(
{
error: lastParseError,
contentLength: content.length,
contentPreview: content.substring(0, 1000),
fullContent: content,
targetIds,
model: config.AI_LLM_MODEL,
},
"Failed to parse moderation response from LLM",
);
throw parseError;
}
},
+8 -8
View File
@@ -1,22 +1,22 @@
import type { Client, Message } from "discord.js-selfbot-v13";
import { config } from "../config";
import { createChildLogger } from "../logger";
import { getModerationBroadcaster } from "../ws/broadcastGlobals";
import { queueMessageAnalysis } from "./aiAnalyzer";
import { processAttachmentUpload } from "./attachmentUploader";
import { config } from "../config.js";
import { createChildLogger } from "../logger.js";
import { getModerationBroadcaster } from "../ws/broadcastGlobals.js";
import { queueMessageAnalysis } from "./aiAnalyzer.js";
import { processAttachmentUpload } from "./attachmentUploader.js";
import {
getDisplayContent,
getMessageLocation,
getMessageMetadata,
} from "./messageMetadata";
} from "./messageMetadata.js";
import {
getMessageById,
insertAttachment,
updateMessageAsDeleted,
updateMessageAsEdited,
upsertMessageForCapture,
} from "./messageStore";
import type { AttachmentRecord, MessageRecord } from "./types";
} from "./messageStore.js";
import type { AttachmentRecord, MessageRecord } from "./types.js";
const logger = createChildLogger("message-capture");
+6 -6
View File
@@ -9,16 +9,16 @@ import {
type SQL,
sql,
} from "drizzle-orm";
import { getDatabase } from "../database/drizzle.ts";
import { attachmentsTable, messagesTable } from "../database/schema.ts";
import { createChildLogger } from "../logger.ts";
import { decodeCursor, encodeCursor } from "./pagination.ts";
import { getDatabase } from "../database/drizzle.js";
import { attachmentsTable, messagesTable } from "../database/schema.js";
import { createChildLogger } from "../logger.js";
import { decodeCursor, encodeCursor } from "./pagination.js";
import type {
AttachmentRecord,
MessageQuery,
MessageRecord,
PageResult,
} from "./types";
} from "./types.js";
const logger = createChildLogger("message-store");
@@ -105,7 +105,7 @@ function pageMessages(
return { data, nextCursor };
}
export { decodeCursor, encodeCursor } from "./pagination.ts";
export { decodeCursor, encodeCursor } from "./pagination.js";
export async function insertMessage(message: MessageRecord): Promise<void> {
try {
+1 -1
View File
@@ -1,4 +1,4 @@
import type { BroadcasterClient, ModerationBroadcaster } from "./broadcaster";
import type { BroadcasterClient, ModerationBroadcaster } from "./broadcaster.js";
export type AIStatus = "pending" | "clean" | "warn" | "flagged" | "error";
+1 -1
View File
@@ -1,6 +1,6 @@
import fs from "fs";
import path from "path";
import { buildMuxFfmpegArgs, runFfmpeg } from "./audio/ffmpegProcess";
import { buildMuxFfmpegArgs, runFfmpeg } from "./audio/ffmpegProcess.js";
const recordingsDir = process.env.RECORDINGS_DIR ?? "./recordings";
+3 -3
View File
@@ -2,9 +2,9 @@ import { and, asc, eq, lt, sql } from "drizzle-orm";
import {
getDatabase as getDrizzleDatabase,
initializeDatabase,
} from "./database/drizzle";
import { muxerJobsTable, uiStateTable } from "./database/schema";
import { createChildLogger } from "./logger";
} from "./database/drizzle.js";
import { muxerJobsTable, uiStateTable } from "./database/schema.js";
import { createChildLogger } from "./logger.js";
const logger = createChildLogger("muxer-queue");
+1 -1
View File
@@ -1,6 +1,6 @@
import fs from "fs";
import path from "path";
import { buildMuxFfmpegArgs, runFfmpeg } from "./audio/ffmpegProcess";
import { buildMuxFfmpegArgs, runFfmpeg } from "./audio/ffmpegProcess.js";
const recordingsDir = process.env.RECORDINGS_DIR ?? "./recordings";
+1 -1
View File
@@ -11,7 +11,7 @@ import {
import type {
DiscordPlayerOwner,
DiscordPlayOptions,
} from "./media/mediaTypes";
} from "./media/mediaTypes.js";
export class DiscordPlayer {
private player: AudioPlayer;
+11 -11
View File
@@ -10,24 +10,24 @@ import {
VoiceConnectionStatus,
} from "@discordjs/voice";
import type { Client, VoiceChannel } from "discord.js-selfbot-v13";
import { config } from "./config";
import { createChildLogger } from "./logger";
import { PacketFilter } from "./packetFilter";
import { subscribeToAudioStream } from "./recorder/audioStream";
import { OpusDecoder } from "./recorder/decoder";
import { config } from "./config.js";
import { createChildLogger } from "./logger.js";
import { PacketFilter } from "./packetFilter.js";
import { subscribeToAudioStream } from "./recorder/audioStream.js";
import { OpusDecoder } from "./recorder/decoder.js";
import {
collectUserMetadata,
createSegmentMetadata,
} from "./recorder/metadata";
import { SegmentManager } from "./recorder/segment";
} from "./recorder/metadata.js";
import { SegmentManager } from "./recorder/segment.js";
import {
createRecordingSession,
finalizeRecordingSession,
type RecordingSession,
} from "./recorder/sessionRecording";
import { uploadRecordingSegment } from "./recorder/uploader";
import { retryWithBackoff } from "./retry";
import type { PcmBroadcaster } from "./types";
} from "./recorder/sessionRecording.js";
import { uploadRecordingSegment } from "./recorder/uploader.js";
import { retryWithBackoff } from "./retry.js";
import type { PcmBroadcaster } from "./types.js";
const logger = createChildLogger("recorder");
+1 -1
View File
@@ -1,5 +1,5 @@
import { EndBehaviorType, type VoiceReceiver } from "@discordjs/voice";
import { config } from "../config";
import { config } from "../config.js";
export interface AudioStreamHandlers {
onPacket: (chunk: Buffer) => void;
+1 -1
View File
@@ -1,6 +1,6 @@
import { createRequire } from "node:module";
import * as prism from "prism-media";
import { config } from "../config";
import { config } from "../config.js";
const require = createRequire(import.meta.url);
+2 -2
View File
@@ -1,7 +1,7 @@
import path from "node:path";
import type { Client, VoiceChannel } from "discord.js-selfbot-v13";
import { config } from "../config";
import type { SegmentMetadata, SegmentState, UserMetadata } from "../types";
import { config } from "../config.js";
import type { SegmentMetadata, SegmentState, UserMetadata } from "../types.js";
export async function collectUserMetadata(
client: Client,
+1 -1
View File
@@ -1,7 +1,7 @@
import fs from "node:fs";
import path from "node:path";
import * as prism from "prism-media";
import type { SegmentState } from "../types";
import type { SegmentState } from "../types.js";
export function buildSegmentPaths(
userDir: string,
+2 -2
View File
@@ -3,8 +3,8 @@ import path from "node:path";
import {
buildMuxFfmpegArgs,
runFfmpeg as defaultRunFfmpeg,
} from "../audio/ffmpegProcess";
import type { UserMetadata } from "../types";
} from "../audio/ffmpegProcess.js";
import type { UserMetadata } from "../types.js";
export type SessionRecordingStatus =
| "pending"
+4 -4
View File
@@ -1,13 +1,13 @@
import fs from "node:fs";
import path from "node:path";
import { config } from "../config";
import { config } from "../config.js";
import {
insertVoiceRecording,
updateVoiceRecordingAsFailed,
updateVoiceRecordingAsUploaded,
} from "../database/voiceRecordingRepo";
import { createChildLogger } from "../logger";
import { uploadToTele } from "../uploader/teleUpload";
} from "../database/voiceRecordingRepo.js";
import { createChildLogger } from "../logger.js";
import { uploadToTele } from "../uploader/teleUpload.js";
const logger = createChildLogger("recording-uploader");
+1 -1
View File
@@ -1,5 +1,5 @@
import pRetry from "p-retry";
import type { CustomLogger } from "./logger.ts";
import type { CustomLogger } from "./logger.js";
export interface RetryOptions {
retries?: number;
+4 -4
View File
@@ -1,16 +1,16 @@
import type { Router } from "express";
import express from "express";
import { AppError } from "../errors";
import { AppError } from "../errors.js";
import {
getAnalysisQueueStatus,
queueMessageAnalysis,
} from "../moderation/aiAnalyzer";
} from "../moderation/aiAnalyzer.js";
import {
getMessageById,
searchMessages,
updateMessageAIAnalysis,
} from "../moderation/messageStore";
import type { MessageRecord } from "../moderation/types";
} from "../moderation/messageStore.js";
import type { MessageRecord } from "../moderation/types.js";
export function createAnalysisRoutes(): Router {
const router = express.Router();
+3 -3
View File
@@ -1,8 +1,8 @@
import type { NextFunction, Request, Response, Router } from "express";
import express from "express";
import { AppError } from "../errors";
import type { MediaController } from "../media/mediaController";
import type { MediaMode } from "../media/mediaTypes";
import { AppError } from "../errors.js";
import type { MediaController } from "../media/mediaController.js";
import type { MediaMode } from "../media/mediaTypes.js";
export type MediaRouteController = Pick<
MediaController,
+3 -3
View File
@@ -1,14 +1,14 @@
import type { Router } from "express";
import express from "express";
import { AppError } from "../errors";
import { AppError } from "../errors.js";
import {
getAttachmentsByChannel,
getMessageById,
getMessagesByChannel,
listMessages,
listReviewMessages,
} from "../moderation/messageStore";
import type { AIStatus, MessageQuery } from "../moderation/types";
} from "../moderation/messageStore.js";
import type { AIStatus, MessageQuery } from "../moderation/types.js";
const aiStatuses = new Set<AIStatus>([
"pending",
+3 -3
View File
@@ -4,9 +4,9 @@ import {
type Response,
Router,
} from "express";
import { listVoiceRecordings } from "../database/voiceRecordingRepo";
import { AppError } from "../errors";
import { createChildLogger } from "../logger";
import { listVoiceRecordings } from "../database/voiceRecordingRepo.js";
import { AppError } from "../errors.js";
import { createChildLogger } from "../logger.js";
const logger = createChildLogger("recordings-routes");
+3 -3
View File
@@ -1,9 +1,9 @@
import type { Client } from "discord.js-selfbot-v13";
import type { Router } from "express";
import express from "express";
import { AppError } from "../errors";
import { createChildLogger } from "../logger";
import { syncSelectedChannelBacklog } from "../moderation/backlogSync";
import { AppError } from "../errors.js";
import { createChildLogger } from "../logger.js";
import { syncSelectedChannelBacklog } from "../moderation/backlogSync.js";
const logger = createChildLogger("sync-routes");
const BACKLOG_SYNC_COOLDOWN_MS = 5 * 60 * 1000;
+1 -1
View File
@@ -1,6 +1,6 @@
import type { Router } from "express";
import express from "express";
import type { SharedUIState, SharedUIStatePatch } from "../state/uiState";
import type { SharedUIState, SharedUIStatePatch } from "../state/uiState.js";
export { SharedUIState, SharedUIStatePatch };
+5 -5
View File
@@ -1,10 +1,10 @@
import type { NextFunction, Request, Response, Router } from "express";
import express from "express";
import { AppError } from "../errors";
import { createChildLogger } from "../logger";
import type { ModerationBroadcaster } from "../moderation/broadcaster";
import type { VoiceController } from "../voiceController";
import type { SharedUIState } from "./uiStateRoutes";
import { AppError } from "../errors.js";
import { createChildLogger } from "../logger.js";
import type { ModerationBroadcaster } from "../moderation/broadcaster.js";
import type { VoiceController } from "../voiceController.js";
import type { SharedUIState } from "./uiStateRoutes.js";
const logger = createChildLogger("voice-routes");
+1 -1
View File
@@ -1,4 +1,4 @@
import { getPersistedValue, setPersistedValue } from "../muxer-queue";
import { getPersistedValue, setPersistedValue } from "../muxer-queue.js";
export interface MediaSettings {
musicVolume: number;
+1 -1
View File
@@ -1,4 +1,4 @@
import { getPersistedValue, setPersistedValue } from "../muxer-queue";
import { getPersistedValue, setPersistedValue } from "../muxer-queue.js";
export type ActiveTab =
| "voice"
+3 -3
View File
@@ -1,9 +1,9 @@
import { ChildProcess, spawn } from "node:child_process";
import type { Readable } from "node:stream";
import { PassThrough } from "node:stream";
import { createChildLogger } from "../logger";
import { transcoderRestartsCounter, transcoderRunningGauge } from "../metrics";
import { retryWithBackoff } from "../retry";
import { createChildLogger } from "../logger.js";
import { transcoderRestartsCounter, transcoderRunningGauge } from "../metrics.js";
import { retryWithBackoff } from "../retry.js";
const logger = createChildLogger("transcoder");
+2 -2
View File
@@ -1,5 +1,5 @@
import type { CustomLogger } from "../logger";
import { retryWithBackoff } from "../retry";
import type { CustomLogger } from "../logger.js";
import { retryWithBackoff } from "../retry.js";
export interface TeleUploadResponse {
download_url: string;
+4 -4
View File
@@ -1,9 +1,9 @@
import { getVoiceConnection, type VoiceConnection } from "@discordjs/voice";
import type { Client, Guild, VoiceChannel } from "discord.js-selfbot-v13";
import { AppError } from "./errors";
import { createChildLogger } from "./logger";
import { discordPlayer } from "./player";
import { startRecording, stopRecording } from "./recorder";
import { AppError } from "./errors.js";
import { createChildLogger } from "./logger.js";
import { discordPlayer } from "./player.js";
import { startRecording, stopRecording } from "./recorder.js";
const logger = createChildLogger("voice-controller");
+1 -1
View File
@@ -1 +1 @@
export { startWebserver } from "./http/server";
export { startWebserver } from "./http/server.js";
+2 -2
View File
@@ -1,8 +1,8 @@
import type { createChildLogger } from "../logger";
import type { createChildLogger } from "../logger.js";
import type {
BroadcasterClient,
ModerationBroadcaster,
} from "../moderation/types";
} from "../moderation/types.js";
type Logger = ReturnType<typeof createChildLogger>;
+4 -4
View File
@@ -1,9 +1,9 @@
import type { Server as HttpServer } from "node:http";
import { WebSocketServer } from "ws";
import type { createChildLogger } from "../logger";
import type { MediaController } from "../media/mediaController";
import type { ModerationBroadcaster } from "../moderation/types";
import { createVoiceAudioBridge } from "./voiceAudioBridge";
import type { createChildLogger } from "../logger.js";
import type { MediaController } from "../media/mediaController.js";
import type { ModerationBroadcaster } from "../moderation/types.js";
import { createVoiceAudioBridge } from "./voiceAudioBridge.js";
type Logger = ReturnType<typeof createChildLogger>;
+3 -3
View File
@@ -1,8 +1,8 @@
import { AudioPlayerStatus } from "@discordjs/voice";
import * as prism from "prism-media";
import { rmsDb, upsample24kMonoTo48kStereo } from "../audio/pcm";
import type { createChildLogger } from "../logger";
import { discordPlayer } from "../player";
import { rmsDb, upsample24kMonoTo48kStereo } from "../audio/pcm.js";
import type { createChildLogger } from "../logger.js";
import { discordPlayer } from "../player.js";
type Logger = ReturnType<typeof createChildLogger>;