@rechargeapps/storefront-client 1.37.0 → 1.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -181,7 +181,7 @@ async function rechargeAdminRequest(method, url, { id, query, data, headers } =
181
181
  ...storefrontAccessToken ? { "X-Recharge-Storefront-Access-Token": storefrontAccessToken } : {},
182
182
  ...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
183
183
  ...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
184
- "X-Recharge-Sdk-Version": "1.37.0",
184
+ "X-Recharge-Sdk-Version": "1.37.1",
185
185
  ...headers ? headers : {}
186
186
  };
187
187
  return request.request(method, `${rechargeBaseUrl}${url}`, { id, query, data, headers: reqHeaders });
@@ -41,7 +41,7 @@ async function rechargeApiRequest(method, url, { id, query, data, headers } = {}
41
41
  "X-Recharge-Sdk-Fn": session.internalFnCall,
42
42
  ...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
43
43
  ...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
44
- "X-Recharge-Sdk-Version": "1.37.0",
44
+ "X-Recharge-Sdk-Version": "1.37.1",
45
45
  "X-Request-Id": session.internalRequestId,
46
46
  ...session.tmp_fn_identifier ? { "X-Recharge-Sdk-Fn-Identifier": session.tmp_fn_identifier } : {},
47
47
  ...headers ? headers : {}
@@ -107,7 +107,9 @@ async function request(method, url, { id, query, data, headers } = {}) {
107
107
  } catch (e) {
108
108
  }
109
109
  if (!response.ok) {
110
- if (result && result.error) {
110
+ if (response.status === 502 || response.status === 504) {
111
+ throw new error.RechargeRequestError("A gateway error occurred while making the request", response.status);
112
+ } else if (result && result.error) {
111
113
  throw new error.RechargeRequestError(result.error, response.status);
112
114
  } else if (result && result.errors) {
113
115
  throw new error.RechargeRequestError(JSON.stringify(result.errors), response.status);
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sources":["../../../src/utils/request.ts"],"sourcesContent":["import 'isomorphic-fetch';\n\nimport { nanoid } from 'nanoid/non-secure';\nimport stringify from 'qs/lib/stringify';\n\nimport { Method, RequestHeaders, RequestOptions, InternalSession, Session } from '../types';\nimport { getOptions } from './options';\nimport { RECHARGE_API_URL, RECHARGE_CDN_URL, SHOPIFY_APP_PROXY_URL } from '../constants/api';\nimport { RechargeRequestError } from './error';\n\nfunction stringifyQuery(str: unknown): string {\n return stringify(str, {\n encode: false,\n indices: false,\n arrayFormat: 'comma',\n });\n}\n\n/** @internal */\nexport function getInternalSession(session: Session | InternalSession, fnName: string): InternalSession {\n return {\n ...session,\n internalFnCall: (session as InternalSession).internalFnCall ?? fnName,\n internalRequestId: (session as InternalSession).internalRequestId ?? nanoid(),\n };\n}\n\nexport async function cdnRequest<T>(method: Method, url: string, requestOptions: RequestOptions = {}): Promise<T> {\n const opts = getOptions();\n return request(method, `${RECHARGE_CDN_URL(opts.environment)}/store/${opts.storeIdentifier}${url}`, requestOptions);\n}\n\nexport async function rechargeApiRequest<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {},\n session: InternalSession\n): Promise<T> {\n const { environment, environmentUri, storeIdentifier, loginRetryFn, appName, appVersion } = getOptions();\n if (!storeIdentifier) {\n throw new Error('InitRecharge has not been called and/or no store identifier has been defined.');\n }\n const token = session.apiToken;\n if (!token) {\n throw new Error('No API token defined on session.');\n }\n const rechargeBaseUrl = RECHARGE_API_URL(environment, environmentUri);\n const reqHeaders: RequestHeaders = {\n 'X-Recharge-Access-Token': token,\n 'X-Recharge-Version': '2021-11',\n 'X-Recharge-Sdk-Fn': session.internalFnCall,\n ...(appName ? { 'X-Recharge-Sdk-App-Name': appName } : {}),\n ...(appVersion ? { 'X-Recharge-Sdk-App-Version': appVersion } : {}),\n 'X-Recharge-Sdk-Version': '__SDK_VERSION__',\n 'X-Request-Id': session.internalRequestId,\n ...(session.tmp_fn_identifier ? { 'X-Recharge-Sdk-Fn-Identifier': session.tmp_fn_identifier } : {}),\n ...(headers ? headers : {}),\n };\n\n const localQuery = {\n shop_url: storeIdentifier,\n ...(query as any),\n };\n\n try {\n // await to catch any errors\n return await request<T>(method, `${rechargeBaseUrl}${url}`, { id, query: localQuery, data, headers: reqHeaders });\n } catch (error: unknown) {\n if (loginRetryFn && error instanceof RechargeRequestError && error.status === 401) {\n // call loginRetryFn and retry request on 401\n return loginRetryFn().then(session => {\n if (session) {\n return request(method, `${rechargeBaseUrl}${url}`, {\n id,\n query: localQuery,\n data,\n headers: {\n ...reqHeaders,\n 'X-Recharge-Access-Token': session.apiToken,\n },\n });\n }\n throw error;\n });\n }\n throw error;\n }\n}\n\nexport async function shopifyAppProxyRequest<T>(\n method: Method,\n url: string,\n requestOptions: RequestOptions = {}\n): Promise<T> {\n return request(method, `${SHOPIFY_APP_PROXY_URL}${url}`, requestOptions);\n}\n\nexport async function request<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {}\n): Promise<T> {\n let reqUrl = url.trim();\n\n if (id) {\n reqUrl = [reqUrl, `${id}`.trim()].join('/');\n }\n\n if (query) {\n let exQuery;\n [reqUrl, exQuery] = reqUrl.split('?');\n const fullQuery = [exQuery, stringifyQuery(query)].join('&').replace(/^&/, '');\n reqUrl = `${reqUrl}${fullQuery ? `?${fullQuery}` : ''}`;\n }\n\n let reqBody;\n if (data && method !== 'get') {\n reqBody = JSON.stringify(data);\n }\n\n const reqHeaders: RequestHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Recharge-App': 'storefront-client',\n ...(headers ? headers : {}),\n };\n\n const response = await fetch(reqUrl, {\n method,\n headers: reqHeaders,\n body: reqBody,\n });\n\n let result;\n try {\n result = await response.json();\n } catch (e) {\n // If we get here, it means we were a no content response.\n }\n\n if (!response.ok) {\n if (result && result.error) {\n throw new RechargeRequestError(result.error, response.status);\n } else if (result && result.errors) {\n throw new RechargeRequestError(JSON.stringify(result.errors), response.status);\n } else {\n throw new RechargeRequestError('A connection error occurred while making the request');\n }\n }\n\n return result as T;\n}\n"],"names":["nanoid","getOptions","RECHARGE_CDN_URL","RECHARGE_API_URL","error","RechargeRequestError","session","SHOPIFY_APP_PROXY_URL"],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sources":["../../../src/utils/request.ts"],"sourcesContent":["import 'isomorphic-fetch';\n\nimport { nanoid } from 'nanoid/non-secure';\nimport stringify from 'qs/lib/stringify';\n\nimport { Method, RequestHeaders, RequestOptions, InternalSession, Session } from '../types';\nimport { getOptions } from './options';\nimport { RECHARGE_API_URL, RECHARGE_CDN_URL, SHOPIFY_APP_PROXY_URL } from '../constants/api';\nimport { RechargeRequestError } from './error';\n\nfunction stringifyQuery(str: unknown): string {\n return stringify(str, {\n encode: false,\n indices: false,\n arrayFormat: 'comma',\n });\n}\n\n/** @internal */\nexport function getInternalSession(session: Session | InternalSession, fnName: string): InternalSession {\n return {\n ...session,\n internalFnCall: (session as InternalSession).internalFnCall ?? fnName,\n internalRequestId: (session as InternalSession).internalRequestId ?? nanoid(),\n };\n}\n\nexport async function cdnRequest<T>(method: Method, url: string, requestOptions: RequestOptions = {}): Promise<T> {\n const opts = getOptions();\n return request(method, `${RECHARGE_CDN_URL(opts.environment)}/store/${opts.storeIdentifier}${url}`, requestOptions);\n}\n\nexport async function rechargeApiRequest<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {},\n session: InternalSession\n): Promise<T> {\n const { environment, environmentUri, storeIdentifier, loginRetryFn, appName, appVersion } = getOptions();\n if (!storeIdentifier) {\n throw new Error('InitRecharge has not been called and/or no store identifier has been defined.');\n }\n const token = session.apiToken;\n if (!token) {\n throw new Error('No API token defined on session.');\n }\n const rechargeBaseUrl = RECHARGE_API_URL(environment, environmentUri);\n const reqHeaders: RequestHeaders = {\n 'X-Recharge-Access-Token': token,\n 'X-Recharge-Version': '2021-11',\n 'X-Recharge-Sdk-Fn': session.internalFnCall,\n ...(appName ? { 'X-Recharge-Sdk-App-Name': appName } : {}),\n ...(appVersion ? { 'X-Recharge-Sdk-App-Version': appVersion } : {}),\n 'X-Recharge-Sdk-Version': '__SDK_VERSION__',\n 'X-Request-Id': session.internalRequestId,\n ...(session.tmp_fn_identifier ? { 'X-Recharge-Sdk-Fn-Identifier': session.tmp_fn_identifier } : {}),\n ...(headers ? headers : {}),\n };\n\n const localQuery = {\n shop_url: storeIdentifier,\n ...(query as any),\n };\n\n try {\n // await to catch any errors\n return await request<T>(method, `${rechargeBaseUrl}${url}`, { id, query: localQuery, data, headers: reqHeaders });\n } catch (error: unknown) {\n if (loginRetryFn && error instanceof RechargeRequestError && error.status === 401) {\n // call loginRetryFn and retry request on 401\n return loginRetryFn().then(session => {\n if (session) {\n return request(method, `${rechargeBaseUrl}${url}`, {\n id,\n query: localQuery,\n data,\n headers: {\n ...reqHeaders,\n 'X-Recharge-Access-Token': session.apiToken,\n },\n });\n }\n throw error;\n });\n }\n throw error;\n }\n}\n\nexport async function shopifyAppProxyRequest<T>(\n method: Method,\n url: string,\n requestOptions: RequestOptions = {}\n): Promise<T> {\n return request(method, `${SHOPIFY_APP_PROXY_URL}${url}`, requestOptions);\n}\n\nexport async function request<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {}\n): Promise<T> {\n let reqUrl = url.trim();\n\n if (id) {\n reqUrl = [reqUrl, `${id}`.trim()].join('/');\n }\n\n if (query) {\n let exQuery;\n [reqUrl, exQuery] = reqUrl.split('?');\n const fullQuery = [exQuery, stringifyQuery(query)].join('&').replace(/^&/, '');\n reqUrl = `${reqUrl}${fullQuery ? `?${fullQuery}` : ''}`;\n }\n\n let reqBody;\n if (data && method !== 'get') {\n reqBody = JSON.stringify(data);\n }\n\n const reqHeaders: RequestHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Recharge-App': 'storefront-client',\n ...(headers ? headers : {}),\n };\n\n const response = await fetch(reqUrl, {\n method,\n headers: reqHeaders,\n body: reqBody,\n });\n\n let result;\n try {\n result = await response.json();\n } catch (e) {\n // If we get here, it means we were a no content response.\n }\n\n if (!response.ok) {\n if (response.status === 502 || response.status === 504) {\n throw new RechargeRequestError('A gateway error occurred while making the request', response.status);\n } else if (result && result.error) {\n throw new RechargeRequestError(result.error, response.status);\n } else if (result && result.errors) {\n throw new RechargeRequestError(JSON.stringify(result.errors), response.status);\n } else {\n throw new RechargeRequestError('A connection error occurred while making the request');\n }\n }\n\n return result as T;\n}\n"],"names":["nanoid","getOptions","RECHARGE_CDN_URL","RECHARGE_API_URL","error","RechargeRequestError","session","SHOPIFY_APP_PROXY_URL"],"mappings":"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"}
@@ -179,7 +179,7 @@ async function rechargeAdminRequest(method, url, { id, query, data, headers } =
179
179
  ...storefrontAccessToken ? { "X-Recharge-Storefront-Access-Token": storefrontAccessToken } : {},
180
180
  ...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
181
181
  ...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
182
- "X-Recharge-Sdk-Version": "1.37.0",
182
+ "X-Recharge-Sdk-Version": "1.37.1",
183
183
  ...headers ? headers : {}
184
184
  };
185
185
  return request(method, `${rechargeBaseUrl}${url}`, { id, query, data, headers: reqHeaders });
@@ -39,7 +39,7 @@ async function rechargeApiRequest(method, url, { id, query, data, headers } = {}
39
39
  "X-Recharge-Sdk-Fn": session.internalFnCall,
40
40
  ...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
41
41
  ...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
42
- "X-Recharge-Sdk-Version": "1.37.0",
42
+ "X-Recharge-Sdk-Version": "1.37.1",
43
43
  "X-Request-Id": session.internalRequestId,
44
44
  ...session.tmp_fn_identifier ? { "X-Recharge-Sdk-Fn-Identifier": session.tmp_fn_identifier } : {},
45
45
  ...headers ? headers : {}
@@ -105,7 +105,9 @@ async function request(method, url, { id, query, data, headers } = {}) {
105
105
  } catch (e) {
106
106
  }
107
107
  if (!response.ok) {
108
- if (result && result.error) {
108
+ if (response.status === 502 || response.status === 504) {
109
+ throw new RechargeRequestError("A gateway error occurred while making the request", response.status);
110
+ } else if (result && result.error) {
109
111
  throw new RechargeRequestError(result.error, response.status);
110
112
  } else if (result && result.errors) {
111
113
  throw new RechargeRequestError(JSON.stringify(result.errors), response.status);
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sources":["../../../src/utils/request.ts"],"sourcesContent":["import 'isomorphic-fetch';\n\nimport { nanoid } from 'nanoid/non-secure';\nimport stringify from 'qs/lib/stringify';\n\nimport { Method, RequestHeaders, RequestOptions, InternalSession, Session } from '../types';\nimport { getOptions } from './options';\nimport { RECHARGE_API_URL, RECHARGE_CDN_URL, SHOPIFY_APP_PROXY_URL } from '../constants/api';\nimport { RechargeRequestError } from './error';\n\nfunction stringifyQuery(str: unknown): string {\n return stringify(str, {\n encode: false,\n indices: false,\n arrayFormat: 'comma',\n });\n}\n\n/** @internal */\nexport function getInternalSession(session: Session | InternalSession, fnName: string): InternalSession {\n return {\n ...session,\n internalFnCall: (session as InternalSession).internalFnCall ?? fnName,\n internalRequestId: (session as InternalSession).internalRequestId ?? nanoid(),\n };\n}\n\nexport async function cdnRequest<T>(method: Method, url: string, requestOptions: RequestOptions = {}): Promise<T> {\n const opts = getOptions();\n return request(method, `${RECHARGE_CDN_URL(opts.environment)}/store/${opts.storeIdentifier}${url}`, requestOptions);\n}\n\nexport async function rechargeApiRequest<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {},\n session: InternalSession\n): Promise<T> {\n const { environment, environmentUri, storeIdentifier, loginRetryFn, appName, appVersion } = getOptions();\n if (!storeIdentifier) {\n throw new Error('InitRecharge has not been called and/or no store identifier has been defined.');\n }\n const token = session.apiToken;\n if (!token) {\n throw new Error('No API token defined on session.');\n }\n const rechargeBaseUrl = RECHARGE_API_URL(environment, environmentUri);\n const reqHeaders: RequestHeaders = {\n 'X-Recharge-Access-Token': token,\n 'X-Recharge-Version': '2021-11',\n 'X-Recharge-Sdk-Fn': session.internalFnCall,\n ...(appName ? { 'X-Recharge-Sdk-App-Name': appName } : {}),\n ...(appVersion ? { 'X-Recharge-Sdk-App-Version': appVersion } : {}),\n 'X-Recharge-Sdk-Version': '__SDK_VERSION__',\n 'X-Request-Id': session.internalRequestId,\n ...(session.tmp_fn_identifier ? { 'X-Recharge-Sdk-Fn-Identifier': session.tmp_fn_identifier } : {}),\n ...(headers ? headers : {}),\n };\n\n const localQuery = {\n shop_url: storeIdentifier,\n ...(query as any),\n };\n\n try {\n // await to catch any errors\n return await request<T>(method, `${rechargeBaseUrl}${url}`, { id, query: localQuery, data, headers: reqHeaders });\n } catch (error: unknown) {\n if (loginRetryFn && error instanceof RechargeRequestError && error.status === 401) {\n // call loginRetryFn and retry request on 401\n return loginRetryFn().then(session => {\n if (session) {\n return request(method, `${rechargeBaseUrl}${url}`, {\n id,\n query: localQuery,\n data,\n headers: {\n ...reqHeaders,\n 'X-Recharge-Access-Token': session.apiToken,\n },\n });\n }\n throw error;\n });\n }\n throw error;\n }\n}\n\nexport async function shopifyAppProxyRequest<T>(\n method: Method,\n url: string,\n requestOptions: RequestOptions = {}\n): Promise<T> {\n return request(method, `${SHOPIFY_APP_PROXY_URL}${url}`, requestOptions);\n}\n\nexport async function request<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {}\n): Promise<T> {\n let reqUrl = url.trim();\n\n if (id) {\n reqUrl = [reqUrl, `${id}`.trim()].join('/');\n }\n\n if (query) {\n let exQuery;\n [reqUrl, exQuery] = reqUrl.split('?');\n const fullQuery = [exQuery, stringifyQuery(query)].join('&').replace(/^&/, '');\n reqUrl = `${reqUrl}${fullQuery ? `?${fullQuery}` : ''}`;\n }\n\n let reqBody;\n if (data && method !== 'get') {\n reqBody = JSON.stringify(data);\n }\n\n const reqHeaders: RequestHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Recharge-App': 'storefront-client',\n ...(headers ? headers : {}),\n };\n\n const response = await fetch(reqUrl, {\n method,\n headers: reqHeaders,\n body: reqBody,\n });\n\n let result;\n try {\n result = await response.json();\n } catch (e) {\n // If we get here, it means we were a no content response.\n }\n\n if (!response.ok) {\n if (result && result.error) {\n throw new RechargeRequestError(result.error, response.status);\n } else if (result && result.errors) {\n throw new RechargeRequestError(JSON.stringify(result.errors), response.status);\n } else {\n throw new RechargeRequestError('A connection error occurred while making the request');\n }\n }\n\n return result as T;\n}\n"],"names":["session"],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sources":["../../../src/utils/request.ts"],"sourcesContent":["import 'isomorphic-fetch';\n\nimport { nanoid } from 'nanoid/non-secure';\nimport stringify from 'qs/lib/stringify';\n\nimport { Method, RequestHeaders, RequestOptions, InternalSession, Session } from '../types';\nimport { getOptions } from './options';\nimport { RECHARGE_API_URL, RECHARGE_CDN_URL, SHOPIFY_APP_PROXY_URL } from '../constants/api';\nimport { RechargeRequestError } from './error';\n\nfunction stringifyQuery(str: unknown): string {\n return stringify(str, {\n encode: false,\n indices: false,\n arrayFormat: 'comma',\n });\n}\n\n/** @internal */\nexport function getInternalSession(session: Session | InternalSession, fnName: string): InternalSession {\n return {\n ...session,\n internalFnCall: (session as InternalSession).internalFnCall ?? fnName,\n internalRequestId: (session as InternalSession).internalRequestId ?? nanoid(),\n };\n}\n\nexport async function cdnRequest<T>(method: Method, url: string, requestOptions: RequestOptions = {}): Promise<T> {\n const opts = getOptions();\n return request(method, `${RECHARGE_CDN_URL(opts.environment)}/store/${opts.storeIdentifier}${url}`, requestOptions);\n}\n\nexport async function rechargeApiRequest<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {},\n session: InternalSession\n): Promise<T> {\n const { environment, environmentUri, storeIdentifier, loginRetryFn, appName, appVersion } = getOptions();\n if (!storeIdentifier) {\n throw new Error('InitRecharge has not been called and/or no store identifier has been defined.');\n }\n const token = session.apiToken;\n if (!token) {\n throw new Error('No API token defined on session.');\n }\n const rechargeBaseUrl = RECHARGE_API_URL(environment, environmentUri);\n const reqHeaders: RequestHeaders = {\n 'X-Recharge-Access-Token': token,\n 'X-Recharge-Version': '2021-11',\n 'X-Recharge-Sdk-Fn': session.internalFnCall,\n ...(appName ? { 'X-Recharge-Sdk-App-Name': appName } : {}),\n ...(appVersion ? { 'X-Recharge-Sdk-App-Version': appVersion } : {}),\n 'X-Recharge-Sdk-Version': '__SDK_VERSION__',\n 'X-Request-Id': session.internalRequestId,\n ...(session.tmp_fn_identifier ? { 'X-Recharge-Sdk-Fn-Identifier': session.tmp_fn_identifier } : {}),\n ...(headers ? headers : {}),\n };\n\n const localQuery = {\n shop_url: storeIdentifier,\n ...(query as any),\n };\n\n try {\n // await to catch any errors\n return await request<T>(method, `${rechargeBaseUrl}${url}`, { id, query: localQuery, data, headers: reqHeaders });\n } catch (error: unknown) {\n if (loginRetryFn && error instanceof RechargeRequestError && error.status === 401) {\n // call loginRetryFn and retry request on 401\n return loginRetryFn().then(session => {\n if (session) {\n return request(method, `${rechargeBaseUrl}${url}`, {\n id,\n query: localQuery,\n data,\n headers: {\n ...reqHeaders,\n 'X-Recharge-Access-Token': session.apiToken,\n },\n });\n }\n throw error;\n });\n }\n throw error;\n }\n}\n\nexport async function shopifyAppProxyRequest<T>(\n method: Method,\n url: string,\n requestOptions: RequestOptions = {}\n): Promise<T> {\n return request(method, `${SHOPIFY_APP_PROXY_URL}${url}`, requestOptions);\n}\n\nexport async function request<T>(\n method: Method,\n url: string,\n { id, query, data, headers }: RequestOptions = {}\n): Promise<T> {\n let reqUrl = url.trim();\n\n if (id) {\n reqUrl = [reqUrl, `${id}`.trim()].join('/');\n }\n\n if (query) {\n let exQuery;\n [reqUrl, exQuery] = reqUrl.split('?');\n const fullQuery = [exQuery, stringifyQuery(query)].join('&').replace(/^&/, '');\n reqUrl = `${reqUrl}${fullQuery ? `?${fullQuery}` : ''}`;\n }\n\n let reqBody;\n if (data && method !== 'get') {\n reqBody = JSON.stringify(data);\n }\n\n const reqHeaders: RequestHeaders = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Recharge-App': 'storefront-client',\n ...(headers ? headers : {}),\n };\n\n const response = await fetch(reqUrl, {\n method,\n headers: reqHeaders,\n body: reqBody,\n });\n\n let result;\n try {\n result = await response.json();\n } catch (e) {\n // If we get here, it means we were a no content response.\n }\n\n if (!response.ok) {\n if (response.status === 502 || response.status === 504) {\n throw new RechargeRequestError('A gateway error occurred while making the request', response.status);\n } else if (result && result.error) {\n throw new RechargeRequestError(result.error, response.status);\n } else if (result && result.errors) {\n throw new RechargeRequestError(JSON.stringify(result.errors), response.status);\n } else {\n throw new RechargeRequestError('A connection error occurred while making the request');\n }\n }\n\n return result as T;\n}\n"],"names":["session"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2521,7 +2521,7 @@ interface Onetime {
2521
2521
  }
2522
2522
  type OnetimeIncludes = 'address' | 'customer' | 'metafields' | 'bundle_product' | 'bundle_selections' | 'charge_activities';
2523
2523
  type OnetimeRequiredCreateProps = 'address_id' | 'external_variant_id' | 'product_title' | 'quantity';
2524
- type OnetimeOptionalCreateProps = 'external_product_id' | 'price' | 'next_charge_scheduled_at' | 'properties' | 'sku';
2524
+ type OnetimeOptionalCreateProps = 'external_product_id' | 'next_charge_scheduled_at' | 'properties' | 'sku';
2525
2525
  interface CreateOnetimeRequest extends SubType<Onetime, OnetimeRequiredCreateProps, OnetimeOptionalCreateProps> {
2526
2526
  /** Instructs to add the Onetime to the next charge scheduled under this Address. */
2527
2527
  add_to_next_charge?: boolean;