ghost 5.13.2 → 5.14.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 (122) hide show
  1. package/README.md +1 -1
  2. package/components/tryghost-adapter-manager-5.14.0.tgz +0 -0
  3. package/components/{tryghost-api-framework-5.13.2.tgz → tryghost-api-framework-5.14.0.tgz} +0 -0
  4. package/components/tryghost-api-version-compatibility-service-5.14.0.tgz +0 -0
  5. package/components/tryghost-bootstrap-socket-5.14.0.tgz +0 -0
  6. package/components/tryghost-constants-5.14.0.tgz +0 -0
  7. package/components/{tryghost-custom-theme-settings-service-5.13.2.tgz → tryghost-custom-theme-settings-service-5.14.0.tgz} +0 -0
  8. package/components/tryghost-domain-events-5.14.0.tgz +0 -0
  9. package/components/tryghost-email-analytics-provider-mailgun-5.14.0.tgz +0 -0
  10. package/components/{tryghost-email-analytics-service-5.13.2.tgz → tryghost-email-analytics-service-5.14.0.tgz} +0 -0
  11. package/components/tryghost-email-content-generator-5.14.0.tgz +0 -0
  12. package/components/tryghost-express-dynamic-redirects-5.14.0.tgz +0 -0
  13. package/components/{tryghost-extract-api-key-5.13.2.tgz → tryghost-extract-api-key-5.14.0.tgz} +0 -0
  14. package/components/tryghost-html-to-plaintext-5.14.0.tgz +0 -0
  15. package/components/{tryghost-job-manager-5.13.2.tgz → tryghost-job-manager-5.14.0.tgz} +0 -0
  16. package/components/{tryghost-magic-link-5.13.2.tgz → tryghost-magic-link-5.14.0.tgz} +0 -0
  17. package/components/{tryghost-mailgun-client-5.13.2.tgz → tryghost-mailgun-client-5.14.0.tgz} +0 -0
  18. package/components/tryghost-member-analytics-service-5.14.0.tgz +0 -0
  19. package/components/tryghost-member-attribution-5.14.0.tgz +0 -0
  20. package/components/tryghost-member-events-5.14.0.tgz +0 -0
  21. package/components/tryghost-members-analytics-ingress-5.14.0.tgz +0 -0
  22. package/components/tryghost-members-api-5.14.0.tgz +0 -0
  23. package/components/{tryghost-members-csv-5.13.2.tgz → tryghost-members-csv-5.14.0.tgz} +0 -0
  24. package/components/tryghost-members-events-service-5.14.0.tgz +0 -0
  25. package/components/tryghost-members-importer-5.14.0.tgz +0 -0
  26. package/components/{tryghost-members-offers-5.13.2.tgz → tryghost-members-offers-5.14.0.tgz} +0 -0
  27. package/components/{tryghost-members-payments-5.13.2.tgz → tryghost-members-payments-5.14.0.tgz} +0 -0
  28. package/components/{tryghost-members-ssr-5.13.2.tgz → tryghost-members-ssr-5.14.0.tgz} +0 -0
  29. package/components/{tryghost-members-stripe-service-5.13.2.tgz → tryghost-members-stripe-service-5.14.0.tgz} +0 -0
  30. package/components/tryghost-minifier-5.14.0.tgz +0 -0
  31. package/components/tryghost-mw-api-version-mismatch-5.14.0.tgz +0 -0
  32. package/components/tryghost-mw-cache-control-5.14.0.tgz +0 -0
  33. package/components/{tryghost-mw-error-handler-5.13.2.tgz → tryghost-mw-error-handler-5.14.0.tgz} +0 -0
  34. package/components/tryghost-mw-session-from-token-5.14.0.tgz +0 -0
  35. package/components/tryghost-mw-update-user-last-seen-5.14.0.tgz +0 -0
  36. package/components/tryghost-mw-vhost-5.14.0.tgz +0 -0
  37. package/components/{tryghost-oembed-service-5.13.2.tgz → tryghost-oembed-service-5.14.0.tgz} +0 -0
  38. package/components/tryghost-package-json-5.14.0.tgz +0 -0
  39. package/components/tryghost-security-5.14.0.tgz +0 -0
  40. package/components/{tryghost-session-service-5.13.2.tgz → tryghost-session-service-5.14.0.tgz} +0 -0
  41. package/components/{tryghost-settings-path-manager-5.13.2.tgz → tryghost-settings-path-manager-5.14.0.tgz} +0 -0
  42. package/components/{tryghost-staff-service-5.13.2.tgz → tryghost-staff-service-5.14.0.tgz} +0 -0
  43. package/components/tryghost-update-check-service-5.14.0.tgz +0 -0
  44. package/components/{tryghost-verification-trigger-5.13.2.tgz → tryghost-verification-trigger-5.14.0.tgz} +0 -0
  45. package/components/{tryghost-version-notifications-data-service-5.13.2.tgz → tryghost-version-notifications-data-service-5.14.0.tgz} +0 -0
  46. package/core/boot.js +2 -0
  47. package/core/built/admin/assets/{chunk.143.cf7ba0bb9fff38640025.js → chunk.143.53c5e3490ffdae025d84.js} +6 -6
  48. package/core/built/admin/assets/{chunk.174.8b8a64726921ecfda41b.js → chunk.174.2edaa0869bfc2d88cf90.js} +173 -172
  49. package/core/built/admin/assets/{chunk.178.0793414b725c536f4635.js → chunk.178.a31590ec7388630cd0d0.js} +4 -4
  50. package/core/built/admin/assets/{chunk.763.9a285d7351e1f4415f8d.js → chunk.579.2de3f4300baf25f9a0db.js} +22 -28
  51. package/core/built/admin/assets/{chunk.763.9a285d7351e1f4415f8d.js.LICENSE.txt → chunk.579.2de3f4300baf25f9a0db.js.LICENSE.txt} +0 -0
  52. package/core/built/admin/assets/ghost-40adc8310dcdd0be163cbf7b9d89c59a.css +1 -0
  53. package/core/built/admin/assets/{ghost-3203510c519d3195f1e71a34e9eecc59.js → ghost-84a4336c7d5c1f3fba00868b0a5237cd.js} +817 -915
  54. package/core/built/admin/assets/ghost-dark-13b669d50f494edf24d832b32ece2177.css +1 -0
  55. package/core/built/admin/assets/img/logos/orb-pink-3-a66abc6df2b6ab64d1459a6535b725cd.png +0 -0
  56. package/core/built/admin/assets/{vendor-ab4b5dfdf8b86f24d726115ac7de0980.js → vendor-22a37451d7619a2b641310ecbcca4c05.js} +84 -81
  57. package/core/built/admin/index.html +6 -6
  58. package/core/frontend/helpers/ghost_head.js +3 -2
  59. package/core/frontend/helpers/url.js +1 -1
  60. package/core/frontend/services/data/fetch-data.js +0 -1
  61. package/core/frontend/src/admin-auth/message-handler.js +4 -4
  62. package/core/server/adapters/cache/Memory.js +1 -1
  63. package/core/server/api/endpoints/comments-members.js +4 -64
  64. package/core/server/api/endpoints/utils/serializers/input/pages.js +3 -0
  65. package/core/server/api/endpoints/utils/serializers/input/posts.js +3 -0
  66. package/core/server/api/endpoints/utils/serializers/input/utils/clean.js +12 -0
  67. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +1 -1
  68. package/core/server/data/migrations/versions/5.14/2022-09-02-12-55-rename-members-bio-to-expertise.js +34 -0
  69. package/core/server/data/schema/schema.js +1 -1
  70. package/core/server/models/post.js +6 -0
  71. package/core/server/services/adapter-manager/index.js +3 -3
  72. package/core/server/services/adapter-manager/options-resolver.js +30 -9
  73. package/core/server/services/comments/controller.js +52 -1
  74. package/core/server/services/comments/email-templates/new-comment-reply.hbs +1 -1
  75. package/core/server/services/comments/email-templates/new-comment.hbs +1 -1
  76. package/core/server/services/comments/email-templates/report.hbs +1 -1
  77. package/core/server/services/comments/emails.js +3 -3
  78. package/core/server/services/comments/service.js +52 -0
  79. package/core/server/services/mega/post-email-serializer.js +371 -368
  80. package/core/server/services/mega/template.js +4 -8
  81. package/core/server/services/member-attribution/index.js +4 -18
  82. package/core/server/services/members/middleware.js +1 -1
  83. package/core/server/services/members/service.js +0 -12
  84. package/core/server/services/members/utils.js +1 -1
  85. package/core/server/services/members-events/index.js +40 -0
  86. package/core/shared/config/defaults.json +4 -6
  87. package/core/shared/labs.js +1 -1
  88. package/core/shared/settings-cache/cache.js +1 -1
  89. package/package.json +96 -94
  90. package/yarn.lock +275 -207
  91. package/components/tryghost-adapter-manager-5.13.2.tgz +0 -0
  92. package/components/tryghost-api-version-compatibility-service-5.13.2.tgz +0 -0
  93. package/components/tryghost-bootstrap-socket-5.13.2.tgz +0 -0
  94. package/components/tryghost-constants-5.13.2.tgz +0 -0
  95. package/components/tryghost-domain-events-5.13.2.tgz +0 -0
  96. package/components/tryghost-email-analytics-provider-mailgun-5.13.2.tgz +0 -0
  97. package/components/tryghost-email-content-generator-5.13.2.tgz +0 -0
  98. package/components/tryghost-express-dynamic-redirects-5.13.2.tgz +0 -0
  99. package/components/tryghost-html-to-plaintext-5.13.2.tgz +0 -0
  100. package/components/tryghost-member-analytics-service-5.13.2.tgz +0 -0
  101. package/components/tryghost-member-attribution-5.13.2.tgz +0 -0
  102. package/components/tryghost-member-events-5.13.2.tgz +0 -0
  103. package/components/tryghost-members-analytics-ingress-5.13.2.tgz +0 -0
  104. package/components/tryghost-members-api-5.13.2.tgz +0 -0
  105. package/components/tryghost-members-events-service-5.13.2.tgz +0 -0
  106. package/components/tryghost-members-importer-5.13.2.tgz +0 -0
  107. package/components/tryghost-minifier-5.13.2.tgz +0 -0
  108. package/components/tryghost-mw-api-version-mismatch-5.13.2.tgz +0 -0
  109. package/components/tryghost-mw-cache-control-5.13.2.tgz +0 -0
  110. package/components/tryghost-mw-session-from-token-5.13.2.tgz +0 -0
  111. package/components/tryghost-mw-update-user-last-seen-5.13.2.tgz +0 -0
  112. package/components/tryghost-mw-vhost-5.13.2.tgz +0 -0
  113. package/components/tryghost-package-json-5.13.2.tgz +0 -0
  114. package/components/tryghost-security-5.13.2.tgz +0 -0
  115. package/components/tryghost-update-check-service-5.13.2.tgz +0 -0
  116. package/content/themes/casper/assets/built/portal.min.js +0 -3
  117. package/core/built/admin/assets/ghost-647c9a79282265a4d29bf273c44f72c0.css +0 -1
  118. package/core/built/admin/assets/ghost-dark-d84a2701166840b73bbbbe657879b65e.css +0 -1
  119. package/core/built/admin/assets/img/logos/orb-pink-3-a2c52eb9fda9f2401ea706c3f24976ff.png +0 -0
  120. package/core/server/adapters/cache/Base.js +0 -12
  121. package/core/server/adapters/cache/ImageSizesCacheSyncInMemory.js +0 -7
  122. package/core/server/adapters/cache/SettingsCacheSyncInMemory.js +0 -7
