ghost 5.82.8 → 5.82.9

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 (277) hide show
  1. package/components/tryghost-adapter-cache-memory-ttl-5.82.9.tgz +0 -0
  2. package/components/tryghost-adapter-cache-redis-5.82.9.tgz +0 -0
  3. package/components/tryghost-adapter-manager-5.82.9.tgz +0 -0
  4. package/components/tryghost-announcement-bar-settings-5.82.9.tgz +0 -0
  5. package/components/tryghost-api-framework-5.82.9.tgz +0 -0
  6. package/components/tryghost-api-version-compatibility-service-5.82.9.tgz +0 -0
  7. package/components/tryghost-audience-feedback-5.82.9.tgz +0 -0
  8. package/components/tryghost-bookshelf-repository-5.82.9.tgz +0 -0
  9. package/components/tryghost-bootstrap-socket-5.82.9.tgz +0 -0
  10. package/components/{tryghost-collections-5.82.8.tgz → tryghost-collections-5.82.9.tgz} +0 -0
  11. package/components/tryghost-constants-5.82.9.tgz +0 -0
  12. package/components/{tryghost-custom-theme-settings-service-5.82.8.tgz → tryghost-custom-theme-settings-service-5.82.9.tgz} +0 -0
  13. package/components/tryghost-data-generator-5.82.9.tgz +0 -0
  14. package/components/tryghost-domain-events-5.82.9.tgz +0 -0
  15. package/components/tryghost-donations-5.82.9.tgz +0 -0
  16. package/components/tryghost-dynamic-routing-events-5.82.9.tgz +0 -0
  17. package/components/{tryghost-email-addresses-5.82.8.tgz → tryghost-email-addresses-5.82.9.tgz} +0 -0
  18. package/components/tryghost-email-analytics-provider-mailgun-5.82.9.tgz +0 -0
  19. package/components/tryghost-email-analytics-service-5.82.9.tgz +0 -0
  20. package/components/tryghost-email-content-generator-5.82.9.tgz +0 -0
  21. package/components/tryghost-email-events-5.82.9.tgz +0 -0
  22. package/components/{tryghost-email-service-5.82.8.tgz → tryghost-email-service-5.82.9.tgz} +0 -0
  23. package/components/tryghost-email-suppression-list-5.82.9.tgz +0 -0
  24. package/components/tryghost-express-dynamic-redirects-5.82.9.tgz +0 -0
  25. package/components/tryghost-external-media-inliner-5.82.9.tgz +0 -0
  26. package/components/tryghost-extract-api-key-5.82.9.tgz +0 -0
  27. package/components/tryghost-ghost-5.82.9.tgz +0 -0
  28. package/components/tryghost-html-to-plaintext-5.82.9.tgz +0 -0
  29. package/components/tryghost-i18n-5.82.9.tgz +0 -0
  30. package/components/tryghost-importer-handler-content-files-5.82.9.tgz +0 -0
  31. package/components/tryghost-importer-revue-5.82.9.tgz +0 -0
  32. package/components/tryghost-in-memory-repository-5.82.9.tgz +0 -0
  33. package/components/tryghost-job-manager-5.82.9.tgz +0 -0
  34. package/components/tryghost-link-redirects-5.82.9.tgz +0 -0
  35. package/components/tryghost-link-replacer-5.82.9.tgz +0 -0
  36. package/components/{tryghost-link-tracking-5.82.8.tgz → tryghost-link-tracking-5.82.9.tgz} +0 -0
  37. package/components/tryghost-magic-link-5.82.9.tgz +0 -0
  38. package/components/tryghost-mail-events-5.82.9.tgz +0 -0
  39. package/components/tryghost-mailgun-client-5.82.9.tgz +0 -0
  40. package/components/tryghost-member-attribution-5.82.9.tgz +0 -0
  41. package/components/tryghost-member-events-5.82.9.tgz +0 -0
  42. package/components/{tryghost-members-api-5.82.8.tgz → tryghost-members-api-5.82.9.tgz} +0 -0
  43. package/components/tryghost-members-csv-5.82.9.tgz +0 -0
  44. package/components/tryghost-members-events-service-5.82.9.tgz +0 -0
  45. package/components/tryghost-members-importer-5.82.9.tgz +0 -0
  46. package/components/tryghost-members-offers-5.82.9.tgz +0 -0
  47. package/components/tryghost-members-payments-5.82.9.tgz +0 -0
  48. package/components/tryghost-members-ssr-5.82.9.tgz +0 -0
  49. package/components/{tryghost-members-stripe-service-5.82.8.tgz → tryghost-members-stripe-service-5.82.9.tgz} +0 -0
  50. package/components/tryghost-mentions-email-report-5.82.9.tgz +0 -0
  51. package/components/tryghost-milestones-5.82.9.tgz +0 -0
  52. package/components/{tryghost-minifier-5.82.8.tgz → tryghost-minifier-5.82.9.tgz} +0 -0
  53. package/components/tryghost-model-to-domain-event-interceptor-5.82.9.tgz +0 -0
  54. package/components/tryghost-mw-api-version-mismatch-5.82.9.tgz +0 -0
  55. package/components/tryghost-mw-cache-control-5.82.9.tgz +0 -0
  56. package/components/tryghost-mw-error-handler-5.82.9.tgz +0 -0
  57. package/components/tryghost-mw-session-from-token-5.82.9.tgz +0 -0
  58. package/components/tryghost-mw-update-user-last-seen-5.82.9.tgz +0 -0
  59. package/components/{tryghost-mw-version-match-5.82.8.tgz → tryghost-mw-version-match-5.82.9.tgz} +0 -0
  60. package/components/tryghost-mw-vhost-5.82.9.tgz +0 -0
  61. package/components/tryghost-nql-filter-expansions-5.82.9.tgz +0 -0
  62. package/components/tryghost-oembed-service-5.82.9.tgz +0 -0
  63. package/components/tryghost-package-json-5.82.9.tgz +0 -0
  64. package/components/tryghost-post-events-5.82.9.tgz +0 -0
  65. package/components/tryghost-post-revisions-5.82.9.tgz +0 -0
  66. package/components/tryghost-posts-service-5.82.9.tgz +0 -0
  67. package/components/tryghost-recommendations-5.82.9.tgz +0 -0
  68. package/components/tryghost-referrers-5.82.9.tgz +0 -0
  69. package/components/tryghost-security-5.82.9.tgz +0 -0
  70. package/components/tryghost-session-service-5.82.9.tgz +0 -0
  71. package/components/tryghost-settings-path-manager-5.82.9.tgz +0 -0
  72. package/components/tryghost-slack-notifications-5.82.9.tgz +0 -0
  73. package/components/{tryghost-staff-service-5.82.8.tgz → tryghost-staff-service-5.82.9.tgz} +0 -0
  74. package/components/tryghost-stats-service-5.82.9.tgz +0 -0
  75. package/components/tryghost-tiers-5.82.9.tgz +0 -0
  76. package/components/{tryghost-update-check-service-5.82.8.tgz → tryghost-update-check-service-5.82.9.tgz} +0 -0
  77. package/components/tryghost-verification-trigger-5.82.9.tgz +0 -0
  78. package/components/tryghost-version-notifications-data-service-5.82.9.tgz +0 -0
  79. package/components/tryghost-webmentions-5.82.9.tgz +0 -0
  80. package/core/app.js +1 -1
  81. package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +1 -1
  82. package/core/built/admin/assets/admin-x-demo/admin-x-demo.js +1 -1
  83. package/core/built/admin/assets/admin-x-demo/{index-e30bf632.mjs → index-f544d6cb.mjs} +3 -3
  84. package/core/built/admin/assets/admin-x-demo/{modals-44d6f757.mjs → modals-6544d395.mjs} +2 -2
  85. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-c72ff915.mjs → CodeEditorView-a1b9ba69.mjs} +2 -2
  86. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +1 -1
  87. package/core/built/admin/assets/admin-x-settings/{index-c91e5b06.mjs → index-8d83c7e9.mjs} +2 -2
  88. package/core/built/admin/assets/admin-x-settings/{index-ab6aea43.mjs → index-d54677fb.mjs} +4 -4
  89. package/core/built/admin/assets/admin-x-settings/{modals-839cba44.mjs → modals-73b6c803.mjs} +3125 -3105
  90. package/core/built/admin/assets/{chunk.524.784dc858253af4b339a9.js → chunk.524.cad7f24c33927f31923c.js} +5 -5
  91. package/core/built/admin/assets/{chunk.582.22b04d2b8d1fb7e2256c.js → chunk.582.a3046e5a9e7ea94bda16.js} +4 -4
  92. package/core/built/admin/assets/{chunk.799.5012e659e3d64d043636.js → chunk.799.5bcf6feef26f9fe94f0a.js} +523 -517
  93. package/core/built/admin/assets/{ghost-e16d0c67f0a0262f4cbe0d2745f90f5a.js → ghost-377ce682ddf6e53f0ccb91aeae235f29.js} +70 -58
  94. package/core/built/admin/assets/koenig-lexical/index.css +1 -1
  95. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +2015 -1951
  96. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +46 -46
  97. package/core/built/admin/assets/{vendor-5ef343f0a55366497ef903095548a0d5.js → vendor-96853bcc300bd0b0cda2913c8edb0d14.js} +13 -11
  98. package/core/built/admin/index.html +5 -5
  99. package/core/frontend/meta/og-image.js +1 -1
  100. package/core/frontend/meta/twitter-image.js +1 -1
  101. package/core/frontend/services/routing/ParentRouter.js +3 -3
  102. package/core/frontend/web/middleware/error-handler.js +1 -1
  103. package/core/frontend/web/site.js +4 -2
  104. package/core/server/GhostServer.js +1 -1
  105. package/core/server/api/endpoints/actions.js +4 -1
  106. package/core/server/api/endpoints/announcements.js +4 -1
  107. package/core/server/api/endpoints/authentication.js +4 -1
  108. package/core/server/api/endpoints/authors-public.js +4 -1
  109. package/core/server/api/endpoints/collections-public.js +4 -1
  110. package/core/server/api/endpoints/collections.js +4 -1
  111. package/core/server/api/endpoints/comments-members.js +6 -3
  112. package/core/server/api/endpoints/comments.js +4 -1
  113. package/core/server/api/endpoints/config.js +4 -1
  114. package/core/server/api/endpoints/custom-theme-settings.js +4 -1
  115. package/core/server/api/endpoints/db.js +4 -1
  116. package/core/server/api/endpoints/email-post.js +4 -1
  117. package/core/server/api/endpoints/email-previews.js +4 -1
  118. package/core/server/api/endpoints/emails.js +4 -1
  119. package/core/server/api/endpoints/explore.js +4 -1
  120. package/core/server/api/endpoints/feedback-members.js +4 -1
  121. package/core/server/api/endpoints/files.js +4 -1
  122. package/core/server/api/endpoints/identities.js +4 -1
  123. package/core/server/api/endpoints/images.js +4 -1
  124. package/core/server/api/endpoints/incoming-recommendations.js +4 -1
  125. package/core/server/api/endpoints/integrations.js +4 -1
  126. package/core/server/api/endpoints/invites.js +4 -1
  127. package/core/server/api/endpoints/labels.js +4 -1
  128. package/core/server/api/endpoints/links.js +4 -1
  129. package/core/server/api/endpoints/mail-events.js +4 -1
  130. package/core/server/api/endpoints/mail.js +4 -19
  131. package/core/server/api/endpoints/media.js +4 -1
  132. package/core/server/api/endpoints/member-signin-urls.js +5 -1
  133. package/core/server/api/endpoints/members-stripe-connect.js +4 -1
  134. package/core/server/api/endpoints/members.js +4 -1
  135. package/core/server/api/endpoints/mentions.js +4 -1
  136. package/core/server/api/endpoints/newsletters-public.js +4 -1
  137. package/core/server/api/endpoints/newsletters.js +4 -1
  138. package/core/server/api/endpoints/notifications.js +4 -1
  139. package/core/server/api/endpoints/oembed.js +4 -1
  140. package/core/server/api/endpoints/offers-public.js +4 -1
  141. package/core/server/api/endpoints/offers.js +4 -1
  142. package/core/server/api/endpoints/pages-public.js +4 -1
  143. package/core/server/api/endpoints/pages.js +4 -1
  144. package/core/server/api/endpoints/posts-public.js +11 -1
  145. package/core/server/api/endpoints/posts.js +4 -1
  146. package/core/server/api/endpoints/previews.js +4 -1
  147. package/core/server/api/endpoints/recommendations-public.js +4 -1
  148. package/core/server/api/endpoints/recommendations.js +4 -1
  149. package/core/server/api/endpoints/redirects.js +4 -1
  150. package/core/server/api/endpoints/roles.js +4 -1
  151. package/core/server/api/endpoints/schedules.js +4 -2
  152. package/core/server/api/endpoints/session.js +5 -4
  153. package/core/server/api/endpoints/settings-public.js +4 -1
  154. package/core/server/api/endpoints/settings.js +4 -1
  155. package/core/server/api/endpoints/site.js +3 -2
  156. package/core/server/api/endpoints/slack.js +4 -1
  157. package/core/server/api/endpoints/slugs.js +4 -1
  158. package/core/server/api/endpoints/snippets.js +4 -1
  159. package/core/server/api/endpoints/stats.js +4 -1
  160. package/core/server/api/endpoints/tags-public.js +4 -1
  161. package/core/server/api/endpoints/tags.js +4 -1
  162. package/core/server/api/endpoints/themes.js +4 -1
  163. package/core/server/api/endpoints/tiers-public.js +4 -1
  164. package/core/server/api/endpoints/tiers.js +4 -1
  165. package/core/server/api/endpoints/users.js +4 -1
  166. package/core/server/api/endpoints/utils/index.js +9 -1
  167. package/core/server/api/endpoints/utils/permissions.js +2 -2
  168. package/core/server/api/endpoints/utils/serializers/input/pages.js +31 -3
  169. package/core/server/api/endpoints/utils/serializers/input/posts.js +30 -2
  170. package/core/server/api/endpoints/utils/serializers/input/utils/url.js +2 -2
  171. package/core/server/api/endpoints/utils/serializers/output/mappers/activity-feed-events.js +1 -1
  172. package/core/server/api/endpoints/utils/serializers/output/members.js +5 -10
  173. package/core/server/api/endpoints/utils/serializers/output/settings.js +4 -2
  174. package/core/server/api/endpoints/utils/serializers/output/tiers.js +3 -6
  175. package/core/server/api/endpoints/utils/validators/input/password_reset.js +1 -1
  176. package/core/server/api/endpoints/utils/validators/utils/json-schema.js +1 -2
  177. package/core/server/api/endpoints/webhooks.js +4 -1
  178. package/core/server/data/importer/import-manager.js +8 -0
  179. package/core/server/services/comments/CommentsController.js +1 -1
  180. package/core/server/services/url/UrlService.js +2 -4
  181. package/core/server/web/admin/app.js +5 -1
  182. package/core/server/web/admin/controller.js +6 -7
  183. package/core/server/web/admin/middleware/redirect-admin-urls.js +6 -0
  184. package/core/server/web/announcement/routes.js +3 -0
  185. package/core/server/web/api/app.js +3 -0
  186. package/core/server/web/api/endpoints/admin/app.js +4 -1
  187. package/core/server/web/api/endpoints/admin/middleware.js +14 -1
  188. package/core/server/web/api/endpoints/admin/routes.js +3 -0
  189. package/core/server/web/api/endpoints/content/app.js +3 -0
  190. package/core/server/web/api/endpoints/content/middleware.js +2 -0
  191. package/core/server/web/api/endpoints/content/routes.js +3 -0
  192. package/core/server/web/api/middleware/upload.js +26 -2
  193. package/core/server/web/comments/routes.js +3 -0
  194. package/core/server/web/members/app.js +15 -4
  195. package/core/server/web/parent/app.js +3 -0
  196. package/core/server/web/parent/backend.js +1 -1
  197. package/core/server/web/parent/frontend.js +1 -1
  198. package/core/server/web/parent/middleware/emit-events.js +5 -0
  199. package/core/server/web/parent/middleware/ghost-locals.js +7 -2
  200. package/core/server/web/parent/middleware/log-request.js +4 -0
  201. package/core/server/web/parent/middleware/queue-request.js +6 -1
  202. package/core/server/web/parent/middleware/request-id.js +4 -0
  203. package/core/server/web/webmentions/routes.js +3 -0
  204. package/core/shared/express.js +5 -0
  205. package/core/shared/labs.js +1 -1
  206. package/core/shared/sentry.js +30 -24
  207. package/package.json +152 -152
  208. package/yarn.lock +612 -574
  209. package/components/tryghost-adapter-cache-memory-ttl-5.82.8.tgz +0 -0
  210. package/components/tryghost-adapter-cache-redis-5.82.8.tgz +0 -0
  211. package/components/tryghost-adapter-manager-5.82.8.tgz +0 -0
  212. package/components/tryghost-announcement-bar-settings-5.82.8.tgz +0 -0
  213. package/components/tryghost-api-framework-5.82.8.tgz +0 -0
  214. package/components/tryghost-api-version-compatibility-service-5.82.8.tgz +0 -0
  215. package/components/tryghost-audience-feedback-5.82.8.tgz +0 -0
  216. package/components/tryghost-bookshelf-repository-5.82.8.tgz +0 -0
  217. package/components/tryghost-bootstrap-socket-5.82.8.tgz +0 -0
  218. package/components/tryghost-constants-5.82.8.tgz +0 -0
  219. package/components/tryghost-data-generator-5.82.8.tgz +0 -0
  220. package/components/tryghost-domain-events-5.82.8.tgz +0 -0
  221. package/components/tryghost-donations-5.82.8.tgz +0 -0
  222. package/components/tryghost-dynamic-routing-events-5.82.8.tgz +0 -0
  223. package/components/tryghost-email-analytics-provider-mailgun-5.82.8.tgz +0 -0
  224. package/components/tryghost-email-analytics-service-5.82.8.tgz +0 -0
  225. package/components/tryghost-email-content-generator-5.82.8.tgz +0 -0
  226. package/components/tryghost-email-events-5.82.8.tgz +0 -0
  227. package/components/tryghost-email-suppression-list-5.82.8.tgz +0 -0
  228. package/components/tryghost-express-dynamic-redirects-5.82.8.tgz +0 -0
  229. package/components/tryghost-external-media-inliner-5.82.8.tgz +0 -0
  230. package/components/tryghost-extract-api-key-5.82.8.tgz +0 -0
  231. package/components/tryghost-ghost-5.82.8.tgz +0 -0
  232. package/components/tryghost-html-to-plaintext-5.82.8.tgz +0 -0
  233. package/components/tryghost-i18n-5.82.8.tgz +0 -0
  234. package/components/tryghost-importer-handler-content-files-5.82.8.tgz +0 -0
  235. package/components/tryghost-importer-revue-5.82.8.tgz +0 -0
  236. package/components/tryghost-in-memory-repository-5.82.8.tgz +0 -0
  237. package/components/tryghost-job-manager-5.82.8.tgz +0 -0
  238. package/components/tryghost-link-redirects-5.82.8.tgz +0 -0
  239. package/components/tryghost-link-replacer-5.82.8.tgz +0 -0
  240. package/components/tryghost-magic-link-5.82.8.tgz +0 -0
  241. package/components/tryghost-mail-events-5.82.8.tgz +0 -0
  242. package/components/tryghost-mailgun-client-5.82.8.tgz +0 -0
  243. package/components/tryghost-member-attribution-5.82.8.tgz +0 -0
  244. package/components/tryghost-member-events-5.82.8.tgz +0 -0
  245. package/components/tryghost-members-csv-5.82.8.tgz +0 -0
  246. package/components/tryghost-members-events-service-5.82.8.tgz +0 -0
  247. package/components/tryghost-members-importer-5.82.8.tgz +0 -0
  248. package/components/tryghost-members-offers-5.82.8.tgz +0 -0
  249. package/components/tryghost-members-payments-5.82.8.tgz +0 -0
  250. package/components/tryghost-members-ssr-5.82.8.tgz +0 -0
  251. package/components/tryghost-mentions-email-report-5.82.8.tgz +0 -0
  252. package/components/tryghost-milestones-5.82.8.tgz +0 -0
  253. package/components/tryghost-model-to-domain-event-interceptor-5.82.8.tgz +0 -0
  254. package/components/tryghost-mw-api-version-mismatch-5.82.8.tgz +0 -0
  255. package/components/tryghost-mw-cache-control-5.82.8.tgz +0 -0
  256. package/components/tryghost-mw-error-handler-5.82.8.tgz +0 -0
  257. package/components/tryghost-mw-session-from-token-5.82.8.tgz +0 -0
  258. package/components/tryghost-mw-update-user-last-seen-5.82.8.tgz +0 -0
  259. package/components/tryghost-mw-vhost-5.82.8.tgz +0 -0
  260. package/components/tryghost-nql-filter-expansions-5.82.8.tgz +0 -0
  261. package/components/tryghost-oembed-service-5.82.8.tgz +0 -0
  262. package/components/tryghost-package-json-5.82.8.tgz +0 -0
  263. package/components/tryghost-post-events-5.82.8.tgz +0 -0
  264. package/components/tryghost-post-revisions-5.82.8.tgz +0 -0
  265. package/components/tryghost-posts-service-5.82.8.tgz +0 -0
  266. package/components/tryghost-recommendations-5.82.8.tgz +0 -0
  267. package/components/tryghost-referrers-5.82.8.tgz +0 -0
  268. package/components/tryghost-security-5.82.8.tgz +0 -0
  269. package/components/tryghost-session-service-5.82.8.tgz +0 -0
  270. package/components/tryghost-settings-path-manager-5.82.8.tgz +0 -0
  271. package/components/tryghost-slack-notifications-5.82.8.tgz +0 -0
  272. package/components/tryghost-stats-service-5.82.8.tgz +0 -0
  273. package/components/tryghost-tiers-5.82.8.tgz +0 -0
  274. package/components/tryghost-verification-trigger-5.82.8.tgz +0 -0
  275. package/components/tryghost-version-notifications-data-service-5.82.8.tgz +0 -0
  276. package/components/tryghost-webmentions-5.82.8.tgz +0 -0
  277. /package/core/built/admin/assets/{chunk.799.5012e659e3d64d043636.js.LICENSE.txt → chunk.799.5bcf6feef26f9fe94f0a.js.LICENSE.txt} +0 -0
