ghost 5.82.4 → 5.82.6

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 (166) hide show
  1. package/components/tryghost-adapter-cache-memory-ttl-5.82.6.tgz +0 -0
  2. package/components/tryghost-adapter-cache-redis-5.82.6.tgz +0 -0
  3. package/components/{tryghost-adapter-manager-5.82.4.tgz → tryghost-adapter-manager-5.82.6.tgz} +0 -0
  4. package/components/tryghost-announcement-bar-settings-5.82.6.tgz +0 -0
  5. package/components/tryghost-api-framework-5.82.6.tgz +0 -0
  6. package/components/tryghost-api-version-compatibility-service-5.82.6.tgz +0 -0
  7. package/components/tryghost-audience-feedback-5.82.6.tgz +0 -0
  8. package/components/{tryghost-bookshelf-repository-5.82.4.tgz → tryghost-bookshelf-repository-5.82.6.tgz} +0 -0
  9. package/components/tryghost-bootstrap-socket-5.82.6.tgz +0 -0
  10. package/components/tryghost-collections-5.82.6.tgz +0 -0
  11. package/components/{tryghost-constants-5.82.4.tgz → tryghost-constants-5.82.6.tgz} +0 -0
  12. package/components/tryghost-custom-theme-settings-service-5.82.6.tgz +0 -0
  13. package/components/{tryghost-data-generator-5.82.4.tgz → tryghost-data-generator-5.82.6.tgz} +0 -0
  14. package/components/tryghost-domain-events-5.82.6.tgz +0 -0
  15. package/components/{tryghost-donations-5.82.4.tgz → tryghost-donations-5.82.6.tgz} +0 -0
  16. package/components/tryghost-dynamic-routing-events-5.82.6.tgz +0 -0
  17. package/components/{tryghost-email-addresses-5.82.4.tgz → tryghost-email-addresses-5.82.6.tgz} +0 -0
  18. package/components/tryghost-email-analytics-provider-mailgun-5.82.6.tgz +0 -0
  19. package/components/tryghost-email-analytics-service-5.82.6.tgz +0 -0
  20. package/components/tryghost-email-content-generator-5.82.6.tgz +0 -0
  21. package/components/{tryghost-email-events-5.82.4.tgz → tryghost-email-events-5.82.6.tgz} +0 -0
  22. package/components/{tryghost-email-service-5.82.4.tgz → tryghost-email-service-5.82.6.tgz} +0 -0
  23. package/components/tryghost-email-suppression-list-5.82.6.tgz +0 -0
  24. package/components/{tryghost-express-dynamic-redirects-5.82.4.tgz → tryghost-express-dynamic-redirects-5.82.6.tgz} +0 -0
  25. package/components/{tryghost-external-media-inliner-5.82.4.tgz → tryghost-external-media-inliner-5.82.6.tgz} +0 -0
  26. package/components/tryghost-extract-api-key-5.82.6.tgz +0 -0
  27. package/components/tryghost-ghost-5.82.6.tgz +0 -0
  28. package/components/tryghost-html-to-plaintext-5.82.6.tgz +0 -0
  29. package/components/tryghost-i18n-5.82.6.tgz +0 -0
  30. package/components/{tryghost-importer-handler-content-files-5.82.4.tgz → tryghost-importer-handler-content-files-5.82.6.tgz} +0 -0
  31. package/components/{tryghost-importer-revue-5.82.4.tgz → tryghost-importer-revue-5.82.6.tgz} +0 -0
  32. package/components/tryghost-in-memory-repository-5.82.6.tgz +0 -0
  33. package/components/{tryghost-job-manager-5.82.4.tgz → tryghost-job-manager-5.82.6.tgz} +0 -0
  34. package/components/{tryghost-link-redirects-5.82.4.tgz → tryghost-link-redirects-5.82.6.tgz} +0 -0
  35. package/components/{tryghost-link-replacer-5.82.4.tgz → tryghost-link-replacer-5.82.6.tgz} +0 -0
  36. package/components/tryghost-link-tracking-5.82.6.tgz +0 -0
  37. package/components/tryghost-magic-link-5.82.6.tgz +0 -0
  38. package/components/tryghost-mail-events-5.82.6.tgz +0 -0
  39. package/components/tryghost-mailgun-client-5.82.6.tgz +0 -0
  40. package/components/{tryghost-member-attribution-5.82.4.tgz → tryghost-member-attribution-5.82.6.tgz} +0 -0
  41. package/components/tryghost-member-events-5.82.6.tgz +0 -0
  42. package/components/tryghost-members-api-5.82.6.tgz +0 -0
  43. package/components/{tryghost-members-csv-5.82.4.tgz → tryghost-members-csv-5.82.6.tgz} +0 -0
  44. package/components/tryghost-members-events-service-5.82.6.tgz +0 -0
  45. package/components/{tryghost-members-importer-5.82.4.tgz → tryghost-members-importer-5.82.6.tgz} +0 -0
  46. package/components/{tryghost-members-offers-5.82.4.tgz → tryghost-members-offers-5.82.6.tgz} +0 -0
  47. package/components/tryghost-members-payments-5.82.6.tgz +0 -0
  48. package/components/tryghost-members-ssr-5.82.6.tgz +0 -0
  49. package/components/tryghost-members-stripe-service-5.82.6.tgz +0 -0
  50. package/components/{tryghost-mentions-email-report-5.82.4.tgz → tryghost-mentions-email-report-5.82.6.tgz} +0 -0
  51. package/components/tryghost-milestones-5.82.6.tgz +0 -0
  52. package/components/tryghost-minifier-5.82.6.tgz +0 -0
  53. package/components/{tryghost-model-to-domain-event-interceptor-5.82.4.tgz → tryghost-model-to-domain-event-interceptor-5.82.6.tgz} +0 -0
  54. package/components/tryghost-mw-api-version-mismatch-5.82.6.tgz +0 -0
  55. package/components/tryghost-mw-cache-control-5.82.6.tgz +0 -0
  56. package/components/tryghost-mw-error-handler-5.82.6.tgz +0 -0
  57. package/components/tryghost-mw-session-from-token-5.82.6.tgz +0 -0
  58. package/components/{tryghost-mw-update-user-last-seen-5.82.4.tgz → tryghost-mw-update-user-last-seen-5.82.6.tgz} +0 -0
  59. package/components/tryghost-mw-version-match-5.82.6.tgz +0 -0
  60. package/components/tryghost-mw-vhost-5.82.6.tgz +0 -0
  61. package/components/tryghost-nql-filter-expansions-5.82.6.tgz +0 -0
  62. package/components/tryghost-oembed-service-5.82.6.tgz +0 -0
  63. package/components/tryghost-package-json-5.82.6.tgz +0 -0
  64. package/components/{tryghost-post-events-5.82.4.tgz → tryghost-post-events-5.82.6.tgz} +0 -0
  65. package/components/{tryghost-post-revisions-5.82.4.tgz → tryghost-post-revisions-5.82.6.tgz} +0 -0
  66. package/components/tryghost-posts-service-5.82.6.tgz +0 -0
  67. package/components/tryghost-recommendations-5.82.6.tgz +0 -0
  68. package/components/{tryghost-referrers-5.82.4.tgz → tryghost-referrers-5.82.6.tgz} +0 -0
  69. package/components/{tryghost-security-5.82.4.tgz → tryghost-security-5.82.6.tgz} +0 -0
  70. package/components/tryghost-session-service-5.82.6.tgz +0 -0
  71. package/components/tryghost-settings-path-manager-5.82.6.tgz +0 -0
  72. package/components/tryghost-slack-notifications-5.82.6.tgz +0 -0
  73. package/components/{tryghost-staff-service-5.82.4.tgz → tryghost-staff-service-5.82.6.tgz} +0 -0
  74. package/components/tryghost-stats-service-5.82.6.tgz +0 -0
  75. package/components/tryghost-tiers-5.82.6.tgz +0 -0
  76. package/components/tryghost-update-check-service-5.82.6.tgz +0 -0
  77. package/components/tryghost-verification-trigger-5.82.6.tgz +0 -0
  78. package/components/tryghost-version-notifications-data-service-5.82.6.tgz +0 -0
  79. package/components/tryghost-webmentions-5.82.6.tgz +0 -0
  80. package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +580 -579
  81. package/core/built/admin/assets/admin-x-demo/admin-x-demo.js +2 -2
  82. package/core/built/admin/assets/admin-x-demo/{index-e36f9f54.mjs → index-e30bf632.mjs} +815 -810
  83. package/core/built/admin/assets/admin-x-demo/{modals-54e6eae1.mjs → modals-44d6f757.mjs} +2 -2
  84. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-834e7ac8.mjs → CodeEditorView-c72ff915.mjs} +2 -2
  85. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
  86. package/core/built/admin/assets/admin-x-settings/{index-957ece55.mjs → index-ab6aea43.mjs} +3327 -3316
  87. package/core/built/admin/assets/admin-x-settings/{index-f994fb82.mjs → index-c91e5b06.mjs} +2 -2
  88. package/core/built/admin/assets/admin-x-settings/{modals-5264a854.mjs → modals-839cba44.mjs} +179 -182
  89. package/core/built/admin/assets/{chunk.524.bd8238874f4b73f48c54.js → chunk.524.345dd86d27c39187264a.js} +5 -5
  90. package/core/built/admin/assets/{chunk.582.0c6120fa7382f5d485e0.js → chunk.582.852e4321cd6722a5c000.js} +4 -4
  91. package/core/built/admin/assets/{chunk.799.51e503059770581f528f.js → chunk.799.5012e659e3d64d043636.js} +504 -505
  92. package/core/built/admin/assets/{ghost-0723ddb4afa369fc0303017c40ffffe0.js → ghost-97178f083d12f4245398362739b9eb0d.js} +12 -10
  93. package/core/built/admin/assets/{ghost-dark-7488b47ac1849513fde7b7c8e51b3a70.css → ghost-dark-330dba70f72cf7c29a9c02c0fdef7377.css} +1 -1
  94. package/core/built/admin/assets/{ghost-f84b3f229da06680df6c13ebd46ab671.css → ghost-e031f7ab21c73aa9a2a05ef2703e39cb.css} +1 -1
  95. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +2236 -2229
  96. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +87 -87
  97. package/core/built/admin/index.html +5 -5
  98. package/core/frontend/helpers/url.js +0 -2
  99. package/core/frontend/services/routing/RouterManager.js +0 -5
  100. package/core/frontend/services/routing/controllers/index.js +0 -4
  101. package/core/frontend/web/middleware/handle-image-sizes.js +10 -2
  102. package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +1 -1
  103. package/core/server/services/link-redirection/LinkRedirectRepository.js +1 -3
  104. package/core/server/services/members/MembersConfigProvider.js +1 -3
  105. package/core/server/web/api/middleware/upload.js +7 -1
  106. package/core/server/web/members/app.js +0 -3
  107. package/core/shared/labs.js +5 -3
  108. package/core/shared/sentry.js +5 -1
  109. package/package.json +181 -181
  110. package/yarn.lock +627 -814
  111. package/components/tryghost-adapter-cache-memory-ttl-5.82.4.tgz +0 -0
  112. package/components/tryghost-adapter-cache-redis-5.82.4.tgz +0 -0
  113. package/components/tryghost-announcement-bar-settings-5.82.4.tgz +0 -0
  114. package/components/tryghost-api-framework-5.82.4.tgz +0 -0
  115. package/components/tryghost-api-version-compatibility-service-5.82.4.tgz +0 -0
  116. package/components/tryghost-audience-feedback-5.82.4.tgz +0 -0
  117. package/components/tryghost-bootstrap-socket-5.82.4.tgz +0 -0
  118. package/components/tryghost-collections-5.82.4.tgz +0 -0
  119. package/components/tryghost-custom-theme-settings-service-5.82.4.tgz +0 -0
  120. package/components/tryghost-domain-events-5.82.4.tgz +0 -0
  121. package/components/tryghost-dynamic-routing-events-5.82.4.tgz +0 -0
  122. package/components/tryghost-email-analytics-provider-mailgun-5.82.4.tgz +0 -0
  123. package/components/tryghost-email-analytics-service-5.82.4.tgz +0 -0
  124. package/components/tryghost-email-content-generator-5.82.4.tgz +0 -0
  125. package/components/tryghost-email-suppression-list-5.82.4.tgz +0 -0
  126. package/components/tryghost-extract-api-key-5.82.4.tgz +0 -0
  127. package/components/tryghost-ghost-5.82.4.tgz +0 -0
  128. package/components/tryghost-html-to-plaintext-5.82.4.tgz +0 -0
  129. package/components/tryghost-i18n-5.82.4.tgz +0 -0
  130. package/components/tryghost-in-memory-repository-5.82.4.tgz +0 -0
  131. package/components/tryghost-link-tracking-5.82.4.tgz +0 -0
  132. package/components/tryghost-magic-link-5.82.4.tgz +0 -0
  133. package/components/tryghost-mail-events-5.82.4.tgz +0 -0
  134. package/components/tryghost-mailgun-client-5.82.4.tgz +0 -0
  135. package/components/tryghost-member-events-5.82.4.tgz +0 -0
  136. package/components/tryghost-members-api-5.82.4.tgz +0 -0
  137. package/components/tryghost-members-events-service-5.82.4.tgz +0 -0
  138. package/components/tryghost-members-payments-5.82.4.tgz +0 -0
  139. package/components/tryghost-members-ssr-5.82.4.tgz +0 -0
  140. package/components/tryghost-members-stripe-service-5.82.4.tgz +0 -0
  141. package/components/tryghost-milestones-5.82.4.tgz +0 -0
  142. package/components/tryghost-minifier-5.82.4.tgz +0 -0
  143. package/components/tryghost-mw-api-version-mismatch-5.82.4.tgz +0 -0
  144. package/components/tryghost-mw-cache-control-5.82.4.tgz +0 -0
  145. package/components/tryghost-mw-error-handler-5.82.4.tgz +0 -0
  146. package/components/tryghost-mw-session-from-token-5.82.4.tgz +0 -0
  147. package/components/tryghost-mw-version-match-5.82.4.tgz +0 -0
  148. package/components/tryghost-mw-vhost-5.82.4.tgz +0 -0
  149. package/components/tryghost-nql-filter-expansions-5.82.4.tgz +0 -0
  150. package/components/tryghost-oembed-service-5.82.4.tgz +0 -0
  151. package/components/tryghost-package-json-5.82.4.tgz +0 -0
  152. package/components/tryghost-posts-service-5.82.4.tgz +0 -0
  153. package/components/tryghost-recommendations-5.82.4.tgz +0 -0
  154. package/components/tryghost-session-service-5.82.4.tgz +0 -0
  155. package/components/tryghost-settings-path-manager-5.82.4.tgz +0 -0
  156. package/components/tryghost-slack-notifications-5.82.4.tgz +0 -0
  157. package/components/tryghost-stats-service-5.82.4.tgz +0 -0
  158. package/components/tryghost-tiers-5.82.4.tgz +0 -0
  159. package/components/tryghost-update-check-service-5.82.4.tgz +0 -0
  160. package/components/tryghost-verification-trigger-5.82.4.tgz +0 -0
  161. package/components/tryghost-version-notifications-data-service-5.82.4.tgz +0 -0
  162. package/components/tryghost-webmentions-5.82.4.tgz +0 -0
  163. package/core/frontend/services/routing/SubscribeRouter.js +0 -27
  164. package/core/frontend/services/routing/controllers/subscribe.js +0 -35
  165. package/core/frontend/views/subscribe.hbs +0 -36
  166. /package/core/built/admin/assets/{chunk.799.51e503059770581f528f.js.LICENSE.txt → chunk.799.5012e659e3d64d043636.js.LICENSE.txt} +0 -0