@@ -1,6 +1,7 @@
1
+ const {escapeHtml: escape} = require('@tryghost/string');
2
+
1
3
  /* eslint indent: warn, no-irregular-whitespace: warn */
2
4
  const iff = (cond, yes, no) => (cond ? yes : no);
3
- const sanitizeHtml = require('sanitize-html');
4
5
 
5
6
  /**
6
7
  * @template {Object.<string, any>} Input
@@ -15,10 +16,7 @@ const sanitizeKeys = (obj, keys) => {
15
16
  for (const key of keysToSanitize) {
16
17
  if (typeof sanitized[key] === 'string') {
17
18
  // @ts-ignore
18
- sanitized[key] = sanitizeHtml(sanitized[key], {
19
- allowedTags: false,
20
- allowedAttributes: false
21
- });
19
+ sanitized[key] = escape(sanitized[key]);
22
20
  }
23
21
  }
24
22
 
@@ -28,7 +26,7 @@ const sanitizeKeys = (obj, keys) => {
28
26
  module.exports = ({post, site, newsletter, templateSettings}) => {
29
27
  const date = new Date();
30
28
  const hasFeatureImageCaption = templateSettings.showFeatureImage && post.feature_image && post.feature_image_caption;
31
- const cleanPost = sanitizeKeys(post, ['title', 'excerpt', 'authors', 'feature_image_alt', 'feature_image_caption']);
29
+ const cleanPost = sanitizeKeys(post, ['url', 'published_at', 'title', 'excerpt', 'authors', 'feature_image', 'feature_image_alt', 'feature_image_caption']);
32
30
  const cleanSite = sanitizeKeys(site, ['title']);
33
31
  const cleanNewsletter = sanitizeKeys(newsletter, ['name']);
34
32
 
@@ -1181,7 +1179,6 @@ ${ templateSettings.showBadge ? `
1181
1179
  <td>&nbsp;</td>
1182
1180
  <td class="container">
1183
1181
  <div class="content">
1184
-
1185
1182
  <!-- START CENTERED WHITE CONTAINER -->
1186
1183
  <table role="presentation" border="0" cellpadding="0" cellspacing="0" class="main" width="100%">
1187
1184
 
@@ -1189,7 +1186,6 @@ ${ templateSettings.showBadge ? `
1189
1186
  <tr>
1190
1187
  <td class="wrapper">
1191
1188
  <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%">
1192
-
1193
1189
  ${ templateSettings.headerImage ? `
1194
1190
  <tr>
1195
1191
  <td class="header-image" width="100%" align="center"><img src="${templateSettings.headerImage}"${templateSettings.headerImageWidth ? ` width="${templateSettings.headerImageWidth}"` : ''}></td>
@@ -1,17 +1,15 @@
1
1
  const urlService = require('../url');
2
- const labsService = require('../../../shared/labs');
3
- const DomainEvents = require('@tryghost/domain-events');
4
2
  const urlUtils = require('../../../shared/url-utils');
5
3
 
6
4
  class MemberAttributionServiceWrapper {
7
5
  init() {
8
- if (this.eventHandler) {
9
- // Prevent creating duplicate DomainEvents subscribers
6
+ if (this.service) {
7
+ // Already done
10
8
  return;
11
9
  }
12
10
 
13
11
  // Wire up all the dependencies
14
- const {MemberAttributionService, UrlTranslator, AttributionBuilder, EventHandler} = require('@tryghost/member-attribution');
12
+ const {MemberAttributionService, UrlTranslator, AttributionBuilder} = require('@tryghost/member-attribution');
15
13
  const models = require('../../models');
16
14
 
17
15
  const urlTranslator = new UrlTranslator({
@@ -32,20 +30,8 @@ class MemberAttributionServiceWrapper {
32
30
  MemberCreatedEvent: models.MemberCreatedEvent,
33
31
  SubscriptionCreatedEvent: models.SubscriptionCreatedEvent
34
32
  },
35
- attributionBuilder: this.attributionBuilder,
36
- labsService
33
+ attributionBuilder: this.attributionBuilder
37
34
  });
38
-
39
- // Listen for events and store them in the database
40
- this.eventHandler = new EventHandler({
41
- models: {
42
- MemberCreatedEvent: models.MemberCreatedEvent,
43
- SubscriptionCreatedEvent: models.SubscriptionCreatedEvent
44
- },
45
- DomainEvents,
46
- labsService
47
- });
48
- this.eventHandler.subscribe();
49
35
  }
50
36
  }
51
37
 
@@ -119,7 +119,7 @@ const updateMemberNewsletters = async function (req, res) {
119
119
 
120
120
  const updateMemberData = async function (req, res) {
121
121
  try {
122
- const data = _.pick(req.body, 'name', 'bio', 'subscribed', 'newsletters', 'enable_comment_notifications');
122
+ const data = _.pick(req.body, 'name', 'expertise', 'subscribed', 'newsletters', 'enable_comment_notifications');
123
123
  const member = await membersService.ssr.getMemberDataFromSession(req, res);
124
124
  if (member) {
125
125
  const options = {
@@ -17,8 +17,6 @@ const models = require('../../models');
17
17
  const {GhostMailer} = require('../mail');
18
18
  const jobsService = require('../jobs');
19
19
  const VerificationTrigger = require('@tryghost/verification-trigger');
20
- const DomainEvents = require('@tryghost/domain-events');
21
- const {LastSeenAtUpdater} = require('@tryghost/members-events-service');
22
20
  const DatabaseInfo = require('@tryghost/database-info');
23
21
  const settingsHelpers = require('../settings-helpers');
24
22
 
@@ -133,16 +131,6 @@ module.exports = {
133
131
  eventRepository: membersApi.events
134
132
  });
135
133
 
136
- new LastSeenAtUpdater({
137
- services: {
138
- domainEvents: DomainEvents,
139
- settingsCache
140
- },
141
- async getMembersApi() {
142
- return membersApi;
143
- }
144
- });
145
-
146
134
  (async () => {
147
135
  try {
148
136
  const collection = await models.SingleUseToken.fetchAll();
@@ -13,7 +13,7 @@ module.exports.formattedMemberResponse = function formattedMemberResponse(member
13
13
  email: member.email,
14
14
  name: member.name,
15
15
  firstname: member.name && member.name.split(' ')[0],
16
- bio: member.bio,
16
+ expertise: member.expertise,
17
17
  avatar_image: member.avatar_image,
18
18
  subscribed: !!member.subscribed,
19
19
  subscriptions: member.subscriptions || [],
@@ -0,0 +1,40 @@
1
+ const labsService = require('../../../shared/labs');
2
+ const DomainEvents = require('@tryghost/domain-events');
3
+ const settingsCache = require('../../../shared/settings-cache');
4
+ const members = require('../members');
5
+
6
+ class MembersEventsServiceWrapper {
7
+ init() {
8
+ if (this.eventStorage) {
9
+ // Prevent creating duplicate DomainEvents subscribers
10
+ return;
11
+ }
12
+
13
+ // Wire up all the dependencies
14
+ const {EventStorage, LastSeenAtUpdater} = require('@tryghost/members-events-service');
15
+ const models = require('../../models');
16
+
17
+ // Listen for events and store them in the database
18
+ this.eventStorage = new EventStorage({
19
+ models: {
20
+ MemberCreatedEvent: models.MemberCreatedEvent,
21
+ SubscriptionCreatedEvent: models.SubscriptionCreatedEvent
22
+ },
23
+ labsService
24
+ });
25
+
26
+ this.lastSeenAtUpdater = new LastSeenAtUpdater({
27
+ services: {
28
+ settingsCache
29
+ },
30
+ async getMembersApi() {
31
+ return members.api;
32
+ }
33
+ });
34
+
35
+ this.eventStorage.subscribe(DomainEvents);
36
+ this.lastSeenAtUpdater.subscribe(DomainEvents);
37
+ }
38
+ }
39
+
40
+ module.exports = new MembersEventsServiceWrapper();
@@ -26,10 +26,8 @@
26
26
  },
27
27
  "cache": {
28
28
  "active": "Memory",
29
- "settings": "SettingsCacheSyncInMemory",
30
- "SettingsCacheSyncInMemory": {},
31
- "imageSizes": "ImageSizesCacheSyncInMemory",
32
- "ImageSizesCacheSyncInMemory": {}
29
+ "settings": {},
30
+ "imageSizes": {}
33
31
  }
34
32
  },
35
33
  "storage": {
@@ -142,7 +140,7 @@
142
140
  },
143
141
  "portal": {
144
142
  "url": "https://cdn.jsdelivr.net/npm/@tryghost/portal@~{version}/umd/portal.min.js",
145
- "version": "2.11"
143
+ "version": "2.12"
146
144
  },
147
145
  "sodoSearch": {
148
146
  "url": "https://cdn.jsdelivr.net/npm/@tryghost/sodo-search@~{version}/umd/sodo-search.min.js",
@@ -152,7 +150,7 @@
152
150
  "comments": {
153
151
  "url": "https://cdn.jsdelivr.net/npm/@tryghost/comments-ui@~{version}/umd/comments-ui.min.js",
154
152
  "styles": "https://cdn.jsdelivr.net/npm/@tryghost/comments-ui@~{version}/umd/main.css",
155
- "version": "0.9"
153
+ "version": "0.10.1"
156
154
  },
157
155
  "editor": {
158
156
  "url": "https://unpkg.com/@tryghost/koenig-react/dist/umd/koenig-react.min.js",
@@ -15,6 +15,7 @@ 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',
18
19
  'newsletterPaywall',
19
20
  'freeTrial',
20
21
  'compExpiring',
@@ -30,7 +31,6 @@ const BETA_FEATURES = [
30
31
  ];
31
32
 
32
33
  const ALPHA_FEATURES = [
33
- 'auditLog',
34
34
  'urlCache',
35
35
  'beforeAfterCard'
36
36
  ];
@@ -120,7 +120,7 @@ class CacheManager {
120
120
  * This method is dangerous in case the cache is "lazily" initialized
121
121
  * could result in returning only a partially filled cache
122
122
  * @return {object} cache
123
- * @deprecated this method is not "cache-friendly" and should be avoided from furhter usage
123
+ * @deprecated this method is not "cache-friendly" and should be avoided from further usage
124
124
  * instead using multiple "get" calls
125
125
  */
