import { stateSource } from './state.js'; import { torrentsSource } from './torrents.js'; import { mobileSource } from './mobile.js'; import { messagesSource } from './messages.js'; import { torrentAddSource } from './torrentAdd.js'; import { apiSource } from './api.js'; import { createTorrentSource } from './createTorrent.js'; import { torrentDetailsSource } from './torrentDetails.js'; import { modalsSource } from './modals.js'; import { rssSource } from './rss.js'; import { smartQueueSource } from './smartQueue.js'; import { rtorrentConfigSource } from './rtorrentConfig.js'; import { appearancePreferencesSource } from './appearancePreferences.js'; import { peerRefreshSource } from './peerRefresh.js'; import { automationRulesSource } from './automationRules.js'; import { cleanupToolsSource } from './cleanupTools.js'; import { appDiagnosticsSource } from './appDiagnostics.js'; import { footerPreferencesSource } from './footerPreferences.js'; import { liveSpeedStatsSource } from './liveSpeedStats.js'; import { statusBarSource } from './statusBar.js'; import { preferencesToolsSource } from './preferencesTools.js'; import { diskMonitorSource } from './diskMonitor.js'; import { portCheckActionsSource } from './portCheckActions.js'; import { appStatusSource } from './appStatus.js'; import { torrentStatsSource } from './torrentStats.js'; import { toolUiHelpersSource } from './toolUiHelpers.js'; import { authUsersSource } from './authUsers.js'; import { plannerSource } from './planner.js'; import { pollerSource } from './poller.js'; import { profilesSource } from './profiles.js'; import { dashboardSource } from './dashboard.js'; import { chartsSource } from './charts.js'; import { operationLogsSource } from './operationLogs.js'; import { bootstrapSource } from './bootstrap.js'; export const moduleSources = [ stateSource, torrentsSource, mobileSource, messagesSource, torrentAddSource, apiSource, createTorrentSource, torrentDetailsSource, modalsSource, rssSource, smartQueueSource, rtorrentConfigSource, appearancePreferencesSource, peerRefreshSource, automationRulesSource, cleanupToolsSource, appDiagnosticsSource, footerPreferencesSource, liveSpeedStatsSource, statusBarSource, preferencesToolsSource, diskMonitorSource, portCheckActionsSource, appStatusSource, torrentStatsSource, toolUiHelpersSource, authUsersSource, plannerSource, dashboardSource, operationLogsSource, pollerSource, profilesSource, chartsSource, bootstrapSource, ]; export function buildRuntimeSource(){ return `(() => {\n${moduleSources.join('\n')}\n})();\n`; } export function startApp(){ const runtimeSource = buildRuntimeSource(); // Keep the original shared lexical scope while loading the source from smaller ES modules. // `io` is passed explicitly so Socket.IO remains available inside the generated runtime. return Function('io', runtimeSource)(window.io); } if(typeof window !== 'undefined' && !window.PYTORRENT_DISABLE_AUTOSTART){ startApp(); }