@@ -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%22d4e7286cae%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%221338bf2f0d%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%227898cabecf%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%22f5c6e4344f%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%220dafa6bb9c%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" />
12
12
 
13
13
  <meta name="HandheldFriendly" content="True" />
14
14
  <meta name="MobileOptimized" content="320" />
@@ -37,7 +37,7 @@
37
37
  </style>
38
38
 
39
39
  <link integrity="" rel="stylesheet" href="assets/vendor-0ede59da8efb5e28fa929557f7ff7154.css">
40
- <link integrity="" rel="stylesheet" href="assets/ghost-f84b3f229da06680df6c13ebd46ab671.css" title="light">
40
+ <link integrity="" rel="stylesheet" href="assets/ghost-e031f7ab21c73aa9a2a05ef2703e39cb.css" title="light">
41
41
 
42
42
 
43
43
  </head>
@@ -57,8 +57,8 @@
57
57
  <div id="ember-basic-dropdown-wormhole"></div>
58
58
 
59
59
  <script src="assets/vendor-5ef343f0a55366497ef903095548a0d5.js"></script>
60
- <script src="assets/chunk.799.51e503059770581f528f.js"></script>
61
- <script src="assets/chunk.524.bd8238874f4b73f48c54.js"></script>
62
- <script src="assets/ghost-0723ddb4afa369fc0303017c40ffffe0.js"></script>
60
+ <script src="assets/chunk.799.5012e659e3d64d043636.js"></script>
61
+ <script src="assets/chunk.524.345dd86d27c39187264a.js"></script>
62
+ <script src="assets/ghost-97178f083d12f4245398362739b9eb0d.js"></script>
63
63
  </body>
