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,35 +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 fixing foreign key for members_stripe_customers_subscriptions - database is not SQLite3');
9
- }
10
-
11
- logging.info('Fixing foreign keys for members_stripe_customers_subscriptions');
12
-
13
- await dropForeign({
14
- fromTable: 'members_stripe_customers_subscriptions',
15
- fromColumn: 'customer_id',
16
- toTable: 'members_stripe_customers',
17
- toColumn: 'id',
18
- transaction: knex
19
- });
20
- await dropForeign({
21
- fromTable: 'members_stripe_customers_subscriptions',
22
- fromColumn: 'customer_id',
23
- toTable: 'members_stripe_customers',
24
- toColumn: 'customer_id',
25
- transaction: knex
26
- });
27
- await addForeign({
28
- fromTable: 'members_stripe_customers_subscriptions',
29
- fromColumn: 'customer_id',
30
- toTable: 'members_stripe_customers',
31
- toColumn: 'customer_id',
32
- cascadeDelete: true,
33
- transaction: knex
34
- });
35
- });
@@ -1,21 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createTransactionalMigration} = require('../../utils');
3
-
4
- module.exports = createTransactionalMigration(async function up(knex) {
5
- const existingSetting = await knex.select('*').from('settings').where('key', 'accent_color').first();
6
-
7
- if (!existingSetting) {
8
- logging.warn(`Not setting value of accent_color, setting does not exist`);
9
- return;
10
- }
11
-
12
- if (existingSetting.value) {
13
- logging.warn(`Not setting value of accent_color, value of ${existingSetting.value} already present`);
14
- return;
15
- }
16
-
17
- logging.info('Setting value of accent_color to default #15171A');
18
- await knex('settings').update('value', '#15171A').where('key', 'accent_color');
19
- }, async function down() {
20
- // noop
21
- });
@@ -1,15 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createTransactionalMigration} = require('../../utils');
3
-
4
- module.exports = createTransactionalMigration(async function up(knex) {
5
- const typoedPermission = await knex.select('*').from('permissions').where('action_type', 'backupContect').first();
6
-
7
- if (!typoedPermission) {
8
- return logging.warn('Not updating permissions, no typo found');
9
- }
10
-
11
- logging.info('Updating permissions, fixing typo by renaming "backupContect" to "backupContent"');
12
- await knex('permissions').update('action_type', 'backupContent').where('action_type', 'backupContect');
13
- }, async function down() {
14
- // noop
15
- });
@@ -1,21 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createTransactionalMigration} = require('../../utils');
3
- const {addUnique} = require('../../../schema/commands');
4
- const DatabaseInfo = require('@tryghost/database-info');
5
-
6
- module.exports = createTransactionalMigration(
7
- async function up(connection) {
8
- if (!DatabaseInfo.isSQLite(connection)) {
9
- return logging.warn('Skipping adding unique constraint for members_stripe_customers_subscriptions and members_stripe_customers - database is not SQLite3');
10
- }
11
-
12
- logging.info('Adding unique constraints for members_stripe_customers_subscriptions and members_stripe_customers');
13
-
14
- await addUnique('members_stripe_customers_subscriptions', ['subscription_id'], connection);
15
- await addUnique('members_stripe_customers', ['customer_id'], connection);
16
- },
17
-
18
- async function down() {
19
- // noop
20
- }
21
- );
@@ -1,12 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('oauth', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- provider: {type: 'string', maxlength: 50, nullable: false},
6
- provider_id: {type: 'string', maxlength: 191, nullable: false},
7
- access_token: {type: 'text', maxlength: 65535, nullable: true},
8
- refresh_token: {type: 'text', maxlength: 2000, nullable: true},
9
- created_at: {type: 'dateTime', nullable: false},
10
- updated_at: {type: 'dateTime', nullable: true},
11
- user_id: {type: 'string', maxlength: 24, nullable: false, references: 'users.id'}
12
- });
@@ -1,43 +0,0 @@
1
- const ObjectID = require('bson-objectid').default;
2
- const logging = require('@tryghost/logging');
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- const MIGRATION_USER = 1;
6
-
7
- module.exports = createTransactionalMigration(
8
- async function up(knex) {
9
- const settingExists = await knex('settings')
10
- .where('key', '=', 'email_verification_required')
11
- .first();
12
-
13
- if (!settingExists) {
14
- logging.info('Adding "email_verification_required" record to "settings" table');
15
-
16
- const now = knex.raw('CURRENT_TIMESTAMP');
17
-
18
- await knex('settings')
19
- .insert({
20
- id: ObjectID().toHexString(),
21
- key: 'email_verification_required',
22
- value: 'false',
23
- group: 'email',
24
- type: 'boolean',
25
- flags: 'RO',
26
- created_at: now,
27
- created_by: MIGRATION_USER,
28
- updated_at: now,
29
- updated_by: MIGRATION_USER
30
- });
31
- } else {
32
- logging.warn('Skipped adding "email_verification_required" record to "settings" table. Record already exists!');
33
- }
34
- },
35
-
36
- async function down(knex) {
37
- logging.info('Removing "email_verification_required" record from "settings" table');
38
-
39
- await knex('settings')
40
- .where('key', '=', 'email_verification_required')
41
- .del();
42
- }
43
- );
@@ -1,7 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('posts_meta', 'email_only', {
4
- type: 'boolean',
5
- nullable: false,
6
- defaultTo: false
7
- });
@@ -1,39 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {chunk: chunkArray} = require('lodash');
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- logging.info('Updating members with no products to "free"');
8
-
9
- const freeMembers = await knex('members')
10
- .select('members.id')
11
- .leftJoin('members_products', 'members.id', 'members_products.member_id')
12
- .where('members.status', '!=', 'free')
13
- .whereNull('members_products.member_id');
14
-
15
- if (freeMembers.length === 0) {
16
- logging.info('No free members found');
17
- return;
18
- }
19
-
20
- // SQLite >= 3.32.0 can support 32766 host parameters
21
- // We use one for the SET clause, and the rest can be
22
- // used to populate the WHERE IN (?... clause.
23
- const chunkSize = 32765;
24
-
25
- const freeMembersIds = freeMembers.map(row => row.id);
26
-
27
- const chunks = chunkArray(freeMembersIds, chunkSize);
28
-
29
- // eslint-disable-next-line no-restricted-syntax
30
- for (const chunk of chunks) {
31
- await knex('members')
32
- .update('status', 'free')
33
- .whereIn('id', chunk);
34
- }
35
- },
36
- async function down() {
37
- logging.warn('Not reverting members to incorrect status');
38
- }
39
- );
@@ -1,6 +0,0 @@
1
- const {addPermissionToRole} = require('../../utils');
2
-
3
- module.exports = addPermissionToRole({
4
- permission: 'Auth Stripe Connect for Members',
5
- role: 'Administrator'
6
- });
@@ -1,33 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_product_events', {
4
- id: {
5
- type: 'string',
6
- maxlength: 24,
7
- nullable: false,
8
- primary: true
9
- },
10
- member_id: {
11
- type: 'string',
12
- maxlength: 24,
13
- nullable: false,
14
- references: 'members.id',
15
- cascadeDelete: true
16
- },
17
- product_id: {
18
- type: 'string',
19
- maxlength: 24,
20
- nullable: false,
21
- references: 'products.id',
22
- cascadeDelete: false
23
- },
24
- action: {
25
- type: 'string',
26
- maxlength: 50,
27
- nullable: true
28
- },
29
- created_at: {
30
- type: 'dateTime',
31
- nullable: false
32
- }
33
- });
@@ -1,73 +0,0 @@
1
- const {chunk} = require('lodash');
2
- const {createTransactionalMigration} = require('../../utils');
3
- const logging = require('@tryghost/logging');
4
-
5
- module.exports = createTransactionalMigration(async function up(knex) {
6
- // eslint-disable-next-line no-restricted-syntax
7
- const compedMemberIds = (await knex('members')
8
- .select('members.id')
9
- .innerJoin(
10
- 'members_stripe_customers',
11
- 'members.id',
12
- 'members_stripe_customers.member_id'
13
- ).innerJoin(
14
- 'members_stripe_customers_subscriptions',
15
- function () {
16
- this.on(
17
- 'members_stripe_customers.customer_id',
18
- 'members_stripe_customers_subscriptions.customer_id'
19
- ).onIn(
20
- 'members_stripe_customers_subscriptions.status',
21
- ['active', 'trialing', 'past_due', 'unpaid']
22
- );
23
- }
24
- ).where(
25
- 'members_stripe_customers_subscriptions.plan_nickname',
26
- '=',
27
- 'Complimentary'
28
- ).andWhere(
29
- 'members.status',
30
- '!=',
31
- 'comped'
32
- )).map(({id}) => id);
33
-
34
- if (!compedMemberIds.length) {
35
- logging.warn('No Complimentary members found with incorrect status');
36
- return;
37
- } else {
38
- logging.info(`Found ${compedMemberIds.length} Complimentary members with the incorrect status`);
39
- }
40
-
41
- // Umm? Well... The current version of SQLite3 bundled with Ghost supports
42
- // a maximum of 999 variables, we use one variable for the SET value
43
- // and so we're left with 998 for our WHERE IN clause values
44
- const chunkSize = 998;
45
-
46
- const compedMemberIdChunks = chunk(compedMemberIds, chunkSize);
47
-
48
- // eslint-disable-next-line no-restricted-syntax
49
- for (const compedMemberIdsChunk of compedMemberIdChunks) {
50
- await knex('members')
51
- .update('status', 'comped')
52
- .whereIn('id', compedMemberIdsChunk);
53
- }
54
-
55
- // eslint-disable-next-line no-restricted-syntax
56
- for (const memberId of compedMemberIds) {
57
- const mostRecentStatusEvent = await knex('members_status_events')
58
- .select('*')
59
- .where('member_id', memberId)
60
- .orderBy('created_at', 'desc')
61
- .limit(1)
62
- .first();
63
-
64
- if (!mostRecentStatusEvent) {
65
- logging.warn(`Could not find a status event for member ${memberId} - skipping this member`);
66
- } else if (mostRecentStatusEvent.to_status !== 'comped') {
67
- logging.info(`Updating members_status_event ${mostRecentStatusEvent.id}`);
68
- await knex('members_status_events')
69
- .update('to_status', 'comped')
70
- .where('id', mostRecentStatusEvent.id);
71
- }
72
- }
73
- }, async function down() {});
@@ -1,61 +0,0 @@
1
- const _ = require('lodash');
2
- const logging = require('@tryghost/logging');
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- logging.info('Updating members_status_events for free members');
8
- const freeMemberEvents = await knex('members')
9
- .select(
10
- 'members.id as member_id',
11
- 'members_status_events.id',
12
- 'members_status_events.to_status',
13
- 'members_status_events.created_at'
14
- )
15
- .innerJoin(
16
- 'members_status_events',
17
- 'members.id',
18
- 'members_status_events.member_id'
19
- )
20
- .where('members.status', 'free');
21
-
22
- if (freeMemberEvents.length === 0) {
23
- logging.info('No free members found - skipping migration');
24
- return;
25
- }
26
-
27
- const eventsByMember = _.groupBy(freeMemberEvents, 'member_id');
28
-
29
- const eventsToUpdate = Object.keys(eventsByMember).reduce((incorrectEvents, memberId) => {
30
- const events = eventsByMember[memberId];
31
-
32
- events.sort((a, b) => {
33
- return new Date(b.created_at) - new Date(a.created_at);
34
- });
35
-
36
- const mostRecentStatusEvent = events[0];
37
-
38
- if (mostRecentStatusEvent && mostRecentStatusEvent.to_status !== 'free') {
39
- return incorrectEvents.concat(mostRecentStatusEvent.id);
40
- }
41
-
42
- return incorrectEvents;
43
- }, []);
44
-
45
- logging.info(`Found ${eventsToUpdate.length} member status events that need updating`);
46
-
47
- // Umm? Well... The current version of SQLite3 bundled with Ghost supports
48
- // a maximum of 999 variables, we use one variable for the SET value
49
- // and so we're left with 998 for our WHERE IN clause values
50
- const chunkedEventsToUpdate = _.chunk(eventsToUpdate, 998);
51
-
52
- // eslint-disable-next-line no-restricted-syntax
53
- for (const chunk of chunkedEventsToUpdate) {
54
- logging.info(`Updating a chunk of ${chunk.length} member status events`);
55
- await knex('members_status_events')
56
- .update('to_status', 'free')
57
- .whereIn('id', chunk);
58
- }
59
- },
60
- async function down() {}
61
- );
@@ -1,12 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- module.exports = utils.addTable('temp_member_analytic_events', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- event_name: {type: 'string', maxlength: 50, nullable: false},
6
- created_at: {type: 'dateTime', nullable: false},
7
- member_id: {type: 'string', maxlength: 24, nullable: false},
8
- member_status: {type: 'string', maxlength: 50, nullable: false},
9
- entry_id: {type: 'string', maxlength: 24, nullable: true},
10
- source_url: {type: 'string', maxlength: 2000, nullable: true},
11
- metadata: {type: 'string', maxlength: 191, nullable: true}
12
- });
@@ -1,9 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- module.exports = utils.addTable('custom_theme_settings', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- theme: {type: 'string', maxlength: 191, nullable: false},
6
- key: {type: 'string', maxlength: 191, nullable: false},
7
- type: {type: 'string', maxlength: 50, nullable: false},
8
- value: {type: 'text', maxlength: 65535, nullable: true}
9
- });
@@ -1,21 +0,0 @@
1
- const {
2
- addPermissionWithRoles,
3
- combineTransactionalMigrations
4
- } = require('../../utils');
5
-
6
- module.exports = combineTransactionalMigrations(
7
- addPermissionWithRoles({
8
- name: 'Browse custom theme settings',
9
- action: 'browse',
10
- object: 'custom_theme_setting'
11
- }, [
12
- 'Administrator'
13
- ]),
14
- addPermissionWithRoles({
15
- name: 'Edit custom theme settings',
16
- action: 'edit',
17
- object: 'custom_theme_setting'
18
- }, [
19
- 'Administrator'
20
- ])
21
- );
@@ -1,19 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- module.exports = utils.addTable('offers', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- name: {type: 'string', maxlength: 191, nullable: false, unique: true},
6
- code: {type: 'string', maxlength: 191, nullable: false, unique: true},
7
- product_id: {type: 'string', maxlength: 24, nullable: false, references: 'products.id'},
8
- stripe_coupon_id: {type: 'string', maxlength: 255, nullable: false, unique: true},
9
- interval: {type: 'string', maxlength: 50, nullable: false},
10
- currency: {type: 'string', maxlength: 50, nullable: true},
11
- discount_type: {type: 'string', maxlength: 50, nullable: false},
12
- discount_amount: {type: 'integer', nullable: false},
13
- duration: {type: 'string', maxlength: 50, nullable: false},
14
- duration_in_months: {type: 'integer', nullable: true},
15
- portal_title: {type: 'string', maxlength: 191, nullable: false},
16
- portal_description: {type: 'string', maxlength: 2000, nullable: true},
17
- created_at: {type: 'dateTime', nullable: false},
18
- updated_at: {type: 'dateTime', nullable: true}
19
- });
@@ -1,35 +0,0 @@
1
- const {
2
- addPermissionWithRoles,
3
- combineTransactionalMigrations
4
- } = require('../../utils');
5
-
6
- module.exports = combineTransactionalMigrations(
7
- addPermissionWithRoles({
8
- name: 'Browse offers',
9
- action: 'browse',
10
- object: 'offer'
11
- }, [
12
- 'Administrator'
13
- ]),
14
- addPermissionWithRoles({
15
- name: 'Read offers',
16
- action: 'read',
17
- object: 'offer'
18
- }, [
19
- 'Administrator'
20
- ]),
21
- addPermissionWithRoles({
22
- name: 'Edit offers',
23
- action: 'edit',
24
- object: 'offer'
25
- }, [
26
- 'Administrator'
27
- ]),
28
- addPermissionWithRoles({
29
- name: 'Add offers',
30
- action: 'add',
31
- object: 'offer'
32
- }, [
33
- 'Administrator'
34
- ])
35
- );
@@ -1,7 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- module.exports = utils.createAddColumnMigration('offers', 'active', {
4
- type: 'boolean',
5
- nullable: false,
6
- defaultTo: true
7
- });
@@ -1,8 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('offer_redemptions', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- offer_id: {type: 'string', maxlength: 24, nullable: false, references: 'offers.id', cascadeDelete: true},
6
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
7
- subscription_id: {type: 'string', maxlength: 24, nullable: false, references: 'members_stripe_customers_subscriptions.id', cascadeDelete: true}
8
- });
@@ -1,13 +0,0 @@
1
- const {createTransactionalMigration} = require('../../utils');
2
- const logging = require('@tryghost/logging');
3
-
4
- module.exports = createTransactionalMigration(
5
- async function up(knex) {
6
- logging.info('Fixing incorrect mrr_delta in members_paid_subscription_events table');
7
- await knex.raw('UPDATE members_paid_subscription_events SET mrr_delta = ROUND(mrr_delta / 2) WHERE from_plan = to_plan');
8
- },
9
- async function down(knex) {
10
- logging.info('Reverting mrr_delta to old value in members_paid_subscription_events table');
11
- await knex.raw('UPDATE members_paid_subscription_events SET mrr_delta = ROUND(mrr_delta * 2) WHERE from_plan = to_plan');
12
- }
13
- );
@@ -1,19 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- const migration = utils.addTable('offer_redemptions', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- offer_id: {type: 'string', maxlength: 24, nullable: false, references: 'offers.id', cascadeDelete: true},
6
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
7
- subscription_id: {type: 'string', maxlength: 24, nullable: false, references: 'members_stripe_customers_subscriptions.id', cascadeDelete: true}
8
- });
9
-
10
- // This reverses an "addTable" migration so that we
11
- // drop the table going forwards and re-add it going back
12
- const up = migration.down;
13
- const down = migration.up;
14
-
15
- migration.up = up;
16
- migration.down = down;
17
-
18
- module.exports = migration;
19
-
@@ -1,30 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- const migration = utils.addTable('offers', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- active: {type: 'boolean', nullable: false, defaultTo: true},
6
- name: {type: 'string', maxlength: 191, nullable: false, unique: true},
7
- code: {type: 'string', maxlength: 191, nullable: false, unique: true},
8
- product_id: {type: 'string', maxlength: 24, nullable: false, references: 'products.id'},
9
- stripe_coupon_id: {type: 'string', maxlength: 255, nullable: false, unique: true},
10
- interval: {type: 'string', maxlength: 50, nullable: false},
11
- currency: {type: 'string', maxlength: 50, nullable: true},
12
- discount_type: {type: 'string', maxlength: 50, nullable: false},
13
- discount_amount: {type: 'integer', nullable: false},
14
- duration: {type: 'string', maxlength: 50, nullable: false},
15
- duration_in_months: {type: 'integer', nullable: true},
16
- portal_title: {type: 'string', maxlength: 191, nullable: false},
17
- portal_description: {type: 'string', maxlength: 2000, nullable: true},
18
- created_at: {type: 'dateTime', nullable: false},
19
- updated_at: {type: 'dateTime', nullable: true}
20
- });
21
-
22
- // This reverses an "addTable" migration so that we
23
- // drop the table going forwards and re-add it going back
24
- const up = migration.down;
25
- const down = migration.up;
26
-
27
- migration.up = up;
28
- migration.down = down;
29
-
30
- module.exports = migration;
@@ -1,21 +0,0 @@
1
- const utils = require('../../utils');
2
-
3
- module.exports = utils.addTable('offers', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- active: {type: 'boolean', nullable: false, defaultTo: true},
6
- name: {type: 'string', maxlength: 191, nullable: false, unique: true},
7
- code: {type: 'string', maxlength: 191, nullable: false, unique: true},
8
- product_id: {type: 'string', maxlength: 24, nullable: false, references: 'products.id'},
9
- stripe_coupon_id: {type: 'string', maxlength: 255, nullable: true, unique: true},
10
- interval: {type: 'string', maxlength: 50, nullable: false},
11
- currency: {type: 'string', maxlength: 50, nullable: true},
12
- discount_type: {type: 'string', maxlength: 50, nullable: false},
13
- discount_amount: {type: 'integer', nullable: false},
14
- duration: {type: 'string', maxlength: 50, nullable: false},
15
- duration_in_months: {type: 'integer', nullable: true},
16
- portal_title: {type: 'string', maxlength: 191, nullable: false},
17
- portal_description: {type: 'string', maxlength: 2000, nullable: true},
18
- created_at: {type: 'dateTime', nullable: false},
19
- updated_at: {type: 'dateTime', nullable: true}
20
- });
21
-
@@ -1,9 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('offer_redemptions', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- offer_id: {type: 'string', maxlength: 24, nullable: false, references: 'offers.id', cascadeDelete: true},
6
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
7
- subscription_id: {type: 'string', maxlength: 24, nullable: false, references: 'members_stripe_customers_subscriptions.id', cascadeDelete: true},
8
- created_at: {type: 'dateTime', nullable: false}
9
- });
@@ -1,44 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createNonTransactionalMigration} = require('../../utils');
3
- const {addUnique} = require('../../../schema/commands');
4
- const DatabaseInfo = require('@tryghost/database-info');
5
-
6
- module.exports = createNonTransactionalMigration(
7
- async function up(knex) {
8
- logging.info('Dropping NOT NULL constraint for: portal_title in table: offers');
9
-
10
- await knex.schema.table('offers', function (table) {
11
- table.dropColumn('portal_title');
12
- });
13
-
14
- await knex.schema.table('offers', function (table) {
15
- table.string('portal_title', 191).nullable();
16
- });
17
-
18
- if (DatabaseInfo.isSQLite(knex)) {
19
- // eslint-disable-next-line no-restricted-syntax
20
- for (const column of ['name', 'code', 'stripe_coupon_id']) {
21
- await addUnique('offers', column, knex);
22
- }
23
- }
24
- },
25
- async function down(knex) {
26
- logging.info('Adding NOT NULL constraint for: portal_title in table: offers');
27
-
28
- await knex.schema.table('offers', function (table) {
29
- table.dropColumn('portal_title');
30
- });
31
-
32
- await knex.schema.table('offers', function (table) {
33
- table.string('portal_title', 191).notNullable();
34
- });
35
-
36
- if (DatabaseInfo.isSQLite(knex)) {
37
- // eslint-disable-next-line no-restricted-syntax
38
- for (const column of ['name', 'code', 'stripe_coupon_id']) {
39
- await addUnique('offers', column, knex);
40
- }
41
- }
42
- }
43
- );
44
-
@@ -1,8 +0,0 @@
1
- const {addSetting} = require('../../utils');
2
-
3
- module.exports = addSetting({
4
- key: 'editor_is_launch_complete',
5
- value: 'false',
6
- type: 'boolean',
7
- group: 'editor'
8
- });