mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-27 00:52:36 +03:00
Ensured correct usage of @tryghost/errors everywhere
refs: 23b383bedf
- @tryghost/error constructors take an object, not a string - the expectation is that message, context & help should all be set
- This does the bare minimum and just ensures message is set correctly
This commit is contained in:
parent
fbdbd7fd43
commit
3dcf85d5e4
@ -43,6 +43,7 @@ module.exports = class JWTTokenProvider {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!claims || typeof claims === 'string') {
|
if (!claims || typeof claims === 'string') {
|
||||||
|
// @TODO: throw a detailed error message here
|
||||||
throw new UnauthorizedError();
|
throw new UnauthorizedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ class MagicLink {
|
|||||||
*/
|
*/
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
if (!options || !options.transporter || !options.tokenProvider || !options.getSigninURL) {
|
if (!options || !options.transporter || !options.tokenProvider || !options.getSigninURL) {
|
||||||
throw new IncorrectUsageError('Missing options. Expects {transporter, tokenProvider, getSigninURL}');
|
throw new IncorrectUsageError({message: 'Missing options. Expects {transporter, tokenProvider, getSigninURL}'});
|
||||||
}
|
}
|
||||||
this.transporter = options.transporter;
|
this.transporter = options.transporter;
|
||||||
this.tokenProvider = options.tokenProvider;
|
this.tokenProvider = options.tokenProvider;
|
||||||
|
@ -88,7 +88,7 @@ class AnalyticEvent {
|
|||||||
} else if (typeof data.memberId === 'string') {
|
} else if (typeof data.memberId === 'string') {
|
||||||
memberId = new ObjectID(data.memberId);
|
memberId = new ObjectID(data.memberId);
|
||||||
} else {
|
} else {
|
||||||
throw new errors.IncorrectUsageError(tpl(messages.missingMemberId));
|
throw new errors.IncorrectUsageError({mesage: tpl(messages.missingMemberId)});
|
||||||
}
|
}
|
||||||
|
|
||||||
let entryId;
|
let entryId;
|
||||||
@ -102,19 +102,19 @@ class AnalyticEvent {
|
|||||||
|
|
||||||
const name = data.name;
|
const name = data.name;
|
||||||
if (typeof name !== 'string') {
|
if (typeof name !== 'string') {
|
||||||
throw new errors.IncorrectUsageError(tpl(messages.invalidEventName));
|
throw new errors.IncorrectUsageError({message: tpl(messages.invalidEventName)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const timestamp = data.timestamp || new Date();
|
const timestamp = data.timestamp || new Date();
|
||||||
|
|
||||||
const sourceUrl = data.sourceUrl;
|
const sourceUrl = data.sourceUrl;
|
||||||
if (!sourceUrl) {
|
if (!sourceUrl) {
|
||||||
throw new errors.IncorrectUsageError(tpl(messages.missingSourceUrl));
|
throw new errors.IncorrectUsageError({message: tpl(messages.missingSourceUrl)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberStatus = data.memberStatus;
|
const memberStatus = data.memberStatus;
|
||||||
if (memberStatus !== 'free' && memberStatus !== 'paid' && memberStatus !== 'comped') {
|
if (memberStatus !== 'free' && memberStatus !== 'paid' && memberStatus !== 'comped') {
|
||||||
throw new errors.IncorrectUsageError(tpl(messages.invalidMemberStatus));
|
throw new errors.IncorrectUsageError({message: tpl(messages.invalidMemberStatus)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const metadata = data.metadata || null;
|
const metadata = data.metadata || null;
|
||||||
|
@ -120,14 +120,14 @@ module.exports = class MemberRepository {
|
|||||||
const memberData = _.pick(data, ['email', 'name', 'note', 'subscribed', 'geolocation', 'created_at', 'products']);
|
const memberData = _.pick(data, ['email', 'name', 'note', 'subscribed', 'geolocation', 'created_at', 'products']);
|
||||||
|
|
||||||
if (memberData.products && memberData.products.length > 1) {
|
if (memberData.products && memberData.products.length > 1) {
|
||||||
throw new errors.BadRequestError(tpl(messages.moreThanOneProduct));
|
throw new errors.BadRequestError({message: tpl(messages.moreThanOneProduct)});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memberData.products) {
|
if (memberData.products) {
|
||||||
for (const productData of memberData.products) {
|
for (const productData of memberData.products) {
|
||||||
const product = await this._productRepository.get(productData);
|
const product = await this._productRepository.get(productData);
|
||||||
if (product.get('active') !== true) {
|
if (product.get('active') !== true) {
|
||||||
throw new errors.BadRequestError(tpl(messages.tierArchived));
|
throw new errors.BadRequestError({message: tpl(messages.tierArchived)});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,7 +223,7 @@ module.exports = class MemberRepository {
|
|||||||
const incomingProductIds = data.products.map(product => product.id);
|
const incomingProductIds = data.products.map(product => product.id);
|
||||||
|
|
||||||
if (incomingProductIds.length > 1 && incomingProductIds.length > existingProductIds.length) {
|
if (incomingProductIds.length > 1 && incomingProductIds.length > existingProductIds.length) {
|
||||||
throw new errors.BadRequestError(tpl(messages.moreThanOneProduct));
|
throw new errors.BadRequestError({message: tpl(messages.moreThanOneProduct)});
|
||||||
}
|
}
|
||||||
|
|
||||||
productsToAdd = _.differenceWith(incomingProductIds, existingProductIds);
|
productsToAdd = _.differenceWith(incomingProductIds, existingProductIds);
|
||||||
@ -237,7 +237,7 @@ module.exports = class MemberRepository {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (existingActiveSubscriptions.length) {
|
if (existingActiveSubscriptions.length) {
|
||||||
throw new errors.BadRequestError(tpl(messages.existingSubscriptions));
|
throw new errors.BadRequestError({message: tpl(messages.existingSubscriptions)});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,7 +257,7 @@ module.exports = class MemberRepository {
|
|||||||
for (const productId of productsToAdd) {
|
for (const productId of productsToAdd) {
|
||||||
const product = await this._productRepository.get({id: productId}, sharedOptions);
|
const product = await this._productRepository.get({id: productId}, sharedOptions);
|
||||||
if (product.get('active') !== true) {
|
if (product.get('active') !== true) {
|
||||||
throw new errors.BadRequestError(tpl(messages.tierArchived));
|
throw new errors.BadRequestError({message: tpl(messages.tierArchived)});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,7 +512,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async linkStripeCustomer(data, options) {
|
async linkStripeCustomer(data, options) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'link Stripe Customer'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'link Stripe Customer'})});
|
||||||
}
|
}
|
||||||
const customer = await this._stripeAPIService.getCustomer(data.customer_id);
|
const customer = await this._stripeAPIService.getCustomer(data.customer_id);
|
||||||
|
|
||||||
@ -546,7 +546,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async linkSubscription(data, options = {}) {
|
async linkSubscription(data, options = {}) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'link Stripe Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'link Stripe Subscription'})});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!options.transacting) {
|
if (!options.transacting) {
|
||||||
@ -569,7 +569,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
if (!customer) {
|
if (!customer) {
|
||||||
// Maybe just link the customer?
|
// Maybe just link the customer?
|
||||||
throw new errors.NotFoundError(tpl(messages.subscriptionNotFound));
|
throw new errors.NotFoundError({message: tpl(messages.subscriptionNotFound)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const subscription = await this._stripeAPIService.getSubscription(data.subscription.id);
|
const subscription = await this._stripeAPIService.getSubscription(data.subscription.id);
|
||||||
@ -802,7 +802,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async getSubscription(data, options) {
|
async getSubscription(data, options) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'get Stripe Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'get Stripe Subscription'})});
|
||||||
}
|
}
|
||||||
|
|
||||||
const member = await this._Member.findOne({
|
const member = await this._Member.findOne({
|
||||||
@ -816,7 +816,7 @@ module.exports = class MemberRepository {
|
|||||||
}).fetchOne(options);
|
}).fetchOne(options);
|
||||||
|
|
||||||
if (!subscription) {
|
if (!subscription) {
|
||||||
throw new errors.NotFoundError(tpl(messages.subscriptionNotFound, {id: data.subscription.subscription_id}));
|
throw new errors.NotFoundError({message: tpl(messages.subscriptionNotFound, {id: data.subscription.subscription_id})});
|
||||||
}
|
}
|
||||||
|
|
||||||
return subscription.toJSON();
|
return subscription.toJSON();
|
||||||
@ -824,7 +824,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async cancelSubscription(data, options) {
|
async cancelSubscription(data, options) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'update Stripe Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'update Stripe Subscription'})});
|
||||||
}
|
}
|
||||||
|
|
||||||
let findQuery = null;
|
let findQuery = null;
|
||||||
@ -835,7 +835,7 @@ module.exports = class MemberRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!findQuery) {
|
if (!findQuery) {
|
||||||
throw new errors.NotFoundError(tpl(messages.subscriptionNotFound));
|
throw new errors.NotFoundError({message: tpl(messages.subscriptionNotFound)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const member = await this._Member.findOne(findQuery);
|
const member = await this._Member.findOne(findQuery);
|
||||||
@ -847,7 +847,7 @@ module.exports = class MemberRepository {
|
|||||||
}).fetchOne(options);
|
}).fetchOne(options);
|
||||||
|
|
||||||
if (!subscription) {
|
if (!subscription) {
|
||||||
throw new errors.NotFoundError(tpl(messages.subscriptionNotFound, {id: data.subscription.subscription_id}));
|
throw new errors.NotFoundError({message: tpl(messages.subscriptionNotFound, {id: data.subscription.subscription_id})});
|
||||||
}
|
}
|
||||||
|
|
||||||
const updatedSubscription = await this._stripeAPIService.cancelSubscription(data.subscription.subscription_id);
|
const updatedSubscription = await this._stripeAPIService.cancelSubscription(data.subscription.subscription_id);
|
||||||
@ -860,7 +860,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async updateSubscription(data, options) {
|
async updateSubscription(data, options) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'update Stripe Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'update Stripe Subscription'})});
|
||||||
}
|
}
|
||||||
|
|
||||||
let findQuery = null;
|
let findQuery = null;
|
||||||
@ -871,7 +871,7 @@ module.exports = class MemberRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!findQuery) {
|
if (!findQuery) {
|
||||||
throw new errors.NotFoundError(tpl(messages.subscriptionNotFound));
|
throw new errors.NotFoundError({message: tpl(messages.subscriptionNotFound)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const member = await this._Member.findOne(findQuery);
|
const member = await this._Member.findOne(findQuery);
|
||||||
@ -883,7 +883,7 @@ module.exports = class MemberRepository {
|
|||||||
}).fetchOne(options);
|
}).fetchOne(options);
|
||||||
|
|
||||||
if (!subscriptionModel) {
|
if (!subscriptionModel) {
|
||||||
throw new errors.NotFoundError(tpl(messages.subscriptionNotFound, {id: data.subscription.subscription_id}));
|
throw new errors.NotFoundError({message: tpl(messages.subscriptionNotFound, {id: data.subscription.subscription_id})});
|
||||||
}
|
}
|
||||||
|
|
||||||
let updatedSubscription;
|
let updatedSubscription;
|
||||||
@ -927,7 +927,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async createSubscription(data, options) {
|
async createSubscription(data, options) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'create Stripe Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'create Stripe Subscription'})});
|
||||||
}
|
}
|
||||||
const member = await this._Member.findOne({
|
const member = await this._Member.findOne({
|
||||||
id: data.id
|
id: data.id
|
||||||
@ -978,7 +978,7 @@ module.exports = class MemberRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'create Complimentary Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'create Complimentary Subscription'})});
|
||||||
}
|
}
|
||||||
const member = await this._Member.findOne({
|
const member = await this._Member.findOne({
|
||||||
id: data.id
|
id: data.id
|
||||||
@ -1000,7 +1000,7 @@ module.exports = class MemberRepository {
|
|||||||
const defaultProduct = productPage && productPage.data && productPage.data[0] && productPage.data[0].toJSON();
|
const defaultProduct = productPage && productPage.data && productPage.data[0] && productPage.data[0].toJSON();
|
||||||
|
|
||||||
if (!defaultProduct) {
|
if (!defaultProduct) {
|
||||||
throw new errors.NotFoundError(tpl(messages.productNotFound));
|
throw new errors.NotFoundError({message: tpl(messages.productNotFound)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const zeroValuePrices = defaultProduct.stripePrices.filter((price) => {
|
const zeroValuePrices = defaultProduct.stripePrices.filter((price) => {
|
||||||
@ -1098,7 +1098,7 @@ module.exports = class MemberRepository {
|
|||||||
|
|
||||||
async cancelComplimentarySubscription(data) {
|
async cancelComplimentarySubscription(data) {
|
||||||
if (!this._stripeAPIService.configured) {
|
if (!this._stripeAPIService.configured) {
|
||||||
throw new errors.BadRequestError(tpl(messages.noStripeConnection, {action: 'cancel Complimentary Subscription'}));
|
throw new errors.BadRequestError({message: tpl(messages.noStripeConnection, {action: 'cancel Complimentary Subscription'})});
|
||||||
}
|
}
|
||||||
|
|
||||||
const member = await this._Member.findOne({
|
const member = await this._Member.findOne({
|
||||||
|
@ -125,7 +125,7 @@ class ProductRepository {
|
|||||||
return await this._Product.findOne({slug: data.slug}, options);
|
return await this._Product.findOne({slug: data.slug}, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new NotFoundError('Missing id, slug, stripe_product_id or stripe_price_id from data');
|
throw new NotFoundError({message: 'Missing id, slug, stripe_product_id or stripe_price_id from data'});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -596,7 +596,7 @@ class ProductRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async destroy() {
|
async destroy() {
|
||||||
throw new MethodNotAllowedError('Cannot destroy products, yet...');
|
throw new MethodNotAllowedError({message: 'Cannot destroy products, yet...'});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ module.exports = class MembersCSVImporter {
|
|||||||
const pathExists = await fs.pathExists(outputFilePath);
|
const pathExists = await fs.pathExists(outputFilePath);
|
||||||
|
|
||||||
if (pathExists) {
|
if (pathExists) {
|
||||||
throw new errors.DataImportError(tpl(messages.filenameCollision));
|
throw new errors.DataImportError({message: tpl(messages.filenameCollision)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const rows = await membersCSV.parse(inputFilePath, headerMapping, defaultLabels);
|
const rows = await membersCSV.parse(inputFilePath, headerMapping, defaultLabels);
|
||||||
@ -115,7 +115,7 @@ module.exports = class MembersCSVImporter {
|
|||||||
const job = await this.getJob(id);
|
const job = await this.getJob(id);
|
||||||
|
|
||||||
if (job.status === 'complete') {
|
if (job.status === 'complete') {
|
||||||
throw new errors.BadRequestError(tpl(messages.jobAlreadyComplete));
|
throw new errors.BadRequestError({message: tpl(messages.jobAlreadyComplete)});
|
||||||
}
|
}
|
||||||
|
|
||||||
const rows = membersCSV.parse(job.filename);
|
const rows = membersCSV.parse(job.filename);
|
||||||
|
@ -52,7 +52,7 @@ const server = require('http').createServer(async (req, res) => {
|
|||||||
server.listen(0, '127.0.0.1', () => {
|
server.listen(0, '127.0.0.1', () => {
|
||||||
const addressInfo = server.address();
|
const addressInfo = server.address();
|
||||||
if (addressInfo === null || typeof addressInfo === 'string') {
|
if (addressInfo === null || typeof addressInfo === 'string') {
|
||||||
throw new TypeError(`Unexpected return value from server.address(): ${addressInfo}`);
|
throw new TypeError(`Unexpected return value from server.address(): ${addressInfo}`); /* eslint-disable-line no-restricted-syntax */
|
||||||
}
|
}
|
||||||
const {address, port} = addressInfo;
|
const {address, port} = addressInfo;
|
||||||
const url = `http://${address}:${port}`;
|
const url = `http://${address}:${port}`;
|
||||||
|
@ -53,13 +53,13 @@ class MembersSSR {
|
|||||||
} = options;
|
} = options;
|
||||||
|
|
||||||
if (!getMembersApi) {
|
if (!getMembersApi) {
|
||||||
throw new IncorrectUsageError('Missing option getMembersApi');
|
throw new IncorrectUsageError({message: 'Missing option getMembersApi'});
|
||||||
}
|
}
|
||||||
|
|
||||||
this._getMembersApi = getMembersApi;
|
this._getMembersApi = getMembersApi;
|
||||||
|
|
||||||
if (!cookieKeys) {
|
if (!cookieKeys) {
|
||||||
throw new IncorrectUsageError('Missing option cookieKeys');
|
throw new IncorrectUsageError({message: 'Missing option cookieKeys'});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sessionCookieName = cookieName;
|
this.sessionCookieName = cookieName;
|
||||||
@ -288,7 +288,9 @@ class MembersSSR {
|
|||||||
*/
|
*/
|
||||||
module.exports = function create(options) {
|
module.exports = function create(options) {
|
||||||
if (!options) {
|
if (!options) {
|
||||||
throw new IncorrectUsageError('Must pass options');
|
throw new IncorrectUsageError({
|
||||||
|
message: 'Must pass options'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return new MembersSSR(options);
|
return new MembersSSR(options);
|
||||||
};
|
};
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
/* eslint-disable max-lines */
|
||||||
|
// @TODO: Reduce file length and remove the line above
|
||||||
|
|
||||||
const DomainEvents = require('@tryghost/domain-events');
|
const DomainEvents = require('@tryghost/domain-events');
|
||||||
const OfferCodeChangeEvent = require('./lib/domain/events/OfferCodeChange');
|
const OfferCodeChangeEvent = require('./lib/domain/events/OfferCodeChange');
|
||||||
const OfferCreatedEvent = require('./lib/domain/events/OfferCreated');
|
const OfferCreatedEvent = require('./lib/domain/events/OfferCreated');
|
||||||
|
@ -20,7 +20,7 @@ class OfferName extends ValueObject {
|
|||||||
return new OfferName(name.trim());
|
return new OfferName(name.trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
static InvalidOfferName = InvalidOfferName
|
static InvalidOfferName = InvalidOfferName;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = OfferName;
|
module.exports = OfferName;
|
||||||
|
@ -19,7 +19,7 @@ class OfferStatus extends ValueObject {
|
|||||||
return new OfferStatus(status);
|
return new OfferStatus(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
static InvalidOfferStatus = InvalidOfferStatus
|
static InvalidOfferStatus = InvalidOfferStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = OfferStatus;
|
module.exports = OfferStatus;
|
||||||
|
@ -19,11 +19,11 @@ class OfferType extends ValueObject {
|
|||||||
return new OfferType(type);
|
return new OfferType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static InvalidOfferType = InvalidOfferType
|
static InvalidOfferType = InvalidOfferType;
|
||||||
|
|
||||||
static Percentage = new OfferType('percent')
|
static Percentage = new OfferType('percent');
|
||||||
|
|
||||||
static Fixed = new OfferType('fixed')
|
static Fixed = new OfferType('fixed');
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = OfferType;
|
module.exports = OfferType;
|
||||||
|
@ -5,7 +5,7 @@ const {isEqual} = require('lodash');
|
|||||||
*/
|
*/
|
||||||
class ValueObject {
|
class ValueObject {
|
||||||
/** @type {{value: T}} */
|
/** @type {{value: T}} */
|
||||||
props
|
props;
|
||||||
|
|
||||||
/** @type T */
|
/** @type T */
|
||||||
get value() {
|
get value() {
|
||||||
|
@ -303,7 +303,7 @@ module.exports = class StripeAPI {
|
|||||||
enabled_events: events
|
enabled_events: events
|
||||||
});
|
});
|
||||||
if (webhook.api_version !== STRIPE_API_VERSION) {
|
if (webhook.api_version !== STRIPE_API_VERSION) {
|
||||||
throw new VersionMismatchError('Webhook has incorrect api_version');
|
throw new VersionMismatchError({message: 'Webhook has incorrect api_version'});
|
||||||
}
|
}
|
||||||
debug(`updateWebhook(${id}, ${url}) -> Success`);
|
debug(`updateWebhook(${id}, ${url}) -> Success`);
|
||||||
return webhook;
|
return webhook;
|
||||||
|
Loading…
Reference in New Issue
Block a user