64
64
  </html>
@@ -7,7 +7,6 @@
7
7
  const {metaData} = require('../services/proxy');
8
8
  const {SafeString} = require('../services/handlebars');
9
9
  const logging = require('@tryghost/logging');
10
- const sentry = require('../../shared/sentry');
11
10
  const errors = require('@tryghost/errors');
12
11
 
13
12
  const {getMetaDataUrl} = metaData;
@@ -26,7 +25,6 @@ module.exports = function url(options) {
26
25
  message: `The url "${outputUrl}" couldn't be escaped correctly`,
27
26
  err: err
28
27
  });
29
- sentry.captureException(error);
30
28
  logging.error(error);
31
29
 
32
30
  return new SafeString('');
@@ -8,7 +8,6 @@ const PreviewRouter = require('./PreviewRouter');
8
8
  const ParentRouter = require('./ParentRouter');
9
9
  const EmailRouter = require('./EmailRouter');
10
10
  const UnsubscribeRouter = require('./UnsubscribeRouter');
11
- const SubscribeRouter = require('./SubscribeRouter');
12
11
 
13
12
  // This emits its own routing events
14
13
  const events = require('../../../server/lib/common/events');
@@ -110,10 +109,6 @@ class RouterManager {
110
109
  this.siteRouter.mountRouter(unsubscribeRouter.router());
111
110
  this.registry.setRouter('unsubscribeRouter', unsubscribeRouter);
112
111
 
113
- const subscribeRouter = new SubscribeRouter();
114
- this.siteRouter.mountRouter(subscribeRouter.router());
115
- this.registry.setRouter('subscribeRouter', subscribeRouter);
116
-
117
112
  if (RESOURCE_CONFIG.QUERY.email) {
118
113
  const emailRouter = new EmailRouter(RESOURCE_CONFIG);
119
114
  this.siteRouter.mountRouter(emailRouter.router());
@@ -29,9 +29,5 @@ module.exports = {
29
29
 
30
30
  get unsubscribe() {
31
31
  return require('./unsubscribe');
32
- },
33
-
34
- get subscribe() {
35
- return require('./subscribe');
36
32
  }
37
33
  };
@@ -9,9 +9,10 @@ const {imageSize} = require('../../../server/lib/image');
9
9
 
10
10
  const SIZE_PATH_REGEX = /^\/size\/([^/]+)\//;
11
11
  const FORMAT_PATH_REGEX = /^\/format\/([^./]+)\//;
12
-
13
12
  const TRAILING_SLASH_REGEX = /\/+$/;
14
13
 
14
+ const RESIZE_TIMEOUT_SECONDS = 10;
15
+
15
16
  module.exports = function handleImageSizes(req, res, next) {
16
17
  // In admin we need to read images and calculate the average color (blocked by CORS otherwise)
17
18
  res.setHeader('Access-Control-Allow-Origin', '*');
@@ -123,7 +124,12 @@ module.exports = function handleImageSizes(req, res, next) {
123
124
  if (originalImageBuffer.length <= 0) {
124
125
  throw new NoContentError();
125
126
  }
126
- return imageTransform.resizeFromBuffer(originalImageBuffer, {withoutEnlargement: requestUrlFileExtension !== '.svg', ...imageDimensionConfig, format});
127
+ return imageTransform.resizeFromBuffer(originalImageBuffer, {
128
+ withoutEnlargement: requestUrlFileExtension !== '.svg',
129
+ ...imageDimensionConfig,
130
+ format,
131
+ timeout: RESIZE_TIMEOUT_SECONDS
132
+ });
127
133
  })
128
134
  .then((resizedImageBuffer) => {
129
135
  return storageInstance.saveRaw(resizedImageBuffer, req.url);
@@ -147,3 +153,5 @@ module.exports = function handleImageSizes(req, res, next) {
147
153
  next(err);
148
154
  });
149
155
  };
156
+
157
+ module.exports.RESIZE_TIMEOUT_SECONDS = RESIZE_TIMEOUT_SECONDS;
@@ -1,4 +1,4 @@
1
- const DatabaseInfo = require('@tryghost/database-info/lib/database-info');
1
+ const DatabaseInfo = require('@tryghost/database-info');
2
2
  const logging = require('@tryghost/logging');
3
3
 
4
4
  const {createTransactionalMigration} = require('../../utils');
@@ -159,9 +159,9 @@ module.exports = class LinkRedirectRepository {
159
159
 
160
160
  if (this.#cache) {
161
161
  const cachedLink = await this.#cache.get(from);
162
+ debug(`getByUrl ${url}: Cache ${cachedLink ? 'HIT' : 'MISS'}`);
162
163
  // Cache hit, serve from cache
163
164
  if (cachedLink) {
164
- debug('Cache hit for', from);
165
165
  return this.#fromSerialized(cachedLink);
166
166
  }
167
167
  }
@@ -174,8 +174,6 @@ module.exports = class LinkRedirectRepository {
174
174
  if (linkRedirectModel) {
175
175
  const linkRedirect = this.fromModel(linkRedirectModel);
176
176
  if (this.#cache) {
177
- debug('Cache miss for', from, '. Caching');
178
- // Cache the link
179
177
  this.#cache.set(from, this.#serialize(linkRedirect));
180
178
  }
181
179
  return linkRedirect;
@@ -2,7 +2,6 @@ const logging = require('@tryghost/logging');
2
2
  const {URL} = require('url');
3
3
  const crypto = require('crypto');
4
4
  const createKeypair = require('keypair');
5
- const labs = require('../../../shared/labs');
6
5
 
7
6
  class MembersConfigProvider {
8
7
  /**
@@ -88,8 +87,7 @@ class MembersConfigProvider {
88
87
  }
89
88
 
90
89
  getSigninURL(token, type, referrer) {
91
- const relativeUrl = ['signup', 'subscribe'].includes(type) && labs.isSet('membersSpamPrevention') ? '/confirm_signup/' : '/members/';
92
- const siteUrl = this._urlUtils.urlFor({relativeUrl}, true);
90
+ const siteUrl = this._urlUtils.urlFor({relativeUrl: '/members/'}, true);
93
91
  const signinURL = new URL(siteUrl);
94
92
  signinURL.searchParams.set('token', token);
95
93
  signinURL.searchParams.set('action', type);
@@ -45,7 +45,13 @@ const messages = {
45
45
  const enabledClear = config.get('uploadClear') || true;
46
46
  const upload = multer({dest: os.tmpdir()});
47
47
 
48
- const deleteSingleFile = file => fs.unlink(file.path).catch(err => logging.error(err));
48
+ const deleteSingleFile = (file) => {
49
+ if (!file.path) {
50
+ return;
51
+ }
52
+
53
+ fs.unlink(file.path).catch(err => logging.error(err));
54
+ };
49
55
 
50
56
  const single = name => function singleUploadFunction(req, res, next) {
51
57
  const singleUpload = upload.single(name);
@@ -37,9 +37,6 @@ module.exports = function setupMembersApp() {
37
37
  // Initializes members specific routes as well as assigns members specific data to the req/res objects
38
38
  // We don't want to add global bodyParser middleware as that interferes with stripe webhook requests on - `/webhooks`.
39
39
 
40
- // Double opt-in subscription handling
41
- membersApp.post('/api/member', membersService.api.middleware.createMemberFromToken);
42
-
43
40
  // Manage newsletter subscription via unsubscribe link
44
41
  membersApp.get('/api/member/newsletters', middleware.getMemberNewsletters);
45
42
  membersApp.put('/api/member/newsletters', bodyParser.json({limit: '50mb'}), middleware.updateMemberNewsletters);
@@ -51,9 +51,7 @@ const ALPHA_FEATURES = [
51
51
  'tipsAndDonations',
52
52
  'importMemberTier',
53
53
  'lexicalIndicators',
54
- // 'adminXOffers',
55
- 'adminXDemo',
56
- 'membersSpamPrevention'
54
+ 'adminXDemo'
57
55
  ];
58
56
 
59
57
  module.exports.GA_KEYS = [...GA_FEATURES];
@@ -82,6 +80,10 @@ module.exports.getAll = () => {
82
80
  return labs;
83
81
  };
84
82
 
83
+ module.exports.getAllFlags = function () {
84
+ return [...GA_FEATURES, ...BETA_FEATURES, ...ALPHA_FEATURES];
85
+ };
86
+
85
87
  /**
86
88
  * @param {string} flag
87
89
  * @returns {boolean}
@@ -91,12 +91,16 @@ if (sentryConfig && !sentryConfig.disabled) {
91
91
  environment = config.get('env');
92
92
  }
93
93
 
94
+ /** @type {import('@sentry/node').NodeOptions} */
94
95
  const sentryInitConfig = {
95
96
  dsn: sentryConfig.dsn,
96
97
  release: 'ghost@' + version,
97
98
  environment: environment,
98
99
  maxValueLength: 1000,
99
- integrations: [],
100
+ includeLocalVariables: true,
101
+ integrations: [
102
+ Sentry.extraErrorDataIntegration()
103
+ ],
100
104
  beforeSend,
101
105
  beforeSendTransaction
102
106
  };