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:
+11
-11
@@ -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
@@ -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
@@ -1,5 +1,5 @@
|
||||
import { z } from "zod";
|
||||
import { ConfigError } from "./errors.ts";
|
||||
import { ConfigError } from "./errors.js";
|
||||
|
||||
const configSchema = z
|
||||
.object({
|
||||
|
||||
@@ -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,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");
|
||||
|
||||
|
||||
@@ -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
|
||||
// ==================
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import type {
|
||||
MediaQueueItem,
|
||||
MediaState,
|
||||
ResolvedMediaSource,
|
||||
} from "./mediaTypes";
|
||||
} from "./mediaTypes.js";
|
||||
|
||||
export class MediaQueue {
|
||||
private current: MediaQueueItem | null = null;
|
||||
|
||||
@@ -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>;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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");
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 },
|
||||
);
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
import type { MessageRecord } from "./types";
|
||||
import type { MessageRecord } from "./types.js";
|
||||
|
||||
export interface ConversationContextInput {
|
||||
contextBefore: MessageRecord[];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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,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
@@ -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
@@ -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
@@ -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
@@ -11,7 +11,7 @@ import {
|
||||
import type {
|
||||
DiscordPlayerOwner,
|
||||
DiscordPlayOptions,
|
||||
} from "./media/mediaTypes";
|
||||
} from "./media/mediaTypes.js";
|
||||
|
||||
export class DiscordPlayer {
|
||||
private player: AudioPlayer;
|
||||
|
||||
+11
-11
@@ -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,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,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);
|
||||
|
||||
|
||||
@@ -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,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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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,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 };
|
||||
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
import { getPersistedValue, setPersistedValue } from "../muxer-queue";
|
||||
import { getPersistedValue, setPersistedValue } from "../muxer-queue.js";
|
||||
|
||||
export interface MediaSettings {
|
||||
musicVolume: number;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getPersistedValue, setPersistedValue } from "../muxer-queue";
|
||||
import { getPersistedValue, setPersistedValue } from "../muxer-queue.js";
|
||||
|
||||
export type ActiveTab =
|
||||
| "voice"
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -1 +1 @@
|
||||
export { startWebserver } from "./http/server";
|
||||
export { startWebserver } from "./http/server.js";
|
||||
|
||||
@@ -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
@@ -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>;
|
||||
|
||||
|
||||
@@ -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>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user