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
JavaScript
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