ghost 5.116.2 → 5.118.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 (131) hide show
  1. package/components/{tryghost-api-framework-5.116.2.tgz → tryghost-api-framework-5.118.0.tgz} +0 -0
  2. package/components/tryghost-constants-5.118.0.tgz +0 -0
  3. package/components/tryghost-custom-fonts-5.118.0.tgz +0 -0
  4. package/components/tryghost-custom-theme-settings-service-5.118.0.tgz +0 -0
  5. package/components/tryghost-domain-events-5.118.0.tgz +0 -0
  6. package/components/tryghost-donations-5.118.0.tgz +0 -0
  7. package/components/tryghost-email-addresses-5.118.0.tgz +0 -0
  8. package/components/{tryghost-email-service-5.116.2.tgz → tryghost-email-service-5.118.0.tgz} +0 -0
  9. package/components/tryghost-email-suppression-list-5.118.0.tgz +0 -0
  10. package/components/tryghost-html-to-plaintext-5.118.0.tgz +0 -0
  11. package/components/tryghost-i18n-5.118.0.tgz +0 -0
  12. package/components/{tryghost-job-manager-5.116.2.tgz → tryghost-job-manager-5.118.0.tgz} +0 -0
  13. package/components/tryghost-link-replacer-5.118.0.tgz +0 -0
  14. package/components/{tryghost-magic-link-5.116.2.tgz → tryghost-magic-link-5.118.0.tgz} +0 -0
  15. package/components/{tryghost-member-attribution-5.116.2.tgz → tryghost-member-attribution-5.118.0.tgz} +0 -0
  16. package/components/tryghost-member-events-5.118.0.tgz +0 -0
  17. package/components/{tryghost-members-csv-5.116.2.tgz → tryghost-members-csv-5.118.0.tgz} +0 -0
  18. package/components/{tryghost-members-offers-5.116.2.tgz → tryghost-members-offers-5.118.0.tgz} +0 -0
  19. package/components/tryghost-mw-error-handler-5.118.0.tgz +0 -0
  20. package/components/tryghost-mw-vhost-5.118.0.tgz +0 -0
  21. package/components/{tryghost-post-events-5.116.2.tgz → tryghost-post-events-5.118.0.tgz} +0 -0
  22. package/components/tryghost-post-revisions-5.118.0.tgz +0 -0
  23. package/components/tryghost-posts-service-5.118.0.tgz +0 -0
  24. package/components/tryghost-prometheus-metrics-5.118.0.tgz +0 -0
  25. package/components/tryghost-security-5.118.0.tgz +0 -0
  26. package/components/tryghost-tiers-5.118.0.tgz +0 -0
  27. package/components/tryghost-webmentions-5.118.0.tgz +0 -0
  28. package/content/themes/casper/LICENSE +1 -1
  29. package/content/themes/casper/README.md +1 -1
  30. package/content/themes/casper/assets/built/screen.css +1 -1
  31. package/content/themes/casper/assets/built/screen.css.map +1 -1
  32. package/content/themes/casper/assets/css/screen.css +1 -1
  33. package/content/themes/casper/author.hbs +23 -2
  34. package/content/themes/casper/package.json +2 -2
  35. package/content/themes/casper/partials/icons/bluesky.hbs +3 -0
  36. package/content/themes/casper/partials/icons/instagram.hbs +5 -0
  37. package/content/themes/casper/partials/icons/linkedin.hbs +3 -0
  38. package/content/themes/casper/partials/icons/mastodon.hbs +3 -0
  39. package/content/themes/casper/partials/icons/threads.hbs +3 -0
  40. package/content/themes/casper/partials/icons/tiktok.hbs +3 -0
  41. package/content/themes/casper/partials/icons/twitter.hbs +3 -1
  42. package/content/themes/casper/partials/icons/youtube.hbs +3 -0
  43. package/content/themes/source/LICENSE +1 -1
  44. package/content/themes/source/README.md +1 -1
  45. package/content/themes/source/assets/built/screen.css +1 -1
  46. package/content/themes/source/assets/built/screen.css.map +1 -1
  47. package/content/themes/source/assets/css/screen.css +7 -12
  48. package/content/themes/source/author.hbs +24 -3
  49. package/content/themes/source/package.json +2 -2
  50. package/content/themes/source/partials/feature-image.hbs +2 -2
  51. package/content/themes/source/partials/icons/bluesky.hbs +3 -0
  52. package/content/themes/source/partials/icons/instagram.hbs +5 -0
  53. package/content/themes/source/partials/icons/linkedin.hbs +3 -0
  54. package/content/themes/source/partials/icons/mastodon.hbs +3 -0
  55. package/content/themes/source/partials/icons/threads.hbs +3 -0
  56. package/content/themes/source/partials/icons/tiktok.hbs +3 -0
  57. package/content/themes/source/partials/icons/youtube.hbs +3 -0
  58. package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +31793 -26588
  59. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-550846e0.mjs → CodeEditorView-1143c509.mjs} +2 -2
  60. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
  61. package/core/built/admin/assets/admin-x-settings/{index-f3cb3f4d.mjs → index-19ebc8ad.mjs} +2 -2
  62. package/core/built/admin/assets/admin-x-settings/{index-4ce2fcd1.mjs → index-ac104f42.mjs} +2635 -2607
  63. package/core/built/admin/assets/admin-x-settings/{modals-6bc20529.mjs → modals-994901ee.mjs} +6680 -6165
  64. package/core/built/admin/assets/{chunk.524.578de86e5014b911b05a.js → chunk.524.5710919eb507b9a81166.js} +8 -8
  65. package/core/built/admin/assets/{chunk.582.21bf3e37b5d84ac4b58a.js → chunk.582.c8cb99b85cfa13fc7df1.js} +10 -10
  66. package/core/built/admin/assets/{chunk.713.761d11035fe0bf3e557c.js → chunk.713.48f120c377bcaffdfddf.js} +6 -9
  67. package/core/built/admin/assets/{ghost-868c537d5c02ca65323d0122596a67ec.js → ghost-cd90a28b214ee800a007bb62cd45e6e6.js} +780 -775
  68. package/core/built/admin/assets/posts/posts.js +11561 -11302
  69. package/core/built/admin/assets/stats/stats.js +76076 -59355
  70. package/core/built/admin/index.html +4 -4
  71. package/core/frontend/helpers/social_url.js +31 -0
  72. package/core/server/api/endpoints/users.js +7 -0
  73. package/core/server/api/endpoints/utils/serializers/output/config.js +2 -1
  74. package/core/server/data/migrations/versions/5.117/2025-04-14-02-36-30-add-additional-social-accounts-columns-to-user-table.js +38 -0
  75. package/core/server/data/schema/schema.js +7 -0
  76. package/core/server/services/auth/session/index.js +5 -2
  77. package/core/server/services/auth/session/middleware.js +2 -1
  78. package/core/server/services/auth/session/session-service.js +7 -6
  79. package/core/server/services/members/api.js +2 -2
  80. package/core/server/services/members/members-api/controllers/MemberController.js +214 -0
  81. package/core/server/services/members/members-api/controllers/RouterController.js +667 -0
  82. package/core/server/services/members/members-api/controllers/WellKnownController.js +46 -0
  83. package/core/server/services/members/members-api/members-api.js +404 -0
  84. package/core/server/services/members/members-api/repositories/EventRepository.js +984 -0
  85. package/core/server/services/members/members-api/repositories/MemberRepository.js +1739 -0
  86. package/core/server/services/members/members-api/repositories/ProductRepository.js +662 -0
  87. package/core/server/services/members/members-api/services/GeolocationService.js +23 -0
  88. package/core/server/services/members/members-api/services/MemberBREADService.js +444 -0
  89. package/core/server/services/members/members-api/services/PaymentsService.js +522 -0
  90. package/core/server/services/members/members-api/services/TokenService.js +54 -0
  91. package/core/server/services/milestones/BookshelfMilestoneRepository.js +8 -9
  92. package/core/server/services/milestones/InMemoryMilestoneRepository.js +119 -0
  93. package/core/server/services/milestones/Milestone.js +231 -0
  94. package/core/server/services/milestones/MilestoneCreatedEvent.js +22 -0
  95. package/core/server/services/milestones/MilestonesService.js +327 -0
  96. package/core/server/services/milestones/service.js +2 -2
  97. package/core/server/services/newsletters/index.js +1 -1
  98. package/core/server/services/public-config/config.js +2 -1
  99. package/core/server/services/settings/settings-service.js +1 -1
  100. package/core/server/services/slack-notifications/SlackNotifications.js +1 -1
  101. package/core/server/services/slack-notifications/SlackNotificationsService.js +2 -2
  102. package/core/server/services/staff/StaffService.js +1 -1
  103. package/core/shared/config/defaults.json +3 -0
  104. package/core/shared/config/env/config.testing-mysql.json +3 -0
  105. package/core/shared/config/env/config.testing.json +3 -0
  106. package/core/shared/labs.js +2 -2
  107. package/package.json +63 -63
  108. package/tsconfig.tsbuildinfo +1 -1
  109. package/yarn.lock +306 -70
  110. package/components/tryghost-constants-5.116.2.tgz +0 -0
  111. package/components/tryghost-custom-fonts-5.116.2.tgz +0 -0
  112. package/components/tryghost-custom-theme-settings-service-5.116.2.tgz +0 -0
  113. package/components/tryghost-domain-events-5.116.2.tgz +0 -0
  114. package/components/tryghost-donations-5.116.2.tgz +0 -0
  115. package/components/tryghost-email-addresses-5.116.2.tgz +0 -0
  116. package/components/tryghost-email-suppression-list-5.116.2.tgz +0 -0
  117. package/components/tryghost-html-to-plaintext-5.116.2.tgz +0 -0
  118. package/components/tryghost-i18n-5.116.2.tgz +0 -0
  119. package/components/tryghost-link-replacer-5.116.2.tgz +0 -0
  120. package/components/tryghost-member-events-5.116.2.tgz +0 -0
  121. package/components/tryghost-members-api-5.116.2.tgz +0 -0
  122. package/components/tryghost-milestones-5.116.2.tgz +0 -0
  123. package/components/tryghost-mw-error-handler-5.116.2.tgz +0 -0
  124. package/components/tryghost-mw-vhost-5.116.2.tgz +0 -0
  125. package/components/tryghost-post-revisions-5.116.2.tgz +0 -0
  126. package/components/tryghost-posts-service-5.116.2.tgz +0 -0
  127. package/components/tryghost-prometheus-metrics-5.116.2.tgz +0 -0
  128. package/components/tryghost-security-5.116.2.tgz +0 -0
  129. package/components/tryghost-tiers-5.116.2.tgz +0 -0
  130. package/components/tryghost-webmentions-5.116.2.tgz +0 -0
  131. /package/core/built/admin/assets/{chunk.713.761d11035fe0bf3e557c.js.LICENSE.txt → chunk.713.48f120c377bcaffdfddf.js.LICENSE.txt} +0 -0
