UNPKG

panda-sky-client

Version:

Auto-assembling client for APIs deployed with Panda Sky

58 lines (52 loc) 4.68 kB
var createResource, createTemplate, urlJoin; import urlTemplate from "url-template"; import createMethod from "./method"; import { merge } from "panda-parchment"; // Join the basepath to the API endpoint path. urlJoin = function (base, path) { if (base.slice(-1) === "/") { return base.slice(0, -1) + path; } else { return base + path; } }; createTemplate = function (T) { return function (description) { return urlTemplate.parse(T).expand(description); }; }; createResource = function (lib, context, { template, methods }) { var createPath; createPath = createTemplate(template); return function (description = {}) { return new Proxy({}, { get: function (target, name) { var _context, method, path, signatures, url; path = createPath(description); url = urlJoin(context.basePath, path); if ((method = methods[name]) != null) { ({ signatures } = method); _context = merge(context, { path: url, methodName: name, signatures }); return createMethod(lib, _context, method); } else if (name === "path") { return path; } else if (name === "url") { return url; } else { return void 0; } } }); }; }; export default createResource; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1za3ktY2xpZW50L3NyYy9yZXNvdXJjZS5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxjQUFBLEVBQUEsY0FBQSxFQUFBLE9BQUE7QUFBQSxPQUFBLFdBQUEsTUFBQSxjQUFBO0FBQ0EsT0FBQSxZQUFBLE1BQUEsVUFBQTtBQUNBLFNBQUEsS0FBQSxRQUZBLGlCQUVBLEM7O0FBR0EsT0FBQSxHQUFVLFVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQTtBQUNSLE1BQUcsSUFBSyxDQUFBLEtBQUwsQ0FBSyxDQUFMLENBQUEsTUFBSCxHQUFBLEVBQUE7V0FDRSxJQUFLLENBQUEsS0FBTCxDQUFLLENBQUwsRUFBSyxDQUFMLENBQUEsSUFERixJO0FBQUEsR0FBQSxNQUFBO1dBR0UsSUFBQSxHQUhGLEk7O0FBRFEsQ0FBVjs7QUFNQSxjQUFBLEdBQWlCLFVBQUEsQ0FBQSxFQUFBO1NBQ2YsVUFBQSxXQUFBLEVBQUE7V0FBaUIsV0FBVyxDQUFYLEtBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBQSxDQUFBLFdBQUEsQztBQUFqQixHO0FBRGUsQ0FBakI7O0FBR0EsY0FBQSxHQUFpQixVQUFBLEdBQUEsRUFBQSxPQUFBLEVBQWU7QUFBQSxFQUFBLFFBQUE7QUFBZixFQUFBO0FBQWUsQ0FBZixFQUFBO0FBQ2YsTUFBQSxVQUFBO0FBQUEsRUFBQSxVQUFBLEdBQWEsY0FBQSxDQUFBLFFBQUEsQ0FBYjtTQUNBLFVBQUMsV0FBQSxHQUFELEVBQUEsRUFBQTtXQUNFLElBQUEsS0FBQSxDQUFBLEVBQUEsRUFDRTtBQUFBLE1BQUEsR0FBQSxFQUFLLFVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQTtBQUNILFlBQUEsUUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsVUFBQSxFQUFBLEdBQUE7O0FBQUEsUUFBQSxJQUFBLEdBQU8sVUFBQSxDQUFBLFdBQUEsQ0FBUDtBQUNBLFFBQUEsR0FBQSxHQUFNLE9BQUEsQ0FBUSxPQUFPLENBQWYsUUFBQSxFQUFBLElBQUEsQ0FBTjs7QUFFQSxZQUFHLENBQUEsTUFBQSxHQUFBLE9BQUEsQ0FBQSxJQUFBLENBQUEsS0FBSCxJQUFBLEVBQUE7QUFDRSxXQUFBO0FBQUEsWUFBQTtBQUFBLGNBQUEsTUFBQTtBQUNBLFVBQUEsUUFBQSxHQUFXLEtBQUEsQ0FBQSxPQUFBLEVBQWU7QUFBQyxZQUFBLElBQUEsRUFBRCxHQUFBO0FBQVksWUFBQSxVQUFBLEVBQVosSUFBQTtBQUE4QixZQUFBO0FBQTlCLFdBQWYsQ0FBWDtpQkFDQSxZQUFBLENBQUEsR0FBQSxFQUFBLFFBQUEsRUFIRixNQUdFLEM7QUFIRixTQUFBLE1BSUssSUFBRyxJQUFBLEtBQUgsTUFBQSxFQUFBO2lCQUFBLEk7QUFBQSxTQUFBLE1BRUEsSUFBRyxJQUFBLEtBQUgsS0FBQSxFQUFBO2lCQUFBLEc7QUFBQSxTQUFBLE1BQUE7aUJBR0gsS0FIRyxDOztBQVZGO0FBQUwsS0FERixDO0FBREYsRztBQUZlLENBQWpCOztBQW1CQSxlQUFlLGNBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXJsVGVtcGxhdGUgZnJvbSBcInVybC10ZW1wbGF0ZVwiXG5pbXBvcnQgY3JlYXRlTWV0aG9kIGZyb20gXCIuL21ldGhvZFwiXG5pbXBvcnQge21lcmdlfSBmcm9tIFwicGFuZGEtcGFyY2htZW50XCJcblxuIyBKb2luIHRoZSBiYXNlcGF0aCB0byB0aGUgQVBJIGVuZHBvaW50IHBhdGguXG51cmxKb2luID0gKGJhc2UsIHBhdGgpIC0+XG4gIGlmIGJhc2VbLTEuLl0gPT0gXCIvXCJcbiAgICBiYXNlWy4uLi0xXSArIHBhdGhcbiAgZWxzZVxuICAgIGJhc2UgKyBwYXRoXG5cbmNyZWF0ZVRlbXBsYXRlID0gKFQpIC0+XG4gIChkZXNjcmlwdGlvbikgLT4gdXJsVGVtcGxhdGUucGFyc2UoVCkuZXhwYW5kIGRlc2NyaXB0aW9uXG5cbmNyZWF0ZVJlc291cmNlID0gKGxpYiwgY29udGV4dCwge3RlbXBsYXRlLCBtZXRob2RzfSkgLT5cbiAgY3JlYXRlUGF0aCA9IGNyZWF0ZVRlbXBsYXRlIHRlbXBsYXRlXG4gIChkZXNjcmlwdGlvbj17fSkgLT5cbiAgICBuZXcgUHJveHkge30sXG4gICAgICBnZXQ6ICh0YXJnZXQsIG5hbWUpIC0+XG4gICAgICAgIHBhdGggPSBjcmVhdGVQYXRoKGRlc2NyaXB0aW9uKVxuICAgICAgICB1cmwgPSB1cmxKb2luIGNvbnRleHQuYmFzZVBhdGgsIHBhdGhcblxuICAgICAgICBpZiAobWV0aG9kID0gbWV0aG9kc1tuYW1lXSk/XG4gICAgICAgICAge3NpZ25hdHVyZXN9ID0gbWV0aG9kXG4gICAgICAgICAgX2NvbnRleHQgPSBtZXJnZSBjb250ZXh0LCB7cGF0aDogdXJsLCBtZXRob2ROYW1lOiBuYW1lLCBzaWduYXR1cmVzfVxuICAgICAgICAgIGNyZWF0ZU1ldGhvZCBsaWIsIF9jb250ZXh0LCBtZXRob2RcbiAgICAgICAgZWxzZSBpZiBuYW1lID09IFwicGF0aFwiXG4gICAgICAgICAgcGF0aFxuICAgICAgICBlbHNlIGlmIG5hbWUgPT0gXCJ1cmxcIlxuICAgICAgICAgIHVybFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdW5kZWZpbmVkXG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVJlc291cmNlXG4iXSwic291cmNlUm9vdCI6IiJ9 //# sourceURL=/Users/david/repos/panda-sky-client/src/resource.coffee