ghost 5.129.2 → 6.0.0-alpha.1

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 (286) hide show
  1. package/components/tryghost-i18n-6.0.0-alpha.1.tgz +0 -0
  2. package/core/boot.js +0 -2
  3. package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +2 -2
  4. package/core/built/admin/assets/admin-x-activitypub/{index-B12913rO.mjs → index-BhgdXgH_.mjs} +2 -2
  5. package/core/built/admin/assets/admin-x-activitypub/{index-B7EmcyVj.mjs → index-rDFm98Ub.mjs} +15498 -15418
  6. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-l2Ex2555.mjs → CodeEditorView-CA2VVtOE.mjs} +2 -2
  7. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +3 -3
  8. package/core/built/admin/assets/admin-x-settings/{index-C6P_16OJ.mjs → index-Dl3F40x5.mjs} +2 -2
  9. package/core/built/admin/assets/admin-x-settings/index-KA2tjCkS.mjs +30462 -0
  10. package/core/built/admin/assets/admin-x-settings/{modals-CY1xx4Em.mjs → modals-B0zezufO.mjs} +2185 -2183
  11. package/core/built/admin/assets/{chunk.524.c8313bccd308920abf9c.js → chunk.524.996c1c4d269fa6a50e90.js} +7 -7
  12. package/core/built/admin/assets/{chunk.582.e4feab981886cfc91835.js → chunk.582.75cf44e5d1b925adf16d.js} +9 -9
  13. package/core/built/admin/assets/{chunk.728.214803966b81ffdb1acd.js → chunk.728.985c45ad584b4b91ca60.js} +124 -124
  14. package/core/built/admin/assets/{ghost-db9fcb8c1f65776f3ee11c39f19a660b.js → ghost-5a5b2112df68dfaf6813ce38cad16847.js} +29 -30
  15. package/core/built/admin/assets/posts/posts.js +6641 -6621
  16. package/core/built/admin/assets/stats/stats.js +12770 -12724
  17. package/core/built/admin/index.html +4 -4
  18. package/core/frontend/helpers/get.js +4 -2
  19. package/core/frontend/helpers/ghost_head.js +71 -77
  20. package/core/frontend/helpers/match.js +3 -0
  21. package/core/frontend/meta/canonical-url.js +1 -7
  22. package/core/frontend/meta/context-object.js +1 -1
  23. package/core/frontend/meta/get-meta.js +1 -4
  24. package/core/frontend/meta/og-image.js +1 -1
  25. package/core/frontend/meta/og-type.js +0 -2
  26. package/core/frontend/meta/schema.js +20 -1
  27. package/core/frontend/meta/twitter-image.js +1 -1
  28. package/core/frontend/meta/url.js +1 -12
  29. package/core/frontend/services/rendering/context.js +0 -8
  30. package/core/server/api/endpoints/index.js +0 -4
  31. package/core/server/api/endpoints/session.js +0 -9
  32. package/core/server/api/endpoints/utils/serializers/input/settings.js +3 -3
  33. package/core/server/api/endpoints/utils/serializers/input/utils/settings-filter-type-group-mapper.js +0 -1
  34. package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-group-mapper.js +3 -2
  35. package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-type-mapper.js +3 -2
  36. package/core/server/api/endpoints/utils/serializers/output/all.js +1 -1
  37. package/core/server/api/endpoints/utils/serializers/output/config.js +2 -1
  38. package/core/server/api/endpoints/utils/serializers/output/index.js +0 -4
  39. package/core/server/api/endpoints/utils/serializers/output/mappers/snippets.js +1 -5
  40. package/core/server/api/endpoints/utils/serializers/output/members.js +0 -2
  41. package/core/server/api/endpoints/utils/validators/input/index.js +0 -4
  42. package/core/server/data/importer/importers/data/Base.js +1 -3
  43. package/core/server/data/importer/importers/data/SettingsImporter.js +1 -3
  44. package/core/server/data/migrations/utils/index.js +1 -4
  45. package/core/server/data/migrations/utils/permissions.js +14 -6
  46. package/core/server/data/migrations/utils/settings.js +39 -22
  47. package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-final-v4.js +2 -0
  48. package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-no-op.js +6 -0
  49. package/core/server/data/migrations/versions/5.100/2024-11-06-04-45-15-add-activitypub-integration.js +4 -2
  50. package/core/server/data/migrations/versions/5.113/2025-03-07-12-24-00-add-super-editor.js +4 -2
  51. package/core/server/data/migrations/versions/5.130/2025-07-11-14-14-54-add-explore-settings.js +16 -0
  52. package/core/server/data/migrations/versions/5.3/2022-07-06-07-58-add-ghost-explore-integration-role.js +4 -2
  53. package/core/server/data/migrations/versions/5.3/2022-07-06-09-17-add-ghost-explore-integration.js +4 -2
  54. package/core/server/data/migrations/versions/5.3/2022-07-06-09-26-add-ghost-explore-integration-api-key.js +4 -2
  55. package/core/server/data/migrations/versions/5.40/2023-03-21-18-42-add-self-serve-integration-role.js +4 -2
  56. package/core/server/data/migrations/versions/5.40/2023-03-21-18-52-add-self-serve-integration.js +4 -2
  57. package/core/server/data/migrations/versions/5.40/2023-03-21-19-02-add-self-serve-integration-api-key.js +4 -2
  58. package/core/server/data/migrations/versions/5.63/2023-09-13-13-03-10-add-ghost-core-content-integration.js +4 -2
  59. package/core/server/data/migrations/versions/5.63/2023-09-13-13-34-11-add-ghost-core-content-integration-key.js +4 -2
  60. package/core/server/data/migrations/versions/6.0/2025-06-20-01-41-54-remove-updated-by-column.js +46 -0
  61. package/core/server/data/migrations/versions/6.0/2025-06-20-13-41-55-remove-created-by-column.js +47 -0
  62. package/core/server/data/migrations/versions/6.0/2025-06-23-09-49-25-add-missing-member-uuids.js +22 -0
  63. package/core/server/data/migrations/versions/6.0/2025-06-23-10-03-26-members-nullable-uuid.js +5 -0
  64. package/core/server/data/migrations/versions/6.0/2025-06-24-09-19-42-use-object-id-for-hardcoded-user-id.js +95 -0
  65. package/core/server/data/migrations/versions/6.0/2025-06-25-15-03-29-remove-amp-from-settings.js +6 -0
  66. package/core/server/data/migrations/versions/6.0/2025-06-30-13-59-10-remove-mail-events-table.js +3 -0
  67. package/core/server/data/migrations/versions/6.0/2025-06-30-14-00-00-update-feature-image-alt-length.js +25 -0
  68. package/core/server/data/schema/default-settings/default-settings.json +18 -13
  69. package/core/server/data/schema/fixtures/FixtureManager.js +128 -5
  70. package/core/server/data/schema/fixtures/fixtures.json +4 -6
  71. package/core/server/data/schema/fixtures/index.js +3 -1
  72. package/core/server/data/schema/schema.js +20 -65
  73. package/core/server/data/seeders/DataGenerator.js +11 -2
  74. package/core/server/data/seeders/importers/EmailsImporter.js +1 -3
  75. package/core/server/data/seeders/importers/LabelsImporter.js +1 -3
  76. package/core/server/data/seeders/importers/MembersImporter.js +0 -1
  77. package/core/server/data/seeders/importers/MembersStripeCustomersImporter.js +1 -2
  78. package/core/server/data/seeders/importers/MembersStripeCustomersSubscriptionsImporter.js +0 -1
  79. package/core/server/data/seeders/importers/PostsImporter.js +0 -1
  80. package/core/server/data/seeders/importers/RolesUsersImporter.js +6 -1
  81. package/core/server/data/seeders/importers/TagsImporter.js +1 -2
  82. package/core/server/data/seeders/importers/UsersImporter.js +1 -2
  83. package/core/server/data/tinybird/README.md +9 -14
  84. package/core/server/models/base/bookshelf.js +8 -1
  85. package/core/server/models/base/plugins/events.js +0 -28
  86. package/core/server/models/base/plugins/user-type.js +10 -36
  87. package/core/server/models/post.js +25 -10
  88. package/core/server/models/relations/authors.js +2 -2
  89. package/core/server/models/settings.js +1 -14
  90. package/core/server/models/user.js +33 -6
  91. package/core/server/services/activitypub/ActivityPubService.js +23 -4
  92. package/core/server/services/activitypub/ActivityPubService.ts +27 -8
  93. package/core/server/services/email-service/email-templates/partials/styles.hbs +0 -14
  94. package/core/server/services/explore-ping/ExplorePingService.js +44 -33
  95. package/core/server/services/link-redirection/README.md +1 -1
  96. package/core/server/services/mentions/MentionSendingService.js +1 -1
  97. package/core/server/services/public-config/config.js +4 -0
  98. package/core/server/services/themes/installer.js +17 -3
  99. package/core/server/services/update-check/UpdateCheckService.js +18 -2
  100. package/core/server/services/url/config.js +0 -2
  101. package/core/server/web/api/app.js +4 -0
  102. package/core/server/web/api/endpoints/admin/middleware.js +8 -9
  103. package/core/server/web/api/endpoints/admin/routes.js +0 -2
  104. package/core/server/web/comments/routes.js +3 -0
  105. package/core/server/web/shared/middleware/index.js +4 -0
  106. package/core/server/web/shared/middleware/max-limit-cap.js +27 -0
  107. package/core/server/web/shared/middleware/pretty-urls.js +3 -1
  108. package/core/server/web/shared/middleware/redirect-amp-urls.js +36 -0
  109. package/core/shared/config/defaults.json +2 -0
  110. package/core/shared/config/env/config.production.json +4 -0
  111. package/core/shared/config/overrides.json +1 -4
  112. package/core/shared/labs.js +5 -6
  113. package/core/shared/max-limit-cap.js +61 -0
  114. package/package.json +7 -8
  115. package/tsconfig.tsbuildinfo +1 -1
  116. package/yarn.lock +203 -261
  117. package/components/tryghost-i18n-5.129.2.tgz +0 -0
  118. package/core/built/admin/assets/admin-x-settings/index-DoLRADbr.mjs +0 -30308
  119. package/core/built/admin/assets/img/amp-d7b72aae3315fda95921fb575dfca100.svg +0 -4
  120. package/core/frontend/apps/amp/index.js +0 -30
  121. package/core/frontend/apps/amp/lib/helpers/amp_analytics.js +0 -32
  122. package/core/frontend/apps/amp/lib/helpers/amp_components.js +0 -48
  123. package/core/frontend/apps/amp/lib/helpers/amp_content.js +0 -214
  124. package/core/frontend/apps/amp/lib/helpers/amp_style.js +0 -8
  125. package/core/frontend/apps/amp/lib/router.js +0 -95
  126. package/core/frontend/apps/amp/lib/views/amp.hbs +0 -1046
  127. package/core/frontend/meta/amp-url.js +0 -14
  128. package/core/server/api/endpoints/mail-events.js +0 -17
  129. package/core/server/api/endpoints/utils/serializers/output/mail-events.js +0 -9
  130. package/core/server/api/endpoints/utils/validators/input/mail-events.js +0 -7
  131. package/core/server/data/migrations/utils/constants.js +0 -3
  132. package/core/server/data/migrations/versions/4.0/01-update-mobiledoc.js +0 -61
  133. package/core/server/data/migrations/versions/4.0/02-add-status-column-to-members.js +0 -11
  134. package/core/server/data/migrations/versions/4.0/03-populate-status-column-for-members.js +0 -81
  135. package/core/server/data/migrations/versions/4.0/04-drop-apps-related-tables.js +0 -10
  136. package/core/server/data/migrations/versions/4.0/05-add-members-subscribe-events-table.js +0 -9
  137. package/core/server/data/migrations/versions/4.0/06-populate-members-subscribe-events-table.js +0 -53
  138. package/core/server/data/migrations/versions/4.0/07-alter-unique-constraint-for-posts-slug.js +0 -7
  139. package/core/server/data/migrations/versions/4.0/08-add-members-login-events-table.js +0 -7
  140. package/core/server/data/migrations/versions/4.0/09-add-members-email-change-events-table.js +0 -9
  141. package/core/server/data/migrations/versions/4.0/10-add-members-status-events-table.js +0 -9
  142. package/core/server/data/migrations/versions/4.0/11-add-members-paid-subscription-events-table.js +0 -12
  143. package/core/server/data/migrations/versions/4.0/12-delete-apps-related-settings-keys.js +0 -16
  144. package/core/server/data/migrations/versions/4.0/13-add-members-payment-events-table.js +0 -10
  145. package/core/server/data/migrations/versions/4.0/14-remove-orphaned-stripe-records.js +0 -36
  146. package/core/server/data/migrations/versions/4.0/15-add-frontmatter-column-to-meta.js +0 -7
  147. package/core/server/data/migrations/versions/4.0/16-refactor-slack-setting.js +0 -96
  148. package/core/server/data/migrations/versions/4.0/17-populate-members-status-events-table.js +0 -41
  149. package/core/server/data/migrations/versions/4.0/18-transform-urls-absolute-to-transform-ready.js +0 -201
  150. package/core/server/data/migrations/versions/4.0/19-remove-labs-members-setting.js +0 -10
  151. package/core/server/data/migrations/versions/4.0/20-refactor-unsplash-setting.js +0 -41
  152. package/core/server/data/migrations/versions/4.0/21-sanitize-email-batches-provider-id.js +0 -8
  153. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +0 -87
  154. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +0 -66
  155. package/core/server/data/migrations/versions/4.0/24-add-missing-email-permissions.js +0 -36
  156. package/core/server/data/migrations/versions/4.0/25-populate-members-paid-subscription-events-table.js +0 -129
  157. package/core/server/data/migrations/versions/4.0/26-add-cascade-on-delete.js +0 -76
  158. package/core/server/data/migrations/versions/4.0/27-add-primary-key-brute-migrations-lock.js +0 -9
  159. package/core/server/data/migrations/versions/4.0/28-add-webhook-intergrations-foreign-key.js +0 -16
  160. package/core/server/data/migrations/versions/4.0/29-fix-foreign-key-for-members-stripe-customers-subscriptions.js +0 -35
  161. package/core/server/data/migrations/versions/4.0/30-set-default-accent-color.js +0 -21
  162. package/core/server/data/migrations/versions/4.1/01-fix-backup-content-permission-typo.js +0 -15
  163. package/core/server/data/migrations/versions/4.1/02-add-unique-constraint-for-member-stripe-tables.js +0 -21
  164. package/core/server/data/migrations/versions/4.11/01-add-oauth-user-data.js +0 -12
  165. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +0 -43
  166. package/core/server/data/migrations/versions/4.12/01-add-email-only-column-to-posts-meta-table.js +0 -7
  167. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +0 -39
  168. package/core/server/data/migrations/versions/4.13/01-add-members-stripe-connect-auth-permission-to-administrators.js +0 -6
  169. package/core/server/data/migrations/versions/4.13/02-add-members-products-events-table.js +0 -33
  170. package/core/server/data/migrations/versions/4.14/01-fix-comped-member-statuses.js +0 -73
  171. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +0 -61
  172. package/core/server/data/migrations/versions/4.15/01-add-temp-members-analytic-events-table.js +0 -12
  173. package/core/server/data/migrations/versions/4.16/01-add-custom-theme-settings-table.js +0 -9
  174. package/core/server/data/migrations/versions/4.17/01-add-custom-theme-settings-permissions.js +0 -21
  175. package/core/server/data/migrations/versions/4.17/02-add-offers-table.js +0 -19
  176. package/core/server/data/migrations/versions/4.17/03-add-offers-permissions.js +0 -35
  177. package/core/server/data/migrations/versions/4.19/01-add-active-column-to-offers.js +0 -7
  178. package/core/server/data/migrations/versions/4.19/02-add-offer-redemptions-table.js +0 -8
  179. package/core/server/data/migrations/versions/4.2/01-fix-incorrect-mrr-delta-events.js +0 -13
  180. package/core/server/data/migrations/versions/4.20/01-remove-offer-redemptions-table.js +0 -19
  181. package/core/server/data/migrations/versions/4.20/02-remove-offers-table.js +0 -30
  182. package/core/server/data/migrations/versions/4.20/03-add-offers-table.js +0 -21
  183. package/core/server/data/migrations/versions/4.20/04-add-offer-redemptions-table.js +0 -9
  184. package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +0 -44
  185. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +0 -8
  186. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +0 -39
  187. package/core/server/data/migrations/versions/4.23/01-truncate-offer-names.js +0 -59
  188. package/core/server/data/migrations/versions/4.3/01-add-products-table.js +0 -9
  189. package/core/server/data/migrations/versions/4.3/02-add-members-products-table.js +0 -8
  190. package/core/server/data/migrations/versions/4.3/03-add-default-product.js +0 -39
  191. package/core/server/data/migrations/versions/4.3/04-attach-members-to-product.js +0 -50
  192. package/core/server/data/migrations/versions/4.3/05-add-stripe-products-table.js +0 -9
  193. package/core/server/data/migrations/versions/4.3/06-add-stripe-prices-table.js +0 -15
  194. package/core/server/data/migrations/versions/4.3/07-add-products-permissions.js +0 -29
  195. package/core/server/data/migrations/versions/4.3/08-migrate-members-signup-setting.js +0 -109
  196. package/core/server/data/migrations/versions/4.3/09-add-price-id-column-to-subscriptions-table.js +0 -10
  197. package/core/server/data/migrations/versions/4.3/10-populate-stripe-price-id-in-subscriptions.js +0 -20
  198. package/core/server/data/migrations/versions/4.33/2022-01-14-11-50-add-type-column-to-products.js +0 -12
  199. package/core/server/data/migrations/versions/4.33/2022-01-14-11-51-add-default-free-tier.js +0 -40
  200. package/core/server/data/migrations/versions/4.33/2022-01-18-09-07-remove-duplicate-offer-redemptions.js +0 -46
  201. package/core/server/data/migrations/versions/4.33/2022-01-19-10-43-add-active-column-to-products-table.js +0 -7
  202. package/core/server/data/migrations/versions/4.34/2022-01-25-13-53-add-welcome-page-url-column-to-products.js +0 -7
  203. package/core/server/data/migrations/versions/4.35/2022-01-20-05-55-add-post-products-table.js +0 -8
  204. package/core/server/data/migrations/versions/4.35/2022-01-30-15-17-set-welcome-page-url-from-settings.js +0 -45
  205. package/core/server/data/migrations/versions/4.35/2022-02-01-11-48-update-email-recipient-filter-column-type.js +0 -19
  206. package/core/server/data/migrations/versions/4.35/2022-02-01-12-03-update-recipient-filter-column-type.js +0 -19
  207. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +0 -8
  208. package/core/server/data/migrations/versions/4.35/2022-02-02-13-10-transform-specific-tiers-default-content-visibility.js +0 -147
  209. package/core/server/data/migrations/versions/4.35/2022-02-04-04-34-populate-empty-portal-products.js +0 -60
  210. package/core/server/data/migrations/versions/4.36/2022-02-07-14-34-add-last-seen-at-column-to-members.js +0 -10
  211. package/core/server/data/migrations/versions/4.37/2022-02-21-09-53-backfill-members-last-seen-at-column.js +0 -32
  212. package/core/server/data/migrations/versions/4.38/2022-03-01-08-46-add-visibility-to-tiers.js +0 -11
  213. package/core/server/data/migrations/versions/4.38/2022-03-03-16-12-add-visibility-to-tiers.js +0 -8
  214. package/core/server/data/migrations/versions/4.38/2022-03-03-16-17-drop-tiers-visible-column.js +0 -7
  215. package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-free-products-visibility-column.js +0 -66
  216. package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-products-visibility-column.js +0 -36
  217. package/core/server/data/migrations/versions/4.4/01-restore-free-members-signup-setting-from-backup.js +0 -99
  218. package/core/server/data/migrations/versions/4.4/02-migrate-members-signup-access.js +0 -126
  219. package/core/server/data/migrations/versions/4.40/2022-03-07-14-37-add-members-cancel-events-table.js +0 -8
  220. package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-offers-admin-integration-permission-roles.js +0 -23
  221. package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-tiers-admin-integration-permission-roles.js +0 -20
  222. package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +0 -25
  223. package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +0 -28
  224. package/core/server/data/migrations/versions/4.43/2022-03-28-19-26-recreate-newsletter-table.js +0 -29
  225. package/core/server/data/migrations/versions/4.43/2022-03-29-14-45-add-members-newsletters-table.js +0 -7
  226. package/core/server/data/migrations/versions/4.43/2022-04-01-10-13-add-post-newsletter-relation.js +0 -108
  227. package/core/server/data/migrations/versions/4.43/2022-04-06-09-47-add-type-column-to-paid-subscription-events.js +0 -7
  228. package/core/server/data/migrations/versions/4.43/2022-04-06-14-56-add-email-newsletter-relation.js +0 -8
  229. package/core/server/data/migrations/versions/4.43/2022-04-08-10-45-add-subscription-id-to-mrr-events.js +0 -7
  230. package/core/server/data/migrations/versions/4.44/2022-04-06-15-22-populate-type-column-for-paid-subscription-events.js +0 -21
  231. package/core/server/data/migrations/versions/4.44/2022-04-08-11-54-add-cancelled-events.js +0 -51
  232. package/core/server/data/migrations/versions/4.44/2022-04-11-08-24-add-newsletter-permissions.js +0 -33
  233. package/core/server/data/migrations/versions/4.44/2022-04-11-10-54-add-mrr-to-subscriptions.js +0 -8
  234. package/core/server/data/migrations/versions/4.44/2022-04-12-07-33-fill-mrr.js +0 -29
  235. package/core/server/data/migrations/versions/4.44/2022-04-13-12-00-remove-newsletter-sender-name-not-null-constraint.js +0 -33
  236. package/core/server/data/migrations/versions/4.44/2022-04-15-07-53-add-offer-id-to-subscriptions.js +0 -9
  237. package/core/server/data/migrations/versions/4.45/2022-04-19-12-23-backfill-subscriptions-offers.js +0 -60
  238. package/core/server/data/migrations/versions/4.45/2022-04-20-11-25-add-newsletter-read-permission.js +0 -9
  239. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +0 -8
  240. package/core/server/data/migrations/versions/4.46/2022-04-13-12-00-add-created-at-newsletters.js +0 -6
  241. package/core/server/data/migrations/versions/4.46/2022-04-13-12-01-add-updated-at-newsletters.js +0 -6
  242. package/core/server/data/migrations/versions/4.46/2022-04-13-12-02-fill-created-at-newsletters.js +0 -19
  243. package/core/server/data/migrations/versions/4.46/2022-04-13-12-03-drop-nullable-created-at-newsletters.js +0 -3
  244. package/core/server/data/migrations/versions/4.46/2022-04-13-12-08-newsletters-show-header-name.js +0 -7
  245. package/core/server/data/migrations/versions/4.46/2022-04-13-12-57-add-uuid-column-to-newsletters.js +0 -8
  246. package/core/server/data/migrations/versions/4.46/2022-04-13-12-58-fill-uuid-for-newsletters.js +0 -19
  247. package/core/server/data/migrations/versions/4.46/2022-04-13-12-59-drop-nullable-uuid-newsletters.js +0 -3
  248. package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js +0 -92
  249. package/core/server/data/migrations/versions/4.46/2022-04-20-08-39-map-subscribers-to-default-newsletter.js +0 -66
  250. package/core/server/data/migrations/versions/4.46/2022-04-22-07-43-add-newsletter-id-to-subscribe-events.js +0 -9
  251. package/core/server/data/migrations/versions/4.46/2022-04-27-07-59-set-newsletter-id-subscribe-events.js +0 -31
  252. package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-update-newsletter-sending-options.js +0 -34
  253. package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-transform-newsletter-header-image.js +0 -26
  254. package/core/server/data/migrations/versions/4.5/01-add-stripe-price-description-column.js +0 -7
  255. package/core/server/data/migrations/versions/4.5/02-add-product-description-column.js +0 -7
  256. package/core/server/data/migrations/versions/4.5/03-give-label-read-permissions-to-editors.js +0 -14
  257. package/core/server/data/migrations/versions/4.5/04-remove-unique-constraint-from-product-name.js +0 -13
  258. package/core/server/data/migrations/versions/4.5/05-rename-default-product-to-site-title.js +0 -38
  259. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +0 -47
  260. package/core/server/data/migrations/versions/4.7/01-add-monthly-price-column-to-products.js +0 -7
  261. package/core/server/data/migrations/versions/4.7/02-add-yearly-price-column-to-products.js +0 -7
  262. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +0 -42
  263. package/core/server/data/migrations/versions/4.8/01-add-feature-image-alt-column-to-posts-meta.js +0 -7
  264. package/core/server/data/migrations/versions/4.8/02-add-feature-image-caption-column-to-posts-meta.js +0 -7
  265. package/core/server/data/migrations/versions/4.8/03-add-default-product-portal-products.js +0 -69
  266. package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js +0 -124
  267. package/core/server/data/migrations/versions/4.9/01-add-reset-all-passwords-permission.js +0 -11
  268. package/core/server/data/migrations/versions/4.9/02-add-benefits-table.js +0 -9
  269. package/core/server/data/migrations/versions/4.9/03-add-products-benefits-table.js +0 -8
  270. package/core/server/data/migrations/versions/4.9/04-add-member-segment-to-email-batches.js +0 -7
  271. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +0 -87
  272. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +0 -47
  273. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +0 -39
  274. package/core/server/models/mail-event.js +0 -12
  275. package/core/server/services/mail-events/BookshelfMailEventRepository.js +0 -40
  276. package/core/server/services/mail-events/InMemoryMailEventRepository.js +0 -10
  277. package/core/server/services/mail-events/InMemoryMailEventRepository.ts +0 -8
  278. package/core/server/services/mail-events/MailEvent.js +0 -20
  279. package/core/server/services/mail-events/MailEvent.ts +0 -10
  280. package/core/server/services/mail-events/MailEventRepository.js +0 -2
  281. package/core/server/services/mail-events/MailEventRepository.ts +0 -5
  282. package/core/server/services/mail-events/MailEventService.js +0 -124
  283. package/core/server/services/mail-events/MailEventService.ts +0 -169
  284. package/core/server/services/mail-events/index.js +0 -21
  285. package/core/server/services/mail-events/libraries.d.ts +0 -2
  286. /package/core/built/admin/assets/{chunk.728.214803966b81ffdb1acd.js.LICENSE.txt → chunk.728.985c45ad584b4b91ca60.js.LICENSE.txt} +0 -0
