UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

33 lines (32 loc) 1.13 kB
import { awaitDispose } from "../../util/dispose.js"; import { APIProvider } from "./APIProvider.js"; /** * Provider wrapper that delegates API operations to a source provider. * - Extend this when you want to intercept only selected API operations, such as injecting auth headers or logging. */ export class ThroughAPIProvider extends APIProvider { get url() { return this.source.url; } source; constructor(source) { super(); this.source = source; } renderURL(endpoint, payload, caller = this.renderURL) { return this.source.renderURL(endpoint, payload, caller); } createRequest(endpoint, payload, options, caller = this.createRequest) { return this.source.createRequest(endpoint, payload, options, caller); } parseResponse(endpoint, response, caller = this.parseResponse) { return this.source.parseResponse(endpoint, response, caller); } fetch(request) { return this.source.fetch(request); } // Implement `AsyncDisposable` async [Symbol.asyncDispose]() { await awaitDispose(this.source); } }