@rechargeapps/storefront-client 2.3.0 → 2.4.0
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.
- package/dist/cjs/api/auth.js +1 -1
- package/dist/cjs/api/bundleData.js +1 -1
- package/dist/cjs/api/flow.js +19 -0
- package/dist/cjs/api/flow.js.map +1 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/request.js +1 -1
- package/dist/esm/api/auth.js +1 -1
- package/dist/esm/api/bundleData.js +1 -1
- package/dist/esm/api/flow.js +17 -0
- package/dist/esm/api/flow.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/request.js +1 -1
- package/dist/index.d.ts +32 -4
- package/dist/umd/recharge-client.min.js +2 -2
- package/package.json +3 -3
package/dist/cjs/api/auth.js
CHANGED
|
@@ -190,7 +190,7 @@ async function rechargeAdminRequest(method, url, { id, query, data, headers } =
|
|
|
190
190
|
...storefrontAccessToken ? { "X-Recharge-Storefront-Access-Token": storefrontAccessToken } : {},
|
|
191
191
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
192
192
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
|
|
193
|
-
"X-Recharge-Sdk-Version": "2.
|
|
193
|
+
"X-Recharge-Sdk-Version": "2.4.0",
|
|
194
194
|
...headers ? headers : {}
|
|
195
195
|
};
|
|
196
196
|
return request.request(method, `${rechargeBaseUrl}${url}`, { id, query, data, headers: reqHeaders });
|
|
@@ -16,7 +16,7 @@ async function loadFromOnlineStore(id, country_code) {
|
|
|
16
16
|
const { appName, appVersion } = options.getOptions();
|
|
17
17
|
const headers = {
|
|
18
18
|
"X-Recharge-Sdk-Fn": "loadFromOnlineStore",
|
|
19
|
-
"X-Recharge-Sdk-Version": "2.
|
|
19
|
+
"X-Recharge-Sdk-Version": "2.4.0",
|
|
20
20
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
21
21
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {}
|
|
22
22
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var request = require('../utils/request.js');
|
|
4
|
+
var url = require('../utils/url.js');
|
|
5
|
+
|
|
6
|
+
async function triggerCustomerPortalFlow(session, subscriptionId, action) {
|
|
7
|
+
if (subscriptionId === void 0 || subscriptionId === "") {
|
|
8
|
+
throw new Error("Subscription ID is required");
|
|
9
|
+
}
|
|
10
|
+
return request.rechargeApiRequest(
|
|
11
|
+
"post",
|
|
12
|
+
`/flows/customer_portal_flow/subscription/${url.encodePathSegment(subscriptionId)}`,
|
|
13
|
+
{ query: { action }, data: {} },
|
|
14
|
+
request.getInternalSession(session, "triggerCustomerPortalFlow")
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.triggerCustomerPortalFlow = triggerCustomerPortalFlow;
|
|
19
|
+
//# sourceMappingURL=flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.js","sources":["../../../src/api/flow.ts"],"sourcesContent":["import { getInternalSession, rechargeApiRequest } from '../utils/request';\nimport { encodePathSegment } from '../utils/url';\nimport { CustomerPortalFlowAction, Session, TriggerCustomerPortalFlowResponse } from '../types';\n\n/**\n * Trigger the store's active customer portal flow for a subscription.\n *\n * The flow is queued, not finished: a successful result only means the job was enqueued.\n *\n * Works with a customer portal session (only for that customer's own subscriptions), or with an\n * API token that has both the `read_subscriptions` and `write_flows` scopes.\n *\n * The store needs the `enable_customer_portal_triggered_flows` beta flag and an active\n * `customer_portal_triggered_flow` with trigger `subscription/unpack` and `limits.max_times_per_customer: -1`.\n *\n * Throws a `RechargeRequestError` with one of these statuses on failure:\n * - `403`: the feature is not enabled for the store, or the token is missing a scope. Not retryable.\n * - `404`: the subscription does not exist or does not belong to the customer.\n * - `422` \"Unable to trigger flows, please try again\": temporary, safe to retry. Any other `422` means the action was invalid.\n * - `429`: this subscription was already triggered for this action in the last 24h. Treat it as already done rather than retrying.\n */\nexport async function triggerCustomerPortalFlow(\n session: Session,\n subscriptionId: string | number,\n action: CustomerPortalFlowAction\n): Promise<TriggerCustomerPortalFlowResponse> {\n if (subscriptionId === undefined || subscriptionId === '') {\n throw new Error('Subscription ID is required');\n }\n return rechargeApiRequest<TriggerCustomerPortalFlowResponse>(\n 'post',\n `/flows/customer_portal_flow/subscription/${encodePathSegment(subscriptionId)}`,\n { query: { action }, data: {} },\n getInternalSession(session, 'triggerCustomerPortalFlow')\n );\n}\n"],"names":["rechargeApiRequest","encodePathSegment","getInternalSession"],"mappings":";;;;;AAqBsB,eAAA,yBAAA,CACpB,OACA,EAAA,cAAA,EACA,MAC4C,EAAA;AAC5C,EAAI,IAAA,cAAA,KAAmB,KAAa,CAAA,IAAA,cAAA,KAAmB,EAAI,EAAA;AACzD,IAAM,MAAA,IAAI,MAAM,6BAA6B,CAAA,CAAA;AAAA,GAC/C;AACA,EAAO,OAAAA,0BAAA;AAAA,IACL,MAAA;AAAA,IACA,CAAA,yCAAA,EAA4CC,qBAAkB,CAAA,cAAc,CAAC,CAAA,CAAA;AAAA,IAC7E,EAAE,KAAO,EAAA,EAAE,QAAU,EAAA,IAAA,EAAM,EAAG,EAAA;AAAA,IAC9BC,0BAAA,CAAmB,SAAS,2BAA2B,CAAA;AAAA,GACzD,CAAA;AACF;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -10,6 +10,7 @@ var collection = require('./api/collection.js');
|
|
|
10
10
|
var credit = require('./api/credit.js');
|
|
11
11
|
var customer = require('./api/customer.js');
|
|
12
12
|
var customerSurveys = require('./api/customerSurveys.js');
|
|
13
|
+
var flow = require('./api/flow.js');
|
|
13
14
|
var gift = require('./api/gift.js');
|
|
14
15
|
var membership = require('./api/membership.js');
|
|
15
16
|
var membershipProgram = require('./api/membershipProgram.js');
|
|
@@ -90,6 +91,7 @@ exports.updateCustomer = customer.updateCustomer;
|
|
|
90
91
|
exports.claimOfferCustomerSurvey = customerSurveys.claimOfferCustomerSurvey;
|
|
91
92
|
exports.getCustomerSurveyOffers = customerSurveys.getCustomerSurveyOffers;
|
|
92
93
|
exports.getCustomerSurveyReasons = customerSurveys.getCustomerSurveyReasons;
|
|
94
|
+
exports.triggerCustomerPortalFlow = flow.triggerCustomerPortalFlow;
|
|
93
95
|
exports.getGiftPurchase = gift.getGiftPurchase;
|
|
94
96
|
exports.listGiftPurchases = gift.listGiftPurchases;
|
|
95
97
|
exports.activateMembership = membership.activateMembership;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -46,7 +46,7 @@ async function rechargeApiRequest(method, url, { id, query, data, headers } = {}
|
|
|
46
46
|
"X-Recharge-Sdk-Fn": session.internalFnCall,
|
|
47
47
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
48
48
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
|
|
49
|
-
"X-Recharge-Sdk-Version": "2.
|
|
49
|
+
"X-Recharge-Sdk-Version": "2.4.0",
|
|
50
50
|
"X-Request-Id": session.internalRequestId,
|
|
51
51
|
...session.tmp_fn_identifier ? { "X-Recharge-Sdk-Fn-Identifier": session.tmp_fn_identifier } : {},
|
|
52
52
|
...headers ? headers : {}
|
package/dist/esm/api/auth.js
CHANGED
|
@@ -188,7 +188,7 @@ async function rechargeAdminRequest(method, url, { id, query, data, headers } =
|
|
|
188
188
|
...storefrontAccessToken ? { "X-Recharge-Storefront-Access-Token": storefrontAccessToken } : {},
|
|
189
189
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
190
190
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
|
|
191
|
-
"X-Recharge-Sdk-Version": "2.
|
|
191
|
+
"X-Recharge-Sdk-Version": "2.4.0",
|
|
192
192
|
...headers ? headers : {}
|
|
193
193
|
};
|
|
194
194
|
return request(method, `${rechargeBaseUrl}${url}`, { id, query, data, headers: reqHeaders });
|
|
@@ -14,7 +14,7 @@ async function loadFromOnlineStore(id, country_code) {
|
|
|
14
14
|
const { appName, appVersion } = getOptions();
|
|
15
15
|
const headers = {
|
|
16
16
|
"X-Recharge-Sdk-Fn": "loadFromOnlineStore",
|
|
17
|
-
"X-Recharge-Sdk-Version": "2.
|
|
17
|
+
"X-Recharge-Sdk-Version": "2.4.0",
|
|
18
18
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
19
19
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {}
|
|
20
20
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { rechargeApiRequest, getInternalSession } from '../utils/request.js';
|
|
2
|
+
import { encodePathSegment } from '../utils/url.js';
|
|
3
|
+
|
|
4
|
+
async function triggerCustomerPortalFlow(session, subscriptionId, action) {
|
|
5
|
+
if (subscriptionId === void 0 || subscriptionId === "") {
|
|
6
|
+
throw new Error("Subscription ID is required");
|
|
7
|
+
}
|
|
8
|
+
return rechargeApiRequest(
|
|
9
|
+
"post",
|
|
10
|
+
`/flows/customer_portal_flow/subscription/${encodePathSegment(subscriptionId)}`,
|
|
11
|
+
{ query: { action }, data: {} },
|
|
12
|
+
getInternalSession(session, "triggerCustomerPortalFlow")
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { triggerCustomerPortalFlow };
|
|
17
|
+
//# sourceMappingURL=flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.js","sources":["../../../src/api/flow.ts"],"sourcesContent":["import { getInternalSession, rechargeApiRequest } from '../utils/request';\nimport { encodePathSegment } from '../utils/url';\nimport { CustomerPortalFlowAction, Session, TriggerCustomerPortalFlowResponse } from '../types';\n\n/**\n * Trigger the store's active customer portal flow for a subscription.\n *\n * The flow is queued, not finished: a successful result only means the job was enqueued.\n *\n * Works with a customer portal session (only for that customer's own subscriptions), or with an\n * API token that has both the `read_subscriptions` and `write_flows` scopes.\n *\n * The store needs the `enable_customer_portal_triggered_flows` beta flag and an active\n * `customer_portal_triggered_flow` with trigger `subscription/unpack` and `limits.max_times_per_customer: -1`.\n *\n * Throws a `RechargeRequestError` with one of these statuses on failure:\n * - `403`: the feature is not enabled for the store, or the token is missing a scope. Not retryable.\n * - `404`: the subscription does not exist or does not belong to the customer.\n * - `422` \"Unable to trigger flows, please try again\": temporary, safe to retry. Any other `422` means the action was invalid.\n * - `429`: this subscription was already triggered for this action in the last 24h. Treat it as already done rather than retrying.\n */\nexport async function triggerCustomerPortalFlow(\n session: Session,\n subscriptionId: string | number,\n action: CustomerPortalFlowAction\n): Promise<TriggerCustomerPortalFlowResponse> {\n if (subscriptionId === undefined || subscriptionId === '') {\n throw new Error('Subscription ID is required');\n }\n return rechargeApiRequest<TriggerCustomerPortalFlowResponse>(\n 'post',\n `/flows/customer_portal_flow/subscription/${encodePathSegment(subscriptionId)}`,\n { query: { action }, data: {} },\n getInternalSession(session, 'triggerCustomerPortalFlow')\n );\n}\n"],"names":[],"mappings":";;;AAqBsB,eAAA,yBAAA,CACpB,OACA,EAAA,cAAA,EACA,MAC4C,EAAA;AAC5C,EAAI,IAAA,cAAA,KAAmB,KAAa,CAAA,IAAA,cAAA,KAAmB,EAAI,EAAA;AACzD,IAAM,MAAA,IAAI,MAAM,6BAA6B,CAAA,CAAA;AAAA,GAC/C;AACA,EAAO,OAAA,kBAAA;AAAA,IACL,MAAA;AAAA,IACA,CAAA,yCAAA,EAA4C,iBAAkB,CAAA,cAAc,CAAC,CAAA,CAAA;AAAA,IAC7E,EAAE,KAAO,EAAA,EAAE,QAAU,EAAA,IAAA,EAAM,EAAG,EAAA;AAAA,IAC9B,kBAAA,CAAmB,SAAS,2BAA2B,CAAA;AAAA,GACzD,CAAA;AACF;;;;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export { getCollection, listCollectionProducts, listCollections } from './api/co
|
|
|
8
8
|
export { getCreditSummary, listCreditAccounts, setApplyCreditsToNextCharge } from './api/credit.js';
|
|
9
9
|
export { getActiveChurnLandingPageURL, getCustomer, getCustomerPortalAccess, getDeliverySchedule, getFailedPaymentMethodRecoveryLandingPageURL, getGiftRedemptionLandingPageURL, sendCustomerNotification, updateCustomer } from './api/customer.js';
|
|
10
10
|
export { claimOfferCustomerSurvey, getCustomerSurveyOffers, getCustomerSurveyReasons } from './api/customerSurveys.js';
|
|
11
|
+
export { triggerCustomerPortalFlow } from './api/flow.js';
|
|
11
12
|
export { getGiftPurchase, listGiftPurchases } from './api/gift.js';
|
|
12
13
|
export { activateMembership, cancelMembership, changeMembership, getMembership, listMemberships } from './api/membership.js';
|
|
13
14
|
export { getMembershipProgram, listMembershipPrograms } from './api/membershipProgram.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -44,7 +44,7 @@ async function rechargeApiRequest(method, url, { id, query, data, headers } = {}
|
|
|
44
44
|
"X-Recharge-Sdk-Fn": session.internalFnCall,
|
|
45
45
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
46
46
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {},
|
|
47
|
-
"X-Recharge-Sdk-Version": "2.
|
|
47
|
+
"X-Recharge-Sdk-Version": "2.4.0",
|
|
48
48
|
"X-Request-Id": session.internalRequestId,
|
|
49
49
|
...session.tmp_fn_identifier ? { "X-Recharge-Sdk-Fn-Identifier": session.tmp_fn_identifier } : {},
|
|
50
50
|
...headers ? headers : {}
|
package/dist/index.d.ts
CHANGED
|
@@ -2975,6 +2975,10 @@ interface ProductSearchParams_2022_06 extends ListParams<SortBy> {
|
|
|
2975
2975
|
format_version: '2022-06';
|
|
2976
2976
|
/** If true, return only products that have a bundle product */
|
|
2977
2977
|
has_bundle_product?: boolean;
|
|
2978
|
+
/** If true, exclude products that only have add-on plans. */
|
|
2979
|
+
has_non_addon_plans?: boolean;
|
|
2980
|
+
/** If true, remove add-on plans from returned products. */
|
|
2981
|
+
has_addon_plans?: boolean;
|
|
2978
2982
|
/** If true, return only products that have at least one non-deleted plan in Recharge */
|
|
2979
2983
|
has_plans?: boolean;
|
|
2980
2984
|
/** Accepts either an external_product_id or an external_variant_id. Must perform exact match. */
|
|
@@ -3404,6 +3408,13 @@ interface CustomerSurveyOffersResponse {
|
|
|
3404
3408
|
};
|
|
3405
3409
|
}
|
|
3406
3410
|
|
|
3411
|
+
/** Actions that can trigger a customer portal flow. Only `unpack` is supported today. */
|
|
3412
|
+
type CustomerPortalFlowAction = 'unpack';
|
|
3413
|
+
interface TriggerCustomerPortalFlowResponse {
|
|
3414
|
+
/** Identifier of the queued flow job. Only useful for tracing; there is no status endpoint. */
|
|
3415
|
+
job_id: string;
|
|
3416
|
+
}
|
|
3417
|
+
|
|
3407
3418
|
/** A gift given to a customer. */
|
|
3408
3419
|
interface GiftPurchase {
|
|
3409
3420
|
/** Unique numeric identifier for the Gift. */
|
|
@@ -3876,8 +3887,6 @@ interface CustomerPortalSettings {
|
|
|
3876
3887
|
ai_chat_preview_enabled: boolean;
|
|
3877
3888
|
/** Whether to always send plan ID for updates or not. */
|
|
3878
3889
|
always_send_plan_id_for_updates: boolean;
|
|
3879
|
-
/** Whether discounts on dynamic plans are applied on swaps and other changes */
|
|
3880
|
-
apply_plan_recurring_discount_on_swap: boolean;
|
|
3881
3890
|
/** The filter of products that are available to create new subscriptions. */
|
|
3882
3891
|
available_products: 'all' | 'specific_recharge_collections' | 'specific_plan_types' | 'smart_select';
|
|
3883
3892
|
/** Settings related to backup payment methods */
|
|
@@ -4248,6 +4257,25 @@ declare function getCustomerSurveyReasons(session: Session, customerId: number,
|
|
|
4248
4257
|
declare function getCustomerSurveyOffers(session: Session, customerId: number, customerSurveyId: number, responseId: number): Promise<CustomerSurveyOffersResponse>;
|
|
4249
4258
|
declare function claimOfferCustomerSurvey(session: Session, payload: CustomerSurveyOfferParams): Promise<{}>;
|
|
4250
4259
|
|
|
4260
|
+
/**
|
|
4261
|
+
* Trigger the store's active customer portal flow for a subscription.
|
|
4262
|
+
*
|
|
4263
|
+
* The flow is queued, not finished: a successful result only means the job was enqueued.
|
|
4264
|
+
*
|
|
4265
|
+
* Works with a customer portal session (only for that customer's own subscriptions), or with an
|
|
4266
|
+
* API token that has both the `read_subscriptions` and `write_flows` scopes.
|
|
4267
|
+
*
|
|
4268
|
+
* The store needs the `enable_customer_portal_triggered_flows` beta flag and an active
|
|
4269
|
+
* `customer_portal_triggered_flow` with trigger `subscription/unpack` and `limits.max_times_per_customer: -1`.
|
|
4270
|
+
*
|
|
4271
|
+
* Throws a `RechargeRequestError` with one of these statuses on failure:
|
|
4272
|
+
* - `403`: the feature is not enabled for the store, or the token is missing a scope. Not retryable.
|
|
4273
|
+
* - `404`: the subscription does not exist or does not belong to the customer.
|
|
4274
|
+
* - `422` "Unable to trigger flows, please try again": temporary, safe to retry. Any other `422` means the action was invalid.
|
|
4275
|
+
* - `429`: this subscription was already triggered for this action in the last 24h. Treat it as already done rather than retrying.
|
|
4276
|
+
*/
|
|
4277
|
+
declare function triggerCustomerPortalFlow(session: Session, subscriptionId: string | number, action: CustomerPortalFlowAction): Promise<TriggerCustomerPortalFlowResponse>;
|
|
4278
|
+
|
|
4251
4279
|
declare function listGiftPurchases(session: Session, options?: GiftPurchasesParams): Promise<GiftPurchasesResponse>;
|
|
4252
4280
|
declare function getGiftPurchase(session: Session, id: string | number): Promise<GiftPurchase>;
|
|
4253
4281
|
|
|
@@ -4406,5 +4434,5 @@ declare const api: {
|
|
|
4406
4434
|
};
|
|
4407
4435
|
declare function initRecharge(opt?: InitOptions): void;
|
|
4408
4436
|
|
|
4409
|
-
export { activateMembership, activateSubscription, api, applyDiscountToAddress, applyDiscountToCharge, cancelMembership, cancelSubscription, changeMembership, claimOfferCustomerSurvey, createAddress, createBundleSelection, createMetafield, createOnetime, createPaymentMethod, createSubscription, createSubscriptions, delayOrder, deleteAddress, deleteBundleSelection, deleteMetafield, deleteOnetime, deleteSubscriptions, getActiveChurnLandingPageURL, getAddress, getBundleId, getBundleSelection, getBundleSelectionId, getCDNBundleSettings, getCDNProduct, getCDNProductAndSettings, getCDNProducts, getCDNProductsAndSettings, getCDNStoreSettings, getCDNWidgetSettings, getCharge, getCollection, getCreditSummary, getCustomer, getCustomerPortalAccess, getCustomerSurveyOffers, getCustomerSurveyReasons, getDeliverySchedule, getDynamicBundleItems, getFailedPaymentMethodRecoveryLandingPageURL, getGiftPurchase, getGiftRedemptionLandingPageURL, getMembership, getMembershipProgram, getOnetime, getOrder, getPaymentMethod, getPlan, getShippingCountries, getStoreSettings, getSubscription, getSubscriptionPricingPreview, getTieredDiscount, getTieredDiscountOffers, initFrictionlessPaymentV1, initRecharge, listAddresses, listBundleSelections, listCharges, listCollectionProducts, listCollections, listCreditAccounts, listGiftPurchases, listMembershipPrograms, listMemberships, listOnetimes, listOrders, listPaymentMethods, listPlans, listSubscriptionAddons, listSubscriptions, listTieredDiscounts, loadBundleData, loginCustomerPortal, loginShopifyApi, loginShopifyAppProxy, loginWithShopifyCustomerAccount, loginWithShopifyStorefront, mergeAddresses, processCharge, productSearch, removeDiscountsFromAddress, removeDiscountsFromCharge, rescheduleCharge, resetCDNCache, sendCustomerNotification, sendPasswordlessCode, sendPasswordlessCodeAppProxy, setApplyCreditsToNextCharge, skipCharge, skipFutureCharge, skipGiftSubscriptionCharge, skipSubscriptionCharge, unskipCharge, updateAddress, updateBundle, updateBundleSelection, updateCustomer, updateMetafield, updateOnetime, updatePaymentMethod, updateSubscription, updateSubscriptionAddress, updateSubscriptionChargeDate, updateSubscriptions, validateBundle, validateBundleSelection, validateDynamicBundle, validatePasswordlessCode, validatePasswordlessCodeAppProxy };
|
|
4410
|
-
export type { ActivateMembershipRequest, AddToCartCallbackSettings, Addon, AddonProduct, AddonSettings, AddonType, AddonsSection, Address, AddressIncludes, AddressListParams, AddressListResponse, AddressResponse, AddressSortBy, AnalyticsData, Announcement, ApplyCreditOptions, AssociatedAddress, BaseCardDetails, BaseProduct, BaseProductVariant, BaseVariant, BasicSubscriptionParams, BooleanLike, BooleanNumbers, BooleanString, BooleanStringNumbers, BulkSubscriptionParams, BundleAppProxy, BundleData, BundleDataBaseProduct, BundleDataCollection, BundleDataSellingPlan, BundleDataSellingPlanGroup, BundleDataVariant, BundleFilterGroup, BundlePriceRule, BundleProduct, BundleProductGlobalStyles, BundleProductLayoutSettings, BundlePurchaseItem, BundlePurchaseItemParams, BundleSelection, BundleSelectionAppProxy, BundleSelectionItem, BundleSelectionItemRequiredCreateProps, BundleSelectionListParams, BundleSelectionsResponse, BundleSelectionsSortBy, BundleSettings, BundleTemplateSettings, BundleTemplateType, BundleTranslations, BundleVariant, BundleVariantOptionSource, BundleVariantOptionSourceBase, BundleVariantOptionSourceSubscription, BundleVariantRange, BundleVariantSelectionDefault, CDNBaseWidgetSettings, CDNBundleSettings, CDNBundleVariant, CDNBundleVariantOptionSource, CDNPlan, CDNProduct, CDNProductAndSettings, CDNProductKeyObject, CDNProductQuery_2020_12, CDNProductQuery_2022_06, CDNProductRaw, CDNProductResource, CDNProductResponseType, CDNProductType, CDNProductVariant_2022_06, CDNProduct_2022_06, CDNProductsAndSettings, CDNProductsAndSettingsResource, CDNStoreSettings, CDNSubscriptionOption, CDNVariant, CDNVersion, CDNWidgetSettings, CDNWidgetSettingsRaw, CDNWidgetSettingsResource, CRUDRequestOptions, CancelMembershipRequest, CancelSubscriptionRequest, CardDetailsFirstNameLastName, CardDetailsFullName, ChangeMembershipRequest, ChannelSettings, Charge, ChargeIncludes, ChargeListParams, ChargeListResponse, ChargeResponse, ChargeSortBy, ChargeStatus, Collection, CollectionBinding, CollectionListParams, CollectionTypes, CollectionsResponse, CollectionsSortBy, ColorString, CreateAddressRequest, CreateBundleSelectionRequest, CreateMetafieldRequest, CreateOnetimeRequest, CreatePaymentMethodRequest, CreateRecipientAddress, CreateSubscriptionRequest, CreateSubscriptionsParams, CreateSubscriptionsRequest, CreditAccount, CreditAccountIncludes, CreditAccountListParams, CreditAccountType, CreditAccountsResponse, CreditAccountsSortBy, CreditSummaryIncludes, CrossSellsSection, CrossSellsSettings, CurrencyPriceSet, Customer, CustomerCreditSummary, CustomerDeliveryScheduleParams, CustomerDeliveryScheduleResponse, CustomerIncludeGiftPurchase, CustomerIncludes, CustomerNotification, CustomerNotificationOptions, CustomerNotificationTemplate, CustomerNotificationType, CustomerPortalAccessOptions, CustomerPortalAccessResponse, CustomerPortalSettings, CustomerSurveyOfferParams, CustomerSurveyOfferResponse, CustomerSurveyOffersResponse, CustomerSurveyReason, CustomerSurveyReasonsResponse, DefaultProduct, DefaultSelection, DefaultVariant, DelayOption, DeleteSubscriptionsParams, DeleteSubscriptionsRequest, Delivery, DeliveryLineItem, DeliveryOrder, DeliveryPaymentMethod, Discount, DiscountApplicationMethod, DiscountType, DynamicBundleItemAppProxy, DynamicBundlePropertiesAppProxy, DynamicPricingPreviewDetails, EligibleChargeType, EligibleLineItemType, ExternalAttributeSchema, ExternalId, ExternalProductStatus, ExternalTransactionId, FilterInputType, FilterMatchMode, FilterSource, FirstOption, GetAddressOptions, GetChargeOptions, GetCreditSummaryOptions, GetCustomerOptions, GetMembershipProgramOptions, GetPaymentMethodOptions, GetRequestOptions, GetSubscriptionOptions, GiftPurchase, GiftPurchasesParams, GiftPurchasesResponse, HTMLString, Incentives, InitOptions, InternalSession, IntervalUnit, InventoryPolicy, IsoDateString, LineItem, ListParams, LoginResponse, Membership, MembershipBenefit, MembershipIncludes, MembershipListParams, MembershipListResponse, MembershipProgram, MembershipProgramIncludes, MembershipProgramListParams, MembershipProgramListResponse, MembershipProgramResponse, MembershipProgramSortBy, MembershipProgramStatus, MembershipResponse, MembershipStatus, MembershipsSortBy, MergeAddressesRequest, Metafield, MetafieldOptionalCreateProps, MetafieldOwnerResource, MetafieldRequiredCreateProps, Method, Modifier, MultiStepSettings, OfferAttributes, OnePageSettings, Onetime, OnetimeIncludes, OnetimeListParams, OnetimeOptionalCreateProps, OnetimeRequiredCreateProps, OnetimeSubscription, OnetimesResponse, OnetimesSortBy, OnlineStoreOptions, Options, Order, OrderIncludes, OrderListParams, OrderSortBy, OrderStatus, OrderType, OrdersResponse, PasswordlessCodeResponse, PasswordlessOptions, PasswordlessValidateResponse, PaymentDetails, PaymentErrorCallback, PaymentFieldEventCallback, PaymentFormConfig, PaymentFormController, PaymentFormEventHandlers, PaymentMethod, PaymentMethodFormOptions, PaymentMethodIncludes, PaymentMethodListParams, PaymentMethodOptionalCreateProps, PaymentMethodRequiredCreateProps, PaymentMethodSortBy, PaymentMethodStatus, PaymentMethodTokenCallback, PaymentMethodsResponse, PaymentType, Plan, PlanListParams, PlanSortBy, PlanType, PlansResponse, PriceRange, PriceRule, PriceSet, PricingProgressionResetTrigger, ProcessorName, Product, ProductImage, ProductInclude, ProductListResponse, ProductOption, ProductSearchParams_2020_12, ProductSearchParams_2022_06, ProductSearchResponse_2020_12, ProductSearchResponse_2022_06, ProductSearchType, ProductSource, ProductValueOption, ProductVariant_2020_12, ProductVariant_2022_06, Product_2020_12, Product_2022_06, Property, PublicBundleData, PublishStatus, PunchCardProgress, PunchCardProgressData, QuantityRange, RecurringSubscription, ReferralInfo, ReferralUrl, Request, RequestHeaders, RequestOptions, SellingPlan, SellingPlanAllocation, SellingPlanGroup, Session, ShippingCountriesOptions, ShippingCountriesResponse, ShippingCountry, ShippingLine, ShippingProvince, ShopifyStorefrontOptions, ShopifyUpdatePaymentInfoOptions, SkipChargeParams, SkipFutureChargeAddressRequest, SkipFutureChargeAddressResponse, SortBy, SortField, SortKeys, StepSettings, StepSettingsCommon, StepSettingsTypes, StoreSettings, StorefrontEnvironment, StorefrontOptions, StorefrontPurchaseOption, SubType, Subscription, SubscriptionBase, SubscriptionCancelled, SubscriptionIncludes, SubscriptionListAddonsParams, SubscriptionListParams, SubscriptionOption, SubscriptionOptionalCreateProps, SubscriptionPreferences, SubscriptionPricingPreview, SubscriptionPricingPreviewRequest, SubscriptionRequiredCreateProps, SubscriptionSortBy, SubscriptionStatus, Subscription_2021_01, SubscriptionsResponse, TaxLine, Tier, TieredDiscount, TieredDiscountOffer, TieredDiscountOfferLineItem, TieredDiscountOfferTarget, TieredDiscountOfferTier, TieredDiscountOffersRequest, TieredDiscountOffersResponse, TieredDiscountStatus, TieredDiscountsParams, TieredDiscountsResponse, Translations, UpdateAddressParams, UpdateAddressRequest, UpdateBundlePurchaseItem, UpdateBundleSelectionRequest, UpdateCustomerRequest, UpdateMetafieldRequest, UpdateOnetimeRequest, UpdatePaymentMethodRequest, UpdateSubscriptionChargeDateParams, UpdateSubscriptionParams, UpdateSubscriptionRequest, UpdateSubscriptionsParams, UpdateSubscriptionsRequest, Variant, VariantSelector, VariantSelectorStepSetting, WidgetIconColor, WidgetTemplateType, WidgetVisibility, intervalUnit, membershipIncludes };
|
|
4437
|
+
export { activateMembership, activateSubscription, api, applyDiscountToAddress, applyDiscountToCharge, cancelMembership, cancelSubscription, changeMembership, claimOfferCustomerSurvey, createAddress, createBundleSelection, createMetafield, createOnetime, createPaymentMethod, createSubscription, createSubscriptions, delayOrder, deleteAddress, deleteBundleSelection, deleteMetafield, deleteOnetime, deleteSubscriptions, getActiveChurnLandingPageURL, getAddress, getBundleId, getBundleSelection, getBundleSelectionId, getCDNBundleSettings, getCDNProduct, getCDNProductAndSettings, getCDNProducts, getCDNProductsAndSettings, getCDNStoreSettings, getCDNWidgetSettings, getCharge, getCollection, getCreditSummary, getCustomer, getCustomerPortalAccess, getCustomerSurveyOffers, getCustomerSurveyReasons, getDeliverySchedule, getDynamicBundleItems, getFailedPaymentMethodRecoveryLandingPageURL, getGiftPurchase, getGiftRedemptionLandingPageURL, getMembership, getMembershipProgram, getOnetime, getOrder, getPaymentMethod, getPlan, getShippingCountries, getStoreSettings, getSubscription, getSubscriptionPricingPreview, getTieredDiscount, getTieredDiscountOffers, initFrictionlessPaymentV1, initRecharge, listAddresses, listBundleSelections, listCharges, listCollectionProducts, listCollections, listCreditAccounts, listGiftPurchases, listMembershipPrograms, listMemberships, listOnetimes, listOrders, listPaymentMethods, listPlans, listSubscriptionAddons, listSubscriptions, listTieredDiscounts, loadBundleData, loginCustomerPortal, loginShopifyApi, loginShopifyAppProxy, loginWithShopifyCustomerAccount, loginWithShopifyStorefront, mergeAddresses, processCharge, productSearch, removeDiscountsFromAddress, removeDiscountsFromCharge, rescheduleCharge, resetCDNCache, sendCustomerNotification, sendPasswordlessCode, sendPasswordlessCodeAppProxy, setApplyCreditsToNextCharge, skipCharge, skipFutureCharge, skipGiftSubscriptionCharge, skipSubscriptionCharge, triggerCustomerPortalFlow, unskipCharge, updateAddress, updateBundle, updateBundleSelection, updateCustomer, updateMetafield, updateOnetime, updatePaymentMethod, updateSubscription, updateSubscriptionAddress, updateSubscriptionChargeDate, updateSubscriptions, validateBundle, validateBundleSelection, validateDynamicBundle, validatePasswordlessCode, validatePasswordlessCodeAppProxy };
|
|
4438
|
+
export type { ActivateMembershipRequest, AddToCartCallbackSettings, Addon, AddonProduct, AddonSettings, AddonType, AddonsSection, Address, AddressIncludes, AddressListParams, AddressListResponse, AddressResponse, AddressSortBy, AnalyticsData, Announcement, ApplyCreditOptions, AssociatedAddress, BaseCardDetails, BaseProduct, BaseProductVariant, BaseVariant, BasicSubscriptionParams, BooleanLike, BooleanNumbers, BooleanString, BooleanStringNumbers, BulkSubscriptionParams, BundleAppProxy, BundleData, BundleDataBaseProduct, BundleDataCollection, BundleDataSellingPlan, BundleDataSellingPlanGroup, BundleDataVariant, BundleFilterGroup, BundlePriceRule, BundleProduct, BundleProductGlobalStyles, BundleProductLayoutSettings, BundlePurchaseItem, BundlePurchaseItemParams, BundleSelection, BundleSelectionAppProxy, BundleSelectionItem, BundleSelectionItemRequiredCreateProps, BundleSelectionListParams, BundleSelectionsResponse, BundleSelectionsSortBy, BundleSettings, BundleTemplateSettings, BundleTemplateType, BundleTranslations, BundleVariant, BundleVariantOptionSource, BundleVariantOptionSourceBase, BundleVariantOptionSourceSubscription, BundleVariantRange, BundleVariantSelectionDefault, CDNBaseWidgetSettings, CDNBundleSettings, CDNBundleVariant, CDNBundleVariantOptionSource, CDNPlan, CDNProduct, CDNProductAndSettings, CDNProductKeyObject, CDNProductQuery_2020_12, CDNProductQuery_2022_06, CDNProductRaw, CDNProductResource, CDNProductResponseType, CDNProductType, CDNProductVariant_2022_06, CDNProduct_2022_06, CDNProductsAndSettings, CDNProductsAndSettingsResource, CDNStoreSettings, CDNSubscriptionOption, CDNVariant, CDNVersion, CDNWidgetSettings, CDNWidgetSettingsRaw, CDNWidgetSettingsResource, CRUDRequestOptions, CancelMembershipRequest, CancelSubscriptionRequest, CardDetailsFirstNameLastName, CardDetailsFullName, ChangeMembershipRequest, ChannelSettings, Charge, ChargeIncludes, ChargeListParams, ChargeListResponse, ChargeResponse, ChargeSortBy, ChargeStatus, Collection, CollectionBinding, CollectionListParams, CollectionTypes, CollectionsResponse, CollectionsSortBy, ColorString, CreateAddressRequest, CreateBundleSelectionRequest, CreateMetafieldRequest, CreateOnetimeRequest, CreatePaymentMethodRequest, CreateRecipientAddress, CreateSubscriptionRequest, CreateSubscriptionsParams, CreateSubscriptionsRequest, CreditAccount, CreditAccountIncludes, CreditAccountListParams, CreditAccountType, CreditAccountsResponse, CreditAccountsSortBy, CreditSummaryIncludes, CrossSellsSection, CrossSellsSettings, CurrencyPriceSet, Customer, CustomerCreditSummary, CustomerDeliveryScheduleParams, CustomerDeliveryScheduleResponse, CustomerIncludeGiftPurchase, CustomerIncludes, CustomerNotification, CustomerNotificationOptions, CustomerNotificationTemplate, CustomerNotificationType, CustomerPortalAccessOptions, CustomerPortalAccessResponse, CustomerPortalFlowAction, CustomerPortalSettings, CustomerSurveyOfferParams, CustomerSurveyOfferResponse, CustomerSurveyOffersResponse, CustomerSurveyReason, CustomerSurveyReasonsResponse, DefaultProduct, DefaultSelection, DefaultVariant, DelayOption, DeleteSubscriptionsParams, DeleteSubscriptionsRequest, Delivery, DeliveryLineItem, DeliveryOrder, DeliveryPaymentMethod, Discount, DiscountApplicationMethod, DiscountType, DynamicBundleItemAppProxy, DynamicBundlePropertiesAppProxy, DynamicPricingPreviewDetails, EligibleChargeType, EligibleLineItemType, ExternalAttributeSchema, ExternalId, ExternalProductStatus, ExternalTransactionId, FilterInputType, FilterMatchMode, FilterSource, FirstOption, GetAddressOptions, GetChargeOptions, GetCreditSummaryOptions, GetCustomerOptions, GetMembershipProgramOptions, GetPaymentMethodOptions, GetRequestOptions, GetSubscriptionOptions, GiftPurchase, GiftPurchasesParams, GiftPurchasesResponse, HTMLString, Incentives, InitOptions, InternalSession, IntervalUnit, InventoryPolicy, IsoDateString, LineItem, ListParams, LoginResponse, Membership, MembershipBenefit, MembershipIncludes, MembershipListParams, MembershipListResponse, MembershipProgram, MembershipProgramIncludes, MembershipProgramListParams, MembershipProgramListResponse, MembershipProgramResponse, MembershipProgramSortBy, MembershipProgramStatus, MembershipResponse, MembershipStatus, MembershipsSortBy, MergeAddressesRequest, Metafield, MetafieldOptionalCreateProps, MetafieldOwnerResource, MetafieldRequiredCreateProps, Method, Modifier, MultiStepSettings, OfferAttributes, OnePageSettings, Onetime, OnetimeIncludes, OnetimeListParams, OnetimeOptionalCreateProps, OnetimeRequiredCreateProps, OnetimeSubscription, OnetimesResponse, OnetimesSortBy, OnlineStoreOptions, Options, Order, OrderIncludes, OrderListParams, OrderSortBy, OrderStatus, OrderType, OrdersResponse, PasswordlessCodeResponse, PasswordlessOptions, PasswordlessValidateResponse, PaymentDetails, PaymentErrorCallback, PaymentFieldEventCallback, PaymentFormConfig, PaymentFormController, PaymentFormEventHandlers, PaymentMethod, PaymentMethodFormOptions, PaymentMethodIncludes, PaymentMethodListParams, PaymentMethodOptionalCreateProps, PaymentMethodRequiredCreateProps, PaymentMethodSortBy, PaymentMethodStatus, PaymentMethodTokenCallback, PaymentMethodsResponse, PaymentType, Plan, PlanListParams, PlanSortBy, PlanType, PlansResponse, PriceRange, PriceRule, PriceSet, PricingProgressionResetTrigger, ProcessorName, Product, ProductImage, ProductInclude, ProductListResponse, ProductOption, ProductSearchParams_2020_12, ProductSearchParams_2022_06, ProductSearchResponse_2020_12, ProductSearchResponse_2022_06, ProductSearchType, ProductSource, ProductValueOption, ProductVariant_2020_12, ProductVariant_2022_06, Product_2020_12, Product_2022_06, Property, PublicBundleData, PublishStatus, PunchCardProgress, PunchCardProgressData, QuantityRange, RecurringSubscription, ReferralInfo, ReferralUrl, Request, RequestHeaders, RequestOptions, SellingPlan, SellingPlanAllocation, SellingPlanGroup, Session, ShippingCountriesOptions, ShippingCountriesResponse, ShippingCountry, ShippingLine, ShippingProvince, ShopifyStorefrontOptions, ShopifyUpdatePaymentInfoOptions, SkipChargeParams, SkipFutureChargeAddressRequest, SkipFutureChargeAddressResponse, SortBy, SortField, SortKeys, StepSettings, StepSettingsCommon, StepSettingsTypes, StoreSettings, StorefrontEnvironment, StorefrontOptions, StorefrontPurchaseOption, SubType, Subscription, SubscriptionBase, SubscriptionCancelled, SubscriptionIncludes, SubscriptionListAddonsParams, SubscriptionListParams, SubscriptionOption, SubscriptionOptionalCreateProps, SubscriptionPreferences, SubscriptionPricingPreview, SubscriptionPricingPreviewRequest, SubscriptionRequiredCreateProps, SubscriptionSortBy, SubscriptionStatus, Subscription_2021_01, SubscriptionsResponse, TaxLine, Tier, TieredDiscount, TieredDiscountOffer, TieredDiscountOfferLineItem, TieredDiscountOfferTarget, TieredDiscountOfferTier, TieredDiscountOffersRequest, TieredDiscountOffersResponse, TieredDiscountStatus, TieredDiscountsParams, TieredDiscountsResponse, Translations, TriggerCustomerPortalFlowResponse, UpdateAddressParams, UpdateAddressRequest, UpdateBundlePurchaseItem, UpdateBundleSelectionRequest, UpdateCustomerRequest, UpdateMetafieldRequest, UpdateOnetimeRequest, UpdatePaymentMethodRequest, UpdateSubscriptionChargeDateParams, UpdateSubscriptionParams, UpdateSubscriptionRequest, UpdateSubscriptionsParams, UpdateSubscriptionsRequest, Variant, VariantSelector, VariantSelectorStepSetting, WidgetIconColor, WidgetTemplateType, WidgetVisibility, intervalUnit, membershipIncludes };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// recharge-client-2.
|
|
2
|
-
(function(N,T){typeof exports=="object"&&typeof module<"u"?module.exports=T():typeof define=="function"&&define.amd?define(T):(N=typeof globalThis<"u"?globalThis:N||self,N.recharge=T())})(this,function(){"use strict";const N="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function T(t=21){let e="";for(let r=0;r<t;r++)e+=N[Math.random()*64|0];return e}let _e={storeIdentifier:"",environment:"prod"};function tt(t){_e=t}function b(){return _e}const rt=(t,e="")=>{switch(t){case"prod":return"https://api.rechargeapps.com";case"stage":return"https://api.stage.rechargeapps.com";case"preprod":case"prestage":return`${e}/api`}},nt=(t,e="")=>{switch(t){case"prod":return"https://admin.rechargeapps.com";case"stage":return"https://admin.stage.rechargeapps.com";case"preprod":case"prestage":return e}},it=t=>{switch(t){case"prod":case"preprod":return"https://static.rechargecdn.com";case"stage":case"prestage":return"https://static.stage.rechargecdn.com"}},me="/tools/recurring";class F{constructor(e,r){this.name="RechargeRequestError",this.message=e,this.status=r}}function p(t){return encodeURIComponent(`${t}`.trim())}function st(t){const e=r=>encodeURIComponent(r===null?"":String(r));return Object.entries(t).filter(([,r])=>r!==void 0&&!(Array.isArray(r)&&r.length===0)).map(([r,n])=>`${r}=${Array.isArray(n)?n.map(e).join(","):e(n)}`).join("&")}const ot=new Set(["shop_url"]);function a(t,e){return{...t,internalFnCall:t.internalFnCall??e,internalRequestId:t.internalRequestId??T()}}async function V(t,e,r={}){const n=b();return S(t,`${it(n.environment)}/store/${n.storeIdentifier}${e}`,r)}async function c(t,e,{id:r,query:n,data:i,headers:s}={},o){const{environment:l,environmentUri:f,storeIdentifier:h,loginRetryFn:_,__unstable_twoFactorRetryFn:y,appName:v,appVersion:d}=b();if(!h)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const m=o.apiToken;if(!m)throw new Error("No API token defined on session.");const g=rt(l,f),I={"X-Recharge-Access-Token":m,"X-Recharge-Version":"2021-11","X-Recharge-Sdk-Fn":o.internalFnCall,...v?{"X-Recharge-Sdk-App-Name":v}:{},...d?{"X-Recharge-Sdk-App-Version":d}:{},"X-Recharge-Sdk-Version":"2.3.0","X-Request-Id":o.internalRequestId,...o.tmp_fn_identifier?{"X-Recharge-Sdk-Fn-Identifier":o.tmp_fn_identifier}:{},...s||{}},x=n,D={...x?Object.fromEntries(Object.entries(x).filter(([q])=>!ot.has(q))):void 0,shop_url:h};try{return await S(t,`${g}${e}`,{id:r,query:D,data:i,headers:I})}catch(q){if(_&&q instanceof F&&q.status===401)return _().then(O=>{if(O)return S(t,`${g}${e}`,{id:r,query:D,data:i,headers:{...I,"X-Recharge-Access-Token":O.apiToken}});throw q});if(y&&q instanceof F&&q.status===423)return y().then(O=>{if(O)return S(t,`${g}${e}`,{id:r,query:D,data:i,headers:{...I,"X-Recharge-Access-Token":O.apiToken}});throw q});throw q}}async function A(t,e,r={}){return S(t,`${me}${e}`,r)}async function S(t,e,{id:r,query:n,data:i,headers:s}={}){let o=e.trim();if(r&&(o=[o,p(r)].join("/")),n){let y;[o,y]=o.split("?");const v=[y,st(n)].join("&").replace(/^&/,"");o=`${o}${v?`?${v}`:""}`}let l;i&&t!=="get"&&(l=JSON.stringify(i));const f={Accept:"application/json","Content-Type":"application/json","X-Recharge-App":"storefront-client",...s||{}},h=await fetch(o,{method:t,headers:f,body:l});let _;try{_=await h.json()}catch{}if(!h.ok)throw h.status===502||h.status===504?new F("A gateway error occurred while making the request",h.status):_&&_.error?new F(_.error,h.status):_&&_.errors?new F(JSON.stringify(_.errors),h.status):new F("A connection error occurred while making the request");return _}function at(t,e){return c("get","/addresses",{query:e},a(t,"listAddresses"))}async function ct(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{address:n}=await c("get","/addresses",{id:e,query:{include:r?.include}},a(t,"getAddress"));return n}async function dt(t,e){const{address:r}=await c("post","/addresses",{data:{...e,customer_id:t.customerId?Number(t.customerId):void 0}},a(t,"createAddress"));return r}async function J(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{address:i}=await c("put","/addresses",{id:e,data:r,query:n},a(t,"updateAddress"));return i}async function ut(t,e,r,n){return J(a(t,"applyDiscountToAddress"),e,{discounts:[{code:r}]},n)}async function lt(t,e,r){if(e===void 0||e==="")throw new Error("Id is required");return J(a(t,"removeDiscountsFromAddress"),e,{discounts:[]},r)}function pt(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/addresses",{id:e},a(t,"deleteAddress"))}async function ht(t,e){const{address:r}=await c("post","/addresses/merge",{data:e},a(t,"mergeAddresses"));return r}async function _t(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/addresses/${p(e)}/charges/skip`,{data:r},a(t,"skipFutureCharge"));return n}var mt=Object.freeze({__proto__:null,applyDiscountToAddress:ut,createAddress:dt,deleteAddress:pt,getAddress:ct,listAddresses:at,mergeAddresses:ht,removeDiscountsFromAddress:lt,skipFutureCharge:_t,updateAddress:J});async function ft(){const{storefrontAccessToken:t}=b(),e={};t&&(e["X-Recharge-Storefront-Access-Token"]=t);const r=await A("get","/access",{headers:e});return{apiToken:r.api_token,customerId:r.customer_id,message:r.message}}async function gt(t,e){return fe(t,e)}async function fe(t,e){if(!t)throw new Error("Shopify storefront token is required");const{storeIdentifier:r}=b();if(!r)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const{api_token:n,customer_id:i,message:s}=await B("post","/shopify_storefront_access",{data:{customer_token:e,storefront_token:t,shop_url:r}});return n?{apiToken:n,customerId:i,message:s}:null}async function wt(t){const{storeIdentifier:e}=b();if(!e)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const{api_token:r,customer_id:n,message:i}=await B("post","/shopify_customer_account_api_access",{data:{customer_token:t,shop_url:e}});return r?{apiToken:r,customerId:n,message:i}:null}async function yt(t,e={}){if(!t)throw new Error("Email is required.");const{storeIdentifier:r}=b();if(!r)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const{send_email:n,send_sms:i}=e,s=await B("post","/attempt_login",{data:{email:t,shop:r,...n!==void 0?{send_email:n}:{},...i!==void 0?{send_sms:i}:{}}});if(s.errors)throw new Error(s.errors);return s.session_token}async function bt(t,e={}){if(!t)throw new Error("Email is required.");const{storefrontAccessToken:r}=b(),n={};r&&(n["X-Recharge-Storefront-Access-Token"]=r);const{send_email:i,send_sms:s}=e,o=await A("post","/attempt_login",{data:{email:t,...i!==void 0?{send_email:i}:{},...s!==void 0?{send_sms:s}:{}},headers:n});if(o.errors)throw new Error(o.errors);return o.session_token}async function vt(t,e,r){if(!t)throw new Error("Email is required.");if(!e)throw new Error("Session token is required.");if(!r)throw new Error("Code is required.");const{storeIdentifier:n}=b();if(!n)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const i=await B("post","/validate_login",{data:{code:r,email:t,session_token:e,shop:n}});if(i.errors)throw new Error(i.errors);return{apiToken:i.api_token,customerId:i.customer_id}}async function St(t,e,r){if(!t)throw new Error("Email is required.");if(!e)throw new Error("Session token is required.");if(!r)throw new Error("Code is required.");const{storefrontAccessToken:n}=b(),i={};n&&(i["X-Recharge-Storefront-Access-Token"]=n);const s=await A("post","/validate_login",{data:{code:r,email:t,session_token:e},headers:i});if(s.errors)throw new Error(s.errors);return{apiToken:s.api_token,customerId:s.customer_id}}function $t(){const{customerHash:t}=b(),{pathname:e,search:r}=window.location,n=new URLSearchParams(r).get("token"),i=e.split("/").filter(Boolean),s=i.findIndex(l=>l==="portal"),o=s!==-1?i[s+1]:t;if(!n||!o)throw new Error("Not in context of Recharge Customer Portal or URL did not contain correct params");return{customerHash:o,token:n}}async function It(){const{customerHash:t,token:e}=$t(),{storeIdentifier:r}=b(),n=await B("post",`/customers/${p(t)}/access`,{data:{token:e,shop:r}});return{apiToken:n.api_token,customerId:n.customer_id}}async function B(t,e,{id:r,query:n,data:i,headers:s}={}){const{environment:o,environmentUri:l,storefrontAccessToken:f,appName:h,appVersion:_}=b(),y=nt(o,l),v={...f?{"X-Recharge-Storefront-Access-Token":f}:{},...h?{"X-Recharge-Sdk-App-Name":h}:{},..._?{"X-Recharge-Sdk-App-Version":_}:{},"X-Recharge-Sdk-Version":"2.3.0",...s||{}};return S(t,`${y}${e}`,{id:r,query:n,data:i,headers:v})}var qt=Object.freeze({__proto__:null,loginCustomerPortal:It,loginShopifyApi:gt,loginShopifyAppProxy:ft,loginWithShopifyCustomerAccount:wt,loginWithShopifyStorefront:fe,sendPasswordlessCode:yt,sendPasswordlessCodeAppProxy:bt,validatePasswordlessCode:vt,validatePasswordlessCodeAppProxy:St});const ge="XdrError";class u extends Error{constructor(e){super(e),this.name=ge}static[Symbol.hasInstance](e){return e instanceof Error&&e.name===ge}}function we(t){return(4-t%4)%4}function ye(t){if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}function be(t,e){if(!Number.isInteger(t)||t<0||t>4294967295)throw new u(`${e}: expected uint32 length`)}function Q(t,e,r,n){if(typeof t!="number"||!Number.isInteger(t)||t<e||t>r)throw new u(`${n}: expected integer in range ${e}..${r}`)}function Et(t,e,r,n){if(typeof t!="bigint"||t<e||t>r)throw new u(`${n}: expected bigint in range ${e}..${r}`)}function kt(t,e){if(!(t instanceof Uint8Array))throw new u(`${e}: expected Uint8Array`);try{Uint8Array.prototype.at.call(t,0)}catch{throw new u(`${e}: Uint8Array is detached or out of bounds`)}}function xt(t,e){if(!Array.isArray(t))throw new u(`${e}: expected array`)}const ve=1500;class Ct{#e=0;#i=0;#t;#n;#s;bytes;constructor(e,r=ve){if(r<0||!Number.isInteger(r))throw new u(`invalid maxDepth ${r}`);if(this.#t=r,!ArrayBuffer.isView(e)||e.BYTES_PER_ELEMENT!==1)throw new TypeError("Reader expects a Uint8Array");this.bytes=Object.getPrototypeOf(e)===Uint8Array.prototype?e:e.byteLength===0?new Uint8Array(0):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),this.#n=this.bytes.buffer?.detached?new DataView(new ArrayBuffer(0)):new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.#s=this.#n.byteLength}#r(e,r){if(this.remaining<e)throw new u(`${r}: incomplete XDR data at offset ${this.#e}, expected ${e} byte(s)`);const n=this.#e;return this.#e+=e,n}get offset(){return this.#e}get remaining(){return this.#s-this.#e}enter(e){if(this.#i+=1,this.#i>this.#t)throw this.#i-=1,new u(`${e}: max recursion depth ${this.#t} exceeded`)}exit(){this.#i-=1}done(e){if(this.remaining!==0)throw new u(`${e}: trailing ${this.remaining} byte(s) after XDR value`)}readBytes(e,r){if(e<0||!Number.isInteger(e))throw new u(`${r}: invalid byte length ${e}`);if(this.remaining<e)throw new u(`${r}: incomplete XDR data at offset ${this.#e}, expected ${e} byte(s)`);const n=this.bytes.slice(this.#e,this.#e+e);if(n.length!==e)throw new u(`${r}: input shrank during decode`);return this.#e+=e,n}skipPadding(e,r){if(e<0||!Number.isInteger(e))throw new u(`${r}: invalid byte length ${e}`);const n=we(e);if(n===0)return;const i=this.#r(n,r);for(let s=0;s<n;s++)if(this.bytes[i+s]!==0)throw this.#e=i,new u(`${r}: non-zero XDR padding`)}readInt32(e){return this.#n.getInt32(this.#r(4,e),!1)}readUint32(e){return this.#n.getUint32(this.#r(4,e),!1)}readBigInt64(e){return this.#n.getBigInt64(this.#r(8,e),!1)}readBigUint64(e){return this.#n.getBigUint64(this.#r(8,e),!1)}readFloat32(e){return this.#n.getFloat32(this.#r(4,e),!1)}readFloat64(e){return this.#n.getFloat64(this.#r(8,e),!1)}}const Pt=8192;class Se{#e=new Uint8Array(Pt);#i=new DataView(this.#e.buffer);#t=0;#n=0;#s;constructor(e=ve){if(e<0||!Number.isInteger(e))throw new u(`invalid maxDepth ${e}`);this.#s=e}get offset(){return this.#t}enter(e){if(this.#n+=1,this.#n>this.#s)throw this.#n-=1,new u(`${e}: max recursion depth ${this.#s} exceeded`)}exit(){this.#n-=1}writeBytes(e){this.#o(e.length),this.#e.set(e,this.#t),this.#t+=e.length}writePadding(e){const r=we(e);r>0&&(this.#o(r),this.#e.fill(0,this.#t,this.#t+r),this.#t+=r)}writeInt32(e){const r=this.#r(4);this.#i.setInt32(r,e,!1),this.#t+=4}writeUint32(e){const r=this.#r(4);this.#i.setUint32(r,e,!1),this.#t+=4}writeBigInt64(e){const r=this.#r(8);this.#i.setBigInt64(r,e,!1),this.#t+=8}writeBigUint64(e){const r=this.#r(8);this.#i.setBigUint64(r,e,!1),this.#t+=8}writeFloat32(e){const r=this.#r(4);this.#i.setFloat32(r,e,!1),this.#t+=4}writeFloat64(e){const r=this.#r(8);this.#i.setFloat64(r,e,!1),this.#t+=8}#r(e){return this.#o(e),this.#t}toUint8Array(){return this.#e.slice(0,this.#t)}#o(e){const r=this.#t+e;if(r<=this.#e.length)return;let n=this.#e.length;for(;n<r;)n*=2;const i=new Uint8Array(n);i.set(this.#e),this.#e=i,this.#i=new DataView(i.buffer)}}const At=4294967295;class C{name;constructor(e=void 0){this.name=e}encode(e,r){const n=new Se(r?.maxDepth);return this._write(e,n,this.name??this.kind),n.toUint8Array()}decode(e,r){const n=new Ct(e,r?.maxDepth),i=this._read(n,this.name??this.kind);return n.done(this.name??this.kind),i}validateXdr(e,r){try{return this.decode(e,r),!0}catch(n){if(n instanceof u)return!1;throw n}}validate(e){try{const r=new Se;return this._write(e,r,this.name??this.kind),!0}catch(r){if(r instanceof u)return!1;throw r}}}class Dt extends C{kind="array";element;maxLength;constructor(e,r){super(),be(r,"array maxLength"),this.element=e,this.maxLength=r}_read(e,r){e.enter(r);try{const n=e.readUint32(r);if(n>this.maxLength)throw new u(`${r}: array length ${n} exceeds maximum ${this.maxLength}`);if(n>e.remaining)throw new u(`${r}: array length ${n} exceeds remaining ${e.remaining} byte(s)`);return Tt(e,n,this.element,r)}finally{e.exit()}}_write(e,r,n){r.enter(n);try{if(xt(e,n),e.length>this.maxLength)throw new u(`${n}: array length ${e.length} exceeds maximum ${this.maxLength}`);r.writeUint32(e.length),Ft(e,r,this.element,n)}finally{r.exit()}}}function Ot(t,e){return new Dt(t,e)}function Tt(t,e,r,n){const i=[];for(let s=0;s<e;s+=1){const o=t.offset,l=r._read(t,`${n}[${s}]`);if(t.offset===o)throw new u(`${n}[${s}]: element type '${r.name??r.kind}' consumed no input; an array element must encode to at least one byte`);i.push(l)}return i}function Ft(t,e,r,n){let i=0;for(const s of t){const o=e.offset;if(r._write(s,e,`${n}[${i}]`),e.offset===o)throw new u(`${n}[${i}]: element type '${r.name??r.kind}' encoded to zero bytes; an array element must encode to at least one byte`);i+=1}}const Rt=new Set(["__proto__","name","kind","encode","decode","validate","_read","_write","nameByValue"]);class Nt extends C{kind="enum";nameByValue;#e=new Set;constructor(e,r){super(e);const n=new Map;for(const[i,s]of Object.entries(r)){if(Q(s,-2147483648,2147483647,`${e}.${i}`),this.#e.has(s))throw new u(`${e}: duplicate enum value ${s}`);this.#e.add(s),n.set(s,i)}this.nameByValue=n}_read(e,r){const n=e.readInt32(r);if(!this.#e.has(n))throw new u(`${r}: unknown enum value ${n}`);return n}_write(e,r,n){if(typeof e!="number"||!this.#e.has(e))throw new u(`${n}: unknown enum value ${String(e)}`);r.writeInt32(e)}}function Bt(t,e){for(const n of Object.getOwnPropertyNames(e))if(Rt.has(n))throw new u(`${t}: enum member name ${n} collides with reserved property`);const r=new Nt(t,e);return Object.assign(r,e)}class Mt extends C{kind="int32";_read(e,r){return e.readInt32(r)}_write(e,r,n){Q(e,-2147483648,2147483647,n),r.writeInt32(e)}}function $e(){return new Mt}class jt extends C{constructor(e){super(),this.maxLength=e,be(e,"string maxLength")}maxLength;kind="string";_read(e,r){const n=e.readUint32(r);if(n>this.maxLength)throw new u(`${r}: string byte length ${n} exceeds maximum ${this.maxLength}`);const i=e.readBytes(n,r);return e.skipPadding(n,r),i}_write(e,r,n){if(kt(e,n),e.length>this.maxLength)throw new u(`${n}: string byte length ${e.length} exceeds maximum ${this.maxLength}`);r.writeUint32(e.length),r.writeBytes(e),r.writePadding(e.length)}}function Ut(t){return new jt(t)}class Lt extends C{kind="struct";entries;constructor(e,r){if(super(e),Object.getOwnPropertyNames(r).includes("__proto__"))throw new u(`${e}: struct field name '__proto__' is not allowed`);this.entries=Object.entries(r)}_read(e,r){e.enter(r);try{const n={};for(const[i,s]of this.entries)n[i]=s._read(e,`${r}.${i}`);return n}finally{e.exit()}}_write(e,r,n){r.enter(n);try{if(!ye(e))throw new u(`${n}: expected plain object`);const i=e;for(const[s,o]of this.entries){if(!Object.prototype.hasOwnProperty.call(i,s))throw new u(`${n}.${s}: missing struct field`);o._write(i[s],r,`${n}.${s}`)}}finally{r.exit()}}}function Ie(t,e){return new Lt(t,e)}class Vt extends C{kind="uint32";_read(e,r){return e.readUint32(r)}_write(e,r,n){Q(e,0,4294967295,n),r.writeUint32(e)}}function qe(){return new Vt}class zt extends C{kind="uint64";_read(e,r){return e.readBigUint64(r)}_write(e,r,n){Et(e,0n,(1n<<64n)-1n,n),r.writeBigUint64(e)}}function z(){return new zt}const Z="default";class Xt extends C{kind="union";switchOn;cases;defaultArm;switchKey;#e=new Map;constructor(e,r,n,i,s){if(super(e),s==="__proto__")throw new u(`${e}: switchKey '__proto__' is not allowed`);if(this.switchOn=r,this.cases=n,this.defaultArm=i,this.switchKey=s,n.length===0&&i===void 0)throw new u(`${e}: union needs at least one case or a default arm`);const o=new Set;for(const l of n){if(!r.validate(l.discriminant))throw new u(`${e}.${l.name}: case discriminator ${String(l.discriminant)} is not a valid ${r.name??r.kind} value`);if(o.has(l.name))throw new u(`${e}: duplicate union case name ${l.name}`);if(o.add(l.name),this.#e.has(l.discriminant))throw new u(`${e}: duplicate union discriminator ${String(l.discriminant)}`);Ee(e,l.name,l.arm,s),this.#e.set(l.discriminant,l)}i!==void 0&&Ee(e,Z,i,s)}_read(e,r){e.enter(r);try{const n=this.switchOn._read(e,`${r}.${this.switchKey}`),i=this.#e.get(n),s=i?.arm??this.defaultArm;if(s===void 0)throw new u(`${r}: no case for union discriminator ${String(n)}`);return Ht(n,s,this.switchKey,e,`${r}.${i?.name??Z}`)}finally{e.exit()}}_write(e,r,n){r.enter(n);try{if(!ye(e)||!Object.prototype.hasOwnProperty.call(e,this.switchKey))throw new u(`${n}: expected union object with ${this.switchKey} discriminator`);const i=e,s=i[this.switchKey],o=this.#e.get(s),l=o?.arm??this.defaultArm;if(l===void 0)throw new u(`${n}: no case for union discriminator ${String(s)}`);this.switchOn._write(s,r,`${n}.${this.switchKey}`),Gt(i,l,r,`${n}.${o?.name??Z}`)}finally{r.exit()}}}function Wt(t,e){return{kind:"field",name:t,schema:e}}function ee(t,e,r){return{name:t,discriminant:e,arm:r}}function te(t,e){const r=e.switchKey??"type";return new Xt(t,e.switchOn,e.cases,e.defaultArm,r)}function Ht(t,e,r,n,i){const s={};return s[r]=t,X(e)?(s[e.name]=e.schema._read(n,`${i}.${e.name}`),s):(e._read(n,i),s)}function Gt(t,e,r,n){if(X(e)){if(!Object.prototype.hasOwnProperty.call(t,e.name))throw new u(`${n}.${e.name}: missing union arm payload`);e.schema._write(t[e.name],r,`${n}.${e.name}`);return}e._write(void 0,r,n)}function Ee(t,e,r,n){if(X(r)&&r.name===n)throw new u(`${t}.${e}: union arm payload field must not be named ${n}`);if(X(r)&&r.name==="__proto__")throw new u(`${t}.${e}: union arm payload field name '__proto__' is not allowed`)}function X(t){return"schema"in t}class Kt extends C{kind="void";_read(){}_write(e,r,n){if(e!==void 0)throw new u(`${n}: expected void`)}}function ke(){return new Kt}var re=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},w=(t,e,r)=>(re(t,e,"read from private field"),r?r.call(t):e.get(t)),P=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},ne=(t,e,r,n)=>(re(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),$=(t,e,r)=>(re(t,e,"access private method"),r),E,k,M,ie,xe,se,Ce,W,oe,R,j,U,H;const Yt=new TextEncoder,Pe={v:0};function Jt(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}const ae=Bt("EnvelopeType",{envelopeTypeBundle:0}),Qt=te("BundleItemExt",{switchOn:$e(),switchKey:"v",cases:[ee("v0",0,ke())]}),Zt=Ie("BundleItem",{collectionId:z(),productId:z(),variantId:z(),sku:Ut(At),quantity:qe(),ext:Qt}),er=te("BundleExt",{switchOn:$e(),switchKey:"v",cases:[ee("v0",0,ke())]}),tr=Ie("Bundle",{variantId:z(),items:Ot(Zt,500),version:qe(),ext:er}),rr=te("BundleEnvelope",{switchOn:ae,switchKey:"type",cases:[ee("envelopeTypeBundle",ae.envelopeTypeBundle,Wt("v1",tr))]});function nr(t){const e={type:ae.envelopeTypeBundle,v1:{variantId:BigInt(t.variantId.toString()),items:t.items.map(r=>({collectionId:BigInt(r.collectionId.toString()),productId:BigInt(r.productId.toString()),variantId:BigInt(r.variantId.toString()),sku:Yt.encode(r.sku||""),quantity:r.quantity,ext:Pe})),version:t.version||Math.floor(Date.now()/1e3),ext:Pe}};return Jt(rr.encode(e))}class ir{constructor(e,r){P(this,ie),P(this,se),P(this,W),P(this,R),P(this,U),P(this,E,void 0),P(this,k,void 0),P(this,M,void 0),ne(this,E,$(this,ie,xe).call(this,r)),ne(this,M,$(this,se,Ce).call(this,r)),ne(this,k,e)}isInitialDataValid(){if(!w(this,M))throw"Bundle data does not exist for the given product.";if(!w(this,E))throw"Bundle settings do not exist for the given product.";if(!Array.isArray(w(this,k))||!w(this,k).length)throw"No bundle selection items provided.";return!0}isValidVariant(e){if(!w(this,E)?.variantsSettings[e])throw`The ${e} bundle variant is invalid.`;return!0}isSelectionInVariantRange(e){const r=w(this,k).reduce((i,s)=>i+s.quantity,0),n=w(this,E)?.variantsSettings[e].ranges||[];if(!$(this,W,oe).call(this,n,r))throw"The total number of products does not fall within the required variant range.";return!0}areItemsInMaxPerItemBound(){const e=w(this,E)?.bundleSettings.maxPerItem||0,r=w(this,k).filter(({quantity:n})=>n>e);if(e&&r.length)throw`The selected products (${$(this,R,j).call(this,r.map(({externalProductId:n})=>n)).join(", ")}) exceed the maximum limit of ${e} items per product.`;return!0}areSelectedCollectionsValid(e){const r=w(this,E)?.variantsSettings[e]?.optionSources,n=w(this,k).filter(({collectionId:i})=>!r||!$(this,U,H).call(this,r,i));if(n.length)throw`The collections (${$(this,R,j).call(this,n.map(({collectionId:i})=>i)).join(", ")}) are no longer valid for the bundle variant (${e}).`;return!0}areItemsQuantitiesValidForTheCollection(e){const r=w(this,k).reduce((s,o)=>(s[o.collectionId]=o.quantity+(s[o.collectionId]||0),s),Object.create(null)),n=w(this,E)?.variantsSettings[e],i=Object.values(n?.optionSources||{}).filter(s=>{const o=r[s.collectionId]||0;return!$(this,W,oe).call(this,[s],o)});if(!n||i.length)throw`The selection exceeds the limits for the collections (${$(this,R,j).call(this,i.map(({collectionId:s})=>s)).join(", ")}).`;return!0}areSelectedProductsValid(e){const r=w(this,E)?.variantsSettings[e]?.optionSources||{},n=Object.values(r).reduce((s,o)=>{const l=w(this,M)?.collections[o.collectionId];return l&&(s[o.collectionId]=l),s},Object.create(null));if(!Object.values(n).length)throw`No collections found for the bundle variant (${e}).`;const i=w(this,k).filter(({externalProductId:s,collectionId:o})=>$(this,U,H).call(this,n,o)?!$(this,U,H).call(this,n[o].products,s):!0);if(i.length)throw`The products (${$(this,R,j).call(this,i.map(({externalProductId:s})=>s)).join(", ")}) are no longer valid for the bundle product.`;return!0}isBundleSelectionValid(e){return this.isInitialDataValid(),this.isValidVariant(e),this.isSelectionInVariantRange(e),this.areItemsInMaxPerItemBound(),this.areSelectedCollectionsValid(e),this.areItemsQuantitiesValidForTheCollection(e),this.areSelectedProductsValid(e),!0}}E=new WeakMap,k=new WeakMap,M=new WeakMap,ie=new WeakSet,xe=function(t){try{const e=t.bundle_settings;return{bundleSettings:{maxPerItem:e.max_quantity_per_variant,isCustomizable:e.is_customizable},variantsSettings:e.variants.reduce((r,n)=>{if(!n.enabled)return r;let i=[{min:n.items_count,max:n.items_count}];return n.items_count||(i=n.ranges.map(({quantity_max:s,quantity_min:o})=>({min:o,max:s}))),r[n.external_variant_id]={externalVariantId:n.external_variant_id,optionSources:n.option_sources.reduce((s,o)=>(s[o.option_source_id]={min:o.quantity_min,max:o.quantity_max,collectionId:o.option_source_id},s),Object.create(null)),ranges:i},r},Object.create(null))}}catch{return null}},se=new WeakSet,Ce=function(t){try{const e=Object.values(t.collections).reduce((r,n)=>(r[n.id]={...n,products:n.products.reduce((i,s)=>(i[s.id]=s,i),Object.create(null))},r),Object.create(null));return{...t,collections:e}}catch{return null}},W=new WeakSet,oe=function(t,e){return!!t.filter(({min:r,max:n})=>{const i=r??e,s=n??e;return i<=e&&e<=s}).length},R=new WeakSet,j=function(t){return Array.from(new Set(t))},U=new WeakSet,H=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};const sr="/bundling-storefront-manager";function Ae(t){return nr({variantId:t.externalVariantId,version:0,items:t.selections.map(e=>({collectionId:e.collectionId,productId:e.externalProductId,variantId:e.externalVariantId,quantity:e.quantity,sku:""}))})}async function or(t){const e=b(),r=await ce(t);if(r!==!0)throw new Error(r);const n=Ae(t);try{const i=await A("post",`${sr}/api/v1/bundles`,{data:{bundle:n},headers:{Origin:`https://${e.storeIdentifier}`}});if(!i.id||i.code!==200)throw new Error(`1: failed generating rb_id: ${JSON.stringify(i)}`);return i.id}catch(i){throw new Error(`2: failed generating rb_id ${i}`)}}async function ar(t,e){const r=await ce(e);if(r!==!0)throw new Error(r);const n=Ae(e);try{const i=await c("post","/bundle_selections/bundle_id",{data:{bundle:n}},a(t,"getBundleSelectionId"));if(!i.id||i.code!==200)throw new Error(`1: failed generating rb_id: ${JSON.stringify(i)}`);return i.id}catch(i){throw new Error(`2: failed generating rb_id ${i}`)}}function cr(t,e){const r=De(t);if(r!==!0)throw new Error(`Dynamic Bundle is invalid. ${r}`);const n=`${T(9)}:${t.externalProductId}`;return t.selections.map(i=>{const s={id:i.externalVariantId,quantity:i.quantity,properties:{_rc_bundle:n,_rc_bundle_variant:t.externalVariantId,_rc_bundle_parent:e,_rc_bundle_collection_id:i.collectionId}};return i.sellingPlan?s.selling_plan=i.sellingPlan:i.shippingIntervalFrequency&&(s.properties.shipping_interval_frequency=i.shippingIntervalFrequency,s.properties.shipping_interval_unit_type=i.shippingIntervalUnitType,s.id=`${i.discountedVariantId}`),s})}async function ce(t){try{return t?t.selections.length===0?"No selections defined":!0:"Bundle is not defined"}catch(e){return`Error fetching bundle settings: ${e}`}}async function dr(t){try{const e=await A("get",`/bundle-data/${p(t.externalProductId)}`);return{valid:new ir(t.selections,e).isBundleSelectionValid(t.externalVariantId)}}catch(e){return{valid:!1,error:String(e)}}}const ur={day:["day","days","Days"],days:["day","days","Days"],Days:["day","days","Days"],week:["week","weeks","Weeks"],weeks:["week","weeks","Weeks"],Weeks:["week","weeks","Weeks"],month:["month","months","Months"],months:["month","months","Months"],Months:["month","months","Months"]};function De(t){if(!t)return"No bundle defined.";if(t.selections.length===0)return"No selections defined.";const{shippingIntervalFrequency:e,shippingIntervalUnitType:r}=t.selections.find(n=>n.shippingIntervalFrequency||n.shippingIntervalUnitType)||{};if(e||r){if(!e||!r)return"Shipping intervals do not match on selections.";{const n=ur[r];for(let i=0;i<t.selections.length;i++){const{shippingIntervalFrequency:s,shippingIntervalUnitType:o}=t.selections[i];if(s&&s!==e||o&&!n.includes(o))return"Shipping intervals do not match on selections."}}}return!0}async function lr(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{bundle_selection:r}=await c("get","/bundle_selections",{id:e},a(t,"getBundleSelection"));return r}function pr(t,e){return c("get","/bundle_selections",{query:e},a(t,"listBundleSelections"))}async function hr(t,e){const{bundle_selection:r}=await c("post","/bundle_selections",{data:e},a(t,"createBundleSelection"));return r}async function _r(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{bundle_selection:n}=await c("put","/bundle_selections",{id:e,data:r},a(t,"updateBundleSelection"));return n}function mr(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/bundle_selections",{id:e},a(t,"deleteBundleSelection"))}async function fr(t,e,r,n){if(e===void 0||e==="")throw new Error("Purchase item ID is required");const{subscription:i}=await c("put","/bundles",{id:e,data:r,query:n},a(t,"updateBundle"));return i}var gr=Object.freeze({__proto__:null,createBundleSelection:hr,deleteBundleSelection:mr,getBundleId:or,getBundleSelection:lr,getBundleSelectionId:ar,getDynamicBundleItems:cr,listBundleSelections:pr,updateBundle:fr,updateBundleSelection:_r,validateBundle:ce,validateBundleSelection:dr,validateDynamicBundle:De});const wr=t=>{const e=t.layout_settings.addons,r=t.layout_settings.crossSells,n=t.customization_window,i=t.layout_settings?.defaultVariantId??t.default_bundle_variant_id,s=t.layout_settings.defaultFrequency,o=t.layout_settings.addToCartCallback;return{default_variant_id:i?String(i):null,is_customizable:t.is_customizable,price_rule:String(t.price_rule).toUpperCase(),customization_window:n?{active_days:n,disabled_message:t.customization_window_disabled_message||""}:null,addons:e.collectionId?{collection_id:e.collectionId,collection_handle:e.collectionHandle}:null,cross_sells:r.collectionId?{collection_id:e.collectionId,collection_handle:e.collectionHandle}:null,default_selling_plan_id:s||null,collapsible_collections:t.layout_settings.collapsibleSections,max_quantity_per_variant:t.max_quantity_per_variant,show_product_variants:t.layout_settings.showVariants,product_details_modal_enabled:t.layout_settings.learnMoreModal,addToCartBehavior:{type:o.type==="none"?"cart_page":o.type,value:o.value}}},yr=t=>t.tiered_discounts.length===0?null:{tiered_discounts:t.tiered_discounts},G=t=>({id:t.id,name:t.name,options:t.options.map(e=>({name:e.name,value:e.value})),recurring_deliveries:t.recurring_deliveries,price_adjustments:t.price_adjustments.map(({value:e,value_type:r})=>({value:e,value_type:r}))}),Oe=t=>({name:t.name,options:t.options.map(e=>({name:e.name,values:e.values})),selling_plans:t.selling_plans.map(G)}),Te=t=>({id:String(t.id),title:t.title,price:t.price,compare_at_price:t.compare_at_price,options:t.options,available_for_sale:t.available}),de=t=>t==null||typeof t=="string"?t:"src"in t?t.src:null,Fe=t=>({id:String(t.id),title:t.title,description:t.description,available_for_sale:t.available,featured_image:de(t.featured_image),images:t.images,requires_selling_plan:t.requires_selling_plan,selling_plan_groups:t.selling_plan_groups.map(Oe)}),Re=t=>{const e=vr(t.selling_plan_groups);return{...Fe(t),handle:t.handle,tags:t.tags,price_range:{min:t.price_min,max:t.price_max},compare_at_price_range:{min:t.compare_at_price_min,max:t.compare_at_price_max},options:t.options,variants:t.variants.map(r=>({...Te(r),selling_plan_allocations:r.selling_plan_allocations.map(n=>({price:n.price,compare_at_price:n.compare_at_price,selling_plan:G(e[`${n.selling_plan_group_id}-${n.selling_plan_id}`])})),option1:r.option1,option2:r.option2,option3:r.option3,sku:r.sku||"",requires_shipping:r.requires_shipping,taxable:r.taxable,featured_image:de(r.featured_image),public_title:r.public_title,requires_selling_plan:r.requires_selling_plan}))}},br=({items_count:t,ranges:e})=>e.length>0?e.map(({quantity_max:r,quantity_min:n})=>({min:n,max:r})):[{min:t,max:t}],vr=t=>t.reduce((e,r)=>(r.selling_plans.forEach(n=>{const i=`${r.id}-${n.id}`;e[i]=n}),e),{}),Sr=t=>Array.isArray(t)?t:[];function ue(t){const e=wr(t.bundle_settings),r=t.variants.reduce((n,i)=>(n[i.id]=i,n),{});return{id:String(t.id),title:t.title,description:t.description||null,handle:t.handle,options:t.options.map(n=>({name:n.name,position:n.position,values:n.values})),default_variant_id:e.default_variant_id,default_selling_plan_id:e.default_selling_plan_id?Number(e.default_selling_plan_id):null,available_for_sale:t.available,requires_selling_plan:t.requires_selling_plan,bundle_settings:{is_customizable:e.is_customizable,price_rule:e.price_rule,customization_window:e.customization_window,max_quantity_per_variant:e.max_quantity_per_variant,collapsible_collections:e.collapsible_collections,show_product_variants:e.show_product_variants,product_details_modal_enabled:e.product_details_modal_enabled,show_variants_as_individual_products:t.bundle_settings.settings.display_variants_as_separate_products_in_list,post_add_to_cart_behavior:e.addToCartBehavior},variants:t.bundle_settings.variants.filter(({enabled:n})=>n).map((n,i)=>{const s=r[String(n.external_variant_id)];return{id:String(n.external_variant_id),title:s.title,price:s.price,compare_at_price:s.compare_at_price,image:s.image||"",available_for_sale:s.available,options:s.options,requires_selling_plan:s.requires_selling_plan,selling_plan_allocations:s.selling_plan_allocations.map(o=>({price:o.price,compare_at_price:o.compare_at_price,selling_plan:G(o.selling_plan)})),ranges:br(n),collections:n.option_sources.map(o=>({id:o.option_source_id,source_platform:"shopify",min:o.quantity_min||0,max:o.quantity_max,position:o.position})),default_selections:n.selection_defaults.map(o=>({quantity:o.quantity,product:{id:String(o.product.id),handle:o.handle,title:o.product.title,description:o.product.description,images:o.product.images},variant:{id:o.external_variant_id,title:o.variant.title,featured_image:de(o.variant.featured_image),sku:o.sku||""}})),position:i}}),selling_plan_groups:t.selling_plan_groups.map(Oe),collections:Object.values(t.collections).reduce((n,i)=>(Array.isArray(i.products)&&(n[String(i.id)]={id:String(i.id),title:i.title,handle:i.handle,products:i.products.map(Re)}),n),{}),addons:t.addons.products.length?{collection_id:e.addons?.collection_id||"",collection_handle:e.addons?.collection_handle||"",products:t.addons.products.map(n=>({...Fe(n),price_range:{min:n.price,max:n.price},compare_at_price_range:{min:n.compare_at_price||0,max:n.compare_at_price},variants:n.variants.map(i=>({...Te(i),image:i.image,selling_plan_allocations:i.selling_plan_allocations.map(s=>({price:s.price,compare_at_price:s.compare_at_price,selling_plan:G(s.selling_plan)}))}))}))}:null,cross_sells:t.cross_sells.products.length?{collection_id:e.cross_sells?.collection_id||"",collection_handle:e.cross_sells?.collection_handle||"",products:t.cross_sells.products.map(Re)}:null,incentives:yr(t.incentives),filters:Sr(t.filters),templates:t.bundle_settings.layout_settings.templates||null,globalStyles:t.bundle_settings.layout_settings.globalStyles||null}}async function $r(t,e){return e?.source==="shopify_storefront"?qr():Ir(t,e?.country_code)}async function Ir(t,e){const{appName:r,appVersion:n}=b(),i={"X-Recharge-Sdk-Fn":"loadFromOnlineStore","X-Recharge-Sdk-Version":"2.3.0",...r?{"X-Recharge-Sdk-App-Name":r}:{},...n?{"X-Recharge-Sdk-App-Version":n}:{}};if(!e){const o=await A("get",`/bundle-data/${p(t)}`,{headers:i});return ue(o)}const s=new FormData;s.append("form_type","localization"),s.append("_method","put"),s.append("return_to",`${me}/bundle-data/${t}`),s.append("country_code",e);try{const o=await S("post","/localization",{headers:{"Content-Type":"multipart/form-data",...i},data:s});return ue(o)}catch{const o=await A("get",`/bundle-data/${p(t)}`,{headers:i});return ue(o)}}async function qr(t,e){if(!b().storeIdentifier)throw new Error("Store identifier is required for Shopify Storefront API requests");return{}}var Er=Object.freeze({__proto__:null,loadBundleData:$r});function kr(t){try{return JSON.parse(t)}catch{return t}}function xr(t){return Object.entries(t).reduce((e,[r,n])=>({...e,[r]:kr(n)}),{})}const Ne=t=>typeof t=="string"?t!=="0"&&t!=="false":!!t;function le(t,e){const r=new Set(e),n={};for(const i of Object.keys(t))r.has(i)||(n[i]=t[i]);return n}function Be(t){const e=xr(t),r=e.auto_inject===void 0?!0:e.auto_inject,n=e.display_on??[],i=e.first_option==="autodeliver";return{...le(e,["display_on","first_option"]),auto_inject:r,valid_pages:n,is_subscription_first:i,autoInject:r,validPages:n,isSubscriptionFirst:i}}function Me(t){const e=t.subscription_options?.storefront_purchase_options==="subscription_only";return{...t,is_subscription_only:e,isSubscriptionOnly:e}}function Cr(t){return t.map(e=>{const r={};return Object.entries(e).forEach(([n,i])=>{Object.defineProperty(r,n,{value:Me(i),enumerable:!0,writable:!0,configurable:!0})}),r})}const pe="2020-12",Pr={store_currency:{currency_code:"USD",currency_symbol:"$",decimal_separator:".",thousands_separator:",",currency_symbol_location:"left"}},L=new Map;function K(t,e){return L.has(t)||L.set(t,e()),L.get(t)}async function he(t,e){if(t===void 0||t==="")throw new Error("ID is required");const r=e?.version??"2020-12",{product:n}=await K(`product.${t}.${r}`,()=>V("get",`/product/${r}/${p(t)}.json`));return r==="2020-12"?Me(n):n}async function je(){return await K("storeSettings",()=>V("get",`/${pe}/store_settings.json`).catch(()=>Pr))}async function Ue(){const{widget_settings:t}=await K("widgetSettings",()=>V("get",`/${pe}/widget_settings.json`));return Be(t)}async function Le(){const{products:t,widget_settings:e,store_settings:r,meta:n}=await K("productsAndSettings",()=>V("get",`/product/${pe}/products.json`));return n?.status==="error"?Promise.reject(n.message):{products:Cr(t),widget_settings:Be(e),store_settings:r??{}}}async function Ar(){const{products:t}=await Le();return t}async function Dr(t){const[e,r,n]=await Promise.all([he(t),je(),Ue()]);return{product:e,store_settings:r,widget_settings:n,storeSettings:r,widgetSettings:n}}async function Or(t){const{bundle_product:e}=await he(t);return e}async function Ve(){return Array.from(L.keys()).forEach(t=>L.delete(t))}var Tr=Object.freeze({__proto__:null,getCDNBundleSettings:Or,getCDNProduct:he,getCDNProductAndSettings:Dr,getCDNProducts:Ar,getCDNProductsAndSettings:Le,getCDNStoreSettings:je,getCDNWidgetSettings:Ue,resetCDNCache:Ve});async function Fr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("get","/charges",{id:e,query:{include:r?.include}},a(t,"getCharge"));return n}function Rr(t,e){return c("get","/charges",{query:e},a(t,"listCharges"))}async function Nr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/charges/${p(e)}/apply_discount`,{data:{discount_code:r}},a(t,"applyDiscountToCharge"));return n}async function Br(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{charge:r}=await c("post",`/charges/${p(e)}/remove_discount`,{},a(t,"removeDiscountsFromCharge"));return r}async function Mr(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");if(r===void 0||r.length===0)throw new Error("Purchase item IDs are required");const{charge:i}=await c("post",`/charges/${p(e)}/skip`,{query:n,data:{purchase_item_ids:r.map(s=>Number(s))}},a(t,"skipCharge"));return i}async function jr(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");if(r===void 0||r.length===0)throw new Error("Purchase item IDs are required");const{charge:i}=await c("post",`/charges/${p(e)}/unskip`,{query:n,data:{purchase_item_ids:r.map(s=>Number(s))}},a(t,"unskipCharge"));return i}async function Ur(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{charge:r}=await c("post",`/charges/${p(e)}/process`,{},a(t,"processCharge"));return r}async function Lr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/charges/${p(e)}/change_next_charge_date`,{data:{next_charge_date:r}},a(t,"rescheduleCharge"));return n}var Vr=Object.freeze({__proto__:null,applyDiscountToCharge:Nr,getCharge:Fr,listCharges:Rr,processCharge:Ur,removeDiscountsFromCharge:Br,rescheduleCharge:Lr,skipCharge:Mr,unskipCharge:jr});async function ze(t,e){if(!["2020-12","2022-06"].includes(e.format_version))throw new Error("Missing or unsupported format_version.");return c("get","/product_search",{query:e,headers:{"X-Recharge-Version":"2021-01"}},a(t,"productSearch"))}var zr=Object.freeze({__proto__:null,productSearch:ze});async function Xe(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{collection:r}=await c("get","/collections",{id:e},a(t,"getCollection"));return r}function Xr(t,e){return c("get","/collections",{query:e},a(t,"listCollections"))}async function Wr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");if(!["2020-12","2022-06"].includes(r.format_version))throw new Error("Missing or unsupported format_version.");const n=a(t,"listCollectionProducts"),[{sort_order:i,manual_sort_order:s},{products:o}]=await Promise.all([Xe(n,e),ze(n,{...r,collection_ids:[e],limit:250})]);if(i==="manual")return{products:s.reduce((l,f)=>{const h=o.find(_=>_.external_product_id===f);return h&&l.push(h),l},[])};{const l=Hr(i);return{products:o.slice().sort(l)}}}function We(t,e){const r=t.external_created_at,n=e.external_created_at;return r<n?-1:n>r?1:0}function He(t,e){const r=t.external_product_id,n=e.external_product_id;return r<n?-1:n>r?1:0}function Ge(t,e){const r=t.title.toLowerCase(),n=e.title.toLowerCase();return r<n?-1:n>r?1:0}function Hr(t){switch(t){case"created_at-asc":return We;case"created_at-desc":return(e,r)=>We(r,e);case"id-asc":return He;case"id-desc":return(e,r)=>He(r,e);case"title-asc":return Ge;case"title-desc":return(e,r)=>Ge(r,e)}}var Gr=Object.freeze({__proto__:null,getCollection:Xe,listCollectionProducts:Wr,listCollections:Xr});async function Kr(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{customer:n}=await c("get","/customers",{id:r,query:{include:e?.include}},a(t,"getCustomer"));return n}async function Ke(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{customer:n}=await c("put","/customers",{id:r,data:e},a(t,"updateCustomer"));return n}async function Yr(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{deliveries:n}=await c("get",`/customers/${p(r)}/delivery_schedule`,{query:e},a(t,"getDeliverySchedule"));return n}async function Y(t,e){return c("get","/portal_access",{query:e},a(t,"getCustomerPortalAccess"))}async function Jr(t,e,r){if(e===void 0||e==="")throw new Error("Subscription ID is required");const{base_url:n,customer_hash:i,temp_token:s}=await Y(a(t,"getActiveChurnLandingPageURL"));return`${n.replace("portal","pages")}${i}/subscriptions/${e}/cancel?token=${s}&subscription=${e}&redirect_to=${encodeURIComponent(r)}`}async function Qr(t){const{base_url:e,customer_hash:r,temp_token:n}=await Y(a(t,"getFailedPaymentMethodRecoveryLandingPageURL"));return`${e.replace("portal","pages")}account/payment-methods?token=${n}&hash=${r}`}async function Zr(t,e,r){if(e===void 0||e==="")throw new Error("Gift ID is required");const{base_url:n,customer_hash:i,temp_token:s}=await Y(a(t,"getGiftRedemptionLandingPageURL"));return`${n.replace("portal","pages")}${i}/gifts/${e}?token=${s}&redirect_to=${encodeURIComponent(r)}`}const Ye={SHOPIFY_UPDATE_PAYMENT_INFO:{type:"email",template_type:"shopify_update_payment_information"},SHOPIFY_MIGRATE_PAYMENT_INFO:{type:"email",template_type:"shopify_migrate_payment_information"}};async function en(t,e,r){const n=t.customerId;if(!n)throw new Error("Not logged in.");if(!Object.prototype.hasOwnProperty.call(Ye,e))throw new Error("Notification not supported.");const i=Ye[e];return c("post",`/customers/${p(n)}/notifications`,{data:{...i,template_vars:r}},a(t,"sendCustomerNotification"))}async function tn(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{credit_summary:n}=await c("get",`/customers/${p(r)}/credit_summary`,{query:{include:e?.include}},a(t,"getCreditSummary"));return n}var rn=Object.freeze({__proto__:null,getActiveChurnLandingPageURL:Jr,getCreditSummary:tn,getCustomer:Kr,getCustomerPortalAccess:Y,getDeliverySchedule:Yr,getFailedPaymentMethodRecoveryLandingPageURL:Qr,getGiftRedemptionLandingPageURL:Zr,sendCustomerNotification:en,updateCustomer:Ke});async function nn(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{credit_summary:n}=await c("get",`/customers/${p(r)}/credit_summary`,{query:{include:e?.include,presentment_currency_code:e?.presentment_currency_code}},a(t,"getCreditSummary"));return n}function sn(t,{recurring:e}){if(!t.customerId)throw new Error("Not logged in.");const r={};return e!==void 0&&(r.apply_credit_to_next_recurring_charge=e),Ke(a(t,"setApplyCreditsToNextCharge"),r)}async function on(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{customer_id:n,...i}=e??{};return await c("get","/credit_accounts",{query:{...i,customer_id:r}},a(t,"listCreditAccounts"))}var an=Object.freeze({__proto__:null,getCreditSummary:nn,listCreditAccounts:on,setApplyCreditsToNextCharge:sn});async function cn(t,e,r){return await c("post","/customer_surveys/cancellation_prevention",{data:{customer_id:e,subscription_id:r}},a(t,"getCustomerSurveyReasons"))}async function dn(t,e,r,n){return await c("post",`/customer_surveys/${p(r)}/customer_response`,{data:{customer_id:e,response_id:n}},a(t,"getCustomerSurveyOffers"))}async function un(t,e){return await c("post","/offers/claim",{data:e},a(t,"claimOfferCustomerSurvey")),{}}var ln=Object.freeze({__proto__:null,claimOfferCustomerSurvey:un,getCustomerSurveyOffers:dn,getCustomerSurveyReasons:cn});function pn(t,e){if(!t.customerId)throw new Error("Not logged in.");return c("get","/gift_purchases",{query:e},a(t,"listGiftPurchases"))}async function hn(t,e){if(!t.customerId)throw new Error("Not logged in.");if(e===void 0||e==="")throw new Error("ID is required");const{gift_purchase:r}=await c("get","/gift_purchases",{id:e},a(t,"getGiftPurchase"));return r}var _n=Object.freeze({__proto__:null,getGiftPurchase:hn,listGiftPurchases:pn});function mn(t,e){if(!t.customerId)throw new Error("Not logged in.");return c("get","/incentives/tiered_discounts",{query:e},a(t,"listTieredDiscounts"))}async function fn(t,e){if(!t.customerId)throw new Error("Not logged in.");if(e===void 0||e==="")throw new Error("ID is required");const{tiered_discount:r}=await c("get",`/incentives/tiered_discounts/${p(e)}`,{},a(t,"getTieredDiscount"));return r}function gn(t,e){return c("post","/incentives/tiered_discounts/offers",{data:e},a(t,"getTieredDiscountOffers"))}var wn=Object.freeze({__proto__:null,getTieredDiscount:fn,getTieredDiscountOffers:gn,listTieredDiscounts:mn});async function yn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{membership:r}=await c("get","/memberships",{id:e},a(t,"getMembership"));return r}function bn(t,e){return c("get","/memberships",{query:e},a(t,"listMemberships"))}async function vn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership:n}=await c("post",`/memberships/${p(e)}/cancel`,{data:r},a(t,"cancelMembership"));return n}async function Sn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership:n}=await c("post",`/memberships/${p(e)}/activate`,{data:r},a(t,"activateMembership"));return n}async function $n(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership:n}=await c("post",`/memberships/${p(e)}/change`,{data:r},a(t,"changeMembership"));return n}var In=Object.freeze({__proto__:null,activateMembership:Sn,cancelMembership:vn,changeMembership:$n,getMembership:yn,listMemberships:bn});async function qn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership_program:n}=await c("get","/membership_programs",{id:e,query:{include:r?.include}},a(t,"getMembershipProgram"));return n}function En(t,e){return c("get","/membership_programs",{query:e},a(t,"listMembershipPrograms"))}var kn=Object.freeze({__proto__:null,getMembershipProgram:qn,listMembershipPrograms:En});async function xn(t,e){const{metafield:r}=await c("post","/metafields",{data:{metafield:e}},a(t,"createMetafield"));return r}async function Cn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{metafield:n}=await c("put","/metafields",{id:e,data:{metafield:r}},a(t,"updateMetafield"));return n}function Pn(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/metafields",{id:e},a(t,"deleteMetafield"))}var An=Object.freeze({__proto__:null,createMetafield:xn,deleteMetafield:Pn,updateMetafield:Cn});async function Dn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{onetime:r}=await c("get","/onetimes",{id:e},a(t,"getOnetime"));return r}function On(t,e){return c("get","/onetimes",{query:e},a(t,"listOnetimes"))}async function Tn(t,e){const{onetime:r}=await c("post","/onetimes",{data:e},a(t,"createOnetime"));return r}async function Fn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{onetime:n}=await c("put","/onetimes",{id:e,data:r},a(t,"updateOnetime"));return n}function Rn(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/onetimes",{id:e},a(t,"deleteOnetime"))}var Nn=Object.freeze({__proto__:null,createOnetime:Tn,deleteOnetime:Rn,getOnetime:Dn,listOnetimes:On,updateOnetime:Fn});async function Bn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{order:r}=await c("get","/orders",{id:e},a(t,"getOrder"));return r}function Mn(t,e){return c("get","/orders",{query:e},a(t,"listOrders"))}async function jn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{order:r}=await c("post",`/orders/${p(e)}/delay`,{},a(t,"delayOrder"));return r}var Un=Object.freeze({__proto__:null,delayOrder:jn,getOrder:Bn,listOrders:Mn});async function Ln(t,e){return typeof window<"u"&&window.Spreedly?Promise.resolve():new Promise((r,n)=>{if(typeof document>"u"){n(new Error("Document is not available. This function must be called in a browser environment."));return}if(document.querySelector(`script[src="${t}"]`)){const s=()=>{window.Spreedly?r():setTimeout(s,50)};s();return}const i=document.createElement("script");i.src=t,i.integrity=e,i.crossOrigin="anonymous",i.addEventListener("load",()=>{const s=()=>{window.Spreedly?r():setTimeout(s,50)};s()}),i.addEventListener("error",()=>{n(new Error("Failed to load payment iFrame script"))}),document.head.appendChild(i)})}async function Vn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{payment_method:n}=await c("get","/payment_methods",{id:e,query:{include:r?.include}},a(t,"getPaymentMethod"));return n}async function Je(t,e){const{payment_method:r}=await c("post","/payment_methods",{data:{...e,customer_id:t.customerId}},a(t,"createPaymentMethod"));return r}async function zn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{payment_method:n}=await c("put","/payment_methods",{id:e,data:r},a(t,"updatePaymentMethod"));return n}function Xn(t,e){return c("get","/payment_methods",{query:e},a(t,"listPaymentMethods"))}async function Wn(t,e){const r=await Hn(t,e),n=r.external.environment_key,i=r.payment_method_intent_id,s=r.external_customer_id.ecommerce,o=r.external.resource_url,l=r.external.integrity_hash,f=r.payment_method?.processor_payment_method_token;await Ln(o,l);let h=!1,_=null,y=null,v=null;return{mount(d,m){if(typeof window>"u"||!window.Spreedly)throw new Error("Payment script failed to load");window.Spreedly.init(n,{numberEl:d.numberElementId,cvvEl:d.cvvElementId}),window.Spreedly.on("ready",()=>{h=!0,d.styles&&(window.Spreedly.setStyle("number",d.styles),window.Spreedly.setStyle("cvv",d.styles)),d.numberLabel&&window.Spreedly.setLabel("number",d.numberLabel),d.cvvLabel&&window.Spreedly.setLabel("cvv",d.cvvLabel),d.numberPlaceholder&&window.Spreedly.setPlaceholder("number",d.numberPlaceholder),d.cvvPlaceholder&&window.Spreedly.setPlaceholder("cvv",d.cvvPlaceholder),d.numberFormat==="plainFormat"?(d.numberFieldType&&window.Spreedly.setFieldType("number",d.numberFieldType),d.cvvFieldType&&window.Spreedly.setFieldType("cvv",d.cvvFieldType),window.Spreedly.setNumberFormat("plainFormat")):d.numberFormat==="maskedFormat"?(window.Spreedly.setFieldType("cvv","text"),window.Spreedly.setFieldType("number","text"),window.Spreedly.setNumberFormat("maskedFormat")):d.numberFormat==="prettyFormat"?(d.numberFieldType==="text"||d.numberFieldType==="tel"?window.Spreedly.setFieldType("number",d.numberFieldType):window.Spreedly.setFieldType("number","tel"),d.cvvFieldType==="text"||d.cvvFieldType==="tel"?window.Spreedly.setFieldType("cvv",d.cvvFieldType):window.Spreedly.setFieldType("cvv","tel"),window.Spreedly.setNumberFormat("prettyFormat")):(d.numberFieldType&&window.Spreedly.setFieldType("number",d.numberFieldType),d.cvvFieldType&&window.Spreedly.setFieldType("cvv",d.cvvFieldType)),m?.onReady?.()}),window.Spreedly.on("fieldEvent",(g,I,x,D)=>{m?.onFieldEvent?.(g,I,x,D)}),window.Spreedly.on("errors",g=>{m?.onErrors?.(g)}),window.Spreedly.on("paymentMethod",(g,I)=>{_=g,m?.onPaymentMethod?.(g,I),y&&(_=null,y(g),y=null)})},tokenize(d){if(!h||!window.Spreedly)throw new Error("Payment form is not initialized");let m=String(d.year);m.length===2&&(m=`20${m}`);const g=String(d.month).padStart(2,"0");"full_name"in d?window.Spreedly.tokenizeCreditCard({full_name:d.full_name,month:g,year:m}):window.Spreedly.tokenizeCreditCard({first_name:d.first_name,last_name:d.last_name,month:g,year:m})},async submit(d){if(!h)throw new Error("Payment form is not initialized");if(_){const m=_;return _=null,Qe(t,m,d,{external_payment_method_id:f,payment_method_intent_id:i,external_customer_id:s})}return new Promise((m,g)=>{v=d,y=async I=>{try{const x=await Qe(t,I,v,{external_payment_method_id:f,payment_method_intent_id:i,external_customer_id:s});m(x)}catch(x){g(x)}finally{v=null}},this.tokenize(d.card_details)})},reset(){window.Spreedly&&window.Spreedly.reload(),_=null,y=null,v=null},unmount(){window.Spreedly&&window.Spreedly.removeHandlers(),h=!1,_=null,y=null,v=null},addEventHandlers(d){d.onReady&&window.Spreedly.on("ready",d.onReady),d.onFieldEvent&&window.Spreedly.on("fieldEvent",d.onFieldEvent),d.onErrors&&window.Spreedly.on("errors",d.onErrors),d.onPaymentMethod&&window.Spreedly.on("paymentMethod",d.onPaymentMethod)},removeHandlers(){window.Spreedly&&window.Spreedly.removeHandlers()},setFieldType(d,m){window.Spreedly.setFieldType(d,m)},setLabel(d,m){window.Spreedly.setLabel(d,m)},setNumberFormat(d){window.Spreedly.setNumberFormat(d)},setPlaceholder(d,m){window.Spreedly.setPlaceholder(d,m)},setStyle(d,m){window.Spreedly.setStyle(d,m)}}}async function Hn(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");return await c("post","/payment_method_intents",{data:{customer_id:r,payment_method_id:e}},a(t,"createFrictionlessPaymentIntentV1"))}async function Qe(t,e,{billing_address:r,default_payment_method:n,address_ids:i,apply_to_all_subscription_addresses:s},{external_payment_method_id:o,payment_method_intent_id:l,external_customer_id:f}){return await Je(a(t,"submitFrictionlessPaymentMethodV1"),{default:n??!1,payment_type:"CREDIT_CARD",processor_customer_token:f.toString(),processor_name:"frictionless",processor_payment_method_token:e,billing_address:r,payment_method_intent_id:l,address_ids:i,external_payment_method_id:o,apply_to_all_subscription_addresses:s})}var Gn=Object.freeze({__proto__:null,createPaymentMethod:Je,getPaymentMethod:Vn,initFrictionlessPaymentV1:Wn,listPaymentMethods:Xn,updatePaymentMethod:zn});async function Kn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{plan:r}=await c("get","/plans",{id:e},a(t,"getPlan"));return r}function Yn(t,e){return c("get","/plans",{query:e},a(t,"listPlans"))}var Jn=Object.freeze({__proto__:null,getPlan:Kn,listPlans:Yn});async function Qn(t,e){return await c("get","/shop/shipping_countries",{query:e,headers:{"X-Recharge-Version":"2021-01"}},a(t,"getShippingCountries"))}async function Zn(t){return await c("get","/shop/settings",{headers:{"X-Recharge-Version":"2021-01"}},a(t,"getStoreSettings"))}var ei=Object.freeze({__proto__:null,getShippingCountries:Qn,getStoreSettings:Zn});function ti(t,e){return{...le(e,["address_id","external_variant_id","external_product_id","charge_interval_frequency","order_interval_frequency","price","status"]),customer_id:parseInt(t,10),shopify_variant_id:e.external_variant_id.ecommerce?parseInt(e.external_variant_id.ecommerce,10):void 0,...e.charge_interval_frequency?{charge_interval_frequency:`${e.charge_interval_frequency}`}:{},...e.order_interval_frequency?{order_interval_frequency:`${e.order_interval_frequency}`}:{},status:e.status?e.status.toUpperCase():void 0}}function ri(t,e){return{...le(e,["external_variant_id","external_product_id","charge_interval_frequency","order_interval_frequency","price","use_external_variant_defaults"]),shopify_variant_id:e.external_variant_id?.ecommerce?parseInt(e.external_variant_id.ecommerce,10):void 0,...e.charge_interval_frequency?{charge_interval_frequency:`${e.charge_interval_frequency}`}:void 0,...e.order_interval_frequency?{order_interval_frequency:`${e.order_interval_frequency}`}:void 0,force_update:t}}function Ze(t){const{id:e,address_id:r,customer_id:n,analytics_data:i,cancellation_reason:s,cancellation_reason_comments:o,cancelled_at:l,charge_interval_frequency:f,created_at:h,expire_after_specific_number_of_charges:_,shopify_product_id:y,shopify_variant_id:v,has_queued_charges:d,is_prepaid:m,is_skippable:g,is_swappable:I,max_retries_reached:x,next_charge_scheduled_at:D,order_day_of_month:q,order_day_of_week:O,order_interval_frequency:Si,order_interval_unit:$i,presentment_currency:Ii,price:qi,product_title:Ei,properties:ki,quantity:xi,sku:Ci,sku_override:Pi,status:Ai,updated_at:Di,variant_title:Oi}=t;return{id:e,address_id:r,customer_id:n,analytics_data:i,cancellation_reason:s,cancellation_reason_comments:o,cancelled_at:l,charge_interval_frequency:parseInt(f,10),created_at:h,expire_after_specific_number_of_charges:_,external_product_id:{ecommerce:`${y}`},external_variant_id:{ecommerce:`${v}`},has_queued_charges:Ne(d),is_prepaid:m,is_skippable:g,is_swappable:I,max_retries_reached:Ne(x),next_charge_scheduled_at:D,order_day_of_month:q,order_day_of_week:O,order_interval_frequency:parseInt(Si,10),order_interval_unit:$i,presentment_currency:Ii,price:`${qi}`,product_title:Ei??"",properties:ki,quantity:xi,sku:Ci,sku_override:Pi,status:Ai.toLowerCase(),updated_at:Di,variant_title:Oi}}async function ni(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("get","/subscriptions",{id:e,query:{include:r?.include}},a(t,"getSubscription"));return n}function ii(t,e){return c("get","/subscriptions",{query:e},a(t,"listSubscriptions"))}function si(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");return c("get",`/subscriptions/${p(e)}/addons`,{query:r},a(t,"listSubscriptionAddons"))}async function oi(t,e,r){const{subscription:n}=await c("post","/subscriptions",{data:e,query:r},a(t,"createSubscription"));return n}async function ai(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:i}=await c("put","/subscriptions",{id:e,data:r,query:n},a(t,"updateSubscription"));return i}async function ci(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:i}=await c("post",`/subscriptions/${p(e)}/set_next_charge_date`,{data:{date:r},query:n},a(t,"updateSubscriptionChargeDate"));return i}async function di(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("post",`/subscriptions/${p(e)}/change_address`,{data:{address_id:r}},a(t,"updateSubscriptionAddress"));return n}async function ui(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:i}=await c("post",`/subscriptions/${p(e)}/cancel`,{data:r,query:n},a(t,"cancelSubscription"));return i}async function li(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("post",`/subscriptions/${p(e)}/activate`,{query:r},a(t,"activateSubscription"));return n}async function pi(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/subscriptions/${p(e)}/charges/skip`,{data:{date:r,subscription_id:`${e}`}},a(t,"skipSubscriptionCharge"));return n}async function hi(t,e,r={}){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("post",`/subscriptions/${p(e)}/pricing_preview`,{data:r},a(t,"getSubscriptionPricingPreview"));return n}async function _i(t,e,r){if(e===void 0||e.length===0)throw new Error("Subscription IDs are required");const{onetimes:n}=await c("post","/purchase_items/skip_gift",{data:{purchase_item_ids:e.map(Number),recipient_address:r}},a(t,"skipGiftSubscriptionCharge"));return n}async function mi(t,e,r){const n=e.length;if(n<1||n>21)throw new Error("Number of subscriptions must be between 1 and 20.");const{customerId:i}=t;if(!i)throw new Error("No customerId in session.");const s=e[0].address_id;if(!e.every(h=>h.address_id===s))throw new Error("All subscriptions must have the same address_id.");const o=e.map(h=>ti(i,h));let l;r?.allow_onetimes!==void 0&&(l={allow_onetimes:r.allow_onetimes});const{subscriptions:f}=await c("post",`/addresses/${p(s)}/subscriptions-bulk`,{data:{subscriptions:o,commit_update:!!r?.commit},headers:{"X-Recharge-Version":"2021-01"},query:l},a(t,"createSubscriptions"));return f.map(Ze)}async function fi(t,e,r,n){if(e===void 0||e==="")throw new Error("Address ID is required");const i=r.length;if(i<1||i>21)throw new Error("Number of subscriptions must be between 1 and 20.");const{customerId:s}=t;if(!s)throw new Error("No customerId in session.");const o=!!n?.force_update,l=r.map(_=>ri(o,_));let f;n?.allow_onetimes!==void 0&&(f={allow_onetimes:n.allow_onetimes});const{subscriptions:h}=await c("put",`/addresses/${p(e)}/subscriptions-bulk`,{data:{subscriptions:l,commit_update:!!n?.commit},headers:{"X-Recharge-Version":"2021-01"},query:f},a(t,"updateSubscriptions"));return h.map(Ze)}async function gi(t,e,r,n){if(e===void 0||e==="")throw new Error("Address ID is required");const i=r.length;if(i<1||i>21)throw new Error("Number of subscriptions must be between 1 and 20.");const{customerId:s}=t;if(!s)throw new Error("No customerId in session.");let o;n?.allow_onetimes!==void 0&&(o={allow_onetimes:n.allow_onetimes}),await c("delete",`/addresses/${p(e)}/subscriptions-bulk`,{data:{subscriptions:r,send_email:!!n?.send_email,commit_update:!!n?.commit},headers:{"X-Recharge-Version":"2021-01"},query:o},a(t,"deleteSubscriptions"))}var wi=Object.freeze({__proto__:null,activateSubscription:li,cancelSubscription:ui,createSubscription:oi,createSubscriptions:mi,deleteSubscriptions:gi,getSubscription:ni,getSubscriptionPricingPreview:hi,listSubscriptionAddons:si,listSubscriptions:ii,skipGiftSubscriptionCharge:_i,skipSubscriptionCharge:pi,updateSubscription:ai,updateSubscriptionAddress:di,updateSubscriptionChargeDate:ci,updateSubscriptions:fi});const yi={get(t,e){return S("get",t,e)},post(t,e){return S("post",t,e)},put(t,e){return S("put",t,e)},delete(t,e){return S("delete",t,e)}};function bi(t){if(t)return t;if(window?.Shopify?.shop)return window.Shopify.shop;let e=window?.domain;if(!e){const r=location?.href.match(/(?:http[s]*:\/\/)*(.*?)\.(?=admin\.rechargeapps\.com)/i)?.[1].replace(/-sp$/,"");r&&(e=`${r}.myshopify.com`)}if(e)return e;throw new Error("No storeIdentifier was passed into init.")}function vi(t={}){const e=t,{storefrontAccessToken:r}=t;if(r&&!r.startsWith("strfnt"))throw new Error("Incorrect storefront access token used. See https://storefront.rechargepayments.com/client/docs/getting_started/package_setup/#initialization-- for more information.");tt({storeIdentifier:bi(t.storeIdentifier),loginRetryFn:t.loginRetryFn,__unstable_twoFactorRetryFn:t.__unstable_twoFactorRetryFn,storefrontAccessToken:r,appName:t.appName,appVersion:t.appVersion,environment:e.environment?e.environment:"prod",environmentUri:e.environmentUri,customerHash:e.customerHash}),Ve()}const et={init:vi,api:yi,address:mt,auth:qt,bundle:gr,bundleData:Er,charge:Vr,cdn:Tr,collection:Gr,credit:an,customer:rn,customerSurveys:ln,gift:_n,tieredDiscount:wn,membership:In,membershipProgram:kn,metafield:An,onetime:Nn,order:Un,paymentMethod:Gn,plan:Jn,product:zr,store:ei,subscription:wi};try{et.init()}catch{}return et});
|
|
1
|
+
// recharge-client-2.4.0.min.js | MIT License | © Recharge Inc.
|
|
2
|
+
(function(N,T){typeof exports=="object"&&typeof module<"u"?module.exports=T():typeof define=="function"&&define.amd?define(T):(N=typeof globalThis<"u"?globalThis:N||self,N.recharge=T())})(this,function(){"use strict";const N="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function T(t=21){let e="";for(let r=0;r<t;r++)e+=N[Math.random()*64|0];return e}let _e={storeIdentifier:"",environment:"prod"};function tt(t){_e=t}function b(){return _e}const rt=(t,e="")=>{switch(t){case"prod":return"https://api.rechargeapps.com";case"stage":return"https://api.stage.rechargeapps.com";case"preprod":case"prestage":return`${e}/api`}},nt=(t,e="")=>{switch(t){case"prod":return"https://admin.rechargeapps.com";case"stage":return"https://admin.stage.rechargeapps.com";case"preprod":case"prestage":return e}},it=t=>{switch(t){case"prod":case"preprod":return"https://static.rechargecdn.com";case"stage":case"prestage":return"https://static.stage.rechargecdn.com"}},me="/tools/recurring";class F{constructor(e,r){this.name="RechargeRequestError",this.message=e,this.status=r}}function p(t){return encodeURIComponent(`${t}`.trim())}function st(t){const e=r=>encodeURIComponent(r===null?"":String(r));return Object.entries(t).filter(([,r])=>r!==void 0&&!(Array.isArray(r)&&r.length===0)).map(([r,n])=>`${r}=${Array.isArray(n)?n.map(e).join(","):e(n)}`).join("&")}const ot=new Set(["shop_url"]);function a(t,e){return{...t,internalFnCall:t.internalFnCall??e,internalRequestId:t.internalRequestId??T()}}async function V(t,e,r={}){const n=b();return S(t,`${it(n.environment)}/store/${n.storeIdentifier}${e}`,r)}async function c(t,e,{id:r,query:n,data:i,headers:s}={},o){const{environment:l,environmentUri:f,storeIdentifier:h,loginRetryFn:_,__unstable_twoFactorRetryFn:y,appName:v,appVersion:d}=b();if(!h)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const m=o.apiToken;if(!m)throw new Error("No API token defined on session.");const g=rt(l,f),I={"X-Recharge-Access-Token":m,"X-Recharge-Version":"2021-11","X-Recharge-Sdk-Fn":o.internalFnCall,...v?{"X-Recharge-Sdk-App-Name":v}:{},...d?{"X-Recharge-Sdk-App-Version":d}:{},"X-Recharge-Sdk-Version":"2.4.0","X-Request-Id":o.internalRequestId,...o.tmp_fn_identifier?{"X-Recharge-Sdk-Fn-Identifier":o.tmp_fn_identifier}:{},...s||{}},x=n,D={...x?Object.fromEntries(Object.entries(x).filter(([q])=>!ot.has(q))):void 0,shop_url:h};try{return await S(t,`${g}${e}`,{id:r,query:D,data:i,headers:I})}catch(q){if(_&&q instanceof F&&q.status===401)return _().then(O=>{if(O)return S(t,`${g}${e}`,{id:r,query:D,data:i,headers:{...I,"X-Recharge-Access-Token":O.apiToken}});throw q});if(y&&q instanceof F&&q.status===423)return y().then(O=>{if(O)return S(t,`${g}${e}`,{id:r,query:D,data:i,headers:{...I,"X-Recharge-Access-Token":O.apiToken}});throw q});throw q}}async function A(t,e,r={}){return S(t,`${me}${e}`,r)}async function S(t,e,{id:r,query:n,data:i,headers:s}={}){let o=e.trim();if(r&&(o=[o,p(r)].join("/")),n){let y;[o,y]=o.split("?");const v=[y,st(n)].join("&").replace(/^&/,"");o=`${o}${v?`?${v}`:""}`}let l;i&&t!=="get"&&(l=JSON.stringify(i));const f={Accept:"application/json","Content-Type":"application/json","X-Recharge-App":"storefront-client",...s||{}},h=await fetch(o,{method:t,headers:f,body:l});let _;try{_=await h.json()}catch{}if(!h.ok)throw h.status===502||h.status===504?new F("A gateway error occurred while making the request",h.status):_&&_.error?new F(_.error,h.status):_&&_.errors?new F(JSON.stringify(_.errors),h.status):new F("A connection error occurred while making the request");return _}function at(t,e){return c("get","/addresses",{query:e},a(t,"listAddresses"))}async function ct(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{address:n}=await c("get","/addresses",{id:e,query:{include:r?.include}},a(t,"getAddress"));return n}async function dt(t,e){const{address:r}=await c("post","/addresses",{data:{...e,customer_id:t.customerId?Number(t.customerId):void 0}},a(t,"createAddress"));return r}async function J(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{address:i}=await c("put","/addresses",{id:e,data:r,query:n},a(t,"updateAddress"));return i}async function ut(t,e,r,n){return J(a(t,"applyDiscountToAddress"),e,{discounts:[{code:r}]},n)}async function lt(t,e,r){if(e===void 0||e==="")throw new Error("Id is required");return J(a(t,"removeDiscountsFromAddress"),e,{discounts:[]},r)}function pt(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/addresses",{id:e},a(t,"deleteAddress"))}async function ht(t,e){const{address:r}=await c("post","/addresses/merge",{data:e},a(t,"mergeAddresses"));return r}async function _t(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/addresses/${p(e)}/charges/skip`,{data:r},a(t,"skipFutureCharge"));return n}var mt=Object.freeze({__proto__:null,applyDiscountToAddress:ut,createAddress:dt,deleteAddress:pt,getAddress:ct,listAddresses:at,mergeAddresses:ht,removeDiscountsFromAddress:lt,skipFutureCharge:_t,updateAddress:J});async function ft(){const{storefrontAccessToken:t}=b(),e={};t&&(e["X-Recharge-Storefront-Access-Token"]=t);const r=await A("get","/access",{headers:e});return{apiToken:r.api_token,customerId:r.customer_id,message:r.message}}async function gt(t,e){return fe(t,e)}async function fe(t,e){if(!t)throw new Error("Shopify storefront token is required");const{storeIdentifier:r}=b();if(!r)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const{api_token:n,customer_id:i,message:s}=await B("post","/shopify_storefront_access",{data:{customer_token:e,storefront_token:t,shop_url:r}});return n?{apiToken:n,customerId:i,message:s}:null}async function wt(t){const{storeIdentifier:e}=b();if(!e)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const{api_token:r,customer_id:n,message:i}=await B("post","/shopify_customer_account_api_access",{data:{customer_token:t,shop_url:e}});return r?{apiToken:r,customerId:n,message:i}:null}async function yt(t,e={}){if(!t)throw new Error("Email is required.");const{storeIdentifier:r}=b();if(!r)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const{send_email:n,send_sms:i}=e,s=await B("post","/attempt_login",{data:{email:t,shop:r,...n!==void 0?{send_email:n}:{},...i!==void 0?{send_sms:i}:{}}});if(s.errors)throw new Error(s.errors);return s.session_token}async function bt(t,e={}){if(!t)throw new Error("Email is required.");const{storefrontAccessToken:r}=b(),n={};r&&(n["X-Recharge-Storefront-Access-Token"]=r);const{send_email:i,send_sms:s}=e,o=await A("post","/attempt_login",{data:{email:t,...i!==void 0?{send_email:i}:{},...s!==void 0?{send_sms:s}:{}},headers:n});if(o.errors)throw new Error(o.errors);return o.session_token}async function vt(t,e,r){if(!t)throw new Error("Email is required.");if(!e)throw new Error("Session token is required.");if(!r)throw new Error("Code is required.");const{storeIdentifier:n}=b();if(!n)throw new Error("InitRecharge has not been called and/or no store identifier has been defined.");const i=await B("post","/validate_login",{data:{code:r,email:t,session_token:e,shop:n}});if(i.errors)throw new Error(i.errors);return{apiToken:i.api_token,customerId:i.customer_id}}async function St(t,e,r){if(!t)throw new Error("Email is required.");if(!e)throw new Error("Session token is required.");if(!r)throw new Error("Code is required.");const{storefrontAccessToken:n}=b(),i={};n&&(i["X-Recharge-Storefront-Access-Token"]=n);const s=await A("post","/validate_login",{data:{code:r,email:t,session_token:e},headers:i});if(s.errors)throw new Error(s.errors);return{apiToken:s.api_token,customerId:s.customer_id}}function $t(){const{customerHash:t}=b(),{pathname:e,search:r}=window.location,n=new URLSearchParams(r).get("token"),i=e.split("/").filter(Boolean),s=i.findIndex(l=>l==="portal"),o=s!==-1?i[s+1]:t;if(!n||!o)throw new Error("Not in context of Recharge Customer Portal or URL did not contain correct params");return{customerHash:o,token:n}}async function It(){const{customerHash:t,token:e}=$t(),{storeIdentifier:r}=b(),n=await B("post",`/customers/${p(t)}/access`,{data:{token:e,shop:r}});return{apiToken:n.api_token,customerId:n.customer_id}}async function B(t,e,{id:r,query:n,data:i,headers:s}={}){const{environment:o,environmentUri:l,storefrontAccessToken:f,appName:h,appVersion:_}=b(),y=nt(o,l),v={...f?{"X-Recharge-Storefront-Access-Token":f}:{},...h?{"X-Recharge-Sdk-App-Name":h}:{},..._?{"X-Recharge-Sdk-App-Version":_}:{},"X-Recharge-Sdk-Version":"2.4.0",...s||{}};return S(t,`${y}${e}`,{id:r,query:n,data:i,headers:v})}var qt=Object.freeze({__proto__:null,loginCustomerPortal:It,loginShopifyApi:gt,loginShopifyAppProxy:ft,loginWithShopifyCustomerAccount:wt,loginWithShopifyStorefront:fe,sendPasswordlessCode:yt,sendPasswordlessCodeAppProxy:bt,validatePasswordlessCode:vt,validatePasswordlessCodeAppProxy:St});const ge="XdrError";class u extends Error{constructor(e){super(e),this.name=ge}static[Symbol.hasInstance](e){return e instanceof Error&&e.name===ge}}function we(t){return(4-t%4)%4}function ye(t){if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}function be(t,e){if(!Number.isInteger(t)||t<0||t>4294967295)throw new u(`${e}: expected uint32 length`)}function Q(t,e,r,n){if(typeof t!="number"||!Number.isInteger(t)||t<e||t>r)throw new u(`${n}: expected integer in range ${e}..${r}`)}function Et(t,e,r,n){if(typeof t!="bigint"||t<e||t>r)throw new u(`${n}: expected bigint in range ${e}..${r}`)}function kt(t,e){if(!(t instanceof Uint8Array))throw new u(`${e}: expected Uint8Array`);try{Uint8Array.prototype.at.call(t,0)}catch{throw new u(`${e}: Uint8Array is detached or out of bounds`)}}function xt(t,e){if(!Array.isArray(t))throw new u(`${e}: expected array`)}const ve=1500;class Ct{#e=0;#i=0;#t;#n;#s;bytes;constructor(e,r=ve){if(r<0||!Number.isInteger(r))throw new u(`invalid maxDepth ${r}`);if(this.#t=r,!ArrayBuffer.isView(e)||e.BYTES_PER_ELEMENT!==1)throw new TypeError("Reader expects a Uint8Array");this.bytes=Object.getPrototypeOf(e)===Uint8Array.prototype?e:e.byteLength===0?new Uint8Array(0):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),this.#n=this.bytes.buffer?.detached?new DataView(new ArrayBuffer(0)):new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.#s=this.#n.byteLength}#r(e,r){if(this.remaining<e)throw new u(`${r}: incomplete XDR data at offset ${this.#e}, expected ${e} byte(s)`);const n=this.#e;return this.#e+=e,n}get offset(){return this.#e}get remaining(){return this.#s-this.#e}enter(e){if(this.#i+=1,this.#i>this.#t)throw this.#i-=1,new u(`${e}: max recursion depth ${this.#t} exceeded`)}exit(){this.#i-=1}done(e){if(this.remaining!==0)throw new u(`${e}: trailing ${this.remaining} byte(s) after XDR value`)}readBytes(e,r){if(e<0||!Number.isInteger(e))throw new u(`${r}: invalid byte length ${e}`);if(this.remaining<e)throw new u(`${r}: incomplete XDR data at offset ${this.#e}, expected ${e} byte(s)`);const n=this.bytes.slice(this.#e,this.#e+e);if(n.length!==e)throw new u(`${r}: input shrank during decode`);return this.#e+=e,n}skipPadding(e,r){if(e<0||!Number.isInteger(e))throw new u(`${r}: invalid byte length ${e}`);const n=we(e);if(n===0)return;const i=this.#r(n,r);for(let s=0;s<n;s++)if(this.bytes[i+s]!==0)throw this.#e=i,new u(`${r}: non-zero XDR padding`)}readInt32(e){return this.#n.getInt32(this.#r(4,e),!1)}readUint32(e){return this.#n.getUint32(this.#r(4,e),!1)}readBigInt64(e){return this.#n.getBigInt64(this.#r(8,e),!1)}readBigUint64(e){return this.#n.getBigUint64(this.#r(8,e),!1)}readFloat32(e){return this.#n.getFloat32(this.#r(4,e),!1)}readFloat64(e){return this.#n.getFloat64(this.#r(8,e),!1)}}const Pt=8192;class Se{#e=new Uint8Array(Pt);#i=new DataView(this.#e.buffer);#t=0;#n=0;#s;constructor(e=ve){if(e<0||!Number.isInteger(e))throw new u(`invalid maxDepth ${e}`);this.#s=e}get offset(){return this.#t}enter(e){if(this.#n+=1,this.#n>this.#s)throw this.#n-=1,new u(`${e}: max recursion depth ${this.#s} exceeded`)}exit(){this.#n-=1}writeBytes(e){this.#o(e.length),this.#e.set(e,this.#t),this.#t+=e.length}writePadding(e){const r=we(e);r>0&&(this.#o(r),this.#e.fill(0,this.#t,this.#t+r),this.#t+=r)}writeInt32(e){const r=this.#r(4);this.#i.setInt32(r,e,!1),this.#t+=4}writeUint32(e){const r=this.#r(4);this.#i.setUint32(r,e,!1),this.#t+=4}writeBigInt64(e){const r=this.#r(8);this.#i.setBigInt64(r,e,!1),this.#t+=8}writeBigUint64(e){const r=this.#r(8);this.#i.setBigUint64(r,e,!1),this.#t+=8}writeFloat32(e){const r=this.#r(4);this.#i.setFloat32(r,e,!1),this.#t+=4}writeFloat64(e){const r=this.#r(8);this.#i.setFloat64(r,e,!1),this.#t+=8}#r(e){return this.#o(e),this.#t}toUint8Array(){return this.#e.slice(0,this.#t)}#o(e){const r=this.#t+e;if(r<=this.#e.length)return;let n=this.#e.length;for(;n<r;)n*=2;const i=new Uint8Array(n);i.set(this.#e),this.#e=i,this.#i=new DataView(i.buffer)}}const At=4294967295;class C{name;constructor(e=void 0){this.name=e}encode(e,r){const n=new Se(r?.maxDepth);return this._write(e,n,this.name??this.kind),n.toUint8Array()}decode(e,r){const n=new Ct(e,r?.maxDepth),i=this._read(n,this.name??this.kind);return n.done(this.name??this.kind),i}validateXdr(e,r){try{return this.decode(e,r),!0}catch(n){if(n instanceof u)return!1;throw n}}validate(e){try{const r=new Se;return this._write(e,r,this.name??this.kind),!0}catch(r){if(r instanceof u)return!1;throw r}}}class Dt extends C{kind="array";element;maxLength;constructor(e,r){super(),be(r,"array maxLength"),this.element=e,this.maxLength=r}_read(e,r){e.enter(r);try{const n=e.readUint32(r);if(n>this.maxLength)throw new u(`${r}: array length ${n} exceeds maximum ${this.maxLength}`);if(n>e.remaining)throw new u(`${r}: array length ${n} exceeds remaining ${e.remaining} byte(s)`);return Tt(e,n,this.element,r)}finally{e.exit()}}_write(e,r,n){r.enter(n);try{if(xt(e,n),e.length>this.maxLength)throw new u(`${n}: array length ${e.length} exceeds maximum ${this.maxLength}`);r.writeUint32(e.length),Ft(e,r,this.element,n)}finally{r.exit()}}}function Ot(t,e){return new Dt(t,e)}function Tt(t,e,r,n){const i=[];for(let s=0;s<e;s+=1){const o=t.offset,l=r._read(t,`${n}[${s}]`);if(t.offset===o)throw new u(`${n}[${s}]: element type '${r.name??r.kind}' consumed no input; an array element must encode to at least one byte`);i.push(l)}return i}function Ft(t,e,r,n){let i=0;for(const s of t){const o=e.offset;if(r._write(s,e,`${n}[${i}]`),e.offset===o)throw new u(`${n}[${i}]: element type '${r.name??r.kind}' encoded to zero bytes; an array element must encode to at least one byte`);i+=1}}const Rt=new Set(["__proto__","name","kind","encode","decode","validate","_read","_write","nameByValue"]);class Nt extends C{kind="enum";nameByValue;#e=new Set;constructor(e,r){super(e);const n=new Map;for(const[i,s]of Object.entries(r)){if(Q(s,-2147483648,2147483647,`${e}.${i}`),this.#e.has(s))throw new u(`${e}: duplicate enum value ${s}`);this.#e.add(s),n.set(s,i)}this.nameByValue=n}_read(e,r){const n=e.readInt32(r);if(!this.#e.has(n))throw new u(`${r}: unknown enum value ${n}`);return n}_write(e,r,n){if(typeof e!="number"||!this.#e.has(e))throw new u(`${n}: unknown enum value ${String(e)}`);r.writeInt32(e)}}function Bt(t,e){for(const n of Object.getOwnPropertyNames(e))if(Rt.has(n))throw new u(`${t}: enum member name ${n} collides with reserved property`);const r=new Nt(t,e);return Object.assign(r,e)}class Mt extends C{kind="int32";_read(e,r){return e.readInt32(r)}_write(e,r,n){Q(e,-2147483648,2147483647,n),r.writeInt32(e)}}function $e(){return new Mt}class jt extends C{constructor(e){super(),this.maxLength=e,be(e,"string maxLength")}maxLength;kind="string";_read(e,r){const n=e.readUint32(r);if(n>this.maxLength)throw new u(`${r}: string byte length ${n} exceeds maximum ${this.maxLength}`);const i=e.readBytes(n,r);return e.skipPadding(n,r),i}_write(e,r,n){if(kt(e,n),e.length>this.maxLength)throw new u(`${n}: string byte length ${e.length} exceeds maximum ${this.maxLength}`);r.writeUint32(e.length),r.writeBytes(e),r.writePadding(e.length)}}function Ut(t){return new jt(t)}class Lt extends C{kind="struct";entries;constructor(e,r){if(super(e),Object.getOwnPropertyNames(r).includes("__proto__"))throw new u(`${e}: struct field name '__proto__' is not allowed`);this.entries=Object.entries(r)}_read(e,r){e.enter(r);try{const n={};for(const[i,s]of this.entries)n[i]=s._read(e,`${r}.${i}`);return n}finally{e.exit()}}_write(e,r,n){r.enter(n);try{if(!ye(e))throw new u(`${n}: expected plain object`);const i=e;for(const[s,o]of this.entries){if(!Object.prototype.hasOwnProperty.call(i,s))throw new u(`${n}.${s}: missing struct field`);o._write(i[s],r,`${n}.${s}`)}}finally{r.exit()}}}function Ie(t,e){return new Lt(t,e)}class Vt extends C{kind="uint32";_read(e,r){return e.readUint32(r)}_write(e,r,n){Q(e,0,4294967295,n),r.writeUint32(e)}}function qe(){return new Vt}class zt extends C{kind="uint64";_read(e,r){return e.readBigUint64(r)}_write(e,r,n){Et(e,0n,(1n<<64n)-1n,n),r.writeBigUint64(e)}}function z(){return new zt}const Z="default";class Xt extends C{kind="union";switchOn;cases;defaultArm;switchKey;#e=new Map;constructor(e,r,n,i,s){if(super(e),s==="__proto__")throw new u(`${e}: switchKey '__proto__' is not allowed`);if(this.switchOn=r,this.cases=n,this.defaultArm=i,this.switchKey=s,n.length===0&&i===void 0)throw new u(`${e}: union needs at least one case or a default arm`);const o=new Set;for(const l of n){if(!r.validate(l.discriminant))throw new u(`${e}.${l.name}: case discriminator ${String(l.discriminant)} is not a valid ${r.name??r.kind} value`);if(o.has(l.name))throw new u(`${e}: duplicate union case name ${l.name}`);if(o.add(l.name),this.#e.has(l.discriminant))throw new u(`${e}: duplicate union discriminator ${String(l.discriminant)}`);Ee(e,l.name,l.arm,s),this.#e.set(l.discriminant,l)}i!==void 0&&Ee(e,Z,i,s)}_read(e,r){e.enter(r);try{const n=this.switchOn._read(e,`${r}.${this.switchKey}`),i=this.#e.get(n),s=i?.arm??this.defaultArm;if(s===void 0)throw new u(`${r}: no case for union discriminator ${String(n)}`);return Ht(n,s,this.switchKey,e,`${r}.${i?.name??Z}`)}finally{e.exit()}}_write(e,r,n){r.enter(n);try{if(!ye(e)||!Object.prototype.hasOwnProperty.call(e,this.switchKey))throw new u(`${n}: expected union object with ${this.switchKey} discriminator`);const i=e,s=i[this.switchKey],o=this.#e.get(s),l=o?.arm??this.defaultArm;if(l===void 0)throw new u(`${n}: no case for union discriminator ${String(s)}`);this.switchOn._write(s,r,`${n}.${this.switchKey}`),Gt(i,l,r,`${n}.${o?.name??Z}`)}finally{r.exit()}}}function Wt(t,e){return{kind:"field",name:t,schema:e}}function ee(t,e,r){return{name:t,discriminant:e,arm:r}}function te(t,e){const r=e.switchKey??"type";return new Xt(t,e.switchOn,e.cases,e.defaultArm,r)}function Ht(t,e,r,n,i){const s={};return s[r]=t,X(e)?(s[e.name]=e.schema._read(n,`${i}.${e.name}`),s):(e._read(n,i),s)}function Gt(t,e,r,n){if(X(e)){if(!Object.prototype.hasOwnProperty.call(t,e.name))throw new u(`${n}.${e.name}: missing union arm payload`);e.schema._write(t[e.name],r,`${n}.${e.name}`);return}e._write(void 0,r,n)}function Ee(t,e,r,n){if(X(r)&&r.name===n)throw new u(`${t}.${e}: union arm payload field must not be named ${n}`);if(X(r)&&r.name==="__proto__")throw new u(`${t}.${e}: union arm payload field name '__proto__' is not allowed`)}function X(t){return"schema"in t}class Kt extends C{kind="void";_read(){}_write(e,r,n){if(e!==void 0)throw new u(`${n}: expected void`)}}function ke(){return new Kt}var re=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},w=(t,e,r)=>(re(t,e,"read from private field"),r?r.call(t):e.get(t)),P=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},ne=(t,e,r,n)=>(re(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),$=(t,e,r)=>(re(t,e,"access private method"),r),E,k,M,ie,xe,se,Ce,W,oe,R,j,U,H;const Yt=new TextEncoder,Pe={v:0};function Jt(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return btoa(e)}const ae=Bt("EnvelopeType",{envelopeTypeBundle:0}),Qt=te("BundleItemExt",{switchOn:$e(),switchKey:"v",cases:[ee("v0",0,ke())]}),Zt=Ie("BundleItem",{collectionId:z(),productId:z(),variantId:z(),sku:Ut(At),quantity:qe(),ext:Qt}),er=te("BundleExt",{switchOn:$e(),switchKey:"v",cases:[ee("v0",0,ke())]}),tr=Ie("Bundle",{variantId:z(),items:Ot(Zt,500),version:qe(),ext:er}),rr=te("BundleEnvelope",{switchOn:ae,switchKey:"type",cases:[ee("envelopeTypeBundle",ae.envelopeTypeBundle,Wt("v1",tr))]});function nr(t){const e={type:ae.envelopeTypeBundle,v1:{variantId:BigInt(t.variantId.toString()),items:t.items.map(r=>({collectionId:BigInt(r.collectionId.toString()),productId:BigInt(r.productId.toString()),variantId:BigInt(r.variantId.toString()),sku:Yt.encode(r.sku||""),quantity:r.quantity,ext:Pe})),version:t.version||Math.floor(Date.now()/1e3),ext:Pe}};return Jt(rr.encode(e))}class ir{constructor(e,r){P(this,ie),P(this,se),P(this,W),P(this,R),P(this,U),P(this,E,void 0),P(this,k,void 0),P(this,M,void 0),ne(this,E,$(this,ie,xe).call(this,r)),ne(this,M,$(this,se,Ce).call(this,r)),ne(this,k,e)}isInitialDataValid(){if(!w(this,M))throw"Bundle data does not exist for the given product.";if(!w(this,E))throw"Bundle settings do not exist for the given product.";if(!Array.isArray(w(this,k))||!w(this,k).length)throw"No bundle selection items provided.";return!0}isValidVariant(e){if(!w(this,E)?.variantsSettings[e])throw`The ${e} bundle variant is invalid.`;return!0}isSelectionInVariantRange(e){const r=w(this,k).reduce((i,s)=>i+s.quantity,0),n=w(this,E)?.variantsSettings[e].ranges||[];if(!$(this,W,oe).call(this,n,r))throw"The total number of products does not fall within the required variant range.";return!0}areItemsInMaxPerItemBound(){const e=w(this,E)?.bundleSettings.maxPerItem||0,r=w(this,k).filter(({quantity:n})=>n>e);if(e&&r.length)throw`The selected products (${$(this,R,j).call(this,r.map(({externalProductId:n})=>n)).join(", ")}) exceed the maximum limit of ${e} items per product.`;return!0}areSelectedCollectionsValid(e){const r=w(this,E)?.variantsSettings[e]?.optionSources,n=w(this,k).filter(({collectionId:i})=>!r||!$(this,U,H).call(this,r,i));if(n.length)throw`The collections (${$(this,R,j).call(this,n.map(({collectionId:i})=>i)).join(", ")}) are no longer valid for the bundle variant (${e}).`;return!0}areItemsQuantitiesValidForTheCollection(e){const r=w(this,k).reduce((s,o)=>(s[o.collectionId]=o.quantity+(s[o.collectionId]||0),s),Object.create(null)),n=w(this,E)?.variantsSettings[e],i=Object.values(n?.optionSources||{}).filter(s=>{const o=r[s.collectionId]||0;return!$(this,W,oe).call(this,[s],o)});if(!n||i.length)throw`The selection exceeds the limits for the collections (${$(this,R,j).call(this,i.map(({collectionId:s})=>s)).join(", ")}).`;return!0}areSelectedProductsValid(e){const r=w(this,E)?.variantsSettings[e]?.optionSources||{},n=Object.values(r).reduce((s,o)=>{const l=w(this,M)?.collections[o.collectionId];return l&&(s[o.collectionId]=l),s},Object.create(null));if(!Object.values(n).length)throw`No collections found for the bundle variant (${e}).`;const i=w(this,k).filter(({externalProductId:s,collectionId:o})=>$(this,U,H).call(this,n,o)?!$(this,U,H).call(this,n[o].products,s):!0);if(i.length)throw`The products (${$(this,R,j).call(this,i.map(({externalProductId:s})=>s)).join(", ")}) are no longer valid for the bundle product.`;return!0}isBundleSelectionValid(e){return this.isInitialDataValid(),this.isValidVariant(e),this.isSelectionInVariantRange(e),this.areItemsInMaxPerItemBound(),this.areSelectedCollectionsValid(e),this.areItemsQuantitiesValidForTheCollection(e),this.areSelectedProductsValid(e),!0}}E=new WeakMap,k=new WeakMap,M=new WeakMap,ie=new WeakSet,xe=function(t){try{const e=t.bundle_settings;return{bundleSettings:{maxPerItem:e.max_quantity_per_variant,isCustomizable:e.is_customizable},variantsSettings:e.variants.reduce((r,n)=>{if(!n.enabled)return r;let i=[{min:n.items_count,max:n.items_count}];return n.items_count||(i=n.ranges.map(({quantity_max:s,quantity_min:o})=>({min:o,max:s}))),r[n.external_variant_id]={externalVariantId:n.external_variant_id,optionSources:n.option_sources.reduce((s,o)=>(s[o.option_source_id]={min:o.quantity_min,max:o.quantity_max,collectionId:o.option_source_id},s),Object.create(null)),ranges:i},r},Object.create(null))}}catch{return null}},se=new WeakSet,Ce=function(t){try{const e=Object.values(t.collections).reduce((r,n)=>(r[n.id]={...n,products:n.products.reduce((i,s)=>(i[s.id]=s,i),Object.create(null))},r),Object.create(null));return{...t,collections:e}}catch{return null}},W=new WeakSet,oe=function(t,e){return!!t.filter(({min:r,max:n})=>{const i=r??e,s=n??e;return i<=e&&e<=s}).length},R=new WeakSet,j=function(t){return Array.from(new Set(t))},U=new WeakSet,H=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};const sr="/bundling-storefront-manager";function Ae(t){return nr({variantId:t.externalVariantId,version:0,items:t.selections.map(e=>({collectionId:e.collectionId,productId:e.externalProductId,variantId:e.externalVariantId,quantity:e.quantity,sku:""}))})}async function or(t){const e=b(),r=await ce(t);if(r!==!0)throw new Error(r);const n=Ae(t);try{const i=await A("post",`${sr}/api/v1/bundles`,{data:{bundle:n},headers:{Origin:`https://${e.storeIdentifier}`}});if(!i.id||i.code!==200)throw new Error(`1: failed generating rb_id: ${JSON.stringify(i)}`);return i.id}catch(i){throw new Error(`2: failed generating rb_id ${i}`)}}async function ar(t,e){const r=await ce(e);if(r!==!0)throw new Error(r);const n=Ae(e);try{const i=await c("post","/bundle_selections/bundle_id",{data:{bundle:n}},a(t,"getBundleSelectionId"));if(!i.id||i.code!==200)throw new Error(`1: failed generating rb_id: ${JSON.stringify(i)}`);return i.id}catch(i){throw new Error(`2: failed generating rb_id ${i}`)}}function cr(t,e){const r=De(t);if(r!==!0)throw new Error(`Dynamic Bundle is invalid. ${r}`);const n=`${T(9)}:${t.externalProductId}`;return t.selections.map(i=>{const s={id:i.externalVariantId,quantity:i.quantity,properties:{_rc_bundle:n,_rc_bundle_variant:t.externalVariantId,_rc_bundle_parent:e,_rc_bundle_collection_id:i.collectionId}};return i.sellingPlan?s.selling_plan=i.sellingPlan:i.shippingIntervalFrequency&&(s.properties.shipping_interval_frequency=i.shippingIntervalFrequency,s.properties.shipping_interval_unit_type=i.shippingIntervalUnitType,s.id=`${i.discountedVariantId}`),s})}async function ce(t){try{return t?t.selections.length===0?"No selections defined":!0:"Bundle is not defined"}catch(e){return`Error fetching bundle settings: ${e}`}}async function dr(t){try{const e=await A("get",`/bundle-data/${p(t.externalProductId)}`);return{valid:new ir(t.selections,e).isBundleSelectionValid(t.externalVariantId)}}catch(e){return{valid:!1,error:String(e)}}}const ur={day:["day","days","Days"],days:["day","days","Days"],Days:["day","days","Days"],week:["week","weeks","Weeks"],weeks:["week","weeks","Weeks"],Weeks:["week","weeks","Weeks"],month:["month","months","Months"],months:["month","months","Months"],Months:["month","months","Months"]};function De(t){if(!t)return"No bundle defined.";if(t.selections.length===0)return"No selections defined.";const{shippingIntervalFrequency:e,shippingIntervalUnitType:r}=t.selections.find(n=>n.shippingIntervalFrequency||n.shippingIntervalUnitType)||{};if(e||r){if(!e||!r)return"Shipping intervals do not match on selections.";{const n=ur[r];for(let i=0;i<t.selections.length;i++){const{shippingIntervalFrequency:s,shippingIntervalUnitType:o}=t.selections[i];if(s&&s!==e||o&&!n.includes(o))return"Shipping intervals do not match on selections."}}}return!0}async function lr(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{bundle_selection:r}=await c("get","/bundle_selections",{id:e},a(t,"getBundleSelection"));return r}function pr(t,e){return c("get","/bundle_selections",{query:e},a(t,"listBundleSelections"))}async function hr(t,e){const{bundle_selection:r}=await c("post","/bundle_selections",{data:e},a(t,"createBundleSelection"));return r}async function _r(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{bundle_selection:n}=await c("put","/bundle_selections",{id:e,data:r},a(t,"updateBundleSelection"));return n}function mr(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/bundle_selections",{id:e},a(t,"deleteBundleSelection"))}async function fr(t,e,r,n){if(e===void 0||e==="")throw new Error("Purchase item ID is required");const{subscription:i}=await c("put","/bundles",{id:e,data:r,query:n},a(t,"updateBundle"));return i}var gr=Object.freeze({__proto__:null,createBundleSelection:hr,deleteBundleSelection:mr,getBundleId:or,getBundleSelection:lr,getBundleSelectionId:ar,getDynamicBundleItems:cr,listBundleSelections:pr,updateBundle:fr,updateBundleSelection:_r,validateBundle:ce,validateBundleSelection:dr,validateDynamicBundle:De});const wr=t=>{const e=t.layout_settings.addons,r=t.layout_settings.crossSells,n=t.customization_window,i=t.layout_settings?.defaultVariantId??t.default_bundle_variant_id,s=t.layout_settings.defaultFrequency,o=t.layout_settings.addToCartCallback;return{default_variant_id:i?String(i):null,is_customizable:t.is_customizable,price_rule:String(t.price_rule).toUpperCase(),customization_window:n?{active_days:n,disabled_message:t.customization_window_disabled_message||""}:null,addons:e.collectionId?{collection_id:e.collectionId,collection_handle:e.collectionHandle}:null,cross_sells:r.collectionId?{collection_id:e.collectionId,collection_handle:e.collectionHandle}:null,default_selling_plan_id:s||null,collapsible_collections:t.layout_settings.collapsibleSections,max_quantity_per_variant:t.max_quantity_per_variant,show_product_variants:t.layout_settings.showVariants,product_details_modal_enabled:t.layout_settings.learnMoreModal,addToCartBehavior:{type:o.type==="none"?"cart_page":o.type,value:o.value}}},yr=t=>t.tiered_discounts.length===0?null:{tiered_discounts:t.tiered_discounts},G=t=>({id:t.id,name:t.name,options:t.options.map(e=>({name:e.name,value:e.value})),recurring_deliveries:t.recurring_deliveries,price_adjustments:t.price_adjustments.map(({value:e,value_type:r})=>({value:e,value_type:r}))}),Oe=t=>({name:t.name,options:t.options.map(e=>({name:e.name,values:e.values})),selling_plans:t.selling_plans.map(G)}),Te=t=>({id:String(t.id),title:t.title,price:t.price,compare_at_price:t.compare_at_price,options:t.options,available_for_sale:t.available}),de=t=>t==null||typeof t=="string"?t:"src"in t?t.src:null,Fe=t=>({id:String(t.id),title:t.title,description:t.description,available_for_sale:t.available,featured_image:de(t.featured_image),images:t.images,requires_selling_plan:t.requires_selling_plan,selling_plan_groups:t.selling_plan_groups.map(Oe)}),Re=t=>{const e=vr(t.selling_plan_groups);return{...Fe(t),handle:t.handle,tags:t.tags,price_range:{min:t.price_min,max:t.price_max},compare_at_price_range:{min:t.compare_at_price_min,max:t.compare_at_price_max},options:t.options,variants:t.variants.map(r=>({...Te(r),selling_plan_allocations:r.selling_plan_allocations.map(n=>({price:n.price,compare_at_price:n.compare_at_price,selling_plan:G(e[`${n.selling_plan_group_id}-${n.selling_plan_id}`])})),option1:r.option1,option2:r.option2,option3:r.option3,sku:r.sku||"",requires_shipping:r.requires_shipping,taxable:r.taxable,featured_image:de(r.featured_image),public_title:r.public_title,requires_selling_plan:r.requires_selling_plan}))}},br=({items_count:t,ranges:e})=>e.length>0?e.map(({quantity_max:r,quantity_min:n})=>({min:n,max:r})):[{min:t,max:t}],vr=t=>t.reduce((e,r)=>(r.selling_plans.forEach(n=>{const i=`${r.id}-${n.id}`;e[i]=n}),e),{}),Sr=t=>Array.isArray(t)?t:[];function ue(t){const e=wr(t.bundle_settings),r=t.variants.reduce((n,i)=>(n[i.id]=i,n),{});return{id:String(t.id),title:t.title,description:t.description||null,handle:t.handle,options:t.options.map(n=>({name:n.name,position:n.position,values:n.values})),default_variant_id:e.default_variant_id,default_selling_plan_id:e.default_selling_plan_id?Number(e.default_selling_plan_id):null,available_for_sale:t.available,requires_selling_plan:t.requires_selling_plan,bundle_settings:{is_customizable:e.is_customizable,price_rule:e.price_rule,customization_window:e.customization_window,max_quantity_per_variant:e.max_quantity_per_variant,collapsible_collections:e.collapsible_collections,show_product_variants:e.show_product_variants,product_details_modal_enabled:e.product_details_modal_enabled,show_variants_as_individual_products:t.bundle_settings.settings.display_variants_as_separate_products_in_list,post_add_to_cart_behavior:e.addToCartBehavior},variants:t.bundle_settings.variants.filter(({enabled:n})=>n).map((n,i)=>{const s=r[String(n.external_variant_id)];return{id:String(n.external_variant_id),title:s.title,price:s.price,compare_at_price:s.compare_at_price,image:s.image||"",available_for_sale:s.available,options:s.options,requires_selling_plan:s.requires_selling_plan,selling_plan_allocations:s.selling_plan_allocations.map(o=>({price:o.price,compare_at_price:o.compare_at_price,selling_plan:G(o.selling_plan)})),ranges:br(n),collections:n.option_sources.map(o=>({id:o.option_source_id,source_platform:"shopify",min:o.quantity_min||0,max:o.quantity_max,position:o.position})),default_selections:n.selection_defaults.map(o=>({quantity:o.quantity,product:{id:String(o.product.id),handle:o.handle,title:o.product.title,description:o.product.description,images:o.product.images},variant:{id:o.external_variant_id,title:o.variant.title,featured_image:de(o.variant.featured_image),sku:o.sku||""}})),position:i}}),selling_plan_groups:t.selling_plan_groups.map(Oe),collections:Object.values(t.collections).reduce((n,i)=>(Array.isArray(i.products)&&(n[String(i.id)]={id:String(i.id),title:i.title,handle:i.handle,products:i.products.map(Re)}),n),{}),addons:t.addons.products.length?{collection_id:e.addons?.collection_id||"",collection_handle:e.addons?.collection_handle||"",products:t.addons.products.map(n=>({...Fe(n),price_range:{min:n.price,max:n.price},compare_at_price_range:{min:n.compare_at_price||0,max:n.compare_at_price},variants:n.variants.map(i=>({...Te(i),image:i.image,selling_plan_allocations:i.selling_plan_allocations.map(s=>({price:s.price,compare_at_price:s.compare_at_price,selling_plan:G(s.selling_plan)}))}))}))}:null,cross_sells:t.cross_sells.products.length?{collection_id:e.cross_sells?.collection_id||"",collection_handle:e.cross_sells?.collection_handle||"",products:t.cross_sells.products.map(Re)}:null,incentives:yr(t.incentives),filters:Sr(t.filters),templates:t.bundle_settings.layout_settings.templates||null,globalStyles:t.bundle_settings.layout_settings.globalStyles||null}}async function $r(t,e){return e?.source==="shopify_storefront"?qr():Ir(t,e?.country_code)}async function Ir(t,e){const{appName:r,appVersion:n}=b(),i={"X-Recharge-Sdk-Fn":"loadFromOnlineStore","X-Recharge-Sdk-Version":"2.4.0",...r?{"X-Recharge-Sdk-App-Name":r}:{},...n?{"X-Recharge-Sdk-App-Version":n}:{}};if(!e){const o=await A("get",`/bundle-data/${p(t)}`,{headers:i});return ue(o)}const s=new FormData;s.append("form_type","localization"),s.append("_method","put"),s.append("return_to",`${me}/bundle-data/${t}`),s.append("country_code",e);try{const o=await S("post","/localization",{headers:{"Content-Type":"multipart/form-data",...i},data:s});return ue(o)}catch{const o=await A("get",`/bundle-data/${p(t)}`,{headers:i});return ue(o)}}async function qr(t,e){if(!b().storeIdentifier)throw new Error("Store identifier is required for Shopify Storefront API requests");return{}}var Er=Object.freeze({__proto__:null,loadBundleData:$r});function kr(t){try{return JSON.parse(t)}catch{return t}}function xr(t){return Object.entries(t).reduce((e,[r,n])=>({...e,[r]:kr(n)}),{})}const Ne=t=>typeof t=="string"?t!=="0"&&t!=="false":!!t;function le(t,e){const r=new Set(e),n={};for(const i of Object.keys(t))r.has(i)||(n[i]=t[i]);return n}function Be(t){const e=xr(t),r=e.auto_inject===void 0?!0:e.auto_inject,n=e.display_on??[],i=e.first_option==="autodeliver";return{...le(e,["display_on","first_option"]),auto_inject:r,valid_pages:n,is_subscription_first:i,autoInject:r,validPages:n,isSubscriptionFirst:i}}function Me(t){const e=t.subscription_options?.storefront_purchase_options==="subscription_only";return{...t,is_subscription_only:e,isSubscriptionOnly:e}}function Cr(t){return t.map(e=>{const r={};return Object.entries(e).forEach(([n,i])=>{Object.defineProperty(r,n,{value:Me(i),enumerable:!0,writable:!0,configurable:!0})}),r})}const pe="2020-12",Pr={store_currency:{currency_code:"USD",currency_symbol:"$",decimal_separator:".",thousands_separator:",",currency_symbol_location:"left"}},L=new Map;function K(t,e){return L.has(t)||L.set(t,e()),L.get(t)}async function he(t,e){if(t===void 0||t==="")throw new Error("ID is required");const r=e?.version??"2020-12",{product:n}=await K(`product.${t}.${r}`,()=>V("get",`/product/${r}/${p(t)}.json`));return r==="2020-12"?Me(n):n}async function je(){return await K("storeSettings",()=>V("get",`/${pe}/store_settings.json`).catch(()=>Pr))}async function Ue(){const{widget_settings:t}=await K("widgetSettings",()=>V("get",`/${pe}/widget_settings.json`));return Be(t)}async function Le(){const{products:t,widget_settings:e,store_settings:r,meta:n}=await K("productsAndSettings",()=>V("get",`/product/${pe}/products.json`));return n?.status==="error"?Promise.reject(n.message):{products:Cr(t),widget_settings:Be(e),store_settings:r??{}}}async function Ar(){const{products:t}=await Le();return t}async function Dr(t){const[e,r,n]=await Promise.all([he(t),je(),Ue()]);return{product:e,store_settings:r,widget_settings:n,storeSettings:r,widgetSettings:n}}async function Or(t){const{bundle_product:e}=await he(t);return e}async function Ve(){return Array.from(L.keys()).forEach(t=>L.delete(t))}var Tr=Object.freeze({__proto__:null,getCDNBundleSettings:Or,getCDNProduct:he,getCDNProductAndSettings:Dr,getCDNProducts:Ar,getCDNProductsAndSettings:Le,getCDNStoreSettings:je,getCDNWidgetSettings:Ue,resetCDNCache:Ve});async function Fr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("get","/charges",{id:e,query:{include:r?.include}},a(t,"getCharge"));return n}function Rr(t,e){return c("get","/charges",{query:e},a(t,"listCharges"))}async function Nr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/charges/${p(e)}/apply_discount`,{data:{discount_code:r}},a(t,"applyDiscountToCharge"));return n}async function Br(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{charge:r}=await c("post",`/charges/${p(e)}/remove_discount`,{},a(t,"removeDiscountsFromCharge"));return r}async function Mr(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");if(r===void 0||r.length===0)throw new Error("Purchase item IDs are required");const{charge:i}=await c("post",`/charges/${p(e)}/skip`,{query:n,data:{purchase_item_ids:r.map(s=>Number(s))}},a(t,"skipCharge"));return i}async function jr(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");if(r===void 0||r.length===0)throw new Error("Purchase item IDs are required");const{charge:i}=await c("post",`/charges/${p(e)}/unskip`,{query:n,data:{purchase_item_ids:r.map(s=>Number(s))}},a(t,"unskipCharge"));return i}async function Ur(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{charge:r}=await c("post",`/charges/${p(e)}/process`,{},a(t,"processCharge"));return r}async function Lr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/charges/${p(e)}/change_next_charge_date`,{data:{next_charge_date:r}},a(t,"rescheduleCharge"));return n}var Vr=Object.freeze({__proto__:null,applyDiscountToCharge:Nr,getCharge:Fr,listCharges:Rr,processCharge:Ur,removeDiscountsFromCharge:Br,rescheduleCharge:Lr,skipCharge:Mr,unskipCharge:jr});async function ze(t,e){if(!["2020-12","2022-06"].includes(e.format_version))throw new Error("Missing or unsupported format_version.");return c("get","/product_search",{query:e,headers:{"X-Recharge-Version":"2021-01"}},a(t,"productSearch"))}var zr=Object.freeze({__proto__:null,productSearch:ze});async function Xe(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{collection:r}=await c("get","/collections",{id:e},a(t,"getCollection"));return r}function Xr(t,e){return c("get","/collections",{query:e},a(t,"listCollections"))}async function Wr(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");if(!["2020-12","2022-06"].includes(r.format_version))throw new Error("Missing or unsupported format_version.");const n=a(t,"listCollectionProducts"),[{sort_order:i,manual_sort_order:s},{products:o}]=await Promise.all([Xe(n,e),ze(n,{...r,collection_ids:[e],limit:250})]);if(i==="manual")return{products:s.reduce((l,f)=>{const h=o.find(_=>_.external_product_id===f);return h&&l.push(h),l},[])};{const l=Hr(i);return{products:o.slice().sort(l)}}}function We(t,e){const r=t.external_created_at,n=e.external_created_at;return r<n?-1:n>r?1:0}function He(t,e){const r=t.external_product_id,n=e.external_product_id;return r<n?-1:n>r?1:0}function Ge(t,e){const r=t.title.toLowerCase(),n=e.title.toLowerCase();return r<n?-1:n>r?1:0}function Hr(t){switch(t){case"created_at-asc":return We;case"created_at-desc":return(e,r)=>We(r,e);case"id-asc":return He;case"id-desc":return(e,r)=>He(r,e);case"title-asc":return Ge;case"title-desc":return(e,r)=>Ge(r,e)}}var Gr=Object.freeze({__proto__:null,getCollection:Xe,listCollectionProducts:Wr,listCollections:Xr});async function Kr(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{customer:n}=await c("get","/customers",{id:r,query:{include:e?.include}},a(t,"getCustomer"));return n}async function Ke(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{customer:n}=await c("put","/customers",{id:r,data:e},a(t,"updateCustomer"));return n}async function Yr(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{deliveries:n}=await c("get",`/customers/${p(r)}/delivery_schedule`,{query:e},a(t,"getDeliverySchedule"));return n}async function Y(t,e){return c("get","/portal_access",{query:e},a(t,"getCustomerPortalAccess"))}async function Jr(t,e,r){if(e===void 0||e==="")throw new Error("Subscription ID is required");const{base_url:n,customer_hash:i,temp_token:s}=await Y(a(t,"getActiveChurnLandingPageURL"));return`${n.replace("portal","pages")}${i}/subscriptions/${e}/cancel?token=${s}&subscription=${e}&redirect_to=${encodeURIComponent(r)}`}async function Qr(t){const{base_url:e,customer_hash:r,temp_token:n}=await Y(a(t,"getFailedPaymentMethodRecoveryLandingPageURL"));return`${e.replace("portal","pages")}account/payment-methods?token=${n}&hash=${r}`}async function Zr(t,e,r){if(e===void 0||e==="")throw new Error("Gift ID is required");const{base_url:n,customer_hash:i,temp_token:s}=await Y(a(t,"getGiftRedemptionLandingPageURL"));return`${n.replace("portal","pages")}${i}/gifts/${e}?token=${s}&redirect_to=${encodeURIComponent(r)}`}const Ye={SHOPIFY_UPDATE_PAYMENT_INFO:{type:"email",template_type:"shopify_update_payment_information"},SHOPIFY_MIGRATE_PAYMENT_INFO:{type:"email",template_type:"shopify_migrate_payment_information"}};async function en(t,e,r){const n=t.customerId;if(!n)throw new Error("Not logged in.");if(!Object.prototype.hasOwnProperty.call(Ye,e))throw new Error("Notification not supported.");const i=Ye[e];return c("post",`/customers/${p(n)}/notifications`,{data:{...i,template_vars:r}},a(t,"sendCustomerNotification"))}async function tn(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{credit_summary:n}=await c("get",`/customers/${p(r)}/credit_summary`,{query:{include:e?.include}},a(t,"getCreditSummary"));return n}var rn=Object.freeze({__proto__:null,getActiveChurnLandingPageURL:Jr,getCreditSummary:tn,getCustomer:Kr,getCustomerPortalAccess:Y,getDeliverySchedule:Yr,getFailedPaymentMethodRecoveryLandingPageURL:Qr,getGiftRedemptionLandingPageURL:Zr,sendCustomerNotification:en,updateCustomer:Ke});async function nn(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{credit_summary:n}=await c("get",`/customers/${p(r)}/credit_summary`,{query:{include:e?.include,presentment_currency_code:e?.presentment_currency_code}},a(t,"getCreditSummary"));return n}function sn(t,{recurring:e}){if(!t.customerId)throw new Error("Not logged in.");const r={};return e!==void 0&&(r.apply_credit_to_next_recurring_charge=e),Ke(a(t,"setApplyCreditsToNextCharge"),r)}async function on(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");const{customer_id:n,...i}=e??{};return await c("get","/credit_accounts",{query:{...i,customer_id:r}},a(t,"listCreditAccounts"))}var an=Object.freeze({__proto__:null,getCreditSummary:nn,listCreditAccounts:on,setApplyCreditsToNextCharge:sn});async function cn(t,e,r){return await c("post","/customer_surveys/cancellation_prevention",{data:{customer_id:e,subscription_id:r}},a(t,"getCustomerSurveyReasons"))}async function dn(t,e,r,n){return await c("post",`/customer_surveys/${p(r)}/customer_response`,{data:{customer_id:e,response_id:n}},a(t,"getCustomerSurveyOffers"))}async function un(t,e){return await c("post","/offers/claim",{data:e},a(t,"claimOfferCustomerSurvey")),{}}var ln=Object.freeze({__proto__:null,claimOfferCustomerSurvey:un,getCustomerSurveyOffers:dn,getCustomerSurveyReasons:cn});function pn(t,e){if(!t.customerId)throw new Error("Not logged in.");return c("get","/gift_purchases",{query:e},a(t,"listGiftPurchases"))}async function hn(t,e){if(!t.customerId)throw new Error("Not logged in.");if(e===void 0||e==="")throw new Error("ID is required");const{gift_purchase:r}=await c("get","/gift_purchases",{id:e},a(t,"getGiftPurchase"));return r}var _n=Object.freeze({__proto__:null,getGiftPurchase:hn,listGiftPurchases:pn});function mn(t,e){if(!t.customerId)throw new Error("Not logged in.");return c("get","/incentives/tiered_discounts",{query:e},a(t,"listTieredDiscounts"))}async function fn(t,e){if(!t.customerId)throw new Error("Not logged in.");if(e===void 0||e==="")throw new Error("ID is required");const{tiered_discount:r}=await c("get",`/incentives/tiered_discounts/${p(e)}`,{},a(t,"getTieredDiscount"));return r}function gn(t,e){return c("post","/incentives/tiered_discounts/offers",{data:e},a(t,"getTieredDiscountOffers"))}var wn=Object.freeze({__proto__:null,getTieredDiscount:fn,getTieredDiscountOffers:gn,listTieredDiscounts:mn});async function yn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{membership:r}=await c("get","/memberships",{id:e},a(t,"getMembership"));return r}function bn(t,e){return c("get","/memberships",{query:e},a(t,"listMemberships"))}async function vn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership:n}=await c("post",`/memberships/${p(e)}/cancel`,{data:r},a(t,"cancelMembership"));return n}async function Sn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership:n}=await c("post",`/memberships/${p(e)}/activate`,{data:r},a(t,"activateMembership"));return n}async function $n(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership:n}=await c("post",`/memberships/${p(e)}/change`,{data:r},a(t,"changeMembership"));return n}var In=Object.freeze({__proto__:null,activateMembership:Sn,cancelMembership:vn,changeMembership:$n,getMembership:yn,listMemberships:bn});async function qn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{membership_program:n}=await c("get","/membership_programs",{id:e,query:{include:r?.include}},a(t,"getMembershipProgram"));return n}function En(t,e){return c("get","/membership_programs",{query:e},a(t,"listMembershipPrograms"))}var kn=Object.freeze({__proto__:null,getMembershipProgram:qn,listMembershipPrograms:En});async function xn(t,e){const{metafield:r}=await c("post","/metafields",{data:{metafield:e}},a(t,"createMetafield"));return r}async function Cn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{metafield:n}=await c("put","/metafields",{id:e,data:{metafield:r}},a(t,"updateMetafield"));return n}function Pn(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/metafields",{id:e},a(t,"deleteMetafield"))}var An=Object.freeze({__proto__:null,createMetafield:xn,deleteMetafield:Pn,updateMetafield:Cn});async function Dn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{onetime:r}=await c("get","/onetimes",{id:e},a(t,"getOnetime"));return r}function On(t,e){return c("get","/onetimes",{query:e},a(t,"listOnetimes"))}async function Tn(t,e){const{onetime:r}=await c("post","/onetimes",{data:e},a(t,"createOnetime"));return r}async function Fn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{onetime:n}=await c("put","/onetimes",{id:e,data:r},a(t,"updateOnetime"));return n}function Rn(t,e){if(e===void 0||e==="")throw new Error("ID is required");return c("delete","/onetimes",{id:e},a(t,"deleteOnetime"))}var Nn=Object.freeze({__proto__:null,createOnetime:Tn,deleteOnetime:Rn,getOnetime:Dn,listOnetimes:On,updateOnetime:Fn});async function Bn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{order:r}=await c("get","/orders",{id:e},a(t,"getOrder"));return r}function Mn(t,e){return c("get","/orders",{query:e},a(t,"listOrders"))}async function jn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{order:r}=await c("post",`/orders/${p(e)}/delay`,{},a(t,"delayOrder"));return r}var Un=Object.freeze({__proto__:null,delayOrder:jn,getOrder:Bn,listOrders:Mn});async function Ln(t,e){return typeof window<"u"&&window.Spreedly?Promise.resolve():new Promise((r,n)=>{if(typeof document>"u"){n(new Error("Document is not available. This function must be called in a browser environment."));return}if(document.querySelector(`script[src="${t}"]`)){const s=()=>{window.Spreedly?r():setTimeout(s,50)};s();return}const i=document.createElement("script");i.src=t,i.integrity=e,i.crossOrigin="anonymous",i.addEventListener("load",()=>{const s=()=>{window.Spreedly?r():setTimeout(s,50)};s()}),i.addEventListener("error",()=>{n(new Error("Failed to load payment iFrame script"))}),document.head.appendChild(i)})}async function Vn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{payment_method:n}=await c("get","/payment_methods",{id:e,query:{include:r?.include}},a(t,"getPaymentMethod"));return n}async function Je(t,e){const{payment_method:r}=await c("post","/payment_methods",{data:{...e,customer_id:t.customerId}},a(t,"createPaymentMethod"));return r}async function zn(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{payment_method:n}=await c("put","/payment_methods",{id:e,data:r},a(t,"updatePaymentMethod"));return n}function Xn(t,e){return c("get","/payment_methods",{query:e},a(t,"listPaymentMethods"))}async function Wn(t,e){const r=await Hn(t,e),n=r.external.environment_key,i=r.payment_method_intent_id,s=r.external_customer_id.ecommerce,o=r.external.resource_url,l=r.external.integrity_hash,f=r.payment_method?.processor_payment_method_token;await Ln(o,l);let h=!1,_=null,y=null,v=null;return{mount(d,m){if(typeof window>"u"||!window.Spreedly)throw new Error("Payment script failed to load");window.Spreedly.init(n,{numberEl:d.numberElementId,cvvEl:d.cvvElementId}),window.Spreedly.on("ready",()=>{h=!0,d.styles&&(window.Spreedly.setStyle("number",d.styles),window.Spreedly.setStyle("cvv",d.styles)),d.numberLabel&&window.Spreedly.setLabel("number",d.numberLabel),d.cvvLabel&&window.Spreedly.setLabel("cvv",d.cvvLabel),d.numberPlaceholder&&window.Spreedly.setPlaceholder("number",d.numberPlaceholder),d.cvvPlaceholder&&window.Spreedly.setPlaceholder("cvv",d.cvvPlaceholder),d.numberFormat==="plainFormat"?(d.numberFieldType&&window.Spreedly.setFieldType("number",d.numberFieldType),d.cvvFieldType&&window.Spreedly.setFieldType("cvv",d.cvvFieldType),window.Spreedly.setNumberFormat("plainFormat")):d.numberFormat==="maskedFormat"?(window.Spreedly.setFieldType("cvv","text"),window.Spreedly.setFieldType("number","text"),window.Spreedly.setNumberFormat("maskedFormat")):d.numberFormat==="prettyFormat"?(d.numberFieldType==="text"||d.numberFieldType==="tel"?window.Spreedly.setFieldType("number",d.numberFieldType):window.Spreedly.setFieldType("number","tel"),d.cvvFieldType==="text"||d.cvvFieldType==="tel"?window.Spreedly.setFieldType("cvv",d.cvvFieldType):window.Spreedly.setFieldType("cvv","tel"),window.Spreedly.setNumberFormat("prettyFormat")):(d.numberFieldType&&window.Spreedly.setFieldType("number",d.numberFieldType),d.cvvFieldType&&window.Spreedly.setFieldType("cvv",d.cvvFieldType)),m?.onReady?.()}),window.Spreedly.on("fieldEvent",(g,I,x,D)=>{m?.onFieldEvent?.(g,I,x,D)}),window.Spreedly.on("errors",g=>{m?.onErrors?.(g)}),window.Spreedly.on("paymentMethod",(g,I)=>{_=g,m?.onPaymentMethod?.(g,I),y&&(_=null,y(g),y=null)})},tokenize(d){if(!h||!window.Spreedly)throw new Error("Payment form is not initialized");let m=String(d.year);m.length===2&&(m=`20${m}`);const g=String(d.month).padStart(2,"0");"full_name"in d?window.Spreedly.tokenizeCreditCard({full_name:d.full_name,month:g,year:m}):window.Spreedly.tokenizeCreditCard({first_name:d.first_name,last_name:d.last_name,month:g,year:m})},async submit(d){if(!h)throw new Error("Payment form is not initialized");if(_){const m=_;return _=null,Qe(t,m,d,{external_payment_method_id:f,payment_method_intent_id:i,external_customer_id:s})}return new Promise((m,g)=>{v=d,y=async I=>{try{const x=await Qe(t,I,v,{external_payment_method_id:f,payment_method_intent_id:i,external_customer_id:s});m(x)}catch(x){g(x)}finally{v=null}},this.tokenize(d.card_details)})},reset(){window.Spreedly&&window.Spreedly.reload(),_=null,y=null,v=null},unmount(){window.Spreedly&&window.Spreedly.removeHandlers(),h=!1,_=null,y=null,v=null},addEventHandlers(d){d.onReady&&window.Spreedly.on("ready",d.onReady),d.onFieldEvent&&window.Spreedly.on("fieldEvent",d.onFieldEvent),d.onErrors&&window.Spreedly.on("errors",d.onErrors),d.onPaymentMethod&&window.Spreedly.on("paymentMethod",d.onPaymentMethod)},removeHandlers(){window.Spreedly&&window.Spreedly.removeHandlers()},setFieldType(d,m){window.Spreedly.setFieldType(d,m)},setLabel(d,m){window.Spreedly.setLabel(d,m)},setNumberFormat(d){window.Spreedly.setNumberFormat(d)},setPlaceholder(d,m){window.Spreedly.setPlaceholder(d,m)},setStyle(d,m){window.Spreedly.setStyle(d,m)}}}async function Hn(t,e){const r=t.customerId;if(!r)throw new Error("Not logged in.");return await c("post","/payment_method_intents",{data:{customer_id:r,payment_method_id:e}},a(t,"createFrictionlessPaymentIntentV1"))}async function Qe(t,e,{billing_address:r,default_payment_method:n,address_ids:i,apply_to_all_subscription_addresses:s},{external_payment_method_id:o,payment_method_intent_id:l,external_customer_id:f}){return await Je(a(t,"submitFrictionlessPaymentMethodV1"),{default:n??!1,payment_type:"CREDIT_CARD",processor_customer_token:f.toString(),processor_name:"frictionless",processor_payment_method_token:e,billing_address:r,payment_method_intent_id:l,address_ids:i,external_payment_method_id:o,apply_to_all_subscription_addresses:s})}var Gn=Object.freeze({__proto__:null,createPaymentMethod:Je,getPaymentMethod:Vn,initFrictionlessPaymentV1:Wn,listPaymentMethods:Xn,updatePaymentMethod:zn});async function Kn(t,e){if(e===void 0||e==="")throw new Error("ID is required");const{plan:r}=await c("get","/plans",{id:e},a(t,"getPlan"));return r}function Yn(t,e){return c("get","/plans",{query:e},a(t,"listPlans"))}var Jn=Object.freeze({__proto__:null,getPlan:Kn,listPlans:Yn});async function Qn(t,e){return await c("get","/shop/shipping_countries",{query:e,headers:{"X-Recharge-Version":"2021-01"}},a(t,"getShippingCountries"))}async function Zn(t){return await c("get","/shop/settings",{headers:{"X-Recharge-Version":"2021-01"}},a(t,"getStoreSettings"))}var ei=Object.freeze({__proto__:null,getShippingCountries:Qn,getStoreSettings:Zn});function ti(t,e){return{...le(e,["address_id","external_variant_id","external_product_id","charge_interval_frequency","order_interval_frequency","price","status"]),customer_id:parseInt(t,10),shopify_variant_id:e.external_variant_id.ecommerce?parseInt(e.external_variant_id.ecommerce,10):void 0,...e.charge_interval_frequency?{charge_interval_frequency:`${e.charge_interval_frequency}`}:{},...e.order_interval_frequency?{order_interval_frequency:`${e.order_interval_frequency}`}:{},status:e.status?e.status.toUpperCase():void 0}}function ri(t,e){return{...le(e,["external_variant_id","external_product_id","charge_interval_frequency","order_interval_frequency","price","use_external_variant_defaults"]),shopify_variant_id:e.external_variant_id?.ecommerce?parseInt(e.external_variant_id.ecommerce,10):void 0,...e.charge_interval_frequency?{charge_interval_frequency:`${e.charge_interval_frequency}`}:void 0,...e.order_interval_frequency?{order_interval_frequency:`${e.order_interval_frequency}`}:void 0,force_update:t}}function Ze(t){const{id:e,address_id:r,customer_id:n,analytics_data:i,cancellation_reason:s,cancellation_reason_comments:o,cancelled_at:l,charge_interval_frequency:f,created_at:h,expire_after_specific_number_of_charges:_,shopify_product_id:y,shopify_variant_id:v,has_queued_charges:d,is_prepaid:m,is_skippable:g,is_swappable:I,max_retries_reached:x,next_charge_scheduled_at:D,order_day_of_month:q,order_day_of_week:O,order_interval_frequency:Si,order_interval_unit:$i,presentment_currency:Ii,price:qi,product_title:Ei,properties:ki,quantity:xi,sku:Ci,sku_override:Pi,status:Ai,updated_at:Di,variant_title:Oi}=t;return{id:e,address_id:r,customer_id:n,analytics_data:i,cancellation_reason:s,cancellation_reason_comments:o,cancelled_at:l,charge_interval_frequency:parseInt(f,10),created_at:h,expire_after_specific_number_of_charges:_,external_product_id:{ecommerce:`${y}`},external_variant_id:{ecommerce:`${v}`},has_queued_charges:Ne(d),is_prepaid:m,is_skippable:g,is_swappable:I,max_retries_reached:Ne(x),next_charge_scheduled_at:D,order_day_of_month:q,order_day_of_week:O,order_interval_frequency:parseInt(Si,10),order_interval_unit:$i,presentment_currency:Ii,price:`${qi}`,product_title:Ei??"",properties:ki,quantity:xi,sku:Ci,sku_override:Pi,status:Ai.toLowerCase(),updated_at:Di,variant_title:Oi}}async function ni(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("get","/subscriptions",{id:e,query:{include:r?.include}},a(t,"getSubscription"));return n}function ii(t,e){return c("get","/subscriptions",{query:e},a(t,"listSubscriptions"))}function si(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");return c("get",`/subscriptions/${p(e)}/addons`,{query:r},a(t,"listSubscriptionAddons"))}async function oi(t,e,r){const{subscription:n}=await c("post","/subscriptions",{data:e,query:r},a(t,"createSubscription"));return n}async function ai(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:i}=await c("put","/subscriptions",{id:e,data:r,query:n},a(t,"updateSubscription"));return i}async function ci(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:i}=await c("post",`/subscriptions/${p(e)}/set_next_charge_date`,{data:{date:r},query:n},a(t,"updateSubscriptionChargeDate"));return i}async function di(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("post",`/subscriptions/${p(e)}/change_address`,{data:{address_id:r}},a(t,"updateSubscriptionAddress"));return n}async function ui(t,e,r,n){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:i}=await c("post",`/subscriptions/${p(e)}/cancel`,{data:r,query:n},a(t,"cancelSubscription"));return i}async function li(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("post",`/subscriptions/${p(e)}/activate`,{query:r},a(t,"activateSubscription"));return n}async function pi(t,e,r){if(e===void 0||e==="")throw new Error("ID is required");const{charge:n}=await c("post",`/subscriptions/${p(e)}/charges/skip`,{data:{date:r,subscription_id:`${e}`}},a(t,"skipSubscriptionCharge"));return n}async function hi(t,e,r={}){if(e===void 0||e==="")throw new Error("ID is required");const{subscription:n}=await c("post",`/subscriptions/${p(e)}/pricing_preview`,{data:r},a(t,"getSubscriptionPricingPreview"));return n}async function _i(t,e,r){if(e===void 0||e.length===0)throw new Error("Subscription IDs are required");const{onetimes:n}=await c("post","/purchase_items/skip_gift",{data:{purchase_item_ids:e.map(Number),recipient_address:r}},a(t,"skipGiftSubscriptionCharge"));return n}async function mi(t,e,r){const n=e.length;if(n<1||n>21)throw new Error("Number of subscriptions must be between 1 and 20.");const{customerId:i}=t;if(!i)throw new Error("No customerId in session.");const s=e[0].address_id;if(!e.every(h=>h.address_id===s))throw new Error("All subscriptions must have the same address_id.");const o=e.map(h=>ti(i,h));let l;r?.allow_onetimes!==void 0&&(l={allow_onetimes:r.allow_onetimes});const{subscriptions:f}=await c("post",`/addresses/${p(s)}/subscriptions-bulk`,{data:{subscriptions:o,commit_update:!!r?.commit},headers:{"X-Recharge-Version":"2021-01"},query:l},a(t,"createSubscriptions"));return f.map(Ze)}async function fi(t,e,r,n){if(e===void 0||e==="")throw new Error("Address ID is required");const i=r.length;if(i<1||i>21)throw new Error("Number of subscriptions must be between 1 and 20.");const{customerId:s}=t;if(!s)throw new Error("No customerId in session.");const o=!!n?.force_update,l=r.map(_=>ri(o,_));let f;n?.allow_onetimes!==void 0&&(f={allow_onetimes:n.allow_onetimes});const{subscriptions:h}=await c("put",`/addresses/${p(e)}/subscriptions-bulk`,{data:{subscriptions:l,commit_update:!!n?.commit},headers:{"X-Recharge-Version":"2021-01"},query:f},a(t,"updateSubscriptions"));return h.map(Ze)}async function gi(t,e,r,n){if(e===void 0||e==="")throw new Error("Address ID is required");const i=r.length;if(i<1||i>21)throw new Error("Number of subscriptions must be between 1 and 20.");const{customerId:s}=t;if(!s)throw new Error("No customerId in session.");let o;n?.allow_onetimes!==void 0&&(o={allow_onetimes:n.allow_onetimes}),await c("delete",`/addresses/${p(e)}/subscriptions-bulk`,{data:{subscriptions:r,send_email:!!n?.send_email,commit_update:!!n?.commit},headers:{"X-Recharge-Version":"2021-01"},query:o},a(t,"deleteSubscriptions"))}var wi=Object.freeze({__proto__:null,activateSubscription:li,cancelSubscription:ui,createSubscription:oi,createSubscriptions:mi,deleteSubscriptions:gi,getSubscription:ni,getSubscriptionPricingPreview:hi,listSubscriptionAddons:si,listSubscriptions:ii,skipGiftSubscriptionCharge:_i,skipSubscriptionCharge:pi,updateSubscription:ai,updateSubscriptionAddress:di,updateSubscriptionChargeDate:ci,updateSubscriptions:fi});const yi={get(t,e){return S("get",t,e)},post(t,e){return S("post",t,e)},put(t,e){return S("put",t,e)},delete(t,e){return S("delete",t,e)}};function bi(t){if(t)return t;if(window?.Shopify?.shop)return window.Shopify.shop;let e=window?.domain;if(!e){const r=location?.href.match(/(?:http[s]*:\/\/)*(.*?)\.(?=admin\.rechargeapps\.com)/i)?.[1].replace(/-sp$/,"");r&&(e=`${r}.myshopify.com`)}if(e)return e;throw new Error("No storeIdentifier was passed into init.")}function vi(t={}){const e=t,{storefrontAccessToken:r}=t;if(r&&!r.startsWith("strfnt"))throw new Error("Incorrect storefront access token used. See https://storefront.rechargepayments.com/client/docs/getting_started/package_setup/#initialization-- for more information.");tt({storeIdentifier:bi(t.storeIdentifier),loginRetryFn:t.loginRetryFn,__unstable_twoFactorRetryFn:t.__unstable_twoFactorRetryFn,storefrontAccessToken:r,appName:t.appName,appVersion:t.appVersion,environment:e.environment?e.environment:"prod",environmentUri:e.environmentUri,customerHash:e.customerHash}),Ve()}const et={init:vi,api:yi,address:mt,auth:qt,bundle:gr,bundleData:Er,charge:Vr,cdn:Tr,collection:Gr,credit:an,customer:rn,customerSurveys:ln,gift:_n,tieredDiscount:wn,membership:In,membershipProgram:kn,metafield:An,onetime:Nn,order:Un,paymentMethod:Gn,plan:Jn,product:zr,store:ei,subscription:wi};try{et.init()}catch{}return et});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rechargeapps/storefront-client",
|
|
3
3
|
"description": "Storefront client for Recharge",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.4.0",
|
|
5
5
|
"author": "Recharge Inc.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/cjs/index.js",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@rollup/plugin-node-resolve": "15.2.3",
|
|
43
43
|
"@rollup/plugin-replace": "5.0.7",
|
|
44
44
|
"@types/spreedly-iframe-browser": "1.0.3",
|
|
45
|
-
"@vitest/coverage-v8": "
|
|
45
|
+
"@vitest/coverage-v8": "5.0.1",
|
|
46
46
|
"concurrently": "8.2.2",
|
|
47
47
|
"cypress": "15.18.0",
|
|
48
48
|
"dotenv": "16.3.1",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"rollup-plugin-subpath-externals": "3.4.0",
|
|
58
58
|
"rollup-plugin-typescript-paths": "1.5.0",
|
|
59
59
|
"start-server-and-test": "2.0.2",
|
|
60
|
-
"vitest": "
|
|
60
|
+
"vitest": "5.0.1",
|
|
61
61
|
"vitest-fetch-mock": "0.3.0"
|
|
62
62
|
},
|
|
63
63
|
"prettier": "@recharge-packages/prettier-config",
|