const webLogger = {
  debug: (message: string, ...args: unknown[]) => {
    if (import.meta.env.DEV) console.debug(message, ...args)
  },
  info: (message: string, ...args: unknown[]) => {
    if (import.meta.env.DEV) console.info(message, ...args)
  },
  warn: (message: string, ...args: unknown[]) => {
    if (import.meta.env.DEV) console.warn(message, ...args)
  },
  error: (message: string, ...args: unknown[]) => {
    console.error(message, ...args)
  }
}

async function createLogger() {
  if (typeof window !== 'undefined' && window.__TAURI__) {
    const { debug, error, info, warn } = await import('@tauri-apps/plugin-log')
    return {
      debug: (message: string, ...args: unknown[]) => {
        if (import.meta.env.DEV) console.debug(message, ...args)
        debug(message)
      },
      info: (message: string, ...args: unknown[]) => {
        if (import.meta.env.DEV) console.info(message, ...args)
        info(message)
      },
      warn: (message: string, ...args: unknown[]) => {
        if (import.meta.env.DEV) console.warn(message, ...args)
        warn(message)
      },
      error: (message: string, ...args: unknown[]) => {
        console.error(message, ...args)
        error(message)
      }
    }
  }
  return webLogger
}

export const logger = await createLogger()