From 36452e77e242a2e0a27634132a197778f1bebfc9 Mon Sep 17 00:00:00 2001 From: LightZirconite Date: Mon, 3 Nov 2025 20:03:42 +0100 Subject: [PATCH] Refactor: Remove legacy code and improve import statements across multiple files --- src/browser/Browser.ts | 8 -------- src/functions/Activities.ts | 2 +- src/functions/Workers.ts | 2 +- src/index.ts | 15 ++++++--------- src/interface/Config.ts | 9 +-------- src/util/Analytics.ts | 3 --- src/util/ConfigValidator.ts | 18 ------------------ src/util/Diagnostics.ts | 3 --- src/util/Humanizer.ts | 2 +- src/util/Load.ts | 15 ++------------- src/util/QueryDiversityEngine.ts | 18 ++++-------------- src/util/Retry.ts | 4 +--- src/util/StartupValidator.ts | 9 --------- src/util/UserAgent.ts | 2 +- src/util/Utils.ts | 2 +- 15 files changed, 19 insertions(+), 93 deletions(-) delete mode 100644 src/util/Analytics.ts delete mode 100644 src/util/Diagnostics.ts diff --git a/src/browser/Browser.ts b/src/browser/Browser.ts index 72dbb32..9144bdd 100644 --- a/src/browser/Browser.ts +++ b/src/browser/Browser.ts @@ -7,14 +7,6 @@ import { loadSessionData, saveFingerprintData } from '../util/Load' import { updateFingerprintUserAgent } from '../util/UserAgent' import { AccountProxy } from '../interface/Account' -/* Test Stuff -https://abrahamjuliot.github.io/creepjs/ -https://botcheck.luminati.io/ -https://fv.pro/ -https://pixelscan.net/ -https://www.browserscan.net/ -*/ - class Browser { private bot: MicrosoftRewardsBot diff --git a/src/functions/Activities.ts b/src/functions/Activities.ts index 0d3cf58..0ded379 100644 --- a/src/functions/Activities.ts +++ b/src/functions/Activities.ts @@ -25,7 +25,7 @@ type ActivityKind = | { type: 'unsupported' } -export default class Activities { +export class Activities { private bot: MicrosoftRewardsBot private handlers: ActivityHandler[] = [] diff --git a/src/functions/Workers.ts b/src/functions/Workers.ts index ddd5e4b..8667c56 100644 --- a/src/functions/Workers.ts +++ b/src/functions/Workers.ts @@ -4,7 +4,7 @@ import { DashboardData, MorePromotion, PromotionalItem, PunchCard } from '../int import { MicrosoftRewardsBot } from '../index' import JobState from '../util/JobState' -import Retry from '../util/Retry' +import { Retry } from '../util/Retry' import { AdaptiveThrottler } from '../util/AdaptiveThrottler' export class Workers { diff --git a/src/index.ts b/src/index.ts index 7ae8468..4167f89 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,7 +10,7 @@ import BrowserFunc from './browser/BrowserFunc' import BrowserUtil from './browser/BrowserUtil' import { log } from './util/Logger' -import Util from './util/Utils' +import { Util } from './util/Utils' import { loadAccounts, loadConfig, saveSessionData } from './util/Load' import Axios from './util/Axios' import Humanizer from './util/Humanizer' @@ -24,7 +24,7 @@ import { MobileRetryTracker } from './util/MobileRetryTracker' import { Login } from './functions/Login' import { Workers } from './functions/Workers' -import Activities from './functions/Activities' +import { Activities } from './functions/Activities' import { Account } from './interface/Account' import { DISCORD } from './constants' @@ -48,7 +48,6 @@ export class MicrosoftRewardsBot { public queryEngine?: QueryDiversityEngine public compromisedModeActive: boolean = false public compromisedReason?: string - public compromisedEmail?: string // Mutex-like flag to prevent parallel execution when config.parallel is accidentally misconfigured private isDesktopRunning: boolean = false private isMobileRunning: boolean = false @@ -58,7 +57,6 @@ export class MicrosoftRewardsBot { private accounts: Account[] private workers: Workers private login = new Login(this) - private accessToken: string = '' // Buy mode (manual spending) tracking private buyMode: { enabled: boolean; email?: string } = { enabled: false } @@ -547,7 +545,6 @@ export class MicrosoftRewardsBot { // Reset compromised state per account this.compromisedModeActive = false this.compromisedReason = undefined - this.compromisedEmail = undefined this.resetRiskTracking() // If humanization allowed windows are configured, wait until within a window @@ -1004,14 +1001,14 @@ export class MicrosoftRewardsBot { } return { initialPoints: 0, collectedPoints: 0 } } - this.accessToken = await this.login.getMobileAccessToken(this.homePage, account.email, account.totp) + const accessToken = await this.login.getMobileAccessToken(this.homePage, account.email, account.totp) await this.browser.func.goHome(this.homePage) const data = await this.browser.func.getDashboardData() const initialPoints = data.userStatus.availablePoints || 0 const browserEnarablePoints = await this.browser.func.getBrowserEarnablePoints() - const appEarnablePoints = await this.browser.func.getAppEarnablePoints(this.accessToken) + const appEarnablePoints = await this.browser.func.getAppEarnablePoints(accessToken) const pointsCanCollect = browserEnarablePoints.mobileSearchPoints + appEarnablePoints.totalEarnablePoints @@ -1035,12 +1032,12 @@ export class MicrosoftRewardsBot { } // Do daily check in if (this.config.workers.doDailyCheckIn) { - await this.activities.doDailyCheckIn(this.accessToken, data) + await this.activities.doDailyCheckIn(accessToken, data) } // Do read to earn if (this.config.workers.doReadToEarn) { - await this.activities.doReadToEarn(this.accessToken, data) + await this.activities.doReadToEarn(accessToken, data) } // Do mobile searches diff --git a/src/interface/Config.ts b/src/interface/Config.ts index a07e6d9..b4c6b09 100644 --- a/src/interface/Config.ts +++ b/src/interface/Config.ts @@ -30,7 +30,6 @@ export interface Config { riskManagement?: ConfigRiskManagement; // NEW: Risk-aware throttling and ban prediction dryRun?: boolean; // NEW: Dry-run mode (simulate without executing) queryDiversity?: ConfigQueryDiversity; // NEW: Multi-source query generation - legacy?: ConfigLegacyFlags; // Track legacy config usage for warnings } export interface ConfigSaveFingerprint { @@ -186,10 +185,4 @@ export interface ConfigQueryDiversity { sources?: Array<'google-trends' | 'reddit' | 'news' | 'wikipedia' | 'local-fallback'>; // which sources to use maxQueriesPerSource?: number; // limit per source cacheMinutes?: number; // cache duration -} - -export interface ConfigLegacyFlags { - diagnosticsConfigured?: boolean; - analyticsConfigured?: boolean; -} - +} \ No newline at end of file diff --git a/src/util/Analytics.ts b/src/util/Analytics.ts deleted file mode 100644 index 677da11..0000000 --- a/src/util/Analytics.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Placeholder kept for backward compatibility with older imports. -// New code should implement its own reporting or use webhooks. -export {} diff --git a/src/util/ConfigValidator.ts b/src/util/ConfigValidator.ts index 2f77bbf..b4ce86f 100644 --- a/src/util/ConfigValidator.ts +++ b/src/util/ConfigValidator.ts @@ -207,24 +207,6 @@ export class ConfigValidator { }) } - if (config.legacy?.diagnosticsConfigured) { - issues.push({ - severity: 'warning', - field: 'diagnostics', - message: 'Unrecognized diagnostics.* block in config.jsonc.', - suggestion: 'Delete the diagnostics section; logs and webhooks now cover troubleshooting.' - }) - } - - if (config.legacy?.analyticsConfigured) { - issues.push({ - severity: 'warning', - field: 'analytics', - message: 'Unrecognized analytics.* block in config.jsonc.', - suggestion: 'Delete the analytics section because those values are ignored.' - }) - } - // Check workers if (config.workers) { const allDisabled = !config.workers.doDailySet && diff --git a/src/util/Diagnostics.ts b/src/util/Diagnostics.ts deleted file mode 100644 index dd843a8..0000000 --- a/src/util/Diagnostics.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Placeholder kept for backward compatibility with older imports. -// New code should handle troubleshooting through logging and webhooks instead. -export {} diff --git a/src/util/Humanizer.ts b/src/util/Humanizer.ts index c8e71c2..17f93c9 100644 --- a/src/util/Humanizer.ts +++ b/src/util/Humanizer.ts @@ -1,5 +1,5 @@ import { Page } from 'rebrowser-playwright' -import Util from './Utils' +import { Util } from './Utils' import type { ConfigHumanization } from '../interface/Config' export class Humanizer { diff --git a/src/util/Load.ts b/src/util/Load.ts index 9079f36..98f5567 100644 --- a/src/util/Load.ts +++ b/src/util/Load.ts @@ -3,9 +3,8 @@ import { BrowserFingerprintWithHeaders } from 'fingerprint-generator' import fs from 'fs' import path from 'path' - import { Account } from '../interface/Account' -import { Config, ConfigLegacyFlags, ConfigSaveFingerprint } from '../interface/Config' +import { Config, ConfigSaveFingerprint } from '../interface/Config' let configCache: Config let configSourcePath = '' @@ -188,15 +187,6 @@ function normalizeConfig(raw: unknown): Config { skipCompletedAccounts: jobStateRaw.skipCompletedAccounts !== false } - const legacy: ConfigLegacyFlags = {} - if (typeof n.diagnostics !== 'undefined') { - legacy.diagnosticsConfigured = true - } - if (typeof n.analytics !== 'undefined') { - legacy.analyticsConfigured = true - } - const hasLegacyFlags = legacy.diagnosticsConfigured === true || legacy.analyticsConfigured === true - const cfg: Config = { baseURL: n.baseURL ?? 'https://rewards.bing.com', sessionPath: n.sessionPath ?? 'sessions', @@ -226,8 +216,7 @@ function normalizeConfig(raw: unknown): Config { crashRecovery: n.crashRecovery || {}, riskManagement, dryRun, - queryDiversity, - legacy: hasLegacyFlags ? legacy : undefined + queryDiversity } return cfg diff --git a/src/util/QueryDiversityEngine.ts b/src/util/QueryDiversityEngine.ts index b640e7f..de3d5d0 100644 --- a/src/util/QueryDiversityEngine.ts +++ b/src/util/QueryDiversityEngine.ts @@ -1,4 +1,5 @@ import axios from 'axios' +import { Util } from './Utils' export interface QuerySource { name: string @@ -21,6 +22,7 @@ export interface QueryDiversityConfig { export class QueryDiversityEngine { private config: QueryDiversityConfig private cache: Map = new Map() + private util: Util = new Util() constructor(config?: Partial) { this.config = { @@ -56,7 +58,7 @@ export class QueryDiversityEngine { } // Shuffle and limit to requested count - final = this.shuffleArray(final).slice(0, count) + final = this.util.shuffleArray(final).slice(0, count) return final.length > 0 ? final : this.getLocalFallback(count) } @@ -275,7 +277,7 @@ export class QueryDiversityEngine { 'education resources' ] - return this.shuffleArray(fallback).slice(0, count) + return this.util.shuffleArray(fallback).slice(0, count) } /** @@ -319,18 +321,6 @@ export class QueryDiversityEngine { return 'trends' } - /** - * Shuffle array (Fisher-Yates) - */ - private shuffleArray(array: T[]): T[] { - const shuffled = [...array] - for (let i = shuffled.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [shuffled[i], shuffled[j]] = [shuffled[j]!, shuffled[i]!] - } - return shuffled - } - /** * Clear cache (call between runs) */ diff --git a/src/util/Retry.ts b/src/util/Retry.ts index 4ab258a..af77043 100644 --- a/src/util/Retry.ts +++ b/src/util/Retry.ts @@ -1,5 +1,5 @@ import type { ConfigRetryPolicy } from '../interface/Config' -import Util from './Utils' +import { Util } from './Utils' type NumericPolicy = { maxAttempts: number @@ -60,5 +60,3 @@ export class Retry { throw lastErr instanceof Error ? lastErr : new Error(String(lastErr)) } } - -export default Retry diff --git a/src/util/StartupValidator.ts b/src/util/StartupValidator.ts index 16077a7..071d321 100644 --- a/src/util/StartupValidator.ts +++ b/src/util/StartupValidator.ts @@ -338,15 +338,6 @@ export class StartupValidator { } } } - - if (config.legacy?.diagnosticsConfigured || config.legacy?.analyticsConfigured) { - this.addWarning( - 'filesystem', - 'Unrecognized diagnostics/analytics block detected in config.jsonc', - 'Remove those sections to keep the file aligned with the current schema.', - 'docs/diagnostics.md' - ) - } } private validateBrowserSettings(config: Config): void { diff --git a/src/util/UserAgent.ts b/src/util/UserAgent.ts index 7eb0820..fd912b6 100644 --- a/src/util/UserAgent.ts +++ b/src/util/UserAgent.ts @@ -2,7 +2,7 @@ import axios from 'axios' import { BrowserFingerprintWithHeaders } from 'fingerprint-generator' import { log } from './Logger' -import Retry from './Retry' +import { Retry } from './Retry' import { ChromeVersion, EdgeVersion, Architecture, Platform } from '../interface/UserAgentUtil' diff --git a/src/util/Utils.ts b/src/util/Utils.ts index 407f151..5a5e85b 100644 --- a/src/util/Utils.ts +++ b/src/util/Utils.ts @@ -1,6 +1,6 @@ import ms from 'ms' -export default class Util { +export class Util { async wait(ms: number): Promise { // Safety check: prevent extremely long or negative waits