ghost 5.14.2 → 5.16.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.
Files changed (176) hide show
  1. package/components/tryghost-adapter-manager-5.16.0.tgz +0 -0
  2. package/components/tryghost-api-framework-5.16.0.tgz +0 -0
  3. package/components/tryghost-api-version-compatibility-service-5.16.0.tgz +0 -0
  4. package/components/tryghost-bootstrap-socket-5.16.0.tgz +0 -0
  5. package/components/tryghost-constants-5.16.0.tgz +0 -0
  6. package/components/tryghost-custom-theme-settings-service-5.16.0.tgz +0 -0
  7. package/components/tryghost-domain-events-5.16.0.tgz +0 -0
  8. package/components/tryghost-email-analytics-provider-mailgun-5.16.0.tgz +0 -0
  9. package/components/{tryghost-email-analytics-service-5.14.2.tgz → tryghost-email-analytics-service-5.16.0.tgz} +0 -0
  10. package/components/tryghost-email-content-generator-5.16.0.tgz +0 -0
  11. package/components/tryghost-express-dynamic-redirects-5.16.0.tgz +0 -0
  12. package/components/tryghost-extract-api-key-5.16.0.tgz +0 -0
  13. package/components/tryghost-html-to-plaintext-5.16.0.tgz +0 -0
  14. package/components/{tryghost-job-manager-5.14.2.tgz → tryghost-job-manager-5.16.0.tgz} +0 -0
  15. package/components/tryghost-link-redirects-5.16.0.tgz +0 -0
  16. package/components/tryghost-link-replacer-5.16.0.tgz +0 -0
  17. package/components/tryghost-link-tracking-5.16.0.tgz +0 -0
  18. package/components/tryghost-magic-link-5.16.0.tgz +0 -0
  19. package/components/{tryghost-mailgun-client-5.14.2.tgz → tryghost-mailgun-client-5.16.0.tgz} +0 -0
  20. package/components/tryghost-member-analytics-service-5.16.0.tgz +0 -0
  21. package/components/tryghost-member-attribution-5.16.0.tgz +0 -0
  22. package/components/tryghost-member-events-5.16.0.tgz +0 -0
  23. package/components/tryghost-members-analytics-ingress-5.16.0.tgz +0 -0
  24. package/components/tryghost-members-api-5.16.0.tgz +0 -0
  25. package/components/tryghost-members-csv-5.16.0.tgz +0 -0
  26. package/components/tryghost-members-events-service-5.16.0.tgz +0 -0
  27. package/components/tryghost-members-importer-5.16.0.tgz +0 -0
  28. package/components/tryghost-members-offers-5.16.0.tgz +0 -0
  29. package/components/{tryghost-members-payments-5.14.2.tgz → tryghost-members-payments-5.16.0.tgz} +0 -0
  30. package/components/{tryghost-members-ssr-5.14.2.tgz → tryghost-members-ssr-5.16.0.tgz} +0 -0
  31. package/components/tryghost-members-stripe-service-5.16.0.tgz +0 -0
  32. package/components/tryghost-minifier-5.16.0.tgz +0 -0
  33. package/components/tryghost-mw-api-version-mismatch-5.16.0.tgz +0 -0
  34. package/components/tryghost-mw-cache-control-5.16.0.tgz +0 -0
  35. package/components/{tryghost-mw-error-handler-5.14.2.tgz → tryghost-mw-error-handler-5.16.0.tgz} +0 -0
  36. package/components/tryghost-mw-session-from-token-5.16.0.tgz +0 -0
  37. package/components/tryghost-mw-update-user-last-seen-5.16.0.tgz +0 -0
  38. package/components/tryghost-mw-vhost-5.16.0.tgz +0 -0
  39. package/components/{tryghost-oembed-service-5.14.2.tgz → tryghost-oembed-service-5.16.0.tgz} +0 -0
  40. package/components/{tryghost-package-json-5.14.2.tgz → tryghost-package-json-5.16.0.tgz} +0 -0
  41. package/components/tryghost-referrers-5.16.0.tgz +0 -0
  42. package/components/{tryghost-security-5.14.2.tgz → tryghost-security-5.16.0.tgz} +0 -0
  43. package/components/tryghost-session-service-5.16.0.tgz +0 -0
  44. package/components/tryghost-settings-path-manager-5.16.0.tgz +0 -0
  45. package/components/tryghost-staff-service-5.16.0.tgz +0 -0
  46. package/components/tryghost-stats-service-5.16.0.tgz +0 -0
  47. package/components/tryghost-update-check-service-5.16.0.tgz +0 -0
  48. package/components/{tryghost-verification-trigger-5.14.2.tgz → tryghost-verification-trigger-5.16.0.tgz} +0 -0
  49. package/components/{tryghost-version-notifications-data-service-5.14.2.tgz → tryghost-version-notifications-data-service-5.16.0.tgz} +0 -0
  50. package/content/themes/casper/default.hbs +2 -2
  51. package/core/boot.js +10 -3
  52. package/core/built/admin/assets/{chunk.143.a5ef705453da0d58b75a.js → chunk.143.a281d460e6059cd0210a.js} +21 -21
  53. package/core/built/admin/assets/{chunk.174.2edaa0869bfc2d88cf90.js → chunk.174.e1e89637eab79fdd5c5d.js} +68 -68
  54. package/core/built/admin/assets/{chunk.178.579a6edabc75a2d7378f.js → chunk.178.68eca2346b6f343991e7.js} +4 -4
  55. package/core/built/admin/assets/{chunk.579.2de3f4300baf25f9a0db.js → chunk.579.d14c3688558f34afeb3e.js} +8872 -7851
  56. package/core/built/admin/assets/{chunk.579.2de3f4300baf25f9a0db.js.LICENSE.txt → chunk.579.d14c3688558f34afeb3e.js.LICENSE.txt} +45 -0
  57. package/core/built/admin/assets/fonts/{Inter.ttf → Inter-e19174fb2c0e19b1fa67492a07886c75.ttf} +0 -0
  58. package/core/built/admin/assets/ghost-6491d134c450ca676911ea17e16cd7d4.css +1 -0
  59. package/core/built/admin/assets/ghost-dark-297ab2fcf4cadd1c950b84089a38c5e2.css +1 -0
  60. package/core/built/admin/assets/{ghost-8919656440ad4617a07bb31069b1f71b.js → ghost-f2bf99b26aee662cf37fe59f87b1ceb5.js} +593 -511
  61. package/core/built/admin/assets/img/{amp.svg → amp-d7b72aae3315fda95921fb575dfca100.svg} +0 -0
  62. package/core/built/admin/assets/img/{disqus.svg → disqus-43503a3fa4f38dc8c61c7358b811f343.svg} +0 -0
  63. package/core/built/admin/assets/img/{favicon.ico → favicon-a9c6dbdcdc3ae568f4e0dad92149a0e3.ico} +0 -0
  64. package/core/built/admin/assets/img/{github.svg → github-c3a739c59df26fed12c10ffb00b33bd4.svg} +0 -0
  65. package/core/built/admin/assets/img/{google-docs.svg → google-docs-1e42cc272fc088da49e4b0ddfb01b006.svg} +0 -0
  66. package/core/built/admin/assets/img/{mailchimp.svg → mailchimp-f22b1e130aac764965b9306d7265a6b2.svg} +0 -0
  67. package/core/built/admin/assets/img/marketing/analytics-1-aa2d72c4e7347a3cb5666d07916b92aa.jpg +0 -0
  68. package/core/built/admin/assets/img/marketing/analytics-2-389d53f80041ff98111cce79facf66b8.jpg +0 -0
  69. package/core/built/admin/assets/img/{patreon.svg → patreon-b19a5e6418a72977a16b30039d374d04.svg} +0 -0
  70. package/core/built/admin/assets/img/{paypal.svg → paypal-38e9448ce7549ea4caf8e7753ae661d6.svg} +0 -0
  71. package/core/built/admin/assets/img/{twitter.svg → twitter-7a7a0ba12d9b5bfb8a2058764a827c31.svg} +0 -0
  72. package/core/built/admin/assets/img/{typeform.svg → typeform-9f23f8712d776a7515594676285266f5.svg} +0 -0
  73. package/core/built/admin/assets/img/{unsplash.svg → unsplash-5b329eef0b11447b4117eaf817ebad6f.svg} +0 -0
  74. package/core/built/admin/assets/img/{zapier.svg → zapier-bf93bc440a3fd43b73489a63c215cdc7.svg} +0 -0
  75. package/core/built/admin/assets/img/{zapier-logo.svg → zapier-logo-a125f24313dfe01ef49af01fc90061fb.svg} +0 -0
  76. package/core/built/admin/assets/{vendor-eb76d0236a09b8b6f44675dba45b1fc6.js → vendor-b2375e2f383cbc3fd73340c4b656c993.js} +59 -47
  77. package/core/built/admin/assets/videos/logo-loader.mp4 +0 -0
  78. package/core/built/admin/index.html +11 -8
  79. package/core/frontend/helpers/search.js +1 -15
  80. package/core/frontend/src/member-attribution/member-attribution.js +64 -3
  81. package/core/frontend/web/site.js +10 -7
  82. package/core/server/api/endpoints/index.js +4 -0
  83. package/core/server/api/endpoints/links.js +25 -0
  84. package/core/server/api/endpoints/posts.js +2 -1
  85. package/core/server/api/endpoints/redirects.js +6 -8
  86. package/core/server/api/endpoints/stats.js +24 -0
  87. package/core/server/api/endpoints/utils/permissions.js +2 -16
  88. package/core/server/api/endpoints/utils/serializers/input/pages.js +5 -5
  89. package/core/server/api/endpoints/utils/serializers/input/posts.js +13 -8
  90. package/core/server/api/endpoints/utils/serializers/input/settings.js +1 -0
  91. package/core/server/api/endpoints/utils/serializers/output/mappers/activity-feed-events.js +51 -0
  92. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +10 -1
  93. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +1 -1
  94. package/core/server/api/endpoints/utils/validators/input/pages.js +24 -9
  95. package/core/server/api/endpoints/utils/validators/input/posts.js +24 -9
  96. package/core/server/data/exporter/table-lists.js +4 -1
  97. package/core/server/data/migrations/utils/settings.js +1 -3
  98. package/core/server/data/migrations/versions/5.15/2022-09-12-16-10-add-posts-lexical-column.js +8 -0
  99. package/core/server/data/migrations/versions/5.15/2022-09-14-12-46-add-email-track-clicks-setting.js +8 -0
  100. package/core/server/data/migrations/versions/5.15/2022-09-16-08-22-add-post-revisions-table.js +9 -0
  101. package/core/server/data/migrations/versions/5.16/2022-09-19-09-04-add-link-redirects-table.js +10 -0
  102. package/core/server/data/migrations/versions/5.16/2022-09-19-09-05-add-members-link-click-events-table.js +8 -0
  103. package/core/server/data/migrations/versions/5.16/2022-09-19-17-44-add-referrer-columns-to-member-events-table.js +21 -0
  104. package/core/server/data/migrations/versions/5.16/2022-09-19-17-44-add-referrer-columns-to-subscription-events-table.js +21 -0
  105. package/core/server/data/schema/default-settings/default-settings.json +8 -0
  106. package/core/server/data/schema/schema.js +29 -1
  107. package/core/server/lib/lexical.js +12 -0
  108. package/core/server/models/base/plugins/user-type.js +4 -6
  109. package/core/server/models/link-redirect.js +65 -0
  110. package/core/server/models/member-link-click-event.js +26 -0
  111. package/core/server/models/post-revision.js +35 -0
  112. package/core/server/models/post.js +90 -9
  113. package/core/server/services/bulk-email/bulk-email-processor.js +9 -10
  114. package/core/server/services/{redirects → custom-redirects}/api.js +0 -0
  115. package/core/server/services/{redirects → custom-redirects}/index.js +0 -0
  116. package/core/server/services/{redirects → custom-redirects}/utils.js +0 -0
  117. package/core/server/services/{redirects → custom-redirects}/validation.js +0 -0
  118. package/core/server/services/explore/service.js +5 -3
  119. package/core/server/services/link-redirection/LinkRedirectRepository.js +88 -0
  120. package/core/server/services/link-redirection/index.js +31 -0
  121. package/core/server/services/link-tracking/LinkClickRepository.js +69 -0
  122. package/core/server/services/link-tracking/PostLinkRepository.js +62 -0
  123. package/core/server/services/link-tracking/index.js +48 -0
  124. package/core/server/services/mega/email-preview.js +7 -0
  125. package/core/server/services/mega/mega.js +1 -1
  126. package/core/server/services/mega/post-email-serializer.js +101 -27
  127. package/core/server/services/member-attribution/index.js +12 -5
  128. package/core/server/services/members/api.js +1 -2
  129. package/core/server/services/permissions/index.js +1 -2
  130. package/core/server/services/posts/posts-service.js +7 -16
  131. package/core/server/services/posts/stats/post-stats.js +35 -0
  132. package/core/server/services/staff/index.js +10 -1
  133. package/core/server/services/url/config.js +2 -0
  134. package/core/server/web/admin/app.js +8 -2
  135. package/core/server/web/api/endpoints/admin/routes.js +5 -0
  136. package/core/shared/config/defaults.json +7 -7
  137. package/core/shared/config/overrides.json +3 -2
  138. package/core/shared/labs.js +4 -2
  139. package/package.json +115 -107
  140. package/yarn.lock +828 -414
  141. package/components/tryghost-adapter-manager-5.14.2.tgz +0 -0
  142. package/components/tryghost-api-framework-5.14.2.tgz +0 -0
  143. package/components/tryghost-api-version-compatibility-service-5.14.2.tgz +0 -0
  144. package/components/tryghost-bootstrap-socket-5.14.2.tgz +0 -0
  145. package/components/tryghost-constants-5.14.2.tgz +0 -0
  146. package/components/tryghost-custom-theme-settings-service-5.14.2.tgz +0 -0
  147. package/components/tryghost-domain-events-5.14.2.tgz +0 -0
  148. package/components/tryghost-email-analytics-provider-mailgun-5.14.2.tgz +0 -0
  149. package/components/tryghost-email-content-generator-5.14.2.tgz +0 -0
  150. package/components/tryghost-express-dynamic-redirects-5.14.2.tgz +0 -0
  151. package/components/tryghost-extract-api-key-5.14.2.tgz +0 -0
  152. package/components/tryghost-html-to-plaintext-5.14.2.tgz +0 -0
  153. package/components/tryghost-magic-link-5.14.2.tgz +0 -0
  154. package/components/tryghost-member-analytics-service-5.14.2.tgz +0 -0
  155. package/components/tryghost-member-attribution-5.14.2.tgz +0 -0
  156. package/components/tryghost-member-events-5.14.2.tgz +0 -0
  157. package/components/tryghost-members-analytics-ingress-5.14.2.tgz +0 -0
  158. package/components/tryghost-members-api-5.14.2.tgz +0 -0
  159. package/components/tryghost-members-csv-5.14.2.tgz +0 -0
  160. package/components/tryghost-members-events-service-5.14.2.tgz +0 -0
  161. package/components/tryghost-members-importer-5.14.2.tgz +0 -0
  162. package/components/tryghost-members-offers-5.14.2.tgz +0 -0
  163. package/components/tryghost-members-stripe-service-5.14.2.tgz +0 -0
  164. package/components/tryghost-minifier-5.14.2.tgz +0 -0
  165. package/components/tryghost-mw-api-version-mismatch-5.14.2.tgz +0 -0
  166. package/components/tryghost-mw-cache-control-5.14.2.tgz +0 -0
  167. package/components/tryghost-mw-session-from-token-5.14.2.tgz +0 -0
  168. package/components/tryghost-mw-update-user-last-seen-5.14.2.tgz +0 -0
  169. package/components/tryghost-mw-vhost-5.14.2.tgz +0 -0
  170. package/components/tryghost-session-service-5.14.2.tgz +0 -0
  171. package/components/tryghost-settings-path-manager-5.14.2.tgz +0 -0
  172. package/components/tryghost-staff-service-5.14.2.tgz +0 -0
  173. package/components/tryghost-update-check-service-5.14.2.tgz +0 -0
  174. package/core/built/admin/assets/ghost-40adc8310dcdd0be163cbf7b9d89c59a.css +0 -1
  175. package/core/built/admin/assets/ghost-dark-13b669d50f494edf24d832b32ece2177.css +0 -1
  176. package/core/server/services/permissions/public.js +0 -76
