ghost 5.9.4 → 5.11.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 (178) hide show
  1. package/components/tryghost-adapter-manager-5.11.0.tgz +0 -0
  2. package/components/tryghost-api-framework-5.11.0.tgz +0 -0
  3. package/components/{tryghost-api-version-compatibility-service-0.0.0.tgz → tryghost-api-version-compatibility-service-5.11.0.tgz} +0 -0
  4. package/components/tryghost-bootstrap-socket-5.11.0.tgz +0 -0
  5. package/components/tryghost-constants-5.11.0.tgz +0 -0
  6. package/components/tryghost-custom-theme-settings-service-5.11.0.tgz +0 -0
  7. package/components/tryghost-domain-events-5.11.0.tgz +0 -0
  8. package/components/tryghost-email-analytics-provider-mailgun-5.11.0.tgz +0 -0
  9. package/components/tryghost-email-analytics-service-5.11.0.tgz +0 -0
  10. package/components/tryghost-email-content-generator-5.11.0.tgz +0 -0
  11. package/components/tryghost-express-dynamic-redirects-5.11.0.tgz +0 -0
  12. package/components/tryghost-extract-api-key-5.11.0.tgz +0 -0
  13. package/components/tryghost-html-to-plaintext-5.11.0.tgz +0 -0
  14. package/components/tryghost-job-manager-5.11.0.tgz +0 -0
  15. package/components/tryghost-magic-link-5.11.0.tgz +0 -0
  16. package/components/tryghost-mailgun-client-5.11.0.tgz +0 -0
  17. package/components/tryghost-member-analytics-service-5.11.0.tgz +0 -0
  18. package/components/tryghost-member-attribution-5.11.0.tgz +0 -0
  19. package/components/tryghost-member-events-5.11.0.tgz +0 -0
  20. package/components/tryghost-members-analytics-ingress-5.11.0.tgz +0 -0
  21. package/components/tryghost-members-api-5.11.0.tgz +0 -0
  22. package/components/{tryghost-members-csv-0.0.0.tgz → tryghost-members-csv-5.11.0.tgz} +0 -0
  23. package/components/tryghost-members-events-service-5.11.0.tgz +0 -0
  24. package/components/tryghost-members-importer-5.11.0.tgz +0 -0
  25. package/components/tryghost-members-offers-5.11.0.tgz +0 -0
  26. package/components/tryghost-members-payments-5.11.0.tgz +0 -0
  27. package/components/tryghost-members-ssr-5.11.0.tgz +0 -0
  28. package/components/tryghost-members-stripe-service-5.11.0.tgz +0 -0
  29. package/components/tryghost-minifier-5.11.0.tgz +0 -0
  30. package/components/tryghost-mw-api-version-mismatch-5.11.0.tgz +0 -0
  31. package/components/tryghost-mw-cache-control-5.11.0.tgz +0 -0
  32. package/components/tryghost-mw-error-handler-5.11.0.tgz +0 -0
  33. package/components/tryghost-mw-session-from-token-5.11.0.tgz +0 -0
  34. package/components/tryghost-mw-update-user-last-seen-5.11.0.tgz +0 -0
  35. package/components/tryghost-mw-vhost-5.11.0.tgz +0 -0
  36. package/components/tryghost-oembed-service-5.11.0.tgz +0 -0
  37. package/components/tryghost-package-json-5.11.0.tgz +0 -0
  38. package/components/tryghost-security-5.11.0.tgz +0 -0
  39. package/components/tryghost-session-service-5.11.0.tgz +0 -0
  40. package/components/tryghost-settings-path-manager-5.11.0.tgz +0 -0
  41. package/components/tryghost-update-check-service-5.11.0.tgz +0 -0
  42. package/components/tryghost-verification-trigger-5.11.0.tgz +0 -0
  43. package/components/tryghost-version-notifications-data-service-5.11.0.tgz +0 -0
  44. package/content/themes/casper/assets/built/screen.css +1 -1
  45. package/content/themes/casper/assets/built/screen.css.map +1 -1
  46. package/content/themes/casper/assets/css/screen.css +8 -5
  47. package/content/themes/casper/package.json +1 -1
  48. package/core/boot.js +2 -0
  49. package/core/bridge.js +2 -0
  50. package/core/built/admin/assets/chunk.143.14589cc066b8120b73e3.js +49 -0
  51. package/core/built/admin/assets/{chunk.174.eec7f6398cef4c3e2485.js → chunk.174.ae492405065373dbe102.js} +31 -29
  52. package/core/built/admin/assets/{chunk.178.506264293194a4922091.js → chunk.178.131e85a10d2031148425.js} +4 -4
  53. package/core/built/admin/assets/{chunk.351.73f27952f867334a8228.js → chunk.579.65e09dd89eec70d059a0.js} +23 -28
  54. package/core/built/admin/assets/{chunk.351.73f27952f867334a8228.js.LICENSE.txt → chunk.579.65e09dd89eec70d059a0.js.LICENSE.txt} +0 -0
  55. package/core/built/admin/assets/ghost-1b0d7c731511bb738ec457d2932c43c0.css +1 -0
  56. package/core/built/admin/assets/{ghost-b441c9cfa2e31453e86460e50ae7e378.js → ghost-40f5bd12d121c54bbc39e7939e78244f.js} +827 -611
  57. package/core/built/admin/assets/ghost-dark-7b2825a050b0382630180f48aa78ea5d.css +1 -0
  58. package/core/built/admin/assets/icons/calendar-stroke.svg +1 -0
  59. package/core/built/admin/assets/icons/ghost-orb-pink.svg +10 -0
  60. package/core/built/admin/assets/icons/pen-stroke.svg +1 -0
  61. package/core/built/admin/assets/img/logos/orb-pink-3-a2c52eb9fda9f2401ea706c3f24976ff.png +0 -0
  62. package/core/built/admin/assets/{vendor-516c9e43b4aeb92079dc1ab92c9ce492.js → vendor-741dc0e4078e044a0c9bfaad104de8b3.js} +85 -78
  63. package/core/built/admin/index.html +6 -6
  64. package/core/frontend/helpers/ghost_head.js +4 -0
  65. package/core/frontend/helpers/search.js +42 -0
  66. package/core/frontend/services/member-attribution-assets/index.js +4 -0
  67. package/core/frontend/services/member-attribution-assets/service.js +83 -0
  68. package/core/frontend/src/member-attribution/.eslintrc +10 -0
  69. package/core/frontend/src/member-attribution/member-attribution.js +90 -0
  70. package/core/frontend/web/site.js +3 -0
  71. package/core/server/adapters/cache/ImageSizesCacheSyncInMemory.js +7 -0
  72. package/core/server/adapters/cache/SettingsCacheSyncInMemory.js +7 -0
  73. package/core/server/api/endpoints/comments-members.js +10 -7
  74. package/core/server/api/endpoints/invites.js +1 -9
  75. package/core/server/api/endpoints/labels.js +1 -7
  76. package/core/server/api/endpoints/members.js +3 -13
  77. package/core/server/api/endpoints/offers.js +2 -2
  78. package/core/server/api/endpoints/pages.js +2 -10
  79. package/core/server/api/endpoints/posts.js +11 -10
  80. package/core/server/api/endpoints/snippets.js +1 -9
  81. package/core/server/api/endpoints/tags.js +1 -7
  82. package/core/server/api/endpoints/utils/serializers/input/pages.js +1 -1
  83. package/core/server/api/endpoints/utils/serializers/input/posts.js +1 -1
  84. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +5 -0
  85. package/core/server/api/endpoints/utils/serializers/output/members.js +2 -1
  86. package/core/server/api/endpoints/utils/serializers/output/site.js +1 -0
  87. package/core/server/api/endpoints/utils/serializers/output/utils/clean.js +6 -7
  88. package/core/server/api/endpoints/webhooks.js +2 -19
  89. package/core/server/data/exporter/table-lists.js +2 -0
  90. package/core/server/data/migrations/versions/5.10/2022-08-15-05-34-add-expiry-at-column-to-members-products.js +6 -0
  91. package/core/server/data/migrations/versions/5.10/2022-08-16-14-25-add-member-created-events-table.js +11 -0
  92. package/core/server/data/migrations/versions/5.10/2022-08-16-14-25-add-subscription-created-events-table.js +11 -0
  93. package/core/server/data/migrations/versions/5.10/2022-08-19-14-15-fix-comments-deletion-strategy.js +45 -0
  94. package/core/server/data/migrations/versions/5.11/2022-08-22-11-03-add-member-alert-settings-columns-to-users.js +21 -0
  95. package/core/server/data/migrations/versions/5.11/2022-08-23-13-41-backfill-members-created-events.js +32 -0
  96. package/core/server/data/migrations/versions/5.11/2022-08-23-13-59-fix-page-resource-type.js +22 -0
  97. package/core/server/data/schema/fixtures/fixtures.json +3 -0
  98. package/core/server/data/schema/schema.js +24 -2
  99. package/core/server/lib/image/cached-image-size-from-url.js +52 -28
  100. package/core/server/lib/image/gravatar.js +8 -7
  101. package/core/server/lib/image/image-size.js +60 -56
  102. package/core/server/lib/image/image-utils.js +5 -2
  103. package/core/server/lib/image/index.js +14 -1
  104. package/core/server/models/action.js +0 -10
  105. package/core/server/models/api-key.js +3 -18
  106. package/core/server/models/base/plugins/actions.js +55 -0
  107. package/core/server/models/integration.js +3 -0
  108. package/core/server/models/label.js +3 -18
  109. package/core/server/models/member-created-event.js +26 -0
  110. package/core/server/models/member.js +54 -4
  111. package/core/server/models/offer.js +3 -0
  112. package/core/server/models/post.js +25 -18
  113. package/core/server/models/product.js +3 -0
  114. package/core/server/models/settings.js +4 -0
  115. package/core/server/models/subscription-created-event.js +30 -0
  116. package/core/server/models/tag.js +3 -18
  117. package/core/server/models/user.js +7 -19
  118. package/core/server/models/webhook.js +3 -0
  119. package/core/server/services/auth/api-key/admin.js +0 -3
  120. package/core/server/services/auth/passwordreset.js +0 -3
  121. package/core/server/services/comments/emails.js +3 -3
  122. package/core/server/services/explore/service.js +8 -6
  123. package/core/server/services/member-attribution/index.js +52 -0
  124. package/core/server/services/members/api.js +3 -1
  125. package/core/server/services/members/jobs/clean-expired-comped.js +105 -0
  126. package/core/server/services/members/jobs/index.js +27 -0
  127. package/core/server/services/members/service.js +14 -8
  128. package/core/server/services/public-config/site.js +1 -0
  129. package/core/server/services/route-settings/default-settings-manager.js +19 -17
  130. package/core/server/services/settings/settings-service.js +1 -1
  131. package/core/server/services/webhooks/trigger.js +14 -5
  132. package/core/shared/config/defaults.json +8 -3
  133. package/core/shared/labs.js +5 -2
  134. package/package.json +84 -83
  135. package/yarn.lock +440 -615
  136. package/components/tryghost-adapter-manager-0.0.0.tgz +0 -0
  137. package/components/tryghost-api-framework-0.0.0.tgz +0 -0
  138. package/components/tryghost-bootstrap-socket-0.0.0.tgz +0 -0
  139. package/components/tryghost-constants-0.0.0.tgz +0 -0
  140. package/components/tryghost-custom-theme-settings-service-0.0.0.tgz +0 -0
  141. package/components/tryghost-domain-events-0.0.0.tgz +0 -0
  142. package/components/tryghost-email-analytics-provider-mailgun-0.0.0.tgz +0 -0
  143. package/components/tryghost-email-analytics-service-0.0.0.tgz +0 -0
  144. package/components/tryghost-email-content-generator-0.0.0.tgz +0 -0
  145. package/components/tryghost-express-dynamic-redirects-0.0.0.tgz +0 -0
  146. package/components/tryghost-extract-api-key-0.0.0.tgz +0 -0
  147. package/components/tryghost-html-to-plaintext-0.0.0.tgz +0 -0
  148. package/components/tryghost-job-manager-0.0.0.tgz +0 -0
  149. package/components/tryghost-magic-link-0.0.0.tgz +0 -0
  150. package/components/tryghost-mailgun-client-0.0.0.tgz +0 -0
  151. package/components/tryghost-member-analytics-service-0.0.0.tgz +0 -0
  152. package/components/tryghost-member-events-0.0.0.tgz +0 -0
  153. package/components/tryghost-members-analytics-ingress-0.0.0.tgz +0 -0
  154. package/components/tryghost-members-api-0.0.0.tgz +0 -0
  155. package/components/tryghost-members-events-service-0.0.0.tgz +0 -0
  156. package/components/tryghost-members-importer-0.0.0.tgz +0 -0
  157. package/components/tryghost-members-offers-0.0.0.tgz +0 -0
  158. package/components/tryghost-members-payments-0.0.0.tgz +0 -0
  159. package/components/tryghost-members-ssr-0.0.0.tgz +0 -0
  160. package/components/tryghost-members-stripe-service-0.0.0.tgz +0 -0
  161. package/components/tryghost-minifier-0.0.0.tgz +0 -0
  162. package/components/tryghost-mw-api-version-mismatch-0.0.0.tgz +0 -0
  163. package/components/tryghost-mw-cache-control-0.0.0.tgz +0 -0
  164. package/components/tryghost-mw-error-handler-0.0.0.tgz +0 -0
  165. package/components/tryghost-mw-session-from-token-0.0.0.tgz +0 -0
  166. package/components/tryghost-mw-update-user-last-seen-0.0.0.tgz +0 -0
  167. package/components/tryghost-mw-vhost-0.0.0.tgz +0 -0
  168. package/components/tryghost-oembed-service-0.0.0.tgz +0 -0
  169. package/components/tryghost-package-json-0.0.0.tgz +0 -0
  170. package/components/tryghost-security-0.0.0.tgz +0 -0
  171. package/components/tryghost-session-service-0.0.0.tgz +0 -0
  172. package/components/tryghost-settings-path-manager-0.0.0.tgz +0 -0
  173. package/components/tryghost-update-check-service-0.0.0.tgz +0 -0
  174. package/components/tryghost-verification-trigger-0.0.0.tgz +0 -0
  175. package/components/tryghost-version-notifications-data-service-0.0.0.tgz +0 -0
  176. package/core/built/admin/assets/chunk.143.1c158e8ef19f10e5439c.js +0 -41
  177. package/core/built/admin/assets/ghost-dark-4080c8f100997d4b8947f5da0e7946a1.css +0 -1
  178. package/core/built/admin/assets/ghost-facfdf4a7d9759c5b681340805f21fd8.css +0 -1
