UNPKG

vue3-stripe-kit

Version:

Complete Vue 3 Stripe integration with Payment Elements, Checkout, Subscriptions. TypeScript support, composables, components, modular architecture for payments, billing, and e-commerce

100 lines (97 loc) 3.48 kB
import { ref, readonly } from 'vue'; import { b as buildApiUrl, a as buildRequestHeaders, c as getRequestTimeout } from './config-DTKmfXwX.mjs'; export { g as getGlobalConfig, s as setGlobalConfig } from './config-DTKmfXwX.mjs'; function useSubscriptionsLite(config) { const loading = ref(false); const error = ref(null); const makeRequest = async (url, data, method = "POST") => { const headers = buildRequestHeaders(void 0, config); const timeout = getRequestTimeout(void 0, config); const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), timeout); const fetchOptions = { method, signal: controller.signal }; if (method !== "GET") { fetchOptions.headers = headers; fetchOptions.body = JSON.stringify(data); } else { const getHeaders = { ...headers }; delete getHeaders["Content-Type"]; fetchOptions.headers = getHeaders; } const response = await fetch(url, fetchOptions); clearTimeout(timeoutId); if (!response.ok) { const errorData = await response.json().catch(() => ({ message: "Unknown error" })); throw new Error(errorData.message || `HTTP ${response.status}: ${response.statusText}`); } return await response.json(); }; const createSubscription = async (data, requestConfig) => { try { loading.value = true; error.value = null; const url = buildApiUrl("/api/stripe/create-subscription", void 0, { ...config, ...requestConfig }); const subscription = await makeRequest(url, data); return subscription; } catch (err) { const stripeError = { type: "api_error", message: err instanceof Error ? err.message : "Failed to create subscription" }; error.value = stripeError; throw stripeError; } finally { loading.value = false; } }; const cancelSubscription = async (subscriptionId, requestConfig) => { try { loading.value = true; error.value = null; const url = buildApiUrl(`/api/stripe/cancel-subscription/${subscriptionId}`, void 0, { ...config, ...requestConfig }); const subscription = await makeRequest(url, { cancel_at_period_end: requestConfig?.cancelAtPeriodEnd ?? true }, "PATCH"); return subscription; } catch (err) { const stripeError = { type: "api_error", message: err instanceof Error ? err.message : "Failed to cancel subscription" }; error.value = stripeError; throw stripeError; } finally { loading.value = false; } }; const retrieveSubscription = async (subscriptionId, requestConfig) => { try { loading.value = true; error.value = null; const url = buildApiUrl(`/api/stripe/retrieve-subscription/${subscriptionId}`, void 0, { ...config, ...requestConfig }); const subscription = await makeRequest(url, null, "GET"); return subscription; } catch (err) { const stripeError = { type: "api_error", message: err instanceof Error ? err.message : "Failed to retrieve subscription" }; error.value = stripeError; throw stripeError; } finally { loading.value = false; } }; return { createSubscription, cancelSubscription, retrieveSubscription, loading: readonly(loading), error: readonly(error) }; } export { useSubscriptionsLite }; //# sourceMappingURL=subscriptions-lite.es.js.map