@@ -1,14 +0,0 @@
1
- const urlUtils = require('../../shared/url-utils');
2
- const getUrl = require('./url');
3
- const _ = require('lodash');
4
-
5
- function getAmplUrl(data) {
6
- const context = data.context ? data.context : null;
7
-
8
- if (_.includes(context, 'post') && !_.includes(context, 'amp')) {
9
- return urlUtils.urlJoin(urlUtils.urlFor('home', true), getUrl(data, false), 'amp/');
10
- }
11
- return null;
12
- }
13
-
14
- module.exports = getAmplUrl;
@@ -1,17 +0,0 @@
1
- const mailEvents = require('../../services/mail-events');
2
-
3
- /** @type {import('@tryghost/api-framework').Controller} */
4
- const controller = {
5
- docName: 'mail_events',
6
- add: {
7
- headers: {
8
- cacheInvalidate: false
9
- },
10
- permissions: false,
11
- async query(frame) {
12
- return mailEvents.service.processPayload(frame.data);
13
- }
14
- }
15
- };
16
-
17
- module.exports = controller;
@@ -1,9 +0,0 @@
1
- const debug = require('@tryghost/debug')('api:endpoints:utils:serializers:output:mail-events');
2
-
3
- module.exports = {
4
- add(response, apiConfig, frame) {
5
- debug('add');
6
-
7
- frame.response = {};
8
- }
9
- };
@@ -1,7 +0,0 @@
1
- const mailEvents = require('../../../../../services/mail-events');
2
-
3
- module.exports = {
4
- add(apiConfig, frame) {
5
- mailEvents.service.validatePayload(frame.data);
6
- }
7
- };
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- MIGRATION_USER: 1
3
- };
@@ -1,61 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
-
4
- module.exports = createIrreversibleMigration(async (knex) => {
5
- logging.info('Adding version to posts.mobiledoc objects and cleaning up deprecated card names');
6
-
7
- await knex.transaction(async (trx) => {
8
- // get list of posts ids, use .forUpdate to lock rows until the transaction is finished
9
- const postIdRows = await knex('posts')
10
- .transacting(trx)
11
- .forUpdate()
12
- .select('id');
13
-
14
- // transform each post individually to avoid dumping all posts into memory and
15
- // pushing all queries into the query builder buffer in parallel
16
- // https://stackoverflow.com/questions/54105280/how-to-loop-through-multi-line-sql-query-and-use-them-in-knex-transactions
17
-
18
- // eslint-disable-next-line no-restricted-syntax
19
- for (const postIdRow of postIdRows) {
20
- const {id} = postIdRow;
21
- const [{mobiledoc: mobiledocJson}] = await knex('posts')
22
- .transacting(trx)
23
- .where({id})
24
- .select('mobiledoc');
25
-
26
- const mobiledoc = JSON.parse(mobiledocJson);
27
-
28
- // set a ghostVersion property so we can make breaking renderer
29
- // changes without affecting old content
30
- if (!mobiledoc.ghostVersion) {
31
- mobiledoc.ghostVersion = '3.0';
32
- }
33
-
34
- if (mobiledoc.cards) {
35
- // eslint-disable-next-line no-restricted-syntax
36
- mobiledoc.cards.forEach((card) => {
37
- // card-markdown card was used in 1.0 and aliased to markdown in 2.0 onwards
38
- // clean it up here whilst we're already modifying mobiledoc
39
- if (card[0] === 'card-markdown') {
40
- card[0] = 'markdown';
41
- }
42
-
43
- // there was a bug for a while that dumped a urlUtils object into the hr card payload
44
- // clean it up because it's large and not needed
45
- if (card[0] === 'hr') {
46
- card[1] = {};
47
- }
48
- });
49
- }
50
-
51
- await knex('posts')
52
- .transacting(trx)
53
- .where({id})
54
- .update({
55
- mobiledoc: JSON.stringify(mobiledoc)
56
- });
57
- }
58
-
59
- return 'transaction complete';
60
- });
61
- });
@@ -1,11 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('members', 'status', {
4
- type: 'string',
5
- maxlength: 50,
6
- nullable: false,
7
- defaultTo: 'free',
8
- validations: {
9
- isIn: [['free', 'paid']]
10
- }
11
- });
@@ -1,81 +0,0 @@
1
- const {chunk} = require('lodash');
2
- const {createTransactionalMigration} = require('../../utils');
3
- const logging = require('@tryghost/logging');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- logging.info('Updating members.status based on members_stripe_customers_subscriptions.status');
8
- // eslint-disable-next-line no-restricted-syntax
9
- const paidMemberIds = (await knex('members')
10
- .select('members.id')
11
- .innerJoin(
12
- 'members_stripe_customers',
13
- 'members.id',
14
- 'members_stripe_customers.member_id'
15
- ).innerJoin(
16
- 'members_stripe_customers_subscriptions',
17
- function () {
18
- this.on(
19
- 'members_stripe_customers.customer_id',
20
- 'members_stripe_customers_subscriptions.customer_id'
21
- ).onIn(
22
- 'members_stripe_customers_subscriptions.status',
23
- ['active', 'trialing', 'past_due', 'unpaid']
24
- );
25
- }
26
- )).map(({id}) => id);
27
-
28
- // eslint-disable-next-line no-restricted-syntax
29
- const compedMemberIds = (await knex('members')
30
- .select('members.id')
31
- .innerJoin(
32
- 'members_stripe_customers',
33
- 'members.id',
34
- 'members_stripe_customers.member_id'
35
- ).innerJoin(
36
- 'members_stripe_customers_subscriptions',
37
- function () {
38
- this.on(
39
- 'members_stripe_customers.customer_id',
40
- 'members_stripe_customers_subscriptions.customer_id'
41
- ).onIn(
42
- 'members_stripe_customers_subscriptions.status',
43
- ['active', 'trialing', 'past_due', 'unpaid']
44
- );
45
- }
46
- ).where(
47
- 'members_stripe_customers_subscriptions.plan_nickname',
48
- '=',
49
- 'Complimentary'
50
- )).map(({id}) => id);
51
-
52
- // Umm? Well... The current version of SQLite3 bundled with Ghost supports
53
- // a maximum of 999 variables, we use one variable for the SET value
54
- // and so we're left with 998 for our WHERE IN clause values
55
- const chunkSize = 998;
56
-
57
- const paidMemberIdChunks = chunk(paidMemberIds, chunkSize);
58
-
59
- // eslint-disable-next-line no-restricted-syntax
60
- for (const paidMemberIdsChunk of paidMemberIdChunks) {
61
- await knex('members')
62
- .update('status', 'paid')
63
- .whereIn('id', paidMemberIdsChunk);
64
- }
65
-
66
- const compedMemberIdChunks = chunk(compedMemberIds, chunkSize);
67
-
68
- // eslint-disable-next-line no-restricted-syntax
69
- for (const compedMemberIdsChunk of compedMemberIdChunks) {
70
- await knex('members')
71
- .update('status', 'comped')
72
- .whereIn('id', compedMemberIdsChunk);
73
- }
74
- },
75
- async function down(knex) {
76
- logging.info('Updating all members status to "free"');
77
- return knex('members').update({
78
- status: 'free'
79
- });
80
- }
81
- );
@@ -1,10 +0,0 @@
1
- const {dropTables} = require('../../utils');
2
-
3
- const tables = [
4
- 'permissions_apps',
5
- 'app_fields',
6
- 'app_settings',
7
- 'apps'
8
- ];
9
-
10
- module.exports = dropTables(tables);
@@ -1,9 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_subscribe_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, unique: false, references: 'members.id', cascadeDelete: true},
6
- subscribed: {type: 'boolean', nullable: false, defaultTo: true},
7
- created_at: {type: 'dateTime', nullable: false},
8
- source: {type: 'string', maxlength: 50, nullable: true}
9
- });
@@ -1,53 +0,0 @@
1
- const {chunk} = require('lodash');
2
- const ObjectID = require('bson-objectid').default;
3
- const {createTransactionalMigration} = require('../../utils');
4
- const logging = require('@tryghost/logging');
5
-
6
- module.exports = createTransactionalMigration(
7
- async function up(knex) {
8
- logging.info('Populating members_subscribe_events from members');
9
-
10
- const allMembers = await knex.select(
11
- 'id as member_id',
12
- 'created_at'
13
- ).from('members');
14
-
15
- const unsubscribedMembers = await knex.select(
16
- 'id as member_id',
17
- 'updated_at as created_at'
18
- ).from('members').where('subscribed', false);
19
-
20
- const membersSubscribedEvents = allMembers.map((event) => {
21
- return {
22
- ...event,
23
- id: ObjectID().toHexString(),
24
- subscribed: true,
25
- source: 'member'
26
- };
27
- });
28
-
29
- const membersUnsubscribedEvents = unsubscribedMembers.map((event) => {
30
- return {
31
- ...event,
32
- id: ObjectID().toHexString(),
33
- subscribed: false,
34
- source: null
35
- };
36
- });
37
-
38
- const allEvents = membersSubscribedEvents.concat(membersUnsubscribedEvents);
39
-
40
- // SQLite3 supports 999 variables max, each row uses 5 variables so ⌊999/5⌋ = 199
41
- const chunkSize = 199;
42
-
43
- const eventChunks = chunk(allEvents, chunkSize);
44
-
45
- // eslint-disable-next-line no-restricted-syntax
46
- for (const events of eventChunks) {
47
- await knex.insert(events).into('members_subscribe_events');
48
- }
49
- },
50
- async function down(knex) {
51
- return knex('members_subscribe_events').del();
52
- }
53
- );
@@ -1,7 +0,0 @@
1
- const {createIrreversibleMigration} = require('../../utils');
2
- const {addUnique, dropUnique} = require('../../../schema/commands');
3
-
4
- module.exports = createIrreversibleMigration(async (knex) => {
5
- await dropUnique('posts', 'slug', knex);
6
- await addUnique('posts', ['slug', 'type'], knex);
7
- });
@@ -1,7 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_login_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
6
- created_at: {type: 'dateTime', nullable: false}
7
- });
@@ -1,9 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_email_change_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
6
- to_email: {type: 'string', maxlength: 191, nullable: false, unique: false, validations: {isEmail: true}},
7
- from_email: {type: 'string', maxlength: 191, nullable: false, unique: false, validations: {isEmail: true}},
8
- created_at: {type: 'dateTime', nullable: false}
9
- });
@@ -1,9 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_status_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
6
- from_status: {type: 'string', maxlength: 50, nullable: true},
7
- to_status: {type: 'string', maxlength: 50, nullable: true},
8
- created_at: {type: 'dateTime', nullable: false}
9
- });
@@ -1,12 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_paid_subscription_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
6
- from_plan: {type: 'string', maxlength: 255, nullable: true},
7
- to_plan: {type: 'string', maxlength: 255, nullable: true},
8
- currency: {type: 'string', maxlength: 191, nullable: false},
9
- source: {type: 'string', maxlength: 50, nullable: false},
10
- mrr_delta: {type: 'integer', nullable: false},
11
- created_at: {type: 'dateTime', nullable: false}
12
- });
@@ -1,16 +0,0 @@
1
- const {createTransactionalMigration} = require('../../utils');
2
- const logging = require('@tryghost/logging');
3
-
4
- module.exports = createTransactionalMigration(
5
- async function up(knex){
6
- const settingsKeys = ['installed_apps', 'active_apps'];
7
- logging.info(`Removing ${settingsKeys.join(',')} from "settings" table.`);
8
-
9
- await knex('settings')
10
- .whereIn('key', settingsKeys)
11
- .del();
12
- },
13
- async function down() {
14
- // noop: no need to recreate any apps as it's a cleanup in major version migration
15
- }
16
- );
@@ -1,10 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_payment_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
6
- amount: {type: 'integer', nullable: false},
7
- currency: {type: 'string', maxlength: 191, nullable: false},
8
- source: {type: 'string', maxlength: 50, nullable: false},
9
- created_at: {type: 'dateTime', nullable: false}
10
- });
@@ -1,36 +0,0 @@
1
- const {createIrreversibleMigration} = require('../../utils');
2
- const logging = require('@tryghost/logging');
3
- const DatabaseInfo = require('@tryghost/database-info');
4
-
5
- module.exports = createIrreversibleMigration(async function up(connection) {
6
- if (DatabaseInfo.isMySQL(connection)) {
7
- logging.info('Skipping removal of orphaned stripe records for MySQL');
8
- return;
9
- }
10
-
11
- logging.info('Removing orphaned rows from members_stripe_customers');
12
- await connection.raw(`
13
- DELETE FROM
14
- members_stripe_customers
15
- WHERE
16
- member_id
17
- NOT IN (
18
- SELECT
19
- id
20
- FROM members
21
- );
22
- `);
23
-
24
- logging.info('Removing orphaned rows from members_stripe_customers_subscriptions');
25
- await connection.raw(`
26
- DELETE FROM
27
- members_stripe_customers_subscriptions
28
- WHERE
29
- customer_id
30
- NOT IN (
31
- SELECT
32
- customer_id
33
- FROM members_stripe_customers
34
- );
35
- `);
36
- });
@@ -1,7 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('posts_meta', 'frontmatter', {
4
- type: 'text',
5
- maxlength: 65535,
6
- nullable: true
7
- });
@@ -1,96 +0,0 @@
1
- const ObjectId = require('bson-objectid').default;
2
- const {createIrreversibleMigration} = require('../../utils');
3
- const logging = require('@tryghost/logging');
4
-
5
- module.exports = createIrreversibleMigration(async (knex) => {
6
- logging.info('Populating slack_url and slack_username setting values');
7
-
8
- const slackURLSetting = await knex('settings')
9
- .select('value')
10
- .where({
11
- key: 'slack_url'
12
- })
13
- .first();
14
-
15
- const slackUsernameSetting = await knex('settings')
16
- .select('value')
17
- .where({
18
- key: 'slack_username'
19
- })
20
- .first();
21
-
22
- if (slackURLSetting && slackUsernameSetting) {
23
- logging.warn('slack_url and slack_username settings already exist');
24
- return;
25
- }
26
-
27
- const slackSetting = await knex('settings')
28
- .select('value')
29
- .where({
30
- key: 'slack'
31
- })
32
- .first();
33
-
34
- let slackUrl = '';
35
- let slackUsername = '';
36
- try {
37
- // example value that used to be stored in here:
38
- // value: [{
39
- // "url":"https://hooks.slack.com/services/TC_REDACTED/B01_REDACTED/mk_REDACTED",
40
- // "username":"Ghost"
41
- // }]
42
- const value = JSON.parse(slackSetting.value)[0];
43
-
44
- slackUrl = value.url || '';
45
- slackUsername = value.username || 'Ghost';
46
- } catch (err) {
47
- slackUrl = '';
48
- slackUsername = 'Ghost';
49
- }
50
-
51
- const now = knex.raw('CURRENT_TIMESTAMP');
52
-
53
- if (!slackURLSetting) {
54
- logging.info(`Populating slack_url setting with value: ${slackUrl}`);
55
-
56
- await knex('settings')
57
- .insert({
58
- id: ObjectId().toHexString(),
59
- key: 'slack_url',
60
- group: 'slack',
61
- type: 'string',
62
- flags: null,
63
- value: slackUrl,
64
- created_by: 1,
65
- created_at: now,
66
- updated_by: 1,
67
- updated_at: now
68
- });
69
- }
70
-
71
- if (!slackUsernameSetting) {
72
- logging.info(`Populating slack_username setting with value: ${slackUsername}`);
73
-
74
- await knex('settings')
75
- .insert({
76
- id: ObjectId().toHexString(),
77
- key: 'slack_username',
78
- group: 'slack',
79
- type: 'string',
80
- flags: null,
81
- value: slackUsername,
82
- created_by: 1,
83
- created_at: now,
84
- updated_by: 1,
85
- updated_at: now
86
- });
87
- }
88
-
89
- logging.info(`Removing slack setting`);
90
-
91
- await knex('settings')
92
- .where({
93
- key: 'slack'
94
- })
95
- .del();
96
- });
@@ -1,41 +0,0 @@
1
- const {chunk} = require('lodash');
2
- const ObjectID = require('bson-objectid').default;
3
- const logging = require('@tryghost/logging');
4
- const {createTransactionalMigration} = require('../../utils');
5
-
6
- module.exports = createTransactionalMigration(
7
- async function up(knex) {
8
- logging.info('Populating members_status_events from members table');
9
-
10
- await knex('members_status_events').del();
11
-
12
- const allMembers = await knex.select(
13
- 'id as member_id',
14
- 'status as to_status',
15
- 'created_at'
16
- ).from('members');
17
-
18
- const membersStatusEvents = allMembers.map((event) => {
19
- return {
20
- ...event,
21
- id: ObjectID().toHexString(),
22
- from_status: null
23
- };
24
- });
25
-
26
- // SQLite3 supports 999 variables max, each row uses 5 variables so ⌊999/5⌋ = 199
27
- const chunkSize = 199;
28
-
29
- const eventChunks = chunk(membersStatusEvents, chunkSize);
30
-
31
- // eslint-disable-next-line no-restricted-syntax
32
- for (const events of eventChunks) {
33
- await knex.insert(events).into('members_status_events');
34
- }
35
- },
36
- async function down(knex) {
37
- logging.info('Deleting all members_status_events');
38
- return knex('members_status_events').del();
39
- }
40
- );
41
-