@@ -8,11 +8,12 @@ const messages = {
8
8
  };
9
9
 
10
10
  class PostsService {
11
- constructor({mega, urlUtils, models, isSet}) {
11
+ constructor({mega, urlUtils, models, isSet, stats}) {
12
12
  this.mega = mega;
13
13
  this.urlUtils = urlUtils;
14
14
  this.models = models;
15
15
  this.isSet = isSet;
16
+ this.stats = stats;
16
17
  }
17
18
 
18
19
  async editPost(frame) {
@@ -76,20 +77,6 @@ class PostsService {
76
77
  }
77
78
  }
78
79
 
79
- /**
80
- * Returns the most recently `published_at` post that was published or sent
81
- * via email
82
- */
83
- async getMostRecentlyPublishedPost() {
84
- const recentlyPublishedPost = await this.models.Post.findPage({
85
- status: ['published', 'sent'],
86
- order: 'published_at DESC',
87
- limit: 1
88
- });
89
-
90
- return recentlyPublishedPost?.data[0];
91
- }
92
-
93
80
  /**
94
81
  * Calculates if the email should be tried to be sent out
95
82
  * @private
@@ -135,12 +122,16 @@ const getPostServiceInstance = () => {
135
122
  const {mega} = require('../mega');
136
123
  const labs = require('../../../shared/labs');
137
124
  const models = require('../../models');
125
+ const PostStats = require('./stats/post-stats');
126
+
127
+ const postStats = new PostStats();
138
128
 
139
129
  return new PostsService({
140
130
  mega: mega,
141
131
  urlUtils: urlUtils,
142
132
  models: models,
143
- isSet: labs.isSet.bind(labs)
133
+ isSet: labs.isSet.bind(labs),
134
+ stats: postStats
144
135
  });
145
136
  };
146
137
 
@@ -0,0 +1,35 @@
1
+ const db = require('../../../data/db');
2
+ class PostStats {
3
+ #db;
4
+
5
+ constructor() {
6
+ this.#db = db;
7
+ }
8
+
9
+ /**
10
+ * Returns the most recently `published_at` post that was published or sent
11
+ * via email
12
+ */
13
+ async getMostRecentlyPublishedPostDate() {
14
+ const result = await this.#db.knex.select('published_at')
15
+ .from('posts')
16
+ .whereIn('status', ['sent', 'published'])
17
+ .orderBy('published_at', 'desc')
18
+ .limit(1);
19
+
20
+ return result?.[0]?.published_at ? new Date(result?.[0]?.published_at) : null;
21
+ }
22
+
23
+ /**
24
+ * Fetches count of all published posts
25
+ */
26
+ async getTotalPostsPublished() {
27
+ const [result] = await this.#db.knex('posts')
28
+ .whereIn('status', ['sent', 'published'])
29
+ .count('id', {as: 'total'});
30
+
31
+ return result.total;
32
+ }
33
+ }
34
+
35
+ module.exports = PostStats;
@@ -1,5 +1,11 @@
1
+ const DomainEvents = require('@tryghost/domain-events');
1
2
  class StaffServiceWrapper {
2
3
  init() {
4
+ if (this.api) {
5
+ // Prevent creating duplicate DomainEvents subscribers
6
+ return;
7
+ }
8
+
3
9
  const StaffService = require('@tryghost/staff-service');
4
10
 
5
11
  const logging = require('@tryghost/logging');
@@ -16,8 +22,11 @@ class StaffServiceWrapper {
16
22
  mailer,
17
23
  settingsHelpers,
18
24
  settingsCache,
19
- urlUtils
25
+ urlUtils,
26
+ DomainEvents
20
27
  });
28
+
29
+ this.api.subscribeEvents();
21
30
  }
22
31
  }
