UNPKG

panda-sky-client

Version:

Auto-assembling client for APIs deployed with Panda Sky

72 lines (60 loc) 4.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _urlTemplate = _interopRequireDefault(require("url-template")); var _method = _interopRequireDefault(require("./method")); var _pandaParchment = require("panda-parchment"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var createResource, createTemplate, urlJoin; // 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.default.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 = (0, _pandaParchment.merge)(context, { path: url, methodName: name, signatures }); return (0, _method.default)(lib, _context, method); } else if (name === "path") { return path; } else if (name === "url") { return url; } else { return void 0; } } }); }; }; var _default = createResource; exports.default = _default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9kYXZpZC9yZXBvcy9wYW5kYS1za3ktY2xpZW50L3NyYy9yZXNvdXJjZS5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBRkEsSUFBQSxjQUFBLEVBQUEsY0FBQSxFQUFBLE9BQUE7OztBQUtBLE9BQUEsR0FBVSxVQUFBLElBQUEsRUFBQSxJQUFBLEVBQUE7QUFDUixNQUFHLElBQUssQ0FBQSxLQUFMLENBQUssQ0FBTCxDQUFBLE1BQUgsR0FBQSxFQUFBO1dBQ0UsSUFBSyxDQUFBLEtBQUwsQ0FBSyxDQUFMLEVBQUssQ0FBTCxDQUFBLElBREYsSTtBQUFBLEdBQUEsTUFBQTtXQUdFLElBQUEsR0FIRixJOztBQURRLENBQVY7O0FBTUEsY0FBQSxHQUFpQixVQUFBLENBQUEsRUFBQTtTQUNmLFVBQUEsV0FBQSxFQUFBO1dBQWlCLHFCQUFBLEtBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBQSxDQUFBLFdBQUEsQztBQUFqQixHO0FBRGUsQ0FBakI7O0FBR0EsY0FBQSxHQUFpQixVQUFBLEdBQUEsRUFBQSxPQUFBLEVBQWU7QUFBQSxFQUFBLFFBQUE7QUFBZixFQUFBO0FBQWUsQ0FBZixFQUFBO0FBQ2YsTUFBQSxVQUFBO0FBQUEsRUFBQSxVQUFBLEdBQWEsY0FBQSxDQUFBLFFBQUEsQ0FBYjtTQUNBLFVBQUMsV0FBQSxHQUFELEVBQUEsRUFBQTtXQUNFLElBQUEsS0FBQSxDQUFBLEVBQUEsRUFDRTtBQUFBLE1BQUEsR0FBQSxFQUFLLFVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQTtBQUNILFlBQUEsUUFBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsVUFBQSxFQUFBLEdBQUE7O0FBQUEsUUFBQSxJQUFBLEdBQU8sVUFBQSxDQUFBLFdBQUEsQ0FBUDtBQUNBLFFBQUEsR0FBQSxHQUFNLE9BQUEsQ0FBUSxPQUFPLENBQWYsUUFBQSxFQUFBLElBQUEsQ0FBTjs7QUFFQSxZQUFHLENBQUEsTUFBQSxHQUFBLE9BQUEsQ0FBQSxJQUFBLENBQUEsS0FBSCxJQUFBLEVBQUE7QUFDRSxXQUFBO0FBQUEsWUFBQTtBQUFBLGNBQUEsTUFBQTtBQUNBLFVBQUEsUUFBQSxHQUFXLDJCQUFBLE9BQUEsRUFBZTtBQUFDLFlBQUEsSUFBQSxFQUFELEdBQUE7QUFBWSxZQUFBLFVBQUEsRUFBWixJQUFBO0FBQThCLFlBQUE7QUFBOUIsV0FBZixDQUFYO2lCQUNBLHFCQUFBLEdBQUEsRUFBQSxRQUFBLEVBSEYsTUFHRSxDO0FBSEYsU0FBQSxNQUlLLElBQUcsSUFBQSxLQUFILE1BQUEsRUFBQTtpQkFBQSxJO0FBQUEsU0FBQSxNQUVBLElBQUcsSUFBQSxLQUFILEtBQUEsRUFBQTtpQkFBQSxHO0FBQUEsU0FBQSxNQUFBO2lCQUdILEtBSEcsQzs7QUFWRjtBQUFMLEtBREYsQztBQURGLEc7QUFGZSxDQUFqQjs7ZUFtQmUsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1cmxUZW1wbGF0ZSBmcm9tIFwidXJsLXRlbXBsYXRlXCJcbmltcG9ydCBjcmVhdGVNZXRob2QgZnJvbSBcIi4vbWV0aG9kXCJcbmltcG9ydCB7bWVyZ2V9IGZyb20gXCJwYW5kYS1wYXJjaG1lbnRcIlxuXG4jIEpvaW4gdGhlIGJhc2VwYXRoIHRvIHRoZSBBUEkgZW5kcG9pbnQgcGF0aC5cbnVybEpvaW4gPSAoYmFzZSwgcGF0aCkgLT5cbiAgaWYgYmFzZVstMS4uXSA9PSBcIi9cIlxuICAgIGJhc2VbLi4uLTFdICsgcGF0aFxuICBlbHNlXG4gICAgYmFzZSArIHBhdGhcblxuY3JlYXRlVGVtcGxhdGUgPSAoVCkgLT5cbiAgKGRlc2NyaXB0aW9uKSAtPiB1cmxUZW1wbGF0ZS5wYXJzZShUKS5leHBhbmQgZGVzY3JpcHRpb25cblxuY3JlYXRlUmVzb3VyY2UgPSAobGliLCBjb250ZXh0LCB7dGVtcGxhdGUsIG1ldGhvZHN9KSAtPlxuICBjcmVhdGVQYXRoID0gY3JlYXRlVGVtcGxhdGUgdGVtcGxhdGVcbiAgKGRlc2NyaXB0aW9uPXt9KSAtPlxuICAgIG5ldyBQcm94eSB7fSxcbiAgICAgIGdldDogKHRhcmdldCwgbmFtZSkgLT5cbiAgICAgICAgcGF0aCA9IGNyZWF0ZVBhdGgoZGVzY3JpcHRpb24pXG4gICAgICAgIHVybCA9IHVybEpvaW4gY29udGV4dC5iYXNlUGF0aCwgcGF0aFxuXG4gICAgICAgIGlmIChtZXRob2QgPSBtZXRob2RzW25hbWVdKT9cbiAgICAgICAgICB7c2lnbmF0dXJlc30gPSBtZXRob2RcbiAgICAgICAgICBfY29udGV4dCA9IG1lcmdlIGNvbnRleHQsIHtwYXRoOiB1cmwsIG1ldGhvZE5hbWU6IG5hbWUsIHNpZ25hdHVyZXN9XG4gICAgICAgICAgY3JlYXRlTWV0aG9kIGxpYiwgX2NvbnRleHQsIG1ldGhvZFxuICAgICAgICBlbHNlIGlmIG5hbWUgPT0gXCJwYXRoXCJcbiAgICAgICAgICBwYXRoXG4gICAgICAgIGVsc2UgaWYgbmFtZSA9PSBcInVybFwiXG4gICAgICAgICAgdXJsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB1bmRlZmluZWRcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlUmVzb3VyY2VcbiJdLCJzb3VyY2VSb290IjoiIn0= //# sourceURL=/Users/david/repos/panda-sky-client/src/resource.coffee