@@ -23,7 +23,7 @@ const getStripeLiveEnabled = () => {
23
23
  };
24
24
 
25
25
  module.exports = {
26
- /** @type {import('@tryghost/milestones/lib/MilestonesService')} */
26
+ /** @type {import('./MilestonesService')} */
27
27
  api: null,
28
28
 
29
29
  /**
@@ -34,7 +34,7 @@ module.exports = {
34
34
  const db = require('../../data/db');
35
35
  const MilestoneQueries = require('./MilestoneQueries');
36
36
 
37
- const {MilestonesService} = require('@tryghost/milestones');
37
+ const MilestonesService = require('./MilestonesService');
38
38
  const config = require('../../../shared/config');
39
39
  const milestonesConfig = config.get('milestones');
40
40
 
@@ -9,7 +9,7 @@ const emailAddressService = require('../email-address');
9
9
 
10
10
  const MAGIC_LINK_TOKEN_VALIDITY = 24 * 60 * 60 * 1000;
11
11
  const MAGIC_LINK_TOKEN_VALIDITY_AFTER_USAGE = 10 * 60 * 1000;
12
- const MAGIC_LINK_TOKEN_MAX_USAGE_COUNT = 3;
12
+ const MAGIC_LINK_TOKEN_MAX_USAGE_COUNT = 7;
13
13
 
14
14
  module.exports = new NewslettersService({
15
15
  NewsletterModel: models.Newsletter,
@@ -20,7 +20,8 @@ module.exports = function getConfigProperties() {
20
20
  hostSettings: config.get('hostSettings'),
21
21
  tenor: config.get('tenor'),
22
22
  pintura: config.get('pintura'),
23
- signupForm: config.get('signupForm')
23
+ signupForm: config.get('signupForm'),
24
+ security: config.get('security')
24
25
  };
25
26
 
26
27
  // WIP tinybird stats feature - it's entirely config driven instead of using an alpha flag for now
@@ -20,7 +20,7 @@ const emailAddressService = require('../email-address');
20
20
 
21
21
  const MAGIC_LINK_TOKEN_VALIDITY = 24 * 60 * 60 * 1000;
22
22
  const MAGIC_LINK_TOKEN_VALIDITY_AFTER_USAGE = 10 * 60 * 1000;
23
- const MAGIC_LINK_TOKEN_MAX_USAGE_COUNT = 3;
23
+ const MAGIC_LINK_TOKEN_MAX_USAGE_COUNT = 7;
24
24
 
25
25
  /**
26
26
  * @returns {SettingsBREADService} instance of the PostsService
@@ -47,7 +47,7 @@ class SlackNotifications {
47
47
 
48
48
  /**
49
49
  * @param {object} eventData
50
- * @param {import('@tryghost/milestones/lib/InMemoryMilestoneRepository').Milestone} eventData.milestone
50
+ * @param {import('../milestones/Milestone')} eventData.milestone
51
51
  * @param {object} [eventData.meta]
52
52
  * @param {'import'|'email'|'skipped'|'initial'} [eventData.meta.reason]
53
53
  * @param {number} [eventData.meta.currentValue]
@@ -1,7 +1,7 @@
1
- const {MilestoneCreatedEvent} = require('@tryghost/milestones');
1
+ const MilestoneCreatedEvent = require('../milestones/MilestoneCreatedEvent');
2
2
 
3
3
  /**
4
- * @typedef {import('@tryghost/milestones/lib/InMemoryMilestoneRepository').Milestone} Milestone
4
+ * @typedef {import('../milestones/Milestone')} Milestone
5
5
  */
6
6
 
7
7
  /**
@@ -1,5 +1,5 @@
1
1
  const {MemberCreatedEvent, SubscriptionCancelledEvent, SubscriptionActivatedEvent} = require('@tryghost/member-events');
2
- const {MilestoneCreatedEvent} = require('@tryghost/milestones');
2
+ const MilestoneCreatedEvent = require('../milestones/MilestoneCreatedEvent');
3
3
 
4
4
  // @NOTE: 'StaffService' is a vague name that does not describe what it's actually doing.
5
5
  // Possibly, "StaffNotificationService" or "StaffEventNotificationService" would be a more accurate name
@@ -13,6 +13,9 @@
13
13
  "forceUpdate": false
14
14
  },
15
15
  "privacy": false,
16
+ "security": {
17
+ "staffDeviceVerification": true
18
+ },
16
19
  "useMinFiles": true,
17
20
  "paths": {
18
21
  "contentPath": "content/",
@@ -18,6 +18,9 @@
18
18
  "logging": {
19
19
  "level": "error"
20
20
  },
21
+ "security": {
22
+ "staffDeviceVerification": false
23
+ },
21
24
  "spam": {
22
25
  "user_login": {
23
26
  "minWait": 600000,
@@ -14,6 +14,9 @@
14
14
  "logging": {
15
15
  "level": "error"
16
16
  },
17
+ "security": {
18
+ "staffDeviceVerification": false
19
+ },
17
20
  "spam": {
18
21
  "user_login": {
19
22
  "minWait": 600000,
@@ -26,7 +26,8 @@ const GA_FEATURES = [
26
26
  'themeErrorsNotification',
27
27
  'announcementBar',
28
28
  'customFonts',
29
- 'contentVisibility'
29
+ 'contentVisibility',
30
+ 'socialLinks'
30
31
  ];
31
32
 
32
33
  // NOTE: this allowlist is meant to be used to filter out any unexpected
@@ -38,7 +39,6 @@ const BETA_FEATURES = [
38
39
  'editorExcerpt',
39
40
  'ActivityPub',
40
41
  'importMemberTier',
41
- 'staff2fa',
42
42
  'superEditors'
43
43
  ];
44
44
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.116.2",
3
+ "version": "5.118.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -40,7 +40,7 @@
40
40
  "test:browser:setup": "npx playwright install",
41
41
  "test:ci:e2e": "c8 -c ./.c8rc.e2e.json -o coverage-e2e yarn test:e2e -b",
42
42
  "test:ci:regression": "yarn test:regression -b",
43
- "test:ci:integration": "c8 -c ./.c8rc.e2e.json -o coverage-integration --lines 54 --functions 47 --branches 75 --statements 54 yarn test:integration -b",
43
+ "test:ci:integration": "c8 -c ./.c8rc.e2e.json -o coverage-integration --lines 53 --functions 47 --branches 74 --statements 53 yarn test:integration -b",
44
44
  "test:unit:slow": "yarn test:unit --reporter=mocha-slow-test-reporter",
45
45
  "test:int:slow": "yarn test:integration --reporter=mocha-slow-test-reporter",
46
46
  "test:e2e:slow": "yarn test:e2e --reporter=mocha-slow-test-reporter",
@@ -66,28 +66,28 @@
66
66
  "@slack/webhook": "7.0.5",
67
67
  "@tryghost/adapter-base-cache": "0.1.12",
68
68
  "@tryghost/admin-api-schema": "4.5.5",
69
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.116.2.tgz",
69
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.118.0.tgz",
70
70
  "@tryghost/bookshelf-plugins": "0.6.25",
71
71
  "@tryghost/color-utils": "0.2.2",
72
72
  "@tryghost/config-url-helpers": "1.0.12",
73
- "@tryghost/constants": "file:components/tryghost-constants-5.116.2.tgz",
74
- "@tryghost/custom-fonts": "file:components/tryghost-custom-fonts-5.116.2.tgz",
75
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.116.2.tgz",
73
+ "@tryghost/constants": "file:components/tryghost-constants-5.118.0.tgz",
74
+ "@tryghost/custom-fonts": "file:components/tryghost-custom-fonts-5.118.0.tgz",
75
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.118.0.tgz",
76
76
  "@tryghost/database-info": "0.3.27",
77
77
  "@tryghost/debug": "0.1.32",
78
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.116.2.tgz",
79
- "@tryghost/donations": "file:components/tryghost-donations-5.116.2.tgz",
80
- "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.116.2.tgz",
78
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.118.0.tgz",
79
+ "@tryghost/donations": "file:components/tryghost-donations-5.118.0.tgz",
80
+ "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.118.0.tgz",
81
81
  "@tryghost/email-mock-receiver": "0.3.8",
82
- "@tryghost/email-service": "file:components/tryghost-email-service-5.116.2.tgz",
83
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.116.2.tgz",
82
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.118.0.tgz",
83
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.118.0.tgz",
84
84
  "@tryghost/errors": "1.3.5",
85
85
  "@tryghost/helpers": "1.1.90",
86
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.116.2.tgz",
86
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.118.0.tgz",
87
87
  "@tryghost/http-cache-utils": "0.1.17",
88
- "@tryghost/i18n": "file:components/tryghost-i18n-5.116.2.tgz",
88
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.118.0.tgz",
89
89
  "@tryghost/image-transform": "1.3.0",
90
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.116.2.tgz",
90
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.118.0.tgz",
91
91
  "@tryghost/kg-card-factory": "5.1.0",
92
92
  "@tryghost/kg-converters": "1.1.0",
93
93
  "@tryghost/kg-default-atoms": "5.1.0",
@@ -97,36 +97,34 @@
97
97
  "@tryghost/kg-lexical-html-renderer": "1.3.5",
98
98
  "@tryghost/kg-mobiledoc-html-renderer": "7.1.1",
99
99
  "@tryghost/limit-service": "1.2.14",
100
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.116.2.tgz",
100
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.118.0.tgz",
101
101
  "@tryghost/logging": "2.4.21",
102
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.116.2.tgz",
103
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.116.2.tgz",
104
- "@tryghost/member-events": "file:components/tryghost-member-events-5.116.2.tgz",
105
- "@tryghost/members-api": "file:components/tryghost-members-api-5.116.2.tgz",
106
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.116.2.tgz",
107
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.116.2.tgz",
102
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.118.0.tgz",
103
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.118.0.tgz",
104
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.118.0.tgz",
105
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.118.0.tgz",
106
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.118.0.tgz",
108
107
  "@tryghost/metrics": "1.0.37",
109
- "@tryghost/milestones": "file:components/tryghost-milestones-5.116.2.tgz",
110
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.116.2.tgz",
111
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.116.2.tgz",
108
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.118.0.tgz",
109
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.118.0.tgz",
112
110
  "@tryghost/nodemailer": "0.3.45",
113
111
  "@tryghost/nql": "0.12.7",
114
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.116.2.tgz",
115
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.116.2.tgz",
112
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.118.0.tgz",
113
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.118.0.tgz",
116
114
  "@tryghost/pretty-cli": "1.2.44",
117
- "@tryghost/prometheus-metrics": "file:components/tryghost-prometheus-metrics-5.116.2.tgz",
115
+ "@tryghost/prometheus-metrics": "file:components/tryghost-prometheus-metrics-5.118.0.tgz",
118
116
  "@tryghost/promise": "0.3.12",
119
117
  "@tryghost/request": "1.0.8",
120
118
  "@tryghost/root-utils": "0.3.30",
121
- "@tryghost/security": "file:components/tryghost-security-5.116.2.tgz",
122
- "@tryghost/social-urls": "0.1.43",
119
+ "@tryghost/security": "file:components/tryghost-security-5.118.0.tgz",
120
+ "@tryghost/social-urls": "0.1.46",
123
121
  "@tryghost/string": "0.2.12",
124
- "@tryghost/tiers": "file:components/tryghost-tiers-5.116.2.tgz",
122
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.118.0.tgz",
125
123
  "@tryghost/tpl": "0.1.32",
126
124
  "@tryghost/url-utils": "4.4.8",
127
125
  "@tryghost/validator": "0.2.14",
128
126
  "@tryghost/version": "0.1.30",
129
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.116.2.tgz",
127
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.118.0.tgz",
130
128
  "@tryghost/zip": "1.1.46",
131
129
  "amperize": "0.6.1",
132
130
  "body-parser": "1.20.3",
@@ -165,7 +163,7 @@
165
163
  "ghost-storage-base": "1.0.0",
166
164
  "glob": "8.1.0",
167
165
  "got": "11.8.6",
168
- "gscan": "4.47.0",
166
+ "gscan": "4.48.0",
169
167
  "handlebars": "4.7.8",
170
168
  "hcaptcha": "0.2.0",
171
169
  "html-to-text": "5.1.1",
@@ -209,7 +207,7 @@
209
207
  "probability-distributions": "0.9.1",
210
208
  "probe-image-size": "7.2.3",
211
209
  "rss": "1.2.2",
212
- "sanitize-html": "2.15.0",
210
+ "sanitize-html": "2.16.0",
213
211
  "semver": "7.7.1",
214
212
  "simple-dom": "1.4.0",
215
213
  "stoppable": "1.1.0",
@@ -220,6 +218,7 @@
220
218
  "tiny-glob": "0.2.9",
221
219
  "tough-cookie": "4.1.4",
222
220
  "ua-parser-js": "1.0.40",
221
+ "uuid": "9.0.1",
223
222
  "xml": "1.0.1"
224
223
  },
225
224
  "optionalDependencies": {
@@ -228,12 +227,14 @@
228
227
  },
229
228
  "devDependencies": {
230
229
  "@actions/core": "1.11.1",
231
- "@playwright/test": "1.51.1",
230
+ "@playwright/test": "1.52.0",
232
231
  "@tryghost/express-test": "0.13.15",
233
232
  "@tryghost/webhook-mock-receiver": "0.2.14",
234
233
  "@types/bookshelf": "1.2.9",
235
234
  "@types/common-tags": "1.8.4",
235
+ "@types/jsonwebtoken": "9.0.6",
236
236
  "@types/node": "22.13.5",
237
+ "@types/node-jose": "1.1.13",
237
238
  "@types/sinon": "17.0.4",
238
239
  "@types/supertest": "6.0.3",
239
240
  "c8": "8.0.1",
@@ -245,6 +246,7 @@
245
246
  "find-root": "1.1.0",
246
247
  "form-data": "4.0.0",
247
248
  "inquirer": "8.2.6",
249
+ "jwk-to-pem": "2.0.7",
248
250
  "jwks-rsa": "3.2.0",
249
251
  "mocha": "10.8.2",
250
252
  "mocha-slow-test-reporter": "0.1.2",
@@ -269,35 +271,33 @@
269
271
  "jackspeak": "2.1.1",
270
272
  "moment": "2.24.0",
271
273
  "moment-timezone": "0.5.45",
272
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.116.2.tgz",
273
- "@tryghost/constants": "file:components/tryghost-constants-5.116.2.tgz",
274
- "@tryghost/custom-fonts": "file:components/tryghost-custom-fonts-5.116.2.tgz",
275
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.116.2.tgz",
276
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.116.2.tgz",
277
- "@tryghost/donations": "file:components/tryghost-donations-5.116.2.tgz",
278
- "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.116.2.tgz",
279
- "@tryghost/email-service": "file:components/tryghost-email-service-5.116.2.tgz",
280
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.116.2.tgz",
281
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.116.2.tgz",
282
- "@tryghost/i18n": "file:components/tryghost-i18n-5.116.2.tgz",
283
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.116.2.tgz",
284
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.116.2.tgz",
285
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.116.2.tgz",
286
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.116.2.tgz",
287
- "@tryghost/member-events": "file:components/tryghost-member-events-5.116.2.tgz",
288
- "@tryghost/members-api": "file:components/tryghost-members-api-5.116.2.tgz",
289
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.116.2.tgz",
290
- "@tryghost/milestones": "file:components/tryghost-milestones-5.116.2.tgz",
291
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.116.2.tgz",
292
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.116.2.tgz",
293
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.116.2.tgz",
294
- "@tryghost/post-events": "file:components/tryghost-post-events-5.116.2.tgz",
295
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.116.2.tgz",
296
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.116.2.tgz",
297
- "@tryghost/prometheus-metrics": "file:components/tryghost-prometheus-metrics-5.116.2.tgz",
298
- "@tryghost/security": "file:components/tryghost-security-5.116.2.tgz",
299
- "@tryghost/tiers": "file:components/tryghost-tiers-5.116.2.tgz",
300
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.116.2.tgz"
274
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.118.0.tgz",
275
+ "@tryghost/constants": "file:components/tryghost-constants-5.118.0.tgz",
276
+ "@tryghost/custom-fonts": "file:components/tryghost-custom-fonts-5.118.0.tgz",
277
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.118.0.tgz",
278
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.118.0.tgz",
279
+ "@tryghost/donations": "file:components/tryghost-donations-5.118.0.tgz",
280
+ "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.118.0.tgz",
281
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.118.0.tgz",
282
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.118.0.tgz",
283
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.118.0.tgz",
284
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.118.0.tgz",
285
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.118.0.tgz",
286
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.118.0.tgz",
287
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.118.0.tgz",
288
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.118.0.tgz",
289
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.118.0.tgz",
290
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.118.0.tgz",
291
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.118.0.tgz",
292
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.118.0.tgz",
293
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.118.0.tgz",
294
+ "@tryghost/post-events": "file:components/tryghost-post-events-5.118.0.tgz",
295
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.118.0.tgz",
296
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.118.0.tgz",
297
+ "@tryghost/prometheus-metrics": "file:components/tryghost-prometheus-metrics-5.118.0.tgz",
298
+ "@tryghost/security": "file:components/tryghost-security-5.118.0.tgz",
299
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.118.0.tgz",
300
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.118.0.tgz"
301
301
  },
302
302
  "nx": {
303
303
  "targets": {