@rechargeapps/storefront-client 2.0.0 → 2.2.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/subscription.js +15 -0
- package/dist/cjs/api/subscription.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/bundle.js +57 -59
- package/dist/cjs/utils/bundle.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/subscription.js +15 -1
- package/dist/esm/api/subscription.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/utils/bundle.js +57 -59
- package/dist/esm/utils/bundle.js.map +1 -1
- package/dist/esm/utils/request.js +1 -1
- package/dist/index.d.ts +84 -1
- package/dist/umd/recharge-client.min.js +2 -11
- package/package.json +4 -4
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.2.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.2.0",
|
|
20
20
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
21
21
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {}
|
|
22
22
|
};
|
|
@@ -139,6 +139,20 @@ async function skipSubscriptionCharge(session, id, date) {
|
|
|
139
139
|
);
|
|
140
140
|
return charge;
|
|
141
141
|
}
|
|
142
|
+
async function getSubscriptionPricingPreview(session, id, previewRequest = {}) {
|
|
143
|
+
if (id === void 0 || id === "") {
|
|
144
|
+
throw new Error("ID is required");
|
|
145
|
+
}
|
|
146
|
+
const { subscription } = await request.rechargeApiRequest(
|
|
147
|
+
"post",
|
|
148
|
+
`/subscriptions/${url.encodePathSegment(id)}/pricing_preview`,
|
|
149
|
+
{
|
|
150
|
+
data: previewRequest
|
|
151
|
+
},
|
|
152
|
+
request.getInternalSession(session, "getSubscriptionPricingPreview")
|
|
153
|
+
);
|
|
154
|
+
return subscription;
|
|
155
|
+
}
|
|
142
156
|
async function skipGiftSubscriptionCharge(session, subscriptionIds, recipientAddress) {
|
|
143
157
|
if (subscriptionIds === void 0 || subscriptionIds.length === 0) {
|
|
144
158
|
throw new Error("Subscription IDs are required");
|
|
@@ -257,6 +271,7 @@ exports.createSubscription = createSubscription;
|
|
|
257
271
|
exports.createSubscriptions = createSubscriptions;
|
|
258
272
|
exports.deleteSubscriptions = deleteSubscriptions;
|
|
259
273
|
exports.getSubscription = getSubscription;
|
|
274
|
+
exports.getSubscriptionPricingPreview = getSubscriptionPricingPreview;
|
|
260
275
|
exports.listSubscriptionAddons = listSubscriptionAddons;
|
|
261
276
|
exports.listSubscriptions = listSubscriptions;
|
|
262
277
|
exports.skipGiftSubscriptionCharge = skipGiftSubscriptionCharge;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sources":["../../../src/api/subscription.ts"],"sourcesContent":["import { getInternalSession, rechargeApiRequest } from '../utils/request';\nimport { encodePathSegment } from '../utils/url';\nimport {\n CancelSubscriptionRequest,\n CreateSubscriptionRequest,\n Subscription,\n SubscriptionsResponse,\n SubscriptionListParams,\n UpdateSubscriptionRequest,\n UpdateSubscriptionParams,\n GetSubscriptionOptions,\n BasicSubscriptionParams,\n Subscription_2021_01,\n UpdateSubscriptionsRequest,\n UpdateSubscriptionsParams,\n Session,\n ChargeResponse,\n CreateRecipientAddress,\n Onetime,\n IsoDateString,\n CreateSubscriptionsParams,\n CreateSubscriptionsRequest,\n DeleteSubscriptionsParams,\n DeleteSubscriptionsRequest,\n UpdateSubscriptionChargeDateParams,\n SubscriptionListAddonsParams,\n} from '../types';\nimport {\n bulkSubscriptionCreateMapper,\n bulkSubscriptionUpdateMapper,\n subscriptionMapperOldToNew,\n} from '../mappers/subscription';\n\nexport async function getSubscription(\n session: Session,\n id: string | number,\n options?: GetSubscriptionOptions\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'get',\n `/subscriptions`,\n {\n id,\n query: { include: options?.include },\n },\n getInternalSession(session, 'getSubscription')\n );\n return subscription;\n}\n\nexport function listSubscriptions(session: Session, query?: SubscriptionListParams): Promise<SubscriptionsResponse> {\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions`,\n { query },\n getInternalSession(session, 'listSubscriptions')\n );\n}\n\n/**\n * @internal\n * List add-on subscriptions for the given parent subscription.\n */\nexport function listSubscriptionAddons(\n session: Session,\n id: string | number,\n query?: SubscriptionListAddonsParams\n): Promise<SubscriptionsResponse> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions/${encodePathSegment(id)}/addons`,\n { query },\n getInternalSession(session, 'listSubscriptionAddons')\n );\n}\n\n/**\n * When creating a subscription via API, order_interval_frequency and charge_interval_frequency values do not necessarily\n * need to match the values set in the respective Plans. The product, however, does need to have at least one Plan in order\n * to be added to a subscription.\n */\nexport async function createSubscription(\n session: Session,\n createRequest: CreateSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions`,\n {\n data: createRequest,\n query,\n },\n getInternalSession(session, 'createSubscription')\n );\n return subscription;\n}\n\n/**\n * Updating parameters like frequency, charge_interval_frequency, order_interval_frequency, order_interval_unit will cause our algorithm to automatically recalculate the next charge date (next_charge_scheduled_at).\n * WARNING: This update will remove skipped and manually changed charges.\n * If you want to change the next charge date (next_charge_scheduled_at) we recommend you to update these parameters first.\n * When updating order_interval_unit OR order_interval_frequency OR charge_interval_frequency all three parameters are required.\n */\nexport async function updateSubscription(\n session: Session,\n id: string | number,\n updateRequest: UpdateSubscriptionRequest,\n query?: UpdateSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'put',\n `/subscriptions`,\n {\n id,\n data: updateRequest,\n query,\n },\n getInternalSession(session, 'updateSubscription')\n );\n return subscription;\n}\n\n/**\n * If there are two active subscriptions with the same address_id, and you update their\n * next_charge_date parameters to match, their charges will get merged into a new charge\n * with a new id\n */\nexport async function updateSubscriptionChargeDate(\n session: Session,\n id: string | number,\n date: IsoDateString,\n query?: UpdateSubscriptionChargeDateParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/set_next_charge_date`,\n {\n data: { date },\n query,\n },\n getInternalSession(session, 'updateSubscriptionChargeDate')\n );\n return subscription;\n}\n\nexport async function updateSubscriptionAddress(\n session: Session,\n id: string | number,\n address_id: string | number\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/change_address`,\n {\n data: { address_id },\n },\n getInternalSession(session, 'updateSubscriptionAddress')\n );\n return subscription;\n}\n\n/**\n * An involuntary subscription cancelled due to max retries reached will trigger the\n * charge/max_retries_reached webhook. If this leads to the subscription being cancelled,\n * the subscription/cancelled webhook will trigger.\n */\nexport async function cancelSubscription(\n session: Session,\n id: string | number,\n cancelRequest: CancelSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/cancel`,\n {\n data: cancelRequest,\n query,\n },\n getInternalSession(session, 'cancelSubscription')\n );\n return subscription;\n}\n\n/**\n * When activating subscription, following attributes will be set to null: cancelled_at, cancellation_reason\n * and cancellation_reason_comments.\n */\nexport async function activateSubscription(\n session: Session,\n id: string | number,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/activate`,\n { query },\n getInternalSession(session, 'activateSubscription')\n );\n return subscription;\n}\n\n/* Skip charge associated with a subscription. */\nexport async function skipSubscriptionCharge(session: Session, id: number | string, date: IsoDateString) {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { charge } = await rechargeApiRequest<ChargeResponse>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/charges/skip`,\n {\n data: {\n date,\n subscription_id: `${id}`,\n },\n },\n getInternalSession(session, 'skipSubscriptionCharge')\n );\n return charge;\n}\n\n/**\n * Gift a subscription to another person. This creates onetime products for the recipient and skips that subscription for the customer.\n * When the gifted onetime ships the recipient receives and email notification.\n */\nexport async function skipGiftSubscriptionCharge(\n session: Session,\n subscriptionIds: Array<number | string>,\n recipientAddress: CreateRecipientAddress\n) {\n if (subscriptionIds === undefined || subscriptionIds.length === 0) {\n throw new Error('Subscription IDs are required');\n }\n const { onetimes } = await rechargeApiRequest<{ onetimes: Onetime[] }>(\n 'post',\n '/purchase_items/skip_gift',\n {\n data: {\n purchase_item_ids: subscriptionIds.map(Number),\n recipient_address: recipientAddress,\n },\n },\n getInternalSession(session, 'skipGiftSubscriptionCharge')\n );\n\n return onetimes;\n}\n\n/**\n * Bulk create new subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function createSubscriptions(\n session: Session,\n createRequestBulk: CreateSubscriptionsRequest[],\n query?: CreateSubscriptionsParams\n): Promise<Subscription[]> {\n // validate size\n const length = createRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // validate addressId\n const addressId = createRequestBulk[0].address_id;\n if (!createRequestBulk.every(createRequest => createRequest.address_id === addressId)) {\n throw new Error('All subscriptions must have the same address_id.');\n }\n const requestData = createRequestBulk.map(createRequest => bulkSubscriptionCreateMapper(customerId, createRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'post',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'createSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * Bulk update subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n * Same rules apply as a single subscription update\n */\nexport async function updateSubscriptions(\n session: Session,\n addressId: string | number,\n updateRequestBulk: UpdateSubscriptionsRequest[],\n query?: UpdateSubscriptionsParams\n): Promise<Subscription[]> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = updateRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n const forceUpdate = !!query?.force_update;\n const requestData = updateRequestBulk.map(updateRequest => bulkSubscriptionUpdateMapper(forceUpdate, updateRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'put',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'updateSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * @internal\n * Bulk delete subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function deleteSubscriptions(\n session: Session,\n addressId: string | number,\n deleteRequestBulk: DeleteSubscriptionsRequest[],\n query?: DeleteSubscriptionsParams\n): Promise<void> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = deleteRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'delete',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: deleteRequestBulk, send_email: !!query?.send_email, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'deleteSubscriptions')\n );\n return undefined;\n}\n"],"names":["rechargeApiRequest","getInternalSession","encodePathSegment","bulkSubscriptionCreateMapper","subscriptionMapperOldToNew","bulkSubscriptionUpdateMapper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription.js","sources":["../../../src/api/subscription.ts"],"sourcesContent":["import { getInternalSession, rechargeApiRequest } from '../utils/request';\nimport { encodePathSegment } from '../utils/url';\nimport {\n CancelSubscriptionRequest,\n CreateSubscriptionRequest,\n Subscription,\n SubscriptionsResponse,\n SubscriptionListParams,\n UpdateSubscriptionRequest,\n UpdateSubscriptionParams,\n GetSubscriptionOptions,\n BasicSubscriptionParams,\n Subscription_2021_01,\n UpdateSubscriptionsRequest,\n UpdateSubscriptionsParams,\n Session,\n ChargeResponse,\n CreateRecipientAddress,\n Onetime,\n IsoDateString,\n CreateSubscriptionsParams,\n CreateSubscriptionsRequest,\n DeleteSubscriptionsParams,\n DeleteSubscriptionsRequest,\n UpdateSubscriptionChargeDateParams,\n SubscriptionListAddonsParams,\n SubscriptionPricingPreview,\n SubscriptionPricingPreviewRequest,\n} from '../types';\nimport {\n bulkSubscriptionCreateMapper,\n bulkSubscriptionUpdateMapper,\n subscriptionMapperOldToNew,\n} from '../mappers/subscription';\n\nexport async function getSubscription(\n session: Session,\n id: string | number,\n options?: GetSubscriptionOptions\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'get',\n `/subscriptions`,\n {\n id,\n query: { include: options?.include },\n },\n getInternalSession(session, 'getSubscription')\n );\n return subscription;\n}\n\nexport function listSubscriptions(session: Session, query?: SubscriptionListParams): Promise<SubscriptionsResponse> {\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions`,\n { query },\n getInternalSession(session, 'listSubscriptions')\n );\n}\n\n/**\n * @internal\n * List add-on subscriptions for the given parent subscription.\n */\nexport function listSubscriptionAddons(\n session: Session,\n id: string | number,\n query?: SubscriptionListAddonsParams\n): Promise<SubscriptionsResponse> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions/${encodePathSegment(id)}/addons`,\n { query },\n getInternalSession(session, 'listSubscriptionAddons')\n );\n}\n\n/**\n * When creating a subscription via API, order_interval_frequency and charge_interval_frequency values do not necessarily\n * need to match the values set in the respective Plans. The product, however, does need to have at least one Plan in order\n * to be added to a subscription.\n */\nexport async function createSubscription(\n session: Session,\n createRequest: CreateSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions`,\n {\n data: createRequest,\n query,\n },\n getInternalSession(session, 'createSubscription')\n );\n return subscription;\n}\n\n/**\n * Updating parameters like frequency, charge_interval_frequency, order_interval_frequency, order_interval_unit will cause our algorithm to automatically recalculate the next charge date (next_charge_scheduled_at).\n * WARNING: This update will remove skipped and manually changed charges.\n * If you want to change the next charge date (next_charge_scheduled_at) we recommend you to update these parameters first.\n * When updating order_interval_unit OR order_interval_frequency OR charge_interval_frequency all three parameters are required.\n */\nexport async function updateSubscription(\n session: Session,\n id: string | number,\n updateRequest: UpdateSubscriptionRequest,\n query?: UpdateSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'put',\n `/subscriptions`,\n {\n id,\n data: updateRequest,\n query,\n },\n getInternalSession(session, 'updateSubscription')\n );\n return subscription;\n}\n\n/**\n * If there are two active subscriptions with the same address_id, and you update their\n * next_charge_date parameters to match, their charges will get merged into a new charge\n * with a new id\n */\nexport async function updateSubscriptionChargeDate(\n session: Session,\n id: string | number,\n date: IsoDateString,\n query?: UpdateSubscriptionChargeDateParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/set_next_charge_date`,\n {\n data: { date },\n query,\n },\n getInternalSession(session, 'updateSubscriptionChargeDate')\n );\n return subscription;\n}\n\nexport async function updateSubscriptionAddress(\n session: Session,\n id: string | number,\n address_id: string | number\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/change_address`,\n {\n data: { address_id },\n },\n getInternalSession(session, 'updateSubscriptionAddress')\n );\n return subscription;\n}\n\n/**\n * An involuntary subscription cancelled due to max retries reached will trigger the\n * charge/max_retries_reached webhook. If this leads to the subscription being cancelled,\n * the subscription/cancelled webhook will trigger.\n */\nexport async function cancelSubscription(\n session: Session,\n id: string | number,\n cancelRequest: CancelSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/cancel`,\n {\n data: cancelRequest,\n query,\n },\n getInternalSession(session, 'cancelSubscription')\n );\n return subscription;\n}\n\n/**\n * When activating subscription, following attributes will be set to null: cancelled_at, cancellation_reason\n * and cancellation_reason_comments.\n */\nexport async function activateSubscription(\n session: Session,\n id: string | number,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/activate`,\n { query },\n getInternalSession(session, 'activateSubscription')\n );\n return subscription;\n}\n\n/* Skip charge associated with a subscription. */\nexport async function skipSubscriptionCharge(session: Session, id: number | string, date: IsoDateString) {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { charge } = await rechargeApiRequest<ChargeResponse>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/charges/skip`,\n {\n data: {\n date,\n subscription_id: `${id}`,\n },\n },\n getInternalSession(session, 'skipSubscriptionCharge')\n );\n return charge;\n}\n\n/**\n * @internal\n * Price a proposed variant and/or plan swap for a subscription without persisting it.\n *\n * Runs the same pricing chain the update would run, so the returned `proposed_unit_price` is what\n * the customer would actually be charged -- including dynamic pricing tier resolution and any\n * pricing progression reset the swap would cause. Omitted request fields keep the subscription's\n * current value; quantity and frequency are not accepted because they cannot move the per-unit price\n * between dynamic pricing tiers.\n *\n * Pricing failures are reported in the returned `errors` map rather than thrown.\n */\nexport async function getSubscriptionPricingPreview(\n session: Session,\n id: string | number,\n previewRequest: SubscriptionPricingPreviewRequest = {}\n): Promise<SubscriptionPricingPreview> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: SubscriptionPricingPreview }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/pricing_preview`,\n {\n data: previewRequest,\n },\n getInternalSession(session, 'getSubscriptionPricingPreview')\n );\n return subscription;\n}\n\n/**\n * Gift a subscription to another person. This creates onetime products for the recipient and skips that subscription for the customer.\n * When the gifted onetime ships the recipient receives and email notification.\n */\nexport async function skipGiftSubscriptionCharge(\n session: Session,\n subscriptionIds: Array<number | string>,\n recipientAddress: CreateRecipientAddress\n) {\n if (subscriptionIds === undefined || subscriptionIds.length === 0) {\n throw new Error('Subscription IDs are required');\n }\n const { onetimes } = await rechargeApiRequest<{ onetimes: Onetime[] }>(\n 'post',\n '/purchase_items/skip_gift',\n {\n data: {\n purchase_item_ids: subscriptionIds.map(Number),\n recipient_address: recipientAddress,\n },\n },\n getInternalSession(session, 'skipGiftSubscriptionCharge')\n );\n\n return onetimes;\n}\n\n/**\n * Bulk create new subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function createSubscriptions(\n session: Session,\n createRequestBulk: CreateSubscriptionsRequest[],\n query?: CreateSubscriptionsParams\n): Promise<Subscription[]> {\n // validate size\n const length = createRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // validate addressId\n const addressId = createRequestBulk[0].address_id;\n if (!createRequestBulk.every(createRequest => createRequest.address_id === addressId)) {\n throw new Error('All subscriptions must have the same address_id.');\n }\n const requestData = createRequestBulk.map(createRequest => bulkSubscriptionCreateMapper(customerId, createRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'post',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'createSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * Bulk update subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n * Same rules apply as a single subscription update\n */\nexport async function updateSubscriptions(\n session: Session,\n addressId: string | number,\n updateRequestBulk: UpdateSubscriptionsRequest[],\n query?: UpdateSubscriptionsParams\n): Promise<Subscription[]> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = updateRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n const forceUpdate = !!query?.force_update;\n const requestData = updateRequestBulk.map(updateRequest => bulkSubscriptionUpdateMapper(forceUpdate, updateRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'put',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'updateSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * @internal\n * Bulk delete subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function deleteSubscriptions(\n session: Session,\n addressId: string | number,\n deleteRequestBulk: DeleteSubscriptionsRequest[],\n query?: DeleteSubscriptionsParams\n): Promise<void> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = deleteRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'delete',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: deleteRequestBulk, send_email: !!query?.send_email, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'deleteSubscriptions')\n );\n return undefined;\n}\n"],"names":["rechargeApiRequest","getInternalSession","encodePathSegment","bulkSubscriptionCreateMapper","subscriptionMapperOldToNew","bulkSubscriptionUpdateMapper"],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -126,6 +126,7 @@ exports.createSubscription = subscription.createSubscription;
|
|
|
126
126
|
exports.createSubscriptions = subscription.createSubscriptions;
|
|
127
127
|
exports.deleteSubscriptions = subscription.deleteSubscriptions;
|
|
128
128
|
exports.getSubscription = subscription.getSubscription;
|
|
129
|
+
exports.getSubscriptionPricingPreview = subscription.getSubscriptionPricingPreview;
|
|
129
130
|
exports.listSubscriptionAddons = subscription.listSubscriptionAddons;
|
|
130
131
|
exports.listSubscriptions = subscription.listSubscriptions;
|
|
131
132
|
exports.skipGiftSubscriptionCharge = subscription.skipGiftSubscriptionCharge;
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/cjs/utils/bundle.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var jsXdr = require('js-xdr');
|
|
3
|
+
var jsXdr = require('@stellar/js-xdr');
|
|
4
4
|
|
|
5
5
|
var __accessCheck = (obj, member, msg) => {
|
|
6
6
|
if (!member.has(obj))
|
|
@@ -25,68 +25,66 @@ var __privateMethod = (obj, member, method) => {
|
|
|
25
25
|
return method;
|
|
26
26
|
};
|
|
27
27
|
var _bundleSettings, _items, _bundleData, _formatBundleSettings, formatBundleSettings_fn, _formatBundleData, formatBundleData_fn, _isValueInRange, isValueInRange_fn, _unique, unique_fn, _hasOwn, hasOwn_fn;
|
|
28
|
+
const textEncoder = new TextEncoder();
|
|
29
|
+
const emptyExt = { v: 0 };
|
|
30
|
+
function toBase64(bytes) {
|
|
31
|
+
let binary = "";
|
|
32
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
33
|
+
binary += String.fromCharCode(bytes[i]);
|
|
34
|
+
}
|
|
35
|
+
return btoa(binary);
|
|
36
|
+
}
|
|
37
|
+
const EnvelopeType = jsXdr.enumType("EnvelopeType", {
|
|
38
|
+
envelopeTypeBundle: 0
|
|
39
|
+
});
|
|
40
|
+
const BundleItemExt = jsXdr.union("BundleItemExt", {
|
|
41
|
+
switchOn: jsXdr.int32(),
|
|
42
|
+
switchKey: "v",
|
|
43
|
+
cases: [jsXdr.unionCase("v0", 0, jsXdr.voidType())]
|
|
44
|
+
});
|
|
45
|
+
const BundleItem = jsXdr.struct("BundleItem", {
|
|
46
|
+
collectionId: jsXdr.uint64(),
|
|
47
|
+
productId: jsXdr.uint64(),
|
|
48
|
+
variantId: jsXdr.uint64(),
|
|
49
|
+
sku: jsXdr.string(jsXdr.UNBOUNDED_MAX_LENGTH),
|
|
50
|
+
quantity: jsXdr.uint32(),
|
|
51
|
+
ext: BundleItemExt
|
|
52
|
+
});
|
|
53
|
+
const BundleExt = jsXdr.union("BundleExt", {
|
|
54
|
+
switchOn: jsXdr.int32(),
|
|
55
|
+
switchKey: "v",
|
|
56
|
+
cases: [jsXdr.unionCase("v0", 0, jsXdr.voidType())]
|
|
57
|
+
});
|
|
58
|
+
const Bundle = jsXdr.struct("Bundle", {
|
|
59
|
+
variantId: jsXdr.uint64(),
|
|
60
|
+
items: jsXdr.array(BundleItem, 500),
|
|
61
|
+
version: jsXdr.uint32(),
|
|
62
|
+
ext: BundleExt
|
|
63
|
+
});
|
|
64
|
+
const BundleEnvelope = jsXdr.union("BundleEnvelope", {
|
|
65
|
+
switchOn: EnvelopeType,
|
|
66
|
+
switchKey: "type",
|
|
67
|
+
cases: [jsXdr.unionCase("envelopeTypeBundle", EnvelopeType.envelopeTypeBundle, jsXdr.field("v1", Bundle))]
|
|
68
|
+
});
|
|
28
69
|
function toLineItemProperty(bundle) {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
collectionId:
|
|
35
|
-
productId:
|
|
36
|
-
variantId:
|
|
37
|
-
sku: item.sku || "",
|
|
70
|
+
const value = {
|
|
71
|
+
type: EnvelopeType.envelopeTypeBundle,
|
|
72
|
+
v1: {
|
|
73
|
+
variantId: BigInt(bundle.variantId.toString()),
|
|
74
|
+
items: bundle.items.map((item) => ({
|
|
75
|
+
collectionId: BigInt(item.collectionId.toString()),
|
|
76
|
+
productId: BigInt(item.productId.toString()),
|
|
77
|
+
variantId: BigInt(item.variantId.toString()),
|
|
78
|
+
sku: textEncoder.encode(item.sku || ""),
|
|
38
79
|
quantity: item.quantity,
|
|
39
|
-
ext:
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
|
|
80
|
+
ext: emptyExt
|
|
81
|
+
})),
|
|
82
|
+
version: bundle.version || Math.floor(Date.now() / 1e3),
|
|
83
|
+
ext: emptyExt
|
|
84
|
+
}
|
|
43
85
|
};
|
|
44
|
-
|
|
45
|
-
return xdr.BundleEnvelope.envelopeTypeBundle(xdrBundle).toXDR("base64");
|
|
86
|
+
return toBase64(BundleEnvelope.encode(value));
|
|
46
87
|
}
|
|
47
|
-
const xdr = jsXdr.config(
|
|
48
|
-
(xdr2) => {
|
|
49
|
-
xdr2.enum("EnvelopeType", {
|
|
50
|
-
envelopeTypeBundle: 0
|
|
51
|
-
});
|
|
52
|
-
xdr2.typedef("Uint32", xdr2.uint());
|
|
53
|
-
xdr2.typedef("Uint64", xdr2.uhyper());
|
|
54
|
-
xdr2.union("BundleItemExt", {
|
|
55
|
-
switchOn: xdr2.int(),
|
|
56
|
-
switchName: "v",
|
|
57
|
-
switches: [[0, xdr2.void()]],
|
|
58
|
-
arms: {}
|
|
59
|
-
});
|
|
60
|
-
xdr2.struct("BundleItem", [
|
|
61
|
-
["collectionId", xdr2.lookup("Uint64")],
|
|
62
|
-
["productId", xdr2.lookup("Uint64")],
|
|
63
|
-
["variantId", xdr2.lookup("Uint64")],
|
|
64
|
-
["sku", xdr2.string()],
|
|
65
|
-
["quantity", xdr2.lookup("Uint32")],
|
|
66
|
-
["ext", xdr2.lookup("BundleItemExt")]
|
|
67
|
-
]);
|
|
68
|
-
xdr2.union("BundleExt", {
|
|
69
|
-
switchOn: xdr2.int(),
|
|
70
|
-
switchName: "v",
|
|
71
|
-
switches: [[0, xdr2.void()]],
|
|
72
|
-
arms: {}
|
|
73
|
-
});
|
|
74
|
-
xdr2.struct("Bundle", [
|
|
75
|
-
["variantId", xdr2.lookup("Uint64")],
|
|
76
|
-
["items", xdr2.varArray(xdr2.lookup("BundleItem"), 500)],
|
|
77
|
-
["version", xdr2.lookup("Uint32")],
|
|
78
|
-
["ext", xdr2.lookup("BundleExt")]
|
|
79
|
-
]);
|
|
80
|
-
xdr2.union("BundleEnvelope", {
|
|
81
|
-
switchOn: xdr2.lookup("EnvelopeType"),
|
|
82
|
-
switchName: "type",
|
|
83
|
-
switches: [["envelopeTypeBundle", "v1"]],
|
|
84
|
-
arms: {
|
|
85
|
-
v1: xdr2.lookup("Bundle")
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
);
|
|
90
88
|
class BundleSelectionValidator {
|
|
91
89
|
constructor(selectionItems, bundleData) {
|
|
92
90
|
__privateAdd(this, _formatBundleSettings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sources":["../../../src/utils/bundle.ts"],"sourcesContent":["import { config } from 'js-xdr';\nimport { BundleData as StorefrontBundleData, CDNBundleSettings } from '../types';\n\nexport function toLineItemProperty(bundle: { variantId: string; version: number; items: any[] }) {\n const opts = {\n variantId: xdr.Uint64.fromString(bundle.variantId.toString()),\n version: bundle.version || Math.floor(Date.now() / 1000),\n items: bundle.items.map(item => {\n return new xdr.BundleItem({\n collectionId: xdr.Uint64.fromString(item.collectionId.toString()),\n productId: xdr.Uint64.fromString(item.productId.toString()),\n variantId: xdr.Uint64.fromString(item.variantId.toString()),\n sku: item.sku || '',\n quantity: item.quantity,\n ext: new xdr.BundleItemExt(0),\n });\n }),\n ext: new xdr.BundleExt(0),\n };\n\n const xdrBundle = new xdr.Bundle(opts);\n return xdr.BundleEnvelope.envelopeTypeBundle(xdrBundle).toXDR('base64');\n}\n\nconst xdr = config(\n (xdr: {\n enum: (arg0: string, arg1: { envelopeTypeBundle: number }) => void;\n typedef: (arg0: string, arg1: any) => void;\n uint: () => any;\n uhyper: () => any;\n union: (\n arg0: string,\n arg1: {\n switchOn: any;\n switchName: string;\n switches: any[][] | string[][];\n // eslint-disable-next-line @typescript-eslint/ban-types\n arms: {} | {} | { v1: any };\n }\n ) => void;\n int: () => any;\n void: () => any;\n struct: (arg0: string, arg1: any[][]) => void;\n lookup: (arg0: string) => any;\n string: () => any;\n varArray: (arg0: any, arg1: number) => any;\n }) => {\n xdr.enum('EnvelopeType', {\n envelopeTypeBundle: 0,\n });\n xdr.typedef('Uint32', xdr.uint());\n xdr.typedef('Uint64', xdr.uhyper());\n xdr.union('BundleItemExt', {\n switchOn: xdr.int(),\n switchName: 'v',\n switches: [[0, xdr.void()]],\n arms: {},\n });\n xdr.struct('BundleItem', [\n ['collectionId', xdr.lookup('Uint64')],\n ['productId', xdr.lookup('Uint64')],\n ['variantId', xdr.lookup('Uint64')],\n ['sku', xdr.string()],\n ['quantity', xdr.lookup('Uint32')],\n ['ext', xdr.lookup('BundleItemExt')],\n ]);\n xdr.union('BundleExt', {\n switchOn: xdr.int(),\n switchName: 'v',\n switches: [[0, xdr.void()]],\n arms: {},\n });\n xdr.struct('Bundle', [\n ['variantId', xdr.lookup('Uint64')],\n ['items', xdr.varArray(xdr.lookup('BundleItem'), 500)],\n ['version', xdr.lookup('Uint32')],\n ['ext', xdr.lookup('BundleExt')],\n ]);\n xdr.union('BundleEnvelope', {\n switchOn: xdr.lookup('EnvelopeType'),\n switchName: 'type',\n switches: [['envelopeTypeBundle', 'v1']],\n arms: {\n v1: xdr.lookup('Bundle'),\n },\n });\n }\n);\n\nexport interface BundleSelectionItems {\n collectionId: string;\n externalProductId: string;\n externalVariantId: string;\n quantity: number;\n}\n\ninterface VariantSettings {\n externalVariantId: string;\n optionSources: Record<string, { collectionId: string; min: number | null; max: number | null }>;\n ranges: { min: number; max: number | null }[];\n}\n\ninterface BundleSettings {\n bundleSettings: { maxPerItem: number | null; isCustomizable: boolean };\n variantsSettings: Record<string, VariantSettings>;\n}\n\ntype BundleDataCollection = StorefrontBundleData['collections'][string];\n\ninterface BundleData extends Omit<StorefrontBundleData, 'collections'> {\n collections: Record<\n string,\n Omit<BundleDataCollection, 'products'> & {\n products: Record<string, BundleDataCollection['products'][number]>;\n }\n >;\n}\n\nexport class BundleSelectionValidator {\n #bundleSettings: BundleSettings | null;\n #items: BundleSelectionItems[];\n #bundleData: BundleData | null;\n\n constructor(selectionItems: BundleSelectionItems[], bundleData: StorefrontBundleData) {\n this.#bundleSettings = this.#formatBundleSettings(bundleData);\n this.#bundleData = this.#formatBundleData(bundleData);\n this.#items = selectionItems;\n }\n\n #formatBundleSettings(bundleData: StorefrontBundleData) {\n try {\n const bundleSettings = bundleData.bundle_settings;\n return {\n bundleSettings: {\n maxPerItem: bundleSettings.max_quantity_per_variant,\n isCustomizable: bundleSettings.is_customizable,\n },\n // null-proto seeds so external variant/option-source ids become real own keys, not prototype pollution\n variantsSettings: bundleSettings.variants.reduce<BundleSettings['variantsSettings']>((acc, variant) => {\n if (!variant.enabled) return acc;\n\n let ranges: VariantSettings['ranges'] = [{ min: variant.items_count, max: variant.items_count }];\n if (!variant.items_count) {\n ranges = variant.ranges.map(({ quantity_max, quantity_min }) => ({\n min: quantity_min,\n max: quantity_max,\n }));\n }\n\n acc[variant.external_variant_id] = {\n externalVariantId: variant.external_variant_id,\n optionSources: variant.option_sources.reduce<VariantSettings['optionSources']>((acc, optionSource) => {\n acc[optionSource.option_source_id] = {\n min: optionSource.quantity_min,\n max: optionSource.quantity_max,\n collectionId: optionSource.option_source_id,\n };\n return acc;\n }, Object.create(null)),\n ranges,\n };\n return acc;\n }, Object.create(null)),\n };\n } catch (error) {\n return null;\n }\n }\n\n #formatBundleData(bundleData: StorefrontBundleData) {\n try {\n // null-proto seeds so external collection/product ids become real own keys, not prototype pollution\n const collections = Object.values(bundleData.collections).reduce<BundleData['collections']>((acc, current) => {\n acc[current.id] = {\n ...current,\n products: current.products.reduce<BundleData['collections'][string]['products']>((productAcc, product) => {\n productAcc[product.id] = product;\n return productAcc;\n }, Object.create(null)),\n };\n\n return acc;\n }, Object.create(null));\n\n return { ...bundleData, collections };\n } catch (error) {\n return null;\n }\n }\n\n #isValueInRange(ranges: { min: number | null; max: number | null }[], value: number) {\n const matchedRanges = ranges.filter(({ min, max }) => {\n const minValue = min ?? value;\n const maxValue = max ?? value;\n\n return minValue <= value && value <= maxValue;\n });\n\n return !!matchedRanges.length;\n }\n\n #unique(ids: string[]) {\n return Array.from(new Set(ids));\n }\n\n // Own-property membership check. Guards against inherited keys (e.g. `__proto__`,\n // `constructor`, `toString`) resolving to truthy values on plain-object maps.\n #hasOwn(target: object, key: string) {\n return Object.prototype.hasOwnProperty.call(target, key);\n }\n\n isInitialDataValid() {\n if (!this.#bundleData) {\n throw 'Bundle data does not exist for the given product.';\n }\n\n if (!this.#bundleSettings) {\n throw 'Bundle settings do not exist for the given product.';\n }\n\n if (!Array.isArray(this.#items) || !this.#items.length) {\n throw 'No bundle selection items provided.';\n }\n\n return true;\n }\n\n isValidVariant(externalVariantId: string) {\n if (!this.#bundleSettings?.variantsSettings[externalVariantId]) {\n throw `The ${externalVariantId} bundle variant is invalid.`;\n }\n\n return true;\n }\n\n isSelectionInVariantRange(externalVariantId: string) {\n const total = this.#items.reduce((acc, current) => acc + current.quantity, 0);\n const ranges = this.#bundleSettings?.variantsSettings[externalVariantId].ranges || [];\n\n if (!this.#isValueInRange(ranges, total)) {\n throw 'The total number of products does not fall within the required variant range.';\n }\n\n return true;\n }\n\n areItemsInMaxPerItemBound() {\n const maxPerItem = this.#bundleSettings?.bundleSettings.maxPerItem || 0;\n const invalidProducts = this.#items.filter(({ quantity }) => quantity > maxPerItem);\n\n if (maxPerItem && invalidProducts.length) {\n const invalidIds = this.#unique(invalidProducts.map(({ externalProductId }) => externalProductId)).join(', ');\n throw `The selected products (${invalidIds}) exceed the maximum limit of ${maxPerItem} items per product.`;\n }\n\n return true;\n }\n\n areSelectedCollectionsValid(externalVariantId: string) {\n const variantSettings = this.#bundleSettings?.variantsSettings[externalVariantId];\n const optionSources = variantSettings?.optionSources;\n const invalidCollections = this.#items.filter(\n ({ collectionId }) => !optionSources || !this.#hasOwn(optionSources, collectionId)\n );\n if (invalidCollections.length) {\n const invalidIds = this.#unique(invalidCollections.map(({ collectionId }) => collectionId)).join(', ');\n throw `The collections (${invalidIds}) are no longer valid for the bundle variant (${externalVariantId}).`;\n }\n\n return true;\n }\n\n areItemsQuantitiesValidForTheCollection(externalVariantId: string) {\n // null-proto seed so a `__proto__` collectionId becomes a real own key, not prototype pollution\n const totalSelectedByCollection = this.#items.reduce<Record<string, number>>((acc, current) => {\n acc[current.collectionId] = current.quantity + (acc[current.collectionId] || 0);\n return acc;\n }, Object.create(null));\n\n const variantSettings = this.#bundleSettings?.variantsSettings[externalVariantId];\n const invalidItems = Object.values(variantSettings?.optionSources || {}).filter(collection => {\n const quantity = totalSelectedByCollection[collection.collectionId] || 0;\n return !this.#isValueInRange([collection], quantity);\n });\n\n if (!variantSettings || invalidItems.length) {\n const invalidIds = this.#unique(invalidItems.map(({ collectionId }) => collectionId)).join(', ');\n throw `The selection exceeds the limits for the collections (${invalidIds}).`;\n }\n\n return true;\n }\n\n areSelectedProductsValid(externalVariantId: string) {\n const bundleVariantCollections = this.#bundleSettings?.variantsSettings[externalVariantId]?.optionSources || {};\n // null-proto seed so a `__proto__` collectionId becomes a real own key, not prototype pollution\n const variantCollections = Object.values(bundleVariantCollections).reduce<BundleData['collections']>(\n (acc, optionSource) => {\n const collection = this.#bundleData?.collections[optionSource.collectionId];\n if (collection) {\n acc[optionSource.collectionId] = collection;\n }\n return acc;\n },\n Object.create(null)\n );\n\n if (!Object.values(variantCollections).length) {\n throw `No collections found for the bundle variant (${externalVariantId}).`;\n }\n\n const missingProducts = this.#items.filter(({ externalProductId, collectionId }) => {\n if (!this.#hasOwn(variantCollections, collectionId)) {\n return true;\n }\n return !this.#hasOwn(variantCollections[collectionId].products, externalProductId);\n });\n\n if (missingProducts.length) {\n const invalidIds = this.#unique(missingProducts.map(({ externalProductId }) => externalProductId)).join(', ');\n throw `The products (${invalidIds}) are no longer valid for the bundle product.`;\n }\n\n return true;\n }\n\n isBundleSelectionValid(externalVariantId: string) {\n this.isInitialDataValid();\n this.isValidVariant(externalVariantId);\n this.isSelectionInVariantRange(externalVariantId);\n this.areItemsInMaxPerItemBound();\n this.areSelectedCollectionsValid(externalVariantId);\n this.areItemsQuantitiesValidForTheCollection(externalVariantId);\n this.areSelectedProductsValid(externalVariantId);\n\n return true;\n }\n}\n"],"names":["config","xdr","acc"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bundle.js","sources":["../../../src/utils/bundle.ts"],"sourcesContent":["import {\n array,\n enumType,\n field,\n int32,\n string as xdrString,\n struct,\n uint32,\n uint64,\n union,\n unionCase,\n voidType,\n UNBOUNDED_MAX_LENGTH,\n} from '@stellar/js-xdr';\nimport { BundleData as StorefrontBundleData, CDNBundleSettings } from '../types';\n\nconst textEncoder = new TextEncoder();\n\nconst emptyExt = { v: 0 } as const;\n\nfunction toBase64(bytes: Uint8Array) {\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\nconst EnvelopeType = enumType('EnvelopeType', {\n envelopeTypeBundle: 0,\n});\n\nconst BundleItemExt = union('BundleItemExt', {\n switchOn: int32(),\n switchKey: 'v',\n cases: [unionCase('v0', 0, voidType())],\n});\n\nconst BundleItem = struct('BundleItem', {\n collectionId: uint64(),\n productId: uint64(),\n variantId: uint64(),\n sku: xdrString(UNBOUNDED_MAX_LENGTH),\n quantity: uint32(),\n ext: BundleItemExt,\n});\n\nconst BundleExt = union('BundleExt', {\n switchOn: int32(),\n switchKey: 'v',\n cases: [unionCase('v0', 0, voidType())],\n});\n\nconst Bundle = struct('Bundle', {\n variantId: uint64(),\n items: array(BundleItem, 500),\n version: uint32(),\n ext: BundleExt,\n});\n\nconst BundleEnvelope = union('BundleEnvelope', {\n switchOn: EnvelopeType,\n switchKey: 'type',\n cases: [unionCase('envelopeTypeBundle', EnvelopeType.envelopeTypeBundle, field('v1', Bundle))],\n});\n\nexport function toLineItemProperty(bundle: { variantId: string; version: number; items: any[] }) {\n const value = {\n type: EnvelopeType.envelopeTypeBundle,\n v1: {\n variantId: BigInt(bundle.variantId.toString()),\n items: bundle.items.map(item => ({\n collectionId: BigInt(item.collectionId.toString()),\n productId: BigInt(item.productId.toString()),\n variantId: BigInt(item.variantId.toString()),\n sku: textEncoder.encode(item.sku || ''),\n quantity: item.quantity as number,\n ext: emptyExt,\n })),\n version: bundle.version || Math.floor(Date.now() / 1000),\n ext: emptyExt,\n },\n };\n\n return toBase64(BundleEnvelope.encode(value));\n}\n\nexport interface BundleSelectionItems {\n collectionId: string;\n externalProductId: string;\n externalVariantId: string;\n quantity: number;\n}\n\ninterface VariantSettings {\n externalVariantId: string;\n optionSources: Record<string, { collectionId: string; min: number | null; max: number | null }>;\n ranges: { min: number; max: number | null }[];\n}\n\ninterface BundleSettings {\n bundleSettings: { maxPerItem: number | null; isCustomizable: boolean };\n variantsSettings: Record<string, VariantSettings>;\n}\n\ntype BundleDataCollection = StorefrontBundleData['collections'][string];\n\ninterface BundleData extends Omit<StorefrontBundleData, 'collections'> {\n collections: Record<\n string,\n Omit<BundleDataCollection, 'products'> & {\n products: Record<string, BundleDataCollection['products'][number]>;\n }\n >;\n}\n\nexport class BundleSelectionValidator {\n #bundleSettings: BundleSettings | null;\n #items: BundleSelectionItems[];\n #bundleData: BundleData | null;\n\n constructor(selectionItems: BundleSelectionItems[], bundleData: StorefrontBundleData) {\n this.#bundleSettings = this.#formatBundleSettings(bundleData);\n this.#bundleData = this.#formatBundleData(bundleData);\n this.#items = selectionItems;\n }\n\n #formatBundleSettings(bundleData: StorefrontBundleData) {\n try {\n const bundleSettings = bundleData.bundle_settings;\n return {\n bundleSettings: {\n maxPerItem: bundleSettings.max_quantity_per_variant,\n isCustomizable: bundleSettings.is_customizable,\n },\n // null-proto seeds so external variant/option-source ids become real own keys, not prototype pollution\n variantsSettings: bundleSettings.variants.reduce<BundleSettings['variantsSettings']>((acc, variant) => {\n if (!variant.enabled) return acc;\n\n let ranges: VariantSettings['ranges'] = [{ min: variant.items_count, max: variant.items_count }];\n if (!variant.items_count) {\n ranges = variant.ranges.map(({ quantity_max, quantity_min }) => ({\n min: quantity_min,\n max: quantity_max,\n }));\n }\n\n acc[variant.external_variant_id] = {\n externalVariantId: variant.external_variant_id,\n optionSources: variant.option_sources.reduce<VariantSettings['optionSources']>((acc, optionSource) => {\n acc[optionSource.option_source_id] = {\n min: optionSource.quantity_min,\n max: optionSource.quantity_max,\n collectionId: optionSource.option_source_id,\n };\n return acc;\n }, Object.create(null)),\n ranges,\n };\n return acc;\n }, Object.create(null)),\n };\n } catch (error) {\n return null;\n }\n }\n\n #formatBundleData(bundleData: StorefrontBundleData) {\n try {\n // null-proto seeds so external collection/product ids become real own keys, not prototype pollution\n const collections = Object.values(bundleData.collections).reduce<BundleData['collections']>((acc, current) => {\n acc[current.id] = {\n ...current,\n products: current.products.reduce<BundleData['collections'][string]['products']>((productAcc, product) => {\n productAcc[product.id] = product;\n return productAcc;\n }, Object.create(null)),\n };\n\n return acc;\n }, Object.create(null));\n\n return { ...bundleData, collections };\n } catch (error) {\n return null;\n }\n }\n\n #isValueInRange(ranges: { min: number | null; max: number | null }[], value: number) {\n const matchedRanges = ranges.filter(({ min, max }) => {\n const minValue = min ?? value;\n const maxValue = max ?? value;\n\n return minValue <= value && value <= maxValue;\n });\n\n return !!matchedRanges.length;\n }\n\n #unique(ids: string[]) {\n return Array.from(new Set(ids));\n }\n\n // Own-property membership check. Guards against inherited keys (e.g. `__proto__`,\n // `constructor`, `toString`) resolving to truthy values on plain-object maps.\n #hasOwn(target: object, key: string) {\n return Object.prototype.hasOwnProperty.call(target, key);\n }\n\n isInitialDataValid() {\n if (!this.#bundleData) {\n throw 'Bundle data does not exist for the given product.';\n }\n\n if (!this.#bundleSettings) {\n throw 'Bundle settings do not exist for the given product.';\n }\n\n if (!Array.isArray(this.#items) || !this.#items.length) {\n throw 'No bundle selection items provided.';\n }\n\n return true;\n }\n\n isValidVariant(externalVariantId: string) {\n if (!this.#bundleSettings?.variantsSettings[externalVariantId]) {\n throw `The ${externalVariantId} bundle variant is invalid.`;\n }\n\n return true;\n }\n\n isSelectionInVariantRange(externalVariantId: string) {\n const total = this.#items.reduce((acc, current) => acc + current.quantity, 0);\n const ranges = this.#bundleSettings?.variantsSettings[externalVariantId].ranges || [];\n\n if (!this.#isValueInRange(ranges, total)) {\n throw 'The total number of products does not fall within the required variant range.';\n }\n\n return true;\n }\n\n areItemsInMaxPerItemBound() {\n const maxPerItem = this.#bundleSettings?.bundleSettings.maxPerItem || 0;\n const invalidProducts = this.#items.filter(({ quantity }) => quantity > maxPerItem);\n\n if (maxPerItem && invalidProducts.length) {\n const invalidIds = this.#unique(invalidProducts.map(({ externalProductId }) => externalProductId)).join(', ');\n throw `The selected products (${invalidIds}) exceed the maximum limit of ${maxPerItem} items per product.`;\n }\n\n return true;\n }\n\n areSelectedCollectionsValid(externalVariantId: string) {\n const variantSettings = this.#bundleSettings?.variantsSettings[externalVariantId];\n const optionSources = variantSettings?.optionSources;\n const invalidCollections = this.#items.filter(\n ({ collectionId }) => !optionSources || !this.#hasOwn(optionSources, collectionId)\n );\n if (invalidCollections.length) {\n const invalidIds = this.#unique(invalidCollections.map(({ collectionId }) => collectionId)).join(', ');\n throw `The collections (${invalidIds}) are no longer valid for the bundle variant (${externalVariantId}).`;\n }\n\n return true;\n }\n\n areItemsQuantitiesValidForTheCollection(externalVariantId: string) {\n // null-proto seed so a `__proto__` collectionId becomes a real own key, not prototype pollution\n const totalSelectedByCollection = this.#items.reduce<Record<string, number>>((acc, current) => {\n acc[current.collectionId] = current.quantity + (acc[current.collectionId] || 0);\n return acc;\n }, Object.create(null));\n\n const variantSettings = this.#bundleSettings?.variantsSettings[externalVariantId];\n const invalidItems = Object.values(variantSettings?.optionSources || {}).filter(collection => {\n const quantity = totalSelectedByCollection[collection.collectionId] || 0;\n return !this.#isValueInRange([collection], quantity);\n });\n\n if (!variantSettings || invalidItems.length) {\n const invalidIds = this.#unique(invalidItems.map(({ collectionId }) => collectionId)).join(', ');\n throw `The selection exceeds the limits for the collections (${invalidIds}).`;\n }\n\n return true;\n }\n\n areSelectedProductsValid(externalVariantId: string) {\n const bundleVariantCollections = this.#bundleSettings?.variantsSettings[externalVariantId]?.optionSources || {};\n // null-proto seed so a `__proto__` collectionId becomes a real own key, not prototype pollution\n const variantCollections = Object.values(bundleVariantCollections).reduce<BundleData['collections']>(\n (acc, optionSource) => {\n const collection = this.#bundleData?.collections[optionSource.collectionId];\n if (collection) {\n acc[optionSource.collectionId] = collection;\n }\n return acc;\n },\n Object.create(null)\n );\n\n if (!Object.values(variantCollections).length) {\n throw `No collections found for the bundle variant (${externalVariantId}).`;\n }\n\n const missingProducts = this.#items.filter(({ externalProductId, collectionId }) => {\n if (!this.#hasOwn(variantCollections, collectionId)) {\n return true;\n }\n return !this.#hasOwn(variantCollections[collectionId].products, externalProductId);\n });\n\n if (missingProducts.length) {\n const invalidIds = this.#unique(missingProducts.map(({ externalProductId }) => externalProductId)).join(', ');\n throw `The products (${invalidIds}) are no longer valid for the bundle product.`;\n }\n\n return true;\n }\n\n isBundleSelectionValid(externalVariantId: string) {\n this.isInitialDataValid();\n this.isValidVariant(externalVariantId);\n this.isSelectionInVariantRange(externalVariantId);\n this.areItemsInMaxPerItemBound();\n this.areSelectedCollectionsValid(externalVariantId);\n this.areItemsQuantitiesValidForTheCollection(externalVariantId);\n this.areSelectedProductsValid(externalVariantId);\n\n return true;\n }\n}\n"],"names":["enumType","union","int32","unionCase","voidType","struct","uint64","xdrString","UNBOUNDED_MAX_LENGTH","uint32","array","field","acc"],"mappings":"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"}
|
|
@@ -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.2.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.2.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.2.0",
|
|
18
18
|
...appName ? { "X-Recharge-Sdk-App-Name": appName } : {},
|
|
19
19
|
...appVersion ? { "X-Recharge-Sdk-App-Version": appVersion } : {}
|
|
20
20
|
};
|
|
@@ -137,6 +137,20 @@ async function skipSubscriptionCharge(session, id, date) {
|
|
|
137
137
|
);
|
|
138
138
|
return charge;
|
|
139
139
|
}
|
|
140
|
+
async function getSubscriptionPricingPreview(session, id, previewRequest = {}) {
|
|
141
|
+
if (id === void 0 || id === "") {
|
|
142
|
+
throw new Error("ID is required");
|
|
143
|
+
}
|
|
144
|
+
const { subscription } = await rechargeApiRequest(
|
|
145
|
+
"post",
|
|
146
|
+
`/subscriptions/${encodePathSegment(id)}/pricing_preview`,
|
|
147
|
+
{
|
|
148
|
+
data: previewRequest
|
|
149
|
+
},
|
|
150
|
+
getInternalSession(session, "getSubscriptionPricingPreview")
|
|
151
|
+
);
|
|
152
|
+
return subscription;
|
|
153
|
+
}
|
|
140
154
|
async function skipGiftSubscriptionCharge(session, subscriptionIds, recipientAddress) {
|
|
141
155
|
if (subscriptionIds === void 0 || subscriptionIds.length === 0) {
|
|
142
156
|
throw new Error("Subscription IDs are required");
|
|
@@ -249,5 +263,5 @@ async function deleteSubscriptions(session, addressId, deleteRequestBulk, query)
|
|
|
249
263
|
return void 0;
|
|
250
264
|
}
|
|
251
265
|
|
|
252
|
-
export { activateSubscription, cancelSubscription, createSubscription, createSubscriptions, deleteSubscriptions, getSubscription, listSubscriptionAddons, listSubscriptions, skipGiftSubscriptionCharge, skipSubscriptionCharge, updateSubscription, updateSubscriptionAddress, updateSubscriptionChargeDate, updateSubscriptions };
|
|
266
|
+
export { activateSubscription, cancelSubscription, createSubscription, createSubscriptions, deleteSubscriptions, getSubscription, getSubscriptionPricingPreview, listSubscriptionAddons, listSubscriptions, skipGiftSubscriptionCharge, skipSubscriptionCharge, updateSubscription, updateSubscriptionAddress, updateSubscriptionChargeDate, updateSubscriptions };
|
|
253
267
|
//# sourceMappingURL=subscription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sources":["../../../src/api/subscription.ts"],"sourcesContent":["import { getInternalSession, rechargeApiRequest } from '../utils/request';\nimport { encodePathSegment } from '../utils/url';\nimport {\n CancelSubscriptionRequest,\n CreateSubscriptionRequest,\n Subscription,\n SubscriptionsResponse,\n SubscriptionListParams,\n UpdateSubscriptionRequest,\n UpdateSubscriptionParams,\n GetSubscriptionOptions,\n BasicSubscriptionParams,\n Subscription_2021_01,\n UpdateSubscriptionsRequest,\n UpdateSubscriptionsParams,\n Session,\n ChargeResponse,\n CreateRecipientAddress,\n Onetime,\n IsoDateString,\n CreateSubscriptionsParams,\n CreateSubscriptionsRequest,\n DeleteSubscriptionsParams,\n DeleteSubscriptionsRequest,\n UpdateSubscriptionChargeDateParams,\n SubscriptionListAddonsParams,\n} from '../types';\nimport {\n bulkSubscriptionCreateMapper,\n bulkSubscriptionUpdateMapper,\n subscriptionMapperOldToNew,\n} from '../mappers/subscription';\n\nexport async function getSubscription(\n session: Session,\n id: string | number,\n options?: GetSubscriptionOptions\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'get',\n `/subscriptions`,\n {\n id,\n query: { include: options?.include },\n },\n getInternalSession(session, 'getSubscription')\n );\n return subscription;\n}\n\nexport function listSubscriptions(session: Session, query?: SubscriptionListParams): Promise<SubscriptionsResponse> {\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions`,\n { query },\n getInternalSession(session, 'listSubscriptions')\n );\n}\n\n/**\n * @internal\n * List add-on subscriptions for the given parent subscription.\n */\nexport function listSubscriptionAddons(\n session: Session,\n id: string | number,\n query?: SubscriptionListAddonsParams\n): Promise<SubscriptionsResponse> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions/${encodePathSegment(id)}/addons`,\n { query },\n getInternalSession(session, 'listSubscriptionAddons')\n );\n}\n\n/**\n * When creating a subscription via API, order_interval_frequency and charge_interval_frequency values do not necessarily\n * need to match the values set in the respective Plans. The product, however, does need to have at least one Plan in order\n * to be added to a subscription.\n */\nexport async function createSubscription(\n session: Session,\n createRequest: CreateSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions`,\n {\n data: createRequest,\n query,\n },\n getInternalSession(session, 'createSubscription')\n );\n return subscription;\n}\n\n/**\n * Updating parameters like frequency, charge_interval_frequency, order_interval_frequency, order_interval_unit will cause our algorithm to automatically recalculate the next charge date (next_charge_scheduled_at).\n * WARNING: This update will remove skipped and manually changed charges.\n * If you want to change the next charge date (next_charge_scheduled_at) we recommend you to update these parameters first.\n * When updating order_interval_unit OR order_interval_frequency OR charge_interval_frequency all three parameters are required.\n */\nexport async function updateSubscription(\n session: Session,\n id: string | number,\n updateRequest: UpdateSubscriptionRequest,\n query?: UpdateSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'put',\n `/subscriptions`,\n {\n id,\n data: updateRequest,\n query,\n },\n getInternalSession(session, 'updateSubscription')\n );\n return subscription;\n}\n\n/**\n * If there are two active subscriptions with the same address_id, and you update their\n * next_charge_date parameters to match, their charges will get merged into a new charge\n * with a new id\n */\nexport async function updateSubscriptionChargeDate(\n session: Session,\n id: string | number,\n date: IsoDateString,\n query?: UpdateSubscriptionChargeDateParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/set_next_charge_date`,\n {\n data: { date },\n query,\n },\n getInternalSession(session, 'updateSubscriptionChargeDate')\n );\n return subscription;\n}\n\nexport async function updateSubscriptionAddress(\n session: Session,\n id: string | number,\n address_id: string | number\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/change_address`,\n {\n data: { address_id },\n },\n getInternalSession(session, 'updateSubscriptionAddress')\n );\n return subscription;\n}\n\n/**\n * An involuntary subscription cancelled due to max retries reached will trigger the\n * charge/max_retries_reached webhook. If this leads to the subscription being cancelled,\n * the subscription/cancelled webhook will trigger.\n */\nexport async function cancelSubscription(\n session: Session,\n id: string | number,\n cancelRequest: CancelSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/cancel`,\n {\n data: cancelRequest,\n query,\n },\n getInternalSession(session, 'cancelSubscription')\n );\n return subscription;\n}\n\n/**\n * When activating subscription, following attributes will be set to null: cancelled_at, cancellation_reason\n * and cancellation_reason_comments.\n */\nexport async function activateSubscription(\n session: Session,\n id: string | number,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/activate`,\n { query },\n getInternalSession(session, 'activateSubscription')\n );\n return subscription;\n}\n\n/* Skip charge associated with a subscription. */\nexport async function skipSubscriptionCharge(session: Session, id: number | string, date: IsoDateString) {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { charge } = await rechargeApiRequest<ChargeResponse>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/charges/skip`,\n {\n data: {\n date,\n subscription_id: `${id}`,\n },\n },\n getInternalSession(session, 'skipSubscriptionCharge')\n );\n return charge;\n}\n\n/**\n * Gift a subscription to another person. This creates onetime products for the recipient and skips that subscription for the customer.\n * When the gifted onetime ships the recipient receives and email notification.\n */\nexport async function skipGiftSubscriptionCharge(\n session: Session,\n subscriptionIds: Array<number | string>,\n recipientAddress: CreateRecipientAddress\n) {\n if (subscriptionIds === undefined || subscriptionIds.length === 0) {\n throw new Error('Subscription IDs are required');\n }\n const { onetimes } = await rechargeApiRequest<{ onetimes: Onetime[] }>(\n 'post',\n '/purchase_items/skip_gift',\n {\n data: {\n purchase_item_ids: subscriptionIds.map(Number),\n recipient_address: recipientAddress,\n },\n },\n getInternalSession(session, 'skipGiftSubscriptionCharge')\n );\n\n return onetimes;\n}\n\n/**\n * Bulk create new subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function createSubscriptions(\n session: Session,\n createRequestBulk: CreateSubscriptionsRequest[],\n query?: CreateSubscriptionsParams\n): Promise<Subscription[]> {\n // validate size\n const length = createRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // validate addressId\n const addressId = createRequestBulk[0].address_id;\n if (!createRequestBulk.every(createRequest => createRequest.address_id === addressId)) {\n throw new Error('All subscriptions must have the same address_id.');\n }\n const requestData = createRequestBulk.map(createRequest => bulkSubscriptionCreateMapper(customerId, createRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'post',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'createSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * Bulk update subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n * Same rules apply as a single subscription update\n */\nexport async function updateSubscriptions(\n session: Session,\n addressId: string | number,\n updateRequestBulk: UpdateSubscriptionsRequest[],\n query?: UpdateSubscriptionsParams\n): Promise<Subscription[]> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = updateRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n const forceUpdate = !!query?.force_update;\n const requestData = updateRequestBulk.map(updateRequest => bulkSubscriptionUpdateMapper(forceUpdate, updateRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'put',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'updateSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * @internal\n * Bulk delete subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function deleteSubscriptions(\n session: Session,\n addressId: string | number,\n deleteRequestBulk: DeleteSubscriptionsRequest[],\n query?: DeleteSubscriptionsParams\n): Promise<void> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = deleteRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'delete',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: deleteRequestBulk, send_email: !!query?.send_email, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'deleteSubscriptions')\n );\n return undefined;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription.js","sources":["../../../src/api/subscription.ts"],"sourcesContent":["import { getInternalSession, rechargeApiRequest } from '../utils/request';\nimport { encodePathSegment } from '../utils/url';\nimport {\n CancelSubscriptionRequest,\n CreateSubscriptionRequest,\n Subscription,\n SubscriptionsResponse,\n SubscriptionListParams,\n UpdateSubscriptionRequest,\n UpdateSubscriptionParams,\n GetSubscriptionOptions,\n BasicSubscriptionParams,\n Subscription_2021_01,\n UpdateSubscriptionsRequest,\n UpdateSubscriptionsParams,\n Session,\n ChargeResponse,\n CreateRecipientAddress,\n Onetime,\n IsoDateString,\n CreateSubscriptionsParams,\n CreateSubscriptionsRequest,\n DeleteSubscriptionsParams,\n DeleteSubscriptionsRequest,\n UpdateSubscriptionChargeDateParams,\n SubscriptionListAddonsParams,\n SubscriptionPricingPreview,\n SubscriptionPricingPreviewRequest,\n} from '../types';\nimport {\n bulkSubscriptionCreateMapper,\n bulkSubscriptionUpdateMapper,\n subscriptionMapperOldToNew,\n} from '../mappers/subscription';\n\nexport async function getSubscription(\n session: Session,\n id: string | number,\n options?: GetSubscriptionOptions\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'get',\n `/subscriptions`,\n {\n id,\n query: { include: options?.include },\n },\n getInternalSession(session, 'getSubscription')\n );\n return subscription;\n}\n\nexport function listSubscriptions(session: Session, query?: SubscriptionListParams): Promise<SubscriptionsResponse> {\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions`,\n { query },\n getInternalSession(session, 'listSubscriptions')\n );\n}\n\n/**\n * @internal\n * List add-on subscriptions for the given parent subscription.\n */\nexport function listSubscriptionAddons(\n session: Session,\n id: string | number,\n query?: SubscriptionListAddonsParams\n): Promise<SubscriptionsResponse> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n return rechargeApiRequest<SubscriptionsResponse>(\n 'get',\n `/subscriptions/${encodePathSegment(id)}/addons`,\n { query },\n getInternalSession(session, 'listSubscriptionAddons')\n );\n}\n\n/**\n * When creating a subscription via API, order_interval_frequency and charge_interval_frequency values do not necessarily\n * need to match the values set in the respective Plans. The product, however, does need to have at least one Plan in order\n * to be added to a subscription.\n */\nexport async function createSubscription(\n session: Session,\n createRequest: CreateSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions`,\n {\n data: createRequest,\n query,\n },\n getInternalSession(session, 'createSubscription')\n );\n return subscription;\n}\n\n/**\n * Updating parameters like frequency, charge_interval_frequency, order_interval_frequency, order_interval_unit will cause our algorithm to automatically recalculate the next charge date (next_charge_scheduled_at).\n * WARNING: This update will remove skipped and manually changed charges.\n * If you want to change the next charge date (next_charge_scheduled_at) we recommend you to update these parameters first.\n * When updating order_interval_unit OR order_interval_frequency OR charge_interval_frequency all three parameters are required.\n */\nexport async function updateSubscription(\n session: Session,\n id: string | number,\n updateRequest: UpdateSubscriptionRequest,\n query?: UpdateSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'put',\n `/subscriptions`,\n {\n id,\n data: updateRequest,\n query,\n },\n getInternalSession(session, 'updateSubscription')\n );\n return subscription;\n}\n\n/**\n * If there are two active subscriptions with the same address_id, and you update their\n * next_charge_date parameters to match, their charges will get merged into a new charge\n * with a new id\n */\nexport async function updateSubscriptionChargeDate(\n session: Session,\n id: string | number,\n date: IsoDateString,\n query?: UpdateSubscriptionChargeDateParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/set_next_charge_date`,\n {\n data: { date },\n query,\n },\n getInternalSession(session, 'updateSubscriptionChargeDate')\n );\n return subscription;\n}\n\nexport async function updateSubscriptionAddress(\n session: Session,\n id: string | number,\n address_id: string | number\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/change_address`,\n {\n data: { address_id },\n },\n getInternalSession(session, 'updateSubscriptionAddress')\n );\n return subscription;\n}\n\n/**\n * An involuntary subscription cancelled due to max retries reached will trigger the\n * charge/max_retries_reached webhook. If this leads to the subscription being cancelled,\n * the subscription/cancelled webhook will trigger.\n */\nexport async function cancelSubscription(\n session: Session,\n id: string | number,\n cancelRequest: CancelSubscriptionRequest,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/cancel`,\n {\n data: cancelRequest,\n query,\n },\n getInternalSession(session, 'cancelSubscription')\n );\n return subscription;\n}\n\n/**\n * When activating subscription, following attributes will be set to null: cancelled_at, cancellation_reason\n * and cancellation_reason_comments.\n */\nexport async function activateSubscription(\n session: Session,\n id: string | number,\n query?: BasicSubscriptionParams\n): Promise<Subscription> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: Subscription }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/activate`,\n { query },\n getInternalSession(session, 'activateSubscription')\n );\n return subscription;\n}\n\n/* Skip charge associated with a subscription. */\nexport async function skipSubscriptionCharge(session: Session, id: number | string, date: IsoDateString) {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { charge } = await rechargeApiRequest<ChargeResponse>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/charges/skip`,\n {\n data: {\n date,\n subscription_id: `${id}`,\n },\n },\n getInternalSession(session, 'skipSubscriptionCharge')\n );\n return charge;\n}\n\n/**\n * @internal\n * Price a proposed variant and/or plan swap for a subscription without persisting it.\n *\n * Runs the same pricing chain the update would run, so the returned `proposed_unit_price` is what\n * the customer would actually be charged -- including dynamic pricing tier resolution and any\n * pricing progression reset the swap would cause. Omitted request fields keep the subscription's\n * current value; quantity and frequency are not accepted because they cannot move the per-unit price\n * between dynamic pricing tiers.\n *\n * Pricing failures are reported in the returned `errors` map rather than thrown.\n */\nexport async function getSubscriptionPricingPreview(\n session: Session,\n id: string | number,\n previewRequest: SubscriptionPricingPreviewRequest = {}\n): Promise<SubscriptionPricingPreview> {\n if (id === undefined || id === '') {\n throw new Error('ID is required');\n }\n const { subscription } = await rechargeApiRequest<{ subscription: SubscriptionPricingPreview }>(\n 'post',\n `/subscriptions/${encodePathSegment(id)}/pricing_preview`,\n {\n data: previewRequest,\n },\n getInternalSession(session, 'getSubscriptionPricingPreview')\n );\n return subscription;\n}\n\n/**\n * Gift a subscription to another person. This creates onetime products for the recipient and skips that subscription for the customer.\n * When the gifted onetime ships the recipient receives and email notification.\n */\nexport async function skipGiftSubscriptionCharge(\n session: Session,\n subscriptionIds: Array<number | string>,\n recipientAddress: CreateRecipientAddress\n) {\n if (subscriptionIds === undefined || subscriptionIds.length === 0) {\n throw new Error('Subscription IDs are required');\n }\n const { onetimes } = await rechargeApiRequest<{ onetimes: Onetime[] }>(\n 'post',\n '/purchase_items/skip_gift',\n {\n data: {\n purchase_item_ids: subscriptionIds.map(Number),\n recipient_address: recipientAddress,\n },\n },\n getInternalSession(session, 'skipGiftSubscriptionCharge')\n );\n\n return onetimes;\n}\n\n/**\n * Bulk create new subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function createSubscriptions(\n session: Session,\n createRequestBulk: CreateSubscriptionsRequest[],\n query?: CreateSubscriptionsParams\n): Promise<Subscription[]> {\n // validate size\n const length = createRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // validate addressId\n const addressId = createRequestBulk[0].address_id;\n if (!createRequestBulk.every(createRequest => createRequest.address_id === addressId)) {\n throw new Error('All subscriptions must have the same address_id.');\n }\n const requestData = createRequestBulk.map(createRequest => bulkSubscriptionCreateMapper(customerId, createRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'post',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'createSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * Bulk update subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n * Same rules apply as a single subscription update\n */\nexport async function updateSubscriptions(\n session: Session,\n addressId: string | number,\n updateRequestBulk: UpdateSubscriptionsRequest[],\n query?: UpdateSubscriptionsParams\n): Promise<Subscription[]> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = updateRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n const forceUpdate = !!query?.force_update;\n const requestData = updateRequestBulk.map(updateRequest => bulkSubscriptionUpdateMapper(forceUpdate, updateRequest));\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n const { subscriptions } = await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'put',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: requestData, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'updateSubscriptions')\n );\n return subscriptions.map(subscriptionMapperOldToNew);\n}\n\n/**\n * @internal\n * Bulk delete subscriptions.\n * Must all be for the same address.\n * There is a limit of 20 subscriptions per request.\n */\nexport async function deleteSubscriptions(\n session: Session,\n addressId: string | number,\n deleteRequestBulk: DeleteSubscriptionsRequest[],\n query?: DeleteSubscriptionsParams\n): Promise<void> {\n if (addressId === undefined || addressId === '') {\n throw new Error('Address ID is required');\n }\n // validate size\n const length = deleteRequestBulk.length;\n if (length < 1 || length > 21) {\n throw new Error('Number of subscriptions must be between 1 and 20.');\n }\n // validate customerId\n const { customerId } = session;\n if (!customerId) {\n throw new Error('No customerId in session.');\n }\n // setup query params\n let localQuery: { allow_onetimes?: boolean } | undefined = undefined;\n if (query?.allow_onetimes !== undefined) {\n localQuery = { allow_onetimes: query.allow_onetimes };\n }\n await rechargeApiRequest<{ subscriptions: Subscription_2021_01[] }>(\n 'delete',\n `/addresses/${encodePathSegment(addressId)}/subscriptions-bulk`,\n {\n data: { subscriptions: deleteRequestBulk, send_email: !!query?.send_email, commit_update: !!query?.commit },\n headers: {\n 'X-Recharge-Version': '2021-01',\n },\n query: localQuery,\n },\n getInternalSession(session, 'deleteSubscriptions')\n );\n return undefined;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -18,7 +18,7 @@ export { createPaymentMethod, getPaymentMethod, initFrictionlessPaymentV1, listP
|
|
|
18
18
|
export { getPlan, listPlans } from './api/plan.js';
|
|
19
19
|
export { productSearch } from './api/product.js';
|
|
20
20
|
export { getShippingCountries, getStoreSettings } from './api/store.js';
|
|
21
|
-
export { activateSubscription, cancelSubscription, createSubscription, createSubscriptions, deleteSubscriptions, getSubscription, listSubscriptionAddons, listSubscriptions, skipGiftSubscriptionCharge, skipSubscriptionCharge, updateSubscription, updateSubscriptionAddress, updateSubscriptionChargeDate, updateSubscriptions } from './api/subscription.js';
|
|
21
|
+
export { activateSubscription, cancelSubscription, createSubscription, createSubscriptions, deleteSubscriptions, getSubscription, getSubscriptionPricingPreview, listSubscriptionAddons, listSubscriptions, skipGiftSubscriptionCharge, skipSubscriptionCharge, updateSubscription, updateSubscriptionAddress, updateSubscriptionChargeDate, updateSubscriptions } from './api/subscription.js';
|
|
22
22
|
export { getTieredDiscount, getTieredDiscountOffers, listTieredDiscounts } from './api/tieredDiscount.js';
|
|
23
23
|
export { api, initRecharge } from './utils/init.js';
|
|
24
24
|
//# sourceMappingURL=index.js.map
|