23
32
 
@@ -12,6 +12,7 @@ module.exports = [
12
12
  exclude: [
13
13
  'title',
14
14
  'mobiledoc',
15
+ 'lexical',
15
16
  'html',
16
17
  'plaintext',
17
18
  // @TODO: https://github.com/TryGhost/Ghost/issues/10335
@@ -55,6 +56,7 @@ module.exports = [
55
56
  exclude: [
56
57
  'title',
57
58
  'mobiledoc',
59
+ 'lexical',
58
60
  'html',
59
61
  'plaintext',
60
62
  // @TODO: https://github.com/TryGhost/Ghost/issues/10335
@@ -17,9 +17,15 @@ module.exports = function setupAdminApp() {
17
17
  // Admin assets
18
18
  // @TODO ensure this gets a local 404 error handler
19
19
  const configMaxAge = config.get('caching:admin:maxAge');
20
+ // @NOTE: when we start working on HTTP/3 optimizations the immutable headers
21
+ // produced below should be split into separate 'Cache-Control' entry.
22
+ // For reference see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching#validation_2
20
23
  adminApp.use('/assets', serveStatic(
21
- path.join(config.get('paths').adminAssets, 'assets'),
22
- {maxAge: (configMaxAge || configMaxAge === 0) ? configMaxAge : constants.ONE_YEAR_MS, fallthrough: false}
24
+ path.join(config.get('paths').adminAssets, 'assets'), {
25
+ maxAge: (configMaxAge || configMaxAge === 0) ? configMaxAge : constants.ONE_YEAR_MS,
26
+ immutable: true,
27
+ fallthrough: false
28
+ }
23
29
  ));
24
30
 
25
31
  adminApp.use('/auth-frame', serveStatic(
@@ -3,6 +3,7 @@ const api = require('../../../../api').endpoints;
3
3
  const {http} = require('@tryghost/api-framework');
4
4
  const apiMw = require('../../middleware');
5
5
  const mw = require('./middleware');
6
+ const labs = require('../../../../../shared/labs');
6
7
 
7
8
  const shared = require('../../../shared');
8
9
 
@@ -134,6 +135,8 @@ module.exports = function apiRoutes() {
134
135
  router.get('/stats/member_count', mw.authAdminApi, http(api.stats.memberCountHistory));
135
136
  router.get('/stats/mrr', mw.authAdminApi, http(api.stats.mrr));
136
137
  router.get('/stats/subscriptions', mw.authAdminApi, http(api.stats.subscriptions));
138
+ router.get('/stats/referrers/posts/:id', mw.authAdminApi, http(api.stats.postReferrers));
139
+ router.get('/stats/referrers', mw.authAdminApi, http(api.stats.referrersHistory));
137
140
 
138
141
  // ## Labels
139
142
  router.get('/labels', mw.authAdminApi, http(api.labels.browse));
@@ -307,5 +310,7 @@ module.exports = function apiRoutes() {
307
310
  router.put('/newsletters/verifications/', mw.authAdminApi, http(api.newsletters.verifyPropertyUpdate));
308
311
  router.put('/newsletters/:id', mw.authAdminApi, http(api.newsletters.edit));
309
312
 
313
+ router.get('/links', labs.enabledMiddleware('emailClicks'), mw.authAdminApi, http(api.links.browse));
314
+
310
315
  return router;
311
316
  };
@@ -139,22 +139,22 @@
139
139
  "emailAnalytics": true
140
140
  },
141
141
  "portal": {
142
- "url": "https://cdn.jsdelivr.net/npm/@tryghost/portal@~{version}/umd/portal.min.js",
142
+ "url": "https://cdn.jsdelivr.net/ghost/portal@~{version}/umd/portal.min.js",
143
143
  "version": "2.12"
144
144
  },
145
145
  "sodoSearch": {
146
- "url": "https://cdn.jsdelivr.net/npm/@tryghost/sodo-search@~{version}/umd/sodo-search.min.js",
147
- "styles": "https://cdn.jsdelivr.net/npm/@tryghost/sodo-search@~{version}/umd/main.css",
146
+ "url": "https://cdn.jsdelivr.net/ghost/sodo-search@~{version}/umd/sodo-search.min.js",
147
+ "styles": "https://cdn.jsdelivr.net/ghost/sodo-search@~{version}/umd/main.css",
148
148
  "version": "1.1"
149
149
  },
150
150
  "comments": {
151
- "url": "https://cdn.jsdelivr.net/npm/@tryghost/comments-ui@~{version}/umd/comments-ui.min.js",
152
- "styles": "https://cdn.jsdelivr.net/npm/@tryghost/comments-ui@~{version}/umd/main.css",
151
+ "url": "https://cdn.jsdelivr.net/ghost/comments-ui@~{version}/umd/comments-ui.min.js",
152
+ "styles": "https://cdn.jsdelivr.net/ghost/comments-ui@~{version}/umd/main.css",
153
153
  "version": "0.10.1"
154
154
  },
155
155
  "editor": {
156
- "url": "https://unpkg.com/@tryghost/koenig-react/dist/umd/koenig-react.min.js",
157
- "lexicalUrl": "https://unpkg.com/@tryghost/koenig-lexical-experiment/dist/koenig-lexical.umd.js"
156
+ "url": "https://unpkg.com/@tryghost/koenig-lexical@~{version}/dist/koenig-lexical.umd.js",
157
+ "version": "0.0"
158
158
  },
159
159
  "tenor": {
160
160
  "googleApiKey": null,
@@ -30,7 +30,7 @@
30
30
  "contentTypes": ["image/jpeg", "image/png", "image/gif", "image/svg+xml", "image/x-icon", "image/vnd.microsoft.icon", "image/webp"]
31
31
  },
32
32
  "media": {
33
- "extensions": [".mp4",".webm", ".ogv", ".mp3", ".wav", ".ogg"],
33
+ "extensions": [".mp4",".webm", ".ogv", ".mp3", ".wav", ".ogg", ".m4a"],
34
34
  "contentTypes": [
35
35
  "video/mp4",
36
36
  "video/webm",
@@ -40,7 +40,8 @@
40
40
  "audio/wave",
41
41
  "audio/wav",
42
42
  "audio/x-wav",
43
- "audio/ogg"
43
+ "audio/ogg",
44
+ "audio/x-m4a"
44
45
  ]
45
46
  },
46
47
  "thumbnails": {
@@ -15,7 +15,6 @@ const messages = {
15
15
 
16
16
  // flags in this list always return `true`, allows quick global enable prior to full flag removal
17
17
  const GA_FEATURES = [
18
- 'auditLog',
19
18
  'newsletterPaywall',
20
19
  'freeTrial',
21
20
  'compExpiring',
@@ -32,7 +31,10 @@ const BETA_FEATURES = [
32
31
 
33
32
  const ALPHA_FEATURES = [
34
33
  'urlCache',
35
- 'beforeAfterCard'
34
+ 'beforeAfterCard',
35
+ 'emailClicks',
36
+ 'sourceAttribution',
37
+ 'lexicalEditor'
36
38
  ];
37
39
 
38
40
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.14.2",
3
+ "version": "5.16.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -52,73 +52,77 @@
52
52
  "cli": "^1.17.0"
53
53
  },
54
54
  "dependencies": {
55
- "@sentry/node": "7.12.1",
55
+ "@sentry/node": "7.13.0",
56
56
  "@tryghost/adapter-base-cache": "0.1.2",
57
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.14.2.tgz",
58
- "@tryghost/admin-api-schema": "4.1.1",
59
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.14.2.tgz",
60
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.14.2.tgz",
61
- "@tryghost/bookshelf-plugins": "0.5.0",
62
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.14.2.tgz",
57
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.16.0.tgz",
58
+ "@tryghost/admin-api-schema": "4.2.0",
59
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.16.0.tgz",
60
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.16.0.tgz",
61
+ "@tryghost/bookshelf-plugins": "0.5.1",
62
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.16.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.14.2.tgz",
66
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.14.2.tgz",
67
- "@tryghost/database-info": "0.3.9",
65
+ "@tryghost/constants": "file:components/tryghost-constants-5.16.0.tgz",
66
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.16.0.tgz",
67
+ "@tryghost/database-info": "0.3.10",
68
68
  "@tryghost/debug": "0.1.18",
69
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.14.2.tgz",
70
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.14.2.tgz",
71
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.14.2.tgz",
72
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.14.2.tgz",
73
- "@tryghost/errors": "1.2.15",
74
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.14.2.tgz",
75
- "@tryghost/helpers": "1.1.73",
76
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.14.2.tgz",
69
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.16.0.tgz",
70
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.16.0.tgz",
71
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.16.0.tgz",
72
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.16.0.tgz",
73
+ "@tryghost/errors": "1.2.16",
74
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.16.0.tgz",
75
+ "@tryghost/helpers": "1.1.74",
76
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.16.0.tgz",
77
77
  "@tryghost/image-transform": "1.2.2",
78
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.14.2.tgz",
78
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.16.0.tgz",
79
79
  "@tryghost/kg-card-factory": "3.1.5",
80
80
  "@tryghost/kg-default-atoms": "3.1.4",
81
- "@tryghost/kg-default-cards": "5.18.0",
81
+ "@tryghost/kg-default-cards": "5.18.2",
82
+ "@tryghost/kg-lexical-html-renderer": "0.0.7",
82
83
  "@tryghost/kg-mobiledoc-html-renderer": "5.3.7",
83
84
  "@tryghost/limit-service": "1.2.3",
84
- "@tryghost/logging": "2.3.0",
85
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.14.2.tgz",
86
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.14.2.tgz",
87
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.14.2.tgz",
88
- "@tryghost/member-events": "file:components/tryghost-member-events-5.14.2.tgz",
89
- "@tryghost/members-api": "file:components/tryghost-members-api-5.14.2.tgz",
90
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.14.2.tgz",
91
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.14.2.tgz",
92
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.14.2.tgz",
93
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.14.2.tgz",
94
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.14.2.tgz",
95
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.14.2.tgz",
96
- "@tryghost/metrics": "1.0.15",
97
- "@tryghost/minifier": "file:components/tryghost-minifier-5.14.2.tgz",
98
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.14.2.tgz",
99
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.14.2.tgz",
100
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.14.2.tgz",
101
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.14.2.tgz",
102
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.14.2.tgz",
103
- "@tryghost/nodemailer": "0.3.25",
85
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.16.0.tgz",
86
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.16.0.tgz",
87
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.16.0.tgz",
88
+ "@tryghost/logging": "2.3.1",
89
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.16.0.tgz",
90
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.16.0.tgz",
91
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.16.0.tgz",
92
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.16.0.tgz",
93
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.16.0.tgz",
94
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.16.0.tgz",
95
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.16.0.tgz",
96
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.16.0.tgz",
97
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.16.0.tgz",
98
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.16.0.tgz",
99
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.16.0.tgz",
100
+ "@tryghost/metrics": "1.0.16",
101
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.16.0.tgz",
102
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.16.0.tgz",
103
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.16.0.tgz",
104
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.16.0.tgz",
105
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.16.0.tgz",
106
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.16.0.tgz",
107
+ "@tryghost/nodemailer": "0.3.27",
104
108
  "@tryghost/nql": "0.9.2",
105
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.14.2.tgz",
106
- "@tryghost/package-json": "file:components/tryghost-package-json-5.14.2.tgz",
109
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.16.0.tgz",
110
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.16.0.tgz",
107
111
  "@tryghost/pretty-cli": "1.2.30",
108
112
  "@tryghost/promise": "0.1.21",
109
- "@tryghost/request": "0.1.29",
110
- "@tryghost/security": "file:components/tryghost-security-5.14.2.tgz",
111
- "@tryghost/session-service": "file:components/tryghost-session-service-5.14.2.tgz",
112
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.14.2.tgz",
113
+ "@tryghost/request": "0.1.30",
114
+ "@tryghost/security": "file:components/tryghost-security-5.16.0.tgz",
115
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.16.0.tgz",
116
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.16.0.tgz",
113
117
  "@tryghost/social-urls": "0.1.33",
114
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.14.2.tgz",
115
- "@tryghost/stats-service": "0.3.0",
118
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.16.0.tgz",
119
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.16.0.tgz",
116
120
  "@tryghost/string": "0.2.1",
117
121
  "@tryghost/tpl": "0.1.18",
118
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.14.2.tgz",
119
- "@tryghost/url-utils": "4.0.3",
120
- "@tryghost/validator": "0.1.27",
121
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.14.2.tgz",
122
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.16.0.tgz",
123
+ "@tryghost/url-utils": "4.2.0",
124
+ "@tryghost/validator": "0.1.28",
125
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.16.0.tgz",
122
126
  "@tryghost/version": "0.1.16",
123
127
  "@tryghost/zip": "1.1.28",
124
128
  "amperize": "0.6.1",
@@ -159,7 +163,7 @@
159
163
  "juice": "8.1.0",
160
164
  "keypair": "1.0.4",
161
165
  "knex": "2.3.0",
162
- "knex-migrator": "5.0.4",
166
+ "knex-migrator": "5.0.6",
163
167
  "lodash": "4.17.21",
164
168
  "luxon": "3.0.3",
165
169
  "moment": "2.24.0",
@@ -172,29 +176,28 @@
172
176
  "path-match": "1.2.4",
173
177
  "probe-image-size": "7.2.3",
174
178
  "rss": "1.2.2",
175
- "sanitize-html": "2.7.1",
179
+ "sanitize-html": "2.7.2",
176
180
  "semver": "7.3.7",
177
181
  "stoppable": "1.1.0",
178
182
  "uuid": "9.0.0",
179
183
  "xml": "1.0.1"
180
184
  },
181
185
  "optionalDependencies": {
182
- "@tryghost/html-to-mobiledoc": "1.8.12",
183
- "sqlite3": "5.0.11"
186
+ "@tryghost/html-to-mobiledoc": "1.8.13",
187
+ "sqlite3": "5.1.1"
184
188
  },
185
189
  "devDependencies": {
186
- "@playwright/test": "1.25.2",
187
- "@tryghost/express-test": "0.11.3",
190
+ "@playwright/test": "1.26.0",
191
+ "@tryghost/express-test": "0.11.4",
188
192
  "@tryghost/webhook-mock-receiver": "0.1.2",
189
193
  "@types/common-tags": "1.8.1",
190
194
  "c8": "7.12.0",
191
195
  "cli-progress": "3.11.2",
192
196
  "cssnano": "5.1.13",
193
- "eslint": "8.23.0",
197
+ "eslint": "8.23.1",
194
198
  "grunt": "1.5.3",
195
199
  "grunt-contrib-symlink": "1.0.0",
196
- "grunt-shell": "4.0.0",
197
- "html-validate": "7.3.3",
200
+ "html-validate": "7.5.0",
198
201
  "inquirer": "8.2.4",
199
202
  "jwks-rsa": "2.1.4",
200
203
  "mocha": "10.0.0",
@@ -211,52 +214,57 @@
211
214
  "tmp": "0.2.1"
212
215
  },
213
216
  "resolutions": {
214
- "@tryghost/logging": "2.3.0",
217
+ "@tryghost/logging": "2.3.1",
215
218
  "moment": "2.24.0",
216
219
  "moment-timezone": "0.5.23",
217
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.14.2.tgz",
218
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.14.2.tgz",
219
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.14.2.tgz",
220
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.14.2.tgz",
221
- "@tryghost/constants": "file:components/tryghost-constants-5.14.2.tgz",
222
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.14.2.tgz",
223
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.14.2.tgz",
224
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.14.2.tgz",
225
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.14.2.tgz",
226
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.14.2.tgz",
227
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.14.2.tgz",
228
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.14.2.tgz",
229
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.14.2.tgz",
230
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.14.2.tgz",
231
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.14.2.tgz",
232
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.14.2.tgz",
233
- "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.14.2.tgz",
234
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.14.2.tgz",
235
- "@tryghost/member-events": "file:components/tryghost-member-events-5.14.2.tgz",
236
- "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.14.2.tgz",
237
- "@tryghost/members-api": "file:components/tryghost-members-api-5.14.2.tgz",
238
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.14.2.tgz",
239
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.14.2.tgz",
240
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.14.2.tgz",
241
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.14.2.tgz",
242
- "@tryghost/minifier": "file:components/tryghost-minifier-5.14.2.tgz",
243
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.14.2.tgz",
244
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.14.2.tgz",
245
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.14.2.tgz",
246
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.14.2.tgz",
247
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.14.2.tgz",
248
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.14.2.tgz",
249
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.14.2.tgz",
250
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.14.2.tgz",
251
- "@tryghost/package-json": "file:components/tryghost-package-json-5.14.2.tgz",
252
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.14.2.tgz",
253
- "@tryghost/security": "file:components/tryghost-security-5.14.2.tgz",
254
- "@tryghost/session-service": "file:components/tryghost-session-service-5.14.2.tgz",
255
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.14.2.tgz",
256
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.14.2.tgz",
257
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.14.2.tgz",
258
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.14.2.tgz",
259
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.14.2.tgz",
260
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.14.2.tgz"
220
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.16.0.tgz",
221
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.16.0.tgz",
222
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.16.0.tgz",
223
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.16.0.tgz",
224
+ "@tryghost/constants": "file:components/tryghost-constants-5.16.0.tgz",
225
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.16.0.tgz",
226
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.16.0.tgz",
227
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.16.0.tgz",
228
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.16.0.tgz",
229
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.16.0.tgz",
230
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.16.0.tgz",
231
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.16.0.tgz",
232
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.16.0.tgz",
233
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.16.0.tgz",
234
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.16.0.tgz",
235
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.16.0.tgz",
236
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.16.0.tgz",
237
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.16.0.tgz",
238
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.16.0.tgz",
239
+ "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.16.0.tgz",
240
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.16.0.tgz",
241
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.16.0.tgz",
242
+ "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.16.0.tgz",
243
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.16.0.tgz",
244
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.16.0.tgz",
245
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.16.0.tgz",
246
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.16.0.tgz",
247
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.16.0.tgz",
248
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.16.0.tgz",
249
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.16.0.tgz",
250
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.16.0.tgz",
251
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.16.0.tgz",
252
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.16.0.tgz",
253
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.16.0.tgz",
254
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.16.0.tgz",
255
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.16.0.tgz",
256
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.16.0.tgz",
257
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.16.0.tgz",
258
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.16.0.tgz",
259
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.16.0.tgz",
260
+ "@tryghost/security": "file:components/tryghost-security-5.16.0.tgz",
261
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.16.0.tgz",
262
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.16.0.tgz",
263
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.16.0.tgz",
264
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.16.0.tgz",
265
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.16.0.tgz",
266
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.16.0.tgz",
267
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.16.0.tgz",
268
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.16.0.tgz"
261
269
  }
262
270
  }