panda-sky-client
Version:
Auto-assembling client for APIs deployed with Panda Sky
55 lines (43 loc) • 4.26 kB
JavaScript
var skyClient;
import log from "./log";
import assemble from "./assemble";
skyClient = async function (discoveryURL, options) {
var _headers, fetch, headers, k, lib, logging, resources, response, v, validator;
if (options != null) {
({
fetch,
validator,
logging,
headers = {}
} = options);
}
if ((fetch != null ? fetch : fetch = typeof window !== "undefined" && window !== null ? window.fetch : void 0) == null) {
throw new Error("Provide fetch API, ex: fetch-h2");
} // Provides debug level logging on network traffic from the client. Defaults to false.
if (logging != null) {
fetch = log(fetch);
} // Fetch from the discovery endpoint and parse,
_headers = {
Accept: "application/json"
};
for (k in headers) {
v = headers[k];
_headers[k] = v;
}
response = await fetch(discoveryURL, {
method: "GET",
headers: _headers
});
({
resources
} = await response.json()); // lib is the low level interfaces to make and validate the HTTP request.
lib = {
fetch,
validator,
headers
}; // assemble the client for external use.
return assemble(lib, discoveryURL, resources);
};
export default skyClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1za3ktY2xpZW50L3NyYy9pbmRleC5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxTQUFBO0FBQUEsT0FBQSxHQUFBLE1BQUEsT0FBQTtBQUNBLE9BQUEsUUFBQSxNQUFBLFlBQUE7O0FBRUEsU0FBQSxHQUFZLGdCQUFBLFlBQUEsRUFBQSxPQUFBLEVBQUE7QUFDVixNQUFBLFFBQUEsRUFBQSxLQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLFNBQUEsRUFBQSxRQUFBLEVBQUEsQ0FBQSxFQUFBLFNBQUE7O0FBQUEsTUFBRyxPQUFBLElBQUgsSUFBQSxFQUFBO0FBQ0UsS0FBQTtBQUFBLE1BQUEsS0FBQTtBQUFBLE1BQUEsU0FBQTtBQUFBLE1BQUEsT0FBQTtBQUE0QixNQUFBLE9BQUEsR0FBNUI7QUFBQSxRQURGLE9BQ0U7OztBQUVGLE1BQUksQ0FBQSxLQUFBLElBQUEsSUFBQSxHQUFBLEtBQUEsR0FBQSxLQUFBLEdBQUEsT0FBQSxNQUFBLEtBQUEsV0FBQSxJQUFBLE1BQUEsS0FBQSxJQUFBLEdBQUEsTUFBQSxDQUFBLEtBQUEsR0FBQSxLQUFBLENBQUEsS0FBSixJQUFBLEVBQUE7QUFDRSxVQUFNLElBQUEsS0FBQSxDQURSLGlDQUNRLENBQU47QUFKRixHQURVLEM7OztBQVFWLE1BQUcsT0FBQSxJQUFILElBQUEsRUFBQTtBQUNFLElBQUEsS0FBQSxHQUFRLEdBQUEsQ0FEVixLQUNVLENBQVI7QUFSRixHQURVLEM7OztBQVlWLEVBQUEsUUFBQSxHQUFXO0FBQUEsSUFBQSxNQUFBLEVBQVE7QUFBUixHQUFYOztBQUNnQixPQUFBLENBQUEsSUFBQSxPQUFBLEVBQUE7O0FBQWhCLElBQUEsUUFBUyxDQUFULENBQVMsQ0FBVCxHQUFjLENBQWQ7QUFBZ0I7O0FBRWhCLEVBQUEsUUFBQSxHQUFXLE1BQU0sS0FBQSxDQUFBLFlBQUEsRUFDZjtBQUFBLElBQUEsTUFBQSxFQUFBLEtBQUE7QUFDQSxJQUFBLE9BQUEsRUFBUztBQURULEdBRGUsQ0FBakI7QUFJQSxHQUFBO0FBQUEsSUFBQTtBQUFBLE1BQWMsTUFBTSxRQUFRLENBbEI1QixJQWtCb0IsRUFBcEIsRUFuQlUsQzs7QUFzQlYsRUFBQSxHQUFBLEdBQU07QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBLFNBQUE7QUFyQk4sSUFBQTtBQXFCTSxHQUFOLENBdEJVLEM7O1NBeUJWLFFBQUEsQ0FBQSxHQUFBLEVBQUEsWUFBQSxFQUFBLFNBQUEsQztBQXpCVSxDQUFaOztBQTJCQSxlQUFlLFNBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gXCIuL2xvZ1wiXG5pbXBvcnQgYXNzZW1ibGUgZnJvbSBcIi4vYXNzZW1ibGVcIlxuXG5za3lDbGllbnQgPSAoZGlzY292ZXJ5VVJMLCBvcHRpb25zKSAtPlxuICBpZiBvcHRpb25zP1xuICAgIHtmZXRjaCwgdmFsaWRhdG9yLCBsb2dnaW5nLCBoZWFkZXJzPXt9fSA9IG9wdGlvbnNcbiAgIyBJbiB0aGUgYnJvd3Nlciwgd2UgaGF2ZSBhY2Nlc3MgdG8gdGhlIEZldGNoIEFQSSwgYnV0IGluIE5vZGUsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIG93bi5cbiAgaWYgIShmZXRjaCA/PSB3aW5kb3c/LmZldGNoKT9cbiAgICB0aHJvdyBuZXcgRXJyb3IgXCJQcm92aWRlIGZldGNoIEFQSSwgZXg6IGZldGNoLWgyXCJcblxuICAjIFByb3ZpZGVzIGRlYnVnIGxldmVsIGxvZ2dpbmcgb24gbmV0d29yayB0cmFmZmljIGZyb20gdGhlIGNsaWVudC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gIGlmIGxvZ2dpbmc/XG4gICAgZmV0Y2ggPSBsb2cgZmV0Y2hcblxuICAjIEZldGNoIGZyb20gdGhlIGRpc2NvdmVyeSBlbmRwb2ludCBhbmQgcGFyc2UsXG4gIF9oZWFkZXJzID0gQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICBfaGVhZGVyc1trXSA9IHYgZm9yIGssIHYgb2YgaGVhZGVyc1xuXG4gIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2ggZGlzY292ZXJ5VVJMLFxuICAgIG1ldGhvZDogXCJHRVRcIlxuICAgIGhlYWRlcnM6IF9oZWFkZXJzXG5cbiAge3Jlc291cmNlc30gPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAjIGxpYiBpcyB0aGUgbG93IGxldmVsIGludGVyZmFjZXMgdG8gbWFrZSBhbmQgdmFsaWRhdGUgdGhlIEhUVFAgcmVxdWVzdC5cbiAgbGliID0ge2ZldGNoLCB2YWxpZGF0b3IsIGhlYWRlcnN9XG5cbiAgIyBhc3NlbWJsZSB0aGUgY2xpZW50IGZvciBleHRlcm5hbCB1c2UuXG4gIGFzc2VtYmxlIGxpYiwgZGlzY292ZXJ5VVJMLCByZXNvdXJjZXNcblxuZXhwb3J0IGRlZmF1bHQgc2t5Q2xpZW50XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=/Users/david/repos/panda-sky-client/src/index.coffee