shelving
Version:
Toolkit for using data in JavaScript.
36 lines (35 loc) • 1.12 kB
JavaScript
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;
}
}
}