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.
- package/components/tryghost-i18n-6.0.0-alpha.2.tgz +0 -0
- package/core/boot.js +0 -2
- package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +1 -1
- package/core/built/admin/assets/admin-x-activitypub/{index-B8te98RZ.mjs → index-BZDwG-OG.mjs} +7397 -7385
- package/core/built/admin/assets/admin-x-activitypub/{index-C8qwgKWF.mjs → index-DTlSQCGz.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{CodeEditorView-CAtv7MlN.mjs → CodeEditorView-CCUvrZhe.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +3 -3
- package/core/built/admin/assets/admin-x-settings/{index-BVxh86CD.mjs → index-Cubs_8W6.mjs} +8088 -8532
- package/core/built/admin/assets/admin-x-settings/{index-DUhmXSBR.mjs → index-D0ejKdD5.mjs} +2 -2
- package/core/built/admin/assets/admin-x-settings/{modals-B5dtfzsB.mjs → modals-DSxs9dLy.mjs} +1676 -1614
- package/core/built/admin/assets/{chunk.524.1f2faf572078e5b86b09.js → chunk.524.0953dd72ae1efbabe0de.js} +7 -7
- package/core/built/admin/assets/{chunk.582.675905fe8f9be138fb19.js → chunk.582.3caa825c2a91efc48f1d.js} +8 -8
- package/core/built/admin/assets/{ghost-280b83af263b51bc4d6ce5bd8f536096.js → ghost-db0f84981913aec8a672c57aa22da07a.js} +40 -45
- package/core/built/admin/assets/posts/posts.js +6549 -6537
- package/core/built/admin/assets/stats/stats.js +8824 -8812
- package/core/built/admin/index.html +3 -3
- package/core/frontend/helpers/get.js +4 -2
- package/core/frontend/helpers/ghost_head.js +71 -77
- package/core/frontend/meta/canonical-url.js +1 -7
- package/core/frontend/meta/context-object.js +1 -1
- package/core/frontend/meta/get-meta.js +1 -4
- package/core/frontend/meta/og-image.js +1 -1
- package/core/frontend/meta/og-type.js +0 -2
- package/core/frontend/meta/schema.js +1 -1
- package/core/frontend/meta/twitter-image.js +1 -1
- package/core/frontend/meta/url.js +1 -12
- package/core/frontend/services/rendering/context.js +0 -8
- package/core/frontend/web/middleware/static-theme.js +20 -1
- package/core/server/api/endpoints/index.js +0 -4
- package/core/server/api/endpoints/session.js +0 -9
- package/core/server/api/endpoints/utils/serializers/input/settings.js +0 -2
- package/core/server/api/endpoints/utils/serializers/input/utils/settings-filter-type-group-mapper.js +0 -1
- package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-group-mapper.js +0 -1
- package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-type-mapper.js +0 -1
- package/core/server/api/endpoints/utils/serializers/output/all.js +1 -1
- package/core/server/api/endpoints/utils/serializers/output/index.js +0 -4
- package/core/server/api/endpoints/utils/serializers/output/mappers/snippets.js +1 -5
- package/core/server/api/endpoints/utils/serializers/output/members.js +0 -2
- package/core/server/api/endpoints/utils/validators/input/index.js +0 -4
- package/core/server/data/importer/importers/data/Base.js +1 -3
- package/core/server/data/importer/importers/data/SettingsImporter.js +1 -3
- package/core/server/data/migrations/utils/index.js +1 -4
- package/core/server/data/migrations/utils/permissions.js +14 -6
- package/core/server/data/migrations/utils/settings.js +39 -22
- package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-final-v4.js +2 -0
- package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-no-op.js +6 -0
- package/core/server/data/migrations/versions/5.100/2024-11-06-04-45-15-add-activitypub-integration.js +4 -2
- package/core/server/data/migrations/versions/5.113/2025-03-07-12-24-00-add-super-editor.js +4 -2
- package/core/server/data/migrations/versions/5.3/2022-07-06-07-58-add-ghost-explore-integration-role.js +4 -2
- package/core/server/data/migrations/versions/5.3/2022-07-06-09-17-add-ghost-explore-integration.js +4 -2
- package/core/server/data/migrations/versions/5.3/2022-07-06-09-26-add-ghost-explore-integration-api-key.js +4 -2
- package/core/server/data/migrations/versions/5.40/2023-03-21-18-42-add-self-serve-integration-role.js +4 -2
- package/core/server/data/migrations/versions/5.40/2023-03-21-18-52-add-self-serve-integration.js +4 -2
- package/core/server/data/migrations/versions/5.40/2023-03-21-19-02-add-self-serve-integration-api-key.js +4 -2
- package/core/server/data/migrations/versions/5.63/2023-09-13-13-03-10-add-ghost-core-content-integration.js +4 -2
- package/core/server/data/migrations/versions/5.63/2023-09-13-13-34-11-add-ghost-core-content-integration-key.js +4 -2
- package/core/server/data/migrations/versions/6.0/2025-06-20-01-41-54-remove-updated-by-column.js +46 -0
- package/core/server/data/migrations/versions/6.0/2025-06-20-13-41-55-remove-created-by-column.js +47 -0
- package/core/server/data/migrations/versions/6.0/2025-06-23-09-49-25-add-missing-member-uuids.js +22 -0
- package/core/server/data/migrations/versions/6.0/2025-06-23-10-03-26-members-nullable-uuid.js +5 -0
- package/core/server/data/migrations/versions/6.0/2025-06-24-09-19-42-use-object-id-for-hardcoded-user-id.js +95 -0
- package/core/server/data/migrations/versions/6.0/2025-06-25-15-03-29-remove-amp-from-settings.js +6 -0
- package/core/server/data/migrations/versions/6.0/2025-06-30-13-59-10-remove-mail-events-table.js +3 -0
- package/core/server/data/migrations/versions/6.0/2025-06-30-14-00-00-update-feature-image-alt-length.js +25 -0
- package/core/server/data/schema/default-settings/default-settings.json +0 -13
- package/core/server/data/schema/fixtures/FixtureManager.js +128 -5
- package/core/server/data/schema/fixtures/fixtures.json +4 -6
- package/core/server/data/schema/fixtures/index.js +3 -1
- package/core/server/data/schema/schema.js +20 -65
- package/core/server/data/seeders/DataGenerator.js +11 -2
- package/core/server/data/seeders/importers/EmailsImporter.js +1 -3
- package/core/server/data/seeders/importers/LabelsImporter.js +1 -3
- package/core/server/data/seeders/importers/MembersImporter.js +0 -1
- package/core/server/data/seeders/importers/MembersStripeCustomersImporter.js +1 -2
- package/core/server/data/seeders/importers/MembersStripeCustomersSubscriptionsImporter.js +0 -1
- package/core/server/data/seeders/importers/PostsImporter.js +0 -1
- package/core/server/data/seeders/importers/RolesUsersImporter.js +6 -1
- package/core/server/data/seeders/importers/TagsImporter.js +1 -2
- package/core/server/data/seeders/importers/UsersImporter.js +1 -2
- package/core/server/data/tinybird/ARCHITECTURE.md +0 -4
- package/core/server/data/tinybird/DOCS.md +0 -4
- package/core/server/models/base/bookshelf.js +8 -1
- package/core/server/models/base/plugins/events.js +0 -28
- package/core/server/models/base/plugins/user-type.js +10 -36
- package/core/server/models/post.js +25 -10
- package/core/server/models/relations/authors.js +2 -2
- package/core/server/models/settings.js +1 -14
- package/core/server/models/user.js +33 -6
- package/core/server/services/activitypub/ActivityPubService.js +1 -2
- package/core/server/services/activitypub/ActivityPubService.ts +1 -2
- package/core/server/services/explore-ping/ExplorePingService.js +3 -1
- package/core/server/services/link-redirection/README.md +1 -1
- package/core/server/services/mentions/MentionSendingService.js +1 -1
- package/core/server/services/settings/SettingsBREADService.js +5 -1
- package/core/server/services/settings/settings-service.js +3 -1
- package/core/server/services/settings-helpers/SettingsHelpers.js +0 -12
- package/core/server/services/update-check/UpdateCheckService.js +18 -2
- package/core/server/services/url/config.js +0 -2
- package/core/server/web/api/app.js +4 -0
- package/core/server/web/api/endpoints/admin/middleware.js +8 -9
- package/core/server/web/api/endpoints/admin/routes.js +0 -2
- package/core/server/web/comments/routes.js +3 -0
- package/core/server/web/shared/middleware/index.js +4 -0
- package/core/server/web/shared/middleware/max-limit-cap.js +27 -0
- package/core/server/web/shared/middleware/pretty-urls.js +3 -1
- package/core/server/web/shared/middleware/redirect-amp-urls.js +36 -0
- package/core/shared/config/defaults.json +2 -0
- package/core/shared/config/overrides.json +1 -4
- package/core/shared/labs.js +2 -6
- package/core/shared/max-limit-cap.js +61 -0
- package/package.json +5 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/yarn.lock +18 -107
- package/components/tryghost-i18n-5.130.2.tgz +0 -0
- package/core/built/admin/assets/img/amp-d7b72aae3315fda95921fb575dfca100.svg +0 -4
- package/core/frontend/apps/amp/index.js +0 -30
- package/core/frontend/apps/amp/lib/helpers/amp_analytics.js +0 -32
- package/core/frontend/apps/amp/lib/helpers/amp_components.js +0 -48
- package/core/frontend/apps/amp/lib/helpers/amp_content.js +0 -214
- package/core/frontend/apps/amp/lib/helpers/amp_style.js +0 -8
- package/core/frontend/apps/amp/lib/router.js +0 -95
- package/core/frontend/apps/amp/lib/views/amp.hbs +0 -1046
- package/core/frontend/meta/amp-url.js +0 -14
- package/core/server/api/endpoints/mail-events.js +0 -17
- package/core/server/api/endpoints/utils/serializers/output/mail-events.js +0 -9
- package/core/server/api/endpoints/utils/validators/input/mail-events.js +0 -7
- package/core/server/data/migrations/utils/constants.js +0 -3
- package/core/server/data/migrations/versions/4.0/01-update-mobiledoc.js +0 -61
- package/core/server/data/migrations/versions/4.0/02-add-status-column-to-members.js +0 -11
- package/core/server/data/migrations/versions/4.0/03-populate-status-column-for-members.js +0 -81
- package/core/server/data/migrations/versions/4.0/04-drop-apps-related-tables.js +0 -10
- package/core/server/data/migrations/versions/4.0/05-add-members-subscribe-events-table.js +0 -9
- package/core/server/data/migrations/versions/4.0/06-populate-members-subscribe-events-table.js +0 -53
- package/core/server/data/migrations/versions/4.0/07-alter-unique-constraint-for-posts-slug.js +0 -7
- package/core/server/data/migrations/versions/4.0/08-add-members-login-events-table.js +0 -7
- package/core/server/data/migrations/versions/4.0/09-add-members-email-change-events-table.js +0 -9
- package/core/server/data/migrations/versions/4.0/10-add-members-status-events-table.js +0 -9
- package/core/server/data/migrations/versions/4.0/11-add-members-paid-subscription-events-table.js +0 -12
- package/core/server/data/migrations/versions/4.0/12-delete-apps-related-settings-keys.js +0 -16
- package/core/server/data/migrations/versions/4.0/13-add-members-payment-events-table.js +0 -10
- package/core/server/data/migrations/versions/4.0/14-remove-orphaned-stripe-records.js +0 -36
- package/core/server/data/migrations/versions/4.0/15-add-frontmatter-column-to-meta.js +0 -7
- package/core/server/data/migrations/versions/4.0/16-refactor-slack-setting.js +0 -96
- package/core/server/data/migrations/versions/4.0/17-populate-members-status-events-table.js +0 -41
- package/core/server/data/migrations/versions/4.0/18-transform-urls-absolute-to-transform-ready.js +0 -201
- package/core/server/data/migrations/versions/4.0/19-remove-labs-members-setting.js +0 -10
- package/core/server/data/migrations/versions/4.0/20-refactor-unsplash-setting.js +0 -41
- package/core/server/data/migrations/versions/4.0/21-sanitize-email-batches-provider-id.js +0 -8
- package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +0 -87
- package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +0 -66
- package/core/server/data/migrations/versions/4.0/24-add-missing-email-permissions.js +0 -36
- package/core/server/data/migrations/versions/4.0/25-populate-members-paid-subscription-events-table.js +0 -129
- package/core/server/data/migrations/versions/4.0/26-add-cascade-on-delete.js +0 -76
- package/core/server/data/migrations/versions/4.0/27-add-primary-key-brute-migrations-lock.js +0 -9
- package/core/server/data/migrations/versions/4.0/28-add-webhook-intergrations-foreign-key.js +0 -16
- package/core/server/data/migrations/versions/4.0/29-fix-foreign-key-for-members-stripe-customers-subscriptions.js +0 -35
- package/core/server/data/migrations/versions/4.0/30-set-default-accent-color.js +0 -21
- package/core/server/data/migrations/versions/4.1/01-fix-backup-content-permission-typo.js +0 -15
- package/core/server/data/migrations/versions/4.1/02-add-unique-constraint-for-member-stripe-tables.js +0 -21
- package/core/server/data/migrations/versions/4.11/01-add-oauth-user-data.js +0 -12
- package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +0 -43
- package/core/server/data/migrations/versions/4.12/01-add-email-only-column-to-posts-meta-table.js +0 -7
- package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +0 -39
- package/core/server/data/migrations/versions/4.13/01-add-members-stripe-connect-auth-permission-to-administrators.js +0 -6
- package/core/server/data/migrations/versions/4.13/02-add-members-products-events-table.js +0 -33
- package/core/server/data/migrations/versions/4.14/01-fix-comped-member-statuses.js +0 -73
- package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +0 -61
- package/core/server/data/migrations/versions/4.15/01-add-temp-members-analytic-events-table.js +0 -12
- package/core/server/data/migrations/versions/4.16/01-add-custom-theme-settings-table.js +0 -9
- package/core/server/data/migrations/versions/4.17/01-add-custom-theme-settings-permissions.js +0 -21
- package/core/server/data/migrations/versions/4.17/02-add-offers-table.js +0 -19
- package/core/server/data/migrations/versions/4.17/03-add-offers-permissions.js +0 -35
- package/core/server/data/migrations/versions/4.19/01-add-active-column-to-offers.js +0 -7
- package/core/server/data/migrations/versions/4.19/02-add-offer-redemptions-table.js +0 -8
- package/core/server/data/migrations/versions/4.2/01-fix-incorrect-mrr-delta-events.js +0 -13
- package/core/server/data/migrations/versions/4.20/01-remove-offer-redemptions-table.js +0 -19
- package/core/server/data/migrations/versions/4.20/02-remove-offers-table.js +0 -30
- package/core/server/data/migrations/versions/4.20/03-add-offers-table.js +0 -21
- package/core/server/data/migrations/versions/4.20/04-add-offer-redemptions-table.js +0 -9
- package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +0 -44
- package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +0 -8
- package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +0 -39
- package/core/server/data/migrations/versions/4.23/01-truncate-offer-names.js +0 -59
- package/core/server/data/migrations/versions/4.3/01-add-products-table.js +0 -9
- package/core/server/data/migrations/versions/4.3/02-add-members-products-table.js +0 -8
- package/core/server/data/migrations/versions/4.3/03-add-default-product.js +0 -39
- package/core/server/data/migrations/versions/4.3/04-attach-members-to-product.js +0 -50
- package/core/server/data/migrations/versions/4.3/05-add-stripe-products-table.js +0 -9
- package/core/server/data/migrations/versions/4.3/06-add-stripe-prices-table.js +0 -15
- package/core/server/data/migrations/versions/4.3/07-add-products-permissions.js +0 -29
- package/core/server/data/migrations/versions/4.3/08-migrate-members-signup-setting.js +0 -109
- package/core/server/data/migrations/versions/4.3/09-add-price-id-column-to-subscriptions-table.js +0 -10
- package/core/server/data/migrations/versions/4.3/10-populate-stripe-price-id-in-subscriptions.js +0 -20
- package/core/server/data/migrations/versions/4.33/2022-01-14-11-50-add-type-column-to-products.js +0 -12
- package/core/server/data/migrations/versions/4.33/2022-01-14-11-51-add-default-free-tier.js +0 -40
- package/core/server/data/migrations/versions/4.33/2022-01-18-09-07-remove-duplicate-offer-redemptions.js +0 -46
- package/core/server/data/migrations/versions/4.33/2022-01-19-10-43-add-active-column-to-products-table.js +0 -7
- package/core/server/data/migrations/versions/4.34/2022-01-25-13-53-add-welcome-page-url-column-to-products.js +0 -7
- package/core/server/data/migrations/versions/4.35/2022-01-20-05-55-add-post-products-table.js +0 -8
- package/core/server/data/migrations/versions/4.35/2022-01-30-15-17-set-welcome-page-url-from-settings.js +0 -45
- package/core/server/data/migrations/versions/4.35/2022-02-01-11-48-update-email-recipient-filter-column-type.js +0 -19
- package/core/server/data/migrations/versions/4.35/2022-02-01-12-03-update-recipient-filter-column-type.js +0 -19
- package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +0 -8
- package/core/server/data/migrations/versions/4.35/2022-02-02-13-10-transform-specific-tiers-default-content-visibility.js +0 -147
- package/core/server/data/migrations/versions/4.35/2022-02-04-04-34-populate-empty-portal-products.js +0 -60
- package/core/server/data/migrations/versions/4.36/2022-02-07-14-34-add-last-seen-at-column-to-members.js +0 -10
- package/core/server/data/migrations/versions/4.37/2022-02-21-09-53-backfill-members-last-seen-at-column.js +0 -32
- package/core/server/data/migrations/versions/4.38/2022-03-01-08-46-add-visibility-to-tiers.js +0 -11
- package/core/server/data/migrations/versions/4.38/2022-03-03-16-12-add-visibility-to-tiers.js +0 -8
- package/core/server/data/migrations/versions/4.38/2022-03-03-16-17-drop-tiers-visible-column.js +0 -7
- package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-free-products-visibility-column.js +0 -66
- package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-products-visibility-column.js +0 -36
- package/core/server/data/migrations/versions/4.4/01-restore-free-members-signup-setting-from-backup.js +0 -99
- package/core/server/data/migrations/versions/4.4/02-migrate-members-signup-access.js +0 -126
- package/core/server/data/migrations/versions/4.40/2022-03-07-14-37-add-members-cancel-events-table.js +0 -8
- package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-offers-admin-integration-permission-roles.js +0 -23
- package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-tiers-admin-integration-permission-roles.js +0 -20
- package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +0 -25
- package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +0 -28
- package/core/server/data/migrations/versions/4.43/2022-03-28-19-26-recreate-newsletter-table.js +0 -29
- package/core/server/data/migrations/versions/4.43/2022-03-29-14-45-add-members-newsletters-table.js +0 -7
- package/core/server/data/migrations/versions/4.43/2022-04-01-10-13-add-post-newsletter-relation.js +0 -108
- package/core/server/data/migrations/versions/4.43/2022-04-06-09-47-add-type-column-to-paid-subscription-events.js +0 -7
- package/core/server/data/migrations/versions/4.43/2022-04-06-14-56-add-email-newsletter-relation.js +0 -8
- package/core/server/data/migrations/versions/4.43/2022-04-08-10-45-add-subscription-id-to-mrr-events.js +0 -7
- package/core/server/data/migrations/versions/4.44/2022-04-06-15-22-populate-type-column-for-paid-subscription-events.js +0 -21
- package/core/server/data/migrations/versions/4.44/2022-04-08-11-54-add-cancelled-events.js +0 -51
- package/core/server/data/migrations/versions/4.44/2022-04-11-08-24-add-newsletter-permissions.js +0 -33
- package/core/server/data/migrations/versions/4.44/2022-04-11-10-54-add-mrr-to-subscriptions.js +0 -8
- package/core/server/data/migrations/versions/4.44/2022-04-12-07-33-fill-mrr.js +0 -29
- package/core/server/data/migrations/versions/4.44/2022-04-13-12-00-remove-newsletter-sender-name-not-null-constraint.js +0 -33
- package/core/server/data/migrations/versions/4.44/2022-04-15-07-53-add-offer-id-to-subscriptions.js +0 -9
- package/core/server/data/migrations/versions/4.45/2022-04-19-12-23-backfill-subscriptions-offers.js +0 -60
- package/core/server/data/migrations/versions/4.45/2022-04-20-11-25-add-newsletter-read-permission.js +0 -9
- package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +0 -8
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-00-add-created-at-newsletters.js +0 -6
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-01-add-updated-at-newsletters.js +0 -6
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-02-fill-created-at-newsletters.js +0 -19
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-03-drop-nullable-created-at-newsletters.js +0 -3
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-08-newsletters-show-header-name.js +0 -7
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-57-add-uuid-column-to-newsletters.js +0 -8
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-58-fill-uuid-for-newsletters.js +0 -19
- package/core/server/data/migrations/versions/4.46/2022-04-13-12-59-drop-nullable-uuid-newsletters.js +0 -3
- package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js +0 -92
- package/core/server/data/migrations/versions/4.46/2022-04-20-08-39-map-subscribers-to-default-newsletter.js +0 -66
- package/core/server/data/migrations/versions/4.46/2022-04-22-07-43-add-newsletter-id-to-subscribe-events.js +0 -9
- package/core/server/data/migrations/versions/4.46/2022-04-27-07-59-set-newsletter-id-subscribe-events.js +0 -31
- package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-update-newsletter-sending-options.js +0 -34
- package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-transform-newsletter-header-image.js +0 -26
- package/core/server/data/migrations/versions/4.5/01-add-stripe-price-description-column.js +0 -7
- package/core/server/data/migrations/versions/4.5/02-add-product-description-column.js +0 -7
- package/core/server/data/migrations/versions/4.5/03-give-label-read-permissions-to-editors.js +0 -14
- package/core/server/data/migrations/versions/4.5/04-remove-unique-constraint-from-product-name.js +0 -13
- package/core/server/data/migrations/versions/4.5/05-rename-default-product-to-site-title.js +0 -38
- package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +0 -47
- package/core/server/data/migrations/versions/4.7/01-add-monthly-price-column-to-products.js +0 -7
- package/core/server/data/migrations/versions/4.7/02-add-yearly-price-column-to-products.js +0 -7
- package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +0 -42
- package/core/server/data/migrations/versions/4.8/01-add-feature-image-alt-column-to-posts-meta.js +0 -7
- package/core/server/data/migrations/versions/4.8/02-add-feature-image-caption-column-to-posts-meta.js +0 -7
- package/core/server/data/migrations/versions/4.8/03-add-default-product-portal-products.js +0 -69
- package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js +0 -124
- package/core/server/data/migrations/versions/4.9/01-add-reset-all-passwords-permission.js +0 -11
- package/core/server/data/migrations/versions/4.9/02-add-benefits-table.js +0 -9
- package/core/server/data/migrations/versions/4.9/03-add-products-benefits-table.js +0 -8
- package/core/server/data/migrations/versions/4.9/04-add-member-segment-to-email-batches.js +0 -7
- package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +0 -87
- package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +0 -47
- package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +0 -39
- package/core/server/models/mail-event.js +0 -12
- package/core/server/services/mail-events/BookshelfMailEventRepository.js +0 -40
- package/core/server/services/mail-events/InMemoryMailEventRepository.js +0 -10
- package/core/server/services/mail-events/InMemoryMailEventRepository.ts +0 -8
- package/core/server/services/mail-events/MailEvent.js +0 -20
- package/core/server/services/mail-events/MailEvent.ts +0 -10
- package/core/server/services/mail-events/MailEventRepository.js +0 -2
- package/core/server/services/mail-events/MailEventRepository.ts +0 -5
- package/core/server/services/mail-events/MailEventService.js +0 -124
- package/core/server/services/mail-events/MailEventService.ts +0 -169
- package/core/server/services/mail-events/index.js +0 -21
- package/core/server/services/mail-events/libraries.d.ts +0 -2
package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
const ObjectId = require('bson-objectid').default;
|
|
2
|
-
const crypto = require('crypto');
|
|
3
|
-
const logging = require('@tryghost/logging');
|
|
4
|
-
const startsWith = require('lodash/startsWith');
|
|
5
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
6
|
-
|
|
7
|
-
module.exports = createTransactionalMigration(
|
|
8
|
-
async function up(knex) {
|
|
9
|
-
// This uses the default settings from core/server/data/schema/default-settings/default-settings.json
|
|
10
|
-
const newsletter = {
|
|
11
|
-
id: (new ObjectId()).toHexString(),
|
|
12
|
-
uuid: crypto.randomUUID(),
|
|
13
|
-
name: 'Ghost',
|
|
14
|
-
description: '',
|
|
15
|
-
slug: 'default-newsletter',
|
|
16
|
-
sender_name: null,
|
|
17
|
-
sender_email: null,
|
|
18
|
-
sender_reply_to: 'newsletter',
|
|
19
|
-
status: 'active',
|
|
20
|
-
visibility: 'members',
|
|
21
|
-
subscribe_on_signup: true,
|
|
22
|
-
sort_order: 0,
|
|
23
|
-
body_font_category: 'sans_serif',
|
|
24
|
-
footer_content: '',
|
|
25
|
-
header_image: null,
|
|
26
|
-
show_badge: true,
|
|
27
|
-
show_feature_image: true,
|
|
28
|
-
show_header_icon: true,
|
|
29
|
-
show_header_title: true,
|
|
30
|
-
show_header_name: false,
|
|
31
|
-
title_alignment: 'center',
|
|
32
|
-
title_font_category: 'sans_serif',
|
|
33
|
-
created_at: knex.raw('CURRENT_TIMESTAMP')
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
// Make sure the newsletter table is empty
|
|
37
|
-
const newsletters = await knex('newsletters').count('*', {as: 'total'});
|
|
38
|
-
|
|
39
|
-
if (newsletters[0].total !== 0) {
|
|
40
|
-
logging.warn('Skipping adding the default newsletter - There is already at least one newsletter');
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Get all settings in one query
|
|
45
|
-
const settings = await knex('settings')
|
|
46
|
-
.whereIn('key', [
|
|
47
|
-
'title',
|
|
48
|
-
'description',
|
|
49
|
-
'newsletter_body_font_category',
|
|
50
|
-
'newsletter_footer_content',
|
|
51
|
-
'newsletter_header_image',
|
|
52
|
-
'newsletter_show_badge',
|
|
53
|
-
'newsletter_show_feature_image',
|
|
54
|
-
'newsletter_show_header_icon',
|
|
55
|
-
'newsletter_show_header_title',
|
|
56
|
-
'newsletter_title_alignment',
|
|
57
|
-
'newsletter_title_font_category'
|
|
58
|
-
])
|
|
59
|
-
.select(['key', 'value']);
|
|
60
|
-
|
|
61
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
62
|
-
for (let {key, value} of settings) {
|
|
63
|
-
// Use site title for the newsletter name
|
|
64
|
-
if (key === 'title') {
|
|
65
|
-
key = 'name';
|
|
66
|
-
}
|
|
67
|
-
// Settings have a `newsletter_` prefix which isn't present on the newsletters table
|
|
68
|
-
if (startsWith(key, 'newsletter_')) {
|
|
69
|
-
key = key.slice(11);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (value === null && ['name', 'body_font_category', 'show_badge', 'show_feature_image', 'show_header_icon', 'show_header_title', 'title_alignment', 'title_font_category'].includes(key)) {
|
|
73
|
-
// Prevent setting null to non-nullable columns
|
|
74
|
-
// Default to defaults above in that case
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (typeof newsletter[key] === 'boolean') {
|
|
79
|
-
newsletter[key] = value === 'true';
|
|
80
|
-
} else {
|
|
81
|
-
newsletter[key] = value;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
logging.info('Adding the default newsletter');
|
|
86
|
-
await knex('newsletters').insert(newsletter);
|
|
87
|
-
},
|
|
88
|
-
async function down(knex) {
|
|
89
|
-
logging.info(`Removing newsletters`);
|
|
90
|
-
await knex('newsletters').delete();
|
|
91
|
-
}
|
|
92
|
-
);
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const ObjectID = require('bson-objectid').default;
|
|
3
|
-
|
|
4
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
5
|
-
|
|
6
|
-
module.exports = createTransactionalMigration(
|
|
7
|
-
async function up(knex) {
|
|
8
|
-
logging.info('Adding existing subscribers to default newsletter');
|
|
9
|
-
|
|
10
|
-
const newsletter = await knex('newsletters')
|
|
11
|
-
.orderBy('sort_order', 'asc')
|
|
12
|
-
.orderBy('created_at', 'asc')
|
|
13
|
-
.first('id', 'name');
|
|
14
|
-
|
|
15
|
-
if (!newsletter) {
|
|
16
|
-
logging.info(`Default newsletter not found - skipping`);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// This is at the start of the up() instead of at the end of the down()
|
|
21
|
-
// to maintain idempotency
|
|
22
|
-
logging.info('Removing existing newsletter subscriptions');
|
|
23
|
-
await knex('members_newsletters').delete();
|
|
24
|
-
|
|
25
|
-
logging.info(`Subscribing members to newsletter '${newsletter.name}'`);
|
|
26
|
-
|
|
27
|
-
const memberIds = await knex('members')
|
|
28
|
-
.where({subscribed: true})
|
|
29
|
-
.pluck('id');
|
|
30
|
-
|
|
31
|
-
if (!memberIds.length) {
|
|
32
|
-
logging.info(`No members to subscribe - skipping`);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
logging.info(`Found ${memberIds.length} members to subscribe`);
|
|
37
|
-
|
|
38
|
-
const pivotRows = memberIds.map((memberId) => {
|
|
39
|
-
return {
|
|
40
|
-
id: ObjectID().toHexString(),
|
|
41
|
-
member_id: memberId,
|
|
42
|
-
newsletter_id: newsletter.id
|
|
43
|
-
};
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
await knex.batchInsert('members_newsletters', pivotRows);
|
|
47
|
-
},
|
|
48
|
-
async function down(knex) {
|
|
49
|
-
logging.info('Syncing subscriptions from newsletters -> members.subscribed');
|
|
50
|
-
await knex('members')
|
|
51
|
-
.whereIn('id', function () {
|
|
52
|
-
this.select('member_id').from('members_newsletters');
|
|
53
|
-
})
|
|
54
|
-
.update({
|
|
55
|
-
subscribed: true
|
|
56
|
-
});
|
|
57
|
-
logging.info('Syncing unsubscribes from newsletters -> members.subscribed');
|
|
58
|
-
await knex('members')
|
|
59
|
-
.whereNotIn('id', function () {
|
|
60
|
-
this.select('member_id').from('members_newsletters');
|
|
61
|
-
})
|
|
62
|
-
.update({
|
|
63
|
-
subscribed: false
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
);
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const {createAddColumnMigration} = require('../../utils');
|
|
2
|
-
|
|
3
|
-
module.exports = createAddColumnMigration('members_subscribe_events', 'newsletter_id', {
|
|
4
|
-
type: 'string',
|
|
5
|
-
maxlength: 24,
|
|
6
|
-
nullable: true,
|
|
7
|
-
references: 'newsletters.id',
|
|
8
|
-
cascadeDelete: false
|
|
9
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
3
|
-
|
|
4
|
-
module.exports = createTransactionalMigration(
|
|
5
|
-
async function up(knex) {
|
|
6
|
-
// Get the default newsletter
|
|
7
|
-
const newsletter = await knex('newsletters')
|
|
8
|
-
.where('status', 'active')
|
|
9
|
-
.orderBy('sort_order', 'asc')
|
|
10
|
-
.orderBy('created_at', 'asc')
|
|
11
|
-
.orderBy('id', 'asc')
|
|
12
|
-
.first('id');
|
|
13
|
-
|
|
14
|
-
if (!newsletter) {
|
|
15
|
-
logging.error(`Default newsletter not found - skipping`);
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Set subscribe events
|
|
20
|
-
const updatedRows = await knex('members_subscribe_events')
|
|
21
|
-
.update({
|
|
22
|
-
newsletter_id: newsletter.id
|
|
23
|
-
})
|
|
24
|
-
.where('newsletter_id', null);
|
|
25
|
-
|
|
26
|
-
logging.info(`Updated ${updatedRows} members_subscribe_events with default newsletter id`);
|
|
27
|
-
},
|
|
28
|
-
async function down() {
|
|
29
|
-
// Not required
|
|
30
|
-
}
|
|
31
|
-
);
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
3
|
-
const find = require('lodash/find');
|
|
4
|
-
|
|
5
|
-
module.exports = createTransactionalMigration(
|
|
6
|
-
async function up(knex) {
|
|
7
|
-
logging.info('Migrating sender settings to default newsletter');
|
|
8
|
-
|
|
9
|
-
// Get all settings in one query
|
|
10
|
-
const settings = await knex('settings')
|
|
11
|
-
.whereIn('key', [
|
|
12
|
-
'members_from_address',
|
|
13
|
-
'members_reply_address'
|
|
14
|
-
])
|
|
15
|
-
.select(['key', 'value']);
|
|
16
|
-
|
|
17
|
-
// sender_reply_to and members_reply_address are both enums ['newsletter', 'support']
|
|
18
|
-
const replyTo = find(settings, {key: 'members_reply_address'});
|
|
19
|
-
const fromAddress = find(settings, {key: 'members_from_address'});
|
|
20
|
-
|
|
21
|
-
// Update all newsletters that haven't been (re)configured already
|
|
22
|
-
await knex('newsletters')
|
|
23
|
-
.update({
|
|
24
|
-
// CASE: members_from_address is 'noreply' - we leave it as null to maintain fallback behaviour
|
|
25
|
-
sender_email: !fromAddress || fromAddress.value === 'noreply' ? null : fromAddress.value,
|
|
26
|
-
sender_reply_to: replyTo ? replyTo.value : undefined
|
|
27
|
-
})
|
|
28
|
-
.whereNull('sender_email')
|
|
29
|
-
.where('sender_reply_to', 'newsletter');
|
|
30
|
-
},
|
|
31
|
-
async function down() {
|
|
32
|
-
// no-op
|
|
33
|
-
}
|
|
34
|
-
);
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const urlUtils = require('../../../../../shared/url-utils');
|
|
3
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
4
|
-
|
|
5
|
-
module.exports = createTransactionalMigration(
|
|
6
|
-
async function up(knex) {
|
|
7
|
-
const newsletters = await knex.select('id', 'header_image').from('newsletters').whereNotNull('header_image');
|
|
8
|
-
|
|
9
|
-
logging.info(`Transforming header_image to transformReady format for ${newsletters.length} newsletters.`);
|
|
10
|
-
|
|
11
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
12
|
-
for (const newsletter of newsletters) {
|
|
13
|
-
await knex('newsletters').update('header_image', urlUtils.toTransformReady(newsletter.header_image)).where('id', newsletter.id);
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
async function down(knex) {
|
|
17
|
-
const newsletters = await knex.select('id', 'header_image').from('newsletters').whereNotNull('header_image');
|
|
18
|
-
|
|
19
|
-
logging.info(`Transforming header_image to absolute format for ${newsletters.length} newsletters.`);
|
|
20
|
-
|
|
21
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
22
|
-
for (const newsletter of newsletters) {
|
|
23
|
-
await knex('newsletters').update('header_image', urlUtils.transformReadyToAbsolute(newsletter.header_image)).where('id', newsletter.id);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
);
|
package/core/server/data/migrations/versions/4.5/03-give-label-read-permissions-to-editors.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const {combineTransactionalMigrations, addPermissionWithRoles} = require('../../utils');
|
|
2
|
-
|
|
3
|
-
module.exports = combineTransactionalMigrations(
|
|
4
|
-
addPermissionWithRoles({
|
|
5
|
-
name: 'Browse labels',
|
|
6
|
-
action: 'browse',
|
|
7
|
-
object: 'label'
|
|
8
|
-
}, ['Editor']),
|
|
9
|
-
addPermissionWithRoles({
|
|
10
|
-
name: 'Read labels',
|
|
11
|
-
action: 'read',
|
|
12
|
-
object: 'label'
|
|
13
|
-
}, ['Editor'])
|
|
14
|
-
);
|
package/core/server/data/migrations/versions/4.5/04-remove-unique-constraint-from-product-name.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
const {createNonTransactionalMigration} = require('../../utils');
|
|
2
|
-
const {dropUnique} = require('../../../schema/commands');
|
|
3
|
-
|
|
4
|
-
module.exports = createNonTransactionalMigration(
|
|
5
|
-
async function up(knex) {
|
|
6
|
-
return await dropUnique('products', 'name', knex);
|
|
7
|
-
},
|
|
8
|
-
async function down() {
|
|
9
|
-
// We cannot roll back this migration because adding a unique constraint
|
|
10
|
-
// could error if we have duplicate names already in the table.
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
);
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
3
|
-
|
|
4
|
-
module.exports = createTransactionalMigration(
|
|
5
|
-
async function up(connection) {
|
|
6
|
-
const defaultProduct = await connection('products')
|
|
7
|
-
.where({name: 'Default Product'})
|
|
8
|
-
.select('id')
|
|
9
|
-
.first();
|
|
10
|
-
|
|
11
|
-
const siteTitleSetting = await connection('settings')
|
|
12
|
-
.where('key', 'title')
|
|
13
|
-
.select('value')
|
|
14
|
-
.first();
|
|
15
|
-
|
|
16
|
-
if (!defaultProduct) {
|
|
17
|
-
logging.warn('Skipping rename of default product to site title, default product doesn\'t exist or already renamed');
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (!siteTitleSetting || !siteTitleSetting.value) {
|
|
22
|
-
logging.warn('Skipping rename of default product to site title, no site title found');
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
logging.info(`Renaming default product name to ${siteTitleSetting.value}`);
|
|
26
|
-
await connection('products')
|
|
27
|
-
.update({
|
|
28
|
-
name: siteTitleSetting.value
|
|
29
|
-
})
|
|
30
|
-
.where({
|
|
31
|
-
id: defaultProduct.id
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
async function down() {
|
|
36
|
-
// noop: We don't want to rename existing product back to 'Default Product'
|
|
37
|
-
}
|
|
38
|
-
);
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
3
|
-
|
|
4
|
-
module.exports = createTransactionalMigration(
|
|
5
|
-
async function up(knex) {
|
|
6
|
-
logging.info('Updating all member "comped" statuses to "paid"');
|
|
7
|
-
await knex('members')
|
|
8
|
-
.update('status', 'paid')
|
|
9
|
-
.where('status', 'comped');
|
|
10
|
-
},
|
|
11
|
-
async function down(knex) {
|
|
12
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
13
|
-
const compedMemberIds = (await knex('members')
|
|
14
|
-
.select('members.id')
|
|
15
|
-
.innerJoin(
|
|
16
|
-
'members_stripe_customers',
|
|
17
|
-
'members.id',
|
|
18
|
-
'members_stripe_customers.member_id'
|
|
19
|
-
).innerJoin(
|
|
20
|
-
'members_stripe_customers_subscriptions',
|
|
21
|
-
function () {
|
|
22
|
-
this.on(
|
|
23
|
-
'members_stripe_customers.customer_id',
|
|
24
|
-
'members_stripe_customers_subscriptions.customer_id'
|
|
25
|
-
).onIn(
|
|
26
|
-
'members_stripe_customers_subscriptions.status',
|
|
27
|
-
['active', 'trialing', 'past_due', 'unpaid']
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
).where(
|
|
31
|
-
'members_stripe_customers_subscriptions.plan_nickname',
|
|
32
|
-
'=',
|
|
33
|
-
'Complimentary'
|
|
34
|
-
)).map(({id}) => id);
|
|
35
|
-
|
|
36
|
-
if (compedMemberIds.length === 0) {
|
|
37
|
-
logging.info('No Members found with Complimentary subscriptions');
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
logging.info(`Updating ${compedMemberIds.length} Members status from 'paid' -> 'comped'`);
|
|
42
|
-
|
|
43
|
-
await knex('members')
|
|
44
|
-
.update('status', 'comped')
|
|
45
|
-
.whereIn('id', compedMemberIds);
|
|
46
|
-
}
|
|
47
|
-
);
|
|
@@ -1,42 +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 labsExists = await knex('settings')
|
|
10
|
-
.where('key', '=', 'labs')
|
|
11
|
-
.first();
|
|
12
|
-
|
|
13
|
-
if (!labsExists) {
|
|
14
|
-
logging.info('Adding "labs" 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: 'labs',
|
|
22
|
-
value: JSON.stringify({}),
|
|
23
|
-
group: 'labs',
|
|
24
|
-
type: 'object',
|
|
25
|
-
created_at: now,
|
|
26
|
-
created_by: MIGRATION_USER,
|
|
27
|
-
updated_at: now,
|
|
28
|
-
updated_by: MIGRATION_USER
|
|
29
|
-
});
|
|
30
|
-
} else {
|
|
31
|
-
logging.warn('Skipped adding "labs" record to "settings" table. Record already exists!');
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
async function down(knex) {
|
|
36
|
-
logging.info('Removing "labs" record from "settings" table');
|
|
37
|
-
|
|
38
|
-
await knex('settings')
|
|
39
|
-
.where('key', '=', 'labs')
|
|
40
|
-
.del();
|
|
41
|
-
}
|
|
42
|
-
);
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
const ObjectID = require('bson-objectid').default;
|
|
2
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
3
|
-
const logging = require('@tryghost/logging');
|
|
4
|
-
|
|
5
|
-
const MIGRATION_USER = 1;
|
|
6
|
-
|
|
7
|
-
module.exports = createTransactionalMigration(
|
|
8
|
-
async function up(knex) {
|
|
9
|
-
const products = await knex
|
|
10
|
-
.select('id')
|
|
11
|
-
.from('products');
|
|
12
|
-
|
|
13
|
-
if (products.length === 0) {
|
|
14
|
-
logging.warn(`Skipping adding default product to portal_products, no default product exists`);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const defaultProduct = products[0];
|
|
19
|
-
const portalProductsValue = [defaultProduct.id];
|
|
20
|
-
|
|
21
|
-
const portalProductsSetting = await knex('settings')
|
|
22
|
-
.where('key', 'portal_products')
|
|
23
|
-
.select('value')
|
|
24
|
-
.first();
|
|
25
|
-
|
|
26
|
-
if (!portalProductsSetting) {
|
|
27
|
-
logging.info(`Adding "portal_products" record to "settings" table with product - ${defaultProduct.id}`);
|
|
28
|
-
|
|
29
|
-
const now = knex.raw('CURRENT_TIMESTAMP');
|
|
30
|
-
|
|
31
|
-
await knex('settings')
|
|
32
|
-
.insert({
|
|
33
|
-
id: ObjectID().toHexString(),
|
|
34
|
-
key: 'portal_products',
|
|
35
|
-
value: JSON.stringify(portalProductsValue),
|
|
36
|
-
group: 'portal',
|
|
37
|
-
type: 'array',
|
|
38
|
-
created_at: now,
|
|
39
|
-
created_by: MIGRATION_USER,
|
|
40
|
-
updated_at: now,
|
|
41
|
-
updated_by: MIGRATION_USER
|
|
42
|
-
});
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
logging.info(`Setting portal_products setting to have product - ${defaultProduct.id}`);
|
|
47
|
-
|
|
48
|
-
await knex('settings')
|
|
49
|
-
.where('key', 'portal_products')
|
|
50
|
-
.update({value: JSON.stringify(portalProductsValue)});
|
|
51
|
-
},
|
|
52
|
-
async function down(knex) {
|
|
53
|
-
const portalProductSetting = await knex('settings')
|
|
54
|
-
.where('key', 'portal_products')
|
|
55
|
-
.select('value')
|
|
56
|
-
.first();
|
|
57
|
-
|
|
58
|
-
if (!portalProductSetting) {
|
|
59
|
-
logging.info('Skipping revert of portal_products setting, setting does not exist');
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
logging.info(`Reverting portal_products setting to empty array`);
|
|
64
|
-
|
|
65
|
-
await knex('settings')
|
|
66
|
-
.where('key', 'portal_products')
|
|
67
|
-
.update({value: JSON.stringify([])});
|
|
68
|
-
}
|
|
69
|
-
);
|
package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const {createTransactionalMigration} = require('../../utils');
|
|
3
|
-
const ObjectId = require('bson-objectid').default;
|
|
4
|
-
|
|
5
|
-
// newsletter_show_header = false ->
|
|
6
|
-
// newsletter_show_header_title = false
|
|
7
|
-
// newsletter_show_header_icon = false
|
|
8
|
-
//
|
|
9
|
-
// the default for both of the new settings is true so there's no need to migrate
|
|
10
|
-
// anything if previously showing the header
|
|
11
|
-
|
|
12
|
-
module.exports = createTransactionalMigration(
|
|
13
|
-
async function up(connection) {
|
|
14
|
-
const oldSetting = await connection('settings')
|
|
15
|
-
.where('key', 'newsletter_show_header')
|
|
16
|
-
.select(['value', 'created_by'])
|
|
17
|
-
.first();
|
|
18
|
-
|
|
19
|
-
if (!oldSetting) {
|
|
20
|
-
logging.info('Skipping migration of newsletter_show_header setting. Does not exist');
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (oldSetting.value === 'false') {
|
|
25
|
-
logging.info('Migrating newsletter_show_header setting. Disabling title and logo');
|
|
26
|
-
|
|
27
|
-
const newSettingKeys = ['newsletter_show_header_title', 'newsletter_show_header_icon'];
|
|
28
|
-
const now = connection.raw('CURRENT_TIMESTAMP');
|
|
29
|
-
|
|
30
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
31
|
-
for (const settingKey of newSettingKeys) {
|
|
32
|
-
const existingSetting = await connection('settings').where('key', settingKey).first();
|
|
33
|
-
|
|
34
|
-
if (!existingSetting) {
|
|
35
|
-
// insert default setting - migrations are run before default settings are created
|
|
36
|
-
await connection('settings')
|
|
37
|
-
.insert({
|
|
38
|
-
id: ObjectId().toHexString(),
|
|
39
|
-
key: settingKey,
|
|
40
|
-
group: 'newsletter',
|
|
41
|
-
type: 'boolean',
|
|
42
|
-
value: 'true',
|
|
43
|
-
created_at: now,
|
|
44
|
-
updated_at: now,
|
|
45
|
-
created_by: oldSetting.created_by,
|
|
46
|
-
updated_by: oldSetting.created_by
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
await connection('settings')
|
|
52
|
-
.whereIn('key', ['newsletter_show_header_title', 'newsletter_show_header_icon'])
|
|
53
|
-
.update({value: 'false'});
|
|
54
|
-
} else {
|
|
55
|
-
logging.info('Skipping migration of newsletter_show_header setting. Matches new defaults');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
logging.info('Deleting newsletter_show_header setting');
|
|
59
|
-
await connection('settings')
|
|
60
|
-
.where('key', 'newsletter_show_header')
|
|
61
|
-
.del();
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
async function down(connection) {
|
|
65
|
-
logging.info('Adding newsletter_show_header setting');
|
|
66
|
-
|
|
67
|
-
const oldSetting = await connection('settings')
|
|
68
|
-
.where('key', '=', 'newsletter_show_header')
|
|
69
|
-
.select('value')
|
|
70
|
-
.first();
|
|
71
|
-
|
|
72
|
-
const showTitle = await connection('settings')
|
|
73
|
-
.where('key', '=', 'newsletter_show_header_title')
|
|
74
|
-
.select(['value', 'created_by'])
|
|
75
|
-
.first();
|
|
76
|
-
|
|
77
|
-
const showIcon = await connection('settings')
|
|
78
|
-
.where('key', '=', 'newsletter_show_header_icon')
|
|
79
|
-
.select(['value', 'created_by'])
|
|
80
|
-
.first();
|
|
81
|
-
|
|
82
|
-
if (oldSetting) {
|
|
83
|
-
logging.warn('Skipping rollback of newsletter_show_header setting. Already exists');
|
|
84
|
-
} else {
|
|
85
|
-
const [{id: ownerId} = {id: 1}] = await connection('users')
|
|
86
|
-
.select('users.id')
|
|
87
|
-
.innerJoin(
|
|
88
|
-
'roles_users',
|
|
89
|
-
'users.id',
|
|
90
|
-
'roles_users.user_id'
|
|
91
|
-
)
|
|
92
|
-
.where(
|
|
93
|
-
'roles_users.role_id',
|
|
94
|
-
connection('roles').select('id').where('name', 'Owner')
|
|
95
|
-
);
|
|
96
|
-
|
|
97
|
-
let showHeader = 'true'; // default
|
|
98
|
-
|
|
99
|
-
if (showTitle && showIcon) {
|
|
100
|
-
showHeader = showTitle.value === 'false' && showIcon.value === 'false' ? 'false' : 'true';
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const now = connection.raw('CURRENT_TIMESTAMP');
|
|
104
|
-
|
|
105
|
-
await connection('settings')
|
|
106
|
-
.insert({
|
|
107
|
-
id: ObjectId().toHexString(),
|
|
108
|
-
key: 'newsletter_show_header',
|
|
109
|
-
group: 'newsletter',
|
|
110
|
-
type: 'boolean',
|
|
111
|
-
value: showHeader,
|
|
112
|
-
created_at: now,
|
|
113
|
-
updated_at: now,
|
|
114
|
-
created_by: ownerId,
|
|
115
|
-
updated_by: ownerId
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
logging.info('Deleting newsletter_show_header_{title,icon} settings');
|
|
120
|
-
await connection('settings')
|
|
121
|
-
.whereIn('key', ['newsletter_show_header_title', 'newsletter_show_header_icon'])
|
|
122
|
-
.del();
|
|
123
|
-
}
|
|
124
|
-
);
|