UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

41 lines (40 loc) 1.76 kB
import { ANSI_FAILURE, ANSI_LEFT, ANSI_RIGHT, ANSI_SUCCESS, ANSI_WAITING } from "../../util/ansi.js"; import { debugFullRequest, debugFullResponse, debugRequest } from "../../util/debug.js"; import { ThroughAPIProvider } from "./ThroughAPIProvider.js"; /** Provider that logs everything to the console in some detail to help diagnose issues in development. */ export class DebugAPIProvider extends ThroughAPIProvider { createRequest(endpoint, payload, options, caller = this.createRequest) { try { const request = super.createRequest(endpoint, payload, options, caller); console.debug(`${ANSI_WAITING} ${endpoint.toString()}`, payload); return request; } catch (reason) { console.error(`${ANSI_FAILURE} ${endpoint.toString()}`, payload, reason); throw reason; } } async fetch(request) { try { console.debug(`${ANSI_RIGHT} ${await debugFullRequest(request)}`); const response = await super.fetch(request); console.debug(`${ANSI_LEFT} ${debugRequest(request)}\n\n${await debugFullResponse(response)}`); return response; } catch (reason) { console.error(`${ANSI_FAILURE} ${debugRequest(request)}`, reason); throw reason; } } async parseResponse(endpoint, response, caller = this.parseResponse) { try { const result = await super.parseResponse(endpoint, response, caller); console.debug(`${ANSI_SUCCESS} ${endpoint.toString()}`, result); return result; } catch (reason) { console.error(`${ANSI_FAILURE} ${endpoint.toString()}`, reason); throw reason; } } }