ghost 5.16.2 → 5.17.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/components/tryghost-adapter-manager-5.17.0.tgz +0 -0
- package/components/tryghost-api-framework-5.17.0.tgz +0 -0
- package/components/tryghost-api-version-compatibility-service-5.17.0.tgz +0 -0
- package/components/tryghost-bootstrap-socket-5.17.0.tgz +0 -0
- package/components/tryghost-constants-5.17.0.tgz +0 -0
- package/components/tryghost-custom-theme-settings-service-5.17.0.tgz +0 -0
- package/components/tryghost-domain-events-5.17.0.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.17.0.tgz +0 -0
- package/components/{tryghost-email-analytics-service-5.16.2.tgz → tryghost-email-analytics-service-5.17.0.tgz} +0 -0
- package/components/tryghost-email-content-generator-5.17.0.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.17.0.tgz +0 -0
- package/components/tryghost-extract-api-key-5.17.0.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.17.0.tgz +0 -0
- package/components/tryghost-job-manager-5.17.0.tgz +0 -0
- package/components/tryghost-link-redirects-5.17.0.tgz +0 -0
- package/components/tryghost-link-replacer-5.17.0.tgz +0 -0
- package/components/tryghost-link-tracking-5.17.0.tgz +0 -0
- package/components/tryghost-magic-link-5.17.0.tgz +0 -0
- package/components/tryghost-mailgun-client-5.17.0.tgz +0 -0
- package/components/tryghost-member-analytics-service-5.17.0.tgz +0 -0
- package/components/tryghost-member-attribution-5.17.0.tgz +0 -0
- package/components/tryghost-member-events-5.17.0.tgz +0 -0
- package/components/tryghost-members-analytics-ingress-5.17.0.tgz +0 -0
- package/components/tryghost-members-api-5.17.0.tgz +0 -0
- package/components/tryghost-members-csv-5.17.0.tgz +0 -0
- package/components/tryghost-members-events-service-5.17.0.tgz +0 -0
- package/components/tryghost-members-importer-5.17.0.tgz +0 -0
- package/components/tryghost-members-offers-5.17.0.tgz +0 -0
- package/components/{tryghost-members-payments-5.16.2.tgz → tryghost-members-payments-5.17.0.tgz} +0 -0
- package/components/{tryghost-members-ssr-5.16.2.tgz → tryghost-members-ssr-5.17.0.tgz} +0 -0
- package/components/tryghost-members-stripe-service-5.17.0.tgz +0 -0
- package/components/tryghost-minifier-5.17.0.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.17.0.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.17.0.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.17.0.tgz +0 -0
- package/components/tryghost-mw-session-from-token-5.17.0.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.17.0.tgz +0 -0
- package/components/tryghost-mw-vhost-5.17.0.tgz +0 -0
- package/components/{tryghost-oembed-service-5.16.2.tgz → tryghost-oembed-service-5.17.0.tgz} +0 -0
- package/components/{tryghost-package-json-5.16.2.tgz → tryghost-package-json-5.17.0.tgz} +0 -0
- package/components/tryghost-referrers-5.17.0.tgz +0 -0
- package/components/{tryghost-security-5.16.2.tgz → tryghost-security-5.17.0.tgz} +0 -0
- package/components/tryghost-session-service-5.17.0.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.17.0.tgz +0 -0
- package/components/tryghost-staff-service-5.17.0.tgz +0 -0
- package/components/tryghost-stats-service-5.17.0.tgz +0 -0
- package/components/tryghost-update-check-service-5.17.0.tgz +0 -0
- package/components/{tryghost-verification-trigger-5.16.2.tgz → tryghost-verification-trigger-5.17.0.tgz} +0 -0
- package/components/{tryghost-version-notifications-data-service-5.16.2.tgz → tryghost-version-notifications-data-service-5.17.0.tgz} +0 -0
- package/core/built/admin/assets/{chunk.143.4e48bf4e6c3d13258bb1.js → chunk.143.4ce1dcfd5c372638114d.js} +6 -6
- package/core/built/admin/assets/{chunk.174.e1e89637eab79fdd5c5d.js → chunk.174.37fefc669899f0fd0064.js} +153 -153
- package/core/built/admin/assets/{chunk.178.9c6e85adf674bd785cf1.js → chunk.178.824dedc0f9c31a8f64a7.js} +4 -4
- package/core/built/admin/assets/{chunk.579.d14c3688558f34afeb3e.js → chunk.579.a9bccec4d650a7be727a.js} +142 -88
- package/core/built/admin/assets/{chunk.579.d14c3688558f34afeb3e.js.LICENSE.txt → chunk.579.a9bccec4d650a7be727a.js.LICENSE.txt} +0 -0
- package/core/built/admin/assets/ghost-597fb8e8b1b91dd0ac4d9f2d75bd67fb.css +1 -0
- package/core/built/admin/assets/ghost-dark-e4ccecd9903d35d360d71fe859cbb3bf.css +1 -0
- package/core/built/admin/assets/{ghost-5064a384fad1061ca77a8604e479da90.js → ghost-fa7772f8aa2522b3935efed71fa75619.js} +390 -342
- package/core/built/admin/assets/vendor-325e038b8609f0979f6578cae7a87f9e.js +13270 -0
- package/core/built/admin/index.html +6 -6
- package/core/frontend/helpers/ghost_head.js +1 -1
- package/core/frontend/src/member-attribution/member-attribution.js +14 -14
- package/core/frontend/web/middleware/error-handler.js +3 -1
- package/core/frontend/web/site.js +9 -9
- package/core/server/api/endpoints/pages.js +1 -1
- package/core/server/api/endpoints/posts.js +1 -1
- package/core/server/api/endpoints/utils/serializers/input/pages.js +1 -1
- package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -2
- package/core/server/api/endpoints/utils/serializers/output/mappers/activity-feed-events.js +23 -0
- package/core/server/api/endpoints/utils/serializers/output/members.js +20 -3
- package/core/server/api/endpoints/utils/validators/input/pages.js +5 -1
- package/core/server/api/endpoints/utils/validators/input/posts.js +5 -1
- package/core/server/data/exporter/table-lists.js +2 -2
- package/core/server/data/migrations/utils/tables.js +1 -1
- package/core/server/data/migrations/versions/5.16/2022-09-19-09-04-add-link-redirects-table.js +9 -10
- package/core/server/data/migrations/versions/5.16/2022-09-19-09-05-add-members-link-click-events-table.js +9 -8
- package/core/server/data/migrations/versions/5.17/2022-09-27-13-53-remove-click-tracking-tables.js +28 -0
- package/core/server/data/migrations/versions/5.17/2022-09-27-13-55-add-redirects-table.js +10 -0
- package/core/server/data/migrations/versions/5.17/2022-09-27-13-56-add-members-click-events-table.js +8 -0
- package/core/server/data/migrations/versions/5.17/2022-09-27-16-49-set-track-clicks-based-on-opens.js +31 -0
- package/core/server/data/migrations/versions/5.17/2022-09-29-12-39-add-track-clicks-column-to-emails.js +7 -0
- package/core/server/data/schema/schema.js +4 -3
- package/core/server/models/email.js +1 -0
- package/core/server/models/{member-link-click-event.js → member-click-event.js} +6 -6
- package/core/server/models/member.js +22 -0
- package/core/server/models/post.js +6 -6
- package/core/server/models/{link-redirect.js → redirect.js} +7 -7
- package/core/server/services/api-version-compatibility/index.js +6 -1
- package/core/server/services/link-redirection/index.js +1 -1
- package/core/server/services/link-tracking/LinkClickRepository.js +2 -2
- package/core/server/services/link-tracking/index.js +4 -4
- package/core/server/services/mega/mega.js +1 -0
- package/core/server/services/mega/post-email-serializer.js +17 -28
- package/core/server/services/member-attribution/index.js +2 -1
- package/core/server/services/members/api.js +1 -1
- package/core/server/web/api/endpoints/content/app.js +5 -2
- package/core/server/web/well-known.js +5 -1
- package/core/shared/config/defaults.json +14 -2
- package/core/shared/labs.js +2 -2
- package/package.json +106 -105
- package/yarn.lock +311 -299
- package/components/tryghost-adapter-manager-5.16.2.tgz +0 -0
- package/components/tryghost-api-framework-5.16.2.tgz +0 -0
- package/components/tryghost-api-version-compatibility-service-5.16.2.tgz +0 -0
- package/components/tryghost-bootstrap-socket-5.16.2.tgz +0 -0
- package/components/tryghost-constants-5.16.2.tgz +0 -0
- package/components/tryghost-custom-theme-settings-service-5.16.2.tgz +0 -0
- package/components/tryghost-domain-events-5.16.2.tgz +0 -0
- package/components/tryghost-email-analytics-provider-mailgun-5.16.2.tgz +0 -0
- package/components/tryghost-email-content-generator-5.16.2.tgz +0 -0
- package/components/tryghost-express-dynamic-redirects-5.16.2.tgz +0 -0
- package/components/tryghost-extract-api-key-5.16.2.tgz +0 -0
- package/components/tryghost-html-to-plaintext-5.16.2.tgz +0 -0
- package/components/tryghost-job-manager-5.16.2.tgz +0 -0
- package/components/tryghost-link-redirects-5.16.2.tgz +0 -0
- package/components/tryghost-link-replacer-5.16.2.tgz +0 -0
- package/components/tryghost-link-tracking-5.16.2.tgz +0 -0
- package/components/tryghost-magic-link-5.16.2.tgz +0 -0
- package/components/tryghost-mailgun-client-5.16.2.tgz +0 -0
- package/components/tryghost-member-analytics-service-5.16.2.tgz +0 -0
- package/components/tryghost-member-attribution-5.16.2.tgz +0 -0
- package/components/tryghost-member-events-5.16.2.tgz +0 -0
- package/components/tryghost-members-analytics-ingress-5.16.2.tgz +0 -0
- package/components/tryghost-members-api-5.16.2.tgz +0 -0
- package/components/tryghost-members-csv-5.16.2.tgz +0 -0
- package/components/tryghost-members-events-service-5.16.2.tgz +0 -0
- package/components/tryghost-members-importer-5.16.2.tgz +0 -0
- package/components/tryghost-members-offers-5.16.2.tgz +0 -0
- package/components/tryghost-members-stripe-service-5.16.2.tgz +0 -0
- package/components/tryghost-minifier-5.16.2.tgz +0 -0
- package/components/tryghost-mw-api-version-mismatch-5.16.2.tgz +0 -0
- package/components/tryghost-mw-cache-control-5.16.2.tgz +0 -0
- package/components/tryghost-mw-error-handler-5.16.2.tgz +0 -0
- package/components/tryghost-mw-session-from-token-5.16.2.tgz +0 -0
- package/components/tryghost-mw-update-user-last-seen-5.16.2.tgz +0 -0
- package/components/tryghost-mw-vhost-5.16.2.tgz +0 -0
- package/components/tryghost-referrers-5.16.2.tgz +0 -0
- package/components/tryghost-session-service-5.16.2.tgz +0 -0
- package/components/tryghost-settings-path-manager-5.16.2.tgz +0 -0
- package/components/tryghost-staff-service-5.16.2.tgz +0 -0
- package/components/tryghost-stats-service-5.16.2.tgz +0 -0
- package/components/tryghost-update-check-service-5.16.2.tgz +0 -0
- package/core/built/admin/assets/ghost-6491d134c450ca676911ea17e16cd7d4.css +0 -1
- package/core/built/admin/assets/ghost-dark-297ab2fcf4cadd1c950b84089a38c5e2.css +0 -1
- package/core/built/admin/assets/vendor-b2375e2f383cbc3fd73340c4b656c993.js +0 -13654
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const ghostBookshelf = require('./base');
|
|
2
2
|
const urlUtils = require('../../shared/url-utils');
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
tableName: '
|
|
4
|
+
const Redirect = ghostBookshelf.Model.extend({
|
|
5
|
+
tableName: 'redirects',
|
|
6
6
|
|
|
7
7
|
post() {
|
|
8
8
|
return this.belongsTo('Post', 'post_id');
|
|
@@ -49,10 +49,10 @@ const LinkRedirect = ghostBookshelf.Model.extend({
|
|
|
49
49
|
countRelations() {
|
|
50
50
|
return {
|
|
51
51
|
clicks(modelOrCollection) {
|
|
52
|
-
modelOrCollection.query('columns', '
|
|
53
|
-
qb.countDistinct('
|
|
54
|
-
.from('
|
|
55
|
-
.whereRaw('
|
|
52
|
+
modelOrCollection.query('columns', 'redirects.*', (qb) => {
|
|
53
|
+
qb.countDistinct('members_click_events.member_id')
|
|
54
|
+
.from('members_click_events')
|
|
55
|
+
.whereRaw('redirects.id = members_click_events.redirect_id')
|
|
56
56
|
.as('count__clicks');
|
|
57
57
|
});
|
|
58
58
|
}
|
|
@@ -61,5 +61,5 @@ const LinkRedirect = ghostBookshelf.Model.extend({
|
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
module.exports = {
|
|
64
|
-
|
|
64
|
+
Redirect: ghostBookshelf.model('Redirect', Redirect)
|
|
65
65
|
};
|
|
@@ -31,7 +31,9 @@ module.exports.errorHandler = (err, req, res, next) => {
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* If Accept-Version is set on the request set Content-Version on the response
|
|
34
|
-
*
|
|
34
|
+
* Also, add 'Accept-Version' to VARY as it effects response caching
|
|
35
|
+
* TODO: move the method to mw once back-compatibility with 4.x is sorted
|
|
36
|
+
*
|
|
35
37
|
* @param {import('express').Request} req
|
|
36
38
|
* @param {import('express').Response} res
|
|
37
39
|
* @param {import('express').NextFunction} next
|
|
@@ -40,6 +42,9 @@ module.exports.contentVersion = (req, res, next) => {
|
|
|
40
42
|
if (req.header('accept-version')) {
|
|
41
43
|
res.header('Content-Version', `v${ghostVersion.safe}`);
|
|
42
44
|
}
|
|
45
|
+
|
|
46
|
+
res.vary('Accept-Version');
|
|
47
|
+
|
|
43
48
|
next();
|
|
44
49
|
};
|
|
45
50
|
|
|
@@ -14,7 +14,7 @@ class LinkRedirectsServiceWrapper {
|
|
|
14
14
|
const {LinkRedirectsService} = require('@tryghost/link-redirects');
|
|
15
15
|
|
|
16
16
|
this.linkRedirectRepository = new LinkRedirectRepository({
|
|
17
|
-
LinkRedirect: models.
|
|
17
|
+
LinkRedirect: models.Redirect,
|
|
18
18
|
urlUtils
|
|
19
19
|
});
|
|
20
20
|
|
|
@@ -36,7 +36,7 @@ module.exports = class LinkClickRepository {
|
|
|
36
36
|
for (const model of collection.models) {
|
|
37
37
|
const member = await this.#Member.findOne({id: model.get('member_id')});
|
|
38
38
|
result.push(new LinkClick({
|
|
39
|
-
link_id: model.get('
|
|
39
|
+
link_id: model.get('redirect_id'),
|
|
40
40
|
member_uuid: member.get('uuid')
|
|
41
41
|
}));
|
|
42
42
|
}
|
|
@@ -57,7 +57,7 @@ module.exports = class LinkClickRepository {
|
|
|
57
57
|
|
|
58
58
|
const model = await this.#MemberLinkClickEventModel.add({
|
|
59
59
|
// Only store the parthname (no support for variable query strings)
|
|
60
|
-
|
|
60
|
+
redirect_id: linkClick.link_id.toHexString(),
|
|
61
61
|
member_id: member.id
|
|
62
62
|
}, {});
|
|
63
63
|
|
|
@@ -22,12 +22,12 @@ class LinkTrackingServiceWrapper {
|
|
|
22
22
|
const {LinkClickTrackingService} = require('@tryghost/link-tracking');
|
|
23
23
|
|
|
24
24
|
const postLinkRepository = new PostLinkRepository({
|
|
25
|
-
LinkRedirect: models.
|
|
25
|
+
LinkRedirect: models.Redirect,
|
|
26
26
|
linkRedirectRepository: linkRedirection.linkRedirectRepository
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
MemberLinkClickEventModel: models.
|
|
29
|
+
this.linkClickRepository = new LinkClickRepository({
|
|
30
|
+
MemberLinkClickEventModel: models.MemberClickEvent,
|
|
31
31
|
Member: models.Member,
|
|
32
32
|
MemberLinkClickEvent: MemberLinkClickEvent,
|
|
33
33
|
DomainEvents
|
|
@@ -36,7 +36,7 @@ class LinkTrackingServiceWrapper {
|
|
|
36
36
|
// Expose the service
|
|
37
37
|
this.service = new LinkClickTrackingService({
|
|
38
38
|
linkRedirectService: linkRedirection.service,
|
|
39
|
-
linkClickRepository,
|
|
39
|
+
linkClickRepository: this.linkClickRepository,
|
|
40
40
|
postLinkRepository,
|
|
41
41
|
DomainEvents
|
|
42
42
|
});
|
|
@@ -239,6 +239,7 @@ const addEmail = async (postModel, options) => {
|
|
|
239
239
|
plaintext: emailData.plaintext,
|
|
240
240
|
submitted_at: moment().toDate(),
|
|
241
241
|
track_opens: !!settingsCache.get('email_track_opens'),
|
|
242
|
+
track_clicks: !!settingsCache.get('email_track_clicks'),
|
|
242
243
|
recipient_filter: emailRecipientFilter,
|
|
243
244
|
newsletter_id: newsletter.id
|
|
244
245
|
}, knexOptions);
|
|
@@ -2,7 +2,6 @@ const _ = require('lodash');
|
|
|
2
2
|
const template = require('./template');
|
|
3
3
|
const settingsCache = require('../../../shared/settings-cache');
|
|
4
4
|
const urlUtils = require('../../../shared/url-utils');
|
|
5
|
-
const labs = require('../../../shared/labs');
|
|
6
5
|
const moment = require('moment-timezone');
|
|
7
6
|
const api = require('../../api').endpoints;
|
|
8
7
|
const apiFramework = require('@tryghost/api-framework');
|
|
@@ -357,34 +356,24 @@ const PostEmailSerializer = {
|
|
|
357
356
|
}
|
|
358
357
|
|
|
359
358
|
// Now replace the links in the HTML version
|
|
360
|
-
if (
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
// Only add attribution links to our own site (except for the newsletter referrer)
|
|
371
|
-
url = memberAttribution.service.addPostAttributionTracking(url, post);
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
// Add link click tracking
|
|
375
|
-
if (enableTracking) {
|
|
376
|
-
url = await linkTracking.service.addTrackingToUrl(url, post, '--uuid--');
|
|
377
|
-
|
|
378
|
-
// We need to convert to a string at this point, because we need invalid string characters in the URL
|
|
379
|
-
const str = url.toString().replace(/--uuid--/g, '%%{uuid}%%');
|
|
380
|
-
return str;
|
|
381
|
-
}
|
|
359
|
+
if (!options.isBrowserPreview && !options.isTestEmail && settingsCache.get('email_track_clicks')) {
|
|
360
|
+
result.html = await linkReplacer.replace(result.html, async (url) => {
|
|
361
|
+
// Add newsletter source attribution
|
|
362
|
+
url = memberAttribution.service.addEmailSourceAttributionTracking(url, newsletter);
|
|
363
|
+
const isSite = urlUtils.isSiteUrl(url);
|
|
364
|
+
|
|
365
|
+
if (isSite) {
|
|
366
|
+
// Only add post attribution to our own site (because external sites could/should not process this information)
|
|
367
|
+
url = memberAttribution.service.addPostAttributionTracking(url, post);
|
|
368
|
+
}
|
|
382
369
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
370
|
+
// Add link click tracking
|
|
371
|
+
url = await linkTracking.service.addTrackingToUrl(url, post, '--uuid--');
|
|
372
|
+
|
|
373
|
+
// We need to convert to a string at this point, because we need invalid string characters in the URL
|
|
374
|
+
const str = url.toString().replace(/--uuid--/g, '%%{uuid}%%');
|
|
375
|
+
return str;
|
|
376
|
+
});
|
|
388
377
|
}
|
|
389
378
|
|
|
390
379
|
// Clean up any unknown replacements strings to get our final content
|
|
@@ -35,7 +35,8 @@ class MemberAttributionServiceWrapper {
|
|
|
35
35
|
this.service = new MemberAttributionService({
|
|
36
36
|
models: {
|
|
37
37
|
MemberCreatedEvent: models.MemberCreatedEvent,
|
|
38
|
-
SubscriptionCreatedEvent: models.SubscriptionCreatedEvent
|
|
38
|
+
SubscriptionCreatedEvent: models.SubscriptionCreatedEvent,
|
|
39
|
+
Integration: models.Integration
|
|
39
40
|
},
|
|
40
41
|
attributionBuilder: this.attributionBuilder
|
|
41
42
|
});
|
|
@@ -187,7 +187,7 @@ function createApiInstance(config) {
|
|
|
187
187
|
MemberAnalyticEvent: models.MemberAnalyticEvent,
|
|
188
188
|
MemberCreatedEvent: models.MemberCreatedEvent,
|
|
189
189
|
SubscriptionCreatedEvent: models.SubscriptionCreatedEvent,
|
|
190
|
-
MemberLinkClickEvent: models.
|
|
190
|
+
MemberLinkClickEvent: models.MemberClickEvent,
|
|
191
191
|
OfferRedemption: models.OfferRedemption,
|
|
192
192
|
Offer: models.Offer,
|
|
193
193
|
StripeProduct: models.StripeProduct,
|
|
@@ -3,6 +3,7 @@ const boolParser = require('express-query-boolean');
|
|
|
3
3
|
const bodyParser = require('body-parser');
|
|
4
4
|
const express = require('../../../../../shared/express');
|
|
5
5
|
const sentry = require('../../../../../shared/sentry');
|
|
6
|
+
const config = require('../../../../../shared/config');
|
|
6
7
|
const shared = require('../../../shared');
|
|
7
8
|
const routes = require('./routes');
|
|
8
9
|
const errorHandler = require('@tryghost/mw-error-handler');
|
|
@@ -20,8 +21,10 @@ module.exports = function setupApiApp() {
|
|
|
20
21
|
// Query parsing
|
|
21
22
|
apiApp.use(boolParser());
|
|
22
23
|
|
|
23
|
-
// API
|
|
24
|
-
apiApp.use(shared.middleware.cacheControl('
|
|
24
|
+
// Content API should allow public caching
|
|
25
|
+
apiApp.use(shared.middleware.cacheControl('public', {
|
|
26
|
+
maxAge: config.get('caching:contentAPI:maxAge')
|
|
27
|
+
}));
|
|
25
28
|
|
|
26
29
|
// Routing
|
|
27
30
|
apiApp.use(routes());
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
const cacheControl = require('@tryghost/mw-cache-control');
|
|
1
2
|
const express = require('../../shared/express');
|
|
2
3
|
const settings = require('../../shared/settings-cache');
|
|
4
|
+
const config = require('../../shared/config');
|
|
3
5
|
|
|
4
6
|
module.exports = function setupWellKnownApp() {
|
|
5
7
|
const wellKnownApp = express('well-known');
|
|
@@ -14,7 +16,9 @@ module.exports = function setupWellKnownApp() {
|
|
|
14
16
|
return keyStore.toJSON();
|
|
15
17
|
};
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
const cache = cacheControl('public', {maxAge: config.get('caching:wellKnown:maxAge')});
|
|
20
|
+
|
|
21
|
+
wellKnownApp.get('/jwks.json', cache, async (req, res) => {
|
|
18
22
|
const jwks = await getSafePublicJWKS();
|
|
19
23
|
|
|
20
24
|
// there's only one key in the store atm
|
|
@@ -105,6 +105,9 @@
|
|
|
105
105
|
"frontend": {
|
|
106
106
|
"maxAge": 0
|
|
107
107
|
},
|
|
108
|
+
"publicAssets": {
|
|
109
|
+
"maxAge": 31536000
|
|
110
|
+
},
|
|
108
111
|
"301": {
|
|
109
112
|
"maxAge": 31536000
|
|
110
113
|
},
|
|
@@ -117,11 +120,20 @@
|
|
|
117
120
|
"sitemap": {
|
|
118
121
|
"maxAge": 3600
|
|
119
122
|
},
|
|
123
|
+
"sitemapXSL": {
|
|
124
|
+
"maxAge": 86400
|
|
125
|
+
},
|
|
120
126
|
"robotstxt": {
|
|
121
|
-
"maxAge":
|
|
127
|
+
"maxAge": 3600
|
|
128
|
+
},
|
|
129
|
+
"wellKnown": {
|
|
130
|
+
"maxAge": 86400
|
|
122
131
|
},
|
|
123
132
|
"cors": {
|
|
124
133
|
"maxAge": 86400
|
|
134
|
+
},
|
|
135
|
+
"contentAPI": {
|
|
136
|
+
"maxAge": 0
|
|
125
137
|
}
|
|
126
138
|
},
|
|
127
139
|
"imageOptimization": {
|
|
@@ -140,7 +152,7 @@
|
|
|
140
152
|
},
|
|
141
153
|
"portal": {
|
|
142
154
|
"url": "https://cdn.jsdelivr.net/ghost/portal@~{version}/umd/portal.min.js",
|
|
143
|
-
"version": "2.
|
|
155
|
+
"version": "2.13"
|
|
144
156
|
},
|
|
145
157
|
"sodoSearch": {
|
|
146
158
|
"url": "https://cdn.jsdelivr.net/ghost/sodo-search@~{version}/umd/sodo-search.min.js",
|
package/core/shared/labs.js
CHANGED
|
@@ -19,7 +19,8 @@ const GA_FEATURES = [
|
|
|
19
19
|
'freeTrial',
|
|
20
20
|
'compExpiring',
|
|
21
21
|
'searchHelper',
|
|
22
|
-
'emailAlerts'
|
|
22
|
+
'emailAlerts',
|
|
23
|
+
'emailClicks'
|
|
23
24
|
];
|
|
24
25
|
|
|
25
26
|
// NOTE: this allowlist is meant to be used to filter out any unexpected
|
|
@@ -32,7 +33,6 @@ const BETA_FEATURES = [
|
|
|
32
33
|
const ALPHA_FEATURES = [
|
|
33
34
|
'urlCache',
|
|
34
35
|
'beforeAfterCard',
|
|
35
|
-
'emailClicks',
|
|
36
36
|
'sourceAttribution',
|
|
37
37
|
'lexicalEditor'
|
|
38
38
|
];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ghost",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.17.0",
|
|
4
4
|
"description": "The professional publishing platform",
|
|
5
5
|
"author": "Ghost Foundation",
|
|
6
6
|
"homepage": "https://ghost.org",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"scripts": {
|
|
23
23
|
"start": "node index",
|
|
24
24
|
"setup": "knex-migrator init && grunt symlink || (exit 0)",
|
|
25
|
-
"build": "
|
|
25
|
+
"build": "npm pack --pack-destination ../..",
|
|
26
26
|
"test": "yarn test:unit",
|
|
27
27
|
"test:single": "mocha --require=./test/utils/overrides.js --exit --trace-warnings --recursive --extension=test.js --timeout=60000",
|
|
28
28
|
"test:all": "yarn test:unit && yarn test:integration && yarn test:e2e && yarn lint",
|
|
@@ -52,77 +52,78 @@
|
|
|
52
52
|
"cli": "^1.17.0"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@sentry/node": "7.
|
|
55
|
+
"@sentry/node": "7.14.0",
|
|
56
56
|
"@tryghost/adapter-base-cache": "0.1.2",
|
|
57
|
-
"@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.
|
|
57
|
+
"@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.17.0.tgz",
|
|
58
58
|
"@tryghost/admin-api-schema": "4.2.0",
|
|
59
|
-
"@tryghost/api-framework": "file:components/tryghost-api-framework-5.
|
|
60
|
-
"@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.
|
|
61
|
-
"@tryghost/bookshelf-plugins": "0.5.
|
|
62
|
-
"@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.
|
|
59
|
+
"@tryghost/api-framework": "file:components/tryghost-api-framework-5.17.0.tgz",
|
|
60
|
+
"@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.17.0.tgz",
|
|
61
|
+
"@tryghost/bookshelf-plugins": "0.5.2",
|
|
62
|
+
"@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.17.0.tgz",
|
|
63
63
|
"@tryghost/color-utils": "0.1.21",
|
|
64
64
|
"@tryghost/config-url-helpers": "1.0.3",
|
|
65
|
-
"@tryghost/constants": "file:components/tryghost-constants-5.
|
|
66
|
-
"@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.
|
|
65
|
+
"@tryghost/constants": "file:components/tryghost-constants-5.17.0.tgz",
|
|
66
|
+
"@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.17.0.tgz",
|
|
67
67
|
"@tryghost/database-info": "0.3.10",
|
|
68
68
|
"@tryghost/debug": "0.1.18",
|
|
69
|
-
"@tryghost/domain-events": "file:components/tryghost-domain-events-5.
|
|
70
|
-
"@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.
|
|
71
|
-
"@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.
|
|
72
|
-
"@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.
|
|
73
|
-
"@tryghost/errors": "1.2.
|
|
74
|
-
"@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.
|
|
69
|
+
"@tryghost/domain-events": "file:components/tryghost-domain-events-5.17.0.tgz",
|
|
70
|
+
"@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.17.0.tgz",
|
|
71
|
+
"@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.17.0.tgz",
|
|
72
|
+
"@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.17.0.tgz",
|
|
73
|
+
"@tryghost/errors": "1.2.17",
|
|
74
|
+
"@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.17.0.tgz",
|
|
75
75
|
"@tryghost/helpers": "1.1.74",
|
|
76
|
-
"@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.
|
|
76
|
+
"@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.17.0.tgz",
|
|
77
|
+
"@tryghost/http-cache-utils": "0.1.3",
|
|
77
78
|
"@tryghost/image-transform": "1.2.2",
|
|
78
|
-
"@tryghost/job-manager": "file:components/tryghost-job-manager-5.
|
|
79
|
+
"@tryghost/job-manager": "file:components/tryghost-job-manager-5.17.0.tgz",
|
|
79
80
|
"@tryghost/kg-card-factory": "3.1.5",
|
|
80
81
|
"@tryghost/kg-default-atoms": "3.1.4",
|
|
81
82
|
"@tryghost/kg-default-cards": "5.18.3",
|
|
82
83
|
"@tryghost/kg-lexical-html-renderer": "0.0.7",
|
|
83
84
|
"@tryghost/kg-mobiledoc-html-renderer": "5.3.7",
|
|
84
85
|
"@tryghost/limit-service": "1.2.3",
|
|
85
|
-
"@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.
|
|
86
|
-
"@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.
|
|
87
|
-
"@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.
|
|
88
|
-
"@tryghost/logging": "2.3.
|
|
89
|
-
"@tryghost/magic-link": "file:components/tryghost-magic-link-5.
|
|
90
|
-
"@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.
|
|
91
|
-
"@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.
|
|
92
|
-
"@tryghost/member-events": "file:components/tryghost-member-events-5.
|
|
93
|
-
"@tryghost/members-api": "file:components/tryghost-members-api-5.
|
|
94
|
-
"@tryghost/members-csv": "file:components/tryghost-members-csv-5.
|
|
95
|
-
"@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.
|
|
96
|
-
"@tryghost/members-importer": "file:components/tryghost-members-importer-5.
|
|
97
|
-
"@tryghost/members-offers": "file:components/tryghost-members-offers-5.
|
|
98
|
-
"@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.
|
|
99
|
-
"@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.
|
|
86
|
+
"@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.17.0.tgz",
|
|
87
|
+
"@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.17.0.tgz",
|
|
88
|
+
"@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.17.0.tgz",
|
|
89
|
+
"@tryghost/logging": "2.3.2",
|
|
90
|
+
"@tryghost/magic-link": "file:components/tryghost-magic-link-5.17.0.tgz",
|
|
91
|
+
"@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.17.0.tgz",
|
|
92
|
+
"@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.17.0.tgz",
|
|
93
|
+
"@tryghost/member-events": "file:components/tryghost-member-events-5.17.0.tgz",
|
|
94
|
+
"@tryghost/members-api": "file:components/tryghost-members-api-5.17.0.tgz",
|
|
95
|
+
"@tryghost/members-csv": "file:components/tryghost-members-csv-5.17.0.tgz",
|
|
96
|
+
"@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.17.0.tgz",
|
|
97
|
+
"@tryghost/members-importer": "file:components/tryghost-members-importer-5.17.0.tgz",
|
|
98
|
+
"@tryghost/members-offers": "file:components/tryghost-members-offers-5.17.0.tgz",
|
|
99
|
+
"@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.17.0.tgz",
|
|
100
|
+
"@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.17.0.tgz",
|
|
100
101
|
"@tryghost/metrics": "1.0.16",
|
|
101
|
-
"@tryghost/minifier": "file:components/tryghost-minifier-5.
|
|
102
|
-
"@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.
|
|
103
|
-
"@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.
|
|
104
|
-
"@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.
|
|
105
|
-
"@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.
|
|
106
|
-
"@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.
|
|
107
|
-
"@tryghost/nodemailer": "0.3.
|
|
102
|
+
"@tryghost/minifier": "file:components/tryghost-minifier-5.17.0.tgz",
|
|
103
|
+
"@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.17.0.tgz",
|
|
104
|
+
"@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.17.0.tgz",
|
|
105
|
+
"@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.17.0.tgz",
|
|
106
|
+
"@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.17.0.tgz",
|
|
107
|
+
"@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.17.0.tgz",
|
|
108
|
+
"@tryghost/nodemailer": "0.3.28",
|
|
108
109
|
"@tryghost/nql": "0.9.2",
|
|
109
|
-
"@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.
|
|
110
|
-
"@tryghost/package-json": "file:components/tryghost-package-json-5.
|
|
110
|
+
"@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.17.0.tgz",
|
|
111
|
+
"@tryghost/package-json": "file:components/tryghost-package-json-5.17.0.tgz",
|
|
111
112
|
"@tryghost/pretty-cli": "1.2.30",
|
|
112
113
|
"@tryghost/promise": "0.1.21",
|
|
113
|
-
"@tryghost/request": "0.1.
|
|
114
|
-
"@tryghost/security": "file:components/tryghost-security-5.
|
|
115
|
-
"@tryghost/session-service": "file:components/tryghost-session-service-5.
|
|
116
|
-
"@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.
|
|
114
|
+
"@tryghost/request": "0.1.31",
|
|
115
|
+
"@tryghost/security": "file:components/tryghost-security-5.17.0.tgz",
|
|
116
|
+
"@tryghost/session-service": "file:components/tryghost-session-service-5.17.0.tgz",
|
|
117
|
+
"@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.17.0.tgz",
|
|
117
118
|
"@tryghost/social-urls": "0.1.33",
|
|
118
|
-
"@tryghost/staff-service": "file:components/tryghost-staff-service-5.
|
|
119
|
-
"@tryghost/stats-service": "file:components/tryghost-stats-service-5.
|
|
119
|
+
"@tryghost/staff-service": "file:components/tryghost-staff-service-5.17.0.tgz",
|
|
120
|
+
"@tryghost/stats-service": "file:components/tryghost-stats-service-5.17.0.tgz",
|
|
120
121
|
"@tryghost/string": "0.2.1",
|
|
121
122
|
"@tryghost/tpl": "0.1.18",
|
|
122
|
-
"@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.
|
|
123
|
+
"@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.17.0.tgz",
|
|
123
124
|
"@tryghost/url-utils": "4.2.0",
|
|
124
|
-
"@tryghost/validator": "0.1.
|
|
125
|
-
"@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.
|
|
125
|
+
"@tryghost/validator": "0.1.29",
|
|
126
|
+
"@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.17.0.tgz",
|
|
126
127
|
"@tryghost/version": "0.1.16",
|
|
127
128
|
"@tryghost/zip": "1.1.28",
|
|
128
129
|
"amperize": "0.6.1",
|
|
@@ -183,18 +184,18 @@
|
|
|
183
184
|
"xml": "1.0.1"
|
|
184
185
|
},
|
|
185
186
|
"optionalDependencies": {
|
|
186
|
-
"@tryghost/html-to-mobiledoc": "1.8.
|
|
187
|
+
"@tryghost/html-to-mobiledoc": "1.8.14",
|
|
187
188
|
"sqlite3": "5.1.1"
|
|
188
189
|
},
|
|
189
190
|
"devDependencies": {
|
|
190
|
-
"@playwright/test": "1.26.
|
|
191
|
-
"@tryghost/express-test": "0.11.
|
|
191
|
+
"@playwright/test": "1.26.1",
|
|
192
|
+
"@tryghost/express-test": "0.11.5",
|
|
192
193
|
"@tryghost/webhook-mock-receiver": "0.1.2",
|
|
193
194
|
"@types/common-tags": "1.8.1",
|
|
194
195
|
"c8": "7.12.0",
|
|
195
196
|
"cli-progress": "3.11.2",
|
|
196
197
|
"cssnano": "5.1.13",
|
|
197
|
-
"eslint": "8.
|
|
198
|
+
"eslint": "8.24.0",
|
|
198
199
|
"grunt": "1.5.3",
|
|
199
200
|
"grunt-contrib-symlink": "1.0.0",
|
|
200
201
|
"html-validate": "7.5.0",
|
|
@@ -214,57 +215,57 @@
|
|
|
214
215
|
"tmp": "0.2.1"
|
|
215
216
|
},
|
|
216
217
|
"resolutions": {
|
|
217
|
-
"@tryghost/logging": "2.3.
|
|
218
|
+
"@tryghost/logging": "2.3.2",
|
|
218
219
|
"moment": "2.24.0",
|
|
219
220
|
"moment-timezone": "0.5.23",
|
|
220
|
-
"@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.
|
|
221
|
-
"@tryghost/api-framework": "file:components/tryghost-api-framework-5.
|
|
222
|
-
"@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.
|
|
223
|
-
"@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.
|
|
224
|
-
"@tryghost/constants": "file:components/tryghost-constants-5.
|
|
225
|
-
"@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.
|
|
226
|
-
"@tryghost/domain-events": "file:components/tryghost-domain-events-5.
|
|
227
|
-
"@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.
|
|
228
|
-
"@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.
|
|
229
|
-
"@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.
|
|
230
|
-
"@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.
|
|
231
|
-
"@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.
|
|
232
|
-
"@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.
|
|
233
|
-
"@tryghost/job-manager": "file:components/tryghost-job-manager-5.
|
|
234
|
-
"@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.
|
|
235
|
-
"@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.
|
|
236
|
-
"@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.
|
|
237
|
-
"@tryghost/magic-link": "file:components/tryghost-magic-link-5.
|
|
238
|
-
"@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.
|
|
239
|
-
"@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.
|
|
240
|
-
"@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.
|
|
241
|
-
"@tryghost/member-events": "file:components/tryghost-member-events-5.
|
|
242
|
-
"@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.
|
|
243
|
-
"@tryghost/members-api": "file:components/tryghost-members-api-5.
|
|
244
|
-
"@tryghost/members-csv": "file:components/tryghost-members-csv-5.
|
|
245
|
-
"@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.
|
|
246
|
-
"@tryghost/members-importer": "file:components/tryghost-members-importer-5.
|
|
247
|
-
"@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.
|
|
248
|
-
"@tryghost/minifier": "file:components/tryghost-minifier-5.
|
|
249
|
-
"@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.
|
|
250
|
-
"@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.
|
|
251
|
-
"@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.
|
|
252
|
-
"@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.
|
|
253
|
-
"@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.
|
|
254
|
-
"@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.
|
|
255
|
-
"@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.
|
|
256
|
-
"@tryghost/members-offers": "file:components/tryghost-members-offers-5.
|
|
257
|
-
"@tryghost/package-json": "file:components/tryghost-package-json-5.
|
|
258
|
-
"@tryghost/members-payments": "file:components/tryghost-members-payments-5.
|
|
259
|
-
"@tryghost/referrers": "file:components/tryghost-referrers-5.
|
|
260
|
-
"@tryghost/security": "file:components/tryghost-security-5.
|
|
261
|
-
"@tryghost/session-service": "file:components/tryghost-session-service-5.
|
|
262
|
-
"@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.
|
|
263
|
-
"@tryghost/staff-service": "file:components/tryghost-staff-service-5.
|
|
264
|
-
"@tryghost/stats-service": "file:components/tryghost-stats-service-5.
|
|
265
|
-
"@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.
|
|
266
|
-
"@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.
|
|
267
|
-
"@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.
|
|
268
|
-
"@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.
|
|
221
|
+
"@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.17.0.tgz",
|
|
222
|
+
"@tryghost/api-framework": "file:components/tryghost-api-framework-5.17.0.tgz",
|
|
223
|
+
"@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.17.0.tgz",
|
|
224
|
+
"@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.17.0.tgz",
|
|
225
|
+
"@tryghost/constants": "file:components/tryghost-constants-5.17.0.tgz",
|
|
226
|
+
"@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.17.0.tgz",
|
|
227
|
+
"@tryghost/domain-events": "file:components/tryghost-domain-events-5.17.0.tgz",
|
|
228
|
+
"@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.17.0.tgz",
|
|
229
|
+
"@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.17.0.tgz",
|
|
230
|
+
"@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.17.0.tgz",
|
|
231
|
+
"@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.17.0.tgz",
|
|
232
|
+
"@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.17.0.tgz",
|
|
233
|
+
"@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.17.0.tgz",
|
|
234
|
+
"@tryghost/job-manager": "file:components/tryghost-job-manager-5.17.0.tgz",
|
|
235
|
+
"@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.17.0.tgz",
|
|
236
|
+
"@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.17.0.tgz",
|
|
237
|
+
"@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.17.0.tgz",
|
|
238
|
+
"@tryghost/magic-link": "file:components/tryghost-magic-link-5.17.0.tgz",
|
|
239
|
+
"@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.17.0.tgz",
|
|
240
|
+
"@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.17.0.tgz",
|
|
241
|
+
"@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.17.0.tgz",
|
|
242
|
+
"@tryghost/member-events": "file:components/tryghost-member-events-5.17.0.tgz",
|
|
243
|
+
"@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.17.0.tgz",
|
|
244
|
+
"@tryghost/members-api": "file:components/tryghost-members-api-5.17.0.tgz",
|
|
245
|
+
"@tryghost/members-csv": "file:components/tryghost-members-csv-5.17.0.tgz",
|
|
246
|
+
"@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.17.0.tgz",
|
|
247
|
+
"@tryghost/members-importer": "file:components/tryghost-members-importer-5.17.0.tgz",
|
|
248
|
+
"@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.17.0.tgz",
|
|
249
|
+
"@tryghost/minifier": "file:components/tryghost-minifier-5.17.0.tgz",
|
|
250
|
+
"@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.17.0.tgz",
|
|
251
|
+
"@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.17.0.tgz",
|
|
252
|
+
"@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.17.0.tgz",
|
|
253
|
+
"@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.17.0.tgz",
|
|
254
|
+
"@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.17.0.tgz",
|
|
255
|
+
"@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.17.0.tgz",
|
|
256
|
+
"@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.17.0.tgz",
|
|
257
|
+
"@tryghost/members-offers": "file:components/tryghost-members-offers-5.17.0.tgz",
|
|
258
|
+
"@tryghost/package-json": "file:components/tryghost-package-json-5.17.0.tgz",
|
|
259
|
+
"@tryghost/members-payments": "file:components/tryghost-members-payments-5.17.0.tgz",
|
|
260
|
+
"@tryghost/referrers": "file:components/tryghost-referrers-5.17.0.tgz",
|
|
261
|
+
"@tryghost/security": "file:components/tryghost-security-5.17.0.tgz",
|
|
262
|
+
"@tryghost/session-service": "file:components/tryghost-session-service-5.17.0.tgz",
|
|
263
|
+
"@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.17.0.tgz",
|
|
264
|
+
"@tryghost/staff-service": "file:components/tryghost-staff-service-5.17.0.tgz",
|
|
265
|
+
"@tryghost/stats-service": "file:components/tryghost-stats-service-5.17.0.tgz",
|
|
266
|
+
"@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.17.0.tgz",
|
|
267
|
+
"@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.17.0.tgz",
|
|
268
|
+
"@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.17.0.tgz",
|
|
269
|
+
"@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.17.0.tgz"
|
|
269
270
|
}
|
|
270
271
|
}
|