@@ -0,0 +1,27 @@
1
+ const path = require('path');
2
+ const jobsService = require('../../jobs');
3
+
4
+ let hasScheduled = false;
5
+
6
+ module.exports = {
7
+ async scheduleExpiredCompCleanupJob() {
8
+ if (
9
+ !hasScheduled &&
10
+ !process.env.NODE_ENV.startsWith('test')
11
+ ) {
12
+ // use a random seconds value to avoid spikes to external APIs on the minute
13
+ const s = Math.floor(Math.random() * 60); // 0-59
14
+
15
+ // Run everyday at 12:05:X AM to clean all expired complimentary subscriptions
16
+ jobsService.addJob({
17
+ at: `${s} 5 0 * * *`,
18
+ job: path.resolve(__dirname, 'clean-expired-comped.js'),
19
+ name: 'clean-expired-comped'
20
+ });
21
+
22
+ hasScheduled = true;
23
+ }
24
+
25
+ return hasScheduled;
26
+ }
27
+ };
@@ -6,6 +6,7 @@ const db = require('../../data/db');
6
6
  const MembersConfigProvider = require('./config');
7
7
  const MembersCSVImporter = require('@tryghost/members-importer');
8
8
  const MembersStats = require('./stats/members-stats');
9
+ const memberJobs = require('./jobs');
9
10
  const createMembersSettingsInstance = require('./settings');