126
126
  getAll() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.13.2",
3
+ "version": "5.14.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -52,72 +52,73 @@
52
52
  "cli": "^1.17.0"
53
53
  },
54
54
  "dependencies": {
55
- "@sentry/node": "7.12.0",
56
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.13.2.tgz",
55
+ "@sentry/node": "7.12.1",
56
+ "@tryghost/adapter-base-cache": "0.1.2",
57
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.14.0.tgz",
57
58
  "@tryghost/admin-api-schema": "4.1.1",
58
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.13.2.tgz",
59
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.13.2.tgz",
59
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.14.0.tgz",
60
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.14.0.tgz",
60
61
  "@tryghost/bookshelf-plugins": "0.5.0",
61
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.13.2.tgz",
62
- "@tryghost/color-utils": "0.1.20",
62
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.14.0.tgz",
63
+ "@tryghost/color-utils": "0.1.21",
63
64
  "@tryghost/config-url-helpers": "1.0.3",
64
- "@tryghost/constants": "file:components/tryghost-constants-5.13.2.tgz",
65
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.13.2.tgz",
65
+ "@tryghost/constants": "file:components/tryghost-constants-5.14.0.tgz",
66
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.14.0.tgz",
66
67
  "@tryghost/database-info": "0.3.9",
67
68
  "@tryghost/debug": "0.1.18",
68
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.13.2.tgz",
69
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.13.2.tgz",
70
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.13.2.tgz",
71
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.13.2.tgz",
69
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.14.0.tgz",
70
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.14.0.tgz",
71
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.14.0.tgz",
72
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.14.0.tgz",
72
73
  "@tryghost/errors": "1.2.15",
73
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.13.2.tgz",
74
- "@tryghost/helpers": "1.1.72",
75
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.13.2.tgz",
74
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.14.0.tgz",
75
+ "@tryghost/helpers": "1.1.73",
76
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.14.0.tgz",
76
77
  "@tryghost/image-transform": "1.2.2",
77
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.13.2.tgz",
78
- "@tryghost/kg-card-factory": "3.1.4",
79
- "@tryghost/kg-default-atoms": "3.1.3",
80
- "@tryghost/kg-default-cards": "5.16.3",
81
- "@tryghost/kg-mobiledoc-html-renderer": "5.3.6",
78
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.14.0.tgz",
79
+ "@tryghost/kg-card-factory": "3.1.5",
80
+ "@tryghost/kg-default-atoms": "3.1.4",
81
+ "@tryghost/kg-default-cards": "5.18.0",
82
+ "@tryghost/kg-mobiledoc-html-renderer": "5.3.7",
82
83
  "@tryghost/limit-service": "1.2.3",
83
84
  "@tryghost/logging": "2.3.0",
84
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.13.2.tgz",
85
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.13.2.tgz",
86
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.13.2.tgz",
87
- "@tryghost/member-events": "file:components/tryghost-member-events-5.13.2.tgz",
88
- "@tryghost/members-api": "file:components/tryghost-members-api-5.13.2.tgz",
89
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.13.2.tgz",
90
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.13.2.tgz",
91
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.13.2.tgz",
92
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.13.2.tgz",
93
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.13.2.tgz",
94
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.13.2.tgz",
85
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.14.0.tgz",
86
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.14.0.tgz",
87
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.14.0.tgz",
88
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.14.0.tgz",
89
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.14.0.tgz",
90
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.14.0.tgz",
91
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.14.0.tgz",
92
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.14.0.tgz",
93
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.14.0.tgz",
94
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.14.0.tgz",
95
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.14.0.tgz",
95
96
  "@tryghost/metrics": "1.0.15",
96
- "@tryghost/minifier": "file:components/tryghost-minifier-5.13.2.tgz",
97
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.13.2.tgz",
98
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.13.2.tgz",
99
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.13.2.tgz",
100
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.13.2.tgz",
101
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.13.2.tgz",
97
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.14.0.tgz",
98
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.14.0.tgz",
99
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.14.0.tgz",
100
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.14.0.tgz",
101
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.14.0.tgz",
102
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.14.0.tgz",
102
103
  "@tryghost/nodemailer": "0.3.25",
103
104
  "@tryghost/nql": "0.9.2",
104
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.13.2.tgz",
105
- "@tryghost/package-json": "file:components/tryghost-package-json-5.13.2.tgz",
105
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.14.0.tgz",
106
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.14.0.tgz",
106
107
  "@tryghost/pretty-cli": "1.2.30",
107
108
  "@tryghost/promise": "0.1.21",
108
109
  "@tryghost/request": "0.1.29",
109
- "@tryghost/security": "file:components/tryghost-security-5.13.2.tgz",
110
- "@tryghost/session-service": "file:components/tryghost-session-service-5.13.2.tgz",
111
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.13.2.tgz",
110
+ "@tryghost/security": "file:components/tryghost-security-5.14.0.tgz",
111
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.14.0.tgz",
112
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.14.0.tgz",
112
113
  "@tryghost/social-urls": "0.1.33",
113
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.13.2.tgz",
114
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.14.0.tgz",
114
115
  "@tryghost/stats-service": "0.3.0",
115
- "@tryghost/string": "0.1.27",
116
+ "@tryghost/string": "0.2.1",
116
117
  "@tryghost/tpl": "0.1.18",
117
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.13.2.tgz",
118
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.14.0.tgz",
118
119
  "@tryghost/url-utils": "4.0.3",
119
120
  "@tryghost/validator": "0.1.27",
120
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.13.2.tgz",
121
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.14.0.tgz",
121
122
  "@tryghost/version": "0.1.16",
122
123
  "@tryghost/zip": "1.1.28",
123
124
  "amperize": "0.6.1",
@@ -174,15 +175,15 @@
174
175
  "sanitize-html": "2.7.1",
175
176
  "semver": "7.3.7",
176
177
  "stoppable": "1.1.0",
177
- "uuid": "8.3.2",
178
+ "uuid": "9.0.0",
178
179
  "xml": "1.0.1"
179
180
  },
