ghost 5.47.2 → 5.48.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 (154) hide show
  1. package/components/tryghost-adapter-cache-memory-ttl-5.48.0.tgz +0 -0
  2. package/components/tryghost-adapter-cache-redis-5.48.0.tgz +0 -0
  3. package/components/{tryghost-adapter-manager-5.47.2.tgz → tryghost-adapter-manager-5.48.0.tgz} +0 -0
  4. package/components/{tryghost-announcement-bar-settings-5.47.2.tgz → tryghost-announcement-bar-settings-5.48.0.tgz} +0 -0
  5. package/components/tryghost-api-framework-5.48.0.tgz +0 -0
  6. package/components/tryghost-api-version-compatibility-service-5.48.0.tgz +0 -0
  7. package/components/tryghost-audience-feedback-5.48.0.tgz +0 -0
  8. package/components/tryghost-bootstrap-socket-5.48.0.tgz +0 -0
  9. package/components/tryghost-collections-5.48.0.tgz +0 -0
  10. package/components/tryghost-constants-5.48.0.tgz +0 -0
  11. package/components/tryghost-custom-theme-settings-service-5.48.0.tgz +0 -0
  12. package/components/{tryghost-data-generator-5.47.2.tgz → tryghost-data-generator-5.48.0.tgz} +0 -0
  13. package/components/tryghost-domain-events-5.48.0.tgz +0 -0
  14. package/components/tryghost-dynamic-routing-events-5.48.0.tgz +0 -0
  15. package/components/tryghost-email-analytics-provider-mailgun-5.48.0.tgz +0 -0
  16. package/components/{tryghost-email-analytics-service-5.47.2.tgz → tryghost-email-analytics-service-5.48.0.tgz} +0 -0
  17. package/components/tryghost-email-content-generator-5.48.0.tgz +0 -0
  18. package/components/tryghost-email-events-5.48.0.tgz +0 -0
  19. package/components/{tryghost-email-service-5.47.2.tgz → tryghost-email-service-5.48.0.tgz} +0 -0
  20. package/components/tryghost-email-suppression-list-5.48.0.tgz +0 -0
  21. package/components/tryghost-event-aware-cache-wrapper-5.48.0.tgz +0 -0
  22. package/components/{tryghost-express-dynamic-redirects-5.47.2.tgz → tryghost-express-dynamic-redirects-5.48.0.tgz} +0 -0
  23. package/components/tryghost-external-media-inliner-5.48.0.tgz +0 -0
  24. package/components/tryghost-extract-api-key-5.48.0.tgz +0 -0
  25. package/components/tryghost-html-to-plaintext-5.48.0.tgz +0 -0
  26. package/components/tryghost-i18n-5.48.0.tgz +0 -0
  27. package/components/tryghost-importer-handler-content-files-5.48.0.tgz +0 -0
  28. package/components/{tryghost-importer-revue-5.47.2.tgz → tryghost-importer-revue-5.48.0.tgz} +0 -0
  29. package/components/tryghost-in-memory-repository-5.48.0.tgz +0 -0
  30. package/components/tryghost-job-manager-5.48.0.tgz +0 -0
  31. package/components/tryghost-link-redirects-5.48.0.tgz +0 -0
  32. package/components/tryghost-link-replacer-5.48.0.tgz +0 -0
  33. package/components/tryghost-link-tracking-5.48.0.tgz +0 -0
  34. package/components/{tryghost-magic-link-5.47.2.tgz → tryghost-magic-link-5.48.0.tgz} +0 -0
  35. package/components/tryghost-mailgun-client-5.48.0.tgz +0 -0
  36. package/components/tryghost-member-attribution-5.48.0.tgz +0 -0
  37. package/components/tryghost-member-events-5.48.0.tgz +0 -0
  38. package/components/tryghost-members-api-5.48.0.tgz +0 -0
  39. package/components/tryghost-members-csv-5.48.0.tgz +0 -0
  40. package/components/tryghost-members-events-service-5.48.0.tgz +0 -0
  41. package/components/{tryghost-members-importer-5.47.2.tgz → tryghost-members-importer-5.48.0.tgz} +0 -0
  42. package/components/tryghost-members-offers-5.48.0.tgz +0 -0
  43. package/components/tryghost-members-payments-5.48.0.tgz +0 -0
  44. package/components/tryghost-members-ssr-5.48.0.tgz +0 -0
  45. package/components/{tryghost-members-stripe-service-5.47.2.tgz → tryghost-members-stripe-service-5.48.0.tgz} +0 -0
  46. package/components/{tryghost-mentions-email-report-5.47.2.tgz → tryghost-mentions-email-report-5.48.0.tgz} +0 -0
  47. package/components/tryghost-milestones-5.48.0.tgz +0 -0
  48. package/components/tryghost-minifier-5.48.0.tgz +0 -0
  49. package/components/tryghost-mw-api-version-mismatch-5.48.0.tgz +0 -0
  50. package/components/tryghost-mw-cache-control-5.48.0.tgz +0 -0
  51. package/components/tryghost-mw-error-handler-5.48.0.tgz +0 -0
  52. package/components/tryghost-mw-session-from-token-5.48.0.tgz +0 -0
  53. package/components/tryghost-mw-update-user-last-seen-5.48.0.tgz +0 -0
  54. package/components/tryghost-mw-version-match-5.48.0.tgz +0 -0
  55. package/components/tryghost-mw-vhost-5.48.0.tgz +0 -0
  56. package/components/{tryghost-oembed-service-5.47.2.tgz → tryghost-oembed-service-5.48.0.tgz} +0 -0
  57. package/components/{tryghost-package-json-5.47.2.tgz → tryghost-package-json-5.48.0.tgz} +0 -0
  58. package/components/tryghost-post-revisions-5.48.0.tgz +0 -0
  59. package/components/tryghost-posts-service-5.48.0.tgz +0 -0
  60. package/components/tryghost-referrers-5.48.0.tgz +0 -0
  61. package/components/tryghost-security-5.48.0.tgz +0 -0
  62. package/components/tryghost-session-service-5.48.0.tgz +0 -0
  63. package/components/{tryghost-settings-path-manager-5.47.2.tgz → tryghost-settings-path-manager-5.48.0.tgz} +0 -0
  64. package/components/tryghost-slack-notifications-5.48.0.tgz +0 -0
  65. package/components/{tryghost-staff-service-5.47.2.tgz → tryghost-staff-service-5.48.0.tgz} +0 -0
  66. package/components/tryghost-stats-service-5.48.0.tgz +0 -0
  67. package/components/tryghost-tiers-5.48.0.tgz +0 -0
  68. package/components/{tryghost-update-check-service-5.47.2.tgz → tryghost-update-check-service-5.48.0.tgz} +0 -0
  69. package/components/tryghost-verification-trigger-5.48.0.tgz +0 -0
  70. package/components/tryghost-version-notifications-data-service-5.48.0.tgz +0 -0
  71. package/components/tryghost-webmentions-5.48.0.tgz +0 -0
  72. package/core/built/admin/assets/{chunk.143.53b4d8c5cde17b34408a.js → chunk.143.ef445c0a9173d22b04f9.js} +5 -5
  73. package/core/built/admin/assets/{chunk.178.9830d30e4bead58ff20a.js → chunk.178.30cfc226c3743afc89b3.js} +4 -4
  74. package/core/built/admin/assets/{chunk.11.a4f9c30c0891933434bf.js → chunk.362.6bb7cbc3fd3afda65ae1.js} +1609 -1609
  75. package/core/built/admin/assets/{ghost-2663317760f92b96478bcf8598a4c9de.js → ghost-44f0e17ab07b16efabd07de599fae73b.js} +334 -281
  76. package/core/built/admin/assets/ghost-4f32549fd7f27543889f729a10be18b4.css +1 -0
  77. package/core/built/admin/assets/ghost-dark-99e343e4c1fcf9b6c1bde9dea2b50c6f.css +1 -0
  78. package/core/built/admin/assets/{vendor-39356907c39237f12c305e1d3ca46c85.js → vendor-171b41e446763449417a8687279d2270.js} +43 -41
  79. package/core/built/admin/index.html +6 -6
  80. package/core/frontend/helpers/ghost_head.js +10 -10
  81. package/core/server/api/endpoints/pages.js +25 -0
  82. package/core/server/api/endpoints/posts.js +24 -0
  83. package/core/server/api/endpoints/utils/serializers/input/pages.js +7 -0
  84. package/core/server/api/endpoints/utils/serializers/input/posts.js +7 -0
  85. package/core/server/api/endpoints/utils/serializers/output/config.js +2 -1
  86. package/core/server/api/endpoints/utils/serializers/output/email-posts.js +23 -6
  87. package/core/server/api/endpoints/utils/serializers/output/pages.js +23 -5
  88. package/core/server/api/endpoints/utils/serializers/output/posts.js +23 -5
  89. package/core/server/api/endpoints/utils/serializers/output/previews.js +23 -5
  90. package/core/server/services/public-config/config.js +2 -1
  91. package/core/server/services/tiers/TierRepository.js +56 -16
  92. package/core/server/services/tiers/service.js +4 -0
  93. package/core/server/web/api/endpoints/admin/routes.js +2 -0
  94. package/core/shared/config/defaults.json +4 -0
  95. package/core/shared/labs.js +2 -1
  96. package/package.json +137 -136
  97. package/yarn.lock +2834 -108
  98. package/components/tryghost-adapter-cache-memory-ttl-5.47.2.tgz +0 -0
  99. package/components/tryghost-adapter-cache-redis-5.47.2.tgz +0 -0
  100. package/components/tryghost-api-framework-5.47.2.tgz +0 -0
  101. package/components/tryghost-api-version-compatibility-service-5.47.2.tgz +0 -0
  102. package/components/tryghost-audience-feedback-5.47.2.tgz +0 -0
  103. package/components/tryghost-bootstrap-socket-5.47.2.tgz +0 -0
  104. package/components/tryghost-constants-5.47.2.tgz +0 -0
  105. package/components/tryghost-custom-theme-settings-service-5.47.2.tgz +0 -0
  106. package/components/tryghost-domain-events-5.47.2.tgz +0 -0
  107. package/components/tryghost-dynamic-routing-events-5.47.2.tgz +0 -0
  108. package/components/tryghost-email-analytics-provider-mailgun-5.47.2.tgz +0 -0
  109. package/components/tryghost-email-content-generator-5.47.2.tgz +0 -0
  110. package/components/tryghost-email-events-5.47.2.tgz +0 -0
  111. package/components/tryghost-email-suppression-list-5.47.2.tgz +0 -0
  112. package/components/tryghost-event-aware-cache-wrapper-5.47.2.tgz +0 -0
  113. package/components/tryghost-external-media-inliner-5.47.2.tgz +0 -0
  114. package/components/tryghost-extract-api-key-5.47.2.tgz +0 -0
  115. package/components/tryghost-html-to-plaintext-5.47.2.tgz +0 -0
  116. package/components/tryghost-i18n-5.47.2.tgz +0 -0
  117. package/components/tryghost-importer-handler-content-files-5.47.2.tgz +0 -0
  118. package/components/tryghost-in-memory-repository-5.47.2.tgz +0 -0
  119. package/components/tryghost-job-manager-5.47.2.tgz +0 -0
  120. package/components/tryghost-link-redirects-5.47.2.tgz +0 -0
  121. package/components/tryghost-link-replacer-5.47.2.tgz +0 -0
  122. package/components/tryghost-link-tracking-5.47.2.tgz +0 -0
  123. package/components/tryghost-mailgun-client-5.47.2.tgz +0 -0
  124. package/components/tryghost-member-attribution-5.47.2.tgz +0 -0
  125. package/components/tryghost-member-events-5.47.2.tgz +0 -0
  126. package/components/tryghost-members-api-5.47.2.tgz +0 -0
  127. package/components/tryghost-members-csv-5.47.2.tgz +0 -0
  128. package/components/tryghost-members-events-service-5.47.2.tgz +0 -0
  129. package/components/tryghost-members-offers-5.47.2.tgz +0 -0
  130. package/components/tryghost-members-payments-5.47.2.tgz +0 -0
  131. package/components/tryghost-members-ssr-5.47.2.tgz +0 -0
  132. package/components/tryghost-milestones-5.47.2.tgz +0 -0
  133. package/components/tryghost-minifier-5.47.2.tgz +0 -0
  134. package/components/tryghost-mw-api-version-mismatch-5.47.2.tgz +0 -0
  135. package/components/tryghost-mw-cache-control-5.47.2.tgz +0 -0
  136. package/components/tryghost-mw-error-handler-5.47.2.tgz +0 -0
  137. package/components/tryghost-mw-session-from-token-5.47.2.tgz +0 -0
  138. package/components/tryghost-mw-update-user-last-seen-5.47.2.tgz +0 -0
  139. package/components/tryghost-mw-version-match-5.47.2.tgz +0 -0
  140. package/components/tryghost-mw-vhost-5.47.2.tgz +0 -0
  141. package/components/tryghost-post-revisions-5.47.2.tgz +0 -0
  142. package/components/tryghost-posts-service-5.47.2.tgz +0 -0
  143. package/components/tryghost-referrers-5.47.2.tgz +0 -0
  144. package/components/tryghost-security-5.47.2.tgz +0 -0
  145. package/components/tryghost-session-service-5.47.2.tgz +0 -0
  146. package/components/tryghost-slack-notifications-5.47.2.tgz +0 -0
  147. package/components/tryghost-stats-service-5.47.2.tgz +0 -0
  148. package/components/tryghost-tiers-5.47.2.tgz +0 -0
  149. package/components/tryghost-verification-trigger-5.47.2.tgz +0 -0
  150. package/components/tryghost-version-notifications-data-service-5.47.2.tgz +0 -0
  151. package/components/tryghost-webmentions-5.47.2.tgz +0 -0
  152. package/core/built/admin/assets/ghost-a2e163a59a7ec0c8ceb97289113a9994.css +0 -1
  153. package/core/built/admin/assets/ghost-dark-f2d9fd8b4f7b41e98642a27afdc9b35a.css +0 -1
  154. /package/core/built/admin/assets/{chunk.11.a4f9c30c0891933434bf.js.LICENSE.txt → chunk.362.6bb7cbc3fd3afda65ae1.js.LICENSE.txt} +0 -0
