ghost 5.30.1 → 5.32.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 (138) hide show
  1. package/components/{tryghost-adapter-manager-5.30.1.tgz → tryghost-adapter-manager-5.32.0.tgz} +0 -0
  2. package/components/{tryghost-api-framework-5.30.1.tgz → tryghost-api-framework-5.32.0.tgz} +0 -0
  3. package/components/{tryghost-api-version-compatibility-service-5.30.1.tgz → tryghost-api-version-compatibility-service-5.32.0.tgz} +0 -0
  4. package/components/{tryghost-audience-feedback-5.30.1.tgz → tryghost-audience-feedback-5.32.0.tgz} +0 -0
  5. package/components/{tryghost-bootstrap-socket-5.30.1.tgz → tryghost-bootstrap-socket-5.32.0.tgz} +0 -0
  6. package/components/tryghost-constants-5.32.0.tgz +0 -0
  7. package/components/{tryghost-custom-theme-settings-service-5.30.1.tgz → tryghost-custom-theme-settings-service-5.32.0.tgz} +0 -0
  8. package/components/tryghost-data-generator-5.32.0.tgz +0 -0
  9. package/components/tryghost-domain-events-5.32.0.tgz +0 -0
  10. package/components/tryghost-email-analytics-provider-mailgun-5.32.0.tgz +0 -0
  11. package/components/{tryghost-email-analytics-service-5.30.1.tgz → tryghost-email-analytics-service-5.32.0.tgz} +0 -0
  12. package/components/{tryghost-email-content-generator-5.30.1.tgz → tryghost-email-content-generator-5.32.0.tgz} +0 -0
  13. package/components/{tryghost-email-events-5.30.1.tgz → tryghost-email-events-5.32.0.tgz} +0 -0
  14. package/components/tryghost-email-service-5.32.0.tgz +0 -0
  15. package/components/tryghost-email-suppression-list-5.32.0.tgz +0 -0
  16. package/components/{tryghost-express-dynamic-redirects-5.30.1.tgz → tryghost-express-dynamic-redirects-5.32.0.tgz} +0 -0
  17. package/components/{tryghost-extract-api-key-5.30.1.tgz → tryghost-extract-api-key-5.32.0.tgz} +0 -0
  18. package/components/{tryghost-html-to-plaintext-5.30.1.tgz → tryghost-html-to-plaintext-5.32.0.tgz} +0 -0
  19. package/components/tryghost-i18n-5.32.0.tgz +0 -0
  20. package/components/{tryghost-importer-revue-5.30.1.tgz → tryghost-importer-revue-5.32.0.tgz} +0 -0
  21. package/components/{tryghost-job-manager-5.30.1.tgz → tryghost-job-manager-5.32.0.tgz} +0 -0
  22. package/components/tryghost-link-redirects-5.32.0.tgz +0 -0
  23. package/components/tryghost-link-replacer-5.32.0.tgz +0 -0
  24. package/components/{tryghost-link-tracking-5.30.1.tgz → tryghost-link-tracking-5.32.0.tgz} +0 -0
  25. package/components/tryghost-magic-link-5.32.0.tgz +0 -0
  26. package/components/{tryghost-mailgun-client-5.30.1.tgz → tryghost-mailgun-client-5.32.0.tgz} +0 -0
  27. package/components/tryghost-member-attribution-5.32.0.tgz +0 -0
  28. package/components/{tryghost-member-events-5.30.1.tgz → tryghost-member-events-5.32.0.tgz} +0 -0
  29. package/components/{tryghost-members-api-5.30.1.tgz → tryghost-members-api-5.32.0.tgz} +0 -0
  30. package/components/{tryghost-members-csv-5.30.1.tgz → tryghost-members-csv-5.32.0.tgz} +0 -0
  31. package/components/{tryghost-members-events-service-5.30.1.tgz → tryghost-members-events-service-5.32.0.tgz} +0 -0
  32. package/components/{tryghost-members-importer-5.30.1.tgz → tryghost-members-importer-5.32.0.tgz} +0 -0
  33. package/components/tryghost-members-offers-5.32.0.tgz +0 -0
  34. package/components/tryghost-members-payments-5.32.0.tgz +0 -0
  35. package/components/{tryghost-members-ssr-5.30.1.tgz → tryghost-members-ssr-5.32.0.tgz} +0 -0
  36. package/components/{tryghost-members-stripe-service-5.30.1.tgz → tryghost-members-stripe-service-5.32.0.tgz} +0 -0
  37. package/components/{tryghost-minifier-5.30.1.tgz → tryghost-minifier-5.32.0.tgz} +0 -0
  38. package/components/tryghost-mw-api-version-mismatch-5.32.0.tgz +0 -0
  39. package/components/tryghost-mw-cache-control-5.32.0.tgz +0 -0
  40. package/components/{tryghost-mw-error-handler-5.30.1.tgz → tryghost-mw-error-handler-5.32.0.tgz} +0 -0
  41. package/components/tryghost-mw-session-from-token-5.32.0.tgz +0 -0
  42. package/components/tryghost-mw-update-user-last-seen-5.32.0.tgz +0 -0
  43. package/components/tryghost-mw-vhost-5.32.0.tgz +0 -0
  44. package/components/tryghost-oembed-service-5.32.0.tgz +0 -0
  45. package/components/tryghost-package-json-5.32.0.tgz +0 -0
  46. package/components/tryghost-referrers-5.32.0.tgz +0 -0
  47. package/components/{tryghost-security-5.30.1.tgz → tryghost-security-5.32.0.tgz} +0 -0
  48. package/components/{tryghost-session-service-5.30.1.tgz → tryghost-session-service-5.32.0.tgz} +0 -0
  49. package/components/{tryghost-settings-path-manager-5.30.1.tgz → tryghost-settings-path-manager-5.32.0.tgz} +0 -0
  50. package/components/{tryghost-staff-service-5.30.1.tgz → tryghost-staff-service-5.32.0.tgz} +0 -0
  51. package/components/{tryghost-stats-service-5.30.1.tgz → tryghost-stats-service-5.32.0.tgz} +0 -0
  52. package/components/{tryghost-tiers-5.30.1.tgz → tryghost-tiers-5.32.0.tgz} +0 -0
  53. package/components/tryghost-update-check-service-5.32.0.tgz +0 -0
  54. package/components/tryghost-verification-trigger-5.32.0.tgz +0 -0
  55. package/components/{tryghost-version-notifications-data-service-5.30.1.tgz → tryghost-version-notifications-data-service-5.32.0.tgz} +0 -0
  56. package/components/tryghost-webmentions-5.32.0.tgz +0 -0
  57. package/content/themes/casper/author.hbs +6 -6
  58. package/content/themes/casper/package.json +1 -1
  59. package/core/boot.js +2 -0
  60. package/core/built/admin/assets/{chunk.143.ab7136d5c88fd7e056e4.js → chunk.143.ad05239cc363254caed7.js} +5 -5
  61. package/core/built/admin/assets/{chunk.178.663428ba9c9d39ba275c.js → chunk.178.5260f900f09f859bf8ed.js} +4 -4
  62. package/core/built/admin/assets/{chunk.47.f29250a4560868c21293.js → chunk.47.f231a64fe3fbaba23b84.js} +4 -4
  63. package/core/built/admin/assets/{chunk.47.f29250a4560868c21293.js.LICENSE.txt → chunk.47.f231a64fe3fbaba23b84.js.LICENSE.txt} +0 -0
  64. package/core/built/admin/assets/{ghost-23dc524374e35a582886c36f7dacdb05.js → ghost-4571ad33bd158ced8a9f5c13598fdb7f.js} +142 -124
  65. package/core/built/admin/assets/{ghost-d3e45940f0f1601232d464d0b429d45f.css → ghost-721a7adc4ca642c88e4ac85e1cb8b385.css} +1 -1
  66. package/core/built/admin/assets/{ghost-dark-c8dc36895dfcbc03f0edd94311c65bfd.css → ghost-dark-fb05eb50e216469c5626356731afa42f.css} +1 -1
  67. package/core/built/admin/assets/{vendor-fadbf85ad92c591dc4bd3755312b6ddf.js → vendor-0441964c34d58f2aacd5a04bbe240243.js} +34 -37
  68. package/core/built/admin/index.html +6 -6
  69. package/core/frontend/helpers/ghost_head.js +1 -1
  70. package/core/server/api/endpoints/index.js +4 -0
  71. package/core/server/api/endpoints/mentions.js +33 -0
  72. package/core/server/api/endpoints/oembed.js +1 -22
  73. package/core/server/api/endpoints/utils/serializers/input/settings.js +2 -1
  74. package/core/server/api/endpoints/utils/serializers/output/mappers/emails.js +8 -0
  75. package/core/server/api/endpoints/utils/serializers/output/mappers/index.js +2 -1
  76. package/core/server/api/endpoints/utils/serializers/output/mappers/mentions.js +18 -0
  77. package/core/server/data/exporter/table-lists.js +1 -0
  78. package/core/server/data/importer/import-manager.js +21 -5
  79. package/core/server/data/migrations/versions/5.31/2022-12-05-09-56-update-newsletter-subscriptions.js +23 -0
  80. package/core/server/data/migrations/versions/5.31/2023-01-17-14-59-add-outbound-link-tagging-setting.js +8 -0
  81. package/core/server/data/migrations/versions/5.31/2023-01-19-07-46-add-mentions-table.js +17 -0
  82. package/core/server/data/migrations/versions/5.32/2023-01-24-08-00-fix-invalid-tier-expiry-for-paid-members.js +35 -0
  83. package/core/server/data/migrations/versions/5.32/2023-01-24-08-09-restore-incorrect-expired-tiers-for-members.js +46 -0
  84. package/core/server/data/schema/default-settings/default-settings.json +10 -0
  85. package/core/server/data/schema/schema.js +15 -0
  86. package/core/server/models/base/plugins/actions.js +1 -1
  87. package/core/server/models/base/plugins/sanitize.js +2 -0
  88. package/core/server/models/member.js +2 -2
  89. package/core/server/models/mention.js +9 -0
  90. package/core/server/models/redirect.js +2 -1
  91. package/core/server/services/api-version-compatibility/index.js +5 -8
  92. package/core/server/services/bulk-email/bulk-email-processor.js +7 -4
  93. package/core/server/services/email-service/wrapper.js +2 -1
  94. package/core/server/services/email-suppression-list/MailgunEmailSuppressionList.js +1 -1
  95. package/core/server/services/link-redirection/LinkRedirectRepository.js +2 -1
  96. package/core/server/services/link-tracking/PostLinkRepository.js +2 -1
  97. package/core/server/services/mega/post-email-serializer.js +2 -2
  98. package/core/server/services/member-attribution/index.js +2 -0
  99. package/core/server/services/mentions/BookshelfMentionRepository.js +117 -0
  100. package/core/server/services/mentions/MentionController.js +66 -0
  101. package/core/server/services/mentions/WebmentionMetadata.js +20 -0
  102. package/core/server/services/mentions/index.js +1 -0
  103. package/core/server/services/mentions/service.js +77 -0
  104. package/core/server/services/oembed/index.js +1 -0
  105. package/core/server/services/{nft-oembed.js → oembed/nft-oembed.js} +0 -0
  106. package/core/server/services/oembed/service.js +24 -0
  107. package/core/server/services/{twitter-embed.js → oembed/twitter-embed.js} +0 -0
  108. package/core/server/services/url/Resources.js +3 -17
  109. package/core/server/services/url/UrlService.js +3 -3
  110. package/core/server/web/api/endpoints/admin/routes.js +3 -0
  111. package/core/server/web/parent/frontend.js +1 -0
  112. package/core/server/web/webmentions/index.js +1 -0
  113. package/core/server/web/webmentions/routes.js +18 -0
  114. package/core/shared/labs.js +6 -3
  115. package/package.json +114 -110
  116. package/yarn.lock +616 -76
  117. package/components/tryghost-constants-5.30.1.tgz +0 -0
  118. package/components/tryghost-data-generator-5.30.1.tgz +0 -0
  119. package/components/tryghost-domain-events-5.30.1.tgz +0 -0
  120. package/components/tryghost-email-analytics-provider-mailgun-5.30.1.tgz +0 -0
  121. package/components/tryghost-email-service-5.30.1.tgz +0 -0
  122. package/components/tryghost-email-suppression-list-5.30.1.tgz +0 -0
  123. package/components/tryghost-link-redirects-5.30.1.tgz +0 -0
  124. package/components/tryghost-link-replacer-5.30.1.tgz +0 -0
  125. package/components/tryghost-magic-link-5.30.1.tgz +0 -0
  126. package/components/tryghost-member-attribution-5.30.1.tgz +0 -0
  127. package/components/tryghost-members-offers-5.30.1.tgz +0 -0
  128. package/components/tryghost-members-payments-5.30.1.tgz +0 -0
  129. package/components/tryghost-mw-api-version-mismatch-5.30.1.tgz +0 -0
  130. package/components/tryghost-mw-cache-control-5.30.1.tgz +0 -0
  131. package/components/tryghost-mw-session-from-token-5.30.1.tgz +0 -0
  132. package/components/tryghost-mw-update-user-last-seen-5.30.1.tgz +0 -0
  133. package/components/tryghost-mw-vhost-5.30.1.tgz +0 -0
  134. package/components/tryghost-oembed-service-5.30.1.tgz +0 -0
  135. package/components/tryghost-package-json-5.30.1.tgz +0 -0
  136. package/components/tryghost-referrers-5.30.1.tgz +0 -0
  137. package/components/tryghost-update-check-service-5.30.1.tgz +0 -0
  138. package/components/tryghost-verification-trigger-5.30.1.tgz +0 -0