10
11
  const logging = require('@tryghost/logging');
11
12
  const urlUtils = require('../../../shared/url-utils');
@@ -148,16 +149,21 @@ module.exports = {
148
149
  }
149
150
  })();
150
151
 
151
- const membersMigrationJobName = 'members-migrations';
152
- if (!(await jobsService.hasExecutedSuccessfully(membersMigrationJobName))) {
153
- jobsService.addOneOffJob({
154
- name: membersMigrationJobName,
155
- offloaded: false,
156
- job: stripeService.migrations.execute.bind(stripeService.migrations)
157
- });
152
+ if (!env?.startsWith('testing')) {
153
+ const membersMigrationJobName = 'members-migrations';
154
+ if (!(await jobsService.hasExecutedSuccessfully(membersMigrationJobName))) {
155
+ jobsService.addOneOffJob({
156
+ name: membersMigrationJobName,
157
+ offloaded: false,
158
+ job: stripeService.migrations.execute.bind(stripeService.migrations)
159
+ });
158
160
 
159
- await jobsService.awaitCompletion(membersMigrationJobName);
161
+ await jobsService.awaitCompletion(membersMigrationJobName);
162
+ }
160
163
  }
164
+
165
+ // Schedule daily cron job to clean expired comp subs
166
+ memberJobs.scheduleExpiredCompCleanupJob();
161
167
  },