@@ -5,7 +5,7 @@ const shared = require('../shared');
5
5
  /**
6
6
  *
7
7
  * @param {import('../../../frontend/services/routing/RouterManager').RouterConfig} routerConfig
8
- * @returns {import('express').RequestHandler}
8
+ * @returns {import('express').Application}
9
9
  */
10
10
  module.exports = (routerConfig) => {
11
11
  debug('FrontendApp setup start', routerConfig);
@@ -3,6 +3,11 @@ const INVALIDATE_ALL = '/*';
3
3
  // Emit the site.changed event, a special model event used for webhooks
4
4
  const events = require('../../../lib/common/events');
5
5
 
6
+ /**
7
+ * @param {import('express').Request} req
8
+ * @param {import('express').Response} res
9
+ * @param {import('express').NextFunction} next
10
+ */
6
11
  module.exports = function emitEvents(req, res, next) {
7
12
  res.on('finish', function triggerEvents() {
8
13
  if (res.get('X-Cache-Invalidate') === INVALIDATE_ALL) {
@@ -1,7 +1,12 @@
1
1
  const ghostVersion = require('@tryghost/version');
2
2
 
3
- // ### GhostLocals Middleware
4
- // Expose the standard locals that every request will need to have available
3
+ /**
4
+ * Expose the standard locals that every request will need to have available
5
+ *
6
+ * @param {import('express').Request} req
7
+ * @param {import('express').Response} res
8
+ * @param {import('express').NextFunction} next
9
+ */
5
10
  module.exports = function ghostLocals(req, res, next) {
6
11
  // Make sure we have a locals value.
7
12
  res.locals = res.locals || {};
@@ -2,6 +2,10 @@ const logging = require('@tryghost/logging');
2
2
 
3
3
  /**
4
4
  * @TODO: move this middleware to Framework monorepo?
5
+ *
6
+ * @param {import('express').Request} req
7
+ * @param {import('express').Response} res
8
+ * @param {import('express').NextFunction} next
5
9
  */
6
10
  module.exports = function logRequest(req, res, next) {
7
11
  const startTime = Date.now();
@@ -44,7 +44,12 @@ module.exports = function queueRequest(
44
44
  debug(`Request completed: ${job.data.req.path}`);
45
45
  });
46
46
 
47
- return (req, res, next) => {
47
+ /**
48
+ * @param {import('express').Request} req
49
+ * @param {import('express').Response} res
50
+ * @param {import('express').NextFunction} next
51
+ */
52
+ return function queueRequestMw(req, res, next) {
48
53
  req.queueDepth = queue.queue.getLength();
49
54
 
50
55
  // Do not queue requests for static assets - We assume that any path
@@ -2,6 +2,10 @@ const uuid = require('uuid');
2
2
 
3
3
  /**
4
4
  * @TODO: move this middleware to Framework monorepo?
5
+ *
6
+ * @param {import('express').Request} req
7
+ * @param {import('express').Response} res
8
+ * @param {import('express').NextFunction} next
5
9
  */
6
10
  module.exports = function requestIdMw(req, res, next) {
7
11
  const requestId = req.get('X-Request-ID') || uuid.v4();
@@ -5,6 +5,9 @@ const shared = require('../shared');
5
5
 
6
6
  const bodyParser = require('body-parser');
7
7
 
8
+ /**
9
+ * @returns {import('express').Router}
10
+ */
8
11
  module.exports = function apiRoutes() {
9
12
  const router = express.Router('webmentions');
10
13
 
@@ -5,6 +5,11 @@ const sentry = require('./sentry');
5
5
 
6
6
  const lazyLoad = createLazyRouter();
7
7
 
8
+ /**
9
+ *
10
+ * @param {String} name
11
+ * @returns {import('express').Application}
12
+ */
8
13
  module.exports = (name) => {
9
14
  debug('new app start', name);
10
15
  const app = express();
@@ -142,7 +142,7 @@ module.exports.enabledHelper = function enabledHelper(options, callback) {
142
142
  return errString;
143
143
  };
144
144
 
145
- module.exports.enabledMiddleware = flag => (req, res, next) => {
145
+ module.exports.enabledMiddleware = flag => function labsEnabledMw(req, res, next) {
146
146
  if (module.exports.isSet(flag) === true) {
147
147
  return next();
148
148
  } else {
@@ -4,20 +4,25 @@ const SentryKnexTracingIntegration = require('./SentryKnexTracingIntegration');
4
4
  const sentryConfig = config.get('sentry');
5
5
  const errors = require('@tryghost/errors');
6
6
 
7
+ /**
8
+ * @param {import('@sentry/node').Event} event
9
+ * @param {import('@sentry/node').EventHint} hint
10
+ * @returns {import('@sentry/node').Event | null}
11
+ */
7
12
  const beforeSend = function (event, hint) {
8
13
  try {
9
14
  const exception = hint.originalException;
10
- const code = (exception && exception.code) ? exception.code : null;
11
- const context = (exception && exception.context) ? exception.context : null;
12
- const errorType = (exception && exception.errorType) ? exception.errorType : null;
13
- const id = (exception && exception.id) ? exception.id : null;
14
- const statusCode = (exception && exception.statusCode) ? exception.statusCode : null;
15
+ const code = exception?.code ?? null;
16
+ const context = exception?.context ?? null;
17
+ const errorType = exception?.errorType ?? null;
18
+ const id = exception?.id ?? null;
19
+ const statusCode = exception?.statusCode ?? null;
15
20
  event.tags = event.tags || {};
16
21
 
17
22
  if (errors.utils.isGhostError(exception)) {
18
23
  // Unexpected errors have a generic error message, set it back to context if there is one
19
24
  if (code === 'UNEXPECTED_ERROR' && context !== null) {
20
- if (event.exception.values && event.exception.values.length > 0) {
25
+ if (event.exception.values?.length > 0) {
21
26
  event.exception.values[0].type = context;
22
27
  }
23
28
  }
@@ -25,11 +30,12 @@ const beforeSend = function (event, hint) {
25
30
  // This is a mysql2 error — add some additional context
26
31
  if (exception.sql) {
27
32
  const sql = exception.sql;
28
- const errno = exception.errno ? exception.errno : null;
29
- const sqlErrorCode = exception.sqlErrorCode ? exception.sqlErrorCode : null;
30
- const sqlMessage = exception.sqlMessage ? exception.sqlMessage : null;
31
- const sqlState = exception.sqlState ? exception.sqlState : null;
32
- if (event.exception.values && event.exception.values.length > 0) {
33
+ const errno = exception.errno ?? null;
34
+ const sqlErrorCode = exception.sqlErrorCode ?? null;
35
+ const sqlMessage = exception.sqlMessage ?? null;
36
+ const sqlState = exception.sqlState ?? null;
37
+
38
+ if (event.exception.values?.length > 0) {
33
39
  event.exception.values[0].type = `SQL Error ${errno}: ${sqlErrorCode}`;
34
40
  event.exception.values[0].value = sqlMessage;
35
41
  event.contexts = event.contexts || {};
@@ -48,6 +54,14 @@ const beforeSend = function (event, hint) {
48
54
  event.tags.code = code;
49
55
  event.tags.id = id;
50
56
  event.tags.status_code = statusCode;
57
+
58
+ // Only handle 500 errors for now
59
+ // This is because the only other 5XX error should be 503, which are deliberate maintenance/boot errors
60
+ if (statusCode === 500) {
61
+ return event;
62
+ } else {
63
+ return null;
64
+ }
51
65
  }
52
66
  return event;
53
67
  } catch (error) {
@@ -69,6 +83,10 @@ const ALLOWED_HTTP_TRANSACTIONS = [
69
83
  return new RegExp(`^(GET|POST|PUT|DELETE)\\s(?<path>${path}\\/.+|\\/$)`);
70
84
  });
71
85
 
86
+ /**
87
+ * @param {import('@sentry/node').Event} event
88
+ * @returns {import('@sentry/node').Event | null}
89
+ */
72
90
  const beforeSendTransaction = function (event) {
73
91
  // Drop transactions that are not in the allowed list
74
92
  for (const transaction of ALLOWED_HTTP_TRANSACTIONS) {
@@ -130,19 +148,7 @@ if (sentryConfig && !sentryConfig.disabled) {
130
148
 
131
149
  module.exports = {
132
150
  requestHandler: Sentry.Handlers.requestHandler(),
133
- errorHandler: Sentry.Handlers.errorHandler({
134
- shouldHandleError(error) {
135
- // Sometimes non-Ghost issues will come into here but they won't
136
- // have a statusCode so we should always handle them
137
- if (!errors.utils.isGhostError(error)) {
138
- return true;
139
- }
140
-
141
- // Only handle 500 errors for now
142
- // This is because the only other 5XX error should be 503, which are deliberate maintenance/boot errors
143
- return (error.statusCode === 500);
144
- }
145
- }),
151
+ errorHandler: Sentry.Handlers.errorHandler(),
146
152
  tracingHandler: Sentry.Handlers.tracingHandler(),
147
153
  captureException: Sentry.captureException,
148
154
  captureMessage: Sentry.captureMessage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.82.8",
3
+ "version": "5.82.9",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -58,46 +58,46 @@
58
58
  },
59
59
  "dependencies": {
60
60
  "@extractus/oembed-extractor": "3.2.1",
61
- "@sentry/node": "7.112.1",
61
+ "@sentry/node": "7.114.0",
62
62
  "@tryghost/adapter-base-cache": "0.1.12",
63
- "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.82.8.tgz",
64
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.82.8.tgz",
63
+ "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.82.9.tgz",
64
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.82.9.tgz",
65
65
  "@tryghost/admin-api-schema": "4.5.5",
66
- "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.82.8.tgz",
67
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.82.8.tgz",
68
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.82.8.tgz",
69
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.82.8.tgz",
66
+ "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.82.9.tgz",
67
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.82.9.tgz",
68
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.82.9.tgz",
69
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.82.9.tgz",
70
70
  "@tryghost/bookshelf-plugins": "0.6.15",
71
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.82.8.tgz",
72
- "@tryghost/collections": "file:components/tryghost-collections-5.82.8.tgz",
71
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.82.9.tgz",
72
+ "@tryghost/collections": "file:components/tryghost-collections-5.82.9.tgz",
73
73
  "@tryghost/color-utils": "0.2.2",
74
74
  "@tryghost/config-url-helpers": "1.0.12",
75
- "@tryghost/constants": "file:components/tryghost-constants-5.82.8.tgz",
76
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.82.8.tgz",
77
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.82.8.tgz",
75
+ "@tryghost/constants": "file:components/tryghost-constants-5.82.9.tgz",
76
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.82.9.tgz",
77
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.82.9.tgz",
78
78
  "@tryghost/database-info": "0.3.23",
79
79
  "@tryghost/debug": "0.1.29",
80
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.82.8.tgz",
81
- "@tryghost/donations": "file:components/tryghost-donations-5.82.8.tgz",
82
- "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.82.8.tgz",
83
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.82.8.tgz",
84
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.82.8.tgz",
85
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.82.8.tgz",
80
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.82.9.tgz",
81
+ "@tryghost/donations": "file:components/tryghost-donations-5.82.9.tgz",
82
+ "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.82.9.tgz",
83
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.82.9.tgz",
84
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.82.9.tgz",
85
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.82.9.tgz",
86
86
  "@tryghost/email-mock-receiver": "0.3.5",
87
- "@tryghost/email-service": "file:components/tryghost-email-service-5.82.8.tgz",
88
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.82.8.tgz",
87
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.82.9.tgz",
88
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.82.9.tgz",
89
89
  "@tryghost/errors": "1.3.2",
90
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.82.8.tgz",
91
- "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.82.8.tgz",
92
- "@tryghost/ghost": "file:components/tryghost-ghost-5.82.8.tgz",
90
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.82.9.tgz",
91
+ "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.82.9.tgz",
92
+ "@tryghost/ghost": "file:components/tryghost-ghost-5.82.9.tgz",
93
93
  "@tryghost/helpers": "1.1.90",
94
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.82.8.tgz",
94
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.82.9.tgz",
95
95
  "@tryghost/http-cache-utils": "0.1.14",
96
- "@tryghost/i18n": "file:components/tryghost-i18n-5.82.8.tgz",
96
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.82.9.tgz",
97
97
  "@tryghost/image-transform": "1.3.0",
98
- "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.82.8.tgz",
99
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.82.8.tgz",
100
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.82.8.tgz",
98
+ "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.82.9.tgz",
99
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.82.9.tgz",
100
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.82.9.tgz",
101
101
  "@tryghost/kg-card-factory": "5.0.2",
102
102
  "@tryghost/kg-converters": "1.0.1",
103
103
  "@tryghost/kg-default-atoms": "5.0.2",
@@ -107,59 +107,59 @@
107
107
  "@tryghost/kg-lexical-html-renderer": "1.0.11",
108
108
  "@tryghost/kg-mobiledoc-html-renderer": "7.0.2",
109
109
  "@tryghost/limit-service": "1.2.14",
110
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.82.8.tgz",
111
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.82.8.tgz",
112
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.82.8.tgz",
110
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.82.9.tgz",
111
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.82.9.tgz",
112
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.82.9.tgz",
113
113
  "@tryghost/logging": "2.4.14",
114
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.82.8.tgz",
115
- "@tryghost/mail-events": "file:components/tryghost-mail-events-5.82.8.tgz",
116
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.82.8.tgz",
117
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.82.8.tgz",
118
- "@tryghost/member-events": "file:components/tryghost-member-events-5.82.8.tgz",
119
- "@tryghost/members-api": "file:components/tryghost-members-api-5.82.8.tgz",
120
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.82.8.tgz",
121
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.82.8.tgz",
122
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.82.8.tgz",
123
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.82.8.tgz",
124
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.82.8.tgz",
125
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.82.8.tgz",
126
- "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.82.8.tgz",
114
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.82.9.tgz",
115
+ "@tryghost/mail-events": "file:components/tryghost-mail-events-5.82.9.tgz",
116
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.82.9.tgz",
117
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.82.9.tgz",
118
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.82.9.tgz",
119
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.82.9.tgz",
120
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.82.9.tgz",
121
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.82.9.tgz",
122
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.82.9.tgz",
123
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.82.9.tgz",
124
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.82.9.tgz",
125
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.82.9.tgz",
126
+ "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.82.9.tgz",
127
127
  "@tryghost/metrics": "1.0.30",
128
- "@tryghost/milestones": "file:components/tryghost-milestones-5.82.8.tgz",
129
- "@tryghost/minifier": "file:components/tryghost-minifier-5.82.8.tgz",
130
- "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.82.8.tgz",
131
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.82.8.tgz",
132
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.82.8.tgz",
133
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.82.8.tgz",
134
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.82.8.tgz",
135
- "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.82.8.tgz",
136
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.82.8.tgz",
128
+ "@tryghost/milestones": "file:components/tryghost-milestones-5.82.9.tgz",
129
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.82.9.tgz",
130
+ "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.82.9.tgz",
131
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.82.9.tgz",
132
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.82.9.tgz",
133
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.82.9.tgz",
134
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.82.9.tgz",
135
+ "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.82.9.tgz",
136
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.82.9.tgz",
137
137
  "@tryghost/nodemailer": "0.3.41",
138
138
  "@tryghost/nql": "0.12.1",
139
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.82.8.tgz",
140
- "@tryghost/package-json": "file:components/tryghost-package-json-5.82.8.tgz",
141
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.82.8.tgz",
142
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.82.8.tgz",
139
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.82.9.tgz",
140
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.82.9.tgz",
141
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.82.9.tgz",
142
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.82.9.tgz",
143
143
  "@tryghost/pretty-cli": "1.2.41",
144
144
  "@tryghost/promise": "0.3.9",
145
- "@tryghost/recommendations": "file:components/tryghost-recommendations-5.82.8.tgz",
145
+ "@tryghost/recommendations": "file:components/tryghost-recommendations-5.82.9.tgz",
146
146
  "@tryghost/request": "1.0.4",
147
- "@tryghost/security": "file:components/tryghost-security-5.82.8.tgz",
148
- "@tryghost/session-service": "file:components/tryghost-session-service-5.82.8.tgz",
149
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.82.8.tgz",
150
- "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.82.8.tgz",
147
+ "@tryghost/security": "file:components/tryghost-security-5.82.9.tgz",
148
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.82.9.tgz",
149
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.82.9.tgz",
150
+ "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.82.9.tgz",
151
151
  "@tryghost/social-urls": "0.1.43",
152
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.82.8.tgz",
153
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.82.8.tgz",
152
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.82.9.tgz",
153
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.82.9.tgz",
154
154
  "@tryghost/string": "0.2.12",
155
- "@tryghost/tiers": "file:components/tryghost-tiers-5.82.8.tgz",
155
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.82.9.tgz",
156
156
  "@tryghost/tpl": "0.1.29",
157
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.82.8.tgz",
157
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.82.9.tgz",
158
158
  "@tryghost/url-utils": "4.4.8",
159
159
  "@tryghost/validator": "0.2.10",
160
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.82.8.tgz",
160
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.82.9.tgz",
161
161
  "@tryghost/version": "0.1.27",
162
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.82.8.tgz",
162
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.82.9.tgz",
163
163
  "@tryghost/zip": "1.1.42",
164
164
  "amperize": "0.6.1",
165
165
  "analytics-node": "6.2.0",
@@ -215,7 +215,7 @@
215
215
  "probe-image-size": "7.2.3",
216
216
  "rss": "1.2.2",
217
217
  "sanitize-html": "2.13.0",
218
- "semver": "7.6.0",
218
+ "semver": "7.6.2",
219
219
  "socket.io": "4.7.5",
220
220
  "stoppable": "1.1.0",
221
221
  "uuid": "9.0.1",
@@ -225,7 +225,7 @@
225
225
  "yjs": "13.6.15"
226
226
  },
227
227
  "optionalDependencies": {
228
- "@sentry/profiling-node": "7.112.1",
228
+ "@sentry/profiling-node": "7.114.0",
229
229
  "@tryghost/html-to-mobiledoc": "3.0.5",
230
230
  "sqlite3": "5.1.7"
231
231
  },
@@ -237,7 +237,7 @@
237
237
  "@types/common-tags": "1.8.4",
238
238
  "c8": "8.0.1",
239
239
  "cli-progress": "3.12.0",
240
- "cssnano": "6.1.2",
240
+ "cssnano": "7.0.1",
241
241
  "detect-indent": "6.1.0",
242
242
  "detect-newline": "3.1.0",
243
243
  "expect": "29.3.1",
@@ -251,7 +251,7 @@
251
251
  "nock": "13.3.3",
252
252
  "papaparse": "5.3.2",
253
253
  "postcss": "8.4.38",
254
- "postcss-cli": "10.1.0",
254
+ "postcss-cli": "11.0.0",
255
255
  "rewire": "6.0.0",
256
256
  "should": "13.2.3",
257
257
  "sinon": "15.2.0",
@@ -264,85 +264,85 @@
264
264
  "@tryghost/logging": "2.4.14",
265
265
  "moment": "2.24.0",
266
266
  "moment-timezone": "0.5.23",
267
- "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.82.8.tgz",
268
- "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.82.8.tgz",
269
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.82.8.tgz",
270
- "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.82.8.tgz",
271
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.82.8.tgz",
272
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.82.8.tgz",
273
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.82.8.tgz",
274
- "@tryghost/bookshelf-repository": "file:components/tryghost-bookshelf-repository-5.82.8.tgz",
275
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.82.8.tgz",
276
- "@tryghost/collections": "file:components/tryghost-collections-5.82.8.tgz",
277
- "@tryghost/constants": "file:components/tryghost-constants-5.82.8.tgz",
278
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.82.8.tgz",
279
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.82.8.tgz",
280
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.82.8.tgz",
281
- "@tryghost/donations": "file:components/tryghost-donations-5.82.8.tgz",
282
- "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.82.8.tgz",
283
- "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.82.8.tgz",
284
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.82.8.tgz",
285
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.82.8.tgz",
286
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.82.8.tgz",
287
- "@tryghost/email-events": "file:components/tryghost-email-events-5.82.8.tgz",
288
- "@tryghost/email-service": "file:components/tryghost-email-service-5.82.8.tgz",
289
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.82.8.tgz",
290
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.82.8.tgz",
291
- "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.82.8.tgz",
292
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.82.8.tgz",
293
- "@tryghost/ghost": "file:components/tryghost-ghost-5.82.8.tgz",
294
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.82.8.tgz",
295
- "@tryghost/i18n": "file:components/tryghost-i18n-5.82.8.tgz",
296
- "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.82.8.tgz",
297
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.82.8.tgz",
298
- "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.82.8.tgz",
299
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.82.8.tgz",
300
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.82.8.tgz",
301
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.82.8.tgz",
302
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.82.8.tgz",
303
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.82.8.tgz",
304
- "@tryghost/mail-events": "file:components/tryghost-mail-events-5.82.8.tgz",
305
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.82.8.tgz",
306
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.82.8.tgz",
307
- "@tryghost/member-events": "file:components/tryghost-member-events-5.82.8.tgz",
308
- "@tryghost/members-api": "file:components/tryghost-members-api-5.82.8.tgz",
309
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.82.8.tgz",
310
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.82.8.tgz",
311
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.82.8.tgz",
312
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.82.8.tgz",
313
- "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.82.8.tgz",
314
- "@tryghost/milestones": "file:components/tryghost-milestones-5.82.8.tgz",
315
- "@tryghost/minifier": "file:components/tryghost-minifier-5.82.8.tgz",
316
- "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.82.8.tgz",
317
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.82.8.tgz",
318
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.82.8.tgz",
319
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.82.8.tgz",
320
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.82.8.tgz",
321
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.82.8.tgz",
322
- "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.82.8.tgz",
323
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.82.8.tgz",
324
- "@tryghost/nql-filter-expansions": "file:components/tryghost-nql-filter-expansions-5.82.8.tgz",
325
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.82.8.tgz",
326
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.82.8.tgz",
327
- "@tryghost/package-json": "file:components/tryghost-package-json-5.82.8.tgz",
328
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.82.8.tgz",
329
- "@tryghost/post-events": "file:components/tryghost-post-events-5.82.8.tgz",
330
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.82.8.tgz",
331
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.82.8.tgz",
332
- "@tryghost/recommendations": "file:components/tryghost-recommendations-5.82.8.tgz",
333
- "@tryghost/referrers": "file:components/tryghost-referrers-5.82.8.tgz",
334
- "@tryghost/security": "file:components/tryghost-security-5.82.8.tgz",
335
- "@tryghost/session-service": "file:components/tryghost-session-service-5.82.8.tgz",
336
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.82.8.tgz",
337
- "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.82.8.tgz",
338
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.82.8.tgz",
339
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.82.8.tgz",
340
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.82.8.tgz",
341
- "@tryghost/tiers": "file:components/tryghost-tiers-5.82.8.tgz",
342
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.82.8.tgz",
343
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.82.8.tgz",
344
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.82.8.tgz",
345
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.82.8.tgz"
267
+ "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.82.9.tgz",
268
+ "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.82.9.tgz",
269
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.82.9.tgz",
270
+ "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.82.9.tgz",
271
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.82.9.tgz",
272
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.82.9.tgz",
273
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.82.9.tgz",
274
+ "@tryghost/bookshelf-repository": "file:components/tryghost-bookshelf-repository-5.82.9.tgz",
275
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.82.9.tgz",
276
+ "@tryghost/collections": "file:components/tryghost-collections-5.82.9.tgz",
277
+ "@tryghost/constants": "file:components/tryghost-constants-5.82.9.tgz",
278
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.82.9.tgz",
279
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.82.9.tgz",
280
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.82.9.tgz",
281
+ "@tryghost/donations": "file:components/tryghost-donations-5.82.9.tgz",
282
+ "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.82.9.tgz",
283
+ "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.82.9.tgz",
284
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.82.9.tgz",
285
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.82.9.tgz",
286
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.82.9.tgz",
287
+ "@tryghost/email-events": "file:components/tryghost-email-events-5.82.9.tgz",
288
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.82.9.tgz",
289
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.82.9.tgz",
290
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.82.9.tgz",
291
+ "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.82.9.tgz",
292
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.82.9.tgz",
293
+ "@tryghost/ghost": "file:components/tryghost-ghost-5.82.9.tgz",
294
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.82.9.tgz",
295
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.82.9.tgz",
296
+ "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.82.9.tgz",
297
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.82.9.tgz",
298
+ "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.82.9.tgz",
299
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.82.9.tgz",
300
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.82.9.tgz",
301
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.82.9.tgz",
302
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.82.9.tgz",
303
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.82.9.tgz",
304
+ "@tryghost/mail-events": "file:components/tryghost-mail-events-5.82.9.tgz",
305
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.82.9.tgz",
306
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.82.9.tgz",
307
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.82.9.tgz",
308
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.82.9.tgz",
309
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.82.9.tgz",
310
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.82.9.tgz",
311
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.82.9.tgz",
312
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.82.9.tgz",
313
+ "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.82.9.tgz",
314
+ "@tryghost/milestones": "file:components/tryghost-milestones-5.82.9.tgz",
315
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.82.9.tgz",
316
+ "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.82.9.tgz",
317
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.82.9.tgz",
318
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.82.9.tgz",
319
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.82.9.tgz",
320
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.82.9.tgz",
321
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.82.9.tgz",
322
+ "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.82.9.tgz",
323
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.82.9.tgz",
324
+ "@tryghost/nql-filter-expansions": "file:components/tryghost-nql-filter-expansions-5.82.9.tgz",
325
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.82.9.tgz",
326
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.82.9.tgz",
327
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.82.9.tgz",
328
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.82.9.tgz",
329
+ "@tryghost/post-events": "file:components/tryghost-post-events-5.82.9.tgz",
330
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.82.9.tgz",
331
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.82.9.tgz",
332
+ "@tryghost/recommendations": "file:components/tryghost-recommendations-5.82.9.tgz",
333
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.82.9.tgz",
334
+ "@tryghost/security": "file:components/tryghost-security-5.82.9.tgz",
335
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.82.9.tgz",
336
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.82.9.tgz",
337
+ "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.82.9.tgz",
338
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.82.9.tgz",
339
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.82.9.tgz",
340
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.82.9.tgz",
341
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.82.9.tgz",
342
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.82.9.tgz",
343
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.82.9.tgz",
344
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.82.9.tgz",
345
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.82.9.tgz"
346
346
  },
347
347
  "nx": {
348
348
  "targets": {