Fix circular dependency in logging during initialization

- Add initialization phase detection to logger (2-second delay)
- Prevent database logging during critical startup phase
- Use console logging for critical startup messages to avoid circular dependency
- Add manual initialization control functions (markInitializationComplete, isInitializationPhase)
- Filter initialization-related messages from database logging

Files modified:
- src/utils/logger.ts: Add initialization state tracking and filtering
- src/registerSQLWorker.js: Use console for critical startup message
- src/services/PlatformServiceFactory.ts: Use console for singleton creation message
- src/services/platforms/WebPlatformService.ts: Use console for worker context message

Resolves circular dependency where logging tried to access database during platform service initialization, causing infinite loops with [DB-PREVENTED-INFO] messages.
This commit is contained in:
Matthew Raymer
2025-07-03 09:22:19 +00:00
parent e39f6a2d37
commit f06b6aa367
4 changed files with 75 additions and 21 deletions

View File

@@ -1,7 +1,6 @@
import { PlatformService } from "./PlatformService";
import { WebPlatformService } from "./platforms/WebPlatformService";
import { CapacitorPlatformService } from "./platforms/CapacitorPlatformService";
import { logger } from "../utils/logger";
/**
* Factory class for creating platform-specific service implementations.
@@ -42,7 +41,9 @@ export class PlatformServiceFactory {
const platform = process.env.VITE_PLATFORM || "web";
if (!PlatformServiceFactory.creationLogged) {
logger.log(
// Use console for critical startup message to avoid circular dependency
// eslint-disable-next-line no-console
console.log(
`[PlatformServiceFactory] Creating singleton instance for platform: ${platform}`,
);
PlatformServiceFactory.creationLogged = true;