ghost 5.130.2 → 6.0.0-alpha.2

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 (281) hide show
  1. package/components/tryghost-i18n-6.0.0-alpha.2.tgz +0 -0
  2. package/core/boot.js +0 -2
  3. package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +1 -1
  4. package/core/built/admin/assets/admin-x-activitypub/{index-B8te98RZ.mjs → index-BZDwG-OG.mjs} +7397 -7385
  5. package/core/built/admin/assets/admin-x-activitypub/{index-C8qwgKWF.mjs → index-DTlSQCGz.mjs} +2 -2
  6. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-CAtv7MlN.mjs → CodeEditorView-CCUvrZhe.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-BVxh86CD.mjs → index-Cubs_8W6.mjs} +8088 -8532
  9. package/core/built/admin/assets/admin-x-settings/{index-DUhmXSBR.mjs → index-D0ejKdD5.mjs} +2 -2
  10. package/core/built/admin/assets/admin-x-settings/{modals-B5dtfzsB.mjs → modals-DSxs9dLy.mjs} +1676 -1614
  11. package/core/built/admin/assets/{chunk.524.1f2faf572078e5b86b09.js → chunk.524.0953dd72ae1efbabe0de.js} +7 -7
  12. package/core/built/admin/assets/{chunk.582.675905fe8f9be138fb19.js → chunk.582.3caa825c2a91efc48f1d.js} +8 -8
  13. package/core/built/admin/assets/{ghost-280b83af263b51bc4d6ce5bd8f536096.js → ghost-db0f84981913aec8a672c57aa22da07a.js} +40 -45
  14. package/core/built/admin/assets/posts/posts.js +6549 -6537
  15. package/core/built/admin/assets/stats/stats.js +8824 -8812
  16. package/core/built/admin/index.html +3 -3
  17. package/core/frontend/helpers/get.js +4 -2
  18. package/core/frontend/helpers/ghost_head.js +71 -77
  19. package/core/frontend/meta/canonical-url.js +1 -7
  20. package/core/frontend/meta/context-object.js +1 -1
  21. package/core/frontend/meta/get-meta.js +1 -4
  22. package/core/frontend/meta/og-image.js +1 -1
  23. package/core/frontend/meta/og-type.js +0 -2
  24. package/core/frontend/meta/schema.js +1 -1
  25. package/core/frontend/meta/twitter-image.js +1 -1
  26. package/core/frontend/meta/url.js +1 -12
  27. package/core/frontend/services/rendering/context.js +0 -8
  28. package/core/frontend/web/middleware/static-theme.js +20 -1
  29. package/core/server/api/endpoints/index.js +0 -4
  30. package/core/server/api/endpoints/session.js +0 -9
  31. package/core/server/api/endpoints/utils/serializers/input/settings.js +0 -2
  32. package/core/server/api/endpoints/utils/serializers/input/utils/settings-filter-type-group-mapper.js +0 -1
  33. package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-group-mapper.js +0 -1
  34. package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-type-mapper.js +0 -1
  35. package/core/server/api/endpoints/utils/serializers/output/all.js +1 -1
  36. package/core/server/api/endpoints/utils/serializers/output/index.js +0 -4
  37. package/core/server/api/endpoints/utils/serializers/output/mappers/snippets.js +1 -5
  38. package/core/server/api/endpoints/utils/serializers/output/members.js +0 -2
  39. package/core/server/api/endpoints/utils/validators/input/index.js +0 -4
  40. package/core/server/data/importer/importers/data/Base.js +1 -3
  41. package/core/server/data/importer/importers/data/SettingsImporter.js +1 -3
  42. package/core/server/data/migrations/utils/index.js +1 -4
  43. package/core/server/data/migrations/utils/permissions.js +14 -6
  44. package/core/server/data/migrations/utils/settings.js +39 -22
  45. package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-final-v4.js +2 -0
  46. package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-no-op.js +6 -0
  47. package/core/server/data/migrations/versions/5.100/2024-11-06-04-45-15-add-activitypub-integration.js +4 -2
  48. package/core/server/data/migrations/versions/5.113/2025-03-07-12-24-00-add-super-editor.js +4 -2
  49. package/core/server/data/migrations/versions/5.3/2022-07-06-07-58-add-ghost-explore-integration-role.js +4 -2
  50. package/core/server/data/migrations/versions/5.3/2022-07-06-09-17-add-ghost-explore-integration.js +4 -2
  51. package/core/server/data/migrations/versions/5.3/2022-07-06-09-26-add-ghost-explore-integration-api-key.js +4 -2
  52. package/core/server/data/migrations/versions/5.40/2023-03-21-18-42-add-self-serve-integration-role.js +4 -2
  53. package/core/server/data/migrations/versions/5.40/2023-03-21-18-52-add-self-serve-integration.js +4 -2
  54. package/core/server/data/migrations/versions/5.40/2023-03-21-19-02-add-self-serve-integration-api-key.js +4 -2
  55. package/core/server/data/migrations/versions/5.63/2023-09-13-13-03-10-add-ghost-core-content-integration.js +4 -2
  56. package/core/server/data/migrations/versions/5.63/2023-09-13-13-34-11-add-ghost-core-content-integration-key.js +4 -2
  57. package/core/server/data/migrations/versions/6.0/2025-06-20-01-41-54-remove-updated-by-column.js +46 -0
  58. package/core/server/data/migrations/versions/6.0/2025-06-20-13-41-55-remove-created-by-column.js +47 -0
  59. package/core/server/data/migrations/versions/6.0/2025-06-23-09-49-25-add-missing-member-uuids.js +22 -0
  60. package/core/server/data/migrations/versions/6.0/2025-06-23-10-03-26-members-nullable-uuid.js +5 -0
  61. package/core/server/data/migrations/versions/6.0/2025-06-24-09-19-42-use-object-id-for-hardcoded-user-id.js +95 -0
  62. package/core/server/data/migrations/versions/6.0/2025-06-25-15-03-29-remove-amp-from-settings.js +6 -0
  63. package/core/server/data/migrations/versions/6.0/2025-06-30-13-59-10-remove-mail-events-table.js +3 -0
  64. package/core/server/data/migrations/versions/6.0/2025-06-30-14-00-00-update-feature-image-alt-length.js +25 -0
  65. package/core/server/data/schema/default-settings/default-settings.json +0 -13
  66. package/core/server/data/schema/fixtures/FixtureManager.js +128 -5
  67. package/core/server/data/schema/fixtures/fixtures.json +4 -6
  68. package/core/server/data/schema/fixtures/index.js +3 -1
  69. package/core/server/data/schema/schema.js +20 -65
  70. package/core/server/data/seeders/DataGenerator.js +11 -2
  71. package/core/server/data/seeders/importers/EmailsImporter.js +1 -3
  72. package/core/server/data/seeders/importers/LabelsImporter.js +1 -3
  73. package/core/server/data/seeders/importers/MembersImporter.js +0 -1
  74. package/core/server/data/seeders/importers/MembersStripeCustomersImporter.js +1 -2
  75. package/core/server/data/seeders/importers/MembersStripeCustomersSubscriptionsImporter.js +0 -1
  76. package/core/server/data/seeders/importers/PostsImporter.js +0 -1
  77. package/core/server/data/seeders/importers/RolesUsersImporter.js +6 -1
  78. package/core/server/data/seeders/importers/TagsImporter.js +1 -2
  79. package/core/server/data/seeders/importers/UsersImporter.js +1 -2
  80. package/core/server/data/tinybird/ARCHITECTURE.md +0 -4
  81. package/core/server/data/tinybird/DOCS.md +0 -4
  82. package/core/server/models/base/bookshelf.js +8 -1
  83. package/core/server/models/base/plugins/events.js +0 -28
  84. package/core/server/models/base/plugins/user-type.js +10 -36
  85. package/core/server/models/post.js +25 -10
  86. package/core/server/models/relations/authors.js +2 -2
  87. package/core/server/models/settings.js +1 -14
  88. package/core/server/models/user.js +33 -6
  89. package/core/server/services/activitypub/ActivityPubService.js +1 -2
  90. package/core/server/services/activitypub/ActivityPubService.ts +1 -2
  91. package/core/server/services/explore-ping/ExplorePingService.js +3 -1
  92. package/core/server/services/link-redirection/README.md +1 -1
  93. package/core/server/services/mentions/MentionSendingService.js +1 -1
  94. package/core/server/services/settings/SettingsBREADService.js +5 -1
  95. package/core/server/services/settings/settings-service.js +3 -1
  96. package/core/server/services/settings-helpers/SettingsHelpers.js +0 -12
  97. package/core/server/services/update-check/UpdateCheckService.js +18 -2
  98. package/core/server/services/url/config.js +0 -2
  99. package/core/server/web/api/app.js +4 -0
  100. package/core/server/web/api/endpoints/admin/middleware.js +8 -9
  101. package/core/server/web/api/endpoints/admin/routes.js +0 -2
  102. package/core/server/web/comments/routes.js +3 -0
  103. package/core/server/web/shared/middleware/index.js +4 -0
  104. package/core/server/web/shared/middleware/max-limit-cap.js +27 -0
  105. package/core/server/web/shared/middleware/pretty-urls.js +3 -1
  106. package/core/server/web/shared/middleware/redirect-amp-urls.js +36 -0
  107. package/core/shared/config/defaults.json +2 -0
  108. package/core/shared/config/overrides.json +1 -4
  109. package/core/shared/labs.js +2 -6
  110. package/core/shared/max-limit-cap.js +61 -0
  111. package/package.json +5 -6
  112. package/tsconfig.tsbuildinfo +1 -1
  113. package/yarn.lock +18 -107
  114. package/components/tryghost-i18n-5.130.2.tgz +0 -0
  115. package/core/built/admin/assets/img/amp-d7b72aae3315fda95921fb575dfca100.svg +0 -4
  116. package/core/frontend/apps/amp/index.js +0 -30
  117. package/core/frontend/apps/amp/lib/helpers/amp_analytics.js +0 -32
  118. package/core/frontend/apps/amp/lib/helpers/amp_components.js +0 -48
  119. package/core/frontend/apps/amp/lib/helpers/amp_content.js +0 -214
  120. package/core/frontend/apps/amp/lib/helpers/amp_style.js +0 -8
  121. package/core/frontend/apps/amp/lib/router.js +0 -95
  122. package/core/frontend/apps/amp/lib/views/amp.hbs +0 -1046
  123. package/core/frontend/meta/amp-url.js +0 -14
  124. package/core/server/api/endpoints/mail-events.js +0 -17
  125. package/core/server/api/endpoints/utils/serializers/output/mail-events.js +0 -9
  126. package/core/server/api/endpoints/utils/validators/input/mail-events.js +0 -7
  127. package/core/server/data/migrations/utils/constants.js +0 -3
  128. package/core/server/data/migrations/versions/4.0/01-update-mobiledoc.js +0 -61
  129. package/core/server/data/migrations/versions/4.0/02-add-status-column-to-members.js +0 -11
  130. package/core/server/data/migrations/versions/4.0/03-populate-status-column-for-members.js +0 -81
  131. package/core/server/data/migrations/versions/4.0/04-drop-apps-related-tables.js +0 -10
  132. package/core/server/data/migrations/versions/4.0/05-add-members-subscribe-events-table.js +0 -9
  133. package/core/server/data/migrations/versions/4.0/06-populate-members-subscribe-events-table.js +0 -53
  134. package/core/server/data/migrations/versions/4.0/07-alter-unique-constraint-for-posts-slug.js +0 -7
  135. package/core/server/data/migrations/versions/4.0/08-add-members-login-events-table.js +0 -7
  136. package/core/server/data/migrations/versions/4.0/09-add-members-email-change-events-table.js +0 -9
  137. package/core/server/data/migrations/versions/4.0/10-add-members-status-events-table.js +0 -9
  138. package/core/server/data/migrations/versions/4.0/11-add-members-paid-subscription-events-table.js +0 -12
  139. package/core/server/data/migrations/versions/4.0/12-delete-apps-related-settings-keys.js +0 -16
  140. package/core/server/data/migrations/versions/4.0/13-add-members-payment-events-table.js +0 -10
  141. package/core/server/data/migrations/versions/4.0/14-remove-orphaned-stripe-records.js +0 -36
  142. package/core/server/data/migrations/versions/4.0/15-add-frontmatter-column-to-meta.js +0 -7
  143. package/core/server/data/migrations/versions/4.0/16-refactor-slack-setting.js +0 -96
  144. package/core/server/data/migrations/versions/4.0/17-populate-members-status-events-table.js +0 -41
  145. package/core/server/data/migrations/versions/4.0/18-transform-urls-absolute-to-transform-ready.js +0 -201
  146. package/core/server/data/migrations/versions/4.0/19-remove-labs-members-setting.js +0 -10
  147. package/core/server/data/migrations/versions/4.0/20-refactor-unsplash-setting.js +0 -41
  148. package/core/server/data/migrations/versions/4.0/21-sanitize-email-batches-provider-id.js +0 -8
  149. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +0 -87
  150. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +0 -66
  151. package/core/server/data/migrations/versions/4.0/24-add-missing-email-permissions.js +0 -36
  152. package/core/server/data/migrations/versions/4.0/25-populate-members-paid-subscription-events-table.js +0 -129
  153. package/core/server/data/migrations/versions/4.0/26-add-cascade-on-delete.js +0 -76
  154. package/core/server/data/migrations/versions/4.0/27-add-primary-key-brute-migrations-lock.js +0 -9
  155. package/core/server/data/migrations/versions/4.0/28-add-webhook-intergrations-foreign-key.js +0 -16
  156. package/core/server/data/migrations/versions/4.0/29-fix-foreign-key-for-members-stripe-customers-subscriptions.js +0 -35
  157. package/core/server/data/migrations/versions/4.0/30-set-default-accent-color.js +0 -21
  158. package/core/server/data/migrations/versions/4.1/01-fix-backup-content-permission-typo.js +0 -15
  159. package/core/server/data/migrations/versions/4.1/02-add-unique-constraint-for-member-stripe-tables.js +0 -21
  160. package/core/server/data/migrations/versions/4.11/01-add-oauth-user-data.js +0 -12
  161. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +0 -43
  162. package/core/server/data/migrations/versions/4.12/01-add-email-only-column-to-posts-meta-table.js +0 -7
  163. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +0 -39
  164. package/core/server/data/migrations/versions/4.13/01-add-members-stripe-connect-auth-permission-to-administrators.js +0 -6
  165. package/core/server/data/migrations/versions/4.13/02-add-members-products-events-table.js +0 -33
  166. package/core/server/data/migrations/versions/4.14/01-fix-comped-member-statuses.js +0 -73
  167. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +0 -61
  168. package/core/server/data/migrations/versions/4.15/01-add-temp-members-analytic-events-table.js +0 -12
  169. package/core/server/data/migrations/versions/4.16/01-add-custom-theme-settings-table.js +0 -9
  170. package/core/server/data/migrations/versions/4.17/01-add-custom-theme-settings-permissions.js +0 -21
  171. package/core/server/data/migrations/versions/4.17/02-add-offers-table.js +0 -19
  172. package/core/server/data/migrations/versions/4.17/03-add-offers-permissions.js +0 -35
  173. package/core/server/data/migrations/versions/4.19/01-add-active-column-to-offers.js +0 -7
  174. package/core/server/data/migrations/versions/4.19/02-add-offer-redemptions-table.js +0 -8
  175. package/core/server/data/migrations/versions/4.2/01-fix-incorrect-mrr-delta-events.js +0 -13
  176. package/core/server/data/migrations/versions/4.20/01-remove-offer-redemptions-table.js +0 -19
  177. package/core/server/data/migrations/versions/4.20/02-remove-offers-table.js +0 -30
  178. package/core/server/data/migrations/versions/4.20/03-add-offers-table.js +0 -21
  179. package/core/server/data/migrations/versions/4.20/04-add-offer-redemptions-table.js +0 -9
  180. package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +0 -44
  181. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +0 -8
  182. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +0 -39
  183. package/core/server/data/migrations/versions/4.23/01-truncate-offer-names.js +0 -59
  184. package/core/server/data/migrations/versions/4.3/01-add-products-table.js +0 -9
  185. package/core/server/data/migrations/versions/4.3/02-add-members-products-table.js +0 -8
  186. package/core/server/data/migrations/versions/4.3/03-add-default-product.js +0 -39
  187. package/core/server/data/migrations/versions/4.3/04-attach-members-to-product.js +0 -50
  188. package/core/server/data/migrations/versions/4.3/05-add-stripe-products-table.js +0 -9
  189. package/core/server/data/migrations/versions/4.3/06-add-stripe-prices-table.js +0 -15
  190. package/core/server/data/migrations/versions/4.3/07-add-products-permissions.js +0 -29
  191. package/core/server/data/migrations/versions/4.3/08-migrate-members-signup-setting.js +0 -109
  192. package/core/server/data/migrations/versions/4.3/09-add-price-id-column-to-subscriptions-table.js +0 -10
  193. package/core/server/data/migrations/versions/4.3/10-populate-stripe-price-id-in-subscriptions.js +0 -20
  194. package/core/server/data/migrations/versions/4.33/2022-01-14-11-50-add-type-column-to-products.js +0 -12
  195. package/core/server/data/migrations/versions/4.33/2022-01-14-11-51-add-default-free-tier.js +0 -40
  196. package/core/server/data/migrations/versions/4.33/2022-01-18-09-07-remove-duplicate-offer-redemptions.js +0 -46
  197. package/core/server/data/migrations/versions/4.33/2022-01-19-10-43-add-active-column-to-products-table.js +0 -7
  198. package/core/server/data/migrations/versions/4.34/2022-01-25-13-53-add-welcome-page-url-column-to-products.js +0 -7
  199. package/core/server/data/migrations/versions/4.35/2022-01-20-05-55-add-post-products-table.js +0 -8
  200. package/core/server/data/migrations/versions/4.35/2022-01-30-15-17-set-welcome-page-url-from-settings.js +0 -45
  201. package/core/server/data/migrations/versions/4.35/2022-02-01-11-48-update-email-recipient-filter-column-type.js +0 -19
  202. package/core/server/data/migrations/versions/4.35/2022-02-01-12-03-update-recipient-filter-column-type.js +0 -19
  203. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +0 -8
  204. package/core/server/data/migrations/versions/4.35/2022-02-02-13-10-transform-specific-tiers-default-content-visibility.js +0 -147
  205. package/core/server/data/migrations/versions/4.35/2022-02-04-04-34-populate-empty-portal-products.js +0 -60
  206. package/core/server/data/migrations/versions/4.36/2022-02-07-14-34-add-last-seen-at-column-to-members.js +0 -10
  207. package/core/server/data/migrations/versions/4.37/2022-02-21-09-53-backfill-members-last-seen-at-column.js +0 -32
  208. package/core/server/data/migrations/versions/4.38/2022-03-01-08-46-add-visibility-to-tiers.js +0 -11
  209. package/core/server/data/migrations/versions/4.38/2022-03-03-16-12-add-visibility-to-tiers.js +0 -8
  210. package/core/server/data/migrations/versions/4.38/2022-03-03-16-17-drop-tiers-visible-column.js +0 -7
  211. package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-free-products-visibility-column.js +0 -66
  212. package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-products-visibility-column.js +0 -36
  213. package/core/server/data/migrations/versions/4.4/01-restore-free-members-signup-setting-from-backup.js +0 -99
  214. package/core/server/data/migrations/versions/4.4/02-migrate-members-signup-access.js +0 -126
  215. package/core/server/data/migrations/versions/4.40/2022-03-07-14-37-add-members-cancel-events-table.js +0 -8
  216. package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-offers-admin-integration-permission-roles.js +0 -23
  217. package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-tiers-admin-integration-permission-roles.js +0 -20
  218. package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +0 -25
  219. package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +0 -28
  220. package/core/server/data/migrations/versions/4.43/2022-03-28-19-26-recreate-newsletter-table.js +0 -29
  221. package/core/server/data/migrations/versions/4.43/2022-03-29-14-45-add-members-newsletters-table.js +0 -7
  222. package/core/server/data/migrations/versions/4.43/2022-04-01-10-13-add-post-newsletter-relation.js +0 -108
  223. package/core/server/data/migrations/versions/4.43/2022-04-06-09-47-add-type-column-to-paid-subscription-events.js +0 -7
  224. package/core/server/data/migrations/versions/4.43/2022-04-06-14-56-add-email-newsletter-relation.js +0 -8
  225. package/core/server/data/migrations/versions/4.43/2022-04-08-10-45-add-subscription-id-to-mrr-events.js +0 -7
  226. package/core/server/data/migrations/versions/4.44/2022-04-06-15-22-populate-type-column-for-paid-subscription-events.js +0 -21
  227. package/core/server/data/migrations/versions/4.44/2022-04-08-11-54-add-cancelled-events.js +0 -51
  228. package/core/server/data/migrations/versions/4.44/2022-04-11-08-24-add-newsletter-permissions.js +0 -33
  229. package/core/server/data/migrations/versions/4.44/2022-04-11-10-54-add-mrr-to-subscriptions.js +0 -8
  230. package/core/server/data/migrations/versions/4.44/2022-04-12-07-33-fill-mrr.js +0 -29
  231. package/core/server/data/migrations/versions/4.44/2022-04-13-12-00-remove-newsletter-sender-name-not-null-constraint.js +0 -33
  232. package/core/server/data/migrations/versions/4.44/2022-04-15-07-53-add-offer-id-to-subscriptions.js +0 -9
  233. package/core/server/data/migrations/versions/4.45/2022-04-19-12-23-backfill-subscriptions-offers.js +0 -60
  234. package/core/server/data/migrations/versions/4.45/2022-04-20-11-25-add-newsletter-read-permission.js +0 -9
  235. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +0 -8
  236. package/core/server/data/migrations/versions/4.46/2022-04-13-12-00-add-created-at-newsletters.js +0 -6
  237. package/core/server/data/migrations/versions/4.46/2022-04-13-12-01-add-updated-at-newsletters.js +0 -6
  238. package/core/server/data/migrations/versions/4.46/2022-04-13-12-02-fill-created-at-newsletters.js +0 -19
  239. package/core/server/data/migrations/versions/4.46/2022-04-13-12-03-drop-nullable-created-at-newsletters.js +0 -3
  240. package/core/server/data/migrations/versions/4.46/2022-04-13-12-08-newsletters-show-header-name.js +0 -7
  241. package/core/server/data/migrations/versions/4.46/2022-04-13-12-57-add-uuid-column-to-newsletters.js +0 -8
  242. package/core/server/data/migrations/versions/4.46/2022-04-13-12-58-fill-uuid-for-newsletters.js +0 -19
  243. package/core/server/data/migrations/versions/4.46/2022-04-13-12-59-drop-nullable-uuid-newsletters.js +0 -3
  244. package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js +0 -92
  245. package/core/server/data/migrations/versions/4.46/2022-04-20-08-39-map-subscribers-to-default-newsletter.js +0 -66
  246. package/core/server/data/migrations/versions/4.46/2022-04-22-07-43-add-newsletter-id-to-subscribe-events.js +0 -9
  247. package/core/server/data/migrations/versions/4.46/2022-04-27-07-59-set-newsletter-id-subscribe-events.js +0 -31
  248. package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-update-newsletter-sending-options.js +0 -34
  249. package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-transform-newsletter-header-image.js +0 -26
  250. package/core/server/data/migrations/versions/4.5/01-add-stripe-price-description-column.js +0 -7
  251. package/core/server/data/migrations/versions/4.5/02-add-product-description-column.js +0 -7
  252. package/core/server/data/migrations/versions/4.5/03-give-label-read-permissions-to-editors.js +0 -14
  253. package/core/server/data/migrations/versions/4.5/04-remove-unique-constraint-from-product-name.js +0 -13
  254. package/core/server/data/migrations/versions/4.5/05-rename-default-product-to-site-title.js +0 -38
  255. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +0 -47
  256. package/core/server/data/migrations/versions/4.7/01-add-monthly-price-column-to-products.js +0 -7
  257. package/core/server/data/migrations/versions/4.7/02-add-yearly-price-column-to-products.js +0 -7
  258. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +0 -42
  259. package/core/server/data/migrations/versions/4.8/01-add-feature-image-alt-column-to-posts-meta.js +0 -7
  260. package/core/server/data/migrations/versions/4.8/02-add-feature-image-caption-column-to-posts-meta.js +0 -7
  261. package/core/server/data/migrations/versions/4.8/03-add-default-product-portal-products.js +0 -69
  262. package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js +0 -124
  263. package/core/server/data/migrations/versions/4.9/01-add-reset-all-passwords-permission.js +0 -11
  264. package/core/server/data/migrations/versions/4.9/02-add-benefits-table.js +0 -9
  265. package/core/server/data/migrations/versions/4.9/03-add-products-benefits-table.js +0 -8
  266. package/core/server/data/migrations/versions/4.9/04-add-member-segment-to-email-batches.js +0 -7
  267. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +0 -87
  268. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +0 -47
  269. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +0 -39
  270. package/core/server/models/mail-event.js +0 -12
  271. package/core/server/services/mail-events/BookshelfMailEventRepository.js +0 -40
  272. package/core/server/services/mail-events/InMemoryMailEventRepository.js +0 -10
  273. package/core/server/services/mail-events/InMemoryMailEventRepository.ts +0 -8
  274. package/core/server/services/mail-events/MailEvent.js +0 -20
  275. package/core/server/services/mail-events/MailEvent.ts +0 -10
  276. package/core/server/services/mail-events/MailEventRepository.js +0 -2
  277. package/core/server/services/mail-events/MailEventRepository.ts +0 -5
  278. package/core/server/services/mail-events/MailEventService.js +0 -124
  279. package/core/server/services/mail-events/MailEventService.ts +0 -169
  280. package/core/server/services/mail-events/index.js +0 -21
  281. package/core/server/services/mail-events/libraries.d.ts +0 -2
