ghost 4.47.4 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Gruntfile.js +24 -24
- package/README.md +3 -2
- package/content/themes/casper/assets/built/global.css +1 -1
- package/content/themes/casper/assets/built/global.css.map +1 -1
- package/content/themes/casper/assets/built/screen.css +1 -1
- package/content/themes/casper/assets/built/screen.css.map +1 -1
- package/content/themes/casper/assets/css/global.css +2 -2
- package/content/themes/casper/assets/css/screen.css +412 -664
- package/content/themes/casper/author.hbs +48 -35
- package/content/themes/casper/default.hbs +5 -23
- package/content/themes/casper/error-404.hbs +1 -1
- package/content/themes/casper/index.hbs +29 -22
- package/content/themes/casper/package.json +25 -37
- package/content/themes/casper/page.hbs +12 -12
- package/content/themes/casper/partials/icons/facebook.hbs +1 -1
- package/content/themes/casper/partials/icons/twitter.hbs +1 -1
- package/content/themes/casper/partials/post-card.hbs +26 -40
- package/content/themes/casper/post.hbs +54 -50
- package/content/themes/casper/tag.hbs +42 -47
- package/core/boot.js +18 -15
- package/core/bridge.js +24 -25
- package/core/built/assets/ghost-dark-b6e3268bcae976a8675b0d9ae54540f2.css +1 -0
- package/core/built/assets/{ghost.min-a2a47979b0b61d15a3914042a7b1cd20.js → ghost.min-2cc3688ea6600a54e0cd83107a8577e8.js} +1138 -1212
- package/core/built/assets/ghost.min-a40c7b301c702bd84c2fae19366ab5d7.css +1 -0
- package/core/built/assets/icons/analytics.svg +14 -0
- package/core/built/assets/icons/calendar.svg +4 -1
- package/core/built/assets/icons/email-at.svg +1 -1
- package/core/built/assets/icons/email-name.svg +1 -1
- package/core/built/assets/icons/info.svg +1 -1
- package/core/built/assets/icons/twitter-logo.svg +3 -0
- package/core/built/assets/{vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js → vendor.min-2bca41946dea27dc292428db605d466d.js} +99 -93
- package/core/cli/README.md +88 -0
- package/core/cli/command.js +129 -0
- package/core/cli/repl.js +32 -0
- package/core/cli/timetravel.js +87 -0
- package/core/frontend/apps/amp/lib/helpers/amp_content.js +10 -12
- package/core/frontend/apps/amp/lib/router.js +2 -3
- package/core/frontend/helpers/body_class.js +2 -2
- package/core/frontend/helpers/excerpt.js +0 -2
- package/core/frontend/helpers/get.js +23 -24
- package/core/frontend/helpers/ghost_head.js +104 -108
- package/core/frontend/helpers/navigation.js +0 -2
- package/core/frontend/helpers/prev_post.js +20 -26
- package/core/frontend/helpers/price.js +2 -2
- package/core/frontend/meta/author-url.js +2 -2
- package/core/frontend/meta/description.js +3 -3
- package/core/frontend/meta/excerpt.js +1 -2
- package/core/frontend/meta/generate-excerpt.js +2 -11
- package/core/frontend/meta/paginated-url.js +1 -1
- package/core/frontend/meta/rss-url.js +0 -1
- package/core/frontend/meta/url.js +4 -4
- package/core/frontend/services/data/entry-lookup.js +1 -1
- package/core/frontend/services/data/fetch-data.js +1 -1
- package/core/frontend/services/helpers/handlebars.js +11 -12
- package/core/frontend/services/proxy.js +11 -1
- package/core/frontend/services/rendering/context.js +1 -5
- package/core/frontend/services/rendering/format-response.js +9 -2
- package/core/frontend/services/rendering/index.js +0 -4
- package/core/frontend/services/rendering/render-entry.js +1 -1
- package/core/frontend/services/rendering/templates.js +15 -5
- package/core/frontend/services/routing/CollectionRouter.js +2 -2
- package/core/frontend/services/routing/EmailRouter.js +2 -2
- package/core/frontend/services/routing/ParentRouter.js +1 -1
- package/core/frontend/services/routing/PreviewRouter.js +3 -3
- package/core/frontend/services/routing/{config/v4.js → config.js} +3 -5
- package/core/frontend/services/routing/controllers/channel.js +0 -10
- package/core/frontend/services/routing/controllers/collection.js +0 -9
- package/core/frontend/services/routing/controllers/email-post.js +2 -7
- package/core/frontend/services/routing/controllers/entry.js +1 -3
- package/core/frontend/services/routing/controllers/index.js +2 -2
- package/core/frontend/services/routing/controllers/{preview.js → previews.js} +3 -8
- package/core/frontend/services/routing/controllers/static.js +1 -6
- package/core/frontend/services/routing/router-manager.js +38 -20
- package/core/frontend/services/rss/generate-feed.js +7 -9
- package/core/frontend/services/theme-engine/active.js +0 -8
- package/core/frontend/services/theme-engine/config/defaults.json +1 -3
- package/core/frontend/services/theme-engine/middleware/index.js +0 -1
- package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +0 -69
- package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +3 -6
- package/core/frontend/web/middleware/static-theme.js +14 -6
- package/core/frontend/web/routes.js +9 -9
- package/core/frontend/web/site.js +15 -18
- package/core/server/adapters/scheduling/post-scheduling/index.js +1 -1
- package/core/server/api/README.md +2 -6
- package/core/server/api/canary/authentication.js +4 -3
- package/core/server/api/canary/{email-preview.js → email-previews.js} +9 -8
- package/core/server/api/canary/index.js +14 -18
- package/core/server/api/canary/members.js +4 -24
- package/core/server/api/{v3/actions.js → canary/newsletters-public.js} +6 -6
- package/core/server/api/canary/newsletters.js +1 -13
- package/core/server/api/canary/notifications.js +17 -22
- package/core/server/api/canary/offers-public.js +28 -0
- package/core/server/api/canary/pages.js +1 -1
- package/core/server/api/canary/posts.js +4 -8
- package/core/server/api/canary/{preview.js → previews.js} +1 -1
- package/core/server/api/canary/schedules.js +1 -1
- package/core/server/api/canary/session.js +1 -1
- package/core/server/api/canary/settings-public.js +3 -1
- package/core/server/api/canary/settings.js +30 -16
- package/core/server/api/canary/utils/index.js +2 -4
- package/core/server/api/canary/utils/serializers/input/index.js +0 -4
- package/core/server/api/canary/utils/serializers/input/members.js +46 -17
- package/core/server/api/canary/utils/serializers/input/pages.js +0 -17
- package/core/server/api/canary/utils/serializers/input/posts.js +1 -28
- package/core/server/api/canary/utils/serializers/input/settings.js +61 -142
- package/core/server/api/canary/utils/serializers/input/tiers.js +56 -12
- package/core/server/api/canary/utils/serializers/output/authentication.js +2 -6
- package/core/server/api/canary/utils/serializers/output/index.js +2 -10
- package/core/server/api/canary/utils/serializers/output/mappers/index.js +1 -0
- package/core/server/api/canary/utils/serializers/output/mappers/newsletters.js +24 -0
- package/core/server/api/canary/utils/serializers/output/mappers/pages.js +1 -1
- package/core/server/api/canary/utils/serializers/output/mappers/posts.js +9 -7
- package/core/server/api/canary/utils/serializers/output/mappers/settings.js +5 -31
- package/core/server/api/canary/utils/serializers/output/members.js +21 -11
- package/core/server/api/canary/utils/serializers/output/offers.js +9 -1
- package/core/server/api/canary/utils/serializers/output/{preview.js → previews.js} +2 -2
- package/core/server/api/canary/utils/serializers/output/settings.js +6 -14
- package/core/server/api/canary/utils/serializers/output/site.js +0 -1
- package/core/server/api/canary/utils/serializers/output/tiers.js +35 -75
- package/core/server/api/canary/utils/serializers/output/utils/clean.js +5 -10
- package/core/server/api/canary/utils/serializers/output/utils/extra-attrs.js +0 -126
- package/core/server/api/canary/utils/serializers/output/utils/post-gating.js +1 -1
- package/core/server/api/canary/utils/serializers/output/utils/url.js +0 -5
- package/core/server/api/canary/utils/validators/input/index.js +2 -2
- package/core/server/api/canary/utils/validators/input/{passwordreset.js → password_reset.js} +2 -2
- package/core/server/api/canary/utils/validators/input/settings.js +2 -23
- package/core/server/api/canary/utils/validators/utils/json-schema.js +1 -2
- package/core/server/api/index.js +1 -7
- package/core/server/api/shared/serializers/input/utils/settings-key-group-mapper.js +2 -2
- package/core/server/api/shared/serializers/input/utils/settings-key-type-mapper.js +2 -4
- package/core/server/data/db/connection.js +0 -13
- package/core/server/data/exporter/index.js +4 -1
- package/core/server/data/exporter/table-lists.js +13 -15
- package/core/server/data/importer/importers/data/base.js +16 -7
- package/core/server/data/importer/importers/data/data-importer.js +38 -1
- package/core/server/data/importer/importers/data/newsletters.js +45 -0
- package/core/server/data/importer/importers/data/posts.js +40 -12
- package/core/server/data/importer/importers/data/products.js +68 -0
- package/core/server/data/importer/importers/data/settings.js +10 -10
- package/core/server/data/importer/importers/data/stripe-prices.js +59 -0
- package/core/server/data/importer/importers/data/stripe-products.js +61 -0
- package/core/server/data/migrations/utils/constants.js +3 -0
- package/core/server/data/migrations/utils/index.js +10 -0
- package/core/server/data/migrations/utils/migrations.js +156 -0
- package/core/server/data/migrations/utils/permissions.js +291 -0
- package/core/server/data/migrations/utils/schema.js +158 -0
- package/core/server/data/migrations/utils/settings.js +59 -0
- package/core/server/data/migrations/utils/tables.js +94 -0
- package/core/server/data/migrations/versions/1.25/01-final-v1.js +2 -0
- package/core/server/data/migrations/versions/1.25/02-noop.js +6 -0
- package/core/server/data/migrations/versions/2.37/01-final-v2.js +2 -0
- package/core/server/data/migrations/versions/3.41/01-final-v3.js +2 -0
- package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +3 -9
- package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +2 -11
- package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +1 -1
- package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -1
- package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -1
- package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +1 -1
- package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +1 -1
- package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +1 -1
- package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +1 -1
- package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -1
- package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +1 -1
- package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
- package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -1
- package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -1
- package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +36 -0
- package/core/server/data/migrations/versions/5.0/2022-03-28-15-25-backfill-mrr-adjustments-for-offers.js +108 -0
- package/core/server/data/migrations/versions/5.0/2022-04-25-10-32-backfill-mrr-for-discounted-subscriptions.js +44 -0
- package/core/server/data/migrations/versions/5.0/2022-04-26-15-44-backfill-mrr-events-for-canceled-subscriptions.js +73 -0
- package/core/server/data/migrations/versions/5.0/2022-04-27-11-26-backfill-mrr-for-canceled-subscriptions.js +31 -0
- package/core/server/data/migrations/versions/5.0/2022-04-28-03-26-remove-author-id-column-from-posts-table.js +7 -0
- package/core/server/data/migrations/versions/5.0/2022-05-03-09-39-drop-nullable-subscribe-event-newsletter-id.js +4 -0
- package/core/server/data/migrations/versions/5.0/2022-05-04-15-24-map-existing-emails-to-default-newsletter.js +44 -0
- package/core/server/data/migrations/versions/5.0/2022-05-05-13-13-migrate-legacy-recipient-filters.js +30 -0
- package/core/server/data/migrations/versions/5.0/2022-05-05-13-29-add-newsletters-admin-integration-permission-roles.js +20 -0
- package/core/server/data/migrations/versions/5.0/2022-05-05-15-17-drop-oauth-table.js +3 -0
- package/core/server/data/migrations/versions/5.0/2022-05-06-08-16-cleanup-client-subscriber-permissions.js +68 -0
- package/core/server/data/migrations/versions/5.0/2022-05-06-13-22-add-frontend-integration.js +68 -0
- package/core/server/data/migrations/versions/5.0/2022-05-09-10-00-drop-members-subscribed-column.js +18 -0
- package/core/server/data/migrations/versions/5.0/2022-05-09-14-17-cleanup-invalid-users-status.js +17 -0
- package/core/server/data/migrations/versions/5.0/2022-05-10-08-33-drop-members-analytics-table.js +3 -0
- package/core/server/data/migrations/versions/5.0/2022-05-10-14-57-cleanup-invalid-posts-status.js +17 -0
- package/core/server/data/migrations/versions/5.0/2022-05-11-12-08-drop-webhooks-status-column.js +18 -0
- package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +51 -0
- package/core/server/data/migrations/versions/5.0/2022-05-11-16-36-remove-unused-settings.js +54 -0
- package/core/server/data/migrations/versions/5.0/2022-05-12-10-29-add-newsletter-permissions-for-editors-and-authors.js +20 -0
- package/core/server/data/migrations/versions/5.0/2022-05-12-13-51-add-label-permissions-for-authors.js +12 -0
- package/core/server/data/migrations/versions/5.0/2022-05-13-11-38-drop-none-email-recipient-filter.js +28 -0
- package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +70 -0
- package/core/server/data/schema/commands.js +35 -3
- package/core/server/data/schema/default-settings/default-settings.json +2 -159
- package/core/server/data/schema/fixtures/fixture-manager.js +11 -2
- package/core/server/data/schema/fixtures/fixtures.json +16 -7
- package/core/server/data/schema/schema.js +26 -38
- package/core/server/data/schema/validator.js +2 -0
- package/core/server/ghost-server.js +34 -64
- package/core/server/lib/image/gravatar.js +25 -9
- package/core/server/models/api-key.js +3 -26
- package/core/server/models/base/plugins/bulk-operations.js +14 -6
- package/core/server/models/integration.js +17 -0
- package/core/server/models/member.js +8 -4
- package/core/server/models/newsletter.js +27 -0
- package/core/server/models/post.js +30 -32
- package/core/server/models/relations/authors.js +74 -100
- package/core/server/models/settings.js +6 -2
- package/core/server/models/webhook.js +2 -1
- package/core/server/run-update-check.js +1 -1
- package/core/server/services/api-version-compatibility/index.js +24 -18
- package/core/server/services/api-version-compatibility/legacy-api-path-match.js +23 -0
- package/core/server/services/api-version-compatibility/mw-version-rewrites.js +36 -0
- package/core/server/services/auth/api-key/admin.js +8 -7
- package/core/server/services/auth/passwordreset.js +3 -3
- package/core/server/services/auth/session/express-session.js +1 -1
- package/core/server/services/auth/session/index.js +1 -1
- package/core/server/services/auth/setup.js +8 -8
- package/core/server/services/bulk-email/bulk-email-processor.js +5 -1
- package/core/server/services/email-analytics/lib/event-processor.js +25 -14
- package/core/server/services/frontend-data-service/frontend-data-service.js +27 -0
- package/core/server/services/frontend-data-service/index.js +6 -0
- package/core/server/services/mail/index.js +14 -1
- package/core/server/services/mega/email-preview.js +14 -15
- package/core/server/services/mega/mega.js +37 -52
- package/core/server/services/mega/post-email-serializer.js +18 -28
- package/core/server/services/members/api.js +0 -3
- package/core/server/services/members/config.js +0 -49
- package/core/server/services/members/exporter/query.js +88 -0
- package/core/server/services/members/middleware.js +3 -135
- package/core/server/services/members/service.js +2 -29
- package/core/server/services/members/settings.js +3 -9
- package/core/server/services/newsletters/service.js +78 -10
- package/core/server/services/posts/post-scheduling-service.js +5 -17
- package/core/server/services/posts/posts-service.js +15 -62
- package/core/server/services/public-config/site.js +0 -6
- package/core/server/services/route-settings/index.js +0 -3
- package/core/server/services/route-settings/settings-loader.js +10 -34
- package/core/server/services/route-settings/validate.js +1 -7
- package/core/server/services/settings/index.js +1 -77
- package/core/server/services/settings/settings-service.js +184 -0
- package/core/server/services/themes/validate.js +1 -1
- package/core/server/services/url/Resources.js +1 -3
- package/core/server/services/url/UrlGenerator.js +1 -1
- package/core/server/services/url/UrlService.js +6 -20
- package/core/server/services/url/{configs/v2.js → config.js} +0 -0
- package/core/server/services/users.js +2 -2
- package/core/server/services/webhooks/listen.js +5 -2
- package/core/server/services/webhooks/serialize.js +6 -7
- package/core/server/services/webhooks/trigger.js +62 -47
- package/core/server/update-check.js +1 -1
- package/core/server/web/admin/app.js +1 -1
- package/core/server/web/admin/views/default-prod.html +4 -4
- package/core/server/web/admin/views/default.html +4 -4
- package/core/server/web/api/app.js +3 -15
- package/core/server/web/api/canary/admin/app.js +1 -1
- package/core/server/web/api/canary/admin/middleware.js +3 -1
- package/core/server/web/api/canary/admin/routes.js +7 -23
- package/core/server/web/api/canary/content/app.js +2 -3
- package/core/server/web/api/canary/content/routes.js +5 -4
- package/core/server/web/members/app.js +5 -4
- package/core/server/web/parent/backend.js +0 -1
- package/core/server/web/parent/frontend.js +5 -6
- package/core/server/web/parent/middleware/ghost-locals.js +0 -3
- package/core/server/web/well-known.js +14 -1
- package/core/shared/config/defaults.json +5 -2
- package/core/shared/config/overrides.json +1 -27
- package/core/shared/html-to-plaintext.js +78 -10
- package/core/shared/labs.js +4 -8
- package/core/shared/settings-cache/cache.js +38 -4
- package/core/shared/settings-cache/public.js +13 -7
- package/core/shared/url-utils.js +0 -2
- package/ghost.js +6 -0
- package/package.json +66 -64
- package/yarn.lock +765 -1300
- package/core/built/assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css +0 -1
- package/core/built/assets/ghost.min-4084931bc22e794fe3722139050a80b3.css +0 -1
- package/core/frontend/helpers/author.js +0 -41
- package/core/frontend/helpers/products.js +0 -65
- package/core/frontend/services/rendering/secure.js +0 -19
- package/core/frontend/services/routing/config/canary.js +0 -61
- package/core/frontend/services/routing/config/v2.js +0 -54
- package/core/frontend/services/routing/config/v3.js +0 -54
- package/core/frontend/services/theme-engine/engines/create.js +0 -45
- package/core/frontend/services/theme-engine/engines/index.js +0 -5
- package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +0 -9
- package/core/server/api/canary/products-public.js +0 -34
- package/core/server/api/canary/products.js +0 -116
- package/core/server/api/canary/utils/serializers/input/products.js +0 -28
- package/core/server/api/canary/utils/serializers/output/email-previews.js +0 -7
- package/core/server/api/canary/utils/serializers/output/products.js +0 -213
- package/core/server/api/v2/actions.js +0 -38
- package/core/server/api/v2/authentication.js +0 -191
- package/core/server/api/v2/authors-public.js +0 -69
- package/core/server/api/v2/config.js +0 -12
- package/core/server/api/v2/db.js +0 -120
- package/core/server/api/v2/images.js +0 -20
- package/core/server/api/v2/index.js +0 -147
- package/core/server/api/v2/integrations.js +0 -144
- package/core/server/api/v2/invites.js +0 -126
- package/core/server/api/v2/mail.js +0 -66
- package/core/server/api/v2/notifications.js +0 -96
- package/core/server/api/v2/oembed.js +0 -186
- package/core/server/api/v2/pages-public.js +0 -78
- package/core/server/api/v2/pages.js +0 -197
- package/core/server/api/v2/posts-public.js +0 -78
- package/core/server/api/v2/posts.js +0 -192
- package/core/server/api/v2/preview.js +0 -46
- package/core/server/api/v2/redirects.js +0 -28
- package/core/server/api/v2/roles.js +0 -19
- package/core/server/api/v2/schedules.js +0 -77
- package/core/server/api/v2/session.js +0 -70
- package/core/server/api/v2/settings-public.js +0 -17
- package/core/server/api/v2/settings.js +0 -195
- package/core/server/api/v2/site.js +0 -14
- package/core/server/api/v2/slack.js +0 -12
- package/core/server/api/v2/slugs.js +0 -51
- package/core/server/api/v2/tags-public.js +0 -71
- package/core/server/api/v2/tags.js +0 -159
- package/core/server/api/v2/themes.js +0 -133
- package/core/server/api/v2/users.js +0 -179
- package/core/server/api/v2/utils/index.js +0 -34
- package/core/server/api/v2/utils/permissions.js +0 -112
- package/core/server/api/v2/utils/serializers/index.js +0 -9
- package/core/server/api/v2/utils/serializers/input/db.js +0 -20
- package/core/server/api/v2/utils/serializers/input/index.js +0 -33
- package/core/server/api/v2/utils/serializers/input/integrations.js +0 -33
- package/core/server/api/v2/utils/serializers/input/pages.js +0 -203
- package/core/server/api/v2/utils/serializers/input/posts.js +0 -218
- package/core/server/api/v2/utils/serializers/input/settings.js +0 -152
- package/core/server/api/v2/utils/serializers/input/tags.js +0 -35
- package/core/server/api/v2/utils/serializers/input/users.js +0 -26
- package/core/server/api/v2/utils/serializers/input/utils/url.js +0 -71
- package/core/server/api/v2/utils/serializers/input/webhooks.js +0 -12
- package/core/server/api/v2/utils/serializers/output/actions.js +0 -13
- package/core/server/api/v2/utils/serializers/output/all.js +0 -25
- package/core/server/api/v2/utils/serializers/output/authentication.js +0 -68
- package/core/server/api/v2/utils/serializers/output/authors.js +0 -21
- package/core/server/api/v2/utils/serializers/output/config.js +0 -21
- package/core/server/api/v2/utils/serializers/output/db.js +0 -40
- package/core/server/api/v2/utils/serializers/output/images.js +0 -19
- package/core/server/api/v2/utils/serializers/output/index.js +0 -107
- package/core/server/api/v2/utils/serializers/output/integrations.js +0 -35
- package/core/server/api/v2/utils/serializers/output/invites.js +0 -24
- package/core/server/api/v2/utils/serializers/output/mail.js +0 -19
- package/core/server/api/v2/utils/serializers/output/notifications.js +0 -29
- package/core/server/api/v2/utils/serializers/output/oembed.js +0 -8
- package/core/server/api/v2/utils/serializers/output/pages.js +0 -26
- package/core/server/api/v2/utils/serializers/output/posts.js +0 -26
- package/core/server/api/v2/utils/serializers/output/preview.js +0 -9
- package/core/server/api/v2/utils/serializers/output/redirects.js +0 -5
- package/core/server/api/v2/utils/serializers/output/roles.js +0 -29
- package/core/server/api/v2/utils/serializers/output/schedules.js +0 -5
- package/core/server/api/v2/utils/serializers/output/settings.js +0 -61
- package/core/server/api/v2/utils/serializers/output/site.js +0 -16
- package/core/server/api/v2/utils/serializers/output/slugs.js +0 -11
- package/core/server/api/v2/utils/serializers/output/tags.js +0 -25
- package/core/server/api/v2/utils/serializers/output/themes.js +0 -25
- package/core/server/api/v2/utils/serializers/output/users.js +0 -45
- package/core/server/api/v2/utils/serializers/output/utils/clean.js +0 -174
- package/core/server/api/v2/utils/serializers/output/utils/date.js +0 -21
- package/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +0 -161
- package/core/server/api/v2/utils/serializers/output/utils/mapper.js +0 -136
- package/core/server/api/v2/utils/serializers/output/utils/post-gating.js +0 -29
- package/core/server/api/v2/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
- package/core/server/api/v2/utils/serializers/output/utils/url.js +0 -67
- package/core/server/api/v2/utils/serializers/output/webhooks.js +0 -15
- package/core/server/api/v2/utils/validators/index.js +0 -9
- package/core/server/api/v2/utils/validators/input/images.js +0 -85
- package/core/server/api/v2/utils/validators/input/index.js +0 -45
- package/core/server/api/v2/utils/validators/input/invitations.js +0 -49
- package/core/server/api/v2/utils/validators/input/invites.js +0 -21
- package/core/server/api/v2/utils/validators/input/oembed.js +0 -17
- package/core/server/api/v2/utils/validators/input/pages.js +0 -46
- package/core/server/api/v2/utils/validators/input/passwordreset.js +0 -36
- package/core/server/api/v2/utils/validators/input/posts.js +0 -46
- package/core/server/api/v2/utils/validators/input/settings.js +0 -79
- package/core/server/api/v2/utils/validators/input/setup.js +0 -17
- package/core/server/api/v2/utils/validators/input/tags.js +0 -6
- package/core/server/api/v2/utils/validators/input/users.js +0 -21
- package/core/server/api/v2/utils/validators/output/index.js +0 -1
- package/core/server/api/v2/utils/validators/utils/json-schema.js +0 -17
- package/core/server/api/v2/webhooks.js +0 -163
- package/core/server/api/v3/authentication.js +0 -192
- package/core/server/api/v3/authors-public.js +0 -69
- package/core/server/api/v3/config.js +0 -12
- package/core/server/api/v3/db.js +0 -131
- package/core/server/api/v3/email-preview.js +0 -74
- package/core/server/api/v3/email.js +0 -65
- package/core/server/api/v3/identities.js +0 -36
- package/core/server/api/v3/images.js +0 -20
- package/core/server/api/v3/index.js +0 -179
- package/core/server/api/v3/integrations.js +0 -150
- package/core/server/api/v3/invites.js +0 -125
- package/core/server/api/v3/labels.js +0 -162
- package/core/server/api/v3/mail.js +0 -66
- package/core/server/api/v3/memberSigninUrls.js +0 -33
- package/core/server/api/v3/members.js +0 -412
- package/core/server/api/v3/membersStripeConnect.js +0 -29
- package/core/server/api/v3/notifications.js +0 -96
- package/core/server/api/v3/oembed.js +0 -23
- package/core/server/api/v3/pages-public.js +0 -77
- package/core/server/api/v3/pages.js +0 -199
- package/core/server/api/v3/posts-public.js +0 -76
- package/core/server/api/v3/posts.js +0 -200
- package/core/server/api/v3/preview.js +0 -44
- package/core/server/api/v3/redirects.js +0 -47
- package/core/server/api/v3/roles.js +0 -19
- package/core/server/api/v3/schedules.js +0 -77
- package/core/server/api/v3/session.js +0 -70
- package/core/server/api/v3/settings-public.js +0 -17
- package/core/server/api/v3/settings.js +0 -224
- package/core/server/api/v3/site.js +0 -14
- package/core/server/api/v3/slack.js +0 -12
- package/core/server/api/v3/slugs.js +0 -48
- package/core/server/api/v3/snippets.js +0 -115
- package/core/server/api/v3/tags-public.js +0 -71
- package/core/server/api/v3/tags.js +0 -159
- package/core/server/api/v3/themes.js +0 -131
- package/core/server/api/v3/users.js +0 -242
- package/core/server/api/v3/utils/index.js +0 -34
- package/core/server/api/v3/utils/permissions.js +0 -116
- package/core/server/api/v3/utils/serializers/index.js +0 -9
- package/core/server/api/v3/utils/serializers/input/authors.js +0 -31
- package/core/server/api/v3/utils/serializers/input/db.js +0 -20
- package/core/server/api/v3/utils/serializers/input/index.js +0 -41
- package/core/server/api/v3/utils/serializers/input/integrations.js +0 -33
- package/core/server/api/v3/utils/serializers/input/members.js +0 -62
- package/core/server/api/v3/utils/serializers/input/pages.js +0 -208
- package/core/server/api/v3/utils/serializers/input/posts.js +0 -242
- package/core/server/api/v3/utils/serializers/input/settings.js +0 -168
- package/core/server/api/v3/utils/serializers/input/tags.js +0 -42
- package/core/server/api/v3/utils/serializers/input/users.js +0 -26
- package/core/server/api/v3/utils/serializers/input/utils/slug-filter-order.js +0 -18
- package/core/server/api/v3/utils/serializers/input/utils/url.js +0 -71
- package/core/server/api/v3/utils/serializers/input/webhooks.js +0 -12
- package/core/server/api/v3/utils/serializers/output/actions.js +0 -13
- package/core/server/api/v3/utils/serializers/output/all.js +0 -25
- package/core/server/api/v3/utils/serializers/output/authentication.js +0 -69
- package/core/server/api/v3/utils/serializers/output/authors.js +0 -21
- package/core/server/api/v3/utils/serializers/output/config.js +0 -25
- package/core/server/api/v3/utils/serializers/output/db.js +0 -40
- package/core/server/api/v3/utils/serializers/output/email-preview.js +0 -7
- package/core/server/api/v3/utils/serializers/output/emails.js +0 -13
- package/core/server/api/v3/utils/serializers/output/identities.js +0 -7
- package/core/server/api/v3/utils/serializers/output/images.js +0 -19
- package/core/server/api/v3/utils/serializers/output/index.js +0 -135
- package/core/server/api/v3/utils/serializers/output/integrations.js +0 -35
- package/core/server/api/v3/utils/serializers/output/invites.js +0 -24
- package/core/server/api/v3/utils/serializers/output/labels.js +0 -25
- package/core/server/api/v3/utils/serializers/output/mail.js +0 -19
- package/core/server/api/v3/utils/serializers/output/member-signin_urls.js +0 -7
- package/core/server/api/v3/utils/serializers/output/members.js +0 -228
- package/core/server/api/v3/utils/serializers/output/notifications.js +0 -29
- package/core/server/api/v3/utils/serializers/output/oembed.js +0 -8
- package/core/server/api/v3/utils/serializers/output/pages.js +0 -26
- package/core/server/api/v3/utils/serializers/output/posts.js +0 -26
- package/core/server/api/v3/utils/serializers/output/preview.js +0 -10
- package/core/server/api/v3/utils/serializers/output/redirects.js +0 -5
- package/core/server/api/v3/utils/serializers/output/roles.js +0 -29
- package/core/server/api/v3/utils/serializers/output/schedules.js +0 -5
- package/core/server/api/v3/utils/serializers/output/settings.js +0 -65
- package/core/server/api/v3/utils/serializers/output/site.js +0 -19
- package/core/server/api/v3/utils/serializers/output/slugs.js +0 -11
- package/core/server/api/v3/utils/serializers/output/snippets.js +0 -97
- package/core/server/api/v3/utils/serializers/output/tags.js +0 -25
- package/core/server/api/v3/utils/serializers/output/themes.js +0 -25
- package/core/server/api/v3/utils/serializers/output/users.js +0 -74
- package/core/server/api/v3/utils/serializers/output/utils/clean.js +0 -166
- package/core/server/api/v3/utils/serializers/output/utils/date.js +0 -21
- package/core/server/api/v3/utils/serializers/output/utils/extra-attrs.js +0 -174
- package/core/server/api/v3/utils/serializers/output/utils/mapper.js +0 -197
- package/core/server/api/v3/utils/serializers/output/utils/post-gating.js +0 -39
- package/core/server/api/v3/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
- package/core/server/api/v3/utils/serializers/output/utils/url.js +0 -67
- package/core/server/api/v3/utils/serializers/output/webhooks.js +0 -15
- package/core/server/api/v3/utils/validators/index.js +0 -9
- package/core/server/api/v3/utils/validators/input/images.js +0 -85
- package/core/server/api/v3/utils/validators/input/index.js +0 -61
- package/core/server/api/v3/utils/validators/input/invitations.js +0 -49
- package/core/server/api/v3/utils/validators/input/invites.js +0 -21
- package/core/server/api/v3/utils/validators/input/labels.js +0 -6
- package/core/server/api/v3/utils/validators/input/members.js +0 -6
- package/core/server/api/v3/utils/validators/input/oembed.js +0 -17
- package/core/server/api/v3/utils/validators/input/pages.js +0 -46
- package/core/server/api/v3/utils/validators/input/passwordreset.js +0 -36
- package/core/server/api/v3/utils/validators/input/posts.js +0 -46
- package/core/server/api/v3/utils/validators/input/settings.js +0 -89
- package/core/server/api/v3/utils/validators/input/setup.js +0 -17
- package/core/server/api/v3/utils/validators/input/snippets.js +0 -6
- package/core/server/api/v3/utils/validators/input/tags.js +0 -6
- package/core/server/api/v3/utils/validators/input/users.js +0 -22
- package/core/server/api/v3/utils/validators/input/webhooks.js +0 -27
- package/core/server/api/v3/utils/validators/output/index.js +0 -1
- package/core/server/api/v3/utils/validators/utils/json-schema.js +0 -17
- package/core/server/api/v3/webhooks.js +0 -130
- package/core/server/data/migrations/utils.js +0 -571
- package/core/server/data/migrations/versions/1.13/1-custom-template-post.js +0 -7
- package/core/server/data/migrations/versions/1.13/2-theme-permissions.js +0 -58
- package/core/server/data/migrations/versions/1.18/1-add-webhooks-table.js +0 -2
- package/core/server/data/migrations/versions/1.19/1-webhook-permissions.js +0 -31
- package/core/server/data/migrations/versions/1.20/1-remove-settings-keys.js +0 -65
- package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +0 -58
- package/core/server/data/migrations/versions/1.22/1-multiple-authors-DDL.js +0 -2
- package/core/server/data/migrations/versions/1.22/1-multiple-authors-DML.js +0 -63
- package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +0 -70
- package/core/server/data/migrations/versions/1.25/2-demo-post.js +0 -55
- package/core/server/data/migrations/versions/1.3/1-post-excerpt.js +0 -7
- package/core/server/data/migrations/versions/1.4/1-codeinjection-post.js +0 -14
- package/core/server/data/migrations/versions/1.5/1-og-twitter-post.js +0 -34
- package/core/server/data/migrations/versions/1.7/1-add-backup-client.js +0 -10
- package/core/server/data/migrations/versions/1.9/1-add-permissions-redirect.js +0 -23
- package/core/server/data/migrations/versions/2.0/1-rename-amp-column.js +0 -44
- package/core/server/data/migrations/versions/2.0/2-update-posts.js +0 -7
- package/core/server/data/migrations/versions/2.0/3-remove-koenig-labs.js +0 -42
- package/core/server/data/migrations/versions/2.0/4-permalink-setting.js +0 -85
- package/core/server/data/migrations/versions/2.0/5-remove-demo-post.js +0 -85
- package/core/server/data/migrations/versions/2.0/6-replace-fixture-posts.js +0 -10
- package/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +0 -5
- package/core/server/data/migrations/versions/2.14/1-add-actions-table.js +0 -2
- package/core/server/data/migrations/versions/2.14/2-add-actions-permissions.js +0 -12
- package/core/server/data/migrations/versions/2.15/1-add-type-column-to-integrations.js +0 -8
- package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +0 -69
- package/core/server/data/migrations/versions/2.16/1-add-members-perrmissions.js +0 -1
- package/core/server/data/migrations/versions/2.17/1-normalize-settings.js +0 -74
- package/core/server/data/migrations/versions/2.17/2-posts-add-canonical-url.js +0 -7
- package/core/server/data/migrations/versions/2.18/1-restore-settings-from-backup.js +0 -134
- package/core/server/data/migrations/versions/2.2/1-add-sessions-table.js +0 -2
- package/core/server/data/migrations/versions/2.2/2-add-integrations-and-api-key-tables.js +0 -6
- package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +0 -83
- package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js +0 -77
- package/core/server/data/migrations/versions/2.2/5-add-mobiledoc-revisions-table.js +0 -2
- package/core/server/data/migrations/versions/2.21/1-update-editor-permissions.js +0 -28
- package/core/server/data/migrations/versions/2.22/1-add-member-permissions-to-roles.js +0 -47
- package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +0 -83
- package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +0 -69
- package/core/server/data/migrations/versions/2.27/3-add-subdirectory-to-relative-canonical-urls.js +0 -100
- package/core/server/data/migrations/versions/2.28/1-add-db-backup-content-permission.js +0 -9
- package/core/server/data/migrations/versions/2.28/2-add-db-backup-content-permission-to-roles.js +0 -15
- package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +0 -84
- package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +0 -69
- package/core/server/data/migrations/versions/2.28/5-add-scheduler-permission-to-roles.js +0 -23
- package/core/server/data/migrations/versions/2.28/6-add-type-column.js +0 -6
- package/core/server/data/migrations/versions/2.28/7-populate-type-column.js +0 -6
- package/core/server/data/migrations/versions/2.28/8-remove-page-column.js +0 -6
- package/core/server/data/migrations/versions/2.29/1-add-post-page-column.js +0 -20
- package/core/server/data/migrations/versions/2.29/2-populate-post-page-column.js +0 -98
- package/core/server/data/migrations/versions/2.29/3-remove-page-type-column.js +0 -15
- package/core/server/data/migrations/versions/2.3/1-add-webhook-columns.js +0 -45
- package/core/server/data/migrations/versions/2.3/2-add-webhook-edit-permission.js +0 -9
- package/core/server/data/migrations/versions/2.31/1-remove-name-and-password-from-members-table.js +0 -15
- package/core/server/data/migrations/versions/2.32/01-add-members-stripe-customers-table.js +0 -4
- package/core/server/data/migrations/versions/2.32/02-add-name-to-members-table.js +0 -7
- package/core/server/data/migrations/versions/2.33/01-correct-members-stripe-customers-table.js +0 -37
- package/core/server/data/migrations/versions/2.34/01-add-stripe-customers-subscriptions-table.js +0 -2
- package/core/server/data/migrations/versions/2.34/02-add-email-to-members-stripe-customers-table.js +0 -7
- package/core/server/data/migrations/versions/2.34/03-add-name-to-members-stripe-customers-table.js +0 -7
- package/core/server/data/migrations/versions/2.35/01-add-note-to-members-table.js +0 -7
- package/core/server/data/migrations/versions/2.37/01-add-self-signup-and-from address-to-members-settings.js +0 -67
- package/core/server/data/migrations/versions/2.6/1-add-webhook-permission-roles.js +0 -31
- package/core/server/data/migrations/versions/2.8/1-add-members-table.js +0 -2
- package/core/server/data/migrations/versions/3.0/01-remove-user-ghost-auth-columns.js +0 -14
- package/core/server/data/migrations/versions/3.0/02-drop-token-auth-tables.js +0 -31
- package/core/server/data/migrations/versions/3.0/03-drop-client-auth-tables.js +0 -35
- package/core/server/data/migrations/versions/3.0/04-add-posts-meta-table.js +0 -2
- package/core/server/data/migrations/versions/3.0/05-populate-posts-meta-table.js +0 -83
- package/core/server/data/migrations/versions/3.0/06-remove-posts-meta-columns.js +0 -44
- package/core/server/data/migrations/versions/3.0/07-add-posts-type-column.js +0 -8
- package/core/server/data/migrations/versions/3.0/08-populate-posts-type-column.js +0 -94
- package/core/server/data/migrations/versions/3.0/09-remove-posts-page-column.js +0 -7
- package/core/server/data/migrations/versions/3.0/10-remove-empty-strings.js +0 -81
- package/core/server/data/migrations/versions/3.0/11-update-posts-html.js +0 -7
- package/core/server/data/migrations/versions/3.0/12-populate-members-table-from-subscribers.js +0 -54
- package/core/server/data/migrations/versions/3.0/13-drop-subscribers-table.js +0 -34
- package/core/server/data/migrations/versions/3.0/14-remove-subscribers-flag.js +0 -24
- package/core/server/data/migrations/versions/3.1/01-add-send-email-when-published-to-posts.js +0 -7
- package/core/server/data/migrations/versions/3.1/02-add-email-subject-to-posts-meta.js +0 -7
- package/core/server/data/migrations/versions/3.1/03-add-email-preview-permissions.js +0 -18
- package/core/server/data/migrations/versions/3.1/04-add-subscribed-flag-to-members.js +0 -7
- package/core/server/data/migrations/versions/3.1/05-add-emails-table.js +0 -2
- package/core/server/data/migrations/versions/3.1/06-add-email-permissions.js +0 -15
- package/core/server/data/migrations/versions/3.1/07-add-uuid-field-to-members.js +0 -8
- package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +0 -23
- package/core/server/data/migrations/versions/3.1/09-add-further-email-permissions.js +0 -25
- package/core/server/data/migrations/versions/3.1/10-add-email-error-data-column.js +0 -8
- package/core/server/data/migrations/versions/3.11/01-remove-broken-complimentary-plan-from-members-settings.js +0 -68
- package/core/server/data/migrations/versions/3.12/01-add-identity-permission.js +0 -7
- package/core/server/data/migrations/versions/3.12/02-remove-legacy-is-paid-flag-from-settings.js +0 -93
- package/core/server/data/migrations/versions/3.18/01-add-email-preview-permissions-to-roles.js +0 -39
- package/core/server/data/migrations/versions/3.18/02-add-members_stripe_connect-auth-permissions.js +0 -7
- package/core/server/data/migrations/versions/3.19/01-update-member-from-email-address.js +0 -91
- package/core/server/data/migrations/versions/3.2/01-add-cancel-at-period-end-to-subscriptions.js +0 -7
- package/core/server/data/migrations/versions/3.22/01-removed-legacy-values-from-settings-table.js +0 -65
- package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +0 -90
- package/core/server/data/migrations/versions/3.22/03-add-group-and-flags-to-settings.js +0 -15
- package/core/server/data/migrations/versions/3.22/04-populate-settings-groups-and-flags.js +0 -194
- package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +0 -182
- package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +0 -132
- package/core/server/data/migrations/versions/3.22/07-update-type-for-settings.js +0 -137
- package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +0 -65
- package/core/server/data/migrations/versions/3.23/02-remove-bulk-email-settings.js +0 -48
- package/core/server/data/migrations/versions/3.23/03-update-portal-button-setting.js +0 -24
- package/core/server/data/migrations/versions/3.23/04-add-meta-columns-to-tags-table.js +0 -54
- package/core/server/data/migrations/versions/3.24/01-populate-group-for-new-portal-settings.js +0 -38
- package/core/server/data/migrations/versions/3.25/01-add-members-stripe-webhook-settings.js +0 -22
- package/core/server/data/migrations/versions/3.26/01-add-amp-gtag-id-setting.js +0 -20
- package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +0 -53
- package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +0 -53
- package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +0 -35
- package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +0 -35
- package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +0 -177
- package/core/server/data/migrations/versions/3.30/01-add-member-signin-url-permission-roles.js +0 -8
- package/core/server/data/migrations/versions/3.32/01-add-member-support-address-setting.js +0 -27
- package/core/server/data/migrations/versions/3.32/02-add-member-reply-address-setting.js +0 -20
- package/core/server/data/migrations/versions/3.32/03-add-routes-hash-setting.js +0 -20
- package/core/server/data/migrations/versions/3.33/01-add-email-recipients-tables.js +0 -8
- package/core/server/data/migrations/versions/3.34/01-add-tokens-table.js +0 -2
- package/core/server/data/migrations/versions/3.35/01-add-address-columns-to-emails-table.js +0 -14
- package/core/server/data/migrations/versions/3.36/01-add-snippets-table.js +0 -2
- package/core/server/data/migrations/versions/3.36/02-add-snippets-permissions.js +0 -56
- package/core/server/data/migrations/versions/3.37/01-update-portal-button-setting.js +0 -30
- package/core/server/data/migrations/versions/3.38/01-add-email-recipient-filter-column.js +0 -8
- package/core/server/data/migrations/versions/3.38/02-populate-email-recipient-filter-column.js +0 -34
- package/core/server/data/migrations/versions/3.38/03-add-recipient-filter-column.js +0 -8
- package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +0 -49
- package/core/server/data/migrations/versions/3.38/05-add-emails-track-opens-column.js +0 -7
- package/core/server/data/migrations/versions/3.38/06-add-newsletter-settings.js +0 -16
- package/core/server/data/migrations/versions/3.38/07-migrate-newsletter-settings-from-config.js +0 -48
- package/core/server/data/migrations/versions/3.38/08-repopulate-send-email-when-published-down-migration.js +0 -25
- package/core/server/data/migrations/versions/3.38/09-remove-send-email-when-published-column.js +0 -7
- package/core/server/data/migrations/versions/3.39/01-add-members-signup-redirect-settings.js +0 -16
- package/core/server/data/migrations/versions/3.39/02-add-user-id-to-api-keys-table.js +0 -7
- package/core/server/data/migrations/versions/3.39/03-add-email-track-opens-setting.js +0 -16
- package/core/server/data/migrations/versions/3.39/04-add-cancellation-reason-column.js +0 -7
- package/core/server/data/migrations/versions/3.39/05-remove-unused-columns-on-emails.js +0 -14
- package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +0 -58
- package/core/server/data/migrations/versions/3.39/07-add-email-recipients-event-timestamps.js +0 -19
- package/core/server/data/migrations/versions/3.39/08-add-email-stats-columns.js +0 -22
- package/core/server/data/migrations/versions/3.40/01-add-members-email-open-rate-column.js +0 -8
- package/core/server/data/migrations/versions/3.40/02-add members-email-aggregation-columns.js +0 -16
- package/core/server/data/migrations/versions/3.40/03-populate-members-email-counts.js +0 -15
- package/core/server/data/migrations/versions/3.41/01-add-firstpromoter-settings.js +0 -16
- package/core/server/data/migrations/versions/3.6/1-add-labels-table.js +0 -2
- package/core/server/data/migrations/versions/3.6/2-add-members-labels-table.js +0 -2
- package/core/server/data/migrations/versions/3.6/3-add-labels-permissions.js +0 -47
- package/core/server/data/migrations/versions/3.7/01-fix-incorrect-member-labels-foreign-keys.js +0 -46
- package/core/server/data/migrations/versions/3.8/01-add-geolocation-to-members.js +0 -7
- package/core/server/data/migrations/versions/3.9/01-add-member-sigin-url-permissions.js +0 -7
- package/core/server/services/mail/utils.js +0 -34
- package/core/server/services/url/configs/canary.js +0 -143
- package/core/server/services/url/configs/v3.js +0 -141
- package/core/server/services/url/configs/v4.js +0 -143
- package/core/server/web/api/v2/admin/app.js +0 -43
- package/core/server/web/api/v2/admin/middleware.js +0 -85
- package/core/server/web/api/v2/admin/routes.js +0 -200
- package/core/server/web/api/v2/content/app.js +0 -38
- package/core/server/web/api/v2/content/middleware.js +0 -23
- package/core/server/web/api/v2/content/routes.js +0 -37
- package/core/server/web/api/v3/admin/app.js +0 -43
- package/core/server/web/api/v3/admin/middleware.js +0 -89
- package/core/server/web/api/v3/admin/routes.js +0 -267
- package/core/server/web/api/v3/content/app.js +0 -38
- package/core/server/web/api/v3/content/middleware.js +0 -23
- package/core/server/web/api/v3/content/routes.js +0 -37
- package/core/server/web/oauth/app.js +0 -153
- package/core/server/web/oauth/index.js +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
const _ = require('lodash');
|
|
2
|
-
const logging = require('@tryghost/logging');
|
|
3
|
-
const message1 = 'Removing demo post.';
|
|
4
|
-
const message2 = 'Removed demo post.';
|
|
5
|
-
const message3 = 'Rollback: Bring back demo post.';
|
|
6
|
-
const message4 = 'Skip: Demo post was already removed.';
|
|
7
|
-
const message5 = 'Skip: Demo post exists.';
|
|
8
|
-
|
|
9
|
-
const demoPost = {
|
|
10
|
-
title: 'Koenig Demo Post',
|
|
11
|
-
slug: 'v2-demo-post',
|
|
12
|
-
mobiledoc: '{"version":"0.3.1","atoms":[],"cards":[["hr",{}],["embed",{"url":"https://twitter.com/TryGhost/status/761119175192420352","html":"<blockquote class=\\"twitter-tweet\\"><p lang=\\"en\\" dir=\\"ltr\\">Fun announcement coming this afternoon 🙈 what could it be?</p>— Ghost (@TryGhost) <a href=\\"https://twitter.com/TryGhost/status/761119175192420352?ref_src=twsrc%5Etfw\\">August 4, 2016</a></blockquote>\\n<script async src=\\"https://platform.twitter.com/widgets.js\\" charset=\\"utf-8\\"></script>\\n","type":"rich"}],["image",{"src":"https://static.ghost.org/v1.25.0/images/koenig-demo-1.jpg","alt":"","caption":"A regular size image"}],["image",{"src":"https://static.ghost.org/v1.25.0/images/koenig-demo-2.jpg","alt":"","cardWidth":"full","caption":"It\'s wide"}],["image",{"src":"https://static.ghost.org/v1.25.0/images/koenig-demo-3.jpg","alt":"","cardWidth":"wide","caption":"It\'s wider, but not widest"}],["markdown",{"markdown":"Markdown content works just the way it always did, **simply** and *beautifully*."}],["code",{"code":".new-editor {\\n\\tdisplay: bock;\\n}"}],["embed",{"url":"https://www.youtube.com/watch?v=CfeQTuGyiqU","html":"<iframe width=\\"480\\" height=\\"270\\" src=\\"https://www.youtube.com/embed/CfeQTuGyiqU?feature=oembed\\" frameborder=\\"0\\" allow=\\"autoplay; encrypted-media\\" allowfullscreen></iframe>","type":"video"}],["html",{"html":"<div style=\\"background:#fafafa;margin-bottom:1.5em;padding:20px 50px;\\">\\n <blink>hello world</blink>\\n</div>"}]],"markups":[["strong"],["code"],["em"],["a",["href","https://forum.ghost.org/t/ghost-2-0-theme-compatibility-help-support/2103"]]],"sections":[[1,"p",[[0,[],0,"Hey there! Welcome to the new Ghost editor - affectionately known as "],[0,[0],1,"Koenig"],[0,[],0,"."]]],[1,"p",[[0,[],0,"Koenig is a brand new writing experience within Ghost, and follows more of a rich writing experience which you\'ve come to expect from the best publishing platforms. Don\'t worry though! You can still use Markdown too, if that\'s what you prefer."]]],[1,"p",[[0,[],0,"Because there are some changes to how Ghost outputs content using its new editor, we dropped this draft post into your latest update to tell you a bit about it – and simultaneously give you a chance to preview how well your theme handles these changes. So after reading this post you should both understand how everything works, and also be able to see if there are any changes you need to make to your theme in order to upgrade to Ghost 2.0."]]],[10,0],[1,"h1",[[0,[],0,"What\'s new"]]],[1,"p",[[0,[],0,"The new editor is designed to allow you have a more rich editing experience, so it\'s no longer limited to just text and formatting options – but it can also handle rich media objects, called cards. You can insert a card either by clicking on the "],[0,[1],1,"+"],[0,[],0," button on a new line, or typing "],[0,[1],1,"/"],[0,[],0," on a new line to search for a particular card. "]]],[1,"p",[[0,[],0,"Here\'s one now:"]]],[10,1],[1,"p",[[0,[],0,"Cards are rich objects which contain content which is more than just text. To start with there are cards for things like images, markdown, html and embeds — but over time we\'ll introduce more cards and integrations, as well as allowing you to create your own!"]]],[1,"h2",[[0,[],0,"Some examples of possible future cards"]]],[3,"ul",[[[0,[],0,"A chart card to display dynamic data visualisations"]],[[0,[],0,"A recipe card to show a pre-formatted list of ingredients and instructions"]],[[0,[],0,"A Mailchimp card to capture new subscribers with a web form"]],[[0,[],0,"A recommended reading card to display a dynamic suggested story based on the current user\'s reading history"]]]],[1,"p",[[0,[],0,"For now, though, we\'re just getting started with the basics."]]],[1,"h1",[[0,[],0,"New ways to work with images"]]],[1,"p",[[0,[],0,"Perhaps the most notable change to how you\'re used to interacting with Ghost is in the images. In Koenig, they\'re both more powerful and easier to work with in the editor itself - and in the theme, they\'re output slightly differently with different size options."]]],[1,"p",[[0,[],0,"For instance, here\'s your plain ol\' regular image:"]]],[10,2],[1,"p",[[0,[],0,"But perhaps you\'ve got a striking panorama that you really want to stand out as your readers scroll down the page. In that case, you could use the new full-bleed image size which stretches right out to the edges of the screen:"]]],[10,3],[1,"p",[[0,[],0,"Or maybe you\'re looking for something in between, which will give you just a little more size to break up the vertical rhythm of the post without dominating the entire screen. If that\'s the case, you might like the breakout size:"]]],[10,4],[1,"p",[[0,[],0,"Each of these sizes can be selected from within the editor, and each will output a number of HTML classes for the theme to do styling with. "]]],[1,"p",[[0,[],0,"Chances are your theme will need a few small updates to take advantage of the new editor functionality. Some people might also find they need to tweak their theme layout, as the editor canvas previously output a wrapper div around its content – but no longer does. If you rely on that div for styling, you can always add it back again in your theme."]]],[1,"p",[[0,[],0,"Oh, we have some nice new image captions, too :)"]]],[1,"h1",[[0,[],0,"What else?"]]],[1,"p",[[0,[],0,"Well, you can still write Markdown, as mentioned. In fact you\'ll find the entire previous Ghost editor "],[0,[2],1,"inside"],[0,[],0," this editor. If you want to use it then just go ahead and add a Markdown card and start writing like nothing changed at all:"]]],[10,5],[1,"p",[[0,[],0,"of course you can embed code blocks"]]],[10,6],[1,"p",[[0,[],0,"or embed things from external services like YouTube..."]]],[10,7],[1,"p",[[0,[],0,"and yeah you can do full HTML if you need to, as well!"]]],[10,8],[1,"p",[[0,[],0,"So everything works, hopefully, just about how you would expect. It\'s like the old editor, but faster, cleaner, prettier, and a whole lot more powerful."]]],[1,"h1",[[0,[],0,"What do I do with this information?"]]],[1,"p",[[0,[],0,"Preview this post on your site to see if it causes any issues with your theme. Click on the settings cog in the top right 👉🏼 corner of the editor, then click on \'"],[0,[0],1,"Preview"],[0,[],0,"\' next to the \'Post URL\' input."]]],[1,"p",[[0,[],0,"If everything looks good to you then there\'s nothing you need to do, you\'re all set! If you spot any issues with your design, or there are some funky display issues, then you might need to make some updates to your theme based on the new editor classes being output."]]],[1,"p",[[0,[],0,"Head over to the "],[0,[3],1,"Ghost 2.0 Theme Compatibility"],[0,[],0," forum topic to discuss any changes and get help if needed."]]],[1,"p",[[0,[],0,"That\'s it!"]]],[1,"p",[[0,[],0,"We\'re looking forward to sharing more about the new editor soon"]]]]}',
|
|
13
|
-
plaintext: 'Hey there! Welcome to the new Ghost editor - affectionately known as Koenig.\n\nKoenig is a brand new writing experience within Ghost, and follows more of a\nrich writing experience which you\'ve come to expect from the best publishing\nplatforms. Don\'t worry though! You can still use Markdown too, if that\'s what\nyou prefer.\n\nBecause there are some changes to how Ghost outputs content using its new\neditor, we dropped this draft post into your latest update to tell you a bit\nabout it – and simultaneously give you a chance to preview how well your theme\nhandles these changes. So after reading this post you should both understand how\neverything works, and also be able to see if there are any changes you need to\nmake to your theme in order to upgrade to Ghost 2.0.\n\n\n--------------------------------------------------------------------------------\n\nWhat\'s new\nThe new editor is designed to allow you have a more rich editing experience, so\nit\'s no longer limited to just text and formatting options – but it can also\nhandle rich media objects, called cards. You can insert a card either by\nclicking on the + button on a new line, or typing / on a new line to search\nfor a particular card. \n\nHere\'s one now:\n\nFun announcement coming this afternoon 🙈 what could it be?\n\n— Ghost (@TryGhost) August 4, 2016\n[https://twitter.com/TryGhost/status/761119175192420352?ref_src=twsrc%5Etfw]\nCards are rich objects which contain content which is more than just text. To\nstart with there are cards for things like images, markdown, html and embeds —\nbut over time we\'ll introduce more cards and integrations, as well as allowing\nyou to create your own!\n\nSome examples of possible future cards\n * A chart card to display dynamic data visualisations\n * A recipe card to show a pre-formatted list of ingredients and instructions\n * A Mailchimp card to capture new subscribers with a web form\n * A recommended reading card to display a dynamic suggested story based on the\n current user\'s reading history\n\nFor now, though, we\'re just getting started with the basics.\n\nNew ways to work with images\nPerhaps the most notable change to how you\'re used to interacting with Ghost is\nin the images. In Koenig, they\'re both more powerful and easier to work with in\nthe editor itself - and in the theme, they\'re output slightly differently with\ndifferent size options.\n\nFor instance, here\'s your plain ol\' regular image:\n\nA regular size imageBut perhaps you\'ve got a striking panorama that you really\nwant to stand out as your readers scroll down the page. In that case, you could\nuse the new full-bleed image size which stretches right out to the edges of the\nscreen:\n\nIt\'s wideOr maybe you\'re looking for something in between, which will give you\njust a little more size to break up the vertical rhythm of the post without\ndominating the entire screen. If that\'s the case, you might like the breakout\nsize:\n\nIt\'s wider, but not widestEach of these sizes can be selected from within the\neditor, and each will output a number of HTML classes for the theme to do\nstyling with. \n\nChances are your theme will need a few small updates to take advantage of the\nnew editor functionality. Some people might also find they need to tweak their\ntheme layout, as the editor canvas previously output a wrapper div around its\ncontent – but no longer does. If you rely on that div for styling, you can\nalways add it back again in your theme.\n\nOh, we have some nice new image captions, too :)\n\nWhat else?\nWell, you can still write Markdown, as mentioned. In fact you\'ll find the entire\nprevious Ghost editor inside this editor. If you want to use it then just go\nahead and add a Markdown card and start writing like nothing changed at all:\n\nMarkdown content works just the way it always did, simply and beautifully.\n\nof course you can embed code blocks\n\n.new-editor {\n\tdisplay: bock;\n}\n\nor embed things from external services like YouTube...\n\nand yeah you can do full HTML if you need to, as well!\n\nhello worldSo everything works, hopefully, just about how you would expect. It\'s\nlike the old editor, but faster, cleaner, prettier, and a whole lot more\npowerful.\n\nWhat do I do with this information?\nPreview this post on your site to see if it causes any issues with your theme.\nClick on the settings cog in the top right 👉🏼 corner of the editor, then click\non \'Preview\' next to the \'Post URL\' input.\n\nIf everything looks good to you then there\'s nothing you need to do, you\'re all\nset! If you spot any issues with your design, or there are some funky display\nissues, then you might need to make some updates to your theme based on the new\neditor classes being output.\n\nHead over to the Ghost 2.0 Theme Compatibility\n[https://forum.ghost.org/t/ghost-2-0-theme-compatibility-help-support/2103] \nforum topic to discuss any changes and get help if needed.\n\nThat\'s it!\n\nWe\'re looking forward to sharing more about the new editor soon',
|
|
14
|
-
feature_image: '',
|
|
15
|
-
featured: false,
|
|
16
|
-
page: false,
|
|
17
|
-
status: 'draft',
|
|
18
|
-
meta_title: null,
|
|
19
|
-
meta_description: null,
|
|
20
|
-
created_by: '5951f5fca366002ebd5dbef7',
|
|
21
|
-
published_by: null,
|
|
22
|
-
author_id: '5951f5fca366002ebd5dbef7'
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
module.exports.config = {
|
|
26
|
-
transaction: true
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
module.exports.up = (options) => {
|
|
30
|
-
let localOptions = _.merge({
|
|
31
|
-
context: {internal: true},
|
|
32
|
-
columns: ['id'],
|
|
33
|
-
migrating: true
|
|
34
|
-
}, options);
|
|
35
|
-
|
|
36
|
-
return localOptions
|
|
37
|
-
.transacting('posts')
|
|
38
|
-
.where('slug', 'v2-demo-post')
|
|
39
|
-
.where('status', 'all')
|
|
40
|
-
.select().then((posts) => {
|
|
41
|
-
if (!posts || posts.length === 0) {
|
|
42
|
-
logging.warn(message4);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
logging.info(message1);
|
|
46
|
-
let post = posts[0];
|
|
47
|
-
|
|
48
|
-
// @NOTE: raw knex query, because of https://github.com/TryGhost/Ghost/issues/9983
|
|
49
|
-
return options
|
|
50
|
-
.transacting('posts_authors')
|
|
51
|
-
.where('post_id', post.id)
|
|
52
|
-
.del()
|
|
53
|
-
.then(() => {
|
|
54
|
-
return options
|
|
55
|
-
.transacting('posts')
|
|
56
|
-
.where('id', post.id)
|
|
57
|
-
.del();
|
|
58
|
-
});
|
|
59
|
-
})
|
|
60
|
-
.then(() => {
|
|
61
|
-
logging.info(message2);
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
module.exports.down = (options) => {
|
|
66
|
-
let localOptions = _.merge({
|
|
67
|
-
context: {internal: true},
|
|
68
|
-
columns: ['id'],
|
|
69
|
-
migrating: true
|
|
70
|
-
}, options);
|
|
71
|
-
|
|
72
|
-
return localOptions
|
|
73
|
-
.transacting('posts')
|
|
74
|
-
.where('slug', 'v2-demo-post')
|
|
75
|
-
.where('status', 'all')
|
|
76
|
-
.select().then((posts) => {
|
|
77
|
-
if (posts && posts.length > 0) {
|
|
78
|
-
logging.warn(message5);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
logging.info(message3);
|
|
83
|
-
return localOptions.transacting('posts').insert(demoPost);
|
|
84
|
-
});
|
|
85
|
-
};
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const merge = require('lodash/merge');
|
|
3
|
-
const models = require('../../../../models');
|
|
4
|
-
const {fixtureManager} = require('../../../schema/fixtures');
|
|
5
|
-
|
|
6
|
-
const _private = {};
|
|
7
|
-
|
|
8
|
-
_private.printResult = function printResult(result, message) {
|
|
9
|
-
if (result.done === result.expected) {
|
|
10
|
-
logging.info(message);
|
|
11
|
-
} else {
|
|
12
|
-
logging.warn(`(${result.done}/${result.expected}) ${message}`);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
_private.addZapierIntegration = (options) => {
|
|
17
|
-
const message = 'Adding "Zapier" integration';
|
|
18
|
-
const fixtureIntegration = fixtureManager.findModelFixtureEntry('Integration', {slug: 'zapier'});
|
|
19
|
-
|
|
20
|
-
return models.Integration.findOne({slug: fixtureIntegration.slug}, options)
|
|
21
|
-
.then((integration) => {
|
|
22
|
-
if (!integration) {
|
|
23
|
-
return fixtureManager.addFixturesForModel({
|
|
24
|
-
name: 'Integration',
|
|
25
|
-
entries: [fixtureIntegration]
|
|
26
|
-
}, options).then(result => _private.printResult(result, message));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
logging.warn(message);
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
_private.removeZapierIntegration = (options) => {
|
|
34
|
-
const message = 'Rollback: Removing "Zapier" integration';
|
|
35
|
-
|
|
36
|
-
return models.Integration.findOne({slug: 'zapier'}, options)
|
|
37
|
-
.then((integration) => {
|
|
38
|
-
if (!integration) {
|
|
39
|
-
logging.warn(message);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return integration.destroy().then(() => {
|
|
44
|
-
logging.info(message);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
module.exports.config = {
|
|
50
|
-
transaction: true
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
module.exports.up = (options) => {
|
|
54
|
-
const localOptions = merge({
|
|
55
|
-
context: {internal: true},
|
|
56
|
-
migrating: true
|
|
57
|
-
}, options);
|
|
58
|
-
|
|
59
|
-
return _private.addZapierIntegration(localOptions);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
module.exports.down = (options) => {
|
|
63
|
-
const localOptions = merge({
|
|
64
|
-
context: {internal: true},
|
|
65
|
-
migrating: true
|
|
66
|
-
}, options);
|
|
67
|
-
|
|
68
|
-
return _private.removeZapierIntegration(localOptions);
|
|
69
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports.up = module.exports.down = () => Promise.resolve();
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
const _ = require('lodash');
|
|
2
|
-
const Promise = require('bluebird');
|
|
3
|
-
const logging = require('@tryghost/logging');
|
|
4
|
-
|
|
5
|
-
module.exports.config = {
|
|
6
|
-
transaction: true
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
module.exports.up = (options) => {
|
|
10
|
-
let localOptions = _.merge({
|
|
11
|
-
context: {internal: true}
|
|
12
|
-
}, options);
|
|
13
|
-
|
|
14
|
-
return localOptions
|
|
15
|
-
.transacting('settings')
|
|
16
|
-
.then((response) => {
|
|
17
|
-
if (!response) {
|
|
18
|
-
logging.warn('Cannot find settings.');
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return Promise.each(response, (entry) => {
|
|
23
|
-
// @NOTE: ensure we only transform real boolean fields to ensure we won't modify any customer data
|
|
24
|
-
if (['is_private', 'force_i18n', 'amp'].includes(entry.key)) {
|
|
25
|
-
// @NOTE: sending false to db for type TEXT will transform to "0"
|
|
26
|
-
if ((entry.value === '0' || entry.value === '1')) {
|
|
27
|
-
const value = (!!+entry.value).toString();
|
|
28
|
-
|
|
29
|
-
logging.info(`Setting ${entry.key} to ${value} because it was ${entry.value}`);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* @NOTE: we have update raw data, because otherwise the `Settings.edit` fn will re-fetch the data
|
|
33
|
-
* using Bookshelf and normalize "0" to false. The save won't happen then.
|
|
34
|
-
*/
|
|
35
|
-
return localOptions
|
|
36
|
-
.transacting('settings')
|
|
37
|
-
.where('key', entry.key)
|
|
38
|
-
.update({
|
|
39
|
-
value: value
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// @NOTE: null or undefined were obviously intended to be false
|
|
44
|
-
if (entry.value === null || entry.value === undefined || entry.value === 'null' || entry.value === 'undefined') {
|
|
45
|
-
const value = 'false';
|
|
46
|
-
logging.info(`Setting ${entry.key} to ${value} because it was ${entry.value}`);
|
|
47
|
-
|
|
48
|
-
return localOptions
|
|
49
|
-
.transacting('settings')
|
|
50
|
-
.where('key', entry.key)
|
|
51
|
-
.update({
|
|
52
|
-
value
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// @NOTE: Something other than true/false is stored, set to true, because that's how it would have behaved
|
|
57
|
-
if (entry.value !== 'false' && entry.value !== 'true') {
|
|
58
|
-
const value = 'true';
|
|
59
|
-
logging.info(`Setting ${entry.key} to ${value} because it was ${entry.value}`);
|
|
60
|
-
|
|
61
|
-
return localOptions
|
|
62
|
-
.transacting('settings')
|
|
63
|
-
.where('key', entry.key)
|
|
64
|
-
.update({
|
|
65
|
-
value
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
logging.info(`Skip setting ${entry.key}`);
|
|
71
|
-
return Promise.resolve();
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
};
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
const _ = require('lodash');
|
|
2
|
-
const Promise = require('bluebird');
|
|
3
|
-
const logging = require('@tryghost/logging');
|
|
4
|
-
const settingsCache = require('../../../../../shared/settings-cache');
|
|
5
|
-
const config = require('../../../../../shared/config');
|
|
6
|
-
const moment = require('moment');
|
|
7
|
-
const fs = require('fs-extra');
|
|
8
|
-
const path = require('path');
|
|
9
|
-
|
|
10
|
-
module.exports.config = {
|
|
11
|
-
transaction: true
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const backupFileRegex = /ghost.([\d]{4}-[\d]{2}-[\d]{2}).json$/;
|
|
15
|
-
|
|
16
|
-
// @NOTE: spagetthi
|
|
17
|
-
module.exports.up = (options) => {
|
|
18
|
-
const contentPath = config.get('paths').contentPath;
|
|
19
|
-
const dataPath = path.join(contentPath, 'data');
|
|
20
|
-
|
|
21
|
-
const localOptions = _.merge({
|
|
22
|
-
context: {internal: true}
|
|
23
|
-
}, options);
|
|
24
|
-
|
|
25
|
-
return fs.readdir(dataPath).then(function (files) {
|
|
26
|
-
return files;
|
|
27
|
-
}).catch(function () {
|
|
28
|
-
logging.warn(`Error reading ${dataPath} whilst trying to ensure boolean settings are correct. Please double check your settings after this upgrade`);
|
|
29
|
-
return [];
|
|
30
|
-
}).then(function (files) {
|
|
31
|
-
const backups = files.filter(function (filename) {
|
|
32
|
-
return backupFileRegex.test(filename);
|
|
33
|
-
}).sort(function (a, b) {
|
|
34
|
-
const dateA = new Date(a.match(backupFileRegex)[1]);
|
|
35
|
-
const dateB = new Date(b.match(backupFileRegex)[1]);
|
|
36
|
-
|
|
37
|
-
return dateB - dateA;
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
if (backups.length === 0) {
|
|
41
|
-
logging.warn('No backup files found, skipping...');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const mostRecentBackup = backups[0];
|
|
46
|
-
|
|
47
|
-
logging.info(`Using backupfile ${path.join(dataPath, mostRecentBackup)}`);
|
|
48
|
-
|
|
49
|
-
let backup;
|
|
50
|
-
try {
|
|
51
|
-
backup = require(path.join(dataPath, mostRecentBackup));
|
|
52
|
-
} catch (e) {
|
|
53
|
-
logging.warn(`Could not read ${path.join(dataPath, mostRecentBackup)} whilst trying to ensure boolean settings are correct. Please double check your settings after this upgrade`);
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const settings = backup && backup.data && backup.data.settings;
|
|
57
|
-
|
|
58
|
-
if (!settings) {
|
|
59
|
-
logging.warn('Could not read settings from backup file, skipping...');
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return localOptions
|
|
64
|
-
.transacting('migrations')
|
|
65
|
-
.then((response) => {
|
|
66
|
-
if (!response) {
|
|
67
|
-
logging.warn('Cannot find migrations.');
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// NOTE: You are only affected if you migrated to 2.17
|
|
72
|
-
// 2.18 fixed the 2.17 migration (!)
|
|
73
|
-
const isAffected = _.find(response, {currentVersion: '2.17', version: '2.17'});
|
|
74
|
-
|
|
75
|
-
if (!isAffected) {
|
|
76
|
-
logging.warn('Skipping migration. Not affected.');
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
logging.warn('...is affected.');
|
|
81
|
-
|
|
82
|
-
const relevantBackupSettings = settings.filter(function (entry) {
|
|
83
|
-
return ['is_private', 'force_i18n', 'amp'].includes(entry.key);
|
|
84
|
-
}).reduce(function (obj, entry) {
|
|
85
|
-
return Object.assign(obj, {
|
|
86
|
-
[entry.key]: entry
|
|
87
|
-
});
|
|
88
|
-
}, {});
|
|
89
|
-
|
|
90
|
-
return localOptions
|
|
91
|
-
.transacting('settings')
|
|
92
|
-
.then((settingsResponse) => {
|
|
93
|
-
if (!settingsResponse) {
|
|
94
|
-
logging.warn('Cannot find settings.');
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const relevantLiveSettings = settingsResponse.filter(function (entry) {
|
|
99
|
-
return ['is_private', 'force_i18n', 'amp'].includes(entry.key);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
return Promise.each(relevantLiveSettings, (liveSetting) => {
|
|
103
|
-
const backupSetting = relevantBackupSettings[liveSetting.key];
|
|
104
|
-
|
|
105
|
-
if (liveSetting.value === 'false' && backupSetting.value === 'true') {
|
|
106
|
-
logging.info(`Reverting setting ${liveSetting.key}`);
|
|
107
|
-
|
|
108
|
-
return localOptions
|
|
109
|
-
.transacting('settings')
|
|
110
|
-
.where('key', liveSetting.key)
|
|
111
|
-
.update({
|
|
112
|
-
value: backupSetting.value
|
|
113
|
-
})
|
|
114
|
-
.then(() => {
|
|
115
|
-
// CASE: we have to update settings cache, because Ghost is able to run migrations on the same process
|
|
116
|
-
settingsCache.set(liveSetting.key, {
|
|
117
|
-
id: liveSetting.id,
|
|
118
|
-
key: liveSetting.key,
|
|
119
|
-
type: liveSetting.type,
|
|
120
|
-
created_at: moment(liveSetting.created_at).startOf('seconds').toDate(),
|
|
121
|
-
updated_at: moment().startOf('seconds').toDate(),
|
|
122
|
-
updated_by: liveSetting.updated_by,
|
|
123
|
-
created_by: liveSetting.created_by,
|
|
124
|
-
value: backupSetting.value === 'true'
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return Promise.resolve();
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
};
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
const logging = require('@tryghost/logging');
|
|
2
|
-
const merge = require('lodash/merge');
|
|
3
|
-
const models = require('../../../../models');
|
|
4
|
-
const {fixtureManager} = require('../../../schema/fixtures');
|
|
5
|
-
|
|
6
|
-
const _private = {};
|
|
7
|
-
|
|
8
|
-
_private.printResult = function printResult(result, message) {
|
|
9
|
-
if (result.done === result.expected) {
|
|
10
|
-
logging.info(message);
|
|
11
|
-
} else {
|
|
12
|
-
logging.warn(`(${result.done}/${result.expected}) ${message}`);
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
_private.addApiKeyRole = (options) => {
|
|
17
|
-
const message = 'Adding "Admin Integration" role to roles table';
|
|
18
|
-
const apiKeyRole = fixtureManager.findModelFixtureEntry('Role', {name: 'Admin Integration'});
|
|
19
|
-
|
|
20
|
-
return models.Role.findOne({name: apiKeyRole.name}, options)
|
|
21
|
-
.then((role) => {
|
|
22
|
-
if (!role) {
|
|
23
|
-
return fixtureManager.addFixturesForModel({
|
|
24
|
-
name: 'Role',
|
|
25
|
-
entries: [apiKeyRole]
|
|
26
|
-
}, options).then(result => _private.printResult(result, message));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
logging.warn(message);
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
_private.addApiKeyPermissions = (options) => {
|
|
34
|
-
const message = 'Adding permissions for the "Admin Integration" role';
|
|
35
|
-
const relations = fixtureManager.findRelationFixture('Role', 'Permission');
|
|
36
|
-
|
|
37
|
-
return fixtureManager.addFixturesForRelation({
|
|
38
|
-
from: relations.from,
|
|
39
|
-
to: relations.to,
|
|
40
|
-
entries: {
|
|
41
|
-
'Admin Integration': relations.entries['Admin Integration']
|
|
42
|
-
}
|
|
43
|
-
}, options).then(result => _private.printResult(result, message));
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
_private.removeApiKeyPermissionsAndRole = (options) => {
|
|
47
|
-
const message = 'Rollback: Removing "Admin Integration" role and permissions';
|
|
48
|
-
|
|
49
|
-
return models.Role.findOne({name: 'Admin Integration'}, options)
|
|
50
|
-
.then((role) => {
|
|
51
|
-
if (!role) {
|
|
52
|
-
logging.warn(message);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return role.destroy(options).then(() => {
|
|
57
|
-
logging.info(message);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
module.exports.config = {
|
|
63
|
-
transaction: true
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
module.exports.up = (options) => {
|
|
67
|
-
const localOptions = merge({
|
|
68
|
-
context: {internal: true},
|
|
69
|
-
migrating: true
|
|
70
|
-
}, options);
|
|
71
|
-
|
|
72
|
-
return _private.addApiKeyRole(localOptions)
|
|
73
|
-
.then(() => _private.addApiKeyPermissions(localOptions));
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
module.exports.down = (options) => {
|
|
77
|
-
const localOptions = merge({
|
|
78
|
-
context: {internal: true},
|
|
79
|
-
migrating: true
|
|
80
|
-
}, options);
|
|
81
|
-
|
|
82
|
-
return _private.removeApiKeyPermissionsAndRole(localOptions);
|
|
83
|
-
};
|
package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
const {
|
|
2
|
-
addPermissionWithRoles,
|
|
3
|
-
combineTransactionalMigrations
|
|
4
|
-
} = require('../../utils');
|
|
5
|
-
|
|
6
|
-
module.exports = combineTransactionalMigrations(
|
|
7
|
-
addPermissionWithRoles({
|
|
8
|
-
name: 'Browse integrations',
|
|
9
|
-
action: 'browse',
|
|
10
|
-
object: 'integration'
|
|
11
|
-
}, [
|
|
12
|
-
'Administrator'
|
|
13
|
-
]),
|
|
14
|
-
addPermissionWithRoles({
|
|
15
|
-
name: 'Read integrations',
|
|
16
|
-
action: 'read',
|
|
17
|
-
object: 'integration'
|
|
18
|
-
}, [
|
|
19
|
-
'Administrator'
|
|
20
|
-
]),
|
|
21
|
-
addPermissionWithRoles({
|
|
22
|
-
name: 'Edit integrations',
|
|
23
|
-
action: 'edit',
|
|
24
|
-
object: 'integration'
|
|
25
|
-
}, [
|
|
26
|
-
'Administrator'
|
|
27
|
-
]),
|
|
28
|
-
addPermissionWithRoles({
|
|
29
|
-
name: 'Add integrations',
|
|
30
|
-
action: 'add',
|
|
31
|
-
object: 'integration'
|
|
32
|
-
}, [
|
|
33
|
-
'Administrator'
|
|
34
|
-
]),
|
|
35
|
-
addPermissionWithRoles({
|
|
36
|
-
name: 'Delete integrations',
|
|
37
|
-
action: 'destroy',
|
|
38
|
-
object: 'integration'
|
|
39
|
-
}, [
|
|
40
|
-
'Administrator'
|
|
41
|
-
]),
|
|
42
|
-
addPermissionWithRoles({
|
|
43
|
-
name: 'Browse API keys',
|
|
44
|
-
action: 'browse',
|
|
45
|
-
object: 'api_key'
|
|
46
|
-
}, [
|
|
47
|
-
'Administrator'
|
|
48
|
-
]),
|
|
49
|
-
addPermissionWithRoles({
|
|
50
|
-
name: 'Read API keys',
|
|
51
|
-
action: 'read',
|
|
52
|
-
object: 'api_key'
|
|
53
|
-
}, [
|
|
54
|
-
'Administrator'
|
|
55
|
-
]),
|
|
56
|
-
addPermissionWithRoles({
|
|
57
|
-
name: 'Edit API keys',
|
|
58
|
-
action: 'edit',
|
|
59
|
-
object: 'api_key'
|
|
60
|
-
}, [
|
|
61
|
-
'Administrator'
|
|
62
|
-
]),
|
|
63
|
-
addPermissionWithRoles({
|
|
64
|
-
name: 'Add API keys',
|
|
65
|
-
action: 'add',
|
|
66
|
-
object: 'api_key'
|
|
67
|
-
}, [
|
|
68
|
-
'Administrator'
|
|
69
|
-
]),
|
|
70
|
-
addPermissionWithRoles({
|
|
71
|
-
name: 'Delete API keys',
|
|
72
|
-
action: 'destroy',
|
|
73
|
-
object: 'api_key'
|
|
74
|
-
}, [
|
|
75
|
-
'Administrator'
|
|
76
|
-
])
|
|
77
|
-
);
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
const {
|
|
2
|
-
combineTransactionalMigrations,
|
|
3
|
-
addPermissionWithRoles
|
|
4
|
-
} = require('../../utils');
|
|
5
|
-
|
|
6
|
-
module.exports = combineTransactionalMigrations(
|
|
7
|
-
addPermissionWithRoles({
|
|
8
|
-
name: 'Browse notifications',
|
|
9
|
-
action: 'browse',
|
|
10
|
-
object: 'notification'
|
|
11
|
-
}, [
|
|
12
|
-
'Editor'
|
|
13
|
-
]),
|
|
14
|
-
addPermissionWithRoles({
|
|
15
|
-
name: 'Add notifications',
|
|
16
|
-
action: 'add',
|
|
17
|
-
object: 'notification'
|
|
18
|
-
}, [
|
|
19
|
-
'Editor'
|
|
20
|
-
]),
|
|
21
|
-
addPermissionWithRoles({
|
|
22
|
-
name: 'Delete notifications',
|
|
23
|
-
action: 'destroy',
|
|
24
|
-
object: 'notification'
|
|
25
|
-
}, [
|
|
26
|
-
'Editor'
|
|
27
|
-
])
|
|
28
|
-
);
|