UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

36 lines (35 loc) 1.12 kB
import { logRequest, logRequestError, logRequestResponse } from "../../util/log.js"; import { ThroughAPIProvider } from "./ThroughAPIProvider.js"; /** * Provider that logs fetches to the console to keep useful logs in production. * - Defaults to calling `console.log()` for requests/responses and */ export class LoggingAPIProvider extends ThroughAPIProvider { _logRequest; _logResponse; _logError; constructor(source, /** Log requests. */ onRequest = logRequest, /** Log responses to requests. */ onResponse = logRequestResponse, /** Log errors for requests. */ onError = logRequestError) { super(source); this._logRequest = onRequest; this._logResponse = onResponse; this._logError = onError; } async fetch(request) { try { this._logRequest(request); const response = await super.fetch(request); this._logResponse(response, request); return response; } catch (reason) { this._logError(reason, request); throw reason; } } }