@updatedev/js
Version:
Update JavaScript SDK
157 lines • 3.26 kB
JavaScript
class UpdateBillingClient {
constructor({
requestClient,
hasSessionToken
}) {
this.requestClient = requestClient;
this.hasSessionToken = hasSessionToken;
}
async getProducts() {
const { data, error } = await this.requestClient.request({
endpoint: "/billing/products",
method: "GET"
});
if (error) {
return {
data: {
products: null
},
error: {
message: error.message
}
};
}
return {
data: {
products: data
},
error: null
};
}
async getSubscriptions() {
if (!this.hasSessionToken) {
console.warn(
"@updatedev/js: billing.getSubscriptions() called without a session token. You need to add `getSessionToken` to createClient()."
);
return {
data: {
subscriptions: null
},
error: {
message: "No session token"
}
};
}
const { data, error } = await this.requestClient.request({
endpoint: "/billing/subscriptions",
method: "GET",
extra: {
includeUser: true
}
});
if (error) {
return {
data: {
subscriptions: null
},
error: {
message: error.message
}
};
}
return {
data: {
subscriptions: data
},
error: null
};
}
async updateSubscription(id, { cancel_at_period_end }) {
if (!this.hasSessionToken) {
console.warn(
"@updatedev/js: billing.updateSubscription() called without a session token. You need to add `getSessionToken` to createClient()."
);
return {
data: {
subscription: null
},
error: {
message: "No session token"
}
};
}
const { data, error } = await this.requestClient.request({
endpoint: "/billing/subscriptions/update",
method: "POST",
body: {
id,
cancel_at_period_end
},
extra: {
includeUser: true
}
});
if (error) {
return {
data: {
subscription: null
},
error: {
message: error.message
}
};
}
return {
data: {
subscription: data
},
error: null
};
}
async createCheckoutSession(id, options) {
if (!this.hasSessionToken) {
console.warn(
"@updatedev/js: billing.createCheckoutSession() called without a session token. You need to add `getSessionToken` to createClient()."
);
return {
data: {
url: null
},
error: {
message: "No session token"
}
};
}
const { data, error } = await this.requestClient.request({
endpoint: "/billing/checkout/create",
method: "POST",
body: {
id,
options
},
extra: {
includeUser: true
}
});
if (error) {
return {
data: {
url: null
},
error: {
message: error.message
}
};
}
return {
data: {
url: data
},
error: null
};
}
}
export {
UpdateBillingClient
};
//# sourceMappingURL=UpdateBilling.js.map