@@ -21,10 +21,11 @@ class Resources {
21
21
  * @param {Object} options
22
22
  * @param {Object} [options.resources] - resources to initialize with instead of fetching them from the database
23
23
  * @param {Object} [options.queue] - instance of the Queue class
24
+ * @param {Object[]} [options.resourcesConfig] - resource config used when handling resource events and fetching
24
25
  */
25
- constructor({resources = {}, queue} = {}) {
26
+ constructor({resources = {}, queue, resourcesConfig = []} = {}) {
26
27
  this.queue = queue;
27
- this.resourcesConfig = [];
28
+ this.resourcesConfig = resourcesConfig;
28
29
  this.data = resources;
29
30
 
30
31
  this.listeners = [];
@@ -47,20 +48,6 @@ class Resources {
47
48
  events.on(eventName, listener);
48
49
  }
49
50
 
50
- /**
51
- * @description Initialize the resource config. We currently fetch the data straight via the the model layer,
52
- * but because Ghost supports multiple API versions, we have to ensure we load the correct data.
53
- *
54
- * @TODO: https://github.com/TryGhost/Ghost/issues/10360
55
- */
56
- initResourceConfig() {
57
- if (!_.isEmpty(this.resourcesConfig)) {
58
- return;
59
- }
60
-
61
- this.resourcesConfig = require('./config');
62
- }
63
-
64
51
  /**
65
52
  * @description Helper function to initialize data fetching.
66
53
  */
@@ -440,7 +427,6 @@ class Resources {
440
427
 
441
428
  this.listeners = [];
442
429
  this.data = {};
443
- this.resourcesConfig = null;
444
430
  }
445
431
 
446
432
  /**
@@ -8,6 +8,7 @@ const Queue = require('./Queue');
8
8
  const Urls = require('./Urls');
9
9
  const Resources = require('./Resources');
10
10
  const urlUtils = require('../../../shared/url-utils');
11
+ const resourcesConfig = require('./config');
11
12
 
12
13
  /**
13
14
  * The url service class holds all instances in a centralized place.
@@ -17,7 +18,7 @@ const urlUtils = require('../../../shared/url-utils');
17
18
  class UrlService {
18
19
  /**
19
20
  *
20
- * @param {Object} options
21
+ * @param {Object} [options]
21
22
  * @param {Object} [options.cache] - cache handler instance
22
23
  * @param {Function} [options.cache.read] - read cache by type
23
24
  * @param {Function} [options.cache.write] - write into cache by type
@@ -35,6 +36,7 @@ class UrlService {
35
36
  // Way too many tests fail if the initialization is removed so leaving it as is for time being
36
37
  this.urls = new Urls();
37
38
  this.resources = new Resources({
39
+ resourcesConfig: resourcesConfig,
38
40
  queue: this.queue
39
41
  });
40
42
 
@@ -321,12 +323,10 @@ class UrlService {
321
323
  if (persistedUrls && persistedResources) {
322
324
  this.urls.urls = persistedUrls;
323
325
  this.resources.data = persistedResources;
324
- this.resources.initResourceConfig();
325
326
  this.resources.initEventListeners();
326
327
 
327
328
  this._onQueueEnded('init');
328
329
  } else {
329
- this.resources.initResourceConfig();
330
330
  this.resources.initEventListeners();
331
331
  await this.resources.fetchResources();
332
332
  // CASE: all resources are fetched, start the queue
@@ -5,6 +5,7 @@ const apiMw = require('../../middleware');
5
5
  const mw = require('./middleware');
6
6
 
7
7
  const shared = require('../../../shared');
8
+ const labs = require('../../../../../shared/labs');
8
9
 
9
10
  module.exports = function apiRoutes() {
10
11
  const router = express.Router('admin api');
@@ -31,6 +32,8 @@ module.exports = function apiRoutes() {
31
32
  router.put('/posts/:id', mw.authAdminApi, http(api.posts.edit));
32
33
  router.del('/posts/:id', mw.authAdminApi, http(api.posts.destroy));
33
34
 
35
+ router.get('/mentions', labs.enabledMiddleware('webmentions'), mw.authAdminApi, http(api.mentions.browse));
36
+
34
37
  router.put('/comments/:id', mw.authAdminApi, http(api.comments.edit));
35
38
 
36
39
  // ## Pages
@@ -18,6 +18,7 @@ module.exports = (routerConfig) => {
18
18
  frontendApp.use(shared.middleware.urlRedirects.frontendSSLRedirect);
19
19
 
20
20
  frontendApp.lazyUse('/members', require('../members'));
21
+ frontendApp.lazyUse('/webmentions', require('../webmentions'));
21
22
  frontendApp.use('/', require('../../../frontend/web')(routerConfig));
22
23
 
23
24
  return frontendApp;
@@ -0,0 +1 @@
1
+ module.exports = require('./routes');
@@ -0,0 +1,18 @@
1
+ const express = require('../../../shared/express');
2
+ const api = require('../../api').endpoints;
3
+ const {http} = require('@tryghost/api-framework');
4
+ const shared = require('../shared');
5
+
6
+ const bodyParser = require('body-parser');
7
+
8
+ module.exports = function apiRoutes() {
9
+ const router = express.Router('webmentions');
10
+
11
+ // shouldn't be cached
12
+ router.use(shared.middleware.cacheControl('private'));
13
+
14
+ // Webmentions
15
+ router.post('/receive', bodyParser.urlencoded({extended: true, limit: '5mb'}), http(api.mentions.receive));
16
+
17
+ return router;
18
+ };
@@ -19,20 +19,23 @@ const GA_FEATURES = [
19
19
  'sourceAttribution',
20
20
  'memberAttribution',
21
21
  'audienceFeedback',
22
- 'themeErrorsNotification'
22
+ 'themeErrorsNotification',
23
+ 'emailStability'
23
24
  ];
24
25
 
25
26
  // NOTE: this allowlist is meant to be used to filter out any unexpected
26
27
  // input for the "labs" setting value
27
28
  const BETA_FEATURES = [
28
29
  'activitypub',
29
- 'emailStability'
30
+ 'emailErrors'
30
31
  ];
31
32
 
32
33
  const ALPHA_FEATURES = [
33
34
  'urlCache',
34
35
  'beforeAfterCard',
35
- 'lexicalEditor'
36
+ 'lexicalEditor',
37
+ 'webmentions',
38
+ 'outboundLinkTagging'
36
39
  ];
37
40
 
38
41
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.30.1",
3
+ "version": "5.32.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -58,34 +58,35 @@
58
58
  "dependencies": {
59
59
  "@sentry/node": "7.11.1",
60
60
  "@tryghost/adapter-base-cache": "0.1.3",
61
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.30.1.tgz",
61
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.32.0.tgz",
62
62
  "@tryghost/admin-api-schema": "4.2.1",
63
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.30.1.tgz",
64
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.30.1.tgz",
65
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.30.1.tgz",
63
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.32.0.tgz",
64
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.32.0.tgz",
65
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.32.0.tgz",
66
66
  "@tryghost/bookshelf-plugins": "0.6.3",
67
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.30.1.tgz",
67
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.32.0.tgz",
68
68
  "@tryghost/color-utils": "0.1.22",
69
69
  "@tryghost/config-url-helpers": "1.0.4",
70
- "@tryghost/constants": "file:components/tryghost-constants-5.30.1.tgz",
71
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.30.1.tgz",
72
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.30.1.tgz",
70
+ "@tryghost/constants": "file:components/tryghost-constants-5.32.0.tgz",
71
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.32.0.tgz",
72
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.32.0.tgz",
73
73
  "@tryghost/database-info": "0.3.14",
74
74
  "@tryghost/debug": "0.1.21",
75
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.30.1.tgz",
76
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.30.1.tgz",
77
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.30.1.tgz",
78
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.30.1.tgz",
79
- "@tryghost/email-service": "file:components/tryghost-email-service-5.30.1.tgz",
80
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.30.1.tgz",
75
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.32.0.tgz",
76
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.32.0.tgz",
77
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.32.0.tgz",
78
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.32.0.tgz",
79
+ "@tryghost/email-mock-receiver": "0.1.0",
80
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.32.0.tgz",
81
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.32.0.tgz",
81
82
  "@tryghost/errors": "1.2.20",
82
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.30.1.tgz",
83
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.32.0.tgz",
83
84
  "@tryghost/helpers": "1.1.75",
84
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.30.1.tgz",
85
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.32.0.tgz",
85
86
  "@tryghost/http-cache-utils": "0.1.6",
86
87
  "@tryghost/image-transform": "1.2.3",
87
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.30.1.tgz",
88
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.30.1.tgz",
88
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.32.0.tgz",
89
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.32.0.tgz",
89
90
  "@tryghost/kg-card-factory": "4.0.0",
90
91
  "@tryghost/kg-default-atoms": "4.0.0",
91
92
  "@tryghost/kg-default-cards": "6.0.0",
@@ -93,49 +94,50 @@
93
94
  "@tryghost/kg-lexical-html-renderer": "0.0.11",
94
95
  "@tryghost/kg-mobiledoc-html-renderer": "6.0.0",
95
96
  "@tryghost/limit-service": "1.2.4",
96
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.30.1.tgz",
97
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.30.1.tgz",
98
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.30.1.tgz",
97
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.32.0.tgz",
98
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.32.0.tgz",
99
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.32.0.tgz",
99
100
  "@tryghost/logging": "2.4.0",
100
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.30.1.tgz",
101
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.30.1.tgz",
102
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.30.1.tgz",
103
- "@tryghost/member-events": "file:components/tryghost-member-events-5.30.1.tgz",
104
- "@tryghost/members-api": "file:components/tryghost-members-api-5.30.1.tgz",
105
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.30.1.tgz",
106
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.30.1.tgz",
107
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.30.1.tgz",
108
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.30.1.tgz",
109
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.30.1.tgz",
110
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.30.1.tgz",
101
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.32.0.tgz",
102
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.32.0.tgz",
103
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.32.0.tgz",
104
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.32.0.tgz",
105
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.32.0.tgz",
106
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.32.0.tgz",
107
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.32.0.tgz",
108
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.32.0.tgz",
109
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.32.0.tgz",
110
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.32.0.tgz",
111
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.32.0.tgz",
111
112
  "@tryghost/metrics": "1.0.20",
112
- "@tryghost/minifier": "file:components/tryghost-minifier-5.30.1.tgz",
113
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.30.1.tgz",
114
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.30.1.tgz",
115
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.30.1.tgz",
116
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.30.1.tgz",
117
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.30.1.tgz",
113
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.32.0.tgz",
114
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.32.0.tgz",
115
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.32.0.tgz",
116
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.32.0.tgz",
117
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.32.0.tgz",
118
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.32.0.tgz",
118
119
  "@tryghost/nodemailer": "0.3.31",
119
120
  "@tryghost/nql": "0.11.0",
120
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.30.1.tgz",
121
- "@tryghost/package-json": "file:components/tryghost-package-json-5.30.1.tgz",
121
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.32.0.tgz",
122
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.32.0.tgz",
122
123
  "@tryghost/pretty-cli": "1.2.33",
123
124
  "@tryghost/promise": "0.2.1",
124
125
  "@tryghost/request": "0.1.34",
125
- "@tryghost/security": "file:components/tryghost-security-5.30.1.tgz",
126
- "@tryghost/session-service": "file:components/tryghost-session-service-5.30.1.tgz",
127
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.30.1.tgz",
126
+ "@tryghost/security": "file:components/tryghost-security-5.32.0.tgz",
127
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.32.0.tgz",
128
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.32.0.tgz",
128
129
  "@tryghost/social-urls": "0.1.34",
129
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.30.1.tgz",
130
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.30.1.tgz",
130
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.32.0.tgz",
131
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.32.0.tgz",
131
132
  "@tryghost/string": "0.2.2",
132
- "@tryghost/tiers": "file:components/tryghost-tiers-5.30.1.tgz",
133
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.32.0.tgz",
133
134
  "@tryghost/tpl": "0.1.21",
134
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.30.1.tgz",
135
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.32.0.tgz",
135
136
  "@tryghost/url-utils": "4.3.0",
136
137
  "@tryghost/validator": "0.1.31",
137
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.30.1.tgz",
138
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.32.0.tgz",
138
139
  "@tryghost/version": "0.1.19",
140
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.32.0.tgz",
139
141
  "@tryghost/zip": "1.1.31",
140
142
  "amperize": "0.6.1",
141
143
  "analytics-node": "6.2.0",
@@ -162,7 +164,7 @@
162
164
  "express-session": "1.17.3",
163
165
  "fs-extra": "11.1.0",
164
166
  "ghost-storage-base": "1.0.0",
165
- "glob": "8.0.3",
167
+ "glob": "8.1.0",
166
168
  "got": "9.6.0",
167
169
  "gscan": "4.36.0",
168
170
  "human-number": "2.0.1",
@@ -174,14 +176,14 @@
174
176
  "jsonwebtoken": "8.5.1",
175
177
  "juice": "8.1.0",
176
178
  "keypair": "1.0.4",
177
- "knex": "2.4.0",
179
+ "knex": "2.4.1",
178
180
  "knex-migrator": "5.1.1",
179
181
  "lodash": "4.17.21",
180
182
  "luxon": "3.2.1",
181
183
  "moment": "2.24.0",
182
184
  "moment-timezone": "0.5.23",
183
185
  "multer": "1.4.4",
184
- "mysql2": "3.0.0",
186
+ "mysql2": "3.0.1",
185
187
  "nconf": "0.12.0",
186
188
  "node-jose": "2.1.1",
187
189
  "oembed-parser": "1.4.9",
@@ -200,8 +202,7 @@
200
202
  },
201
203
  "devDependencies": {
202
204
  "@playwright/test": "1.29.2",
203
- "@tryghost/express-test": "0.11.8",
204
- "@tryghost/jest-snapshot": "0.4.8",
205
+ "@tryghost/express-test": "0.13.0",
205
206
  "@tryghost/webhook-mock-receiver": "0.2.3",
206
207
  "@types/common-tags": "1.8.1",
207
208
  "c8": "7.12.0",
@@ -209,7 +210,7 @@
209
210
  "cssnano": "5.1.14",
210
211
  "eslint": "8.32.0",
211
212
  "expect": "^29.0.0",
212
- "html-validate": "7.12.2",
213
+ "html-validate": "7.13.1",
213
214
  "inquirer": "8.2.5",
214
215
  "jwks-rsa": "3.0.1",
215
216
  "mocha": "10.2.0",
@@ -217,7 +218,7 @@
217
218
  "mock-knex": "TryGhost/mock-knex#8ecb8c227bf463c991c3d820d33f59efc3ab9682",
218
219
  "nock": "13.3.0",
219
220
  "papaparse": "5.3.2",
220
- "postcss": "8.4.20",
221
+ "postcss": "8.4.21",
221
222
  "postcss-cli": "10.1.0",
222
223
  "rewire": "6.0.0",
223
224
  "should": "13.2.3",
@@ -227,62 +228,65 @@
227
228
  "toml": "3.0.0"
228
229
  },
229
230
  "resolutions": {
231
+ "@elastic/elasticsearch": "8.5.0",
230
232
  "@tryghost/logging": "2.4.0",
231
233
  "moment": "2.24.0",
232
234
  "moment-timezone": "0.5.23",
233
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.30.1.tgz",
234
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.30.1.tgz",
235
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.30.1.tgz",
236
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.30.1.tgz",
237
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.30.1.tgz",
238
- "@tryghost/constants": "file:components/tryghost-constants-5.30.1.tgz",
239
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.30.1.tgz",
240
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.30.1.tgz",
241
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.30.1.tgz",
242
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.30.1.tgz",
243
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.30.1.tgz",
244
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.30.1.tgz",
245
- "@tryghost/email-events": "file:components/tryghost-email-events-5.30.1.tgz",
246
- "@tryghost/email-service": "file:components/tryghost-email-service-5.30.1.tgz",
247
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.30.1.tgz",
248
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.30.1.tgz",
249
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.30.1.tgz",
250
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.30.1.tgz",
251
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.30.1.tgz",
252
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.30.1.tgz",
253
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.30.1.tgz",
254
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.30.1.tgz",
255
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.30.1.tgz",
256
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.30.1.tgz",
257
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.30.1.tgz",
258
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.30.1.tgz",
259
- "@tryghost/member-events": "file:components/tryghost-member-events-5.30.1.tgz",
260
- "@tryghost/members-api": "file:components/tryghost-members-api-5.30.1.tgz",
261
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.30.1.tgz",
262
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.30.1.tgz",
263
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.30.1.tgz",
264
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.30.1.tgz",
265
- "@tryghost/minifier": "file:components/tryghost-minifier-5.30.1.tgz",
266
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.30.1.tgz",
267
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.30.1.tgz",
268
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.30.1.tgz",
269
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.30.1.tgz",
270
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.30.1.tgz",
271
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.30.1.tgz",
272
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.30.1.tgz",
273
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.30.1.tgz",
274
- "@tryghost/package-json": "file:components/tryghost-package-json-5.30.1.tgz",
275
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.30.1.tgz",
276
- "@tryghost/referrers": "file:components/tryghost-referrers-5.30.1.tgz",
277
- "@tryghost/security": "file:components/tryghost-security-5.30.1.tgz",
278
- "@tryghost/session-service": "file:components/tryghost-session-service-5.30.1.tgz",
279
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.30.1.tgz",
280
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.30.1.tgz",
281
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.30.1.tgz",
282
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.30.1.tgz",
283
- "@tryghost/tiers": "file:components/tryghost-tiers-5.30.1.tgz",
284
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.30.1.tgz",
285
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.30.1.tgz",
286
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.30.1.tgz"
235
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.32.0.tgz",
236
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.32.0.tgz",
237
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.32.0.tgz",
238
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.32.0.tgz",
239
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.32.0.tgz",
240
+ "@tryghost/constants": "file:components/tryghost-constants-5.32.0.tgz",
241
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.32.0.tgz",
242
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.32.0.tgz",
243
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.32.0.tgz",
244
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.32.0.tgz",
245
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.32.0.tgz",
246
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.32.0.tgz",
247
+ "@tryghost/email-events": "file:components/tryghost-email-events-5.32.0.tgz",
248
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.32.0.tgz",
249
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.32.0.tgz",
250
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.32.0.tgz",
251
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.32.0.tgz",
252
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.32.0.tgz",
253
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.32.0.tgz",
254
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.32.0.tgz",
255
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.32.0.tgz",
256
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.32.0.tgz",
257
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.32.0.tgz",
258
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.32.0.tgz",
259
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.32.0.tgz",
260
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.32.0.tgz",
261
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.32.0.tgz",
262
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.32.0.tgz",
263
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.32.0.tgz",
264
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.32.0.tgz",
265
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.32.0.tgz",
266
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.32.0.tgz",
267
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.32.0.tgz",
268
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.32.0.tgz",
269
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.32.0.tgz",
270
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.32.0.tgz",
271
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.32.0.tgz",
272
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.32.0.tgz",
273
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.32.0.tgz",
274
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.32.0.tgz",
275
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.32.0.tgz",
276
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.32.0.tgz",
277
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.32.0.tgz",
278
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.32.0.tgz",
279
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.32.0.tgz",
280
+ "@tryghost/security": "file:components/tryghost-security-5.32.0.tgz",
281
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.32.0.tgz",
282
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.32.0.tgz",
283
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.32.0.tgz",
284
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.32.0.tgz",
285
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.32.0.tgz",
286
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.32.0.tgz",
287
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.32.0.tgz",
288
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.32.0.tgz",
289
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.32.0.tgz",
290
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.32.0.tgz"
287
291
  }
288
292
  }