@@ -1,201 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const urlUtils = require('../../../../../shared/url-utils');
3
- const mobiledocLib = require('../../../../lib/mobiledoc');
4
- const {createIrreversibleMigration} = require('../../utils');
5
-
6
- module.exports = createIrreversibleMigration(async (knex) => {
7
- logging.info('Transforming all internal urls to transform-ready');
8
-
9
- await knex.transaction(async (trx) => {
10
- // posts and posts_meta
11
- // get list of posts ids, use .forUpdate to lock rows until the transaction is finished
12
- const postIdRows = await knex('posts')
13
- .transacting(trx)
14
- .forUpdate()
15
- .select('id');
16
-
17
- // transform each post individually to avoid dumping all posts into memory and
18
- // pushing all queries into the query builder buffer in parallel
19
- // https://stackoverflow.com/questions/54105280/how-to-loop-through-multi-line-sql-query-and-use-them-in-knex-transactions
20
-
21
- // eslint-disable-next-line no-restricted-syntax
22
- for (const postIdRow of postIdRows) {
23
- const {id} = postIdRow;
24
- const [post] = await knex('posts')
25
- .transacting(trx)
26
- .where({id})
27
- .select([
28
- 'mobiledoc',
29
- 'custom_excerpt',
30
- 'codeinjection_head',
31
- 'codeinjection_foot',
32
- 'feature_image',
33
- 'canonical_url'
34
- ]);
35
-
36
- /* eslint-disable camelcase */
37
- const mobiledoc = urlUtils.mobiledocToTransformReady(post.mobiledoc, {cardTransformers: mobiledocLib.cards});
38
- const custom_excerpt = urlUtils.htmlToTransformReady(post.custom_excerpt);
39
- const codeinjection_head = urlUtils.htmlToTransformReady(post.codeinjection_head);
40
- const codeinjection_foot = urlUtils.htmlToTransformReady(post.codeinjection_foot);
41
- const feature_image = urlUtils.toTransformReady(post.feature_image);
42
- const canonical_url = urlUtils.toTransformReady(post.canonical_url, {ignoreProtocol: false});
43
-
44
- await knex('posts')
45
- .transacting(trx)
46
- .where({id})
47
- .update({
48
- mobiledoc,
49
- custom_excerpt,
50
- codeinjection_head,
51
- codeinjection_foot,
52
- feature_image,
53
- canonical_url
54
- });
55
-
56
- const [postMeta] = await knex('posts_meta')
57
- .transacting(trx)
58
- .where({post_id: id})
59
- .select([
60
- 'og_image',
61
- 'twitter_image'
62
- ]);
63
-
64
- if (postMeta) {
65
- const og_image = urlUtils.toTransformReady(postMeta.og_image);
66
- const twitter_image = urlUtils.toTransformReady(postMeta.twitter_image);
67
-
68
- await knex('posts_meta')
69
- .transacting(trx)
70
- .where({post_id: id})
71
- .update({
72
- og_image,
73
- twitter_image
74
- });
75
- }
76
- }
77
-
78
- // users
79
- const userIdRows = await knex('users')
80
- .transacting(trx)
81
- .forUpdate()
82
- .select('id');
83
-
84
- // eslint-disable-next-line no-restricted-syntax
85
- for (const userIdRow of userIdRows) {
86
- const {id} = userIdRow;
87
- const [user] = await knex('users')
88
- .transacting(trx)
89
- .where({id})
90
- .select([
91
- 'profile_image',
92
- 'cover_image'
93
- ]);
94
-
95
- const profile_image = urlUtils.toTransformReady(user.profile_image);
96
- const cover_image = urlUtils.toTransformReady(user.cover_image);
97
-
98
- await knex('users')
99
- .transacting(trx)
100
- .where({id})
101
- .update({
102
- profile_image,
103
- cover_image
104
- });
105
- }
106
-
107
- // tags
108
- const tagIdRows = await knex('tags')
109
- .transacting(trx)
110
- .forUpdate()
111
- .select('id');
112
-
113
- // eslint-disable-next-line no-restricted-syntax
114
- for (const tagIdRow of tagIdRows) {
115
- const {id} = tagIdRow;
116
- const [tag] = await knex('tags')
117
- .transacting(trx)
118
- .where({id})
119
- .select([
120
- 'feature_image',
121
- 'og_image',
122
- 'twitter_image',
123
- 'codeinjection_head',
124
- 'codeinjection_foot',
125
- 'canonical_url'
126
- ]);
127
-
128
- const feature_image = urlUtils.toTransformReady(tag.feature_image);
129
- const og_image = urlUtils.toTransformReady(tag.og_image);
130
- const twitter_image = urlUtils.toTransformReady(tag.twitter_image);
131
- const codeinjection_head = urlUtils.htmlToTransformReady(tag.codeinjection_head);
132
- const codeinjection_foot = urlUtils.htmlToTransformReady(tag.codeinjection_foot);
133
- const canonical_url = urlUtils.toTransformReady(tag.canonical_url, {ignoreProtocol: false});
134
-
135
- await knex('tags')
136
- .transacting(trx)
137
- .where({id})
138
- .update({
139
- feature_image,
140
- og_image,
141
- twitter_image,
142
- codeinjection_head,
143
- codeinjection_foot,
144
- canonical_url
145
- });
146
- }
147
-
148
- // snippets
149
- const snippetIdRows = await knex('snippets')
150
- .transacting(trx)
151
- .forUpdate()
152
- .select('id');
153
-
154
- // eslint-disable-next-line no-restricted-syntax
155
- for (const snippetIdRow of snippetIdRows) {
156
- const {id} = snippetIdRow;
157
- const [snippet] = await knex('snippets')
158
- .transacting(trx)
159
- .where({id})
160
- .select([
161
- 'mobiledoc'
162
- ]);
163
-
164
- const mobiledoc = urlUtils.mobiledocToTransformReady(snippet.mobiledoc, {cardTransformers: mobiledocLib.cards});
165
-
166
- await knex('snippets')
167
- .transacting(trx)
168
- .where({id})
169
- .update({
170
- mobiledoc
171
- });
172
- }
173
-
174
- // settings
175
- const settingsRows = await knex('settings')
176
- .transacting(trx)
177
- .forUpdate()
178
- .whereIn('key', [
179
- 'cover_image',
180
- 'logo',
181
- 'icon',
182
- 'portal_button_icon',
183
- 'og_image',
184
- 'twitter_image'
185
- ]);
186
-
187
- // eslint-disable-next-line no-restricted-syntax
188
- for (const settingRow of settingsRows) {
189
- let {key, value} = settingRow;
190
-
191
- value = urlUtils.toTransformReady(value);
192
-
193
- await knex('settings')
194
- .transacting(trx)
195
- .where({key})
196
- .update({value});
197
- }
198
-
199
- return 'transaction complete';
200
- });
201
- });
@@ -1,10 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
-
4
- module.exports = createIrreversibleMigration(async (knex) => {
5
- logging.info('Deleting labs from settings table');
6
-
7
- await knex('settings')
8
- .where('key', '=', 'labs')
9
- .del();
10
- });
@@ -1,41 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
-
4
- module.exports = createIrreversibleMigration(async (knex) => {
5
- logging.info('Updating unsplash setting value');
6
-
7
- const unsplashSetting = await knex('settings')
8
- .select('value')
9
- .where({
10
- key: 'unsplash'
11
- })
12
- .first();
13
-
14
- let isActive;
15
-
16
- if (unsplashSetting && (unsplashSetting.value === 'true' || unsplashSetting.value === 'false')) {
17
- logging.warn(`Skipping update of unsplash value. Current value is already boolean: ${unsplashSetting.value}`);
18
- return;
19
- }
20
-
21
- try {
22
- const value = JSON.parse(unsplashSetting.value);
23
- isActive = typeof value.isActive === 'boolean' ? value.isActive : true;
24
- } catch (err) {
25
- logging.warn(`Wasn't able to parse 'unsplash' setting: ${unsplashSetting.value}, falling back to: 'true'`);
26
- isActive = true;
27
- }
28
-
29
- logging.info(`Updating 'unsplash' setting to: ${isActive}`);
30
-
31
- await knex('settings')
32
- .update({
33
- group: 'unsplash',
34
- type: 'boolean',
35
- flags: null,
36
- value: isActive.toString()
37
- })
38
- .where({
39
- key: 'unsplash'
40
- });
41
- });
@@ -1,8 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
-
4
- module.exports = createIrreversibleMigration(async (knex) => {
5
- logging.info('Sanitizing provider_id values in email_batches');
6
-
7
- await knex.raw('UPDATE email_batches SET provider_id = REPLACE(REPLACE(provider_id, "<", ""), ">", "")');
8
- });
@@ -1,87 +0,0 @@
1
- const {createIrreversibleMigration} = require('../../utils');
2
- const logging = require('@tryghost/logging');
3
- const ObjectID = require('bson-objectid').default;
4
- const security = require('@tryghost/security');
5
-
6
- module.exports = createIrreversibleMigration(
7
- async function up(knex) {
8
- logging.info('Resolving the orphaned webhooks');
9
-
10
- const orphanedWebhooks = await knex('webhooks')
11
- .select('webhooks.id')
12
- .leftJoin('integrations', 'integrations.id', 'webhooks.integration_id')
13
- .where('integrations.id', null);
14
-
15
- if (orphanedWebhooks.length === 0) {
16
- logging.info('No orphaned webhooks found, skipping');
17
- return;
18
- }
19
-
20
- const [role] = await knex('roles')
21
- .select('roles.id')
22
- .where('name', 'Admin Integration');
23
-
24
- if (!role) {
25
- logging.warn('Failed to apply migration because of missing role.');
26
- return;
27
- }
28
-
29
- const now = knex.raw('CURRENT_TIMESTAMP');
30
- const id = ObjectID().toHexString();
31
-
32
- const integration = {
33
- id: id,
34
- type: 'custom',
35
- name: `Legacy webhooks`,
36
- slug: `legacy-webhooks-${id}`,
37
- icon_image: null,
38
- description: `This integration was created as part of the 4.0 migration. It contains all webhooks created via the API that weren't visible in the admin interface previously.`,
39
- created_at: now,
40
- created_by: 1,
41
- updated_at: now,
42
- updated_by: 1
43
- };
44
-
45
- await knex('integrations')
46
- .insert(integration);
47
-
48
- const contentKey = {
49
- id: ObjectID().toHexString(),
50
- type: 'content',
51
- secret: security.secret.create('content'),
52
- role_id: null,
53
- integration_id: integration.id,
54
- created_at: now,
55
- created_by: 1,
56
- updated_at: now,
57
- updated_by: 1
58
- };
59
- await knex('api_keys').insert(contentKey);
60
-
61
- const adminKey = {
62
- id: ObjectID().toHexString(),
63
- type: 'admin',
64
- secret: security.secret.create('admin'),
65
- role_id: role.id,
66
- integration_id: integration.id,
67
- created_at: now,
68
- created_by: 1,
69
- updated_at: now,
70
- updated_by: 1
71
- };
72
- await knex('api_keys').insert(adminKey);
73
-
74
- // eslint-disable-next-line no-restricted-syntax
75
- for (let i = 0; i < orphanedWebhooks.length; i++) {
76
- const webhook = orphanedWebhooks[i];
77
-
78
- await knex('webhooks')
79
- .update({
80
- integration_id: integration.id
81
- })
82
- .where({
83
- id: webhook.id
84
- });
85
- }
86
- }
87
- );
@@ -1,66 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
- const mobiledocLib = require('../../../../lib/mobiledoc');
4
- const htmlToPlaintext = require('@tryghost/html-to-plaintext');
5
-
6
- module.exports = createIrreversibleMigration(async (knex) => {
7
- logging.info('Starting re-generation of posts html.');
8
-
9
- await knex.transaction(async (trx) => {
10
- // get list of posts ids, use .forUpdate to lock rows until the transaction is finished
11
- const postIdRows = await knex('posts')
12
- .transacting(trx)
13
- .forUpdate()
14
- .select('id');
15
-
16
- // transform each post individually to avoid dumping all posts into memory and
17
- // pushing all queries into the query builder buffer in parallel
18
- // https://stackoverflow.com/questions/54105280/how-to-loop-through-multi-line-sql-query-and-use-them-in-knex-transactions
19
-
20
- // eslint-disable-next-line no-restricted-syntax
21
- for (const postIdRow of postIdRows) {
22
- const {id} = postIdRow;
23
- const [post] = await knex('posts')
24
- .transacting(trx)
25
- .where({id})
26
- .select('mobiledoc', 'html', 'plaintext');
27
-
28
- let mobiledoc;
29
-
30
- try {
31
- mobiledoc = JSON.parse(post.mobiledoc || null);
32
-
33
- if (!mobiledoc) {
34
- logging.warn(`No mobiledoc for ${id}. Skipping.`);
35
- continue;
36
- }
37
- } catch (err) {
38
- logging.warn(`Invalid JSON structure for ${id}. Skipping`);
39
- continue;
40
- }
41
-
42
- const html = mobiledocLib.render(mobiledoc);
43
-
44
- const updatedAttrs = {
45
- html: html
46
- };
47
-
48
- if (html !== post.html || !post.plaintext) {
49
- const plaintext = htmlToPlaintext.excerpt(html);
50
-
51
- if (plaintext !== post.plaintext) {
52
- updatedAttrs.plaintext = plaintext;
53
- }
54
- }
55
-
56
- await knex('posts')
57
- .transacting(trx)
58
- .where({id})
59
- .update(updatedAttrs);
60
- }
61
-
62
- return 'transaction complete';
63
- });
64
-
65
- logging.info('Finished re-generation of posts html.');
66
- });
@@ -1,36 +0,0 @@
1
- const {
2
- addPermissionWithRoles,
3
- combineTransactionalMigrations
4
- } = require('../../utils');
5
-
6
- module.exports = combineTransactionalMigrations(
7
- addPermissionWithRoles({
8
- name: 'Read emails',
9
- action: 'read',
10
- object: 'email'
11
- }, [
12
- 'Administrator',
13
- 'Admin Integration',
14
- 'Editor',
15
- 'Author',
16
- 'Contributor'
17
- ]),
18
- addPermissionWithRoles({
19
- name: 'Browse emails',
20
- action: 'browse',
21
- object: 'email'
22
- }, [
23
- 'Administrator',
24
- 'Admin Integration',
25
- 'Editor'
26
- ]),
27
- addPermissionWithRoles({
28
- name: 'Retry emails',
29
- action: 'retry',
30
- object: 'email'
31
- }, [
32
- 'Administrator',
33
- 'Admin Integration',
34
- 'Editor'
35
- ])
36
- );
@@ -1,129 +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
- const errors = require('@tryghost/errors');
6
- const tpl = require('@tryghost/tpl');
7
-
8
- const messages = {
9
- unknownSubscriptionIntervalError: 'Unknown Subscription interval "{interval}" found.'
10
- };
11
-
12
- module.exports = createTransactionalMigration(
13
- async function up(knex) {
14
- logging.info('Populating members_paid_subscription_events from members_stripe_customers_subscriptions');
15
- const allSubscriptions = await knex
16
- .select(
17
- 'c.member_id',
18
- 's.status',
19
- 's.start_date',
20
- 's.updated_at',
21
- 's.created_at',
22
- 's.plan_id',
23
- 's.plan_amount',
24
- 's.plan_currency',
25
- 's.plan_interval'
26
- )
27
- .from('members_stripe_customers_subscriptions as s')
28
- .join('members_stripe_customers as c', 'c.customer_id', '=', 's.customer_id');
29
-
30
- function calculateMrrDelta({interval, amount}) {
31
- if (interval === 'year') {
32
- return Math.floor(amount / 12);
33
- }
34
-
35
- if (interval === 'month') {
36
- return amount;
37
- }
38
-
39
- if (interval === 'week') {
40
- return amount * 4;
41
- }
42
-
43
- if (interval === 'day') {
44
- return amount * 30;
45
- }
46
-
47
- throw new errors.InternalServerError({
48
- message: tpl(messages.unknownSubscriptionIntervalError , {
49
- interval
50
- })
51
- });
52
- }
53
-
54
- const allEvents = allSubscriptions.reduce((allEventsAcc, subscription) => {
55
- if (['incomplete', 'incomplete_expired'].includes(subscription.status)) {
56
- return allEventsAcc;
57
- }
58
-
59
- if (!['year', 'month', 'week', 'day'].includes(subscription.plan_interval)) {
60
- return allEventsAcc;
61
- }
62
-
63
- const events = [];
64
-
65
- if (subscription.status === 'trialing') {
66
- const subscriptionCreatedEvent = {
67
- id: ObjectID().toHexString(),
68
- member_id: subscription.member_id,
69
- from_plan: null,
70
- to_plan: subscription.plan_id,
71
- currency: subscription.plan_currency,
72
- source: 'stripe',
73
- mrr_delta: 0,
74
- created_at: subscription.start_date
75
- };
76
- events.push(subscriptionCreatedEvent);
77
- } else {
78
- const subscriptionCreatedEvent = {
79
- id: ObjectID().toHexString(),
80
- member_id: subscription.member_id,
81
- from_plan: null,
82
- to_plan: subscription.plan_id,
83
- currency: subscription.plan_currency,
84
- source: 'stripe',
85
- mrr_delta: calculateMrrDelta({
86
- amount: subscription.plan_amount,
87
- interval: subscription.plan_interval
88
- }),
89
- created_at: subscription.start_date
90
- };
91
- events.push(subscriptionCreatedEvent);
92
- }
93
-
94
- if (subscription.status === 'canceled') {
95
- const subscriptionCancelledEvent = {
96
- id: ObjectID().toHexString(),
97
- member_id: subscription.member_id,
98
- from_plan: subscription.plan_id,
99
- to_plan: null,
100
- currency: subscription.plan_currency,
101
- source: 'stripe',
102
- mrr_delta: -1 * calculateMrrDelta({
103
- amount: subscription.plan_amount,
104
- interval: subscription.plan_interval
105
- }),
106
- created_at: subscription.updated_at
107
- };
108
- events.push(subscriptionCancelledEvent);
109
- }
110
-
111
- return allEventsAcc.concat(events);
112
- }, []);
113
-
114
- // SQLite3 supports 999 variables max, each row uses 8 variables so ⌊999/8⌋ = 124
115
- const chunkSize = 124;
116
-
117
- const eventChunks = chunk(allEvents, chunkSize);
118
-
119
- // eslint-disable-next-line no-restricted-syntax
120
- for (const events of eventChunks) {
121
- await knex.insert(events).into('members_paid_subscription_events');
122
- }
123
- },
124
- async function down(knex) {
125
- logging.info('Deleting all members_paid_subscription_events');
126
- return knex('members_paid_subscription_events').del();
127
- }
128
- );
129
-
@@ -1,76 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
- const {addForeign, dropForeign} = require('../../../schema/commands');
4
- const DatabaseInfo = require('@tryghost/database-info');
5
-
6
- module.exports = createIrreversibleMigration(async (knex) => {
7
- if (!DatabaseInfo.isSQLite(knex)) {
8
- return logging.warn('Skipping adding "on delete cascade" - database is not SQLite3');
9
- }
10
-
11
- logging.info('Adding on delete cascade for members_labels, members_stripe_customers and members_stripe_customers_subscriptions');
12
-
13
- await dropForeign({
14
- fromTable: 'members_labels',
15
- fromColumn: 'member_id',
16
- toTable: 'members',
17
- toColumn: 'id',
18
- transaction: knex
19
- });
20
- await addForeign({
21
- fromTable: 'members_labels',
22
- fromColumn: 'member_id',
23
- toTable: 'members',
24
- toColumn: 'id',
25
- cascadeDelete: true,
26
- transaction: knex
27
- });
28
-
29
- await dropForeign({
30
- fromTable: 'members_labels',
31
- fromColumn: 'label_id',
32
- toTable: 'labels',
33
- toColumn: 'id',
34
- transaction: knex
35
- });
36
- await addForeign({
37
- fromTable: 'members_labels',
38
- fromColumn: 'label_id',
39
- toTable: 'labels',
40
- toColumn: 'id',
41
- cascadeDelete: true,
42
- transaction: knex
43
- });
44
-
45
- await dropForeign({
46
- fromTable: 'members_stripe_customers',
47
- fromColumn: 'member_id',
48
- toTable: 'members',
49
- toColumn: 'id',
50
- transaction: knex
51
- });
52
- await addForeign({
53
- fromTable: 'members_stripe_customers',
54
- fromColumn: 'member_id',
55
- toTable: 'members',
56
- toColumn: 'id',
57
- cascadeDelete: true,
58
- transaction: knex
59
- });
60
-
61
- await dropForeign({
62
- fromTable: 'members_stripe_customers_subscriptions',
63
- fromColumn: 'customer_id',
64
- toTable: 'members_stripe_customers',
65
- toColumn: 'customer_id',
66
- transaction: knex
67
- });
68
- await addForeign({
69
- fromTable: 'members_stripe_customers_subscriptions',
70
- fromColumn: 'customer_id',
71
- toTable: 'members_stripe_customers',
72
- toColumn: 'customer_id',
73
- cascadeDelete: true,
74
- transaction: knex
75
- });
76
- });
@@ -1,9 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
- const {addPrimaryKey} = require('../../../schema/commands');
4
-
5
- module.exports = createIrreversibleMigration(async (knex) => {
6
- logging.info('Adding a primary key for the brute table');
7
-
8
- await addPrimaryKey('brute', 'key', knex);
9
- });
@@ -1,16 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createIrreversibleMigration} = require('../../utils');
3
- const {addForeign} = require('../../../schema/commands');
4
-
5
- module.exports = createIrreversibleMigration(async (knex) => {
6
- logging.info('Adding the webhooks to integrations foreign key');
7
-
8
- await addForeign({
9
- fromTable: 'webhooks',
10
- fromColumn: 'integration_id',
11
- toTable: 'integrations',
12
- toColumn: 'id',
13
- cascadeDelete: true,
14
- transaction: knex
15
- });
16
- });