162
168
  contentGating: require('./content-gating'),
163
169
 
@@ -10,6 +10,7 @@ module.exports = function getSiteProperties() {
10
10
  logo: settingsCache.get('logo'),
11
11
  icon: settingsCache.get('icon'),
12
12
  accent_color: settingsCache.get('accent_color'),
13
+ locale: settingsCache.get('locale'),
13
14
  url: urlUtils.urlFor('home', true),
14
15
  version: ghostVersion.safe
15
16
  };
@@ -38,23 +38,25 @@ class DefaultSettingsManager {
38
38
  const defaultFilePath = path.join(this.sourceFolderPath, defaultFileName);
39
39
 
40
40
  return Promise.resolve(fs.readFile(destinationFilePath, 'utf8'))
41
- .catch({code: 'ENOENT'}, () => {
42
- // CASE: file doesn't exist, copy it from our defaults
43
- return fs.copy(
44
- defaultFilePath,
45
- destinationFilePath
46
- ).then(() => {
47
- debug(`'${defaultFileName}' copied to ${this.destinationFolderPath}.`);
48
- });
49
- }).catch((error) => {
50
- // CASE: we might have a permission error, as we can't access the directory
51
- throw new errors.InternalServerError({
52
- message: tpl(messages.ensureSettings, {
53
- path: this.destinationFolderPath
54
- }),
55
- err: error,
56
- context: error.path
57
- });
41
+ .catch((err) => {
42
+ if (err.code === 'ENOENT') {
43
+ // CASE: file doesn't exist, copy it from our defaults
44
+ return fs.copy(
45
+ defaultFilePath,
46
+ destinationFilePath
47
+ ).then(() => {
48
+ debug(`'${defaultFileName}' copied to ${this.destinationFolderPath}.`);
49
+ });
50
+ } else {
51
+ // CASE: we might have a permission error, as we can't access the directory
52
+ throw new errors.InternalServerError({
53
+ message: tpl(messages.ensureSettings, {
54
+ path: this.destinationFolderPath
55
+ }),
56
+ err: err,
57
+ context: err.path
58
+ });
59
+ }
58
60
  });
59
61
  }
60
62
  }
@@ -67,7 +67,7 @@ module.exports = {
67
67
  * Initialize the cache, used in boot and in testing
68
68
  */
69
69
  async init() {
70
- const cacheStore = adapterManager.getAdapter('cache');
70
+ const cacheStore = adapterManager.getAdapter('cache:settings');
71
71
  const settingsCollection = await models.Settings.populateDefaults();
72
72
  SettingsCache.init(events, settingsCollection, this.getCalculatedFields(), cacheStore);
73
73
  },
@@ -1,6 +1,7 @@
1
1
  const debug = require('@tryghost/debug')('services:webhooks:trigger');
2
2
  const logging = require('@tryghost/logging');
3
3
  const ghostVersion = require('@tryghost/version');
4
+ const crypto = require('crypto');
4
5
 
5
6
  class WebhookTrigger {
6
7
  /**
@@ -85,13 +86,21 @@ class WebhookTrigger {
85
86
 
86
87
  const reqPayload = JSON.stringify(hookPayload);
87
88
  const url = webhook.get('target_url');
89
+ const secret = webhook.get('secret') || '';
90
+
91
+ const headers = {
92
+ 'Content-Length': Buffer.byteLength(reqPayload),
93
+ 'Content-Type': 'application/json',
94
+ 'Content-Version': `v${ghostVersion.safe}`
95
+ };
96
+
97
+ if (secret !== '') {
98
+ headers['X-Ghost-Signature'] = `sha256=${crypto.createHmac('sha256', secret).update(reqPayload).digest('hex')}, t=${Date.now()}`;
99
+ }
100
+
88
101
  const opts = {
89
102
  body: reqPayload,
90
- headers: {
91
- 'Content-Length': Buffer.byteLength(reqPayload),
92
- 'Content-Type': 'application/json',
93
- 'Content-Version': `v${ghostVersion.safe}`
94
- },
103
+ headers,
95
104
  timeout: 2 * 1000,
96
105
  retry: 5
97
106
  };
@@ -25,7 +25,11 @@
25
25
  "active": "Default"
26
26
  },
27
27
  "cache": {
28
- "active": "Memory"
28
+ "active": "Memory",
29
+ "settings": "SettingsCacheSyncInMemory",
30
+ "SettingsCacheSyncInMemory": {},
31
+ "imageSizes": "ImageSizesCacheSyncInMemory",
32
+ "ImageSizesCacheSyncInMemory": {}
29
33
  }
30
34
  },
31
35
  "storage": {
@@ -137,7 +141,7 @@
137
141
  },
138
142
  "portal": {
139
143
  "url": "https://cdn.jsdelivr.net/npm/@tryghost/portal@~{version}/umd/portal.min.js",
140
- "version": "2.8"
144
+ "version": "2.11"
141
145
  },
142
146
  "sodoSearch": {
143
147
  "url": "https://cdn.jsdelivr.net/npm/@tryghost/sodo-search@~{version}/umd/sodo-search.min.js",
@@ -150,7 +154,8 @@
150
154
  "version": "0.9"
151
155
  },
152
156
  "editor": {
153
- "url": "https://unpkg.com/@tryghost/koenig-react/dist/umd/koenig-react.min.js"
157
+ "url": "https://unpkg.com/@tryghost/koenig-react/dist/umd/koenig-react.min.js",
158
+ "lexicalUrl": "https://unpkg.com/@tryghost/koenig-lexical-experiment/dist/koenig-lexical.umd.js"
154
159
  },
155
160
  "tenor": {
156
161
  "googleApiKey": null,
@@ -15,7 +15,9 @@ 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
- 'newsletterPaywall'
18
+ 'newsletterPaywall',
19
+ 'freeTrial',
20
+ 'compExpiring'
19
21
  ];
20
22
 
21
23
  // NOTE: this allowlist is meant to be used to filter out any unexpected
@@ -28,7 +30,8 @@ const ALPHA_FEATURES = [
28
30
  'auditLog',
29
31
  'urlCache',
30
32
  'beforeAfterCard',
31
- 'freeTrial'
33
+ 'memberAttribution',
34
+ 'searchHelper'
32
35
  ];
33
36
 
34
37
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.9.4",
3
+ "version": "5.11.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -52,71 +52,71 @@
52
52
  "cli": "^1.17.0"
53
53
  },
54
54
  "dependencies": {
55
- "@sentry/node": "7.10.0",
56
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-0.0.0.tgz",
55
+ "@sentry/node": "7.11.1",
56
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.11.0.tgz",
57
57
  "@tryghost/admin-api-schema": "4.1.1",
58
- "@tryghost/api-framework": "file:components/tryghost-api-framework-0.0.0.tgz",
59
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-0.0.0.tgz",
58
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.11.0.tgz",
59
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.11.0.tgz",
60
60
  "@tryghost/bookshelf-plugins": "0.5.0",
61
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-0.0.0.tgz",
61
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.11.0.tgz",
62
62
  "@tryghost/color-utils": "0.1.20",
63
63
  "@tryghost/config-url-helpers": "1.0.3",
64
- "@tryghost/constants": "file:components/tryghost-constants-0.0.0.tgz",
65
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-0.0.0.tgz",
64
+ "@tryghost/constants": "file:components/tryghost-constants-5.11.0.tgz",
65
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.11.0.tgz",
66
66
  "@tryghost/database-info": "0.3.9",
67
67
  "@tryghost/debug": "0.1.18",
68
- "@tryghost/domain-events": "file:components/tryghost-domain-events-0.0.0.tgz",
69
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-0.0.0.tgz",
70
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-0.0.0.tgz",
71
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-0.0.0.tgz",
68
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.11.0.tgz",
69
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.11.0.tgz",
70
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.11.0.tgz",
71
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.11.0.tgz",
72
72
  "@tryghost/errors": "1.2.15",
73
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-0.0.0.tgz",
73
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.11.0.tgz",
74
74
  "@tryghost/helpers": "1.1.72",
75
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-0.0.0.tgz",
75
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.11.0.tgz",
76
76
  "@tryghost/image-transform": "1.2.2",
77
- "@tryghost/job-manager": "file:components/tryghost-job-manager-0.0.0.tgz",
77
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.11.0.tgz",
78
78
  "@tryghost/kg-card-factory": "3.1.4",
79
79
  "@tryghost/kg-default-atoms": "3.1.3",
80
80
  "@tryghost/kg-default-cards": "5.16.3",
81
- "@tryghost/kg-markdown-html-renderer": "5.1.6",
82
81
  "@tryghost/kg-mobiledoc-html-renderer": "5.3.6",
83
82
  "@tryghost/limit-service": "1.2.3",
84
83
  "@tryghost/logging": "2.2.4",
85
- "@tryghost/magic-link": "file:components/tryghost-magic-link-0.0.0.tgz",
86
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-0.0.0.tgz",
87
- "@tryghost/member-events": "file:components/tryghost-member-events-0.0.0.tgz",
88
- "@tryghost/members-api": "file:components/tryghost-members-api-0.0.0.tgz",
89
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-0.0.0.tgz",
90
- "@tryghost/members-importer": "file:components/tryghost-members-importer-0.0.0.tgz",
91
- "@tryghost/members-offers": "file:components/tryghost-members-offers-0.0.0.tgz",
92
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-0.0.0.tgz",
93
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-0.0.0.tgz",
84
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.11.0.tgz",
85
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.11.0.tgz",
86
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.11.0.tgz",
87
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.11.0.tgz",
88
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.11.0.tgz",
89
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.11.0.tgz",
90
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.11.0.tgz",
91
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.11.0.tgz",
92
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.11.0.tgz",
93
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.11.0.tgz",
94
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.11.0.tgz",
94
95
  "@tryghost/metrics": "1.0.15",
95
- "@tryghost/minifier": "file:components/tryghost-minifier-0.0.0.tgz",
96
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-0.0.0.tgz",
97
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-0.0.0.tgz",
98
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-0.0.0.tgz",
99
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-0.0.0.tgz",
100
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-0.0.0.tgz",
96
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.11.0.tgz",
97
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.11.0.tgz",
98
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.11.0.tgz",
99
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.11.0.tgz",
100
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.11.0.tgz",
101
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.11.0.tgz",
101
102
  "@tryghost/nodemailer": "0.3.25",
102
103
  "@tryghost/nql": "0.9.2",
103
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-0.0.0.tgz",
104
- "@tryghost/package-json": "file:components/tryghost-package-json-0.0.0.tgz",
104
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.11.0.tgz",
105
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.11.0.tgz",
105
106
  "@tryghost/pretty-cli": "1.2.30",
106
107
  "@tryghost/promise": "0.1.21",
107
108
  "@tryghost/request": "0.1.29",
108
- "@tryghost/root-utils": "0.3.16",
109
- "@tryghost/security": "file:components/tryghost-security-0.0.0.tgz",
110
- "@tryghost/session-service": "file:components/tryghost-session-service-0.0.0.tgz",
111
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-0.0.0.tgz",
109
+ "@tryghost/security": "file:components/tryghost-security-5.11.0.tgz",
110
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.11.0.tgz",
111
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.11.0.tgz",
112
112
  "@tryghost/social-urls": "0.1.33",
113
113
  "@tryghost/stats-service": "0.3.0",
114
114
  "@tryghost/string": "0.1.27",
115
115
  "@tryghost/tpl": "0.1.18",
116
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-0.0.0.tgz",
116
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.11.0.tgz",
117
117
  "@tryghost/url-utils": "4.0.3",
118
118
  "@tryghost/validator": "0.1.27",
119
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-0.0.0.tgz",
119
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.11.0.tgz",
120
120
  "@tryghost/version": "0.1.16",
121
121
  "@tryghost/zip": "1.1.28",
122
122
  "amperize": "0.6.1",
@@ -177,11 +177,11 @@
177
177
  "xml": "1.0.1"
178
178
  },
179
179
  "optionalDependencies": {
180
- "@tryghost/html-to-mobiledoc": "1.8.9",
180
+ "@tryghost/html-to-mobiledoc": "1.8.10",
181
181
  "sqlite3": "5.0.11"
182
182
  },
183
183
  "devDependencies": {
184
- "@playwright/test": "1.25.0",
184
+ "@playwright/test": "1.25.1",
185
185
  "@tryghost/express-test": "0.11.2",
186
186
  "@tryghost/webhook-mock-receiver": "0.1.2",
187
187
  "@types/common-tags": "1.8.1",
@@ -211,47 +211,48 @@
211
211
  "@tryghost/logging": "2.2.4",
212
212
  "moment": "2.24.0",
213
213
  "moment-timezone": "0.5.23",
214
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-0.0.0.tgz",
215
- "@tryghost/api-framework": "file:components/tryghost-api-framework-0.0.0.tgz",
216
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-0.0.0.tgz",
217
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-0.0.0.tgz",
218
- "@tryghost/constants": "file:components/tryghost-constants-0.0.0.tgz",
219
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-0.0.0.tgz",
220
- "@tryghost/domain-events": "file:components/tryghost-domain-events-0.0.0.tgz",
221
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-0.0.0.tgz",
222
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-0.0.0.tgz",
223
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-0.0.0.tgz",
224
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-0.0.0.tgz",
225
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-0.0.0.tgz",
226
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-0.0.0.tgz",
227
- "@tryghost/job-manager": "file:components/tryghost-job-manager-0.0.0.tgz",
228
- "@tryghost/magic-link": "file:components/tryghost-magic-link-0.0.0.tgz",
229
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-0.0.0.tgz",
230
- "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-0.0.0.tgz",
231
- "@tryghost/member-events": "file:components/tryghost-member-events-0.0.0.tgz",
232
- "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-0.0.0.tgz",
233
- "@tryghost/members-api": "file:components/tryghost-members-api-0.0.0.tgz",
234
- "@tryghost/members-csv": "file:components/tryghost-members-csv-0.0.0.tgz",
235
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-0.0.0.tgz",
236
- "@tryghost/members-importer": "file:components/tryghost-members-importer-0.0.0.tgz",
237
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-0.0.0.tgz",
238
- "@tryghost/minifier": "file:components/tryghost-minifier-0.0.0.tgz",
239
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-0.0.0.tgz",
240
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-0.0.0.tgz",
241
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-0.0.0.tgz",
242
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-0.0.0.tgz",
243
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-0.0.0.tgz",
244
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-0.0.0.tgz",
245
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-0.0.0.tgz",
246
- "@tryghost/members-offers": "file:components/tryghost-members-offers-0.0.0.tgz",
247
- "@tryghost/package-json": "file:components/tryghost-package-json-0.0.0.tgz",
248
- "@tryghost/members-payments": "file:components/tryghost-members-payments-0.0.0.tgz",
249
- "@tryghost/security": "file:components/tryghost-security-0.0.0.tgz",
250
- "@tryghost/session-service": "file:components/tryghost-session-service-0.0.0.tgz",
251
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-0.0.0.tgz",
252
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-0.0.0.tgz",
253
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-0.0.0.tgz",
254
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-0.0.0.tgz",
255
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-0.0.0.tgz"
214
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.11.0.tgz",
215
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.11.0.tgz",
216
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.11.0.tgz",
217
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.11.0.tgz",
218
+ "@tryghost/constants": "file:components/tryghost-constants-5.11.0.tgz",
219
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.11.0.tgz",
220
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.11.0.tgz",
221
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.11.0.tgz",
222
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.11.0.tgz",
223
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.11.0.tgz",
224
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.11.0.tgz",
225
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.11.0.tgz",
226
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.11.0.tgz",
227
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.11.0.tgz",
228
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.11.0.tgz",
229
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.11.0.tgz",
230
+ "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.11.0.tgz",
231
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.11.0.tgz",
232
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.11.0.tgz",
233
+ "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.11.0.tgz",
234
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.11.0.tgz",
235
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.11.0.tgz",
236
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.11.0.tgz",
237
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.11.0.tgz",
238
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.11.0.tgz",
239
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.11.0.tgz",
240
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.11.0.tgz",
241
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.11.0.tgz",
242
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.11.0.tgz",
243
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.11.0.tgz",
244
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.11.0.tgz",
245
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.11.0.tgz",
246
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.11.0.tgz",
247
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.11.0.tgz",
248
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.11.0.tgz",
249
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.11.0.tgz",
250
+ "@tryghost/security": "file:components/tryghost-security-5.11.0.tgz",
251
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.11.0.tgz",
252
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.11.0.tgz",
253
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.11.0.tgz",
254
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.11.0.tgz",
255
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.11.0.tgz",
256
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.11.0.tgz"
256
257
  }
257
258
  }