UNPKG

@chemicalluck/recharge-api-node

Version:
2 lines 6.88 kB
"use strict";var q=Object.create;var V=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var B=(t,e)=>{for(var r in e)V(t,r,{get:e[r],enumerable:!0})},N=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of U(e))!j.call(t,o)&&o!==r&&V(t,o,{get:()=>e[o],enumerable:!(i=S(e,o))||i.enumerable});return t};var G=(t,e,r)=>(r=t!=null?q(L(t)):{},N(e||!t||!t.__esModule?V(r,"default",{value:t,enumerable:!0}):r,t)),M=t=>N(V({},"__esModule",{value:!0}),t);var H={};B(H,{HTTPResponseError:()=>c,NotImplementedError:()=>h,Recharge:()=>D,RechargeAPIError:()=>a,RechargeAPIVersion:()=>n,RequestMethod:()=>A});module.exports=M(H);var c=class extends Error{constructor(e){super(`HTTP Error Response: ${e.status} ${e.statusText}`),this.response=e}},a=class extends Error{constructor(e){super(`Recharge API Error: ${e}`)}},h=class extends Error{constructor(e){super(`Not Implemented: ${e}`)}};var A=(o=>(o.GET="GET",o.POST="POST",o.PUT="PUT",o.DELETE="DELETE",o))(A||{});var n=(r=>(r.v1="2021-01",r.v2="2021-11",r))(n||{});var $=class{constructor(e){this.base_url="https://api.rechargeapps.com";this.resource=null;this.recharge_version="2021-01";this.client=e}get url(){if(!this.resource)throw new Error("Resource not set");return`${this.base_url}/${this.recharge_version}/${this.resource}`}_get(e,r){return this.client.get(e,this.recharge_version,r)}_post(e,r){return this.client.post(e,this.recharge_version,r)}_put(e,r){return this.client.put(e,this.recharge_version,r)}_delete(e,r){return this.client.delete(e,this.recharge_version,r)}_paginate(e,r){return this.client.paginate(e,this.recharge_version,r)}},s=$;var u=class extends s{constructor(e){super(e),this.resource="addresses"}create(e,r){return this.client.post(`${this.base_url}/customers/${e}/${this.resource}`,this.recharge_version,r)}get(e){return this._get(`${this.url}/${e}`)}update(e,r){return this._put(`${this.url}/${e}`,r)}delete(e){return this._delete(`${this.url}/${e}`)}list(e,r){return this._get(`${this.base_url}/customers/${e}/${this.resource}`,r)}count(e){return this._get(`${this.url}/count`,e)}validate(e){return this._post(`${this.url}/validate`,e)}applyDiscount(e,r){return this._post(`${this.url}/${e}/apply_discount`,r)}removeDiscount(e){return this._post(`${this.url}/${e}/remove_discount`)}};var p=class extends s{constructor(e){super(e),this.resource="charges",this.recharge_version="2021-01"}};var m=class extends s{constructor(e){super(e),this.resource="checkouts",this.recharge_version="2021-01"}};var g=class extends s{constructor(e){super(e),this.resource="customers",this.recharge_version="2021-01"}};var R=class extends s{constructor(e){super(e),this.resource="orders",this.recharge_version="2021-01"}};var d=class extends s{constructor(e){super(e),this.resource="subscriptions",this.recharge_version="2021-01"}};var l=class extends s{constructor(e){super(e),this.resource="onetimes",this.recharge_version="2021-01"}};var f=class extends s{constructor(e){super(e),this.resource="discounts",this.recharge_version="2021-01"}};var _=class extends s{constructor(e){super(e),this.resource="webhooks",this.recharge_version="2021-01"}};var v=class extends s{constructor(e){super(e),this.resource="metafields",this.recharge_version="2021-01"}};var x=class extends s{constructor(e){super(e),this.resource="shop",this.recharge_version="2021-01"}};var P=class extends s{constructor(e){super(e),this.resource="products",this.recharge_version="2021-01"}};var T=class extends s{constructor(e){super(e),this.resource="async_batch",this.recharge_version="2021-01"}};var w=class extends s{constructor(e){super(e),this.resource="notifications",this.recharge_version="2021-01"}};var y=class extends s{constructor(e){super(e),this.resource="token_information",this.recharge_version="2021-01"}};var I=G(require("node-fetch"),1);var b=class{constructor(e){this._headers={};this._retries=0;this._maxRetries=3;this._retryDelay=3e3;this.headers={"X-Recharge-Access-Token":e,"X-Recharge-API-Version":"2021-01","Content-Type":"application/json"}}get retries(){return this._retries}set retries(e){this._retries=e}get maxRetries(){return this._maxRetries}get retryDelay(){return this._retryDelay}get headers(){return this._headers}set headers(e){this._headers=e}_setVersion(e){this.headers["X-Recharge-API-Version"]=e}async _retry(e){if(this._retries>=this._maxRetries)throw console.error("Max retries reached"),new a("Max retries reached");return this.retries++,console.info(`Retrying: ${this.retries}/${this.maxRetries} retries, waiting ${this.retryDelay}ms...`),await this._delay(this._retryDelay),this._send(e)}async _delay(e){return new Promise(r=>setTimeout(r,e))}_constructURL(e,r){let i=new URL(e);return r&&Object.keys(r).forEach(o=>i.searchParams.append(o,r[o])),i.toString()}_constructRequestOptions(e,r){return{method:e,headers:this.headers,body:["POST","PUT","PATCH"].includes(e.toUpperCase())&&r?JSON.stringify(r):void 0}}async _request(e,r,i,o){let C=this._constructURL(r,i),k=this._constructRequestOptions(e,o),O=new I.Request(C,k);return this._send(O)}async _send(e){let r=await(0,I.default)(e);if(r.status===429||r.status>=500)return console.warn(r.status===429?"Rate limited, retrying...":"Server error, retrying..."),this._retry(e);if(this.retries=0,!r.ok)throw new c(r);return r}async _extractData(e){return e.json()}_getNextPageV1(e){let i=(e.headers.get("link")||"").match(/<([^>]+)>; rel="next"/);if(i)return i[1]}_getNextPageV2(e){throw new h("getNextPageV2")}_getNextPage(e,r){switch(r){case"2021-01":return this._getNextPageV1(e);case"2021-11":return this._getNextPageV2(e)}}async paginate(e,r,i){this._setVersion(r);let o=[];for(;e;){let C=await this._request("GET",e,i),k=await this._extractData(C);o=o.concat(k),e=this._getNextPage(C,r)||""}return o}async get(e,r,i){return this._setVersion(r),this._request("GET",e,i).then(this._extractData)}async post(e,r,i){this._setVersion(r);let o=await this._request("POST",e,void 0,i);return this._extractData(o)}async put(e,r,i){this._setVersion(r);let o=await this._request("PUT",e,void 0,i);return this._extractData(o)}async delete(e,r,i){this._setVersion(r);let o=await this._request("DELETE",e,void 0,i);return this._extractData(o)}};var E=class{constructor(e){this.address=new u(e),this.charge=new p(e),this.checkout=new m(e),this.customer=new g(e),this.order=new R(e),this.subscription=new d(e),this.onetime=new l(e),this.discount=new f(e),this.webhook=new _(e),this.metafield=new v(e),this.shop=new x(e),this.product=new P(e),this.asyncBatch=new T(e),this.notification=new w(e),this.token=new y(e)}},D=class{constructor(e,r){this.client=r||new b(e),this.v1=new E(this.client)}};0&&(module.exports={HTTPResponseError,NotImplementedError,Recharge,RechargeAPIError,RechargeAPIVersion,RequestMethod}); //# sourceMappingURL=index.cjs.map