180
181
  "optionalDependencies": {
181
- "@tryghost/html-to-mobiledoc": "1.8.11",
182
+ "@tryghost/html-to-mobiledoc": "1.8.12",
182
183
  "sqlite3": "5.0.11"
183
184
  },
184
185
  "devDependencies": {
185
- "@playwright/test": "1.25.1",
186
+ "@playwright/test": "1.25.2",
186
187
  "@tryghost/express-test": "0.11.3",
187
188
  "@tryghost/webhook-mock-receiver": "0.1.2",
188
189
  "@types/common-tags": "1.8.1",
@@ -193,6 +194,7 @@
193
194
  "grunt": "1.5.3",
194
195
  "grunt-contrib-symlink": "1.0.0",
195
196
  "grunt-shell": "4.0.0",
197
+ "html-validate": "7.3.3",
196
198
  "inquirer": "8.2.4",
197
199
  "jwks-rsa": "2.1.4",
198
200
  "mocha": "10.0.0",
@@ -212,49 +214,49 @@
212
214
  "@tryghost/logging": "2.3.0",
213
215
  "moment": "2.24.0",
214
216
  "moment-timezone": "0.5.23",
215
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.13.2.tgz",
216
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.13.2.tgz",
217
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.13.2.tgz",
218
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.13.2.tgz",
219
- "@tryghost/constants": "file:components/tryghost-constants-5.13.2.tgz",
220
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.13.2.tgz",
221
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.13.2.tgz",
222
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.13.2.tgz",
223
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.13.2.tgz",
224
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.13.2.tgz",
225
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.13.2.tgz",
226
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.13.2.tgz",
227
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.13.2.tgz",
228
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.13.2.tgz",
229
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.13.2.tgz",
230
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.13.2.tgz",
231
- "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.13.2.tgz",
232
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.13.2.tgz",
233
- "@tryghost/member-events": "file:components/tryghost-member-events-5.13.2.tgz",
234
- "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.13.2.tgz",
235
- "@tryghost/members-api": "file:components/tryghost-members-api-5.13.2.tgz",
236
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.13.2.tgz",
237
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.13.2.tgz",
238
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.13.2.tgz",
239
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.13.2.tgz",
240
- "@tryghost/minifier": "file:components/tryghost-minifier-5.13.2.tgz",
241
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.13.2.tgz",
242
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.13.2.tgz",
243
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.13.2.tgz",
244
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.13.2.tgz",
245
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.13.2.tgz",
246
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.13.2.tgz",
247
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.13.2.tgz",
248
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.13.2.tgz",
249
- "@tryghost/package-json": "file:components/tryghost-package-json-5.13.2.tgz",
250
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.13.2.tgz",
251
- "@tryghost/security": "file:components/tryghost-security-5.13.2.tgz",
252
- "@tryghost/session-service": "file:components/tryghost-session-service-5.13.2.tgz",
253
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.13.2.tgz",
254
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.13.2.tgz",
255
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.13.2.tgz",
256
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.13.2.tgz",
257
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.13.2.tgz",
258
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.13.2.tgz"
217
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.14.0.tgz",
218
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.14.0.tgz",
219
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.14.0.tgz",
220
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.14.0.tgz",
221
+ "@tryghost/constants": "file:components/tryghost-constants-5.14.0.tgz",
222
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.14.0.tgz",
223
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.14.0.tgz",
224
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.14.0.tgz",
225
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.14.0.tgz",
226
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.14.0.tgz",
227
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.14.0.tgz",
228
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.14.0.tgz",
229
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.14.0.tgz",
230
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.14.0.tgz",
231
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.14.0.tgz",
232
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.14.0.tgz",
233
+ "@tryghost/member-analytics-service": "file:components/tryghost-member-analytics-service-5.14.0.tgz",
234
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.14.0.tgz",
235
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.14.0.tgz",
236
+ "@tryghost/members-analytics-ingress": "file:components/tryghost-members-analytics-ingress-5.14.0.tgz",
237
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.14.0.tgz",
238
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.14.0.tgz",
239
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.14.0.tgz",
240
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.14.0.tgz",
241
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.14.0.tgz",
242
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.14.0.tgz",
243
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.14.0.tgz",
244
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.14.0.tgz",
245
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.14.0.tgz",
246
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.14.0.tgz",
247
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.14.0.tgz",
248
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.14.0.tgz",
249
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.14.0.tgz",
250
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.14.0.tgz",
251
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.14.0.tgz",
252
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.14.0.tgz",
253
+ "@tryghost/security": "file:components/tryghost-security-5.14.0.tgz",
254
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.14.0.tgz",
255
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.14.0.tgz",
256
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.14.0.tgz",
257
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.14.0.tgz",
258
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.14.0.tgz",
259
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.14.0.tgz",
260
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.14.0.tgz"
259
261
  }
260
262
  }