UNPKG

@sumup/sdk

Version:

The official TypeScript SDK for the SumUp API

514 lines (513 loc) 14.6 kB
var _computedKey; class APIResource { _client; constructor(client){ this._client = client; } } class SumUpError extends Error { } class APIError extends SumUpError { status; error; response; constructor(status, error, response){ const message = "string" == typeof error ? error : JSON.stringify(error); super(`${status}: ${message}`); this.status = status; this.error = error; this.response = response; } } _computedKey = Symbol.toStringTag; class APIPromise { resp; constructor(resp){ this.resp = resp; } async parse() { const res = await this.resp; const contentType = res.headers.get("content-type"); const isJSON = contentType?.includes("application/json"); if (!isJSON) throw new SumUpError("Unexpected non-json response."); return await res.json(); } async withResponse() { const [data, response] = await Promise.all([ this.parse(), await this.resp ]); return { data, response }; } then(onFulfilled, onRejected) { return this.parse().then(onFulfilled, onRejected); } catch(onRejected) { return this.parse().catch(onRejected); } finally(onFinally) { return this.parse().finally(onFinally); } [_computedKey] = "APIPromise"; } const VERSION = "0.0.4"; class HTTPClient { host; apiKey; baseParams; constructor({ apiKey, host = "https://api.sumup.com", baseParams = {} } = {}){ this.host = host; this.apiKey = apiKey; const headers = new Headers({ Accept: "application/json", "Content-Type": "application/json", "User-Agent": `${this.constructor.name.toLowerCase()}-ts/${VERSION}` }); if (apiKey) headers.append("Authorization", `Bearer ${apiKey}`); this.baseParams = mergeParams({ headers }, baseParams); } get({ ...params }) { return this.request({ method: "GET", ...params }); } post({ ...params }) { return this.request({ method: "POST", ...params }); } put({ ...params }) { return this.request({ method: "put", ...params }); } patch({ ...params }) { return this.request({ method: "PATCH", ...params }); } delete({ ...params }) { return this.request({ method: "DELETE", ...params }); } request({ body, path, query, host: hostOverride, ...fetchParams }) { const host = hostOverride || this.host; const url = new URL(host + (host.endsWith("/") && path.startsWith("/") ? path.slice(1) : path)); if ("object" == typeof query && query && !Array.isArray(query)) url.search = this.stringifyQuery(query); const init = { ...mergeParams(this.baseParams, fetchParams), body: JSON.stringify(body) }; return new APIPromise(this.do(url, init)); } async do(input, init) { const res = await fetch(input, init); if (!res.ok) { const contentType = res.headers.get("content-type"); const isJSON = contentType?.includes("application/json"); throw new APIError(res.status, isJSON ? await res.json() : await res.text(), res); } return res; } stringifyQuery(query) { return Object.entries(query).filter(([_, value])=>void 0 !== value).map(([key, value])=>{ if ("string" == typeof value || "number" == typeof value || "boolean" == typeof value) return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; if (null === value) return `${encodeURIComponent(key)}=`; if (Array.isArray(value)) return value.map((v)=>`${encodeURIComponent(key)}=${encodeURIComponent(v)}`).join("&"); throw new Error(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null.`); }).join("&"); } } function mergeParams(a, b) { const headers = new Headers(a.headers); for (const [key, value] of new Headers(b.headers).entries())headers.set(key, value); return { ...a, ...b, headers }; } class Checkouts extends APIResource { listAvailablePaymentMethods(merchantCode, query, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/payment-methods`, query, ...params }); } list(query, params) { return this._client.get({ path: "/v0.1/checkouts", query, ...params }); } create(body, params) { return this._client.post({ path: "/v0.1/checkouts", body, ...params }); } get(id, params) { return this._client.get({ path: `/v0.1/checkouts/${id}`, ...params }); } process(id, body, params) { return this._client.put({ path: `/v0.1/checkouts/${id}`, body, ...params }); } deactivate(id, params) { return this._client.delete({ path: `/v0.1/checkouts/${id}`, ...params }); } } class Customers extends APIResource { create(body, params) { return this._client.post({ path: "/v0.1/customers", body, ...params }); } get(customerId, params) { return this._client.get({ path: `/v0.1/customers/${customerId}`, ...params }); } update(customerId, body, params) { return this._client.put({ path: `/v0.1/customers/${customerId}`, body, ...params }); } listPaymentInstruments(customerId, params) { return this._client.get({ path: `/v0.1/customers/${customerId}/payment-instruments`, ...params }); } deactivatePaymentInstrument(customerId, token, params) { return this._client.delete({ path: `/v0.1/customers/${customerId}/payment-instruments/${token}`, ...params }); } } class Members extends APIResource { list(merchantCode, query, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/members`, query, ...params }); } create(merchantCode, body, params) { return this._client.post({ path: `/v0.1/merchants/${merchantCode}/members`, body, ...params }); } get(merchantCode, memberId, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/members/${memberId}`, ...params }); } update(merchantCode, memberId, body, params) { return this._client.put({ path: `/v0.1/merchants/${merchantCode}/members/${memberId}`, body, ...params }); } delete(merchantCode, memberId, params) { return this._client.delete({ path: `/v0.1/merchants/${merchantCode}/members/${memberId}`, ...params }); } } class Memberships extends APIResource { list(query, params) { return this._client.get({ path: "/v0.1/memberships", query, ...params }); } } class Merchant extends APIResource { get(query, params) { return this._client.get({ path: "/v0.1/me", query, ...params }); } getPersonalProfile(params) { return this._client.get({ path: "/v0.1/me/personal-profile", ...params }); } getMerchantProfile(params) { return this._client.get({ path: "/v0.1/me/merchant-profile", ...params }); } getDoingBusinessAs(params) { return this._client.get({ path: "/v0.1/me/merchant-profile/doing-business-as", ...params }); } listBankAccounts(merchantCode, query, params) { return this._client.get({ path: `/v1.1/merchants/${merchantCode}/bank-accounts`, query, ...params }); } listBankAccountsDeprecated(query, params) { return this._client.get({ path: "/v0.1/me/merchant-profile/bank-accounts", query, ...params }); } getSettings(params) { return this._client.get({ path: "/v0.1/me/merchant-profile/settings", ...params }); } } class Payouts extends APIResource { list(merchantCode, query, params) { return this._client.get({ path: `/v1.0/merchants/${merchantCode}/payouts`, query, ...params }); } listDeprecated(query, params) { return this._client.get({ path: "/v0.1/me/financials/payouts", query, ...params }); } } class Readers extends APIResource { createCheckout(merchantCode, id, body, params) { return this._client.post({ path: `/v0.1/merchants/${merchantCode}/readers/${id}/checkout`, body, ...params }); } terminateCheckout(merchantCode, id, params) { return this._client.post({ path: `/v0.1/merchants/${merchantCode}/readers/${id}/terminate`, ...params }); } list(merchantCode, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/readers`, ...params }); } create(merchantCode, body, params) { return this._client.post({ path: `/v0.1/merchants/${merchantCode}/readers`, body, ...params }); } get(merchantCode, id, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/readers/${id}`, ...params }); } deleteReader(merchantCode, id, params) { return this._client.delete({ path: `/v0.1/merchants/${merchantCode}/readers/${id}`, ...params }); } update(merchantCode, id, body, params) { return this._client.patch({ path: `/v0.1/merchants/${merchantCode}/readers/${id}`, body, ...params }); } } class Receipts extends APIResource { get(id, query, params) { return this._client.get({ path: `/v1.1/receipts/${id}`, query, ...params }); } } class Roles extends APIResource { list(merchantCode, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/roles`, ...params }); } create(merchantCode, body, params) { return this._client.post({ path: `/v0.1/merchants/${merchantCode}/roles`, body, ...params }); } get(merchantCode, roleId, params) { return this._client.get({ path: `/v0.1/merchants/${merchantCode}/roles/${roleId}`, ...params }); } delete(merchantCode, roleId, params) { return this._client.delete({ path: `/v0.1/merchants/${merchantCode}/roles/${roleId}`, ...params }); } update(merchantCode, roleId, body, params) { return this._client.patch({ path: `/v0.1/merchants/${merchantCode}/roles/${roleId}`, body, ...params }); } } class Subaccounts extends APIResource { listSubAccounts(query, params) { return this._client.get({ path: "/v0.1/me/accounts", query, ...params }); } createSubAccount(body, params) { return this._client.post({ path: "/v0.1/me/accounts", body, ...params }); } compatGetOperator(operatorId, params) { return this._client.get({ path: `/v0.1/me/accounts/${operatorId}`, ...params }); } updateSubAccount(operatorId, body, params) { return this._client.put({ path: `/v0.1/me/accounts/${operatorId}`, body, ...params }); } deactivateSubAccount(operatorId, params) { return this._client.delete({ path: `/v0.1/me/accounts/${operatorId}`, ...params }); } } class Transactions extends APIResource { refund(txnId, body, params) { return this._client.post({ path: `/v0.1/me/refund/${txnId}`, body, ...params }); } get(merchantCode, query, params) { return this._client.get({ path: `/v2.1/merchants/${merchantCode}/transactions`, query, ...params }); } getDeprecated(query, params) { return this._client.get({ path: "/v0.1/me/transactions", query, ...params }); } list(merchantCode, query, params) { return this._client.get({ path: `/v2.1/merchants/${merchantCode}/transactions/history`, query, ...params }); } listDeprecated(query, params) { return this._client.get({ path: "/v0.1/me/transactions/history", query, ...params }); } } class SumUp extends HTTPClient { checkouts = new Checkouts(this); customers = new Customers(this); members = new Members(this); memberships = new Memberships(this); merchant = new Merchant(this); payouts = new Payouts(this); readers = new Readers(this); receipts = new Receipts(this); roles = new Roles(this); subaccounts = new Subaccounts(this); transactions = new Transactions(this); static SumUp = this; } SumUp.Checkouts = Checkouts; SumUp.Customers = Customers; SumUp.Members = Members; SumUp.Memberships = Memberships; SumUp.Merchant = Merchant; SumUp.Payouts = Payouts; SumUp.Readers = Readers; SumUp.Receipts = Receipts; SumUp.Roles = Roles; SumUp.Subaccounts = Subaccounts; SumUp.Transactions = Transactions; const src = SumUp; export { SumUp, src as default }; //# sourceMappingURL=index.js.map