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.
- package/core/built/assets/{ghost.min-30e597cb65b62b31a9422ca9c0eb2890.js → ghost.min-d8c670eb115c0acc183584e9d1dfd25b.js} +2 -2
- package/core/server/api/canary/utils/serializers/output/members.js +1 -1
- package/core/server/api/shared/http.js +0 -3
- package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js +34 -27
- package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-update-newsletter-sending-options.js +34 -0
- package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-transform-newsletter-header-image.js +26 -0
- package/core/server/models/newsletter.js +23 -0
- package/core/server/services/api-version-compatibility/index.js +16 -2
- package/core/server/services/members/config.js +5 -15
- package/core/server/services/members/service.js +3 -3
- package/core/server/web/admin/views/default-prod.html +2 -2
- package/core/server/web/admin/views/default.html +2 -2
- package/core/server/web/api/app.js +4 -3
- package/core/server/web/api/canary/admin/app.js +2 -3
- package/core/server/web/api/v2/admin/app.js +2 -3
- package/core/server/web/api/v3/admin/app.js +2 -3
- package/package.json +12 -12
- package/yarn.lock +80 -80
|
@@ -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.
|
|
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-
|
|
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) => {
|
package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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
|
-
|
|
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 {
|
|
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.
|
|
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.
|
|
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.
|
|
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-
|
|
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.
|
|
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-
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
86
|
-
"@tryghost/member-events": "0.4.
|
|
87
|
-
"@tryghost/members-api": "6.
|
|
88
|
-
"@tryghost/members-events-service": "0.
|
|
89
|
-
"@tryghost/members-importer": "0.5.
|
|
90
|
-
"@tryghost/members-offers": "0.11.
|
|
91
|
-
"@tryghost/members-ssr": "1.0.
|
|
92
|
-
"@tryghost/members-stripe-service": "0.10.
|
|
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.
|
|
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.
|
|
1896
|
-
version "0.1.
|
|
1897
|
-
resolved "https://registry.yarnpkg.com/@tryghost/domain-events/-/domain-events-0.1.
|
|
1898
|
-
integrity sha512-
|
|
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.
|
|
1952
|
-
version "0.2.
|
|
1953
|
-
resolved "https://registry.yarnpkg.com/@tryghost/express-dynamic-redirects/-/express-dynamic-redirects-0.2.
|
|
1954
|
-
integrity sha512-
|
|
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.
|
|
2112
|
-
version "1.0.
|
|
2113
|
-
resolved "https://registry.yarnpkg.com/@tryghost/magic-link/-/magic-link-1.0.
|
|
2114
|
-
integrity sha512-
|
|
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.
|
|
2121
|
-
version "0.1.
|
|
2122
|
-
resolved "https://registry.yarnpkg.com/@tryghost/member-analytics-service/-/member-analytics-service-0.1.
|
|
2123
|
-
integrity sha512-
|
|
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.
|
|
2125
|
+
"@tryghost/domain-events" "^0.1.12"
|
|
2126
2126
|
"@tryghost/errors" "^1.0.0"
|
|
2127
|
-
"@tryghost/member-events" "^0.4.
|
|
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.
|
|
2132
|
-
version "0.4.
|
|
2133
|
-
resolved "https://registry.yarnpkg.com/@tryghost/member-events/-/member-events-0.4.
|
|
2134
|
-
integrity sha512-
|
|
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.
|
|
2137
|
-
version "0.1.
|
|
2138
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-analytics-ingress/-/members-analytics-ingress-0.1.
|
|
2139
|
-
integrity sha512-
|
|
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.
|
|
2142
|
-
"@tryghost/member-events" "^0.4.
|
|
2141
|
+
"@tryghost/domain-events" "^0.1.12"
|
|
2142
|
+
"@tryghost/member-events" "^0.4.4"
|
|
2143
2143
|
|
|
2144
|
-
"@tryghost/members-api@6.
|
|
2145
|
-
version "6.
|
|
2146
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-api/-/members-api-6.
|
|
2147
|
-
integrity sha512-
|
|
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.
|
|
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.
|
|
2155
|
-
"@tryghost/member-analytics-service" "^0.1.
|
|
2156
|
-
"@tryghost/member-events" "^0.4.
|
|
2157
|
-
"@tryghost/members-analytics-ingress" "^0.1.
|
|
2158
|
-
"@tryghost/members-payments" "^0.3.
|
|
2159
|
-
"@tryghost/members-stripe-service" "^0.10.
|
|
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.
|
|
2173
|
-
version "1.2.
|
|
2174
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-csv/-/members-csv-1.2.
|
|
2175
|
-
integrity sha512-
|
|
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.
|
|
2184
|
-
version "0.
|
|
2185
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-events-service/-/members-events-service-0.
|
|
2186
|
-
integrity sha512-
|
|
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.
|
|
2189
|
-
"@tryghost/member-events" "^0.4.
|
|
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.
|
|
2193
|
-
version "0.5.
|
|
2194
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-importer/-/members-importer-0.5.
|
|
2195
|
-
integrity sha512-
|
|
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.
|
|
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.
|
|
2203
|
-
version "0.11.
|
|
2204
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-offers/-/members-offers-0.11.
|
|
2205
|
-
integrity sha512-
|
|
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.
|
|
2211
|
-
version "0.3.
|
|
2212
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-payments/-/members-payments-0.3.
|
|
2213
|
-
integrity sha512-
|
|
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.
|
|
2216
|
-
"@tryghost/members-offers" "^0.11.
|
|
2215
|
+
"@tryghost/domain-events" "^0.1.12"
|
|
2216
|
+
"@tryghost/members-offers" "^0.11.4"
|
|
2217
2217
|
|
|
2218
|
-
"@tryghost/members-ssr@1.0.
|
|
2219
|
-
version "1.0.
|
|
2220
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-ssr/-/members-ssr-1.0.
|
|
2221
|
-
integrity sha512-
|
|
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.
|
|
2232
|
-
version "0.10.
|
|
2233
|
-
resolved "https://registry.yarnpkg.com/@tryghost/members-stripe-service/-/members-stripe-service-0.10.
|
|
2234
|
-
integrity sha512-
|
|
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.
|
|
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.
|
|
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.
|
|
2499
|
-
version "0.2.
|
|
2500
|
-
resolved "https://registry.yarnpkg.com/@tryghost/verification-trigger/-/verification-trigger-0.2.
|
|
2501
|
-
integrity sha512-
|
|
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.
|
|
2504
|
-
"@tryghost/member-events" "^0.4.
|
|
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"
|