ghost 5.82.12 → 5.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/components/tryghost-adapter-cache-memory-ttl-5.83.0.tgz +0 -0
  2. package/components/tryghost-adapter-cache-redis-5.83.0.tgz +0 -0
  3. package/components/{tryghost-adapter-manager-5.82.12.tgz → tryghost-adapter-manager-5.83.0.tgz} +0 -0
  4. package/components/tryghost-announcement-bar-settings-5.83.0.tgz +0 -0
  5. package/components/{tryghost-api-framework-5.82.12.tgz → tryghost-api-framework-5.83.0.tgz} +0 -0
  6. package/components/tryghost-api-version-compatibility-service-5.83.0.tgz +0 -0
  7. package/components/tryghost-audience-feedback-5.83.0.tgz +0 -0
  8. package/components/tryghost-bookshelf-repository-5.83.0.tgz +0 -0
  9. package/components/tryghost-bootstrap-socket-5.83.0.tgz +0 -0
  10. package/components/tryghost-collections-5.83.0.tgz +0 -0
  11. package/components/tryghost-constants-5.83.0.tgz +0 -0
  12. package/components/tryghost-custom-theme-settings-service-5.83.0.tgz +0 -0
  13. package/components/tryghost-data-generator-5.83.0.tgz +0 -0
  14. package/components/tryghost-domain-events-5.83.0.tgz +0 -0
  15. package/components/tryghost-donations-5.83.0.tgz +0 -0
  16. package/components/tryghost-dynamic-routing-events-5.83.0.tgz +0 -0
  17. package/components/tryghost-email-addresses-5.83.0.tgz +0 -0
  18. package/components/tryghost-email-analytics-provider-mailgun-5.83.0.tgz +0 -0
  19. package/components/tryghost-email-analytics-service-5.83.0.tgz +0 -0
  20. package/components/tryghost-email-content-generator-5.83.0.tgz +0 -0
  21. package/components/tryghost-email-events-5.83.0.tgz +0 -0
  22. package/components/tryghost-email-service-5.83.0.tgz +0 -0
  23. package/components/tryghost-email-suppression-list-5.83.0.tgz +0 -0
  24. package/components/tryghost-express-dynamic-redirects-5.83.0.tgz +0 -0
  25. package/components/tryghost-external-media-inliner-5.83.0.tgz +0 -0
  26. package/components/tryghost-extract-api-key-5.83.0.tgz +0 -0
  27. package/components/tryghost-ghost-5.83.0.tgz +0 -0
  28. package/components/tryghost-html-to-plaintext-5.83.0.tgz +0 -0
  29. package/components/tryghost-i18n-5.83.0.tgz +0 -0
  30. package/components/tryghost-importer-handler-content-files-5.83.0.tgz +0 -0
  31. package/components/tryghost-importer-revue-5.83.0.tgz +0 -0
  32. package/components/tryghost-in-memory-repository-5.83.0.tgz +0 -0
  33. package/components/{tryghost-job-manager-5.82.12.tgz → tryghost-job-manager-5.83.0.tgz} +0 -0
  34. package/components/tryghost-link-redirects-5.83.0.tgz +0 -0
  35. package/components/tryghost-link-replacer-5.83.0.tgz +0 -0
  36. package/components/tryghost-link-tracking-5.83.0.tgz +0 -0
  37. package/components/tryghost-magic-link-5.83.0.tgz +0 -0
  38. package/components/tryghost-mail-events-5.83.0.tgz +0 -0
  39. package/components/tryghost-mailgun-client-5.83.0.tgz +0 -0
  40. package/components/tryghost-member-attribution-5.83.0.tgz +0 -0
  41. package/components/tryghost-member-events-5.83.0.tgz +0 -0
  42. package/components/{tryghost-members-api-5.82.12.tgz → tryghost-members-api-5.83.0.tgz} +0 -0
  43. package/components/tryghost-members-csv-5.83.0.tgz +0 -0
  44. package/components/tryghost-members-events-service-5.83.0.tgz +0 -0
  45. package/components/{tryghost-members-importer-5.82.12.tgz → tryghost-members-importer-5.83.0.tgz} +0 -0
  46. package/components/{tryghost-members-offers-5.82.12.tgz → tryghost-members-offers-5.83.0.tgz} +0 -0
  47. package/components/tryghost-members-payments-5.83.0.tgz +0 -0
  48. package/components/tryghost-members-ssr-5.83.0.tgz +0 -0
  49. package/components/tryghost-members-stripe-service-5.83.0.tgz +0 -0
  50. package/components/tryghost-mentions-email-report-5.83.0.tgz +0 -0
  51. package/components/tryghost-milestones-5.83.0.tgz +0 -0
  52. package/components/tryghost-minifier-5.83.0.tgz +0 -0
  53. package/components/tryghost-model-to-domain-event-interceptor-5.83.0.tgz +0 -0
  54. package/components/tryghost-mw-api-version-mismatch-5.83.0.tgz +0 -0
  55. package/components/tryghost-mw-cache-control-5.83.0.tgz +0 -0
  56. package/components/tryghost-mw-error-handler-5.83.0.tgz +0 -0
  57. package/components/tryghost-mw-session-from-token-5.83.0.tgz +0 -0
  58. package/components/tryghost-mw-update-user-last-seen-5.83.0.tgz +0 -0
  59. package/components/tryghost-mw-version-match-5.83.0.tgz +0 -0
  60. package/components/tryghost-mw-vhost-5.83.0.tgz +0 -0
  61. package/components/tryghost-nql-filter-expansions-5.83.0.tgz +0 -0
  62. package/components/tryghost-oembed-service-5.83.0.tgz +0 -0
  63. package/components/tryghost-package-json-5.83.0.tgz +0 -0
  64. package/components/tryghost-post-events-5.83.0.tgz +0 -0
  65. package/components/tryghost-post-revisions-5.83.0.tgz +0 -0
  66. package/components/tryghost-posts-service-5.83.0.tgz +0 -0
  67. package/components/tryghost-recommendations-5.83.0.tgz +0 -0
  68. package/components/tryghost-referrers-5.83.0.tgz +0 -0
  69. package/components/{tryghost-security-5.82.12.tgz → tryghost-security-5.83.0.tgz} +0 -0
  70. package/components/tryghost-session-service-5.83.0.tgz +0 -0
  71. package/components/tryghost-settings-path-manager-5.83.0.tgz +0 -0
  72. package/components/tryghost-slack-notifications-5.83.0.tgz +0 -0
  73. package/components/{tryghost-staff-service-5.82.12.tgz → tryghost-staff-service-5.83.0.tgz} +0 -0
  74. package/components/tryghost-stats-service-5.83.0.tgz +0 -0
  75. package/components/tryghost-tiers-5.83.0.tgz +0 -0
  76. package/components/tryghost-update-check-service-5.83.0.tgz +0 -0
  77. package/components/tryghost-verification-trigger-5.83.0.tgz +0 -0
  78. package/components/{tryghost-version-notifications-data-service-5.82.12.tgz → tryghost-version-notifications-data-service-5.83.0.tgz} +0 -0
  79. package/components/tryghost-webmentions-5.83.0.tgz +0 -0
  80. package/core/built/admin/assets/admin-x-demo/admin-x-demo.js +1 -1
  81. package/core/built/admin/assets/admin-x-demo/{index-672397d7.mjs → index-ca021c9d.mjs} +200 -198
  82. package/core/built/admin/assets/admin-x-demo/{modals-e68b00c5.mjs → modals-0eb36d36.mjs} +2 -2
  83. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-e6ecff28.mjs → CodeEditorView-d8e0ec68.mjs} +2 -2
  84. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +2 -2
  85. package/core/built/admin/assets/admin-x-settings/{index-3a124f37.mjs → index-7b657428.mjs} +958 -940
  86. package/core/built/admin/assets/admin-x-settings/{index-ee4ab0db.mjs → index-a83dd4fa.mjs} +2 -2
  87. package/core/built/admin/assets/admin-x-settings/{modals-8b47269b.mjs → modals-1155e24d.mjs} +3059 -3023
  88. package/core/built/admin/assets/{chunk.300.07bd40373843db34827c.js → chunk.509.d6d53e741bc279357eaf.js} +1904 -1880
  89. package/core/built/admin/assets/{chunk.524.d0e760b5fbf40755f861.js → chunk.524.8204e0b9f49cec9eed57.js} +5 -5
  90. package/core/built/admin/assets/chunk.582.19e6edf39eacb732f2ab.js +37 -0
  91. package/core/built/admin/assets/{ghost-6f45467fa855b0c1da51c5f6c31f4744.js → ghost-d8a21c3ed32505399e33675d8cb7d044.js} +69 -69
  92. package/core/built/admin/assets/{ghost-67652794f5902e84ccb0c67948563c1e.css → ghost-da77ec7395d5e861b94d529e8157ed3f.css} +1 -1
  93. package/core/built/admin/assets/{ghost-dark-e0cbaf72cee27f9de1eff5aea1152c46.css → ghost-dark-e5e7c4c3fcaa12ca01df563d1bcbac20.css} +1 -1
  94. package/core/built/admin/assets/koenig-lexical/index.css +1 -1
  95. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +14554 -14118
  96. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +128 -128
  97. package/core/built/admin/index.html +5 -5
  98. package/core/server/data/migrations/versions/5.83/2024-05-28-02-20-55-add-show-subhead-column-newsletters.js +9 -0
  99. package/core/server/data/schema/schema.js +1 -0
  100. package/core/server/models/newsletter.js +2 -1
  101. package/core/server/services/members/middleware.js +5 -1
  102. package/core/server/web/api/middleware/upload.js +32 -3
  103. package/core/shared/labs.js +4 -1
  104. package/package.json +169 -170
  105. package/yarn.lock +325 -340
  106. package/components/tryghost-adapter-cache-memory-ttl-5.82.12.tgz +0 -0
  107. package/components/tryghost-adapter-cache-redis-5.82.12.tgz +0 -0
  108. package/components/tryghost-announcement-bar-settings-5.82.12.tgz +0 -0
  109. package/components/tryghost-api-version-compatibility-service-5.82.12.tgz +0 -0
  110. package/components/tryghost-audience-feedback-5.82.12.tgz +0 -0
  111. package/components/tryghost-bookshelf-repository-5.82.12.tgz +0 -0
  112. package/components/tryghost-bootstrap-socket-5.82.12.tgz +0 -0
  113. package/components/tryghost-collections-5.82.12.tgz +0 -0
  114. package/components/tryghost-constants-5.82.12.tgz +0 -0
  115. package/components/tryghost-custom-theme-settings-service-5.82.12.tgz +0 -0
  116. package/components/tryghost-data-generator-5.82.12.tgz +0 -0
  117. package/components/tryghost-domain-events-5.82.12.tgz +0 -0
  118. package/components/tryghost-donations-5.82.12.tgz +0 -0
  119. package/components/tryghost-dynamic-routing-events-5.82.12.tgz +0 -0
  120. package/components/tryghost-email-addresses-5.82.12.tgz +0 -0
  121. package/components/tryghost-email-analytics-provider-mailgun-5.82.12.tgz +0 -0
  122. package/components/tryghost-email-analytics-service-5.82.12.tgz +0 -0
  123. package/components/tryghost-email-content-generator-5.82.12.tgz +0 -0
  124. package/components/tryghost-email-events-5.82.12.tgz +0 -0
  125. package/components/tryghost-email-service-5.82.12.tgz +0 -0
  126. package/components/tryghost-email-suppression-list-5.82.12.tgz +0 -0
  127. package/components/tryghost-express-dynamic-redirects-5.82.12.tgz +0 -0
  128. package/components/tryghost-external-media-inliner-5.82.12.tgz +0 -0
  129. package/components/tryghost-extract-api-key-5.82.12.tgz +0 -0
  130. package/components/tryghost-ghost-5.82.12.tgz +0 -0
  131. package/components/tryghost-html-to-plaintext-5.82.12.tgz +0 -0
  132. package/components/tryghost-i18n-5.82.12.tgz +0 -0
  133. package/components/tryghost-importer-handler-content-files-5.82.12.tgz +0 -0
  134. package/components/tryghost-importer-revue-5.82.12.tgz +0 -0
  135. package/components/tryghost-in-memory-repository-5.82.12.tgz +0 -0
  136. package/components/tryghost-link-redirects-5.82.12.tgz +0 -0
  137. package/components/tryghost-link-replacer-5.82.12.tgz +0 -0
  138. package/components/tryghost-link-tracking-5.82.12.tgz +0 -0
  139. package/components/tryghost-magic-link-5.82.12.tgz +0 -0
  140. package/components/tryghost-mail-events-5.82.12.tgz +0 -0
  141. package/components/tryghost-mailgun-client-5.82.12.tgz +0 -0
  142. package/components/tryghost-member-attribution-5.82.12.tgz +0 -0
  143. package/components/tryghost-member-events-5.82.12.tgz +0 -0
  144. package/components/tryghost-members-csv-5.82.12.tgz +0 -0
  145. package/components/tryghost-members-events-service-5.82.12.tgz +0 -0
  146. package/components/tryghost-members-payments-5.82.12.tgz +0 -0
  147. package/components/tryghost-members-ssr-5.82.12.tgz +0 -0
  148. package/components/tryghost-members-stripe-service-5.82.12.tgz +0 -0
  149. package/components/tryghost-mentions-email-report-5.82.12.tgz +0 -0
  150. package/components/tryghost-milestones-5.82.12.tgz +0 -0
  151. package/components/tryghost-minifier-5.82.12.tgz +0 -0
  152. package/components/tryghost-model-to-domain-event-interceptor-5.82.12.tgz +0 -0
  153. package/components/tryghost-mw-api-version-mismatch-5.82.12.tgz +0 -0
  154. package/components/tryghost-mw-cache-control-5.82.12.tgz +0 -0
  155. package/components/tryghost-mw-error-handler-5.82.12.tgz +0 -0
  156. package/components/tryghost-mw-session-from-token-5.82.12.tgz +0 -0
  157. package/components/tryghost-mw-update-user-last-seen-5.82.12.tgz +0 -0
  158. package/components/tryghost-mw-version-match-5.82.12.tgz +0 -0
  159. package/components/tryghost-mw-vhost-5.82.12.tgz +0 -0
  160. package/components/tryghost-nql-filter-expansions-5.82.12.tgz +0 -0
  161. package/components/tryghost-oembed-service-5.82.12.tgz +0 -0
  162. package/components/tryghost-package-json-5.82.12.tgz +0 -0
  163. package/components/tryghost-post-events-5.82.12.tgz +0 -0
  164. package/components/tryghost-post-revisions-5.82.12.tgz +0 -0
  165. package/components/tryghost-posts-service-5.82.12.tgz +0 -0
  166. package/components/tryghost-recommendations-5.82.12.tgz +0 -0
  167. package/components/tryghost-referrers-5.82.12.tgz +0 -0
  168. package/components/tryghost-session-service-5.82.12.tgz +0 -0
  169. package/components/tryghost-settings-path-manager-5.82.12.tgz +0 -0
  170. package/components/tryghost-slack-notifications-5.82.12.tgz +0 -0
  171. package/components/tryghost-stats-service-5.82.12.tgz +0 -0
  172. package/components/tryghost-tiers-5.82.12.tgz +0 -0
  173. package/components/tryghost-update-check-service-5.82.12.tgz +0 -0
  174. package/components/tryghost-verification-trigger-5.82.12.tgz +0 -0
  175. package/components/tryghost-webmentions-5.82.12.tgz +0 -0
  176. package/core/built/admin/assets/chunk.582.b5b5252c47ef49f8f87a.js +0 -11
  177. /package/core/built/admin/assets/{chunk.300.07bd40373843db34827c.js.LICENSE.txt → chunk.509.d6d53e741bc279357eaf.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%223eace8808c%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%226b30648e0d%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%22d91284430d%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%22c4fe53c34a%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.83%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%2206e7453adf%22%2C%22adminXDemoFilename%22%3A%22admin-x-demo.js%22%2C%22adminXDemoHash%22%3A%222de5d3a326%22%2C%22adminXSettingsFilename%22%3A%22admin-x-settings.js%22%2C%22adminXSettingsHash%22%3A%22c56b800c39%22%2C%22adminXActivitypubFilename%22%3A%22admin-x-activitypub.js%22%2C%22adminXActivitypubHash%22%3A%22c4fe53c34a%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-67652794f5902e84ccb0c67948563c1e.css" title="light">
40
+ <link integrity="" rel="stylesheet" href="assets/ghost-da77ec7395d5e861b94d529e8157ed3f.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-0d51bbe51e0393cca143d7b52d073d8a.js"></script>
60
- <script src="assets/chunk.300.07bd40373843db34827c.js"></script>
61
- <script src="assets/chunk.524.d0e760b5fbf40755f861.js"></script>
62
- <script src="assets/ghost-6f45467fa855b0c1da51c5f6c31f4744.js"></script>
60
+ <script src="assets/chunk.509.d6d53e741bc279357eaf.js"></script>
61
+ <script src="assets/chunk.524.8204e0b9f49cec9eed57.js"></script>
62
+ <script src="assets/ghost-d8a21c3ed32505399e33675d8cb7d044.js"></script>
63
63
  </body>
64
64
  </html>
@@ -0,0 +1,9 @@
1
+ // For information on writing migrations, see https://www.notion.so/ghost/Database-migrations-eb5b78c435d741d2b34a582d57c24253
2
+
3
+ const {createAddColumnMigration} = require('../../utils');
4
+
5
+ module.exports = createAddColumnMigration('newsletters', 'show_subhead', {
6
+ type: 'boolean',
7
+ nullable: false,
8
+ defaultTo: false
9
+ });
@@ -30,6 +30,7 @@ module.exports = {
30
30
  header_image: {type: 'string', maxlength: 2000, nullable: true},
31
31
  show_header_icon: {type: 'boolean', nullable: false, defaultTo: true},
32
32
  show_header_title: {type: 'boolean', nullable: false, defaultTo: true},
33
+ show_subhead: {type: 'boolean', nullable: false, defaultTo: false},
33
34
  title_font_category: {type: 'string', maxlength: 191, nullable: false, defaultTo: 'sans_serif', validations: {isIn: [['serif', 'sans_serif']]}},
34
35
  title_alignment: {type: 'string', maxlength: 191, nullable: false, defaultTo: 'center', validations: {isIn: [['center', 'left']]}},
35
36
  show_feature_image: {type: 'boolean', nullable: false, defaultTo: true},
@@ -29,7 +29,8 @@ const Newsletter = ghostBookshelf.Model.extend({
29
29
  background_color: 'light',
30
30
  border_color: null,
31
31
  title_color: null,
32
- feedback_enabled: false
32
+ feedback_enabled: false,
33
+ show_subhead: false
33
34
  };
34
35
  },
35
36
 
@@ -47,12 +47,16 @@ const setAccessCookies = function setAccessCookies(member = undefined, res, free
47
47
  if (!hmacSecret) {
48
48
  return;
49
49
  }
50
+ const hmacSecretBuffer = Buffer.from(hmacSecret, 'base64');
51
+ if (hmacSecretBuffer.length === 0) {
52
+ return;
53
+ }
50
54
  const activeSubscription = member.subscriptions?.find(sub => sub.status === 'active');
51
55
 
52
56
  const cookieTimestamp = Math.floor(Date.now() / 1000); // to mitigate a cookie replay attack
53
57
  const memberTier = activeSubscription && activeSubscription.tier.id || freeTier.id;
54
58
  const memberTierAndTimestamp = `${memberTier}:${cookieTimestamp}`;
55
- const memberTierHmac = crypto.createHmac('sha256', hmacSecret).update(memberTierAndTimestamp).digest('hex');
59
+ const memberTierHmac = crypto.createHmac('sha256', hmacSecretBuffer).update(memberTierAndTimestamp).digest('hex');
56
60
 
57
61
  const maxAge = 3600;
58
62
  const accessCookie = `ghost-access=${memberTierAndTimestamp}; Max-Age=${maxAge}; Path=/; HttpOnly; SameSite=Strict;`;
@@ -6,6 +6,7 @@ const errors = require('@tryghost/errors');
6
6
  const config = require('../../../../shared/config');
7
7
  const tpl = require('@tryghost/tpl');
8
8
  const logging = require('@tryghost/logging');
9
+ const {JSDOM} = require('jsdom');
9
10
 
10
11
  const messages = {
11
12
  db: {
@@ -144,14 +145,33 @@ const checkFileExists = (fileData) => {
144
145
 
145
146
  const checkFileIsValid = (fileData, types, extensions) => {
146
147
  const type = fileData.mimetype;
147
-
148
148
  if (types.includes(type) && extensions.includes(fileData.ext)) {
149
149
  return true;
150
150
  }
151
-
152
151
  return false;
153
152
  };
154
153
 
154
+ /**
155
+ *
156
+ * @param {String} filepath
157
+ * @returns {Boolean}
158
+ *
159
+ * Checks for the presence of <script> tags or 'on' attributes in an SVG file
160
+ *
161
+ */
162
+ const isSvgSafe = (filepath) => {
163
+ const fileContent = fs.readFileSync(filepath, 'utf8');
164
+ const document = new JSDOM(fileContent).window.document;
165
+ document.body.innerHTML = fileContent;
166
+ const svgEl = document.body.firstElementChild;
167
+
168
+ const attributes = Array.from(svgEl.attributes).map(({name}) => name);
169
+ const hasScriptAttr = !!attributes.find(attr => attr.startsWith('on'));
170
+ const scripts = svgEl.getElementsByTagName('script');
171
+
172
+ return scripts.length === 0 && !hasScriptAttr ? true : false;
173
+ };
174
+
155
175
  /**
156
176
  *
157
177
  * @param {Object} options
@@ -190,6 +210,14 @@ const validation = function ({type}) {
190
210
  }));
191
211
  }
192
212
 
213
+ if (req.file.ext === '.svg') {
214
+ if (!isSvgSafe(req.file.path)) {
215
+ return next(new errors.UnsupportedMediaTypeError({
216
+ message: 'SVG files cannot contain <script> tags or "on" attributes.'
217
+ }));
218
+ }
219
+ }
220
+
193
221
  next();
194
222
  };
195
223
  };
@@ -261,5 +289,6 @@ module.exports = {
261
289
  // Exports for testing only
262
290
  module.exports._test = {
263
291
  checkFileExists,
264
- checkFileIsValid
292
+ checkFileIsValid,
293
+ isSvgSafe
265
294
  };
@@ -51,7 +51,10 @@ const ALPHA_FEATURES = [
51
51
  'tipsAndDonations',
52
52
  'importMemberTier',
53
53
  'lexicalIndicators',
54
- 'adminXDemo'
54
+ 'adminXDemo',
55
+ 'editorSubtitle',
56
+ 'newsletterSubtitle',
57
+ 'internalLinkingAtLinks'
55
58
  ];
56
59
 
57
60
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "5.82.12",
3
+ "version": "5.83.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -60,107 +60,107 @@
60
60
  "@extractus/oembed-extractor": "3.2.1",
61
61
  "@sentry/node": "7.116.0",
62
62
  "@tryghost/adapter-base-cache": "0.1.12",
63
- "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.82.12.tgz",
64
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.82.12.tgz",
63
+ "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.83.0.tgz",
64
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.83.0.tgz",
65
65
  "@tryghost/admin-api-schema": "4.5.5",
66
- "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.82.12.tgz",
67
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.82.12.tgz",
68
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.82.12.tgz",
69
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.82.12.tgz",
66
+ "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.83.0.tgz",
67
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.83.0.tgz",
68
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.83.0.tgz",
69
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.83.0.tgz",
70
70
  "@tryghost/bookshelf-plugins": "0.6.17",
71
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.82.12.tgz",
72
- "@tryghost/collections": "file:components/tryghost-collections-5.82.12.tgz",
71
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.83.0.tgz",
72
+ "@tryghost/collections": "file:components/tryghost-collections-5.83.0.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.12.tgz",
76
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.82.12.tgz",
77
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.82.12.tgz",
78
- "@tryghost/database-info": "0.3.23",
79
- "@tryghost/debug": "0.1.29",
80
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.82.12.tgz",
81
- "@tryghost/donations": "file:components/tryghost-donations-5.82.12.tgz",
82
- "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.82.12.tgz",
83
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.82.12.tgz",
84
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.82.12.tgz",
85
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.82.12.tgz",
86
- "@tryghost/email-mock-receiver": "0.3.5",
87
- "@tryghost/email-service": "file:components/tryghost-email-service-5.82.12.tgz",
88
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.82.12.tgz",
75
+ "@tryghost/constants": "file:components/tryghost-constants-5.83.0.tgz",
76
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.83.0.tgz",
77
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.83.0.tgz",
78
+ "@tryghost/database-info": "0.3.24",
79
+ "@tryghost/debug": "0.1.30",
80
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.83.0.tgz",
81
+ "@tryghost/donations": "file:components/tryghost-donations-5.83.0.tgz",
82
+ "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.83.0.tgz",
83
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.83.0.tgz",
84
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.83.0.tgz",
85
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.83.0.tgz",
86
+ "@tryghost/email-mock-receiver": "0.3.6",
87
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.83.0.tgz",
88
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.83.0.tgz",
89
89
  "@tryghost/errors": "1.3.2",
90
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.82.12.tgz",
91
- "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.82.12.tgz",
92
- "@tryghost/ghost": "file:components/tryghost-ghost-5.82.12.tgz",
90
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.83.0.tgz",
91
+ "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.83.0.tgz",
92
+ "@tryghost/ghost": "file:components/tryghost-ghost-5.83.0.tgz",
93
93
  "@tryghost/helpers": "1.1.90",
94
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.82.12.tgz",
95
- "@tryghost/http-cache-utils": "0.1.14",
96
- "@tryghost/i18n": "file:components/tryghost-i18n-5.82.12.tgz",
94
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.83.0.tgz",
95
+ "@tryghost/http-cache-utils": "0.1.15",
96
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.83.0.tgz",
97
97
  "@tryghost/image-transform": "1.3.0",
98
- "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.82.12.tgz",
99
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.82.12.tgz",
100
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.82.12.tgz",
98
+ "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.83.0.tgz",
99
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.83.0.tgz",
100
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.83.0.tgz",
101
101
  "@tryghost/kg-card-factory": "5.0.4",
102
102
  "@tryghost/kg-converters": "1.0.4",
103
103
  "@tryghost/kg-default-atoms": "5.0.3",
104
104
  "@tryghost/kg-default-cards": "10.0.5",
105
- "@tryghost/kg-default-nodes": "1.0.16",
106
- "@tryghost/kg-html-to-lexical": "1.0.17",
107
- "@tryghost/kg-lexical-html-renderer": "1.0.16",
105
+ "@tryghost/kg-default-nodes": "1.1.0",
106
+ "@tryghost/kg-html-to-lexical": "1.1.1",
107
+ "@tryghost/kg-lexical-html-renderer": "1.1.1",
108
108
  "@tryghost/kg-mobiledoc-html-renderer": "7.0.4",
109
109
  "@tryghost/limit-service": "1.2.14",
110
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.82.12.tgz",
111
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.82.12.tgz",
112
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.82.12.tgz",
113
- "@tryghost/logging": "2.4.14",
114
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.82.12.tgz",
115
- "@tryghost/mail-events": "file:components/tryghost-mail-events-5.82.12.tgz",
116
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.82.12.tgz",
117
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.82.12.tgz",
118
- "@tryghost/member-events": "file:components/tryghost-member-events-5.82.12.tgz",
119
- "@tryghost/members-api": "file:components/tryghost-members-api-5.82.12.tgz",
120
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.82.12.tgz",
121
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.82.12.tgz",
122
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.82.12.tgz",
123
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.82.12.tgz",
124
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.82.12.tgz",
125
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.82.12.tgz",
126
- "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.82.12.tgz",
127
- "@tryghost/metrics": "1.0.30",
128
- "@tryghost/milestones": "file:components/tryghost-milestones-5.82.12.tgz",
129
- "@tryghost/minifier": "file:components/tryghost-minifier-5.82.12.tgz",
130
- "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.82.12.tgz",
131
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.82.12.tgz",
132
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.82.12.tgz",
133
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.82.12.tgz",
134
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.82.12.tgz",
135
- "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.82.12.tgz",
136
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.82.12.tgz",
137
- "@tryghost/nodemailer": "0.3.41",
110
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.83.0.tgz",
111
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.83.0.tgz",
112
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.83.0.tgz",
113
+ "@tryghost/logging": "2.4.15",
114
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.83.0.tgz",
115
+ "@tryghost/mail-events": "file:components/tryghost-mail-events-5.83.0.tgz",
116
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.83.0.tgz",
117
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.83.0.tgz",
118
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.83.0.tgz",
119
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.83.0.tgz",
120
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.83.0.tgz",
121
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.83.0.tgz",
122
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.83.0.tgz",
123
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.83.0.tgz",
124
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.83.0.tgz",
125
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.83.0.tgz",
126
+ "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.83.0.tgz",
127
+ "@tryghost/metrics": "1.0.31",
128
+ "@tryghost/milestones": "file:components/tryghost-milestones-5.83.0.tgz",
129
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.83.0.tgz",
130
+ "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.83.0.tgz",
131
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.83.0.tgz",
132
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.83.0.tgz",
133
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.83.0.tgz",
134
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.83.0.tgz",
135
+ "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.83.0.tgz",
136
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.83.0.tgz",
137
+ "@tryghost/nodemailer": "0.3.42",
138
138
  "@tryghost/nql": "0.12.3",
139
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.82.12.tgz",
140
- "@tryghost/package-json": "file:components/tryghost-package-json-5.82.12.tgz",
141
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.82.12.tgz",
142
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.82.12.tgz",
143
- "@tryghost/pretty-cli": "1.2.41",
144
- "@tryghost/promise": "0.3.9",
145
- "@tryghost/recommendations": "file:components/tryghost-recommendations-5.82.12.tgz",
146
- "@tryghost/request": "1.0.4",
147
- "@tryghost/security": "file:components/tryghost-security-5.82.12.tgz",
148
- "@tryghost/session-service": "file:components/tryghost-session-service-5.82.12.tgz",
149
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.82.12.tgz",
150
- "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.82.12.tgz",
139
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.83.0.tgz",
140
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.83.0.tgz",
141
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.83.0.tgz",
142
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.83.0.tgz",
143
+ "@tryghost/pretty-cli": "1.2.42",
144
+ "@tryghost/promise": "0.3.10",
145
+ "@tryghost/recommendations": "file:components/tryghost-recommendations-5.83.0.tgz",
146
+ "@tryghost/request": "1.0.5",
147
+ "@tryghost/security": "file:components/tryghost-security-5.83.0.tgz",
148
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.83.0.tgz",
149
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.83.0.tgz",
150
+ "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.83.0.tgz",
151
151
  "@tryghost/social-urls": "0.1.43",
152
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.82.12.tgz",
153
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.82.12.tgz",
152
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.83.0.tgz",
153
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.83.0.tgz",
154
154
  "@tryghost/string": "0.2.12",
155
- "@tryghost/tiers": "file:components/tryghost-tiers-5.82.12.tgz",
156
- "@tryghost/tpl": "0.1.29",
157
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.82.12.tgz",
155
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.83.0.tgz",
156
+ "@tryghost/tpl": "0.1.30",
157
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.83.0.tgz",
158
158
  "@tryghost/url-utils": "4.4.8",
159
- "@tryghost/validator": "0.2.10",
160
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.82.12.tgz",
161
- "@tryghost/version": "0.1.27",
162
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.82.12.tgz",
163
- "@tryghost/zip": "1.1.42",
159
+ "@tryghost/validator": "0.2.11",
160
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.83.0.tgz",
161
+ "@tryghost/version": "0.1.28",
162
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.83.0.tgz",
163
+ "@tryghost/zip": "1.1.43",
164
164
  "amperize": "0.6.1",
165
165
  "analytics-node": "6.2.0",
166
166
  "body-parser": "1.20.2",
@@ -194,7 +194,6 @@
194
194
  "intl": "1.2.5",
195
195
  "intl-messageformat": "5.4.3",
196
196
  "js-yaml": "4.1.0",
197
- "jsdom": "22.1.0",
198
197
  "json-stable-stringify": "1.1.1",
199
198
  "jsonpath": "1.1.1",
200
199
  "jsonwebtoken": "8.5.1",
@@ -208,7 +207,7 @@
208
207
  "moment": "2.24.0",
209
208
  "moment-timezone": "0.5.23",
210
209
  "multer": "1.4.4",
211
- "mysql2": "3.9.7",
210
+ "mysql2": "3.10.0",
212
211
  "nconf": "0.12.1",
213
212
  "node-jose": "2.2.0",
214
213
  "path-match": "1.2.4",
@@ -226,14 +225,14 @@
226
225
  },
227
226
  "optionalDependencies": {
228
227
  "@sentry/profiling-node": "7.116.0",
229
- "@tryghost/html-to-mobiledoc": "3.0.7",
228
+ "@tryghost/html-to-mobiledoc": "3.1.0",
230
229
  "sqlite3": "5.1.7"
231
230
  },
232
231
  "devDependencies": {
233
232
  "@actions/core": "1.10.1",
234
233
  "@playwright/test": "1.38.1",
235
- "@tryghost/express-test": "0.13.11",
236
- "@tryghost/webhook-mock-receiver": "0.2.11",
234
+ "@tryghost/express-test": "0.13.12",
235
+ "@tryghost/webhook-mock-receiver": "0.2.12",
237
236
  "@types/common-tags": "1.8.4",
238
237
  "c8": "8.0.1",
239
238
  "cli-progress": "3.12.0",
@@ -261,89 +260,89 @@
261
260
  },
262
261
  "resolutions": {
263
262
  "@tryghost/errors": "1.3.2",
264
- "@tryghost/logging": "2.4.14",
263
+ "@tryghost/logging": "2.4.15",
265
264
  "jackspeak": "2.1.1",
266
265
  "moment": "2.24.0",
267
266
  "moment-timezone": "0.5.23",
268
- "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.82.12.tgz",
269
- "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.82.12.tgz",
270
- "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.82.12.tgz",
271
- "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.82.12.tgz",
272
- "@tryghost/api-framework": "file:components/tryghost-api-framework-5.82.12.tgz",
273
- "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.82.12.tgz",
274
- "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.82.12.tgz",
275
- "@tryghost/bookshelf-repository": "file:components/tryghost-bookshelf-repository-5.82.12.tgz",
276
- "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.82.12.tgz",
277
- "@tryghost/collections": "file:components/tryghost-collections-5.82.12.tgz",
278
- "@tryghost/constants": "file:components/tryghost-constants-5.82.12.tgz",
279
- "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.82.12.tgz",
280
- "@tryghost/data-generator": "file:components/tryghost-data-generator-5.82.12.tgz",
281
- "@tryghost/domain-events": "file:components/tryghost-domain-events-5.82.12.tgz",
282
- "@tryghost/donations": "file:components/tryghost-donations-5.82.12.tgz",
283
- "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.82.12.tgz",
284
- "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.82.12.tgz",
285
- "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.82.12.tgz",
286
- "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.82.12.tgz",
287
- "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.82.12.tgz",
288
- "@tryghost/email-events": "file:components/tryghost-email-events-5.82.12.tgz",
289
- "@tryghost/email-service": "file:components/tryghost-email-service-5.82.12.tgz",
290
- "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.82.12.tgz",
291
- "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.82.12.tgz",
292
- "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.82.12.tgz",
293
- "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.82.12.tgz",
294
- "@tryghost/ghost": "file:components/tryghost-ghost-5.82.12.tgz",
295
- "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.82.12.tgz",
296
- "@tryghost/i18n": "file:components/tryghost-i18n-5.82.12.tgz",
297
- "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.82.12.tgz",
298
- "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.82.12.tgz",
299
- "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.82.12.tgz",
300
- "@tryghost/job-manager": "file:components/tryghost-job-manager-5.82.12.tgz",
301
- "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.82.12.tgz",
302
- "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.82.12.tgz",
303
- "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.82.12.tgz",
304
- "@tryghost/magic-link": "file:components/tryghost-magic-link-5.82.12.tgz",
305
- "@tryghost/mail-events": "file:components/tryghost-mail-events-5.82.12.tgz",
306
- "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.82.12.tgz",
307
- "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.82.12.tgz",
308
- "@tryghost/member-events": "file:components/tryghost-member-events-5.82.12.tgz",
309
- "@tryghost/members-api": "file:components/tryghost-members-api-5.82.12.tgz",
310
- "@tryghost/members-csv": "file:components/tryghost-members-csv-5.82.12.tgz",
311
- "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.82.12.tgz",
312
- "@tryghost/members-importer": "file:components/tryghost-members-importer-5.82.12.tgz",
313
- "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.82.12.tgz",
314
- "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.82.12.tgz",
315
- "@tryghost/milestones": "file:components/tryghost-milestones-5.82.12.tgz",
316
- "@tryghost/minifier": "file:components/tryghost-minifier-5.82.12.tgz",
317
- "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.82.12.tgz",
318
- "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.82.12.tgz",
319
- "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.82.12.tgz",
320
- "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.82.12.tgz",
321
- "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.82.12.tgz",
322
- "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.82.12.tgz",
323
- "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.82.12.tgz",
324
- "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.82.12.tgz",
325
- "@tryghost/nql-filter-expansions": "file:components/tryghost-nql-filter-expansions-5.82.12.tgz",
326
- "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.82.12.tgz",
327
- "@tryghost/members-offers": "file:components/tryghost-members-offers-5.82.12.tgz",
328
- "@tryghost/package-json": "file:components/tryghost-package-json-5.82.12.tgz",
329
- "@tryghost/members-payments": "file:components/tryghost-members-payments-5.82.12.tgz",
330
- "@tryghost/post-events": "file:components/tryghost-post-events-5.82.12.tgz",
331
- "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.82.12.tgz",
332
- "@tryghost/posts-service": "file:components/tryghost-posts-service-5.82.12.tgz",
333
- "@tryghost/recommendations": "file:components/tryghost-recommendations-5.82.12.tgz",
334
- "@tryghost/referrers": "file:components/tryghost-referrers-5.82.12.tgz",
335
- "@tryghost/security": "file:components/tryghost-security-5.82.12.tgz",
336
- "@tryghost/session-service": "file:components/tryghost-session-service-5.82.12.tgz",
337
- "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.82.12.tgz",
338
- "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.82.12.tgz",
339
- "@tryghost/staff-service": "file:components/tryghost-staff-service-5.82.12.tgz",
340
- "@tryghost/stats-service": "file:components/tryghost-stats-service-5.82.12.tgz",
341
- "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.82.12.tgz",
342
- "@tryghost/tiers": "file:components/tryghost-tiers-5.82.12.tgz",
343
- "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.82.12.tgz",
344
- "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.82.12.tgz",
345
- "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.82.12.tgz",
346
- "@tryghost/webmentions": "file:components/tryghost-webmentions-5.82.12.tgz"
267
+ "@tryghost/adapter-cache-memory-ttl": "file:components/tryghost-adapter-cache-memory-ttl-5.83.0.tgz",
268
+ "@tryghost/adapter-cache-redis": "file:components/tryghost-adapter-cache-redis-5.83.0.tgz",
269
+ "@tryghost/adapter-manager": "file:components/tryghost-adapter-manager-5.83.0.tgz",
270
+ "@tryghost/announcement-bar-settings": "file:components/tryghost-announcement-bar-settings-5.83.0.tgz",
271
+ "@tryghost/api-framework": "file:components/tryghost-api-framework-5.83.0.tgz",
272
+ "@tryghost/api-version-compatibility-service": "file:components/tryghost-api-version-compatibility-service-5.83.0.tgz",
273
+ "@tryghost/audience-feedback": "file:components/tryghost-audience-feedback-5.83.0.tgz",
274
+ "@tryghost/bookshelf-repository": "file:components/tryghost-bookshelf-repository-5.83.0.tgz",
275
+ "@tryghost/bootstrap-socket": "file:components/tryghost-bootstrap-socket-5.83.0.tgz",
276
+ "@tryghost/collections": "file:components/tryghost-collections-5.83.0.tgz",
277
+ "@tryghost/constants": "file:components/tryghost-constants-5.83.0.tgz",
278
+ "@tryghost/custom-theme-settings-service": "file:components/tryghost-custom-theme-settings-service-5.83.0.tgz",
279
+ "@tryghost/data-generator": "file:components/tryghost-data-generator-5.83.0.tgz",
280
+ "@tryghost/domain-events": "file:components/tryghost-domain-events-5.83.0.tgz",
281
+ "@tryghost/donations": "file:components/tryghost-donations-5.83.0.tgz",
282
+ "@tryghost/dynamic-routing-events": "file:components/tryghost-dynamic-routing-events-5.83.0.tgz",
283
+ "@tryghost/email-addresses": "file:components/tryghost-email-addresses-5.83.0.tgz",
284
+ "@tryghost/email-analytics-provider-mailgun": "file:components/tryghost-email-analytics-provider-mailgun-5.83.0.tgz",
285
+ "@tryghost/email-analytics-service": "file:components/tryghost-email-analytics-service-5.83.0.tgz",
286
+ "@tryghost/email-content-generator": "file:components/tryghost-email-content-generator-5.83.0.tgz",
287
+ "@tryghost/email-events": "file:components/tryghost-email-events-5.83.0.tgz",
288
+ "@tryghost/email-service": "file:components/tryghost-email-service-5.83.0.tgz",
289
+ "@tryghost/email-suppression-list": "file:components/tryghost-email-suppression-list-5.83.0.tgz",
290
+ "@tryghost/express-dynamic-redirects": "file:components/tryghost-express-dynamic-redirects-5.83.0.tgz",
291
+ "@tryghost/external-media-inliner": "file:components/tryghost-external-media-inliner-5.83.0.tgz",
292
+ "@tryghost/extract-api-key": "file:components/tryghost-extract-api-key-5.83.0.tgz",
293
+ "@tryghost/ghost": "file:components/tryghost-ghost-5.83.0.tgz",
294
+ "@tryghost/html-to-plaintext": "file:components/tryghost-html-to-plaintext-5.83.0.tgz",
295
+ "@tryghost/i18n": "file:components/tryghost-i18n-5.83.0.tgz",
296
+ "@tryghost/importer-handler-content-files": "file:components/tryghost-importer-handler-content-files-5.83.0.tgz",
297
+ "@tryghost/importer-revue": "file:components/tryghost-importer-revue-5.83.0.tgz",
298
+ "@tryghost/in-memory-repository": "file:components/tryghost-in-memory-repository-5.83.0.tgz",
299
+ "@tryghost/job-manager": "file:components/tryghost-job-manager-5.83.0.tgz",
300
+ "@tryghost/link-redirects": "file:components/tryghost-link-redirects-5.83.0.tgz",
301
+ "@tryghost/link-replacer": "file:components/tryghost-link-replacer-5.83.0.tgz",
302
+ "@tryghost/link-tracking": "file:components/tryghost-link-tracking-5.83.0.tgz",
303
+ "@tryghost/magic-link": "file:components/tryghost-magic-link-5.83.0.tgz",
304
+ "@tryghost/mail-events": "file:components/tryghost-mail-events-5.83.0.tgz",
305
+ "@tryghost/mailgun-client": "file:components/tryghost-mailgun-client-5.83.0.tgz",
306
+ "@tryghost/member-attribution": "file:components/tryghost-member-attribution-5.83.0.tgz",
307
+ "@tryghost/member-events": "file:components/tryghost-member-events-5.83.0.tgz",
308
+ "@tryghost/members-api": "file:components/tryghost-members-api-5.83.0.tgz",
309
+ "@tryghost/members-csv": "file:components/tryghost-members-csv-5.83.0.tgz",
310
+ "@tryghost/members-events-service": "file:components/tryghost-members-events-service-5.83.0.tgz",
311
+ "@tryghost/members-importer": "file:components/tryghost-members-importer-5.83.0.tgz",
312
+ "@tryghost/members-ssr": "file:components/tryghost-members-ssr-5.83.0.tgz",
313
+ "@tryghost/mentions-email-report": "file:components/tryghost-mentions-email-report-5.83.0.tgz",
314
+ "@tryghost/milestones": "file:components/tryghost-milestones-5.83.0.tgz",
315
+ "@tryghost/minifier": "file:components/tryghost-minifier-5.83.0.tgz",
316
+ "@tryghost/model-to-domain-event-interceptor": "file:components/tryghost-model-to-domain-event-interceptor-5.83.0.tgz",
317
+ "@tryghost/mw-api-version-mismatch": "file:components/tryghost-mw-api-version-mismatch-5.83.0.tgz",
318
+ "@tryghost/mw-cache-control": "file:components/tryghost-mw-cache-control-5.83.0.tgz",
319
+ "@tryghost/mw-error-handler": "file:components/tryghost-mw-error-handler-5.83.0.tgz",
320
+ "@tryghost/mw-session-from-token": "file:components/tryghost-mw-session-from-token-5.83.0.tgz",
321
+ "@tryghost/mw-update-user-last-seen": "file:components/tryghost-mw-update-user-last-seen-5.83.0.tgz",
322
+ "@tryghost/mw-version-match": "file:components/tryghost-mw-version-match-5.83.0.tgz",
323
+ "@tryghost/mw-vhost": "file:components/tryghost-mw-vhost-5.83.0.tgz",
324
+ "@tryghost/nql-filter-expansions": "file:components/tryghost-nql-filter-expansions-5.83.0.tgz",
325
+ "@tryghost/oembed-service": "file:components/tryghost-oembed-service-5.83.0.tgz",
326
+ "@tryghost/members-offers": "file:components/tryghost-members-offers-5.83.0.tgz",
327
+ "@tryghost/package-json": "file:components/tryghost-package-json-5.83.0.tgz",
328
+ "@tryghost/members-payments": "file:components/tryghost-members-payments-5.83.0.tgz",
329
+ "@tryghost/post-events": "file:components/tryghost-post-events-5.83.0.tgz",
330
+ "@tryghost/post-revisions": "file:components/tryghost-post-revisions-5.83.0.tgz",
331
+ "@tryghost/posts-service": "file:components/tryghost-posts-service-5.83.0.tgz",
332
+ "@tryghost/recommendations": "file:components/tryghost-recommendations-5.83.0.tgz",
333
+ "@tryghost/referrers": "file:components/tryghost-referrers-5.83.0.tgz",
334
+ "@tryghost/security": "file:components/tryghost-security-5.83.0.tgz",
335
+ "@tryghost/session-service": "file:components/tryghost-session-service-5.83.0.tgz",
336
+ "@tryghost/settings-path-manager": "file:components/tryghost-settings-path-manager-5.83.0.tgz",
337
+ "@tryghost/slack-notifications": "file:components/tryghost-slack-notifications-5.83.0.tgz",
338
+ "@tryghost/staff-service": "file:components/tryghost-staff-service-5.83.0.tgz",
339
+ "@tryghost/stats-service": "file:components/tryghost-stats-service-5.83.0.tgz",
340
+ "@tryghost/members-stripe-service": "file:components/tryghost-members-stripe-service-5.83.0.tgz",
341
+ "@tryghost/tiers": "file:components/tryghost-tiers-5.83.0.tgz",
342
+ "@tryghost/update-check-service": "file:components/tryghost-update-check-service-5.83.0.tgz",
343
+ "@tryghost/verification-trigger": "file:components/tryghost-verification-trigger-5.83.0.tgz",
344
+ "@tryghost/version-notifications-data-service": "file:components/tryghost-version-notifications-data-service-5.83.0.tgz",
345
+ "@tryghost/webmentions": "file:components/tryghost-webmentions-5.83.0.tgz"
347
346
  },
348
347
  "nx": {
349
348
  "targets": {