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
@@ -7011,7 +7011,7 @@ const s=function(){const e=n.GLOBAL_OBJ
7011
7011
  return e.__sentryEmberConfig=e.__sentryEmberConfig??{},e.__sentryEmberConfig}()
7012
7012
  Object.assign(s,i),o.init(i)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(i,r)||r in e&&e[r]===t[r]||Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[r]}}))}))
7013
7013
  e.getActiveTransaction=()=>o.getCurrentScope().getTransaction()
7014
- e.instrumentRoutePerformance=e=>{const n=async(e,n,i,o)=>(0,t.startSpan)({attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"ember"},op:e,name:n},(()=>i(...o))),i=e.name
7014
+ e.instrumentRoutePerformance=e=>{const n=async(e,n,i,o)=>(0,t.startSpan)({attributes:{[r.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"custom",[r.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.ember"},op:e,name:n,onlyIfParent:!0},(()=>i(...o))),i=e.name
7015
7015
  return{[i]:class extends e{beforeModel(...e){return n("ui.ember.route.before_model",this.fullRouteName,super.beforeModel.bind(this),e)}async model(...e){return n("ui.ember.route.model",this.fullRouteName,super.model.bind(this),e)}afterModel(...e){return n("ui.ember.route.after_model",this.fullRouteName,super.afterModel.bind(this),e)}setupController(...e){return n("ui.ember.route.setup_controller",this.fullRouteName,super.setupController.bind(this),e)}}}[i]}
7016
7016
  e.InitSentryForEmber=s})),define("@sentry/ember/instance-initializers/sentry-performance",["exports","@sentry/browser","@sentry/utils"],(function(e,t,r){"use strict"
7017
7017
  function n(){const e=r.GLOBAL_OBJ
@@ -7022,15 +7022,15 @@ if(t?.isFastBoot)return
7022
7022
  if(n().disablePerformance)return
7023
7023
  c(e)}function o(){return Ember.run.backburner||Ember.run.backburner?Ember.run.backburner:{on(){},off(){}}}function s(e,r,n,i,s){const{disableRunloopPerformance:a}=n,l=r.location
7024
7024
  let u,c
7025
- const d=n.browserTracingOptions||n.sentry.browserTracingOptions||{},h=function(e){if(!e||!e.getURL||!e.formatURL)return""
7025
+ const h=n.browserTracingOptions||n.sentry.browserTracingOptions||{},p=function(e){if(!e||!e.getURL||!e.formatURL)return""
7026
7026
  const t=e.formatURL(e.getURL())
7027
- return"hash"===e.implementation?`${e.rootURL}${t}`:t}(l),p=(0,t.getClient)()
7028
- if(!p)return
7029
- if(h&&!1!==d.startTransactionOnPageLoad&&!1!==d.instrumentPageLoad){const r=e.recognize(h)
7030
- u=i(p,{name:`route:${r.name}`,origin:"auto.pageload.ember",attributes:{[t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route"},tags:{url:h,toRoute:r.name,"routing.instrumentation":"@sentry/ember"}})}const f=(e,t)=>{t||(u?.end(),o().off("end",f))}
7031
- !1===d.startTransactionOnLocationChange&&!1===d.instrumentNavigation||(e.on("routeWillChange",(r=>{const{fromRoute:n,toRoute:i}=function(e,t){const r=e?.from?.name
7027
+ return"hash"===e.implementation?`${e.rootURL}${t}`:t}(l),f=(0,t.getClient)()
7028
+ if(!f)return
7029
+ if(p&&!1!==h.startTransactionOnPageLoad&&!1!==h.instrumentPageLoad){const r=e.recognize(p)
7030
+ u=i(f,{name:`route:${r.name}`,origin:"auto.pageload.ember",attributes:{[t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route"},tags:{url:p,toRoute:r.name,"routing.instrumentation":"@sentry/ember"}})}const m=(e,t)=>{t||(u?.end(),o().off("end",m))}
7031
+ !1===h.startTransactionOnLocationChange&&!1===h.instrumentNavigation||(e.on("routeWillChange",(r=>{const{fromRoute:n,toRoute:i}=function(e,t){const r=e?.from?.name
7032
7032
  return{fromRoute:r,toRoute:e?.to?.name||t.currentRouteName}}(r,e)
7033
- u?.end(),u=s(p,{name:`route:${i}`,origin:"auto.navigation.ember",attributes:{[t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route"},tags:{fromRoute:n,toRoute:i,"routing.instrumentation":"@sentry/ember"}}),c=(0,t.startInactiveSpan)({attributes:{[t.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.ember"},op:"ui.ember.transition",name:`route:${n} -> route:${i}`,onlyIfParent:!0})})),e.on("routeDidChange",(()=>{c&&u&&(c.end(),a?u.end():o().on("end",f))})))}function a(e,t){const n={payload:e,now:(0,r.timestampInSeconds)()}
7033
+ d(r)||(u?.end(),u=s(f,{name:`route:${i}`,origin:"auto.navigation.ember",attributes:{[t.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"route"},tags:{fromRoute:n,toRoute:i,"routing.instrumentation":"@sentry/ember"}}),c=(0,t.startInactiveSpan)({attributes:{[t.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.ui.ember"},op:"ui.ember.transition",name:`route:${n} -> route:${i}`,onlyIfParent:!0}))})),e.on("routeDidChange",(e=>{c&&u&&!d(e)&&(c.end(),a?u.end():o().on("end",m))})))}function a(e,t){const n={payload:e,now:(0,r.timestampInSeconds)()}
7034
7034
  t[e.object]=n}function l(e,n,i,o){const s=n[e.object]
7035
7035
  if(!s)return
7036
7036
  const a=(0,r.timestampInSeconds)()
@@ -7062,7 +7062,9 @@ l.forEach((e=>{Ember.run.scheduleOnce(e,null,o,e)}))})),o().on("end",((e,t)=>{t|
7062
7062
  if(t)return
7063
7063
  const i=r??2,o={},s={}
7064
7064
  Ember.Instrumentation.subscribe("render.component",{before(e,t,r){a(r,o)},after(e,t,r,n){l(r,o,"ui.ember.component.render",i)}}),n&&Ember.Instrumentation.subscribe("render.getComponentDefinition",{before(e,t,r){a(r,s)},after(e,t,r,n){l(r,s,"ui.ember.component.definition",0)}})}(i),u(i)}Object.defineProperty(e,"__esModule",{value:!0}),e._instrumentEmberRouter=s,e.default=void 0,e.initialize=i,e.instrumentForPerformance=c
7065
- e.default={initialize:i}})),define("@sentry/ember/types",["exports"],(function(e){"use strict"
7065
+ e.default={initialize:i}
7066
+ function d(e){const t=e.isIntermediate
7067
+ return"boolean"==typeof t?t:"loading"===e.to?.localName||"error"===e.to?.localName}})),define("@sentry/ember/types",["exports"],(function(e){"use strict"
7066
7068
  Object.defineProperty(e,"__esModule",{value:!0})})),define("@tryghost/ember-promise-modals/components/modal-container",["exports","@tryghost/ember-promise-modals/templates/components/modal-container"],(function(e,t){"use strict"
7067
7069
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
7068
7070
  e.default=Ember.Component.extend({layout:t.default,tagName:"",modals:Ember.inject.service()})})),define("@tryghost/ember-promise-modals/components/modal",["exports","focus-trap","@tryghost/ember-promise-modals/templates/components/modal"],(function(e,t,r){"use strict"
@@ -9176,7 +9178,7 @@ e.default={content:'<defs><style>.labs_svg__a{fill:none;stroke:currentColor;stro
9176
9178
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
9177
9179
  e.default={content:'<path stroke="currentColor" d="M14.5 12.5l.086.086a2 2 0 002.828 0l3.965-3.964a3.01 3.01 0 000-4.243l-1.758-1.757a3.008 3.008 0 00-4.242 0l-3.965 3.964a2 2 0 000 2.829l.086.085m-2 2l-.086-.085a2 2 0 00-2.828 0l-3.965 3.964a3.01 3.01 0 000 4.243l1.758 1.757a3.008 3.008 0 004.242 0l3.965-3.964a2 2 0 000-2.829L12.5 14.5m-4.389 1.389l7.778-7.778" fill="none"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/lock-filled",["exports"],(function(e){"use strict"
9178
9180
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
9179
- e.default={content:'<path d="M19.5 9.5h-.75V6.75a6.75 6.75 0 00-13.5 0V9.5H4.5a2 2 0 00-2 2V22a2 2 0 002 2h15a2 2 0 002-2V11.5a2 2 0 00-2-2zm-7.5 9a2 2 0 112-2 2 2 0 01-2 2zM16.25 9a.5.5 0 01-.5.5h-7.5a.5.5 0 01-.5-.5V6.75a4.25 4.25 0 018.5 0z"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/lock",["exports"],(function(e){"use strict"
9181
+ e.default={content:'<path d="M19.5 9.5h-.75V6.75a6.75 6.75 0 00-13.5 0V9.5H4.5a2 2 0 00-2 2V22a2 2 0 002 2h15a2 2 0 002-2V11.5a2 2 0 00-2-2zm-7.5 9a2 2 0 112-2 2 2 0 01-2 2zM16.25 9a.5.5 0 01-.5.5h-7.5a.5.5 0 01-.5-.5V6.75a4.25 4.25 0 018.5 0z" fill="currentColor"/>',attrs:{viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/lock",["exports"],(function(e){"use strict"
9180
9182
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
9181
9183
  e.default={content:'<rect width="16.5" height="13.5" x="3.75" y="9.75" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" rx="1.5" ry="1.5"/><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.75 9.75V6a5.25 5.25 0 0110.5 0v3.75M12 15v3"/>',attrs:{"stroke-width":"1.5",viewBox:"0 0 24 24"}}})),define("ember-svg-jar/inlined/megaphone",["exports"],(function(e){"use strict"
9182
9184
  Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0
@@ -9924,4 +9926,4 @@ e.default=class{constructor(e){if(this._data=new t.default,e)for(let t=0;t<e.len
9924
9926
  return this}get(e){let t=this._data[e]
9925
9927
  return t===r.UNDEFINED_KEY?void 0:t}set(e,t){return this._data[e]=t,this}delete(e){return this._data[e]=r.UNDEFINED_KEY,!0}}}))
9926
9928
 
9927
- //# sourceMappingURL=vendor-5b3c871639e8269236f1a32144698b0d.map
9929
+ //# sourceMappingURL=vendor-184a0eb190eeca86128313ada2ad7e97.map
@@ -8,7 +8,7 @@
8
8
  <title>Ghost Admin</title>
9
9
 
10
10
 
11
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.82%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%2215c735fb44%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%22cb1aa176ec%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%22a2190ecc4c%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%22ee41f6f558%22%7D" />
11
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22cdnUrl%22%3A%22%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%225.82%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22ember-websockets%22%3A%7B%22socketIO%22%3Atrue%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%22de6c86d49f%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%22e3e5407d53%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%223b683fe57d%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%2298cba57561%22%7D" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -56,9 +56,9 @@
56
56
 
57
57
  <div id="ember-basic-dropdown-wormhole"></div>
58
58
 
59
- <script src="assets/vendor-5ef343f0a55366497ef903095548a0d5.js"></script>
60
- <script src="assets/chunk.799.5012e659e3d64d043636.js"></script>
61
- <script src="assets/chunk.524.784dc858253af4b339a9.js"></script>
62
- <script src="assets/ghost-e16d0c67f0a0262f4cbe0d2745f90f5a.js"></script>
59
+ <script src="assets/vendor-96853bcc300bd0b0cda2913c8edb0d14.js"></script>
60
+ <script src="assets/chunk.799.5bcf6feef26f9fe94f0a.js"></script>
61
+ <script src="assets/chunk.524.cad7f24c33927f31923c.js"></script>
62
+ <script src="assets/ghost-377ce682ddf6e53f0ccb91aeae235f29.js"></script>
63
63
  </body>
64
64
  </html>
@@ -5,7 +5,7 @@ const settingsCache = require('../../shared/settings-cache');
5
5
 
6
6
  function getOgImage(data) {
7
7
  const context = data.context ? data.context : null;
8
- const contextObject = getContextObject(data, context, false);
8
+ const contextObject = getContextObject(data, context);
9
9
 
10
10
  if (_.includes(context, 'home')) {
11
11
  const imgUrl = settingsCache.get('og_image') || settingsCache.get('cover_image');
@@ -5,7 +5,7 @@ const settingsCache = require('../../shared/settings-cache');
5
5
 
6
6
  function getTwitterImage(data) {
7
7
  const context = data.context ? data.context : null;
8
- const contextObject = getContextObject(data, context, false);
8
+ const contextObject = getContextObject(data, context);
9
9
 
10
10
  if (_.includes(context, 'home')) {
11
11
  const imgUrl = settingsCache.get('twitter_image') || settingsCache.get('cover_image');
@@ -56,7 +56,7 @@ class ParentRouter {
56
56
  /**
57
57
  * @description Helper function to find the site router in the express router stack.
58
58
  * @param {Object} req
59
- * @returns {Express-Router}
59
+ * @returns {import('express').Router}
60
60
  * @private
61
61
  */
62
62
  _getSiteRouter(req) {
@@ -116,8 +116,8 @@ class ParentRouter {
116
116
 
117
117
  /**
118
118
  * @description Mount a router on a router (sub-routing)
119
- * @param {String} path
120
- * @param {Express-Router} router
119
+ * @param {String | import('express').Router} path
120
+ * @param {import('express').Router} [router]
121
121
  */
122
122
  mountRouter(path, router) {
123
123
  if (arguments.length === 1) {
@@ -34,7 +34,7 @@ const errorFallbackMessage = err => `<h1>${tpl(messages.oopsErrorTemplateHasErro
34
34
  <br ><p>${tpl(messages.whilstTryingToRender)}</p>
35
35
  ${err.statusCode} <pre>${escapeExpression(err.message || err)}</pre>`;
36
36
 
37
- const themeErrorRenderer = (err, req, res, next) => {
37
+ const themeErrorRenderer = function themeErrorRenderer(err, req, res, next) {
38
38
  // If the error code is explicitly set to STATIC_FILE_NOT_FOUND,
39
39
  // Skip trying to render an HTML error, and move on to the basic error renderer
40
40
  // We do this because customised 404 templates could reference the image that's missing
@@ -50,7 +50,7 @@ module.exports = function setupSiteApp(routerConfig) {
50
50
  // enable CORS headers (allows admin client to hit front-end when configured on separate URLs)
51
51
  siteApp.use(mw.cors);
52
52
 
53
- siteApp.use(async (req, res, next) => {
53
+ siteApp.use(async function nestApp(req, res, next) {
54
54
  if (labs.isSet('NestPlayground') || labs.isSet('ActivityPub')) {
55
55
  const originalExpressApp = req.app;
56
56
  const app = await GhostNestApp.getApp();
@@ -112,7 +112,9 @@ module.exports = function setupSiteApp(routerConfig) {
112
112
  siteApp.use(
113
113
  '/members/.well-known',
114
114
  shared.middleware.cacheControl('public', {maxAge: config.get('caching:wellKnown:maxAge')}),
115
- (req, res, next) => membersService.api.middleware.wellKnown(req, res, next)
115
+ function lazyWellKnownMw(req, res, next) {
116
+ return membersService.api.middleware.wellKnown(req, res, next);
117
+ }
116
118
  );
117
119
 
118
120
  // Recommendations well-known
@@ -67,7 +67,7 @@ class GhostServer {
67
67
  * Starts the ghost server listening on the configured port.
68
68
  * Requires an express app to be passed in
69
69
  *
70
- * @param {Object} rootApp - Required express app instance.
70
+ * @param {import('express').Application} rootApp - Required express app instance.
71
71
  * @return {Promise} Resolves once Ghost has started
72
72
  */
73
73
  start(rootApp) {
@@ -1,6 +1,7 @@
1
1
  const models = require('../../models');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'actions',
5
6
 
6
7
  browse: {
@@ -20,3 +21,5 @@ module.exports = {
20
21
  }
21
22
  }
22
23
  };
24
+
25
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const announcementBarSettings = require('../../services/announcement-bar-service');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'announcement',
5
6
 
6
7
  browse: {
@@ -13,3 +14,5 @@ module.exports = {
13
14
  }
14
15
  }
15
16
  };
17
+
18
+ module.exports = controller;
@@ -18,7 +18,8 @@ const messages = {
18
18
  notTheBlogOwner: 'You are not the site owner.'
19
19
  };
20
20
 
21
- module.exports = {
21
+ /** @type {import('@tryghost/api-framework').Controller} */
22
+ const controller = {
22
23
  docName: 'authentication',
23
24
 
24
25
  setup: {
@@ -250,3 +251,5 @@ module.exports = {
250
251
  }
251
252
  }
252
253
  };
254
+
255
+ module.exports = controller;
@@ -19,7 +19,8 @@ const rejectPrivateFieldsTransformer = input => mapQuery(input, function (value,
19
19
  };
20
20
  });
21
21
 
22
- module.exports = {
22
+ /** @type {import('@tryghost/api-framework').Controller} */
23
+ const controller = {
23
24
  docName: 'authors',
24
25
 
25
26
  browse: {
@@ -92,3 +93,5 @@ module.exports = {
92
93
  }
93
94
  }
94
95
  };
96
+
97
+ module.exports = controller;
@@ -6,7 +6,8 @@ const messages = {
6
6
  collectionNotFound: 'Collection not found.'
7
7
  };
8
8
 
9
- module.exports = {
9
+ /** @type {import('@tryghost/api-framework').Controller} */
10
+ const controller = {
10
11
  docName: 'collections',
11
12
 
12
13
  readBySlug: {
@@ -51,3 +52,5 @@ module.exports = {
51
52
  }
52
53
  }
53
54
  };
55
+
56
+ module.exports = controller;
@@ -6,7 +6,8 @@ const messages = {
6
6
  collectionNotFound: 'Collection not found.'
7
7
  };
8
8
 
9
- module.exports = {
9
+ /** @type {import('@tryghost/api-framework').Controller} */
10
+ const controller = {
10
11
  docName: 'collections',
11
12
 
12
13
  browse: {
@@ -136,3 +137,5 @@ module.exports = {
136
137
  }
137
138
  }
138
139
  };
140
+
141
+ module.exports = controller;
@@ -2,7 +2,8 @@ const commentsService = require('../../services/comments');
2
2
  const ALLOWED_INCLUDES = ['member', 'replies', 'replies.member', 'replies.count.likes', 'replies.liked', 'count.replies', 'count.likes', 'liked', 'post', 'parent'];
3
3
  const UNSAFE_ATTRS = ['status'];
4
4
 
5
- module.exports = {
5
+ /** @type {import('@tryghost/api-framework').Controller} */
6
+ const controller = {
6
7
  docName: 'comments',
7
8
 
8
9
  browse: {
@@ -143,8 +144,8 @@ module.exports = {
143
144
  }
144
145
  },
145
146
  permissions: true,
146
- query(frame) {
147
- return commentsService.controller.destroy(frame);
147
+ query() {
148
+ return commentsService.controller.destroy();
148
149
  }
149
150
  },
150
151
 
@@ -207,3 +208,5 @@ module.exports = {
207
208
  }
208
209
  }
209
210
  };
211
+
212
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const models = require('../../models');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'comments',
5
6
 
6
7
  edit: {
@@ -26,3 +27,5 @@ module.exports = {
26
27
  }
27
28
  }
28
29
  };
30
+
31
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const publicConfig = require('../../services/public-config');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'config',
5
6
 
6
7
  read: {
@@ -13,3 +14,5 @@ module.exports = {
13
14
  }
14
15
  }
15
16
  };
17
+
18
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const customThemeSettingsService = require('../../services/custom-theme-settings');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'custom_theme_settings',
5
6
 
6
7
  browse: {
@@ -23,3 +24,5 @@ module.exports = {
23
24
  }
24
25
  }
25
26
  };
27
+
28
+ module.exports = controller;
@@ -8,7 +8,8 @@ const {pool} = require('@tryghost/promise');
8
8
  const models = require('../../models');
9
9
  const settingsCache = require('../../../shared/settings-cache');
10
10
 
11
- module.exports = {
11
+ /** @type {import('@tryghost/api-framework').Controller} */
12
+ const controller = {
12
13
  docName: 'db',
13
14
 
14
15
  backupContent: {
@@ -173,3 +174,5 @@ module.exports = {
173
174
  }
174
175
  }
175
176
  };
177
+
178
+ module.exports = controller;
@@ -7,7 +7,8 @@ const messages = {
7
7
  postNotFound: 'Post not found.'
8
8
  };
9
9
 
10
- module.exports = {
10
+ /** @type {import('@tryghost/api-framework').Controller} */
11
+ const controller = {
11
12
  docName: 'email_post',
12
13
 
13
14
  read: {
@@ -46,3 +47,5 @@ module.exports = {
46
47
  }
47
48
  }
48
49
  };
50
+
51
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const emailService = require('../../services/email-service');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'email_previews',
5
6
 
6
7
  read: {
@@ -47,3 +48,5 @@ module.exports = {
47
48
  }
48
49
  }
49
50
  };
51
+
52
+ module.exports = controller;
@@ -12,7 +12,8 @@ const messages = {
12
12
  const allowedBatchIncludes = ['count.recipients'];
13
13
  const allowedFailureIncludes = ['member', 'email_recipient'];
14
14
 
15
- module.exports = {
15
+ /** @type {import('@tryghost/api-framework').Controller} */
16
+ const controller = {
16
17
  docName: 'emails',
17
18
 
18
19
  browse: {
@@ -180,3 +181,5 @@ module.exports = {
180
181
  }
181
182
  }
182
183
  };
184
+
185
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const exploreService = require('../../services/explore');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'explore',
5
6
 
6
7
  read: {
@@ -13,3 +14,5 @@ module.exports = {
13
14
  }
14
15
  }
15
16
  };
17
+
18
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const feedbackService = require('../../services/audience-feedback');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'feedback',
5
6
 
6
7
  add: {
@@ -24,3 +25,5 @@ module.exports = {
24
25
  }
25
26
  }
26
27
  };
28
+
29
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const storage = require('../../adapters/storage');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'files',
5
6
  upload: {
6
7
  statusCode: 201,
@@ -20,3 +21,5 @@ module.exports = {
20
21
  }
21
22
  }
22
23
  };
24
+
25
+ module.exports = controller;
@@ -23,7 +23,8 @@ const sign = async (claims, options) => {
23
23
  }, options));
24
24
  };
25
25
 
26
- module.exports = {
26
+ /** @type {import('@tryghost/api-framework').Controller} */
27
+ const controller = {
27
28
  docName: 'identities',
28
29
  read: {
29
30
  headers: {
@@ -36,3 +37,5 @@ module.exports = {
36
37
  }
37
38
  }
38
39
  };
40
+
41
+ module.exports = controller;
@@ -6,7 +6,8 @@ const imageTransform = require('@tryghost/image-transform');
6
6
  const storage = require('../../adapters/storage');
7
7
  const config = require('../../../shared/config');
8
8
 
9
- module.exports = {
9
+ /** @type {import('@tryghost/api-framework').Controller} */
10
+ const controller = {
10
11
  docName: 'images',
11
12
  upload: {
12
13
  statusCode: 201,
@@ -80,3 +81,5 @@ module.exports = {
80
81
  }
81
82
  }
82
83
  };
84
+
85
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const recommendations = require('../../services/recommendations');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'recommendations',
5
6
 
6
7
  browse: {
@@ -18,3 +19,5 @@ module.exports = {
18
19
  }
19
20
  }
20
21
  };
22
+
23
+ module.exports = controller;
@@ -12,7 +12,8 @@ const integrationsService = getIntegrationsServiceInstance({
12
12
  ApiKeyModel: models.ApiKey
13
13
  });
14
14
 
15
- module.exports = {
15
+ /** @type {import('@tryghost/api-framework').Controller} */
16
+ const controller = {
16
17
  docName: 'integrations',
17
18
  browse: {
18
19
  headers: {
@@ -163,3 +164,5 @@ module.exports = {
163
164
  }
164
165
  }
165
166
  };
167
+
168
+ module.exports = controller;
@@ -10,7 +10,8 @@ const messages = {
10
10
  inviteNotFound: 'Invite not found.'
11
11
  };
12
12
 
13
- module.exports = {
13
+ /** @type {import('@tryghost/api-framework').Controller} */
14
+ const controller = {
14
15
  docName: 'invites',
15
16
 
16
17
  browse: {
@@ -127,3 +128,5 @@ module.exports = {
127
128
  }
128
129
  }
129
130
  };
131
+
132
+ module.exports = controller;
@@ -9,7 +9,8 @@ const messages = {
9
9
 
10
10
  const ALLOWED_INCLUDES = ['count.members'];
11
11
 
12
- module.exports = {
12
+ /** @type {import('@tryghost/api-framework').Controller} */
13
+ const controller = {
13
14
  docName: 'labels',
14
15
 
15
16
  browse: {
@@ -161,3 +162,5 @@ module.exports = {
161
162
  }
162
163
  }
163
164
  };
165
+
166
+ module.exports = controller;
@@ -1,7 +1,8 @@
1
1
  const linkTrackingService = require('../../services/link-tracking');
2
2
  const INVALIDATE_ALL_REDIRECTS = '/r/*';
3
3
 
4
- module.exports = {
4
+ /** @type {import('@tryghost/api-framework').Controller} */
5
+ const controller = {
5
6
  docName: 'links',
6
7
  browse: {
7
8
  headers: {
@@ -59,3 +60,5 @@ module.exports = {
59
60
  }
60
61
  }
61
62
  };
63
+
64
+ module.exports = controller;
@@ -1,6 +1,7 @@
1
1
  const mailEvents = require('../../services/mail-events');
2
2
 
3
- module.exports = {
3
+ /** @type {import('@tryghost/api-framework').Controller} */
4
+ const controller = {
4
5
  docName: 'mail_events',
5
6
  add: {
6
7
  headers: {
@@ -12,3 +13,5 @@ module.exports = {
12
13
  }
13
14
  }
14
15
  };
16
+
17
+ module.exports = controller;
@@ -35,7 +35,8 @@ _private.sendMail = (object) => {
35
35
  });
36
36
  };
37
37
 
38
- module.exports = {
38
+ /** @type {import('@tryghost/api-framework').Controller} */
39
+ const controller = {
39
40
  docName: 'mail',
40
41
 
41
42
  send: {
@@ -46,23 +47,7 @@ module.exports = {
46
47
  query(frame) {
47
48
  return _private.sendMail(frame.data);
48
49
  }
49
- },
50
-
51
- sendTest(frame) {
52
- return mailService.utils.generateContent({template: 'test'})
53
- .then((content) => {
54
- const payload = {
55
- mail: [{
56
- message: {
57
- to: frame.user.get('email'),
58
- subject: tpl(messages.testGhostEmail),
59
- html: content.html,
60
- text: content.text
61
- }
62
- }]
63
- };
64
-
65
- return _private.sendMail(payload);
66
- });
67
50
  }
68
51
  };
52
+
53
+ module.exports = controller;
@@ -1,7 +1,8 @@
1
1
  const path = require('path');
2
2
  const storage = require('../../adapters/storage');
3
3
 
4
- module.exports = {
4
+ /** @type {import('@tryghost/api-framework').Controller} */
5
+ const controller = {
5
6
  docName: 'media',
6
7
  upload: {
7
8
  statusCode: 201,
@@ -47,3 +48,5 @@ module.exports = {
47
48
  }
48
49
  }
49
50
  };
51
+
52
+ module.exports = controller;