@fluid-app/portal-sdk 0.1.95 → 0.1.96
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/{ContactsScreen-hJYLdIT9.mjs → ContactsScreen-CjpjEyvy.mjs} +4 -4
- package/dist/{ContactsScreen-hJYLdIT9.mjs.map → ContactsScreen-CjpjEyvy.mjs.map} +1 -1
- package/dist/{ContactsScreen-DuTrcBkd.cjs → ContactsScreen-DEyVCqot.cjs} +5 -5
- package/dist/{ContactsScreen-BELhEJNe.cjs → ContactsScreen-VUKuxFcj.cjs} +4 -4
- package/dist/{ContactsScreen-BELhEJNe.cjs.map → ContactsScreen-VUKuxFcj.cjs.map} +1 -1
- package/dist/{MessagingScreen-B9V9dTBn.mjs → MessagingScreen-BDuOpf7k.mjs} +3 -3
- package/dist/{MessagingScreen-2a1oJ9yj.cjs → MessagingScreen-C2QId8w5.cjs} +3 -3
- package/dist/{MessagingScreen-CcPPK1J6.mjs → MessagingScreen-Cg1qPb5E.mjs} +3 -3
- package/dist/{MessagingScreen-CcPPK1J6.mjs.map → MessagingScreen-Cg1qPb5E.mjs.map} +1 -1
- package/dist/{MessagingScreen-dJZWI4fa.cjs → MessagingScreen-UyuRUgcd.cjs} +3 -3
- package/dist/{MessagingScreen-dJZWI4fa.cjs.map → MessagingScreen-UyuRUgcd.cjs.map} +1 -1
- package/dist/{OrdersScreen-k0x7wLRV.cjs → OrdersScreen-BDeDhRmY.cjs} +4 -4
- package/dist/{OrdersScreen-k0x7wLRV.cjs.map → OrdersScreen-BDeDhRmY.cjs.map} +1 -1
- package/dist/{OrdersScreen-hzKwBSYF.mjs → OrdersScreen-Svoa_Tgo.mjs} +4 -4
- package/dist/{OrdersScreen-hzKwBSYF.mjs.map → OrdersScreen-Svoa_Tgo.mjs.map} +1 -1
- package/dist/{OrdersScreen-DRp79-k9.cjs → OrdersScreen-kg_SQsyH.cjs} +2 -2
- package/dist/{ProductsScreen-BxNldFw6.cjs → ProductsScreen-CcXrvhEt.cjs} +3 -3
- package/dist/{ProductsScreen-BxNldFw6.cjs.map → ProductsScreen-CcXrvhEt.cjs.map} +1 -1
- package/dist/{ProductsScreen-hdAragYJ.cjs → ProductsScreen-DhPXnjaT.cjs} +5 -5
- package/dist/{ProductsScreen-B54KA40V.mjs → ProductsScreen-qNXEgjC9.mjs} +3 -3
- package/dist/{ProductsScreen-B54KA40V.mjs.map → ProductsScreen-qNXEgjC9.mjs.map} +1 -1
- package/dist/{ProductsScreen-BLHW3MHq.mjs → ProductsScreen-zQJ1iQRR.mjs} +5 -5
- package/dist/{ProfileScreen-DRLPIEQT.cjs → ProfileScreen-2_nSQ-oq.cjs} +2 -2
- package/dist/{ProfileScreen-DRLPIEQT.cjs.map → ProfileScreen-2_nSQ-oq.cjs.map} +1 -1
- package/dist/{ProfileScreen-DtDAJ45D.cjs → ProfileScreen-CF8Acn81.cjs} +1 -1
- package/dist/{ProfileScreen-Btqo-rsk.mjs → ProfileScreen-DMpBY-TD.mjs} +2 -2
- package/dist/{ProfileScreen-Btqo-rsk.mjs.map → ProfileScreen-DMpBY-TD.mjs.map} +1 -1
- package/dist/{ShareablesScreen-EJidIq4N.cjs → ShareablesScreen-DggEBWBJ.cjs} +5 -5
- package/dist/{ShareablesScreen-DrAZ49Iv.cjs → ShareablesScreen-DjUvqq49.cjs} +3 -3
- package/dist/{ShareablesScreen-DrAZ49Iv.cjs.map → ShareablesScreen-DjUvqq49.cjs.map} +1 -1
- package/dist/{ShareablesScreen-mJR5_fnx.mjs → ShareablesScreen-DlOwqlbr.mjs} +5 -5
- package/dist/{ShareablesScreen-UBSyLEbL.mjs → ShareablesScreen-q3pSmRdU.mjs} +3 -3
- package/dist/{ShareablesScreen-UBSyLEbL.mjs.map → ShareablesScreen-q3pSmRdU.mjs.map} +1 -1
- package/dist/{ShopScreen-BUri9nlR.cjs → ShopScreen-BMidW8lK.cjs} +2 -2
- package/dist/{ShopScreen-BUri9nlR.cjs.map → ShopScreen-BMidW8lK.cjs.map} +1 -1
- package/dist/{ShopScreen-Dr44ppZ7.mjs → ShopScreen-oOHel7N7.mjs} +2 -2
- package/dist/{ShopScreen-Dr44ppZ7.mjs.map → ShopScreen-oOHel7N7.mjs.map} +1 -1
- package/dist/{ShopScreen-B-9Qito4.cjs → ShopScreen-qkJC3t_U.cjs} +1 -1
- package/dist/{SubscriptionsScreen-BMMKqvmT.cjs → SubscriptionsScreen-DGLo_agH.cjs} +39 -114
- package/dist/SubscriptionsScreen-DGLo_agH.cjs.map +1 -0
- package/dist/{SubscriptionsScreen-DymuNO2u.mjs → SubscriptionsScreen-DGfzLW1d.mjs} +40 -115
- package/dist/SubscriptionsScreen-DGfzLW1d.mjs.map +1 -0
- package/dist/{SubscriptionsScreen-Bi0KJRf9.cjs → SubscriptionsScreen-DPgOsgwI.cjs} +3 -3
- package/dist/{dist-DkYXiQQ1.cjs → dist-Ck9MGRmE.cjs} +2 -2
- package/dist/{dist-DkYXiQQ1.cjs.map → dist-Ck9MGRmE.cjs.map} +1 -1
- package/dist/{dist-BbS_7TvS.cjs → dist-DRVtlgQ1.cjs} +1 -1
- package/dist/{dist-BbS_7TvS.cjs.map → dist-DRVtlgQ1.cjs.map} +1 -1
- package/dist/{dist-CMGXkSgZ.mjs → dist-NMbUD0qE.mjs} +1 -1
- package/dist/{dist-CMGXkSgZ.mjs.map → dist-NMbUD0qE.mjs.map} +1 -1
- package/dist/{dist-B1HwSrso.mjs → dist-oYNtEpKP.mjs} +2 -2
- package/dist/{dist-B1HwSrso.mjs.map → dist-oYNtEpKP.mjs.map} +1 -1
- package/dist/{es-1KItbbYg.mjs → es-C77ihvEl.mjs} +1 -1
- package/dist/{es-1KItbbYg.mjs.map → es-C77ihvEl.mjs.map} +1 -1
- package/dist/{es-BSkb3AZk.cjs → es-DlWO6buB.cjs} +1 -1
- package/dist/{es-BSkb3AZk.cjs.map → es-DlWO6buB.cjs.map} +1 -1
- package/dist/index.cjs +31 -31
- package/dist/index.mjs +31 -31
- package/dist/{order-detail-9-MS70Zm.cjs → order-detail-B5KmsBKU.cjs} +1 -1
- package/dist/{order-detail-9-MS70Zm.cjs.map → order-detail-B5KmsBKU.cjs.map} +1 -1
- package/dist/{order-detail-CYkWN7-L.mjs → order-detail-BzbdcFnt.mjs} +1 -1
- package/dist/{order-detail-CYkWN7-L.mjs.map → order-detail-BzbdcFnt.mjs.map} +1 -1
- package/dist/{src-C7RYt83r.mjs → src-iiLozCqU.mjs} +4 -4
- package/dist/{src-C7RYt83r.mjs.map → src-iiLozCqU.mjs.map} +1 -1
- package/dist/{src-DdIO0lIo.cjs → src-vyacfB0K.cjs} +4 -4
- package/dist/{src-DdIO0lIo.cjs.map → src-vyacfB0K.cjs.map} +1 -1
- package/dist/{use-account-clients-CFfdmi36.cjs → use-account-clients-BrlAG2os.cjs} +108 -6
- package/dist/use-account-clients-BrlAG2os.cjs.map +1 -0
- package/dist/{use-account-clients-0kFq_8i7.mjs → use-account-clients-vOToQZNB.mjs} +107 -5
- package/dist/use-account-clients-vOToQZNB.mjs.map +1 -0
- package/dist/{use-customer-account-Be70QBp3.mjs → use-customer-account-Bufu7Mae.mjs} +2 -2
- package/dist/{use-customer-account-Be70QBp3.mjs.map → use-customer-account-Bufu7Mae.mjs.map} +1 -1
- package/dist/{use-customer-account-BH-hwjbg.cjs → use-customer-account-CeNalSBy.cjs} +2 -2
- package/dist/{use-customer-account-BH-hwjbg.cjs.map → use-customer-account-CeNalSBy.cjs.map} +1 -1
- package/package.json +8 -8
- package/dist/SubscriptionsScreen-BMMKqvmT.cjs.map +0 -1
- package/dist/SubscriptionsScreen-DymuNO2u.mjs.map +0 -1
- package/dist/use-account-clients-0kFq_8i7.mjs.map +0 -1
- package/dist/use-account-clients-CFfdmi36.cjs.map +0 -1
- /package/dist/{src-B7j_mfeS.mjs → src-BakNjVTk.mjs} +0 -0
- /package/dist/{src-Bp-dRR29.cjs → src-C_kOrGdZ.cjs} +0 -0
|
@@ -74,6 +74,108 @@ async function fetchCustomerOrders(client, params) {
|
|
|
74
74
|
return client.get("/v202506/orders", input);
|
|
75
75
|
}
|
|
76
76
|
//#endregion
|
|
77
|
+
//#region ../../subscriptions/api-client/src/namespaces/subscriptions.ts
|
|
78
|
+
/**
|
|
79
|
+
* Fetch a paginated list of customer subscriptions.
|
|
80
|
+
* Endpoint: GET /subscriptions
|
|
81
|
+
*/
|
|
82
|
+
async function fetchCustomerSubscriptions(client, params) {
|
|
83
|
+
const input = {
|
|
84
|
+
customer_id: params.customerId.toString(),
|
|
85
|
+
page: (params.page ?? 1).toString(),
|
|
86
|
+
per_page: (params.perPage ?? 10).toString()
|
|
87
|
+
};
|
|
88
|
+
if (params.status != null) input.status = params.status;
|
|
89
|
+
if (params.search != null) input.search = params.search;
|
|
90
|
+
if (params.sortBy != null) input.sort_by = params.sortBy;
|
|
91
|
+
if (params.sortDirection != null) input.sort_direction = params.sortDirection;
|
|
92
|
+
return client.get("/subscriptions", input);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Fetch a single subscription by token.
|
|
96
|
+
* Endpoint: GET /subscriptions/{token}
|
|
97
|
+
*/
|
|
98
|
+
async function fetchSubscription(client, subscriptionToken) {
|
|
99
|
+
return client.get(`/subscriptions/${subscriptionToken}`);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Pause a subscription.
|
|
103
|
+
* Endpoint: POST /subscriptions/{token}/pause
|
|
104
|
+
*/
|
|
105
|
+
async function pauseSubscription(client, subscriptionToken, params) {
|
|
106
|
+
const queryParams = { customer_id: params.customerId.toString() };
|
|
107
|
+
if (params.nextBillDate != null) queryParams.next_bill_date = params.nextBillDate;
|
|
108
|
+
if (params.numberOfOrders != null) queryParams.number_of_orders = params.numberOfOrders.toString();
|
|
109
|
+
const query = new URLSearchParams(queryParams).toString();
|
|
110
|
+
return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resume a paused subscription.
|
|
114
|
+
* Endpoint: POST /subscriptions/{token}/resume
|
|
115
|
+
*/
|
|
116
|
+
async function resumeSubscription(client, subscriptionToken, params) {
|
|
117
|
+
const query = new URLSearchParams({
|
|
118
|
+
customer_id: params.customerId.toString(),
|
|
119
|
+
next_bill_date: params.nextBillDate
|
|
120
|
+
}).toString();
|
|
121
|
+
return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Skip the next billing cycle.
|
|
125
|
+
* Endpoint: POST /subscriptions/{token}/skip_next_billing
|
|
126
|
+
*/
|
|
127
|
+
async function skipSubscription(client, subscriptionToken, params) {
|
|
128
|
+
const query = new URLSearchParams({
|
|
129
|
+
customer_id: params.customerId.toString(),
|
|
130
|
+
next_bill_date: params.nextBillDate
|
|
131
|
+
}).toString();
|
|
132
|
+
return client.post(`/subscriptions/${subscriptionToken}/skip_next_billing?${query}`);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Cancel a subscription.
|
|
136
|
+
* Endpoint: POST /subscriptions/{token}/cancel
|
|
137
|
+
*/
|
|
138
|
+
async function cancelSubscription(client, subscriptionToken, customerId) {
|
|
139
|
+
const query = new URLSearchParams({ customer_id: customerId.toString() }).toString();
|
|
140
|
+
return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Reactivate a cancelled subscription.
|
|
144
|
+
* Endpoint: POST /subscriptions/{token}/reactivate
|
|
145
|
+
*/
|
|
146
|
+
async function reactivateSubscription(client, subscriptionToken, params) {
|
|
147
|
+
const body = params.process_immediately === true ? { process_immediately: true } : params.next_bill_date ? { next_bill_date: params.next_bill_date } : {};
|
|
148
|
+
return client.post(`/subscriptions/${subscriptionToken}/reactivate`, Object.keys(body).length > 0 ? body : void 0);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Update subscription info (plan, variant, address, payment method, quantity).
|
|
152
|
+
* Endpoint: PUT /subscriptions/{token}
|
|
153
|
+
*/
|
|
154
|
+
async function updateSubscriptionInfo(client, subscriptionToken, body) {
|
|
155
|
+
return client.put(`/subscriptions/${subscriptionToken}`, { subscription: body });
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region ../../subscriptions/api-client/src/adapter.ts
|
|
159
|
+
/**
|
|
160
|
+
* Creates a SubscriptionsApi-compatible adapter from a FetchClient.
|
|
161
|
+
*
|
|
162
|
+
* This bridges the concrete API client to the abstract SubscriptionsApi
|
|
163
|
+
* interface defined in @fluid-app/subscriptions-core, closing over the
|
|
164
|
+
* FetchClient so consumers don't need to pass it per-call.
|
|
165
|
+
*/
|
|
166
|
+
function createSubscriptionsApiAdapter(client) {
|
|
167
|
+
return {
|
|
168
|
+
fetchCustomerSubscriptions: (params) => fetchCustomerSubscriptions(client, params),
|
|
169
|
+
fetchSubscription: (token) => fetchSubscription(client, token),
|
|
170
|
+
pauseSubscription: (token, params) => pauseSubscription(client, token, params),
|
|
171
|
+
resumeSubscription: (token, params) => resumeSubscription(client, token, params),
|
|
172
|
+
skipSubscription: (token, params) => skipSubscription(client, token, params),
|
|
173
|
+
cancelSubscription: (token, customerId) => cancelSubscription(client, token, customerId),
|
|
174
|
+
reactivateSubscription: (token, params) => reactivateSubscription(client, token, params),
|
|
175
|
+
updateSubscriptionInfo: (token, body) => updateSubscriptionInfo(client, token, body)
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
//#endregion
|
|
77
179
|
//#region src/account/use-account-clients.ts
|
|
78
180
|
/** API version prefix for versioned endpoints (e.g. points ledger) */
|
|
79
181
|
const API_VERSION = "/v202506";
|
|
@@ -107,14 +209,14 @@ function useOrdersApi() {
|
|
|
107
209
|
token
|
|
108
210
|
]);
|
|
109
211
|
}
|
|
110
|
-
function
|
|
212
|
+
function useSubscriptionsApiClient() {
|
|
111
213
|
const { config } = require_FluidProvider.useFluidContext();
|
|
112
214
|
const { token } = useFluidAuth();
|
|
113
|
-
return (0, react.useMemo)(() => require_FluidProvider.createFetchClient({
|
|
215
|
+
return (0, react.useMemo)(() => createSubscriptionsApiAdapter(require_FluidProvider.createFetchClient({
|
|
114
216
|
baseUrl: withApiPrefix(config.baseUrl),
|
|
115
217
|
getAuthToken: () => token,
|
|
116
218
|
onAuthError: config.onAuthError
|
|
117
|
-
}), [
|
|
219
|
+
})), [
|
|
118
220
|
config.baseUrl,
|
|
119
221
|
config.onAuthError,
|
|
120
222
|
token
|
|
@@ -182,11 +284,11 @@ Object.defineProperty(exports, "useSdkClient", {
|
|
|
182
284
|
return useSdkClient;
|
|
183
285
|
}
|
|
184
286
|
});
|
|
185
|
-
Object.defineProperty(exports, "
|
|
287
|
+
Object.defineProperty(exports, "useSubscriptionsApiClient", {
|
|
186
288
|
enumerable: true,
|
|
187
289
|
get: function() {
|
|
188
|
-
return
|
|
290
|
+
return useSubscriptionsApiClient;
|
|
189
291
|
}
|
|
190
292
|
});
|
|
191
293
|
|
|
192
|
-
//# sourceMappingURL=use-account-clients-
|
|
294
|
+
//# sourceMappingURL=use-account-clients-BrlAG2os.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-account-clients-BrlAG2os.cjs","names":["useFluidAuthContext","subscriptionsApi.fetchCustomerSubscriptions","subscriptionsApi.fetchSubscription","subscriptionsApi.pauseSubscription","subscriptionsApi.resumeSubscription","subscriptionsApi.skipSubscription","subscriptionsApi.cancelSubscription","subscriptionsApi.reactivateSubscription","subscriptionsApi.updateSubscriptionInfo","useFluidContext","createOrdersFetchClient","ordersApi.fetchOrder","ordersApi.fetchCustomerOrders","createSubscriptionsFetchClient","createFluidPayFetchClient","createCoreFetchClient"],"sources":["../src/hooks/use-fluid-auth.ts","../../../orders/api-client/src/namespaces/orders.ts","../../../subscriptions/api-client/src/namespaces/subscriptions.ts","../../../subscriptions/api-client/src/adapter.ts","../src/account/use-account-clients.ts"],"sourcesContent":["/**\n * useFluidAuth Hook\n *\n * Provides access to authentication state and utilities.\n * This is the primary hook for interacting with auth in components.\n */\n\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\nimport type { FluidAuthContextValue } from \"../auth/types\";\n\n/**\n * Hook to access authentication state and utilities.\n *\n * Must be used within a `FluidAuthProvider`.\n *\n * @returns Authentication context with user info, loading state, and utilities\n * @throws Error if used outside FluidAuthProvider\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { isAuthenticated, isLoading, user, clearAuth } = useFluidAuth();\n *\n * if (isLoading) {\n * return <Spinner />;\n * }\n *\n * if (!isAuthenticated) {\n * return <p>Please log in</p>;\n * }\n *\n * return (\n * <div>\n * <p>Welcome, {user.full_name}!</p>\n * <button onClick={clearAuth}>Log out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFluidAuth(): FluidAuthContextValue {\n return useFluidAuthContext();\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { orders } from \"../custom/orders\";\n\n/**\n * Fetch a single order by token.\n * Endpoint: GET /public/v2025-06/orders/{orderToken}\n */\nexport async function fetchOrder(\n client: FetchClient,\n orderToken: string,\n): Promise<orders.OrderResponse> {\n return client.get(`/public/v2025-06/orders/${orderToken}`);\n}\n\n/**\n * Fetch a paginated list of customer orders.\n * Endpoint: GET /v202506/orders\n */\nexport async function fetchCustomerOrders(\n client: FetchClient,\n params: orders.FetchOrdersParams,\n): Promise<orders.CustomerOrdersResponse> {\n const input: Record<string, string> = {};\n\n if (params.cursor) input[\"page[cursor]\"] = params.cursor;\n if (params.limit != null) input[\"page[limit]\"] = params.limit.toString();\n if (params.search) input.search = params.search;\n if (params.sort) input.sort = params.sort;\n if (params.status) input.status = params.status;\n if (params.type) input.type = params.type;\n if (params.customerId != null)\n input.customer_id = params.customerId.toString();\n if (params.userCompanyId != null)\n input.user_company_id = params.userCompanyId.toString();\n if (params.subscriptionId != null)\n input.subscription_id = params.subscriptionId.toString();\n if (params.startDate) input.start_date = params.startDate;\n if (params.endDate) input.end_date = params.endDate;\n if (params.withinDays != null)\n input.within_days = params.withinDays.toString();\n if (params.cartSource) input.cart_source = params.cartSource;\n if (params.countryIsos) input.country_isos = params.countryIsos;\n if (params.forceStats != null)\n input.force_stats = params.forceStats.toString();\n\n return client.get(\"/v202506/orders\", input);\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { subscriptions } from \"../custom/subscriptions\";\n\n/**\n * Fetch a paginated list of customer subscriptions.\n * Endpoint: GET /subscriptions\n */\nexport async function fetchCustomerSubscriptions(\n client: FetchClient,\n params: subscriptions.FetchSubscriptionsParams,\n): Promise<subscriptions.SubscriptionsResponse> {\n const input: Record<string, string> = {\n customer_id: params.customerId.toString(),\n page: (params.page ?? 1).toString(),\n per_page: (params.perPage ?? 10).toString(),\n };\n\n if (params.status != null) input.status = params.status;\n if (params.search != null) input.search = params.search;\n if (params.sortBy != null) input.sort_by = params.sortBy;\n if (params.sortDirection != null) input.sort_direction = params.sortDirection;\n\n return client.get(\"/subscriptions\", input);\n}\n\n/**\n * Fetch a single subscription by token.\n * Endpoint: GET /subscriptions/{token}\n */\nexport async function fetchSubscription(\n client: FetchClient,\n subscriptionToken: string,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.get(`/subscriptions/${subscriptionToken}`);\n}\n\n/**\n * Pause a subscription.\n * Endpoint: POST /subscriptions/{token}/pause\n */\nexport async function pauseSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.PauseSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const queryParams: Record<string, string> = {\n customer_id: params.customerId.toString(),\n };\n\n if (params.nextBillDate != null) {\n queryParams.next_bill_date = params.nextBillDate;\n }\n if (params.numberOfOrders != null) {\n queryParams.number_of_orders = params.numberOfOrders.toString();\n }\n\n const query = new URLSearchParams(queryParams).toString();\n return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);\n}\n\n/**\n * Resume a paused subscription.\n * Endpoint: POST /subscriptions/{token}/resume\n */\nexport async function resumeSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ResumeSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);\n}\n\n/**\n * Skip the next billing cycle.\n * Endpoint: POST /subscriptions/{token}/skip_next_billing\n */\nexport async function skipSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.SkipSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(\n `/subscriptions/${subscriptionToken}/skip_next_billing?${query}`,\n );\n}\n\n/**\n * Cancel a subscription.\n * Endpoint: POST /subscriptions/{token}/cancel\n */\nexport async function cancelSubscription(\n client: FetchClient,\n subscriptionToken: string,\n customerId: number,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: customerId.toString(),\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);\n}\n\n/**\n * Reactivate a cancelled subscription.\n * Endpoint: POST /subscriptions/{token}/reactivate\n */\nexport async function reactivateSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ReactivateSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const body =\n params.process_immediately === true\n ? { process_immediately: true }\n : params.next_bill_date\n ? { next_bill_date: params.next_bill_date }\n : {};\n\n return client.post(\n `/subscriptions/${subscriptionToken}/reactivate`,\n Object.keys(body).length > 0 ? body : undefined,\n );\n}\n\n/**\n * Update subscription info (plan, variant, address, payment method, quantity).\n * Endpoint: PUT /subscriptions/{token}\n */\nexport async function updateSubscriptionInfo(\n client: FetchClient,\n subscriptionToken: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.put(`/subscriptions/${subscriptionToken}`, {\n subscription: body,\n });\n}\n\n/**\n * Create a new subscription. Two-step process: creates a cart first, then the subscription.\n * Endpoint: POST /carts + POST /subscriptions\n */\nexport async function createSubscription(\n client: FetchClient,\n data: subscriptions.CreateSubscriptionData,\n): Promise<subscriptions.SubscriptionCreateResponse> {\n // Step 1: Create a cart with the subscription item\n const cartResponse = await client.post<subscriptions.CartCreateResponse>(\n \"/carts\",\n {\n country_code: \"US\",\n items: [\n {\n variant_id: data.variant_id,\n quantity: data.quantity ?? 1,\n subscription: true,\n subscription_plan_id: data.subscription_plan_id,\n },\n ],\n },\n );\n\n // Step 2: Create the subscription using the cart token\n return client.post(\"/subscriptions\", {\n subscription: {\n ...data,\n cart_token: cartResponse.cart.cart_token,\n },\n });\n}\n","import type { FetchClient } from \"./lib/fetch-client\";\nimport type { subscriptions } from \"./custom/subscriptions\";\nimport * as subscriptionsApi from \"./namespaces/subscriptions\";\n\n/**\n * Creates a SubscriptionsApi-compatible adapter from a FetchClient.\n *\n * This bridges the concrete API client to the abstract SubscriptionsApi\n * interface defined in @fluid-app/subscriptions-core, closing over the\n * FetchClient so consumers don't need to pass it per-call.\n */\nexport function createSubscriptionsApiAdapter(client: FetchClient) {\n return {\n fetchCustomerSubscriptions: (\n params: subscriptions.FetchSubscriptionsParams,\n ) => subscriptionsApi.fetchCustomerSubscriptions(client, params),\n fetchSubscription: (token: string) =>\n subscriptionsApi.fetchSubscription(client, token),\n pauseSubscription: (\n token: string,\n params: subscriptions.PauseSubscriptionParams,\n ) => subscriptionsApi.pauseSubscription(client, token, params),\n resumeSubscription: (\n token: string,\n params: subscriptions.ResumeSubscriptionParams,\n ) => subscriptionsApi.resumeSubscription(client, token, params),\n skipSubscription: (\n token: string,\n params: subscriptions.SkipSubscriptionParams,\n ) => subscriptionsApi.skipSubscription(client, token, params),\n cancelSubscription: (token: string, customerId: number) =>\n subscriptionsApi.cancelSubscription(client, token, customerId),\n reactivateSubscription: (\n token: string,\n params: subscriptions.ReactivateSubscriptionParams,\n ) => subscriptionsApi.reactivateSubscription(client, token, params),\n updateSubscriptionInfo: (\n token: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n ) => subscriptionsApi.updateSubscriptionInfo(client, token, body),\n };\n}\n","import { useMemo } from \"react\";\nimport type { OrdersApi } from \"@fluid-app/orders-core\";\nimport {\n createFetchClient as createOrdersFetchClient,\n ordersApi,\n} from \"@fluid-app/orders-api-client\";\nimport { createFetchClient as createSubscriptionsFetchClient } from \"@fluid-app/subscriptions-api-client\";\nimport type { SubscriptionsApi } from \"@fluid-app/subscriptions-core\";\nimport { createSubscriptionsApiAdapter } from \"./subscriptions-api-adapter\";\nimport {\n createFetchClient as createFluidPayFetchClient,\n type FetchClient as FluidPayFetchClient,\n} from \"@fluid-app/fluid-pay-api-client\";\nimport {\n createFetchClient as createCoreFetchClient,\n type FetchClient as CoreFetchClient,\n} from \"@fluid-app/api-client-core\";\nimport { useFluidContext } from \"../providers/FluidProvider\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\n\n/** API version prefix for versioned endpoints (e.g. points ledger) */\nexport const API_VERSION = \"/v202506\";\n\n/**\n * Ensures baseUrl ends with /api.\n * Domain-specific API clients (orders, subscriptions, fluid-pay) use endpoint\n * paths without /api (e.g. /fluid_pay/me, /subscriptions), matching fluid-admin's\n * NEXT_PUBLIC_API_URL convention. The portal SDK's config.baseUrl is the domain\n * root (e.g. https://api.fluid.app), so we append /api here.\n */\nfunction withApiPrefix(baseUrl: string): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n return base.endsWith(\"/api\") ? base : `${base}/api`;\n}\n\nexport function useOrdersApi(): OrdersApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(() => {\n const client = createOrdersFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n });\n return {\n fetchOrder: (orderToken) => ordersApi.fetchOrder(client, orderToken),\n fetchCustomerOrders: (params) =>\n ordersApi.fetchCustomerOrders(client, params),\n };\n }, [config.baseUrl, config.onAuthError, token]);\n}\n\nexport function useSubscriptionsApiClient(): SubscriptionsApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createSubscriptionsApiAdapter(\n createSubscriptionsFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n ),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\nexport function useFluidPayClient(): FluidPayFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createFluidPayFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\n/**\n * Generic SDK fetch client for endpoints not covered by domain-specific clients\n * (e.g. /countries, /v202506/customers/:id/points_ledgers).\n * Uses the same auth/baseUrl/error handling as the domain clients.\n */\nexport function useSdkClient(): CoreFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createCoreFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n"],"mappings":"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"}
|
|
@@ -73,6 +73,108 @@ async function fetchCustomerOrders(client, params) {
|
|
|
73
73
|
return client.get("/v202506/orders", input);
|
|
74
74
|
}
|
|
75
75
|
//#endregion
|
|
76
|
+
//#region ../../subscriptions/api-client/src/namespaces/subscriptions.ts
|
|
77
|
+
/**
|
|
78
|
+
* Fetch a paginated list of customer subscriptions.
|
|
79
|
+
* Endpoint: GET /subscriptions
|
|
80
|
+
*/
|
|
81
|
+
async function fetchCustomerSubscriptions(client, params) {
|
|
82
|
+
const input = {
|
|
83
|
+
customer_id: params.customerId.toString(),
|
|
84
|
+
page: (params.page ?? 1).toString(),
|
|
85
|
+
per_page: (params.perPage ?? 10).toString()
|
|
86
|
+
};
|
|
87
|
+
if (params.status != null) input.status = params.status;
|
|
88
|
+
if (params.search != null) input.search = params.search;
|
|
89
|
+
if (params.sortBy != null) input.sort_by = params.sortBy;
|
|
90
|
+
if (params.sortDirection != null) input.sort_direction = params.sortDirection;
|
|
91
|
+
return client.get("/subscriptions", input);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Fetch a single subscription by token.
|
|
95
|
+
* Endpoint: GET /subscriptions/{token}
|
|
96
|
+
*/
|
|
97
|
+
async function fetchSubscription(client, subscriptionToken) {
|
|
98
|
+
return client.get(`/subscriptions/${subscriptionToken}`);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Pause a subscription.
|
|
102
|
+
* Endpoint: POST /subscriptions/{token}/pause
|
|
103
|
+
*/
|
|
104
|
+
async function pauseSubscription(client, subscriptionToken, params) {
|
|
105
|
+
const queryParams = { customer_id: params.customerId.toString() };
|
|
106
|
+
if (params.nextBillDate != null) queryParams.next_bill_date = params.nextBillDate;
|
|
107
|
+
if (params.numberOfOrders != null) queryParams.number_of_orders = params.numberOfOrders.toString();
|
|
108
|
+
const query = new URLSearchParams(queryParams).toString();
|
|
109
|
+
return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resume a paused subscription.
|
|
113
|
+
* Endpoint: POST /subscriptions/{token}/resume
|
|
114
|
+
*/
|
|
115
|
+
async function resumeSubscription(client, subscriptionToken, params) {
|
|
116
|
+
const query = new URLSearchParams({
|
|
117
|
+
customer_id: params.customerId.toString(),
|
|
118
|
+
next_bill_date: params.nextBillDate
|
|
119
|
+
}).toString();
|
|
120
|
+
return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Skip the next billing cycle.
|
|
124
|
+
* Endpoint: POST /subscriptions/{token}/skip_next_billing
|
|
125
|
+
*/
|
|
126
|
+
async function skipSubscription(client, subscriptionToken, params) {
|
|
127
|
+
const query = new URLSearchParams({
|
|
128
|
+
customer_id: params.customerId.toString(),
|
|
129
|
+
next_bill_date: params.nextBillDate
|
|
130
|
+
}).toString();
|
|
131
|
+
return client.post(`/subscriptions/${subscriptionToken}/skip_next_billing?${query}`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Cancel a subscription.
|
|
135
|
+
* Endpoint: POST /subscriptions/{token}/cancel
|
|
136
|
+
*/
|
|
137
|
+
async function cancelSubscription(client, subscriptionToken, customerId) {
|
|
138
|
+
const query = new URLSearchParams({ customer_id: customerId.toString() }).toString();
|
|
139
|
+
return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Reactivate a cancelled subscription.
|
|
143
|
+
* Endpoint: POST /subscriptions/{token}/reactivate
|
|
144
|
+
*/
|
|
145
|
+
async function reactivateSubscription(client, subscriptionToken, params) {
|
|
146
|
+
const body = params.process_immediately === true ? { process_immediately: true } : params.next_bill_date ? { next_bill_date: params.next_bill_date } : {};
|
|
147
|
+
return client.post(`/subscriptions/${subscriptionToken}/reactivate`, Object.keys(body).length > 0 ? body : void 0);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Update subscription info (plan, variant, address, payment method, quantity).
|
|
151
|
+
* Endpoint: PUT /subscriptions/{token}
|
|
152
|
+
*/
|
|
153
|
+
async function updateSubscriptionInfo(client, subscriptionToken, body) {
|
|
154
|
+
return client.put(`/subscriptions/${subscriptionToken}`, { subscription: body });
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region ../../subscriptions/api-client/src/adapter.ts
|
|
158
|
+
/**
|
|
159
|
+
* Creates a SubscriptionsApi-compatible adapter from a FetchClient.
|
|
160
|
+
*
|
|
161
|
+
* This bridges the concrete API client to the abstract SubscriptionsApi
|
|
162
|
+
* interface defined in @fluid-app/subscriptions-core, closing over the
|
|
163
|
+
* FetchClient so consumers don't need to pass it per-call.
|
|
164
|
+
*/
|
|
165
|
+
function createSubscriptionsApiAdapter(client) {
|
|
166
|
+
return {
|
|
167
|
+
fetchCustomerSubscriptions: (params) => fetchCustomerSubscriptions(client, params),
|
|
168
|
+
fetchSubscription: (token) => fetchSubscription(client, token),
|
|
169
|
+
pauseSubscription: (token, params) => pauseSubscription(client, token, params),
|
|
170
|
+
resumeSubscription: (token, params) => resumeSubscription(client, token, params),
|
|
171
|
+
skipSubscription: (token, params) => skipSubscription(client, token, params),
|
|
172
|
+
cancelSubscription: (token, customerId) => cancelSubscription(client, token, customerId),
|
|
173
|
+
reactivateSubscription: (token, params) => reactivateSubscription(client, token, params),
|
|
174
|
+
updateSubscriptionInfo: (token, body) => updateSubscriptionInfo(client, token, body)
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
//#endregion
|
|
76
178
|
//#region src/account/use-account-clients.ts
|
|
77
179
|
/** API version prefix for versioned endpoints (e.g. points ledger) */
|
|
78
180
|
const API_VERSION = "/v202506";
|
|
@@ -106,14 +208,14 @@ function useOrdersApi() {
|
|
|
106
208
|
token
|
|
107
209
|
]);
|
|
108
210
|
}
|
|
109
|
-
function
|
|
211
|
+
function useSubscriptionsApiClient() {
|
|
110
212
|
const { config } = useFluidContext();
|
|
111
213
|
const { token } = useFluidAuth();
|
|
112
|
-
return useMemo(() => createFetchClient({
|
|
214
|
+
return useMemo(() => createSubscriptionsApiAdapter(createFetchClient({
|
|
113
215
|
baseUrl: withApiPrefix(config.baseUrl),
|
|
114
216
|
getAuthToken: () => token,
|
|
115
217
|
onAuthError: config.onAuthError
|
|
116
|
-
}), [
|
|
218
|
+
})), [
|
|
117
219
|
config.baseUrl,
|
|
118
220
|
config.onAuthError,
|
|
119
221
|
token
|
|
@@ -151,6 +253,6 @@ function useSdkClient() {
|
|
|
151
253
|
]);
|
|
152
254
|
}
|
|
153
255
|
//#endregion
|
|
154
|
-
export {
|
|
256
|
+
export { useSubscriptionsApiClient as a, useSdkClient as i, useFluidPayClient as n, useFluidAuth as o, useOrdersApi as r, API_VERSION as t };
|
|
155
257
|
|
|
156
|
-
//# sourceMappingURL=use-account-clients-
|
|
258
|
+
//# sourceMappingURL=use-account-clients-vOToQZNB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-account-clients-vOToQZNB.mjs","names":["subscriptionsApi.fetchCustomerSubscriptions","subscriptionsApi.fetchSubscription","subscriptionsApi.pauseSubscription","subscriptionsApi.resumeSubscription","subscriptionsApi.skipSubscription","subscriptionsApi.cancelSubscription","subscriptionsApi.reactivateSubscription","subscriptionsApi.updateSubscriptionInfo","createOrdersFetchClient","ordersApi.fetchOrder","ordersApi.fetchCustomerOrders","createSubscriptionsFetchClient","createFluidPayFetchClient","createCoreFetchClient"],"sources":["../src/hooks/use-fluid-auth.ts","../../../orders/api-client/src/namespaces/orders.ts","../../../subscriptions/api-client/src/namespaces/subscriptions.ts","../../../subscriptions/api-client/src/adapter.ts","../src/account/use-account-clients.ts"],"sourcesContent":["/**\n * useFluidAuth Hook\n *\n * Provides access to authentication state and utilities.\n * This is the primary hook for interacting with auth in components.\n */\n\nimport { useFluidAuthContext } from \"../providers/FluidAuthProvider\";\nimport type { FluidAuthContextValue } from \"../auth/types\";\n\n/**\n * Hook to access authentication state and utilities.\n *\n * Must be used within a `FluidAuthProvider`.\n *\n * @returns Authentication context with user info, loading state, and utilities\n * @throws Error if used outside FluidAuthProvider\n *\n * @example\n * ```tsx\n * function UserProfile() {\n * const { isAuthenticated, isLoading, user, clearAuth } = useFluidAuth();\n *\n * if (isLoading) {\n * return <Spinner />;\n * }\n *\n * if (!isAuthenticated) {\n * return <p>Please log in</p>;\n * }\n *\n * return (\n * <div>\n * <p>Welcome, {user.full_name}!</p>\n * <button onClick={clearAuth}>Log out</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFluidAuth(): FluidAuthContextValue {\n return useFluidAuthContext();\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { orders } from \"../custom/orders\";\n\n/**\n * Fetch a single order by token.\n * Endpoint: GET /public/v2025-06/orders/{orderToken}\n */\nexport async function fetchOrder(\n client: FetchClient,\n orderToken: string,\n): Promise<orders.OrderResponse> {\n return client.get(`/public/v2025-06/orders/${orderToken}`);\n}\n\n/**\n * Fetch a paginated list of customer orders.\n * Endpoint: GET /v202506/orders\n */\nexport async function fetchCustomerOrders(\n client: FetchClient,\n params: orders.FetchOrdersParams,\n): Promise<orders.CustomerOrdersResponse> {\n const input: Record<string, string> = {};\n\n if (params.cursor) input[\"page[cursor]\"] = params.cursor;\n if (params.limit != null) input[\"page[limit]\"] = params.limit.toString();\n if (params.search) input.search = params.search;\n if (params.sort) input.sort = params.sort;\n if (params.status) input.status = params.status;\n if (params.type) input.type = params.type;\n if (params.customerId != null)\n input.customer_id = params.customerId.toString();\n if (params.userCompanyId != null)\n input.user_company_id = params.userCompanyId.toString();\n if (params.subscriptionId != null)\n input.subscription_id = params.subscriptionId.toString();\n if (params.startDate) input.start_date = params.startDate;\n if (params.endDate) input.end_date = params.endDate;\n if (params.withinDays != null)\n input.within_days = params.withinDays.toString();\n if (params.cartSource) input.cart_source = params.cartSource;\n if (params.countryIsos) input.country_isos = params.countryIsos;\n if (params.forceStats != null)\n input.force_stats = params.forceStats.toString();\n\n return client.get(\"/v202506/orders\", input);\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { subscriptions } from \"../custom/subscriptions\";\n\n/**\n * Fetch a paginated list of customer subscriptions.\n * Endpoint: GET /subscriptions\n */\nexport async function fetchCustomerSubscriptions(\n client: FetchClient,\n params: subscriptions.FetchSubscriptionsParams,\n): Promise<subscriptions.SubscriptionsResponse> {\n const input: Record<string, string> = {\n customer_id: params.customerId.toString(),\n page: (params.page ?? 1).toString(),\n per_page: (params.perPage ?? 10).toString(),\n };\n\n if (params.status != null) input.status = params.status;\n if (params.search != null) input.search = params.search;\n if (params.sortBy != null) input.sort_by = params.sortBy;\n if (params.sortDirection != null) input.sort_direction = params.sortDirection;\n\n return client.get(\"/subscriptions\", input);\n}\n\n/**\n * Fetch a single subscription by token.\n * Endpoint: GET /subscriptions/{token}\n */\nexport async function fetchSubscription(\n client: FetchClient,\n subscriptionToken: string,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.get(`/subscriptions/${subscriptionToken}`);\n}\n\n/**\n * Pause a subscription.\n * Endpoint: POST /subscriptions/{token}/pause\n */\nexport async function pauseSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.PauseSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const queryParams: Record<string, string> = {\n customer_id: params.customerId.toString(),\n };\n\n if (params.nextBillDate != null) {\n queryParams.next_bill_date = params.nextBillDate;\n }\n if (params.numberOfOrders != null) {\n queryParams.number_of_orders = params.numberOfOrders.toString();\n }\n\n const query = new URLSearchParams(queryParams).toString();\n return client.post(`/subscriptions/${subscriptionToken}/pause?${query}`);\n}\n\n/**\n * Resume a paused subscription.\n * Endpoint: POST /subscriptions/{token}/resume\n */\nexport async function resumeSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ResumeSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/resume?${query}`);\n}\n\n/**\n * Skip the next billing cycle.\n * Endpoint: POST /subscriptions/{token}/skip_next_billing\n */\nexport async function skipSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.SkipSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: params.customerId.toString(),\n next_bill_date: params.nextBillDate,\n }).toString();\n\n return client.post(\n `/subscriptions/${subscriptionToken}/skip_next_billing?${query}`,\n );\n}\n\n/**\n * Cancel a subscription.\n * Endpoint: POST /subscriptions/{token}/cancel\n */\nexport async function cancelSubscription(\n client: FetchClient,\n subscriptionToken: string,\n customerId: number,\n): Promise<subscriptions.SubscriptionDetail> {\n const query = new URLSearchParams({\n customer_id: customerId.toString(),\n }).toString();\n\n return client.post(`/subscriptions/${subscriptionToken}/cancel?${query}`);\n}\n\n/**\n * Reactivate a cancelled subscription.\n * Endpoint: POST /subscriptions/{token}/reactivate\n */\nexport async function reactivateSubscription(\n client: FetchClient,\n subscriptionToken: string,\n params: subscriptions.ReactivateSubscriptionParams,\n): Promise<subscriptions.SubscriptionDetail> {\n const body =\n params.process_immediately === true\n ? { process_immediately: true }\n : params.next_bill_date\n ? { next_bill_date: params.next_bill_date }\n : {};\n\n return client.post(\n `/subscriptions/${subscriptionToken}/reactivate`,\n Object.keys(body).length > 0 ? body : undefined,\n );\n}\n\n/**\n * Update subscription info (plan, variant, address, payment method, quantity).\n * Endpoint: PUT /subscriptions/{token}\n */\nexport async function updateSubscriptionInfo(\n client: FetchClient,\n subscriptionToken: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n): Promise<subscriptions.SubscriptionDetail> {\n return client.put(`/subscriptions/${subscriptionToken}`, {\n subscription: body,\n });\n}\n\n/**\n * Create a new subscription. Two-step process: creates a cart first, then the subscription.\n * Endpoint: POST /carts + POST /subscriptions\n */\nexport async function createSubscription(\n client: FetchClient,\n data: subscriptions.CreateSubscriptionData,\n): Promise<subscriptions.SubscriptionCreateResponse> {\n // Step 1: Create a cart with the subscription item\n const cartResponse = await client.post<subscriptions.CartCreateResponse>(\n \"/carts\",\n {\n country_code: \"US\",\n items: [\n {\n variant_id: data.variant_id,\n quantity: data.quantity ?? 1,\n subscription: true,\n subscription_plan_id: data.subscription_plan_id,\n },\n ],\n },\n );\n\n // Step 2: Create the subscription using the cart token\n return client.post(\"/subscriptions\", {\n subscription: {\n ...data,\n cart_token: cartResponse.cart.cart_token,\n },\n });\n}\n","import type { FetchClient } from \"./lib/fetch-client\";\nimport type { subscriptions } from \"./custom/subscriptions\";\nimport * as subscriptionsApi from \"./namespaces/subscriptions\";\n\n/**\n * Creates a SubscriptionsApi-compatible adapter from a FetchClient.\n *\n * This bridges the concrete API client to the abstract SubscriptionsApi\n * interface defined in @fluid-app/subscriptions-core, closing over the\n * FetchClient so consumers don't need to pass it per-call.\n */\nexport function createSubscriptionsApiAdapter(client: FetchClient) {\n return {\n fetchCustomerSubscriptions: (\n params: subscriptions.FetchSubscriptionsParams,\n ) => subscriptionsApi.fetchCustomerSubscriptions(client, params),\n fetchSubscription: (token: string) =>\n subscriptionsApi.fetchSubscription(client, token),\n pauseSubscription: (\n token: string,\n params: subscriptions.PauseSubscriptionParams,\n ) => subscriptionsApi.pauseSubscription(client, token, params),\n resumeSubscription: (\n token: string,\n params: subscriptions.ResumeSubscriptionParams,\n ) => subscriptionsApi.resumeSubscription(client, token, params),\n skipSubscription: (\n token: string,\n params: subscriptions.SkipSubscriptionParams,\n ) => subscriptionsApi.skipSubscription(client, token, params),\n cancelSubscription: (token: string, customerId: number) =>\n subscriptionsApi.cancelSubscription(client, token, customerId),\n reactivateSubscription: (\n token: string,\n params: subscriptions.ReactivateSubscriptionParams,\n ) => subscriptionsApi.reactivateSubscription(client, token, params),\n updateSubscriptionInfo: (\n token: string,\n body: subscriptions.UpdateSubscriptionInfoBody,\n ) => subscriptionsApi.updateSubscriptionInfo(client, token, body),\n };\n}\n","import { useMemo } from \"react\";\nimport type { OrdersApi } from \"@fluid-app/orders-core\";\nimport {\n createFetchClient as createOrdersFetchClient,\n ordersApi,\n} from \"@fluid-app/orders-api-client\";\nimport { createFetchClient as createSubscriptionsFetchClient } from \"@fluid-app/subscriptions-api-client\";\nimport type { SubscriptionsApi } from \"@fluid-app/subscriptions-core\";\nimport { createSubscriptionsApiAdapter } from \"./subscriptions-api-adapter\";\nimport {\n createFetchClient as createFluidPayFetchClient,\n type FetchClient as FluidPayFetchClient,\n} from \"@fluid-app/fluid-pay-api-client\";\nimport {\n createFetchClient as createCoreFetchClient,\n type FetchClient as CoreFetchClient,\n} from \"@fluid-app/api-client-core\";\nimport { useFluidContext } from \"../providers/FluidProvider\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\n\n/** API version prefix for versioned endpoints (e.g. points ledger) */\nexport const API_VERSION = \"/v202506\";\n\n/**\n * Ensures baseUrl ends with /api.\n * Domain-specific API clients (orders, subscriptions, fluid-pay) use endpoint\n * paths without /api (e.g. /fluid_pay/me, /subscriptions), matching fluid-admin's\n * NEXT_PUBLIC_API_URL convention. The portal SDK's config.baseUrl is the domain\n * root (e.g. https://api.fluid.app), so we append /api here.\n */\nfunction withApiPrefix(baseUrl: string): string {\n const base = baseUrl.replace(/\\/+$/, \"\");\n return base.endsWith(\"/api\") ? base : `${base}/api`;\n}\n\nexport function useOrdersApi(): OrdersApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(() => {\n const client = createOrdersFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n });\n return {\n fetchOrder: (orderToken) => ordersApi.fetchOrder(client, orderToken),\n fetchCustomerOrders: (params) =>\n ordersApi.fetchCustomerOrders(client, params),\n };\n }, [config.baseUrl, config.onAuthError, token]);\n}\n\nexport function useSubscriptionsApiClient(): SubscriptionsApi {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createSubscriptionsApiAdapter(\n createSubscriptionsFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n ),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\nexport function useFluidPayClient(): FluidPayFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createFluidPayFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n\n/**\n * Generic SDK fetch client for endpoints not covered by domain-specific clients\n * (e.g. /countries, /v202506/customers/:id/points_ledgers).\n * Uses the same auth/baseUrl/error handling as the domain clients.\n */\nexport function useSdkClient(): CoreFetchClient {\n const { config } = useFluidContext();\n const { token } = useFluidAuth();\n\n return useMemo(\n () =>\n createCoreFetchClient({\n baseUrl: withApiPrefix(config.baseUrl),\n getAuthToken: () => token,\n onAuthError: config.onAuthError,\n }),\n [config.baseUrl, config.onAuthError, token],\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { yt as fetchCustomerAccount } from "./FluidProvider-Nd7xkDWq.mjs";
|
|
2
|
-
import { n as useFluidPayClient, o as useFluidAuth } from "./use-account-clients-
|
|
2
|
+
import { n as useFluidPayClient, o as useFluidAuth } from "./use-account-clients-vOToQZNB.mjs";
|
|
3
3
|
import { useQuery } from "@tanstack/react-query";
|
|
4
4
|
//#region src/account/use-customer-account.ts
|
|
5
5
|
function useCustomerAccount({ enabled = true } = {}) {
|
|
@@ -20,4 +20,4 @@ function useCustomerAccount({ enabled = true } = {}) {
|
|
|
20
20
|
//#endregion
|
|
21
21
|
export { useCustomerAccount as t };
|
|
22
22
|
|
|
23
|
-
//# sourceMappingURL=use-customer-account-
|
|
23
|
+
//# sourceMappingURL=use-customer-account-Bufu7Mae.mjs.map
|
package/dist/{use-customer-account-Be70QBp3.mjs.map → use-customer-account-Bufu7Mae.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-customer-account-
|
|
1
|
+
{"version":3,"file":"use-customer-account-Bufu7Mae.mjs","names":["customersApi.fetchCustomerAccount"],"sources":["../src/account/use-customer-account.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { customersApi } from \"@fluid-app/fluid-pay-api-client\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\nimport { useFluidPayClient } from \"./use-account-clients\";\n\nexport function useCustomerAccount({\n enabled = true,\n}: { enabled?: boolean } = {}) {\n const { token, user } = useFluidAuth();\n const fluidPayClient = useFluidPayClient();\n const jwt = token ?? \"\";\n\n const query = useQuery({\n queryKey: [\"fluidPayAccount\", user?.id],\n queryFn: () => customersApi.fetchCustomerAccount(fluidPayClient, jwt),\n enabled: !!jwt && enabled,\n });\n\n return {\n customerId: query.data?.customer?.id,\n isLoadingCustomer: query.isLoading,\n isCustomerError: query.isError,\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,mBAAmB,EACjC,UAAU,SACe,EAAE,EAAE;CAC7B,MAAM,EAAE,OAAO,SAAS,cAAc;CACtC,MAAM,iBAAiB,mBAAmB;CAC1C,MAAM,MAAM,SAAS;CAErB,MAAM,QAAQ,SAAS;EACrB,UAAU,CAAC,mBAAmB,MAAM,GAAG;EACvC,eAAeA,qBAAkC,gBAAgB,IAAI;EACrE,SAAS,CAAC,CAAC,OAAO;EACnB,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,MAAM,UAAU;EAClC,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACxB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("./chunk-9hOWP6kD.cjs");
|
|
2
2
|
const require_FluidProvider = require("./FluidProvider-C27-ijsq.cjs");
|
|
3
|
-
const require_use_account_clients = require("./use-account-clients-
|
|
3
|
+
const require_use_account_clients = require("./use-account-clients-BrlAG2os.cjs");
|
|
4
4
|
let _tanstack_react_query = require("@tanstack/react-query");
|
|
5
5
|
//#region src/account/use-customer-account.ts
|
|
6
6
|
function useCustomerAccount({ enabled = true } = {}) {
|
|
@@ -26,4 +26,4 @@ Object.defineProperty(exports, "useCustomerAccount", {
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
//# sourceMappingURL=use-customer-account-
|
|
29
|
+
//# sourceMappingURL=use-customer-account-CeNalSBy.cjs.map
|
package/dist/{use-customer-account-BH-hwjbg.cjs.map → use-customer-account-CeNalSBy.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-customer-account-
|
|
1
|
+
{"version":3,"file":"use-customer-account-CeNalSBy.cjs","names":["useFluidAuth","useFluidPayClient"],"sources":["../src/account/use-customer-account.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { customersApi } from \"@fluid-app/fluid-pay-api-client\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\nimport { useFluidPayClient } from \"./use-account-clients\";\n\nexport function useCustomerAccount({\n enabled = true,\n}: { enabled?: boolean } = {}) {\n const { token, user } = useFluidAuth();\n const fluidPayClient = useFluidPayClient();\n const jwt = token ?? \"\";\n\n const query = useQuery({\n queryKey: [\"fluidPayAccount\", user?.id],\n queryFn: () => customersApi.fetchCustomerAccount(fluidPayClient, jwt),\n enabled: !!jwt && enabled,\n });\n\n return {\n customerId: query.data?.customer?.id,\n isLoadingCustomer: query.isLoading,\n isCustomerError: query.isError,\n };\n}\n"],"mappings":";;;;;AAKA,SAAgB,mBAAmB,EACjC,UAAU,SACe,EAAE,EAAE;CAC7B,MAAM,EAAE,OAAO,SAASA,4BAAAA,cAAc;CACtC,MAAM,iBAAiBC,4BAAAA,mBAAmB;CAC1C,MAAM,MAAM,SAAS;CAErB,MAAM,SAAA,GAAA,sBAAA,UAAiB;EACrB,UAAU,CAAC,mBAAmB,MAAM,GAAG;EACvC,eAAA,sBAAA,qBAAiD,gBAAgB,IAAI;EACrE,SAAS,CAAC,CAAC,OAAO;EACnB,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,MAAM,UAAU;EAClC,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-app/portal-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.96",
|
|
4
4
|
"description": "SDK for building custom Fluid portals",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -71,35 +71,35 @@
|
|
|
71
71
|
"@fluid-app/company-switcher-core": "0.1.0",
|
|
72
72
|
"@fluid-app/company-switcher-ui": "0.1.0",
|
|
73
73
|
"@fluid-app/contacts-core": "0.1.0",
|
|
74
|
-
"@fluid-app/file-picker-api-client": "0.1.0",
|
|
75
74
|
"@fluid-app/contacts-ui": "0.1.0",
|
|
76
75
|
"@fluid-app/fluid-pay-api-client": "0.1.0",
|
|
77
|
-
"@fluid-app/
|
|
76
|
+
"@fluid-app/file-picker-api-client": "0.1.0",
|
|
78
77
|
"@fluid-app/messaging-api-client": "0.1.0",
|
|
78
|
+
"@fluid-app/fluidos-api-client": "0.1.0",
|
|
79
79
|
"@fluid-app/messaging-core": "0.1.0",
|
|
80
80
|
"@fluid-app/mysite-ui": "0.1.0",
|
|
81
81
|
"@fluid-app/messaging-ui": "0.1.0",
|
|
82
|
-
"@fluid-app/orders-core": "0.1.0",
|
|
83
82
|
"@fluid-app/orders-api-client": "0.1.0",
|
|
84
|
-
"@fluid-app/orders-
|
|
83
|
+
"@fluid-app/orders-core": "0.1.0",
|
|
85
84
|
"@fluid-app/permissions": "0.1.0",
|
|
86
85
|
"@fluid-app/portal-app-download-ui": "0.1.0",
|
|
86
|
+
"@fluid-app/orders-ui": "0.1.0",
|
|
87
87
|
"@fluid-app/portal-core": "0.1.23",
|
|
88
88
|
"@fluid-app/portal-preview": "0.1.0",
|
|
89
89
|
"@fluid-app/portal-pro-upgrade-ui": "0.1.0",
|
|
90
|
-
"@fluid-app/portal-react": "0.1.0",
|
|
91
90
|
"@fluid-app/portal-widgets": "0.1.22",
|
|
91
|
+
"@fluid-app/portal-react": "0.1.0",
|
|
92
92
|
"@fluid-app/products-api-client": "0.1.0",
|
|
93
93
|
"@fluid-app/products-core": "0.1.0",
|
|
94
94
|
"@fluid-app/profile-core": "0.1.0",
|
|
95
95
|
"@fluid-app/profile-ui": "0.1.0",
|
|
96
96
|
"@fluid-app/query-persister": "0.1.0",
|
|
97
|
-
"@fluid-app/shareables-api-client": "0.1.0",
|
|
98
97
|
"@fluid-app/shareables-core": "0.1.0",
|
|
98
|
+
"@fluid-app/shareables-api-client": "0.1.0",
|
|
99
99
|
"@fluid-app/shareables-ui": "0.1.0",
|
|
100
100
|
"@fluid-app/shop-ui": "0.1.0",
|
|
101
|
-
"@fluid-app/subscriptions-api-client": "0.1.0",
|
|
102
101
|
"@fluid-app/subscriptions-core": "0.1.0",
|
|
102
|
+
"@fluid-app/subscriptions-api-client": "0.1.0",
|
|
103
103
|
"@fluid-app/subscriptions-ui": "0.1.0",
|
|
104
104
|
"@fluid-app/typescript-config": "0.0.0",
|
|
105
105
|
"@fluid-app/ui-primitives": "0.1.13",
|