diff --git a/index.js b/index.js index d08a84f..b4aa684 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=exports.link=void 0;require("@babel/polyfill");function _objectSpread(target){for(var i=1;i0&&arguments[0]!==undefined?arguments[0]:{};var pairs=[];var keys=Object.keys(inputs);for(var _i=0,_keys=keys;_i<_keys.length;_i++){var key=_keys[_i];var value=inputs[key];pairs.push("".concat(encodeURIComponent(key),"=").concat(encodeURIComponent(value)))}if(pairs.length>0){return"?".concat(pairs.join("&"))}return""};var link=function link(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var dependencies=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _options$baseUrl=options.baseUrl,baseUrl=_options$baseUrl===void 0?"https://api.block.mason.link":_options$baseUrl,clientId=options.clientId,clientSecret=options.clientSecret;var proxy={fetch:dependencies.fetch||typeof fetch!=="undefined"&&fetch};if(!clientId||!clientSecret){throw new Error("Missing options.clientId or options.clientSecret")}var credential={};var authenticate=function(){var _ref=_asyncToGenerator(regeneratorRuntime.mark(function _callee(){var response,_ref2,access_token,errors,refresh_token;return regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!credential.accessToken){_context.next=2;break}return _context.abrupt("return",Promise.resolve(credential.accessToken));case 2:_context.next=4;return proxy.fetch("".concat(baseUrl,"/oauth2/token"),{body:JSON.stringify(credential.refreshToken?{grant_type:"refresh_token",refresh_token:credential.refreshToken}:{client_id:clientId,client_secret:clientSecret,grant_type:"client_credentials"}),headers:{"Content-Type":"application/json"},method:"POST"});case 4:response=_context.sent;_context.next=7;return response.json();case 7:_ref2=_context.sent;access_token=_ref2.access_token;errors=_ref2.errors;refresh_token=_ref2.refresh_token;if(!(errors&&errors.length>0)){_context.next=13;break}throw new Error(errors.map(function(error){return error.detail}).join(" "));case 13:Object.assign(credential,{accessToken:access_token,refreshToken:refresh_token});return _context.abrupt("return",credential.accessToken);case 15:case"end":return _context.stop();}}},_callee)}));return function authenticate(){return _ref.apply(this,arguments)}}();var authenticated=function(){var _ref3=_asyncToGenerator(regeneratorRuntime.mark(function _callee2(path){var fetchOptions,accessToken,response,outputs,_args2=arguments;return regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:fetchOptions=_args2.length>1&&_args2[1]!==undefined?_args2[1]:{};_context2.next=3;return authenticate();case 3:accessToken=_context2.sent;_context2.next=6;return proxy.fetch("".concat(baseUrl,"/v1").concat(path),_objectSpread({},fetchOptions,{headers:_objectSpread({},fetchOptions.headers,{Authorization:"Bearer ".concat(accessToken)}),method:fetchOptions.method||"GET"}));case 6:response=_context2.sent;_context2.next=9;return response.json();case 9:outputs=_context2.sent;return _context2.abrupt("return",outputs);case 11:case"end":return _context2.stop();}}},_callee2)}));return function authenticated(_x){return _ref3.apply(this,arguments)}}();return{get:function get(){var path=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"/";var inputs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return authenticated("".concat(path).concat(toQueryString(inputs)))},post:function post(){var path=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"/";var inputs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return authenticated(path,{body:JSON.stringify(inputs),headers:{"Content-Type":"application/json"},method:"POST"})}}};exports.link=link;var _default=link;exports["default"]=_default; \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=exports.link=void 0;require("@babel/polyfill");function _objectSpread(target){for(var i=1;i0&&arguments[0]!==undefined?arguments[0]:{};var pairs=[];var keys=Object.keys(inputs);for(var _i=0,_keys=keys;_i<_keys.length;_i++){var key=_keys[_i];var value=inputs[key];pairs.push("".concat(encodeURIComponent(key),"=").concat(encodeURIComponent(value)))}if(pairs.length>0){return"?".concat(pairs.join("&"))}return""};var link=function link(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var dependencies=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _options$baseUrl=options.baseUrl,baseUrl=_options$baseUrl===void 0?"https://api.block.mason.link":_options$baseUrl,clientId=options.clientId,clientSecret=options.clientSecret;var proxy={fetch:dependencies.fetch||typeof fetch!=="undefined"&&fetch};if(!clientId||!clientSecret){throw new Error("Missing options.clientId or options.clientSecret")}var credential={};var authenticate=function(){var _ref=_asyncToGenerator(regeneratorRuntime.mark(function _callee(){var proxyFetch,response,_ref2,access_token,errors,refresh_token;return regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!credential.accessToken){_context.next=2;break}return _context.abrupt("return",Promise.resolve(credential.accessToken));case 2:proxyFetch=proxy.fetch;_context.next=5;return proxyFetch("".concat(baseUrl,"/oauth2/token"),{body:JSON.stringify(credential.refreshToken?{grant_type:"refresh_token",refresh_token:credential.refreshToken}:{client_id:clientId,client_secret:clientSecret,grant_type:"client_credentials"}),headers:{"Content-Type":"application/json"},method:"POST"});case 5:response=_context.sent;_context.next=8;return response.json();case 8:_ref2=_context.sent;access_token=_ref2.access_token;errors=_ref2.errors;refresh_token=_ref2.refresh_token;if(!(errors&&errors.length>0)){_context.next=14;break}throw new Error(errors.map(function(error){return error.detail}).join(" "));case 14:Object.assign(credential,{accessToken:access_token,refreshToken:refresh_token});return _context.abrupt("return",credential.accessToken);case 16:case"end":return _context.stop();}}},_callee)}));return function authenticate(){return _ref.apply(this,arguments)}}();var authenticated=function(){var _ref3=_asyncToGenerator(regeneratorRuntime.mark(function _callee2(path){var fetchOptions,proxyFetch,accessToken,response,outputs,_args2=arguments;return regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:fetchOptions=_args2.length>1&&_args2[1]!==undefined?_args2[1]:{};proxyFetch=proxy.fetch;_context2.next=4;return authenticate();case 4:accessToken=_context2.sent;_context2.next=7;return proxyFetch("".concat(baseUrl,"/v1").concat(path),_objectSpread({},fetchOptions,{headers:_objectSpread({},fetchOptions.headers,{Authorization:"Bearer ".concat(accessToken)}),method:fetchOptions.method||"GET"}));case 7:response=_context2.sent;_context2.next=10;return response.json();case 10:outputs=_context2.sent;return _context2.abrupt("return",outputs);case 12:case"end":return _context2.stop();}}},_callee2)}));return function authenticated(_x){return _ref3.apply(this,arguments)}}();return{get:function get(){var path=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"/";var inputs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return authenticated("".concat(path).concat(toQueryString(inputs)))},post:function post(){var path=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"/";var inputs=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return authenticated(path,{body:JSON.stringify(inputs),headers:{"Content-Type":"application/json"},method:"POST"})}}};exports.link=link;var _default=link;exports["default"]=_default; \ No newline at end of file diff --git a/package.json b/package.json index 831c9c7..1d328b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@blockmason/link-sdk", - "version": "0.1.3", + "version": "0.1.4", "description": "Convenience library for accessing an API hosted on Blockmason Link.", "main": "index.js", "repository": "https://github.com/blockmason/link-sdk.js",