@@ -1,7 +1,7 @@
1
1
  const debug = require('@tryghost/debug')('api:endpoints:utils:serializers:output:posts');
2
2
  const mappers = require('./mappers');
3
- const membersService = require('../../../../../services/members');
4
3
  const papaparse = require('papaparse');
4
+ const tiersService = require('../../../../../services/tiers');
5
5
 
6
6
  module.exports = {
7
7
  async all(models, apiConfig, frame) {
@@ -13,10 +13,28 @@ module.exports = {
13
13
  }
14
14
  let posts = [];
15
15
 
16
- const tiersModels = await membersService.api?.productRepository.list({
17
- limit: 'all'
18
- });
19
- const tiers = tiersModels?.data ? tiersModels.data.map(tierModel => tierModel.toJSON()) : [];
16
+ const tiersPage = await tiersService.api.browse({});
17
+ const tiers = tiersPage.data?.map((model) => {
18
+ const json = model.toJSON();
19
+ return {
20
+ id: json.id,
21
+ name: json.name,
22
+ slug: json.slug,
23
+ active: json.status === 'active',
24
+ welcome_page_url: json.welcomePageURL,
25
+ visibility: json.visibility,
26
+ trial_days: json.trialDays,
27
+ description: json.description,
28
+ type: json.type,
29
+ currency: json.type === 'paid' ? json.currency?.toLowerCase() : null,
30
+ monthly_price: json.monthlyPrice,
31
+ yearly_price: json.yearlyPrice,
32
+ created_at: json.createdAt,
33
+ updated_at: json.updatedAt,
34
+ monthly_price_id: null,
35
+ yearly_price_id: null
36
+ };
37
+ }) || [];
20
38
  if (models.meta) {
21
39
  for (let model of models.data) {
22
40
  let post = await mappers.posts(model, frame, {tiers});
@@ -1,12 +1,30 @@
1
1
  const mappers = require('./mappers');
2
- const membersService = require('../../../../../services/members');
2
+ const tiersService = require('../../../../../services/tiers');
3
3
 
4
4
  module.exports = {
5
5
  async all(model, apiConfig, frame) {
6
- const tiersModels = await membersService.api.productRepository.list({
7
- limit: 'all'
8
- });
9
- const tiers = tiersModels.data ? tiersModels.data.map(tierModel => tierModel.toJSON()) : [];
6
+ const tiersPage = await tiersService.api.browse({});
7
+ const tiers = tiersPage.data?.map((tierModel) => {
8
+ const json = tierModel.toJSON();
9
+ return {
10
+ id: json.id,
11
+ name: json.name,
12
+ slug: json.slug,
13
+ active: json.status === 'active',
14
+ welcome_page_url: json.welcomePageURL,
15
+ visibility: json.visibility,
16
+ trial_days: json.trialDays,
17
+ description: json.description,
18
+ type: json.type,
19
+ currency: json.type === 'paid' ? json.currency?.toLowerCase() : null,
20
+ monthly_price: json.monthlyPrice,
21
+ yearly_price: json.yearlyPrice,
22
+ created_at: json.createdAt,
23
+ updated_at: json.updatedAt,
24
+ monthly_price_id: null,
25
+ yearly_price_id: null
26
+ };
27
+ }) || [];
10
28
 
11
29
  const data = await mappers.posts(model, frame, {tiers});
12
30
  frame.response = {
@@ -20,7 +20,8 @@ module.exports = function getConfigProperties() {
20
20
  hostSettings: config.get('hostSettings'),
21
21
  tenor: config.get('tenor'),
22
22
  editor: config.get('editor'),
23
- pintura: config.get('pintura')
23
+ pintura: config.get('pintura'),
24
+ adminX: config.get('adminX')
24
25
  };
25
26
 
26
27
  const billingUrl = config.get('hostSettings:billing:enabled') ? config.get('hostSettings:billing:url') : '';
@@ -1,4 +1,5 @@
1
1
  const {Tier} = require('@tryghost/tiers');
2
+ const nql = require('@tryghost/nql');
2
3
 
3
4
  /**
4
5
  * @typedef {import('@tryghost/tiers/lib/TiersAPI').ITierRepository} ITierRepository
@@ -8,6 +9,11 @@ const {Tier} = require('@tryghost/tiers');
8
9
  * @implements {ITierRepository}
9
10
  */
10
11
  module.exports = class TierRepository {
12
+ /** @type {import('@tryghost/tiers/lib/Tier')[]} */
13
+ #store = [];
14
+ /** @type {Object.<string, true>} */
15
+ #ids = {};
16
+
11
17
  /** @type {Object} */
12
18
  #ProductModel;
13
19
 
@@ -24,6 +30,32 @@ module.exports = class TierRepository {
24
30
  this.#DomainEvents = deps.DomainEvents;
25
31
  }
26
32
 
33
+ async init() {
34
+ this.#store = [];
35
+ this.#ids = {};
36
+ const models = await this.#ProductModel.findAll({
37
+ withRelated: ['benefits']
38
+ });
39
+ for (const model of models) {
40
+ const tier = await Tier.create(this.mapToTier(model));
41
+ this.#store.push(tier);
42
+ this.#ids[tier.id.toHexString()] = true;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * @param {import('@tryghost/tiers/lib/Tier')} tier
48
+ * @returns {any}
49
+ */
50
+ toPrimitive(tier) {
51
+ return {
52
+ ...tier,
53
+ active: (tier.status === 'active'),
54
+ type: tier.type,
55
+ id: tier.id.toHexString()
56
+ };
57
+ }
58
+
27
59
  /**
28
60
  * @private
29
61
  */
@@ -54,16 +86,12 @@ module.exports = class TierRepository {
54
86
  * @returns {Promise<import('@tryghost/tiers/lib/Tier')[]>}
55
87
  */
56
88
  async getAll(options = {}) {
57
- const collection = await this.#ProductModel.findAll({...options, withRelated: ['benefits']});
58
-
59
- const result = [];
60
-
61
- for (const model of collection.models) {
62
- const tier = await Tier.create(this.mapToTier(model));
63
- result.push(tier);
64
- }
65
-
66
- return result;
89
+ const filter = nql(options.filter, {});
90
+ return Promise.all(this.#store.slice().filter((item) => {
91
+ return filter.queryJSON(this.toPrimitive(item));
92
+ }).map((tier) => {
93
+ return Tier.create(tier);
94
+ }));
67
95
  }
68
96
 
69
97
  /**
@@ -71,9 +99,15 @@ module.exports = class TierRepository {
71
99
  * @returns {Promise<import('@tryghost/tiers/lib/Tier')>}
72
100
  */
73
101
  async getById(id) {
74
- const model = await this.#ProductModel.findOne({id: id.toHexString()}, {withRelated: ['benefits']});
102
+ const found = this.#store.find((item) => {
103
+ return item.id.equals(id);
104
+ });
105
+
106
+ if (!found) {
107
+ return null;
108
+ }
75
109
 
76
- return await Tier.create(this.mapToTier(model));
110
+ return Tier.create(found);
77
111
  }
78
112
 
79
113
  /**
@@ -99,14 +133,20 @@ module.exports = class TierRepository {
99
133
  benefits: tier.benefits.map(name => ({name}))
100
134
  };
101
135
 
102
- const existing = await this.#ProductModel.findOne({id: data.id}, {require: false});
136
+ const toSave = await Tier.create(tier);
103
137
 
104
- if (!existing) {
105
- await this.#ProductModel.add(data);
106
- } else {
138
+ if (this.#ids[tier.id.toHexString()]) {
139
+ const existing = this.#store.findIndex((item) => {
140
+ return item.id.equals(tier.id);
141
+ });
107
142
  await this.#ProductModel.edit(data, {
108
143
  id: data.id
109
144
  });
145
+ this.#store.splice(existing, 1, toSave);
146
+ } else {
147
+ await this.#ProductModel.add(data);
148
+ this.#store.push(toSave);
149
+ this.#ids[tier.id.toHexString()] = true;
110
150
  }
111
151
 
112
152
  for (const event of tier.events) {
@@ -22,6 +22,10 @@ class TiersServiceWrapper {
22
22
  }
23
23
  };
24
24
 
25
+ await repository.init();
26
+
27
+ this.repository = repository;
28
+
25
29
  this.api = new TiersAPI({
26
30
  repository,
27
31
  slugService
@@ -35,6 +35,7 @@ module.exports = function apiRoutes() {
35
35
  router.get('/posts/slug/:slug', mw.authAdminApi, http(api.posts.read));
36
36
  router.put('/posts/:id', mw.authAdminApi, http(api.posts.edit));
37
37
  router.del('/posts/:id', mw.authAdminApi, http(api.posts.destroy));
38
+ router.post('/posts/:id/copy', mw.authAdminApi, http(api.posts.copy));
38
39
 
39
40
  router.get('/mentions', labs.enabledMiddleware('webmentions'), mw.authAdminApi, http(api.mentions.browse));
40
41
 
@@ -49,6 +50,7 @@ module.exports = function apiRoutes() {
49
50
  router.get('/pages/slug/:slug', mw.authAdminApi, http(api.pages.read));
50
51
  router.put('/pages/:id', mw.authAdminApi, http(api.pages.edit));
51
52
  router.del('/pages/:id', mw.authAdminApi, http(api.pages.destroy));
53
+ router.post('/pages/:id/copy', mw.authAdminApi, http(api.pages.copy));
52
54
 
53
55
  // # Integrations
54
56
 
@@ -196,6 +196,10 @@
196
196
  "url": "https://cdn.jsdelivr.net/ghost/koenig-lexical@~{version}/dist/koenig-lexical.umd.js",
197
197
  "version": "0.2"
198
198
  },
199
+ "adminX": {
200
+ "url": "https://cdn.jsdelivr.net/ghost/admin-x-settings@~{version}/dist/admin-x-settings.umd.js",
201
+ "version": "0.0"
202
+ },
199
203
  "tenor": {
200
204
  "googleApiKey": null,
201
205
  "contentFilter": "off"
@@ -42,7 +42,8 @@ const ALPHA_FEATURES = [
42
42
  'postDiffing',
43
43
  'imageEditor',
44
44
  'signupCard',
45
- 'collections'
45
+ 'collections',
46
+ 'adminXSettings'
46
47
  ];
47
48
 
48
49
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.47.2",
3
+ "version": "5.48.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -61,99 +61,99 @@
61
61
  "@extractus/oembed-extractor": "3.1.8",
62
62
  "@sentry/node": "7.50.0",
63
63
  "@tryghost/adapter-base-cache": "0.1.5",
64
- "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.47.2.tgz",
65
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.47.2.tgz",
64
+ "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.48.0.tgz",
65
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.48.0.tgz",
66
66
  "@tryghost/admin-api-schema": "4.3.0",
67
- "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.47.2.tgz",
68
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.47.2.tgz",
69
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.47.2.tgz",
70
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.47.2.tgz",
67
+ "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.48.0.tgz",
68
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.48.0.tgz",
69
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.48.0.tgz",
70
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.48.0.tgz",
71
71
  "@tryghost/bookshelf-plugins": "0.6.7",
72
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.47.2.tgz",
72
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.48.0.tgz",
73
73
  "@tryghost/color-utils": "0.1.24",
74
74
  "@tryghost/config-url-helpers": "1.0.6",
75
- "@tryghost/constants": "file:components/tryghost-constants-5.47.2.tgz",
76
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.47.2.tgz",
77
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.47.2.tgz",
75
+ "@tryghost/constants": "file:components/tryghost-constants-5.48.0.tgz",
76
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.48.0.tgz",
77
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.48.0.tgz",
78
78
  "@tryghost/database-info": "0.3.17",
79
79
  "@tryghost/debug": "0.1.24",
80
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.47.2.tgz",
81
- "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.47.2.tgz",
82
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.47.2.tgz",
83
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.47.2.tgz",
84
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.47.2.tgz",
80
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.48.0.tgz",
81
+ "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.48.0.tgz",
82
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.48.0.tgz",
83
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.48.0.tgz",
84
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.48.0.tgz",
85
85
  "@tryghost/email-mock-receiver": "0.3.1",
86
- "@tryghost/email-service": "file:components/tryghost-email-service-5.47.2.tgz",
87
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.47.2.tgz",
86
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.48.0.tgz",
87
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.48.0.tgz",
88
88
  "@tryghost/errors": "1.2.24",
89
- "@tryghost/event-aware-cache-wrapper": "file:components/tryghost-event-aware-cache-wrapper-5.47.2.tgz",
90
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.47.2.tgz",
91
- "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.47.2.tgz",
89
+ "@tryghost/event-aware-cache-wrapper": "file:components/tryghost-event-aware-cache-wrapper-5.48.0.tgz",
90
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.48.0.tgz",
91
+ "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.48.0.tgz",
92
92
  "@tryghost/helpers": "1.1.77",
93
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.47.2.tgz",
93
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.48.0.tgz",
94
94
  "@tryghost/http-cache-utils": "0.1.9",
95
- "@tryghost/i18n": "file:components/tryghost-i18n-5.47.2.tgz",
95
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.48.0.tgz",
96
96
  "@tryghost/image-transform": "1.2.6",
97
- "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.47.2.tgz",
98
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.47.2.tgz",
99
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.47.2.tgz",
97
+ "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.48.0.tgz",
98
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.48.0.tgz",
99
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.48.0.tgz",
100
100
  "@tryghost/kg-card-factory": "4.0.8",
101
101
  "@tryghost/kg-default-atoms": "4.0.1",
102
102
  "@tryghost/kg-default-cards": "9.1.0",
103
- "@tryghost/kg-default-nodes": "0.0.39",
104
- "@tryghost/kg-lexical-html-renderer": "0.1.35",
103
+ "@tryghost/kg-default-nodes": "0.0.41",
104
+ "@tryghost/kg-lexical-html-renderer": "0.1.37",
105
105
  "@tryghost/kg-mobiledoc-html-renderer": "6.0.8",
106
106
  "@tryghost/limit-service": "1.2.6",
107
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.47.2.tgz",
108
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.47.2.tgz",
109
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.47.2.tgz",
107
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.48.0.tgz",
108
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.48.0.tgz",
109
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.48.0.tgz",
110
110
  "@tryghost/logging": "2.4.4",
111
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.47.2.tgz",
112
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.47.2.tgz",
113
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.47.2.tgz",
114
- "@tryghost/member-events": "file:components/tryghost-member-events-5.47.2.tgz",
115
- "@tryghost/members-api": "file:components/tryghost-members-api-5.47.2.tgz",
116
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.47.2.tgz",
117
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.47.2.tgz",
118
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.47.2.tgz",
119
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.47.2.tgz",
120
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.47.2.tgz",
121
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.47.2.tgz",
122
- "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.47.2.tgz",
111
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.48.0.tgz",
112
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.48.0.tgz",
113
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.48.0.tgz",
114
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.48.0.tgz",
115
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.48.0.tgz",
116
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.48.0.tgz",
117
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.48.0.tgz",
118
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.48.0.tgz",
119
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.48.0.tgz",
120
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.48.0.tgz",
121
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.48.0.tgz",
122
+ "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.48.0.tgz",
123
123
  "@tryghost/metrics": "1.0.24",
124
- "@tryghost/milestones": "file:components/tryghost-milestones-5.47.2.tgz",
125
- "@tryghost/minifier": "file:components/tryghost-minifier-5.47.2.tgz",
126
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.47.2.tgz",
127
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.47.2.tgz",
128
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.47.2.tgz",
129
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.47.2.tgz",
130
- "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.47.2.tgz",
131
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.47.2.tgz",
124
+ "@tryghost/milestones": "file:components/tryghost-milestones-5.48.0.tgz",
125
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.48.0.tgz",
126
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.48.0.tgz",
127
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.48.0.tgz",
128
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.48.0.tgz",
129
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.48.0.tgz",
130
+ "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.48.0.tgz",
131
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.48.0.tgz",
132
132
  "@tryghost/nodemailer": "0.3.35",
133
133
  "@tryghost/nql": "0.11.0",
134
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.47.2.tgz",
135
- "@tryghost/package-json": "file:components/tryghost-package-json-5.47.2.tgz",
136
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.47.2.tgz",
137
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.47.2.tgz",
134
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.48.0.tgz",
135
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.48.0.tgz",
136
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.48.0.tgz",
137
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.48.0.tgz",
138
138
  "@tryghost/pretty-cli": "1.2.36",
139
139
  "@tryghost/promise": "0.3.4",
140
140
  "@tryghost/request": "0.1.39",
141
- "@tryghost/security": "file:components/tryghost-security-5.47.2.tgz",
142
- "@tryghost/session-service": "file:components/tryghost-session-service-5.47.2.tgz",
143
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.47.2.tgz",
144
- "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.47.2.tgz",
141
+ "@tryghost/security": "file:components/tryghost-security-5.48.0.tgz",
142
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.48.0.tgz",
143
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.48.0.tgz",
144
+ "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.48.0.tgz",
145
145
  "@tryghost/social-urls": "0.1.36",
146
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.47.2.tgz",
147
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.47.2.tgz",
146
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.48.0.tgz",
147
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.48.0.tgz",
148
148
  "@tryghost/string": "0.2.4",
149
- "@tryghost/tiers": "file:components/tryghost-tiers-5.47.2.tgz",
149
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.48.0.tgz",
150
150
  "@tryghost/tpl": "0.1.24",
151
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.47.2.tgz",
151
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.48.0.tgz",
152
152
  "@tryghost/url-utils": "4.4.0",
153
153
  "@tryghost/validator": "0.2.4",
154
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.47.2.tgz",
154
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.48.0.tgz",
155
155
  "@tryghost/version": "0.1.22",
156
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.47.2.tgz",
156
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.48.0.tgz",
157
157
  "@tryghost/zip": "1.1.34",
158
158
  "amperize": "0.6.1",
159
159
  "analytics-node": "6.2.0",
@@ -208,7 +208,7 @@
208
208
  "probe-image-size": "7.2.3",
209
209
  "rss": "1.2.2",
210
210
  "sanitize-html": "2.10.0",
211
- "semver": "7.5.0",
211
+ "semver": "7.5.1",
212
212
  "socket.io": "4.6.1",
213
213
  "stoppable": "1.1.0",
214
214
  "uuid": "9.0.0",
@@ -255,75 +255,76 @@
255
255
  "@tryghost/logging": "2.4.4",
256
256
  "moment": "2.24.0",
257
257
  "moment-timezone": "0.5.23",
258
- "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.47.2.tgz",
259
- "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.47.2.tgz",
260
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.47.2.tgz",
261
- "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.47.2.tgz",
262
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.47.2.tgz",
263
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.47.2.tgz",
264
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.47.2.tgz",
265
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.47.2.tgz",
266
- "@tryghost/constants": "file:components/tryghost-constants-5.47.2.tgz",
267
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.47.2.tgz",
268
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.47.2.tgz",
269
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.47.2.tgz",
270
- "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.47.2.tgz",
271
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.47.2.tgz",
272
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.47.2.tgz",
273
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.47.2.tgz",
274
- "@tryghost/email-events": "file:components/tryghost-email-events-5.47.2.tgz",
275
- "@tryghost/email-service": "file:components/tryghost-email-service-5.47.2.tgz",
276
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.47.2.tgz",
277
- "@tryghost/event-aware-cache-wrapper": "file:components/tryghost-event-aware-cache-wrapper-5.47.2.tgz",
278
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.47.2.tgz",
279
- "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.47.2.tgz",
280
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.47.2.tgz",
281
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.47.2.tgz",
282
- "@tryghost/i18n": "file:components/tryghost-i18n-5.47.2.tgz",
283
- "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.47.2.tgz",
284
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.47.2.tgz",
285
- "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.47.2.tgz",
286
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.47.2.tgz",
287
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.47.2.tgz",
288
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.47.2.tgz",
289
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.47.2.tgz",
290
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.47.2.tgz",
291
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.47.2.tgz",
292
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.47.2.tgz",
293
- "@tryghost/member-events": "file:components/tryghost-member-events-5.47.2.tgz",
294
- "@tryghost/members-api": "file:components/tryghost-members-api-5.47.2.tgz",
295
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.47.2.tgz",
296
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.47.2.tgz",
297
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.47.2.tgz",
298
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.47.2.tgz",
299
- "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.47.2.tgz",
300
- "@tryghost/milestones": "file:components/tryghost-milestones-5.47.2.tgz",
301
- "@tryghost/minifier": "file:components/tryghost-minifier-5.47.2.tgz",
302
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.47.2.tgz",
303
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.47.2.tgz",
304
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.47.2.tgz",
305
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.47.2.tgz",
306
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.47.2.tgz",
307
- "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.47.2.tgz",
308
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.47.2.tgz",
309
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.47.2.tgz",
310
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.47.2.tgz",
311
- "@tryghost/package-json": "file:components/tryghost-package-json-5.47.2.tgz",
312
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.47.2.tgz",
313
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.47.2.tgz",
314
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.47.2.tgz",
315
- "@tryghost/referrers": "file:components/tryghost-referrers-5.47.2.tgz",
316
- "@tryghost/security": "file:components/tryghost-security-5.47.2.tgz",
317
- "@tryghost/session-service": "file:components/tryghost-session-service-5.47.2.tgz",
318
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.47.2.tgz",
319
- "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.47.2.tgz",
320
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.47.2.tgz",
321
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.47.2.tgz",
322
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.47.2.tgz",
323
- "@tryghost/tiers": "file:components/tryghost-tiers-5.47.2.tgz",
324
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.47.2.tgz",
325
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.47.2.tgz",
326
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.47.2.tgz",
327
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.47.2.tgz"
258
+ "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.48.0.tgz",
259
+ "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.48.0.tgz",
260
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.48.0.tgz",
261
+ "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.48.0.tgz",
262
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.48.0.tgz",
263
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.48.0.tgz",
264
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.48.0.tgz",
265
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.48.0.tgz",
266
+ "@tryghost/collections": "file:components/tryghost-collections-5.48.0.tgz",
267
+ "@tryghost/constants": "file:components/tryghost-constants-5.48.0.tgz",
268
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.48.0.tgz",
269
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.48.0.tgz",
270
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.48.0.tgz",
271
+ "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.48.0.tgz",
272
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.48.0.tgz",
273
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.48.0.tgz",
274
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.48.0.tgz",
275
+ "@tryghost/email-events": "file:components/tryghost-email-events-5.48.0.tgz",
276
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.48.0.tgz",
277
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.48.0.tgz",
278
+ "@tryghost/event-aware-cache-wrapper": "file:components/tryghost-event-aware-cache-wrapper-5.48.0.tgz",
279
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.48.0.tgz",
280
+ "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.48.0.tgz",
281
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.48.0.tgz",
282
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.48.0.tgz",
283
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.48.0.tgz",
284
+ "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.48.0.tgz",
285
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.48.0.tgz",
286
+ "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.48.0.tgz",
287
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.48.0.tgz",
288
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.48.0.tgz",
289
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.48.0.tgz",
290
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.48.0.tgz",
291
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.48.0.tgz",
292
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.48.0.tgz",
293
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.48.0.tgz",
294
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.48.0.tgz",
295
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.48.0.tgz",
296
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.48.0.tgz",
297
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.48.0.tgz",
298
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.48.0.tgz",
299
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.48.0.tgz",
300
+ "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.48.0.tgz",
301
+ "@tryghost/milestones": "file:components/tryghost-milestones-5.48.0.tgz",
302
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.48.0.tgz",
303
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.48.0.tgz",
304
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.48.0.tgz",
305
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.48.0.tgz",
306
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.48.0.tgz",
307
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.48.0.tgz",
308
+ "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.48.0.tgz",
309
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.48.0.tgz",
310
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.48.0.tgz",
311
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.48.0.tgz",
312
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.48.0.tgz",
313
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.48.0.tgz",
314
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.48.0.tgz",
315
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.48.0.tgz",
316
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.48.0.tgz",
317
+ "@tryghost/security": "file:components/tryghost-security-5.48.0.tgz",
318
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.48.0.tgz",
319
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.48.0.tgz",
320
+ "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.48.0.tgz",
321
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.48.0.tgz",
322
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.48.0.tgz",
323
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.48.0.tgz",
324
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.48.0.tgz",
325
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.48.0.tgz",
326
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.48.0.tgz",
327
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.48.0.tgz",
328
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.48.0.tgz"
328
329
  }
329
330
  }