ghost 4.46.0 → 4.47.0

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.
@@ -4350,6 +4350,6 @@ var i=t.default.create({properties:["name","event","targetUrl"],name(e){Ember.is
4350
4350
  e.default=i})),define("ghost-admin/views/application",["exports"],(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
4351
4351
  var t=Ember.Component.extend({})
4352
4352
  e.default=t})),define("ghost-admin/config/environment",[],(function(){try{var e="ghost-admin/config/environment",t=document.querySelector('meta[name="'+e+'"]').getAttribute("content"),n={default:JSON.parse(decodeURIComponent(t))}
4353
- return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(i){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("ghost-admin/app").default.create({version:"4.46",name:"ghost-admin"})
4353
+ return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(i){throw new Error('Could not read config from meta tag with name "'+e+'".')}})),runningTests||require("ghost-admin/app").default.create({version:"4.47",name:"ghost-admin"})
4354
4354
 
4355
- //# sourceMappingURL=ghost.min-30e597cb65b62b31a9422ca9c0eb2890.map
4355
+ //# sourceMappingURL=ghost.min-d8c670eb115c0acc183584e9d1dfd25b.map
@@ -142,7 +142,7 @@ function serializeMember(member, options) {
142
142
  }
143
143
  // override the `subscribed` param to mean "subscribed to any active newsletter"
144
144
  serialized.subscribed = false;
145
- if (serialized.newsletters.length > 0) {
145
+ if (Array.isArray(serialized.newsletters) && serialized.newsletters.length > 0) {
146
146
  serialized.subscribed = true;
147
147
  }
148
148
  }
@@ -82,9 +82,6 @@ const http = (apiImpl) => {
82
82
  res.status(statusCode);
83
83
 
84
84
  // CASE: generate headers based on the api ctrl configuration
85
- if (req && req.headers && req.headers['accept-version'] && res.locals) {
86
- headers['Content-Version'] = `v${res.locals.safeVersion}`;
87
- }
88
85
  res.set(headers);
89
86
 
90
87
  const send = (format) => {
@@ -4,35 +4,35 @@ const logging = require('@tryghost/logging');
4
4
  const startsWith = require('lodash/startsWith');
5
5
  const {createTransactionalMigration} = require('../../utils');
6
6
 
7
- // This uses the default settings from core/server/data/schema/default-settings/default-settings.json
8
- const newsletter = {
9
- id: (new ObjectId()).toHexString(),
10
- uuid: uuid.v4(),
11
- name: 'Ghost',
12
- description: '',
13
- slug: 'default-newsletter',
14
- sender_name: null,
15
- sender_email: null,
16
- sender_reply_to: 'newsletter',
17
- status: 'active',
18
- visibility: 'members',
19
- subscribe_on_signup: true,
20
- sort_order: 0,
21
- body_font_category: 'sans_serif',
22
- footer_content: '',
23
- header_image: null,
24
- show_badge: true,
25
- show_feature_image: true,
26
- show_header_icon: true,
27
- show_header_title: true,
28
- show_header_name: false,
29
- title_alignment: 'center',
30
- title_font_category: 'sans_serif',
31
- created_at: new Date()
32
- };
33
-
34
7
  module.exports = createTransactionalMigration(
35
8
  async function up(knex) {
9
+ // This uses the default settings from core/server/data/schema/default-settings/default-settings.json
10
+ const newsletter = {
11
+ id: (new ObjectId()).toHexString(),
12
+ uuid: uuid.v4(),
13
+ name: 'Ghost',
14
+ description: '',
15
+ slug: 'default-newsletter',
16
+ sender_name: null,
17
+ sender_email: null,
18
+ sender_reply_to: 'newsletter',
19
+ status: 'active',
20
+ visibility: 'members',
21
+ subscribe_on_signup: true,
22
+ sort_order: 0,
23
+ body_font_category: 'sans_serif',
24
+ footer_content: '',
25
+ header_image: null,
26
+ show_badge: true,
27
+ show_feature_image: true,
28
+ show_header_icon: true,
29
+ show_header_title: true,
30
+ show_header_name: false,
31
+ title_alignment: 'center',
32
+ title_font_category: 'sans_serif',
33
+ created_at: knex.raw('CURRENT_TIMESTAMP')
34
+ };
35
+
36
36
  // Make sure the newsletter table is empty
37
37
  const newsletters = await knex('newsletters').count('*', {as: 'total'});
38
38
 
@@ -68,6 +68,13 @@ module.exports = createTransactionalMigration(
68
68
  if (startsWith(key, 'newsletter_')) {
69
69
  key = key.slice(11);
70
70
  }
71
+
72
+ if (value === null && ['name', 'body_font_category', 'show_badge', 'show_feature_image', 'show_header_icon', 'show_header_title', 'title_alignment', 'title_font_category'].includes(key)) {
73
+ // Prevent setting null to non-nullable columns
74
+ // Default to defaults above in that case
75
+ continue;
76
+ }
77
+
71
78
  if (typeof newsletter[key] === 'boolean') {
72
79
  newsletter[key] = value === 'true';
73
80
  } else {
@@ -0,0 +1,34 @@
1
+ const logging = require('@tryghost/logging');
2
+ const {createTransactionalMigration} = require('../../utils');
3
+ const find = require('lodash/find');
4
+
5
+ module.exports = createTransactionalMigration(
6
+ async function up(knex) {
7
+ logging.info('Migrating sender settings to default newsletter');
8
+
9
+ // Get all settings in one query
10
+ const settings = await knex('settings')
11
+ .whereIn('key', [
12
+ 'members_from_address',
13
+ 'members_reply_address'
14
+ ])
15
+ .select(['key', 'value']);
16
+
17
+ // sender_reply_to and members_reply_address are both enums ['newsletter', 'support']
18
+ const replyTo = find(settings, {key: 'members_reply_address'});
19
+ const fromAddress = find(settings, {key: 'members_from_address'});
20
+
21
+ // Update all newsletters that haven't been (re)configured already
22
+ await knex('newsletters')
23
+ .update({
24
+ // CASE: members_from_address is 'noreply' - we leave it as null to maintain fallback behaviour
25
+ sender_email: !fromAddress || fromAddress.value === 'noreply' ? undefined : fromAddress.value,
26
+ sender_reply_to: replyTo ? replyTo.value : undefined
27
+ })
28
+ .whereNull('sender_email')
29
+ .where('sender_reply_to', 'newsletter');
30
+ },
31
+ async function down() {
32
+ // no-op
33
+ }
34
+ );
@@ -0,0 +1,26 @@
1
+ const logging = require('@tryghost/logging');
2
+ const urlUtils = require('../../../../../shared/url-utils');
3
+ const {createTransactionalMigration} = require('../../utils');
4
+
5
+ module.exports = createTransactionalMigration(
6
+ async function up(knex) {
7
+ const newsletters = await knex.select('id', 'header_image').from('newsletters').whereNotNull('header_image');
8
+
9
+ logging.info(`Transforming header_image to transformReady format for ${newsletters.length} newsletters.`);
10
+
11
+ // eslint-disable-next-line no-restricted-syntax
12
+ for (const newsletter of newsletters) {
13
+ await knex('newsletters').update('header_image', urlUtils.toTransformReady(newsletter.header_image)).where('id', newsletter.id);
14
+ }
15
+ },
16
+ async function down(knex) {
17
+ const newsletters = await knex.select('id', 'header_image').from('newsletters').whereNotNull('header_image');
18
+
19
+ logging.info(`Transforming header_image to absolute format for ${newsletters.length} newsletters.`);
20
+
21
+ // eslint-disable-next-line no-restricted-syntax
22
+ for (const newsletter of newsletters) {
23
+ await knex('newsletters').update('header_image', urlUtils.transformReadyToAbsolute(newsletter.header_image)).where('id', newsletter.id);
24
+ }
25
+ }
26
+ );
@@ -1,6 +1,7 @@
1
1
  const ghostBookshelf = require('./base');
2
2
  const ObjectID = require('bson-objectid');
3
3
  const uuid = require('uuid');
4
+ const urlUtils = require('../../shared/url-utils');
4
5
 
5
6
  const Newsletter = ghostBookshelf.Model.extend({
6
7
  tableName: 'newsletters',
@@ -74,6 +75,28 @@ const Newsletter = ghostBookshelf.Model.extend({
74
75
  }
75
76
 
76
77
  return query;
78
+ },
79
+
80
+ formatOnWrite(attrs) {
81
+ ['header_image'].forEach((attr) => {
82
+ if (attrs[attr]) {
83
+ attrs[attr] = urlUtils.toTransformReady(attrs[attr]);
84
+ }
85
+ });
86
+
87
+ return attrs;
88
+ },
89
+
90
+ parse() {
91
+ const attrs = ghostBookshelf.Model.prototype.parse.apply(this, arguments);
92
+
93
+ ['header_image'].forEach((attr) => {
94
+ if (attrs[attr]) {
95
+ attrs[attr] = urlUtils.transformReadyToAbsolute(attrs[attr]);
96
+ }
97
+ });
98
+
99
+ return attrs;
77
100
  }
78
101
  }, {
79
102
  orderDefaultRaw: function () {
@@ -1,9 +1,13 @@
1
1
  const APIVersionCompatibilityService = require('@tryghost/api-version-compatibility-service');
2
2
  const VersionNotificationsDataService = require('@tryghost/version-notifications-data-service');
3
+ const versionMismatchHandler = require('@tryghost/mw-api-version-mismatch');
3
4
  // const {GhostMailer} = require('../mail');
4
5
  const settingsService = require('../../services/settings');
5
6
  const models = require('../../models');
6
7
  const logging = require('@tryghost/logging');
8
+ const ghostVersion = require('@tryghost/version');
9
+
10
+ let serviceInstance;
7
11
 
8
12
  const init = () => {
9
13
  //const ghostMailer = new GhostMailer();
@@ -12,7 +16,7 @@ const init = () => {
12
16
  settingsService: settingsService.getSettingsBREADServiceInstance()
13
17
  });
14
18
 
15
- this.APIVersionCompatibilityServiceInstance = new APIVersionCompatibilityService({
19
+ serviceInstance = new APIVersionCompatibilityService({
16
20
  sendEmail: (options) => {
17
21
  // NOTE: not using bind here because mockMailer is having trouble mocking bound methods
18
22
  //return ghostMailer.send(options);
@@ -25,5 +29,15 @@ const init = () => {
25
29
  });
26
30
  };
27
31
 
28
- module.exports.APIVersionCompatibilityServiceInstance;
32
+ module.exports.errorHandler = (req, res, next) => {
33
+ return versionMismatchHandler(serviceInstance)(req, res, next);
34
+ };
35
+
36
+ module.exports.contentVersion = (req, res, next) => {
37
+ if (req.header('accept-version')) {
38
+ res.header('Content-Version', `v${ghostVersion.safe}`);
39
+ }
40
+ next();
41
+ };
42
+
29
43
  module.exports.init = init;
@@ -4,7 +4,6 @@ const tpl = require('@tryghost/tpl');
4
4
  const {URL} = require('url');
5
5
  const crypto = require('crypto');
6
6
  const createKeypair = require('keypair');
7
- const path = require('path');
8
7
 
9
8
  const messages = {
10
9
  incorrectKeyType: 'type must be one of "direct" or "connect".'
@@ -36,13 +35,8 @@ class MembersConfigProvider {
36
35
  }
37
36
 
38
37
  getEmailFromAddress() {
39
- const fromAddress = this._settingsCache.get('members_from_address') || 'noreply';
40
-
41
- // Any fromAddress without domain uses site domain, like default setting `noreply`
42
- if (fromAddress.indexOf('@') < 0) {
43
- return `${fromAddress}@${this._getDomain()}`;
44
- }
45
- return fromAddress;
38
+ // Individual from addresses are set per newsletter - this is the fallback address
39
+ return `noreply@${this._getDomain()}`;
46
40
  }
47
41
 
48
42
  getEmailSupportAddress() {
@@ -190,10 +184,7 @@ class MembersConfigProvider {
190
184
  }
191
185
 
192
186
  getTokenConfig() {
193
- const {href: membersApiUrl} = new URL(
194
- this._urlUtils.getApiPath({version: 'v4', type: 'members'}),
195
- this._urlUtils.urlFor('admin', true)
196
- );
187
+ const membersApiUrl = this._urlUtils.urlFor({relativeUrl: '/members/api'}, true);
197
188
 
198
189
  let privateKey = this._settingsCache.get('members_private_key');
199
190
  let publicKey = this._settingsCache.get('members_public_key');
@@ -213,12 +204,11 @@ class MembersConfigProvider {
213
204
  }
214
205
 
215
206
  getSigninURL(token, type) {
216
- const siteUrl = this._urlUtils.getSiteUrl();
207
+ const siteUrl = this._urlUtils.urlFor({relativeUrl: '/members/'}, true);
217
208
  const signinURL = new URL(siteUrl);
218
- signinURL.pathname = path.join(signinURL.pathname, '/members/');
219
209
  signinURL.searchParams.set('token', token);
220
210
  signinURL.searchParams.set('action', type);
221
- return signinURL.href;
211
+ return signinURL.toString();
222
212
  }
223
213
  }
224
214
 
@@ -157,12 +157,12 @@ module.exports = {
157
157
  });
158
158
 
159
159
  new LastSeenAtUpdater({
160
- models: {
161
- Member: models.Member
162
- },
163
160
  services: {
164
161
  domainEvents: DomainEvents,
165
162
  settingsCache
163
+ },
164
+ async getMembersApi() {
165
+ return membersApi;
166
166
  }
167
167
  });
168
168
 
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.46%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.47%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -57,7 +57,7 @@
57
57
 
58
58
 
59
59
  <script src="assets/vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js"></script>
60
- <script src="assets/ghost.min-30e597cb65b62b31a9422ca9c0eb2890.js"></script>
60
+ <script src="assets/ghost.min-d8c670eb115c0acc183584e9d1dfd25b.js"></script>
61
61
 
62
62
  </body>
63
63
  </html>
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.46%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22rootURL%22%3A%22%2F%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%224.47%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22moment%22%3A%7B%22includeTimezone%22%3A%22all%22%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -57,7 +57,7 @@
57
57
 
58
58
 
59
59
  <script src="assets/vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js"></script>
60
- <script src="assets/ghost.min-30e597cb65b62b31a9422ca9c0eb2890.js"></script>
60
+ <script src="assets/ghost.min-d8c670eb115c0acc183584e9d1dfd25b.js"></script>
61
61
 
62
62
  </body>
63
63
  </html>
@@ -4,8 +4,7 @@ const express = require('../../../shared/express');
4
4
  const urlUtils = require('../../../shared/url-utils');
5
5
  const sentry = require('../../../shared/sentry');
6
6
  const errorHandler = require('@tryghost/mw-error-handler');
7
- const versionMissmatchHandler = require('@tryghost/mw-api-version-mismatch');
8
- const {APIVersionCompatibilityServiceInstance} = require('../../services/api-version-compatibility');
7
+ const APIVersionCompatibilityService = require('../../services/api-version-compatibility');
9
8
 
10
9
  module.exports = function setupApiApp() {
11
10
  debug('Parent API setup start');
@@ -15,6 +14,8 @@ module.exports = function setupApiApp() {
15
14
  apiApp.use(require('./testmode')());
16
15
  }
17
16
 
17
+ apiApp.use(APIVersionCompatibilityService.contentVersion);
18
+
18
19
  apiApp.lazyUse(urlUtils.getVersionPath({version: 'v2', type: 'content'}), require('./v2/content/app'));
19
20
  apiApp.lazyUse(urlUtils.getVersionPath({version: 'v2', type: 'admin'}), require('./v2/admin/app'));
20
21
 
@@ -32,7 +33,7 @@ module.exports = function setupApiApp() {
32
33
 
33
34
  // Error handling for requests to non-existent API versions
34
35
  apiApp.use(errorHandler.resourceNotFound);
35
- apiApp.use(versionMissmatchHandler(APIVersionCompatibilityServiceInstance));
36
+ apiApp.use(APIVersionCompatibilityService.errorHandler);
36
37
  apiApp.use(errorHandler.handleJSONResponse(sentry));
37
38
 
38
39
  debug('Parent API setup end');
@@ -5,10 +5,9 @@ const bodyParser = require('body-parser');
5
5
  const shared = require('../../../shared');
6
6
  const apiMw = require('../../middleware');
7
7
  const errorHandler = require('@tryghost/mw-error-handler');
8
- const versionMissmatchHandler = require('@tryghost/mw-api-version-mismatch');
9
8
  const sentry = require('../../../../../shared/sentry');
10
9
  const routes = require('./routes');
11
- const {APIVersionCompatibilityServiceInstance} = require('../../../../services/api-version-compatibility');
10
+ const APIVersionCompatibilityService = require('../../../../services/api-version-compatibility');
12
11
 
13
12
  module.exports = function setupApiApp() {
14
13
  debug('Admin API canary setup start');
@@ -35,7 +34,7 @@ module.exports = function setupApiApp() {
35
34
 
36
35
  // API error handling
37
36
  apiApp.use(errorHandler.resourceNotFound);
38
- apiApp.use(versionMissmatchHandler(APIVersionCompatibilityServiceInstance));
37
+ apiApp.use(APIVersionCompatibilityService.errorHandler);
39
38
  apiApp.use(errorHandler.handleJSONResponseV2(sentry));
40
39
 
41
40
  debug('Admin API canary setup end');
@@ -7,8 +7,7 @@ const shared = require('../../../shared');
7
7
  const apiMw = require('../../middleware');
8
8
  const routes = require('./routes');
9
9
  const errorHandler = require('@tryghost/mw-error-handler');
10
- const versionMissmatchHandler = require('@tryghost/mw-api-version-mismatch');
11
- const {APIVersionCompatibilityServiceInstance} = require('../../../../services/api-version-compatibility');
10
+ const APIVersionCompatibilityService = require('../../../../services/api-version-compatibility');
12
11
 
13
12
  module.exports = function setupApiApp() {
14
13
  debug('Admin API v2 setup start');
@@ -35,7 +34,7 @@ module.exports = function setupApiApp() {
35
34
 
36
35
  // API error handling
37
36
  apiApp.use(errorHandler.resourceNotFound);
38
- apiApp.use(versionMissmatchHandler(APIVersionCompatibilityServiceInstance));
37
+ apiApp.use(APIVersionCompatibilityService.errorHandler);
39
38
  apiApp.use(errorHandler.handleJSONResponseV2(sentry));
40
39
 
41
40
  debug('Admin API v2 setup end');
@@ -7,8 +7,7 @@ const shared = require('../../../shared');
7
7
  const apiMw = require('../../middleware');
8
8
  const routes = require('./routes');
9
9
  const errorHandler = require('@tryghost/mw-error-handler');
10
- const versionMissmatchHandler = require('@tryghost/mw-api-version-mismatch');
11
- const {APIVersionCompatibilityServiceInstance} = require('../../../../services/api-version-compatibility');
10
+ const APIVersionCompatibilityService = require('../../../../services/api-version-compatibility');
12
11
 
13
12
  module.exports = function setupApiApp() {
14
13
  debug('Admin API v3 setup start');
@@ -35,7 +34,7 @@ module.exports = function setupApiApp() {
35
34
 
36
35
  // API error handling
37
36
  apiApp.use(errorHandler.resourceNotFound);
38
- apiApp.use(versionMissmatchHandler(APIVersionCompatibilityServiceInstance));
37
+ apiApp.use(APIVersionCompatibilityService.errorHandler);
39
38
  apiApp.use(errorHandler.handleJSONResponseV2(sentry));
40
39
 
41
40
  debug('Admin API v3 setup end');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "4.46.0",
3
+ "version": "4.47.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -67,11 +67,11 @@
67
67
  "@tryghost/custom-theme-settings-service": "0.3.2",
68
68
  "@tryghost/database-info": "0.3.3",
69
69
  "@tryghost/debug": "0.1.16",
70
- "@tryghost/domain-events": "0.1.10",
70
+ "@tryghost/domain-events": "0.1.12",
71
71
  "@tryghost/email-analytics-provider-mailgun": "1.0.8",
72
72
  "@tryghost/email-analytics-service": "1.0.6",
73
73
  "@tryghost/errors": "1.2.12",
74
- "@tryghost/express-dynamic-redirects": "0.2.9",
74
+ "@tryghost/express-dynamic-redirects": "0.2.11",
75
75
  "@tryghost/helpers": "1.1.64",
76
76
  "@tryghost/image-transform": "1.0.30",
77
77
  "@tryghost/job-manager": "0.8.22",
@@ -82,14 +82,14 @@
82
82
  "@tryghost/kg-mobiledoc-html-renderer": "5.3.5",
83
83
  "@tryghost/limit-service": "1.1.0",
84
84
  "@tryghost/logging": "2.1.8",
85
- "@tryghost/magic-link": "1.0.22",
86
- "@tryghost/member-events": "0.4.2",
87
- "@tryghost/members-api": "6.2.3",
88
- "@tryghost/members-events-service": "0.3.4",
89
- "@tryghost/members-importer": "0.5.10",
90
- "@tryghost/members-offers": "0.11.2",
91
- "@tryghost/members-ssr": "1.0.24",
92
- "@tryghost/members-stripe-service": "0.10.1",
85
+ "@tryghost/magic-link": "1.0.24",
86
+ "@tryghost/member-events": "0.4.4",
87
+ "@tryghost/members-api": "6.3.1",
88
+ "@tryghost/members-events-service": "0.4.1",
89
+ "@tryghost/members-importer": "0.5.12",
90
+ "@tryghost/members-offers": "0.11.4",
91
+ "@tryghost/members-ssr": "1.0.26",
92
+ "@tryghost/members-stripe-service": "0.10.3",
93
93
  "@tryghost/metrics": "1.0.11",
94
94
  "@tryghost/minifier": "0.1.13",
95
95
  "@tryghost/mw-api-version-mismatch": "0.1.1",
@@ -111,7 +111,7 @@
111
111
  "@tryghost/update-check-service": "0.3.2",
112
112
  "@tryghost/url-utils": "2.1.0",
113
113
  "@tryghost/validator": "0.1.24",
114
- "@tryghost/verification-trigger": "0.2.1",
114
+ "@tryghost/verification-trigger": "0.2.3",
115
115
  "@tryghost/version": "0.1.14",
116
116
  "@tryghost/version-notifications-data-service": "0.1.0",
117
117
  "@tryghost/vhost-middleware": "1.0.24",
package/yarn.lock CHANGED
@@ -1892,10 +1892,10 @@
1892
1892
  "@tryghost/root-utils" "^0.3.14"
1893
1893
  debug "^4.3.1"
1894
1894
 
1895
- "@tryghost/domain-events@0.1.10", "@tryghost/domain-events@^0.1.10":
1896
- version "0.1.10"
1897
- resolved "https://registry.yarnpkg.com/@tryghost/domain-events/-/domain-events-0.1.10.tgz#1a657c7964b928ac63e7ada87902d6fa5d4f5a7a"
1898
- integrity sha512-C6xqg8VC5KgfgZ0X4zMUcoRBEDk7DS8xSepbIfZx61UZHbJRUMfbZ+AklGdnNQmQFxBc3eUCLAOByF6k1HXvTQ==
1895
+ "@tryghost/domain-events@0.1.12", "@tryghost/domain-events@^0.1.12":
1896
+ version "0.1.12"
1897
+ resolved "https://registry.yarnpkg.com/@tryghost/domain-events/-/domain-events-0.1.12.tgz#a6f59d0d7aeb7d8f0a7493e055ed3b795e783232"
1898
+ integrity sha512-DY70kL0x+/VEJsqmjZ4Q3UJPOFJ8m+sT8443E+AEgTGFiERfSVuTsVVlYtQm0hQV5faowQJtGcXQqtG1Lka0ig==
1899
1899
 
1900
1900
  "@tryghost/elasticsearch-bunyan@0.1.1":
1901
1901
  version "0.1.1"
@@ -1948,10 +1948,10 @@
1948
1948
  utils-copy-error "^1.0.1"
1949
1949
  uuid "^8.3.2"
1950
1950
 
1951
- "@tryghost/express-dynamic-redirects@0.2.9":
1952
- version "0.2.9"
1953
- resolved "https://registry.yarnpkg.com/@tryghost/express-dynamic-redirects/-/express-dynamic-redirects-0.2.9.tgz#62094c67bce0c5e6918a292e8a7e0d8d4c72aa16"
1954
- integrity sha512-BguBNvq+E/wEiJ+FJv5C5g0Q9Xj4PZEwy5Zs7GWkqUFGiDB3Evfpsj02MucNyuC1ysxz1FwpEyr2NRxk65ZkQg==
1951
+ "@tryghost/express-dynamic-redirects@0.2.11":
1952
+ version "0.2.11"
1953
+ resolved "https://registry.yarnpkg.com/@tryghost/express-dynamic-redirects/-/express-dynamic-redirects-0.2.11.tgz#7b2906c21d40923e0431d1ba98bb613a8f1caad3"
1954
+ integrity sha512-JzodLoRxNXjBT3zdBfiagpgOkLooa1houoskU8NqEIsfMfrszb468jon5EALVOS9y57Hff0V7x8ulf2gTjPy1g==
1955
1955
 
1956
1956
  "@tryghost/express-test@0.10.0":
1957
1957
  version "0.10.0"
@@ -2108,55 +2108,55 @@
2108
2108
  json-stringify-safe "^5.0.1"
2109
2109
  lodash "^4.17.21"
2110
2110
 
2111
- "@tryghost/magic-link@1.0.22", "@tryghost/magic-link@^1.0.22":
2112
- version "1.0.22"
2113
- resolved "https://registry.yarnpkg.com/@tryghost/magic-link/-/magic-link-1.0.22.tgz#1bfa1fa93efb0d493f242ed400e8b663fc0c7e60"
2114
- integrity sha512-d+uut21jb3iW6x7yqMvNcd7nBT5Y2VMTu4pFVA+eXkFQSQxFY+AD3qSeJxkSXp5KxFpKOZRRJycrG2Ppsh8TaA==
2111
+ "@tryghost/magic-link@1.0.24", "@tryghost/magic-link@^1.0.24":
2112
+ version "1.0.24"
2113
+ resolved "https://registry.yarnpkg.com/@tryghost/magic-link/-/magic-link-1.0.24.tgz#6cbcb46640cd7d0b327e442d60837dbc5c4ddd80"
2114
+ integrity sha512-BmN+jFgBgpawZs/sj95fW9skrDjGoOYB55xMrMwkAlPVZRXBIwceI2Lrecn5doQgi5eDzkgWqsBomuV9dP40Mw==
2115
2115
  dependencies:
2116
2116
  bluebird "^3.5.5"
2117
2117
  jsonwebtoken "^8.5.1"
2118
2118
  lodash "^4.17.15"
2119
2119
 
2120
- "@tryghost/member-analytics-service@^0.1.12":
2121
- version "0.1.12"
2122
- resolved "https://registry.yarnpkg.com/@tryghost/member-analytics-service/-/member-analytics-service-0.1.12.tgz#dbf3ef1ee7e7732ca9e162a0b10608207ebf9032"
2123
- integrity sha512-Mat32Q1rIo1N5WvjzJsyterBzVhEkSkAbsCa8nXOPsmCk/rRmOY9aO/KD6B6wQB84whMgK0Y2+QpYQk2lLmVtQ==
2120
+ "@tryghost/member-analytics-service@^0.1.14":
2121
+ version "0.1.14"
2122
+ resolved "https://registry.yarnpkg.com/@tryghost/member-analytics-service/-/member-analytics-service-0.1.14.tgz#04eed2461e448dabcbef32bdf9d7bdd49b6d5e98"
2123
+ integrity sha512-atKb2EtKkhH174JrG0RTcJGG0nEypbyIY5CrXTAbfXA3aOEpdM5zFKS7gcDLje+A8BIyJRt07I5f72VngjJcNw==
2124
2124
  dependencies:
2125
- "@tryghost/domain-events" "^0.1.10"
2125
+ "@tryghost/domain-events" "^0.1.12"
2126
2126
  "@tryghost/errors" "^1.0.0"
2127
- "@tryghost/member-events" "^0.4.2"
2127
+ "@tryghost/member-events" "^0.4.4"
2128
2128
  "@tryghost/tpl" "^0.1.4"
2129
2129
  bson-objectid "^2.0.1"
2130
2130
 
2131
- "@tryghost/member-events@0.4.2", "@tryghost/member-events@^0.4.2":
2132
- version "0.4.2"
2133
- resolved "https://registry.yarnpkg.com/@tryghost/member-events/-/member-events-0.4.2.tgz#d1266abad38aa0b8f9b9f3395b083971e85221bf"
2134
- integrity sha512-4VlGlB9uq3xxgeW3OXx9//Yb1kiRm7HbVVGiBJ9LMMjeoKZnpUQA9zHyY5FUK4Aolvz/wyxjb4Ci7JNjvoMrJg==
2131
+ "@tryghost/member-events@0.4.4", "@tryghost/member-events@^0.4.4":
2132
+ version "0.4.4"
2133
+ resolved "https://registry.yarnpkg.com/@tryghost/member-events/-/member-events-0.4.4.tgz#8185d7924d0e341bb93084d6b3e97f1cadd3dac6"
2134
+ integrity sha512-p/KlP0EzXeR2AE134kh+TnPgUcnnh+3QoVWmIYOunayJVv177HBaHu7a9yX5PYJ9RxQcCJn4UmuAPloW+3mjnw==
2135
2135
 
2136
- "@tryghost/members-analytics-ingress@^0.1.13":
2137
- version "0.1.13"
2138
- resolved "https://registry.yarnpkg.com/@tryghost/members-analytics-ingress/-/members-analytics-ingress-0.1.13.tgz#6ab72155aea2defe44b88c79520d645f6dd54c78"
2139
- integrity sha512-XaEll3ea0yXJofdiP1a2I6GWnc+kPcoMe8lWZ3r8qOVtfD7Yynkd3sL7JBC9I3RRihCQYxmKka7+AOTh69V+XA==
2136
+ "@tryghost/members-analytics-ingress@^0.1.15":
2137
+ version "0.1.15"
2138
+ resolved "https://registry.yarnpkg.com/@tryghost/members-analytics-ingress/-/members-analytics-ingress-0.1.15.tgz#d4f751b7dc33dfe383e8958f3d8f84ce962b124c"
2139
+ integrity sha512-nCQIdLUqnAzehPu5glCj5EaRV/+C5wiBC5stSiJ4M9yrn7Zn+7AKe6Da2xuql6Iii8r3nK7ZYra4MvV6G9fVcA==
2140
2140
  dependencies:
2141
- "@tryghost/domain-events" "^0.1.10"
2142
- "@tryghost/member-events" "^0.4.2"
2141
+ "@tryghost/domain-events" "^0.1.12"
2142
+ "@tryghost/member-events" "^0.4.4"
2143
2143
 
2144
- "@tryghost/members-api@6.2.3":
2145
- version "6.2.3"
2146
- resolved "https://registry.yarnpkg.com/@tryghost/members-api/-/members-api-6.2.3.tgz#739bd24ce05062362abeb58a6952f86e0550beae"
2147
- integrity sha512-qcncr5REGc3dl7oQMDwjpucKzOBtbkiBHT5RLMZUUGMstM7S+sGxTRZEa0Ebt1HQy6sTdt6pElyshK95m4T2XQ==
2144
+ "@tryghost/members-api@6.3.1":
2145
+ version "6.3.1"
2146
+ resolved "https://registry.yarnpkg.com/@tryghost/members-api/-/members-api-6.3.1.tgz#65f62075936cd7ee5dab4b818c4e90ae69a8814d"
2147
+ integrity sha512-FMCv2Q3hl8EN0xbyJVnsOfUCJ8MQiXxgmPYwc01n4nfyLM95WjueVB1rH7KOrjy8vIPuw8D4qKAyItHF/k/XHw==
2148
2148
  dependencies:
2149
2149
  "@nexes/nql" "^0.6.0"
2150
2150
  "@tryghost/debug" "^0.1.2"
2151
- "@tryghost/domain-events" "^0.1.10"
2151
+ "@tryghost/domain-events" "^0.1.12"
2152
2152
  "@tryghost/errors" "^1.1.1"
2153
2153
  "@tryghost/logging" "^2.0.0"
2154
- "@tryghost/magic-link" "^1.0.22"
2155
- "@tryghost/member-analytics-service" "^0.1.12"
2156
- "@tryghost/member-events" "^0.4.2"
2157
- "@tryghost/members-analytics-ingress" "^0.1.13"
2158
- "@tryghost/members-payments" "^0.3.2"
2159
- "@tryghost/members-stripe-service" "^0.10.1"
2154
+ "@tryghost/magic-link" "^1.0.24"
2155
+ "@tryghost/member-analytics-service" "^0.1.14"
2156
+ "@tryghost/member-events" "^0.4.4"
2157
+ "@tryghost/members-analytics-ingress" "^0.1.15"
2158
+ "@tryghost/members-payments" "^0.3.4"
2159
+ "@tryghost/members-stripe-service" "^0.10.3"
2160
2160
  "@tryghost/tpl" "^0.1.2"
2161
2161
  "@types/jsonwebtoken" "^8.5.1"
2162
2162
  bluebird "^3.5.4"
@@ -2169,10 +2169,10 @@
2169
2169
  lodash "^4.17.11"
2170
2170
  node-jose "^2.0.0"
2171
2171
 
2172
- "@tryghost/members-csv@^1.2.11":
2173
- version "1.2.11"
2174
- resolved "https://registry.yarnpkg.com/@tryghost/members-csv/-/members-csv-1.2.11.tgz#dd2eaec417a2671786e8b827fa1dd64f4edd2a4c"
2175
- integrity sha512-qxbcqnJSja3L/5UOlBIsGtySyHvpYNyM+qmv8EWiLSBcrE2cPorhlwZZI9BUM4ZW2FQ90cEihgADoueNdniX0Q==
2172
+ "@tryghost/members-csv@^1.2.13":
2173
+ version "1.2.13"
2174
+ resolved "https://registry.yarnpkg.com/@tryghost/members-csv/-/members-csv-1.2.13.tgz#1db33fbba243c6ff7864dd4b1484118f93b4e86b"
2175
+ integrity sha512-D3cNY1BsxAeAJLXG4qzL0OG44PTbh+MHnGfYZuHlMGmBIsb+wJ80J5tV1m26ulkM+pDXbfhpIh8qJubevH2sLw==
2176
2176
  dependencies:
2177
2177
  bluebird "^3.7.2"
2178
2178
  fs-extra "^10.0.0"
@@ -2180,45 +2180,45 @@
2180
2180
  papaparse "^5.3.2"
2181
2181
  pump "^3.0.0"
2182
2182
 
2183
- "@tryghost/members-events-service@0.3.4":
2184
- version "0.3.4"
2185
- resolved "https://registry.yarnpkg.com/@tryghost/members-events-service/-/members-events-service-0.3.4.tgz#c22e3d6acb498f06605140465d1c869a91eea0cb"
2186
- integrity sha512-p69fo4KlP9eUT64wYjjRAGRVq2zyPYuSgTO20VT3qjy2maq/kgc589v6djhJ1Q5I9xGBBYgpRJC/CHm+T/yFVg==
2183
+ "@tryghost/members-events-service@0.4.1":
2184
+ version "0.4.1"
2185
+ resolved "https://registry.yarnpkg.com/@tryghost/members-events-service/-/members-events-service-0.4.1.tgz#8f61119bce1341f8cc13189b166988814ad32acb"
2186
+ integrity sha512-WA7FCfD6vtSGqiKnPwR0t5HdZFIC7nTTqj4Wcar6ZMtQK1ImgZ6fAxxX/pU/GZJ4/FFMcFcS2DNuO9qcw0kdUw==
2187
2187
  dependencies:
2188
- "@tryghost/domain-events" "^0.1.10"
2189
- "@tryghost/member-events" "^0.4.2"
2188
+ "@tryghost/domain-events" "^0.1.12"
2189
+ "@tryghost/member-events" "^0.4.4"
2190
2190
  moment-timezone "^0.5.34"
2191
2191
 
2192
- "@tryghost/members-importer@0.5.10":
2193
- version "0.5.10"
2194
- resolved "https://registry.yarnpkg.com/@tryghost/members-importer/-/members-importer-0.5.10.tgz#4daf2306eccbcc36b72384eacde4cebd7b755e44"
2195
- integrity sha512-kf5QykVadbCNDQ7YeE6fz0Reiq+sz1q9dThh/kq9YqQ0V0qLOF4cRykCGUP00eh1ndOECz8zJWXxd2TIe+K52w==
2192
+ "@tryghost/members-importer@0.5.12":
2193
+ version "0.5.12"
2194
+ resolved "https://registry.yarnpkg.com/@tryghost/members-importer/-/members-importer-0.5.12.tgz#34d3b58d4317eff8dda5dbe2ec43e8e7cdf50441"
2195
+ integrity sha512-a/ihw4ssldq5eQJDU16c+BOSDlqdoHqhiTDwfBknnA0F/UtvTKRPrzzCpgfdggGRiZhe4BhzmXTlHGj2EpUwgg==
2196
2196
  dependencies:
2197
2197
  "@tryghost/errors" "^1.0.0"
2198
- "@tryghost/members-csv" "^1.2.11"
2198
+ "@tryghost/members-csv" "^1.2.13"
2199
2199
  "@tryghost/tpl" "^0.1.3"
2200
2200
  moment-timezone "^0.5.23"
2201
2201
 
2202
- "@tryghost/members-offers@0.11.2", "@tryghost/members-offers@^0.11.2":
2203
- version "0.11.2"
2204
- resolved "https://registry.yarnpkg.com/@tryghost/members-offers/-/members-offers-0.11.2.tgz#8c53344055fbd8dbec203f166ce74a12e0085aec"
2205
- integrity sha512-sAhrHm3ShFtf+5Tz8MfALriDPgdgKISRFXZ9j4bldu5uZrjwSJMWJwH3z/wtwdWix9yL1mNxH9EE+hjPMZzAzg==
2202
+ "@tryghost/members-offers@0.11.4", "@tryghost/members-offers@^0.11.4":
2203
+ version "0.11.4"
2204
+ resolved "https://registry.yarnpkg.com/@tryghost/members-offers/-/members-offers-0.11.4.tgz#11a043df0e84fd169d21e523633eeff2d9edbfaf"
2205
+ integrity sha512-Nir9kKRUgu16EwcNDhHakK+SqaL1zXg5MlWi98CgHsV/Ims7VVwACZVLcko27zoSOq/WM5cstgQofGhD/Hm+lA==
2206
2206
  dependencies:
2207
2207
  "@nexes/mongo-utils" "^0.3.1"
2208
2208
  "@tryghost/string" "^0.1.20"
2209
2209
 
2210
- "@tryghost/members-payments@^0.3.2":
2211
- version "0.3.2"
2212
- resolved "https://registry.yarnpkg.com/@tryghost/members-payments/-/members-payments-0.3.2.tgz#f48e5a61a726d3a0f233925ecc1eb0643172e539"
2213
- integrity sha512-qbxw9oix49+iFzHHtO5M2dUcde9AApc3FWR0SFCIZdi08cQnQnqyEzg2T6QtQHH+k8/5WMZBewHzHd2tXlGfBA==
2210
+ "@tryghost/members-payments@^0.3.4":
2211
+ version "0.3.4"
2212
+ resolved "https://registry.yarnpkg.com/@tryghost/members-payments/-/members-payments-0.3.4.tgz#3e072283e1ecfd8448f9f53e8dfb9be8eed99297"
2213
+ integrity sha512-CuZTL6u6E28r0bPD7ckZoWT6ASspjgnvZwD5xSltkBxaPtwaKMkmki0oeo6/x0h+xcfC0S36QUtDDj85BPqb1w==
2214
2214
  dependencies:
2215
- "@tryghost/domain-events" "^0.1.10"
2216
- "@tryghost/members-offers" "^0.11.2"
2215
+ "@tryghost/domain-events" "^0.1.12"
2216
+ "@tryghost/members-offers" "^0.11.4"
2217
2217
 
2218
- "@tryghost/members-ssr@1.0.24":
2219
- version "1.0.24"
2220
- resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-1.0.24.tgz#12c2d8af366754a1eb3e71f7ffb17e3859526d7c"
2221
- integrity sha512-8LBkE1uj/kRkoY9C+hrVsa2gk4bfkuUI+bOfsF9XQvWjTOQlbY/KFoEN5twxhiw90zFRMqR8bWzfL4EEaaILVg==
2218
+ "@tryghost/members-ssr@1.0.26":
2219
+ version "1.0.26"
2220
+ resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-1.0.26.tgz#5995e602f08b6071da8f8c8b74a4a938a2011263"
2221
+ integrity sha512-IutbC280Ymvcu4yfjxz6OFrgxYcdtnMewcbscJa722i2oANULuqE81Kwr6vik4Bv6oNuBlX4hicWZh7mQjiKew==
2222
2222
  dependencies:
2223
2223
  "@tryghost/debug" "^0.1.2"
2224
2224
  "@tryghost/errors" "^1.1.0"
@@ -2228,16 +2228,16 @@
2228
2228
  jsonwebtoken "^8.5.1"
2229
2229
  lodash "^4.17.11"
2230
2230
 
2231
- "@tryghost/members-stripe-service@0.10.1", "@tryghost/members-stripe-service@^0.10.1":
2232
- version "0.10.1"
2233
- resolved "https://registry.yarnpkg.com/@tryghost/members-stripe-service/-/members-stripe-service-0.10.1.tgz#2877ccb7f2a318f0fcc24a4e6a4d30d5116de5ce"
2234
- integrity sha512-bbtyLAMDivwFA10KkuxsTwBzCSboyu1f/vqbmolSpaHxSDg8qxIr8fAeJFZWByVrJKfUD0e3IgMRYJl1jW0Ogw==
2231
+ "@tryghost/members-stripe-service@0.10.3", "@tryghost/members-stripe-service@^0.10.3":
2232
+ version "0.10.3"
2233
+ resolved "https://registry.yarnpkg.com/@tryghost/members-stripe-service/-/members-stripe-service-0.10.3.tgz#4a4609736e89ed831e118e480c28fa176f85a04e"
2234
+ integrity sha512-EdFxlqM696PSF/V9Qup4FEzCnIe5/2SbZnm2Nmg/7hxSuT/IBx9JxzxyOI+aup3Qp0Un4oVLWEhRCYJgdp42ng==
2235
2235
  dependencies:
2236
2236
  "@tryghost/debug" "^0.1.4"
2237
- "@tryghost/domain-events" "^0.1.10"
2237
+ "@tryghost/domain-events" "^0.1.12"
2238
2238
  "@tryghost/errors" "^1.2.5"
2239
2239
  "@tryghost/logging" "^2.0.5"
2240
- "@tryghost/member-events" "^0.4.2"
2240
+ "@tryghost/member-events" "^0.4.4"
2241
2241
  leaky-bucket "^2.2.0"
2242
2242
  lodash "^4.17.21"
2243
2243
  stripe "^8.174.0"
@@ -2495,13 +2495,13 @@
2495
2495
  moment-timezone "^0.5.23"
2496
2496
  validator "7.2.0"
2497
2497
 
2498
- "@tryghost/verification-trigger@0.2.1":
2499
- version "0.2.1"
2500
- resolved "https://registry.yarnpkg.com/@tryghost/verification-trigger/-/verification-trigger-0.2.1.tgz#8b371fee47dec57bfeb8ab61a4698aaae4d17974"
2501
- integrity sha512-ox47qz+aiUC70dy2oOqpuZ1AGHLawFB1DDE76US4vWVAEV0K8Ny+k/vR8Qtt5r8lVN+G8tFpsf8NtELFE2npdw==
2498
+ "@tryghost/verification-trigger@0.2.3":
2499
+ version "0.2.3"
2500
+ resolved "https://registry.yarnpkg.com/@tryghost/verification-trigger/-/verification-trigger-0.2.3.tgz#47c7be66f48c539ce5a2b6d5d6d95f0e74e46ea3"
2501
+ integrity sha512-SJlLuKup8ZJ4BJK887ymFlbG9PhSf27dsOgB9d4CXUaINWJj/sik8GR9Gt1KwhUHItHt2cneqMY1QesMJTkrnw==
2502
2502
  dependencies:
2503
- "@tryghost/domain-events" "^0.1.10"
2504
- "@tryghost/member-events" "^0.4.2"
2503
+ "@tryghost/domain-events" "^0.1.12"
2504
+ "@tryghost/member-events" "^0.4.4"
2505
2505
 
2506
2506
  "@tryghost/version-notifications-data-service@0.1.0":
2507
2507
  version "0.1.0"