{"version":3,"sources":["../../../src/middleware/log.ts"],"sourcesContent":["import { Response } from '../response'\nimport type { Request } from '../request'\nimport type { Middleware } from './index'\n\nexport const defaultSuccessLogger = (message: string) => {\n  const logger = console.info ? console.info : console.log\n  logger(message)\n}\n\nexport const defaultErrorLogger = (message: string) => {\n  const logger = console.error ? console.error : console.log\n  logger(message)\n}\n\nlet isLoggerEnabled = Boolean(console && console.log)\nlet successLogger = defaultSuccessLogger\nlet errorLogger = defaultErrorLogger\n\nexport const setSuccessLogger = (logger: (message: string) => void) => {\n  successLogger = logger\n}\nexport const setErrorLogger = (logger: (message: string) => void) => {\n  errorLogger = logger\n}\nexport const setLoggerEnabled = (value: boolean) => {\n  isLoggerEnabled = value\n}\n\nconst log = (request: Request, response?: Response) => {\n  if (isLoggerEnabled) {\n    const httpCall = `${request.method().toUpperCase()} ${request.url()}`\n    const direction = response ? '<-' : '->'\n    const isError = response && !response.success()\n    const errorLabel = isError ? '(ERROR) ' : ''\n    const extra = response ? ` status=${response.status()} '${response.rawData()}'` : ''\n    const logger = isError ? errorLogger : successLogger\n\n    logger(`${direction} ${errorLabel}${httpCall}${extra}`)\n  }\n\n  return response || request\n}\n\n/**\n * Log all requests and responses.\n */\nexport const LogMiddleware: Middleware = () => ({\n  async prepareRequest(next) {\n    const request = await next()\n    log(request)\n    return request\n  },\n\n  async response(next) {\n    try {\n      const response = await next()\n      log(response.request(), response)\n      return response\n    } catch (err) {\n      if (err instanceof Response) {\n        log(err.request(), err)\n      }\n      throw err\n    }\n  },\n})\n\nexport default LogMiddleware\n"],"mappings":";AAAA,SAAS,gBAAgB;AAIlB,IAAM,uBAAuB,CAAC,YAAoB;AACvD,QAAM,SAAS,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AACrD,SAAO,OAAO;AAChB;AAEO,IAAM,qBAAqB,CAAC,YAAoB;AACrD,QAAM,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AACvD,SAAO,OAAO;AAChB;AAEA,IAAI,kBAAkB,QAAQ,WAAW,QAAQ,GAAG;AACpD,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAEX,IAAM,mBAAmB,CAAC,WAAsC;AACrE,kBAAgB;AAClB;AACO,IAAM,iBAAiB,CAAC,WAAsC;AACnE,gBAAc;AAChB;AACO,IAAM,mBAAmB,CAAC,UAAmB;AAClD,oBAAkB;AACpB;AAEA,IAAM,MAAM,CAAC,SAAkB,aAAwB;AACrD,MAAI,iBAAiB;AACnB,UAAM,WAAW,GAAG,QAAQ,OAAO,EAAE,YAAY,CAAC,IAAI,QAAQ,IAAI,CAAC;AACnE,UAAM,YAAY,WAAW,OAAO;AACpC,UAAM,UAAU,YAAY,CAAC,SAAS,QAAQ;AAC9C,UAAM,aAAa,UAAU,aAAa;AAC1C,UAAM,QAAQ,WAAW,WAAW,SAAS,OAAO,CAAC,KAAK,SAAS,QAAQ,CAAC,MAAM;AAClF,UAAM,SAAS,UAAU,cAAc;AAEvC,WAAO,GAAG,SAAS,IAAI,UAAU,GAAG,QAAQ,GAAG,KAAK,EAAE;AAAA,EACxD;AAEA,SAAO,YAAY;AACrB;AAKO,IAAM,gBAA4B,OAAO;AAAA,EAC9C,MAAM,eAAe,MAAM;AACzB,UAAM,UAAU,MAAM,KAAK;AAC3B,QAAI,OAAO;AACX,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,MAAM;AACnB,QAAI;AACF,YAAM,WAAW,MAAM,KAAK;AAC5B,UAAI,SAAS,QAAQ,GAAG,QAAQ;AAChC,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,UAAI,eAAe,UAAU;AAC3B,YAAI,IAAI,QAAQ,GAAG,GAAG;AAAA,MACxB;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAO,cAAQ;","names":[]}