ghost 4.48.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/Gruntfile.js +24 -24
  2. package/README.md +3 -2
  3. package/content/themes/casper/assets/built/global.css +1 -1
  4. package/content/themes/casper/assets/built/global.css.map +1 -1
  5. package/content/themes/casper/assets/built/screen.css +1 -1
  6. package/content/themes/casper/assets/built/screen.css.map +1 -1
  7. package/content/themes/casper/assets/css/global.css +2 -2
  8. package/content/themes/casper/assets/css/screen.css +412 -664
  9. package/content/themes/casper/author.hbs +48 -35
  10. package/content/themes/casper/default.hbs +5 -23
  11. package/content/themes/casper/error-404.hbs +1 -1
  12. package/content/themes/casper/index.hbs +29 -22
  13. package/content/themes/casper/package.json +25 -37
  14. package/content/themes/casper/page.hbs +12 -12
  15. package/content/themes/casper/partials/icons/facebook.hbs +1 -1
  16. package/content/themes/casper/partials/icons/twitter.hbs +1 -1
  17. package/content/themes/casper/partials/post-card.hbs +26 -40
  18. package/content/themes/casper/post.hbs +54 -50
  19. package/content/themes/casper/tag.hbs +42 -47
  20. package/core/boot.js +18 -15
  21. package/core/bridge.js +24 -25
  22. package/core/built/assets/ghost-dark-08acba9994ea4f9478dfdca2a97b36f1.css +1 -0
  23. package/core/built/assets/{ghost.min-10ba0de3ecb93d63d62bb43ac11c740f.js → ghost.min-75bec566fbea362ed98811fe6d5b6e24.js} +1115 -1185
  24. package/core/built/assets/ghost.min-855c93486d789aa09dbe97f272672bf9.css +1 -0
  25. package/core/built/assets/icons/analytics.svg +14 -0
  26. package/core/built/assets/icons/calendar.svg +4 -1
  27. package/core/built/assets/icons/email-at.svg +1 -1
  28. package/core/built/assets/icons/email-name.svg +1 -1
  29. package/core/built/assets/icons/info.svg +1 -1
  30. package/core/built/assets/icons/twitter-logo.svg +3 -0
  31. package/core/built/assets/{vendor.min-97fd438f4772c5ec6bb30ad779b8530e.js → vendor.min-14ad7269e0529dd20f61d2989e69fa1e.js} +95 -90
  32. package/core/cli/README.md +88 -0
  33. package/core/cli/command.js +129 -0
  34. package/core/cli/repl.js +32 -0
  35. package/core/cli/timetravel.js +87 -0
  36. package/core/frontend/apps/amp/lib/helpers/amp_content.js +10 -12
  37. package/core/frontend/apps/amp/lib/router.js +2 -3
  38. package/core/frontend/helpers/body_class.js +2 -2
  39. package/core/frontend/helpers/excerpt.js +0 -2
  40. package/core/frontend/helpers/get.js +23 -24
  41. package/core/frontend/helpers/ghost_head.js +102 -103
  42. package/core/frontend/helpers/navigation.js +0 -2
  43. package/core/frontend/helpers/prev_post.js +20 -26
  44. package/core/frontend/helpers/price.js +2 -2
  45. package/core/frontend/meta/author-url.js +2 -2
  46. package/core/frontend/meta/description.js +3 -3
  47. package/core/frontend/meta/excerpt.js +1 -2
  48. package/core/frontend/meta/generate-excerpt.js +2 -11
  49. package/core/frontend/meta/paginated-url.js +1 -1
  50. package/core/frontend/meta/rss-url.js +0 -1
  51. package/core/frontend/meta/url.js +4 -4
  52. package/core/frontend/services/data/entry-lookup.js +1 -1
  53. package/core/frontend/services/data/fetch-data.js +1 -1
  54. package/core/frontend/services/helpers/handlebars.js +11 -12
  55. package/core/frontend/services/proxy.js +11 -1
  56. package/core/frontend/services/rendering/format-response.js +9 -2
  57. package/core/frontend/services/rendering/index.js +0 -4
  58. package/core/frontend/services/rendering/render-entry.js +1 -1
  59. package/core/frontend/services/rendering/templates.js +15 -5
  60. package/core/frontend/services/routing/CollectionRouter.js +2 -2
  61. package/core/frontend/services/routing/EmailRouter.js +2 -2
  62. package/core/frontend/services/routing/ParentRouter.js +1 -1
  63. package/core/frontend/services/routing/PreviewRouter.js +3 -3
  64. package/core/frontend/services/routing/{config/v4.js → config.js} +3 -5
  65. package/core/frontend/services/routing/controllers/channel.js +0 -10
  66. package/core/frontend/services/routing/controllers/collection.js +0 -9
  67. package/core/frontend/services/routing/controllers/email-post.js +2 -7
  68. package/core/frontend/services/routing/controllers/entry.js +1 -3
  69. package/core/frontend/services/routing/controllers/index.js +2 -2
  70. package/core/frontend/services/routing/controllers/{preview.js → previews.js} +3 -8
  71. package/core/frontend/services/routing/controllers/static.js +1 -6
  72. package/core/frontend/services/routing/router-manager.js +38 -20
  73. package/core/frontend/services/rss/generate-feed.js +7 -9
  74. package/core/frontend/services/theme-engine/active.js +0 -8
  75. package/core/frontend/services/theme-engine/config/defaults.json +1 -3
  76. package/core/frontend/services/theme-engine/middleware/index.js +0 -1
  77. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +0 -69
  78. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +3 -6
  79. package/core/frontend/web/middleware/static-theme.js +14 -6
  80. package/core/frontend/web/routes.js +9 -9
  81. package/core/frontend/web/site.js +15 -18
  82. package/core/server/adapters/scheduling/post-scheduling/index.js +1 -1
  83. package/core/server/api/README.md +2 -6
  84. package/core/server/api/canary/authentication.js +4 -3
  85. package/core/server/api/canary/{email-preview.js → email-previews.js} +9 -8
  86. package/core/server/api/canary/index.js +14 -18
  87. package/core/server/api/canary/members.js +1 -13
  88. package/core/server/api/{v3/actions.js → canary/newsletters-public.js} +6 -6
  89. package/core/server/api/canary/newsletters.js +1 -13
  90. package/core/server/api/canary/notifications.js +17 -22
  91. package/core/server/api/canary/offers-public.js +28 -0
  92. package/core/server/api/canary/pages.js +1 -1
  93. package/core/server/api/canary/posts.js +4 -8
  94. package/core/server/api/canary/{preview.js → previews.js} +1 -1
  95. package/core/server/api/canary/schedules.js +1 -1
  96. package/core/server/api/canary/session.js +1 -1
  97. package/core/server/api/canary/settings-public.js +3 -1
  98. package/core/server/api/canary/settings.js +28 -16
  99. package/core/server/api/canary/utils/index.js +2 -4
  100. package/core/server/api/canary/utils/serializers/input/index.js +0 -4
  101. package/core/server/api/canary/utils/serializers/input/members.js +46 -17
  102. package/core/server/api/canary/utils/serializers/input/pages.js +0 -17
  103. package/core/server/api/canary/utils/serializers/input/posts.js +1 -28
  104. package/core/server/api/canary/utils/serializers/input/settings.js +61 -142
  105. package/core/server/api/canary/utils/serializers/input/tiers.js +39 -4
  106. package/core/server/api/canary/utils/serializers/output/authentication.js +2 -6
  107. package/core/server/api/canary/utils/serializers/output/index.js +2 -10
  108. package/core/server/api/canary/utils/serializers/output/mappers/index.js +1 -0
  109. package/core/server/api/canary/utils/serializers/output/mappers/newsletters.js +24 -0
  110. package/core/server/api/canary/utils/serializers/output/mappers/pages.js +1 -1
  111. package/core/server/api/canary/utils/serializers/output/mappers/posts.js +9 -7
  112. package/core/server/api/canary/utils/serializers/output/mappers/settings.js +5 -31
  113. package/core/server/api/canary/utils/serializers/output/members.js +18 -3
  114. package/core/server/api/canary/utils/serializers/output/offers.js +9 -1
  115. package/core/server/api/canary/utils/serializers/output/{preview.js → previews.js} +2 -2
  116. package/core/server/api/canary/utils/serializers/output/settings.js +6 -14
  117. package/core/server/api/canary/utils/serializers/output/site.js +0 -1
  118. package/core/server/api/canary/utils/serializers/output/tiers.js +21 -62
  119. package/core/server/api/canary/utils/serializers/output/utils/clean.js +5 -10
  120. package/core/server/api/canary/utils/serializers/output/utils/extra-attrs.js +0 -126
  121. package/core/server/api/canary/utils/serializers/output/utils/post-gating.js +1 -1
  122. package/core/server/api/canary/utils/serializers/output/utils/url.js +0 -5
  123. package/core/server/api/canary/utils/validators/input/index.js +2 -2
  124. package/core/server/api/canary/utils/validators/input/{passwordreset.js → password_reset.js} +2 -2
  125. package/core/server/api/canary/utils/validators/input/settings.js +2 -23
  126. package/core/server/api/canary/utils/validators/utils/json-schema.js +1 -2
  127. package/core/server/api/index.js +1 -7
  128. package/core/server/api/shared/serializers/input/utils/settings-key-group-mapper.js +2 -2
  129. package/core/server/api/shared/serializers/input/utils/settings-key-type-mapper.js +2 -4
  130. package/core/server/data/db/connection.js +0 -13
  131. package/core/server/data/exporter/table-lists.js +0 -3
  132. package/core/server/data/importer/importers/data/base.js +16 -7
  133. package/core/server/data/importer/importers/data/data-importer.js +38 -1
  134. package/core/server/data/importer/importers/data/newsletters.js +45 -0
  135. package/core/server/data/importer/importers/data/posts.js +40 -12
  136. package/core/server/data/importer/importers/data/products.js +68 -0
  137. package/core/server/data/importer/importers/data/settings.js +10 -10
  138. package/core/server/data/importer/importers/data/stripe-prices.js +59 -0
  139. package/core/server/data/importer/importers/data/stripe-products.js +61 -0
  140. package/core/server/data/migrations/utils/constants.js +3 -0
  141. package/core/server/data/migrations/utils/index.js +10 -0
  142. package/core/server/data/migrations/utils/migrations.js +156 -0
  143. package/core/server/data/migrations/utils/permissions.js +291 -0
  144. package/core/server/data/migrations/utils/schema.js +158 -0
  145. package/core/server/data/migrations/utils/settings.js +59 -0
  146. package/core/server/data/migrations/utils/tables.js +94 -0
  147. package/core/server/data/migrations/versions/1.25/01-final-v1.js +2 -0
  148. package/core/server/data/migrations/versions/1.25/02-noop.js +6 -0
  149. package/core/server/data/migrations/versions/2.37/01-final-v2.js +2 -0
  150. package/core/server/data/migrations/versions/3.41/01-final-v3.js +2 -0
  151. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +3 -9
  152. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +2 -11
  153. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +1 -1
  154. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -1
  155. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -1
  156. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +1 -1
  157. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +1 -1
  158. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +1 -1
  159. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +1 -1
  160. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -1
  161. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +1 -1
  162. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
  163. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -1
  164. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -1
  165. package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +36 -0
  166. package/core/server/data/migrations/versions/5.0/2022-03-28-15-25-backfill-mrr-adjustments-for-offers.js +108 -0
  167. package/core/server/data/migrations/versions/5.0/2022-04-25-10-32-backfill-mrr-for-discounted-subscriptions.js +44 -0
  168. package/core/server/data/migrations/versions/5.0/2022-04-26-15-44-backfill-mrr-events-for-canceled-subscriptions.js +73 -0
  169. package/core/server/data/migrations/versions/5.0/2022-04-27-11-26-backfill-mrr-for-canceled-subscriptions.js +31 -0
  170. package/core/server/data/migrations/versions/5.0/2022-04-28-03-26-remove-author-id-column-from-posts-table.js +7 -0
  171. package/core/server/data/migrations/versions/5.0/2022-05-03-09-39-drop-nullable-subscribe-event-newsletter-id.js +4 -0
  172. package/core/server/data/migrations/versions/5.0/2022-05-04-15-24-map-existing-emails-to-default-newsletter.js +44 -0
  173. package/core/server/data/migrations/versions/5.0/2022-05-05-13-13-migrate-legacy-recipient-filters.js +30 -0
  174. package/core/server/data/migrations/versions/5.0/2022-05-05-13-29-add-newsletters-admin-integration-permission-roles.js +20 -0
  175. package/core/server/data/migrations/versions/5.0/2022-05-05-15-17-drop-oauth-table.js +3 -0
  176. package/core/server/data/migrations/versions/5.0/2022-05-06-08-16-cleanup-client-subscriber-permissions.js +68 -0
  177. package/core/server/data/migrations/versions/5.0/2022-05-06-13-22-add-frontend-integration.js +68 -0
  178. package/core/server/data/migrations/versions/5.0/2022-05-09-10-00-drop-members-subscribed-column.js +18 -0
  179. package/core/server/data/migrations/versions/5.0/2022-05-09-14-17-cleanup-invalid-users-status.js +17 -0
  180. package/core/server/data/migrations/versions/5.0/2022-05-10-08-33-drop-members-analytics-table.js +3 -0
  181. package/core/server/data/migrations/versions/5.0/2022-05-10-14-57-cleanup-invalid-posts-status.js +17 -0
  182. package/core/server/data/migrations/versions/5.0/2022-05-11-12-08-drop-webhooks-status-column.js +18 -0
  183. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +51 -0
  184. package/core/server/data/migrations/versions/5.0/2022-05-11-16-36-remove-unused-settings.js +54 -0
  185. package/core/server/data/migrations/versions/5.0/2022-05-12-10-29-add-newsletter-permissions-for-editors-and-authors.js +20 -0
  186. package/core/server/data/migrations/versions/5.0/2022-05-12-13-51-add-label-permissions-for-authors.js +12 -0
  187. package/core/server/data/migrations/versions/5.0/2022-05-13-11-38-drop-none-email-recipient-filter.js +28 -0
  188. package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +70 -0
  189. package/core/server/data/schema/commands.js +35 -3
  190. package/core/server/data/schema/default-settings/default-settings.json +2 -159
  191. package/core/server/data/schema/fixtures/fixture-manager.js +11 -2
  192. package/core/server/data/schema/fixtures/fixtures.json +16 -7
  193. package/core/server/data/schema/schema.js +26 -38
  194. package/core/server/data/schema/validator.js +2 -0
  195. package/core/server/ghost-server.js +34 -64
  196. package/core/server/lib/image/gravatar.js +25 -9
  197. package/core/server/models/api-key.js +3 -26
  198. package/core/server/models/base/plugins/bulk-operations.js +14 -6
  199. package/core/server/models/integration.js +17 -0
  200. package/core/server/models/member.js +8 -4
  201. package/core/server/models/newsletter.js +27 -0
  202. package/core/server/models/post.js +30 -32
  203. package/core/server/models/relations/authors.js +74 -100
  204. package/core/server/models/settings.js +6 -2
  205. package/core/server/models/webhook.js +2 -1
  206. package/core/server/run-update-check.js +1 -1
  207. package/core/server/services/api-version-compatibility/index.js +24 -18
  208. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +23 -0
  209. package/core/server/services/api-version-compatibility/mw-version-rewrites.js +36 -0
  210. package/core/server/services/auth/api-key/admin.js +8 -7
  211. package/core/server/services/auth/passwordreset.js +3 -3
  212. package/core/server/services/auth/session/express-session.js +1 -1
  213. package/core/server/services/auth/session/index.js +1 -1
  214. package/core/server/services/auth/setup.js +8 -8
  215. package/core/server/services/bulk-email/bulk-email-processor.js +5 -1
  216. package/core/server/services/frontend-data-service/frontend-data-service.js +27 -0
  217. package/core/server/services/frontend-data-service/index.js +6 -0
  218. package/core/server/services/mail/index.js +14 -1
  219. package/core/server/services/mega/email-preview.js +14 -15
  220. package/core/server/services/mega/mega.js +37 -52
  221. package/core/server/services/mega/post-email-serializer.js +18 -28
  222. package/core/server/services/members/api.js +0 -3
  223. package/core/server/services/members/config.js +0 -49
  224. package/core/server/services/members/exporter/query.js +7 -7
  225. package/core/server/services/members/middleware.js +3 -135
  226. package/core/server/services/members/service.js +0 -27
  227. package/core/server/services/members/settings.js +3 -9
  228. package/core/server/services/newsletters/service.js +78 -10
  229. package/core/server/services/posts/post-scheduling-service.js +5 -17
  230. package/core/server/services/posts/posts-service.js +15 -62
  231. package/core/server/services/public-config/site.js +0 -6
  232. package/core/server/services/route-settings/index.js +0 -3
  233. package/core/server/services/route-settings/settings-loader.js +10 -34
  234. package/core/server/services/route-settings/validate.js +1 -7
  235. package/core/server/services/settings/index.js +1 -77
  236. package/core/server/services/settings/settings-service.js +184 -0
  237. package/core/server/services/themes/validate.js +1 -1
  238. package/core/server/services/url/Resources.js +1 -3
  239. package/core/server/services/url/UrlGenerator.js +1 -1
  240. package/core/server/services/url/UrlService.js +6 -20
  241. package/core/server/services/url/{configs/v2.js → config.js} +0 -0
  242. package/core/server/services/users.js +2 -2
  243. package/core/server/services/webhooks/listen.js +5 -2
  244. package/core/server/services/webhooks/serialize.js +6 -7
  245. package/core/server/services/webhooks/trigger.js +62 -47
  246. package/core/server/update-check.js +1 -1
  247. package/core/server/web/admin/app.js +1 -1
  248. package/core/server/web/admin/views/default-prod.html +4 -4
  249. package/core/server/web/admin/views/default.html +4 -4
  250. package/core/server/web/api/app.js +3 -15
  251. package/core/server/web/api/canary/admin/app.js +1 -1
  252. package/core/server/web/api/canary/admin/middleware.js +3 -1
  253. package/core/server/web/api/canary/admin/routes.js +7 -23
  254. package/core/server/web/api/canary/content/app.js +2 -3
  255. package/core/server/web/api/canary/content/routes.js +5 -4
  256. package/core/server/web/members/app.js +5 -4
  257. package/core/server/web/parent/backend.js +0 -1
  258. package/core/server/web/parent/frontend.js +5 -6
  259. package/core/server/web/parent/middleware/ghost-locals.js +0 -3
  260. package/core/shared/config/defaults.json +5 -2
  261. package/core/shared/config/overrides.json +1 -27
  262. package/core/shared/html-to-plaintext.js +74 -10
  263. package/core/shared/labs.js +4 -8
  264. package/core/shared/settings-cache/cache.js +38 -4
  265. package/core/shared/settings-cache/public.js +13 -7
  266. package/core/shared/url-utils.js +0 -2
  267. package/ghost.js +6 -0
  268. package/package.json +66 -64
  269. package/yarn.lock +751 -1295
  270. package/core/built/assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css +0 -1
  271. package/core/built/assets/ghost.min-4084931bc22e794fe3722139050a80b3.css +0 -1
  272. package/core/frontend/helpers/author.js +0 -41
  273. package/core/frontend/helpers/products.js +0 -65
  274. package/core/frontend/services/rendering/secure.js +0 -19
  275. package/core/frontend/services/routing/config/canary.js +0 -61
  276. package/core/frontend/services/routing/config/v2.js +0 -54
  277. package/core/frontend/services/routing/config/v3.js +0 -54
  278. package/core/frontend/services/theme-engine/engines/create.js +0 -45
  279. package/core/frontend/services/theme-engine/engines/index.js +0 -5
  280. package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +0 -9
  281. package/core/server/api/canary/products-public.js +0 -34
  282. package/core/server/api/canary/products.js +0 -116
  283. package/core/server/api/canary/utils/serializers/input/products.js +0 -28
  284. package/core/server/api/canary/utils/serializers/output/email-previews.js +0 -7
  285. package/core/server/api/canary/utils/serializers/output/products.js +0 -213
  286. package/core/server/api/v2/actions.js +0 -38
  287. package/core/server/api/v2/authentication.js +0 -191
  288. package/core/server/api/v2/authors-public.js +0 -69
  289. package/core/server/api/v2/config.js +0 -12
  290. package/core/server/api/v2/db.js +0 -120
  291. package/core/server/api/v2/images.js +0 -20
  292. package/core/server/api/v2/index.js +0 -147
  293. package/core/server/api/v2/integrations.js +0 -144
  294. package/core/server/api/v2/invites.js +0 -126
  295. package/core/server/api/v2/mail.js +0 -66
  296. package/core/server/api/v2/notifications.js +0 -96
  297. package/core/server/api/v2/oembed.js +0 -186
  298. package/core/server/api/v2/pages-public.js +0 -78
  299. package/core/server/api/v2/pages.js +0 -197
  300. package/core/server/api/v2/posts-public.js +0 -78
  301. package/core/server/api/v2/posts.js +0 -192
  302. package/core/server/api/v2/preview.js +0 -46
  303. package/core/server/api/v2/redirects.js +0 -28
  304. package/core/server/api/v2/roles.js +0 -19
  305. package/core/server/api/v2/schedules.js +0 -77
  306. package/core/server/api/v2/session.js +0 -70
  307. package/core/server/api/v2/settings-public.js +0 -17
  308. package/core/server/api/v2/settings.js +0 -195
  309. package/core/server/api/v2/site.js +0 -14
  310. package/core/server/api/v2/slack.js +0 -12
  311. package/core/server/api/v2/slugs.js +0 -51
  312. package/core/server/api/v2/tags-public.js +0 -71
  313. package/core/server/api/v2/tags.js +0 -159
  314. package/core/server/api/v2/themes.js +0 -133
  315. package/core/server/api/v2/users.js +0 -179
  316. package/core/server/api/v2/utils/index.js +0 -34
  317. package/core/server/api/v2/utils/permissions.js +0 -112
  318. package/core/server/api/v2/utils/serializers/index.js +0 -9
  319. package/core/server/api/v2/utils/serializers/input/db.js +0 -20
  320. package/core/server/api/v2/utils/serializers/input/index.js +0 -33
  321. package/core/server/api/v2/utils/serializers/input/integrations.js +0 -33
  322. package/core/server/api/v2/utils/serializers/input/pages.js +0 -203
  323. package/core/server/api/v2/utils/serializers/input/posts.js +0 -218
  324. package/core/server/api/v2/utils/serializers/input/settings.js +0 -152
  325. package/core/server/api/v2/utils/serializers/input/tags.js +0 -35
  326. package/core/server/api/v2/utils/serializers/input/users.js +0 -26
  327. package/core/server/api/v2/utils/serializers/input/utils/url.js +0 -71
  328. package/core/server/api/v2/utils/serializers/input/webhooks.js +0 -12
  329. package/core/server/api/v2/utils/serializers/output/actions.js +0 -13
  330. package/core/server/api/v2/utils/serializers/output/all.js +0 -25
  331. package/core/server/api/v2/utils/serializers/output/authentication.js +0 -68
  332. package/core/server/api/v2/utils/serializers/output/authors.js +0 -21
  333. package/core/server/api/v2/utils/serializers/output/config.js +0 -21
  334. package/core/server/api/v2/utils/serializers/output/db.js +0 -40
  335. package/core/server/api/v2/utils/serializers/output/images.js +0 -19
  336. package/core/server/api/v2/utils/serializers/output/index.js +0 -107
  337. package/core/server/api/v2/utils/serializers/output/integrations.js +0 -35
  338. package/core/server/api/v2/utils/serializers/output/invites.js +0 -24
  339. package/core/server/api/v2/utils/serializers/output/mail.js +0 -19
  340. package/core/server/api/v2/utils/serializers/output/notifications.js +0 -29
  341. package/core/server/api/v2/utils/serializers/output/oembed.js +0 -8
  342. package/core/server/api/v2/utils/serializers/output/pages.js +0 -26
  343. package/core/server/api/v2/utils/serializers/output/posts.js +0 -26
  344. package/core/server/api/v2/utils/serializers/output/preview.js +0 -9
  345. package/core/server/api/v2/utils/serializers/output/redirects.js +0 -5
  346. package/core/server/api/v2/utils/serializers/output/roles.js +0 -29
  347. package/core/server/api/v2/utils/serializers/output/schedules.js +0 -5
  348. package/core/server/api/v2/utils/serializers/output/settings.js +0 -61
  349. package/core/server/api/v2/utils/serializers/output/site.js +0 -16
  350. package/core/server/api/v2/utils/serializers/output/slugs.js +0 -11
  351. package/core/server/api/v2/utils/serializers/output/tags.js +0 -25
  352. package/core/server/api/v2/utils/serializers/output/themes.js +0 -25
  353. package/core/server/api/v2/utils/serializers/output/users.js +0 -45
  354. package/core/server/api/v2/utils/serializers/output/utils/clean.js +0 -174
  355. package/core/server/api/v2/utils/serializers/output/utils/date.js +0 -21
  356. package/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +0 -161
  357. package/core/server/api/v2/utils/serializers/output/utils/mapper.js +0 -136
  358. package/core/server/api/v2/utils/serializers/output/utils/post-gating.js +0 -29
  359. package/core/server/api/v2/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  360. package/core/server/api/v2/utils/serializers/output/utils/url.js +0 -67
  361. package/core/server/api/v2/utils/serializers/output/webhooks.js +0 -15
  362. package/core/server/api/v2/utils/validators/index.js +0 -9
  363. package/core/server/api/v2/utils/validators/input/images.js +0 -85
  364. package/core/server/api/v2/utils/validators/input/index.js +0 -45
  365. package/core/server/api/v2/utils/validators/input/invitations.js +0 -49
  366. package/core/server/api/v2/utils/validators/input/invites.js +0 -21
  367. package/core/server/api/v2/utils/validators/input/oembed.js +0 -17
  368. package/core/server/api/v2/utils/validators/input/pages.js +0 -46
  369. package/core/server/api/v2/utils/validators/input/passwordreset.js +0 -36
  370. package/core/server/api/v2/utils/validators/input/posts.js +0 -46
  371. package/core/server/api/v2/utils/validators/input/settings.js +0 -79
  372. package/core/server/api/v2/utils/validators/input/setup.js +0 -17
  373. package/core/server/api/v2/utils/validators/input/tags.js +0 -6
  374. package/core/server/api/v2/utils/validators/input/users.js +0 -21
  375. package/core/server/api/v2/utils/validators/output/index.js +0 -1
  376. package/core/server/api/v2/utils/validators/utils/json-schema.js +0 -17
  377. package/core/server/api/v2/webhooks.js +0 -163
  378. package/core/server/api/v3/authentication.js +0 -192
  379. package/core/server/api/v3/authors-public.js +0 -69
  380. package/core/server/api/v3/config.js +0 -12
  381. package/core/server/api/v3/db.js +0 -131
  382. package/core/server/api/v3/email-preview.js +0 -74
  383. package/core/server/api/v3/email.js +0 -65
  384. package/core/server/api/v3/identities.js +0 -36
  385. package/core/server/api/v3/images.js +0 -20
  386. package/core/server/api/v3/index.js +0 -179
  387. package/core/server/api/v3/integrations.js +0 -150
  388. package/core/server/api/v3/invites.js +0 -125
  389. package/core/server/api/v3/labels.js +0 -162
  390. package/core/server/api/v3/mail.js +0 -66
  391. package/core/server/api/v3/memberSigninUrls.js +0 -33
  392. package/core/server/api/v3/members.js +0 -412
  393. package/core/server/api/v3/membersStripeConnect.js +0 -29
  394. package/core/server/api/v3/notifications.js +0 -96
  395. package/core/server/api/v3/oembed.js +0 -23
  396. package/core/server/api/v3/pages-public.js +0 -77
  397. package/core/server/api/v3/pages.js +0 -199
  398. package/core/server/api/v3/posts-public.js +0 -76
  399. package/core/server/api/v3/posts.js +0 -200
  400. package/core/server/api/v3/preview.js +0 -44
  401. package/core/server/api/v3/redirects.js +0 -47
  402. package/core/server/api/v3/roles.js +0 -19
  403. package/core/server/api/v3/schedules.js +0 -77
  404. package/core/server/api/v3/session.js +0 -70
  405. package/core/server/api/v3/settings-public.js +0 -17
  406. package/core/server/api/v3/settings.js +0 -224
  407. package/core/server/api/v3/site.js +0 -14
  408. package/core/server/api/v3/slack.js +0 -12
  409. package/core/server/api/v3/slugs.js +0 -48
  410. package/core/server/api/v3/snippets.js +0 -115
  411. package/core/server/api/v3/tags-public.js +0 -71
  412. package/core/server/api/v3/tags.js +0 -159
  413. package/core/server/api/v3/themes.js +0 -131
  414. package/core/server/api/v3/users.js +0 -242
  415. package/core/server/api/v3/utils/index.js +0 -34
  416. package/core/server/api/v3/utils/permissions.js +0 -116
  417. package/core/server/api/v3/utils/serializers/index.js +0 -9
  418. package/core/server/api/v3/utils/serializers/input/authors.js +0 -31
  419. package/core/server/api/v3/utils/serializers/input/db.js +0 -20
  420. package/core/server/api/v3/utils/serializers/input/index.js +0 -41
  421. package/core/server/api/v3/utils/serializers/input/integrations.js +0 -33
  422. package/core/server/api/v3/utils/serializers/input/members.js +0 -62
  423. package/core/server/api/v3/utils/serializers/input/pages.js +0 -208
  424. package/core/server/api/v3/utils/serializers/input/posts.js +0 -242
  425. package/core/server/api/v3/utils/serializers/input/settings.js +0 -168
  426. package/core/server/api/v3/utils/serializers/input/tags.js +0 -42
  427. package/core/server/api/v3/utils/serializers/input/users.js +0 -26
  428. package/core/server/api/v3/utils/serializers/input/utils/slug-filter-order.js +0 -18
  429. package/core/server/api/v3/utils/serializers/input/utils/url.js +0 -71
  430. package/core/server/api/v3/utils/serializers/input/webhooks.js +0 -12
  431. package/core/server/api/v3/utils/serializers/output/actions.js +0 -13
  432. package/core/server/api/v3/utils/serializers/output/all.js +0 -25
  433. package/core/server/api/v3/utils/serializers/output/authentication.js +0 -69
  434. package/core/server/api/v3/utils/serializers/output/authors.js +0 -21
  435. package/core/server/api/v3/utils/serializers/output/config.js +0 -25
  436. package/core/server/api/v3/utils/serializers/output/db.js +0 -40
  437. package/core/server/api/v3/utils/serializers/output/email-preview.js +0 -7
  438. package/core/server/api/v3/utils/serializers/output/emails.js +0 -13
  439. package/core/server/api/v3/utils/serializers/output/identities.js +0 -7
  440. package/core/server/api/v3/utils/serializers/output/images.js +0 -19
  441. package/core/server/api/v3/utils/serializers/output/index.js +0 -135
  442. package/core/server/api/v3/utils/serializers/output/integrations.js +0 -35
  443. package/core/server/api/v3/utils/serializers/output/invites.js +0 -24
  444. package/core/server/api/v3/utils/serializers/output/labels.js +0 -25
  445. package/core/server/api/v3/utils/serializers/output/mail.js +0 -19
  446. package/core/server/api/v3/utils/serializers/output/member-signin_urls.js +0 -7
  447. package/core/server/api/v3/utils/serializers/output/members.js +0 -228
  448. package/core/server/api/v3/utils/serializers/output/notifications.js +0 -29
  449. package/core/server/api/v3/utils/serializers/output/oembed.js +0 -8
  450. package/core/server/api/v3/utils/serializers/output/pages.js +0 -26
  451. package/core/server/api/v3/utils/serializers/output/posts.js +0 -26
  452. package/core/server/api/v3/utils/serializers/output/preview.js +0 -10
  453. package/core/server/api/v3/utils/serializers/output/redirects.js +0 -5
  454. package/core/server/api/v3/utils/serializers/output/roles.js +0 -29
  455. package/core/server/api/v3/utils/serializers/output/schedules.js +0 -5
  456. package/core/server/api/v3/utils/serializers/output/settings.js +0 -65
  457. package/core/server/api/v3/utils/serializers/output/site.js +0 -19
  458. package/core/server/api/v3/utils/serializers/output/slugs.js +0 -11
  459. package/core/server/api/v3/utils/serializers/output/snippets.js +0 -97
  460. package/core/server/api/v3/utils/serializers/output/tags.js +0 -25
  461. package/core/server/api/v3/utils/serializers/output/themes.js +0 -25
  462. package/core/server/api/v3/utils/serializers/output/users.js +0 -74
  463. package/core/server/api/v3/utils/serializers/output/utils/clean.js +0 -166
  464. package/core/server/api/v3/utils/serializers/output/utils/date.js +0 -21
  465. package/core/server/api/v3/utils/serializers/output/utils/extra-attrs.js +0 -174
  466. package/core/server/api/v3/utils/serializers/output/utils/mapper.js +0 -197
  467. package/core/server/api/v3/utils/serializers/output/utils/post-gating.js +0 -39
  468. package/core/server/api/v3/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  469. package/core/server/api/v3/utils/serializers/output/utils/url.js +0 -67
  470. package/core/server/api/v3/utils/serializers/output/webhooks.js +0 -15
  471. package/core/server/api/v3/utils/validators/index.js +0 -9
  472. package/core/server/api/v3/utils/validators/input/images.js +0 -85
  473. package/core/server/api/v3/utils/validators/input/index.js +0 -61
  474. package/core/server/api/v3/utils/validators/input/invitations.js +0 -49
  475. package/core/server/api/v3/utils/validators/input/invites.js +0 -21
  476. package/core/server/api/v3/utils/validators/input/labels.js +0 -6
  477. package/core/server/api/v3/utils/validators/input/members.js +0 -6
  478. package/core/server/api/v3/utils/validators/input/oembed.js +0 -17
  479. package/core/server/api/v3/utils/validators/input/pages.js +0 -46
  480. package/core/server/api/v3/utils/validators/input/passwordreset.js +0 -36
  481. package/core/server/api/v3/utils/validators/input/posts.js +0 -46
  482. package/core/server/api/v3/utils/validators/input/settings.js +0 -89
  483. package/core/server/api/v3/utils/validators/input/setup.js +0 -17
  484. package/core/server/api/v3/utils/validators/input/snippets.js +0 -6
  485. package/core/server/api/v3/utils/validators/input/tags.js +0 -6
  486. package/core/server/api/v3/utils/validators/input/users.js +0 -22
  487. package/core/server/api/v3/utils/validators/input/webhooks.js +0 -27
  488. package/core/server/api/v3/utils/validators/output/index.js +0 -1
  489. package/core/server/api/v3/utils/validators/utils/json-schema.js +0 -17
  490. package/core/server/api/v3/webhooks.js +0 -130
  491. package/core/server/data/migrations/utils.js +0 -571
  492. package/core/server/data/migrations/versions/1.13/1-custom-template-post.js +0 -7
  493. package/core/server/data/migrations/versions/1.13/2-theme-permissions.js +0 -58
  494. package/core/server/data/migrations/versions/1.18/1-add-webhooks-table.js +0 -2
  495. package/core/server/data/migrations/versions/1.19/1-webhook-permissions.js +0 -31
  496. package/core/server/data/migrations/versions/1.20/1-remove-settings-keys.js +0 -65
  497. package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +0 -58
  498. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DDL.js +0 -2
  499. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DML.js +0 -63
  500. package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +0 -70
  501. package/core/server/data/migrations/versions/1.25/2-demo-post.js +0 -55
  502. package/core/server/data/migrations/versions/1.3/1-post-excerpt.js +0 -7
  503. package/core/server/data/migrations/versions/1.4/1-codeinjection-post.js +0 -14
  504. package/core/server/data/migrations/versions/1.5/1-og-twitter-post.js +0 -34
  505. package/core/server/data/migrations/versions/1.7/1-add-backup-client.js +0 -10
  506. package/core/server/data/migrations/versions/1.9/1-add-permissions-redirect.js +0 -23
  507. package/core/server/data/migrations/versions/2.0/1-rename-amp-column.js +0 -44
  508. package/core/server/data/migrations/versions/2.0/2-update-posts.js +0 -7
  509. package/core/server/data/migrations/versions/2.0/3-remove-koenig-labs.js +0 -42
  510. package/core/server/data/migrations/versions/2.0/4-permalink-setting.js +0 -85
  511. package/core/server/data/migrations/versions/2.0/5-remove-demo-post.js +0 -85
  512. package/core/server/data/migrations/versions/2.0/6-replace-fixture-posts.js +0 -10
  513. package/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +0 -5
  514. package/core/server/data/migrations/versions/2.14/1-add-actions-table.js +0 -2
  515. package/core/server/data/migrations/versions/2.14/2-add-actions-permissions.js +0 -12
  516. package/core/server/data/migrations/versions/2.15/1-add-type-column-to-integrations.js +0 -8
  517. package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +0 -69
  518. package/core/server/data/migrations/versions/2.16/1-add-members-perrmissions.js +0 -1
  519. package/core/server/data/migrations/versions/2.17/1-normalize-settings.js +0 -74
  520. package/core/server/data/migrations/versions/2.17/2-posts-add-canonical-url.js +0 -7
  521. package/core/server/data/migrations/versions/2.18/1-restore-settings-from-backup.js +0 -134
  522. package/core/server/data/migrations/versions/2.2/1-add-sessions-table.js +0 -2
  523. package/core/server/data/migrations/versions/2.2/2-add-integrations-and-api-key-tables.js +0 -6
  524. package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +0 -83
  525. package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js +0 -77
  526. package/core/server/data/migrations/versions/2.2/5-add-mobiledoc-revisions-table.js +0 -2
  527. package/core/server/data/migrations/versions/2.21/1-update-editor-permissions.js +0 -28
  528. package/core/server/data/migrations/versions/2.22/1-add-member-permissions-to-roles.js +0 -47
  529. package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +0 -83
  530. package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +0 -69
  531. package/core/server/data/migrations/versions/2.27/3-add-subdirectory-to-relative-canonical-urls.js +0 -100
  532. package/core/server/data/migrations/versions/2.28/1-add-db-backup-content-permission.js +0 -9
  533. package/core/server/data/migrations/versions/2.28/2-add-db-backup-content-permission-to-roles.js +0 -15
  534. package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +0 -84
  535. package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +0 -69
  536. package/core/server/data/migrations/versions/2.28/5-add-scheduler-permission-to-roles.js +0 -23
  537. package/core/server/data/migrations/versions/2.28/6-add-type-column.js +0 -6
  538. package/core/server/data/migrations/versions/2.28/7-populate-type-column.js +0 -6
  539. package/core/server/data/migrations/versions/2.28/8-remove-page-column.js +0 -6
  540. package/core/server/data/migrations/versions/2.29/1-add-post-page-column.js +0 -20
  541. package/core/server/data/migrations/versions/2.29/2-populate-post-page-column.js +0 -98
  542. package/core/server/data/migrations/versions/2.29/3-remove-page-type-column.js +0 -15
  543. package/core/server/data/migrations/versions/2.3/1-add-webhook-columns.js +0 -45
  544. package/core/server/data/migrations/versions/2.3/2-add-webhook-edit-permission.js +0 -9
  545. package/core/server/data/migrations/versions/2.31/1-remove-name-and-password-from-members-table.js +0 -15
  546. package/core/server/data/migrations/versions/2.32/01-add-members-stripe-customers-table.js +0 -4
  547. package/core/server/data/migrations/versions/2.32/02-add-name-to-members-table.js +0 -7
  548. package/core/server/data/migrations/versions/2.33/01-correct-members-stripe-customers-table.js +0 -37
  549. package/core/server/data/migrations/versions/2.34/01-add-stripe-customers-subscriptions-table.js +0 -2
  550. package/core/server/data/migrations/versions/2.34/02-add-email-to-members-stripe-customers-table.js +0 -7
  551. package/core/server/data/migrations/versions/2.34/03-add-name-to-members-stripe-customers-table.js +0 -7
  552. package/core/server/data/migrations/versions/2.35/01-add-note-to-members-table.js +0 -7
  553. package/core/server/data/migrations/versions/2.37/01-add-self-signup-and-from address-to-members-settings.js +0 -67
  554. package/core/server/data/migrations/versions/2.6/1-add-webhook-permission-roles.js +0 -31
  555. package/core/server/data/migrations/versions/2.8/1-add-members-table.js +0 -2
  556. package/core/server/data/migrations/versions/3.0/01-remove-user-ghost-auth-columns.js +0 -14
  557. package/core/server/data/migrations/versions/3.0/02-drop-token-auth-tables.js +0 -31
  558. package/core/server/data/migrations/versions/3.0/03-drop-client-auth-tables.js +0 -35
  559. package/core/server/data/migrations/versions/3.0/04-add-posts-meta-table.js +0 -2
  560. package/core/server/data/migrations/versions/3.0/05-populate-posts-meta-table.js +0 -83
  561. package/core/server/data/migrations/versions/3.0/06-remove-posts-meta-columns.js +0 -44
  562. package/core/server/data/migrations/versions/3.0/07-add-posts-type-column.js +0 -8
  563. package/core/server/data/migrations/versions/3.0/08-populate-posts-type-column.js +0 -94
  564. package/core/server/data/migrations/versions/3.0/09-remove-posts-page-column.js +0 -7
  565. package/core/server/data/migrations/versions/3.0/10-remove-empty-strings.js +0 -81
  566. package/core/server/data/migrations/versions/3.0/11-update-posts-html.js +0 -7
  567. package/core/server/data/migrations/versions/3.0/12-populate-members-table-from-subscribers.js +0 -54
  568. package/core/server/data/migrations/versions/3.0/13-drop-subscribers-table.js +0 -34
  569. package/core/server/data/migrations/versions/3.0/14-remove-subscribers-flag.js +0 -24
  570. package/core/server/data/migrations/versions/3.1/01-add-send-email-when-published-to-posts.js +0 -7
  571. package/core/server/data/migrations/versions/3.1/02-add-email-subject-to-posts-meta.js +0 -7
  572. package/core/server/data/migrations/versions/3.1/03-add-email-preview-permissions.js +0 -18
  573. package/core/server/data/migrations/versions/3.1/04-add-subscribed-flag-to-members.js +0 -7
  574. package/core/server/data/migrations/versions/3.1/05-add-emails-table.js +0 -2
  575. package/core/server/data/migrations/versions/3.1/06-add-email-permissions.js +0 -15
  576. package/core/server/data/migrations/versions/3.1/07-add-uuid-field-to-members.js +0 -8
  577. package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +0 -23
  578. package/core/server/data/migrations/versions/3.1/09-add-further-email-permissions.js +0 -25
  579. package/core/server/data/migrations/versions/3.1/10-add-email-error-data-column.js +0 -8
  580. package/core/server/data/migrations/versions/3.11/01-remove-broken-complimentary-plan-from-members-settings.js +0 -68
  581. package/core/server/data/migrations/versions/3.12/01-add-identity-permission.js +0 -7
  582. package/core/server/data/migrations/versions/3.12/02-remove-legacy-is-paid-flag-from-settings.js +0 -93
  583. package/core/server/data/migrations/versions/3.18/01-add-email-preview-permissions-to-roles.js +0 -39
  584. package/core/server/data/migrations/versions/3.18/02-add-members_stripe_connect-auth-permissions.js +0 -7
  585. package/core/server/data/migrations/versions/3.19/01-update-member-from-email-address.js +0 -91
  586. package/core/server/data/migrations/versions/3.2/01-add-cancel-at-period-end-to-subscriptions.js +0 -7
  587. package/core/server/data/migrations/versions/3.22/01-removed-legacy-values-from-settings-table.js +0 -65
  588. package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +0 -90
  589. package/core/server/data/migrations/versions/3.22/03-add-group-and-flags-to-settings.js +0 -15
  590. package/core/server/data/migrations/versions/3.22/04-populate-settings-groups-and-flags.js +0 -194
  591. package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +0 -182
  592. package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +0 -132
  593. package/core/server/data/migrations/versions/3.22/07-update-type-for-settings.js +0 -137
  594. package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +0 -65
  595. package/core/server/data/migrations/versions/3.23/02-remove-bulk-email-settings.js +0 -48
  596. package/core/server/data/migrations/versions/3.23/03-update-portal-button-setting.js +0 -24
  597. package/core/server/data/migrations/versions/3.23/04-add-meta-columns-to-tags-table.js +0 -54
  598. package/core/server/data/migrations/versions/3.24/01-populate-group-for-new-portal-settings.js +0 -38
  599. package/core/server/data/migrations/versions/3.25/01-add-members-stripe-webhook-settings.js +0 -22
  600. package/core/server/data/migrations/versions/3.26/01-add-amp-gtag-id-setting.js +0 -20
  601. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +0 -53
  602. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +0 -53
  603. package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +0 -35
  604. package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +0 -35
  605. package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +0 -177
  606. package/core/server/data/migrations/versions/3.30/01-add-member-signin-url-permission-roles.js +0 -8
  607. package/core/server/data/migrations/versions/3.32/01-add-member-support-address-setting.js +0 -27
  608. package/core/server/data/migrations/versions/3.32/02-add-member-reply-address-setting.js +0 -20
  609. package/core/server/data/migrations/versions/3.32/03-add-routes-hash-setting.js +0 -20
  610. package/core/server/data/migrations/versions/3.33/01-add-email-recipients-tables.js +0 -8
  611. package/core/server/data/migrations/versions/3.34/01-add-tokens-table.js +0 -2
  612. package/core/server/data/migrations/versions/3.35/01-add-address-columns-to-emails-table.js +0 -14
  613. package/core/server/data/migrations/versions/3.36/01-add-snippets-table.js +0 -2
  614. package/core/server/data/migrations/versions/3.36/02-add-snippets-permissions.js +0 -56
  615. package/core/server/data/migrations/versions/3.37/01-update-portal-button-setting.js +0 -30
  616. package/core/server/data/migrations/versions/3.38/01-add-email-recipient-filter-column.js +0 -8
  617. package/core/server/data/migrations/versions/3.38/02-populate-email-recipient-filter-column.js +0 -34
  618. package/core/server/data/migrations/versions/3.38/03-add-recipient-filter-column.js +0 -8
  619. package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +0 -49
  620. package/core/server/data/migrations/versions/3.38/05-add-emails-track-opens-column.js +0 -7
  621. package/core/server/data/migrations/versions/3.38/06-add-newsletter-settings.js +0 -16
  622. package/core/server/data/migrations/versions/3.38/07-migrate-newsletter-settings-from-config.js +0 -48
  623. package/core/server/data/migrations/versions/3.38/08-repopulate-send-email-when-published-down-migration.js +0 -25
  624. package/core/server/data/migrations/versions/3.38/09-remove-send-email-when-published-column.js +0 -7
  625. package/core/server/data/migrations/versions/3.39/01-add-members-signup-redirect-settings.js +0 -16
  626. package/core/server/data/migrations/versions/3.39/02-add-user-id-to-api-keys-table.js +0 -7
  627. package/core/server/data/migrations/versions/3.39/03-add-email-track-opens-setting.js +0 -16
  628. package/core/server/data/migrations/versions/3.39/04-add-cancellation-reason-column.js +0 -7
  629. package/core/server/data/migrations/versions/3.39/05-remove-unused-columns-on-emails.js +0 -14
  630. package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +0 -58
  631. package/core/server/data/migrations/versions/3.39/07-add-email-recipients-event-timestamps.js +0 -19
  632. package/core/server/data/migrations/versions/3.39/08-add-email-stats-columns.js +0 -22
  633. package/core/server/data/migrations/versions/3.40/01-add-members-email-open-rate-column.js +0 -8
  634. package/core/server/data/migrations/versions/3.40/02-add members-email-aggregation-columns.js +0 -16
  635. package/core/server/data/migrations/versions/3.40/03-populate-members-email-counts.js +0 -15
  636. package/core/server/data/migrations/versions/3.41/01-add-firstpromoter-settings.js +0 -16
  637. package/core/server/data/migrations/versions/3.6/1-add-labels-table.js +0 -2
  638. package/core/server/data/migrations/versions/3.6/2-add-members-labels-table.js +0 -2
  639. package/core/server/data/migrations/versions/3.6/3-add-labels-permissions.js +0 -47
  640. package/core/server/data/migrations/versions/3.7/01-fix-incorrect-member-labels-foreign-keys.js +0 -46
  641. package/core/server/data/migrations/versions/3.8/01-add-geolocation-to-members.js +0 -7
  642. package/core/server/data/migrations/versions/3.9/01-add-member-sigin-url-permissions.js +0 -7
  643. package/core/server/services/mail/utils.js +0 -34
  644. package/core/server/services/url/configs/canary.js +0 -143
  645. package/core/server/services/url/configs/v3.js +0 -141
  646. package/core/server/services/url/configs/v4.js +0 -143
  647. package/core/server/web/api/v2/admin/app.js +0 -43
  648. package/core/server/web/api/v2/admin/middleware.js +0 -85
  649. package/core/server/web/api/v2/admin/routes.js +0 -200
  650. package/core/server/web/api/v2/content/app.js +0 -38
  651. package/core/server/web/api/v2/content/middleware.js +0 -23
  652. package/core/server/web/api/v2/content/routes.js +0 -37
  653. package/core/server/web/api/v3/admin/app.js +0 -43
  654. package/core/server/web/api/v3/admin/middleware.js +0 -89
  655. package/core/server/web/api/v3/admin/routes.js +0 -267
  656. package/core/server/web/api/v3/content/app.js +0 -38
  657. package/core/server/web/api/v3/content/middleware.js +0 -23
  658. package/core/server/web/api/v3/content/routes.js +0 -37
  659. package/core/server/web/oauth/app.js +0 -153
  660. package/core/server/web/oauth/index.js +0 -1
@@ -1,12 +1,12 @@
1
- const debug = require('@tryghost/debug')('routing');
2
-
1
+ const debug = require('@tryghost/debug')('frontend:routes');
3
2
  const routing = require('../services/routing');
4
- const urlService = require('../../server/services/url');
5
- const routeSettings = require('../../server/services/route-settings');
6
3
 
7
- module.exports = function siteRoutes(options = {}) {
8
- debug('site Routes', options);
9
- options.routerSettings = routeSettings.loadRouteSettingsSync();
10
- options.urlService = urlService;
11
- return routing.routerManager.init(options);
4
+ /**
5
+ *
6
+ * @param {import('../services/routing/router-manager').RouterConfig} routerConfig
7
+ * @returns {import('express').Router}
8
+ */
9
+ module.exports = function siteRoutes(routerConfig) {
10
+ debug('site Routes', routerConfig);
11
+ return routing.routerManager.init(routerConfig);
12
12
  };
@@ -8,10 +8,8 @@ const {MemberPageViewEvent} = require('@tryghost/member-events');
8
8
  const config = require('../../shared/config');
9
9
  const constants = require('@tryghost/constants');
10
10
  const storage = require('../../server/adapters/storage');
11
- const urlService = require('../../server/services/url');
12
11
  const urlUtils = require('../../shared/url-utils');
13
12
  const sitemapHandler = require('../services/sitemap/handler');
14
- const appService = require('../services/apps');
15
13
  const themeEngine = require('../services/theme-engine');
16
14
  const themeMiddleware = themeEngine.middleware;
17
15
  const membersService = require('../../server/services/members');
@@ -32,8 +30,13 @@ function SiteRouter(req, res, next) {
32
30
  router(req, res, next);
33
31
  }
34
32
 
35
- module.exports = function setupSiteApp(options = {}) {
36
- debug('Site setup start', options);
33
+ /**
34
+ *
35
+ * @param {import('../services/routing/router-manager').RouterConfig} routerConfig
36
+ * @returns {import('express').Application}
37
+ */
38
+ module.exports = function setupSiteApp(routerConfig) {
39
+ debug('Site setup start', routerConfig);
37
40
 
38
41
  const siteApp = express('site');
39
42
 
@@ -136,7 +139,7 @@ module.exports = function setupSiteApp(options = {}) {
136
139
 
137
140
  debug('General middleware done');
138
141
 
139
- router = siteRoutes(options);
142
+ router = siteRoutes(routerConfig);
140
143
  Object.setPrototypeOf(SiteRouter, router);
141
144
 
142
145
  // Set up Frontend routes (including private blogging routes)
@@ -158,18 +161,12 @@ module.exports = function setupSiteApp(options = {}) {
158
161
  return siteApp;
159
162
  };
160
163
 
161
- module.exports.reload = ({apiVersion}) => {
162
- // https://github.com/expressjs/express/issues/2596
163
- router = siteRoutes({start: true, apiVersion});
164
+ /**
165
+ * see https://github.com/expressjs/express/issues/2596
166
+ * @param {import('../services/routing/router-manager').RouterConfig} routerConfig
167
+ */
168
+ module.exports.reload = (routerConfig) => {
169
+ debug('reloading');
170
+ router = siteRoutes(routerConfig);
164
171
  Object.setPrototypeOf(SiteRouter, router);
165
-
166
- // re-initialize apps (register app routers, because we have re-initialized the site routers)
167
- appService.init();
168
-
169
- // connect routers and resources again
170
- urlService.queue.start({
171
- event: 'init',
172
- tolerance: 100,
173
- requiredSubscriberCount: 1
174
- });
175
172
  };
@@ -9,7 +9,7 @@ const getSchedulerIntegration = require('./scheduler-intergation');
9
9
  * @return {Promise}
10
10
  */
11
11
  const loadScheduledResources = async function () {
12
- const api = require('../../../api');
12
+ const api = require('../../../api').endpoints;
13
13
  const SCHEDULED_RESOURCES = ['post', 'page'];
14
14
 
15
15
  // Fetches all scheduled resources(posts/pages) with default API
@@ -1,8 +1,4 @@
1
- # API Versioning
2
-
3
- Ghost supports multiple API versions.
4
- Each version lives in a separate folder e.g. api/v2, api/v3, api/canary etc.
5
- Next to the API folders there is a shared folder, which contains shared code, which all API versions use.
1
+ # API
6
2
 
7
3
  ## Stages
8
4
 
@@ -19,7 +15,7 @@ The framework we are building pipes a request through these stages in respect of
19
15
 
20
16
  ## Frame
21
17
 
22
- Is a class, which holds all the information for request processing. We pass this instance by reference.
18
+ Is a class, which holds all the information for request processing. We pass this instance by reference.
23
19
  Each function can modify the original instance. No need to return the class instance.
24
20
 
25
21
  ### Structure
@@ -129,7 +129,7 @@ module.exports = {
129
129
 
130
130
  generateResetToken: {
131
131
  validation: {
132
- docName: 'passwordreset'
132
+ docName: 'password_reset'
133
133
  },
134
134
  permissions: true,
135
135
  options: [
@@ -141,7 +141,7 @@ module.exports = {
141
141
  return auth.setup.assertSetupCompleted(true)();
142
142
  })
143
143
  .then(() => {
144
- return auth.passwordreset.generateToken(frame.data.passwordreset[0].email, api.settings);
144
+ return auth.passwordreset.generateToken(frame.data.password_reset[0].email, api.settings);
145
145
  })
146
146
  .then((token) => {
147
147
  return auth.passwordreset.sendResetNotification(token, api.mail);
@@ -151,7 +151,7 @@ module.exports = {
151
151
 
152
152
  resetPassword: {
153
153
  validation: {
154
- docName: 'passwordreset',
154
+ docName: 'password_reset',
155
155
  data: {
156
156
  newPassword: {required: true},
157
157
  ne2Password: {required: true}
@@ -221,6 +221,7 @@ module.exports = {
221
221
  },
222
222
 
223
223
  resetAllPasswords: {
224
+ statusCode: 204,
224
225
  permissions: true,
225
226
  async query(frame) {
226
227
  await userService.resetAllPasswords(frame.options);
@@ -7,18 +7,16 @@ const messages = {
7
7
  postNotFound: 'Post not found.'
8
8
  };
9
9
 
10
- const emailPreview = new mega.EmailPreview({
11
- apiVersion: 'canary'
12
- });
10
+ const emailPreview = new mega.EmailPreview();
13
11
 
14
12
  module.exports = {
15
- // @TODO make the route match the resource name in 5.0
16
13
  docName: 'email_previews',
17
14
 
18
15
  read: {
19
16
  options: [
20
17
  'fields',
21
- 'memberSegment'
18
+ 'memberSegment',
19
+ 'newsletter'
22
20
  ],
23
21
  validation: {
24
22
  options: {
@@ -42,11 +40,14 @@ module.exports = {
42
40
  });
43
41
  }
44
42
 
45
- return emailPreview.generateEmailContent(model, frame.options.memberSegment);
43
+ return emailPreview.generateEmailContent(model, {
44
+ newsletter: frame.options.newsletter,
45
+ memberSegment: frame.options.memberSegment
46
+ });
46
47
  }
47
48
  },
48
49
  sendTestEmail: {
49
- statusCode: 200,
50
+ statusCode: 204,
50
51
  headers: {},
51
52
  options: [
52
53
  'id'
@@ -70,7 +71,7 @@ module.exports = {
70
71
  }
71
72
 
72
73
  const {emails = [], memberSegment} = frame.data;
73
- return await mega.mega.sendTestEmail(model, emails, 'canary', memberSegment);
74
+ return await mega.mega.sendTestEmail(model, emails, memberSegment);
74
75
  }
75
76
  }
76
77
  };
@@ -8,10 +8,6 @@ const localUtils = require('./utils');
8
8
  /* eslint-disable max-lines */
9
9
 
10
10
  module.exports = {
11
- get http() {
12
- return shared.http;
13
- },
14
-
15
11
  get authentication() {
16
12
  return shared.pipeline(require('./authentication'), localUtils);
17
13
  },
@@ -89,10 +85,6 @@ module.exports = {
89
85
  return shared.pipeline(require('./offers'), localUtils);
90
86
  },
91
87
 
92
- get products() {
93
- return shared.pipeline(require('./products'), localUtils);
94
- },
95
-
96
88
  get tiers() {
97
89
  return shared.pipeline(require('./tiers'), localUtils);
98
90
  },
@@ -125,8 +117,8 @@ module.exports = {
125
117
  return shared.pipeline(require('./users'), localUtils);
126
118
  },
127
119
 
128
- get preview() {
129
- return shared.pipeline(require('./preview'), localUtils);
120
+ get previews() {
121
+ return shared.pipeline(require('./previews'), localUtils);
130
122
  },
131
123
 
132
124
  get emailPost() {
@@ -153,8 +145,8 @@ module.exports = {
153
145
  return shared.pipeline(require('./actions'), localUtils);
154
146
  },
155
147
 
156
- get email_preview() {
157
- return shared.pipeline(require('./email-preview'), localUtils);
148
+ get email_previews() {
149
+ return shared.pipeline(require('./email-previews'), localUtils);
158
150
  },
159
151
 
160
152
  get emails() {
@@ -190,8 +182,8 @@ module.exports = {
190
182
  *
191
183
  * @NOTE:
192
184
  *
193
- * Please create separate controllers for Content & Admin API. The goal is to expose `api.canary.content` and
194
- * `api.canary.admin` soon. Need to figure out how serializers & validation works then.
185
+ * Please create separate controllers for Content & Admin API. The goal is to expose `api.content` and
186
+ * `api.admin` soon. Need to figure out how serializers & validation works then.
195
187
  */
196
188
  get pagesPublic() {
197
189
  return shared.pipeline(require('./pages-public'), localUtils, 'content');
@@ -213,11 +205,15 @@ module.exports = {
213
205
  return shared.pipeline(require('./authors-public'), localUtils, 'content');
214
206
  },
215
207
 
216
- get productsPublic() {
217
- return shared.pipeline(require('./products-public'), localUtils, 'content');
218
- },
219
-
220
208
  get tiersPublic() {
221
209
  return shared.pipeline(require('./tiers-public'), localUtils, 'content');
210
+ },
211
+
212
+ get newslettersPublic() {
213
+ return shared.pipeline(require('./newsletters-public'), localUtils, 'content');
214
+ },
215
+
216
+ get offersPublic() {
217
+ return shared.pipeline(require('./offers-public'), localUtils, 'content');
222
218
  }
223
219
  };
@@ -28,23 +28,11 @@ const messages = {
28
28
  resourceNotFound: '{resource} not found.'
29
29
  };
30
30
 
31
- const allowedIncludes = ['email_recipients', 'products'];
31
+ const allowedIncludes = ['email_recipients', 'products', 'tiers'];
32
32
 
33
33
  module.exports = {
34
34
  docName: 'members',
35
35
 
36
- hasActiveStripeSubscriptions: {
37
- permissions: {
38
- method: 'browse'
39
- },
40
- async query() {
41
- const hasActiveStripeSubscriptions = await membersService.api.hasActiveStripeSubscriptions();
42
- return {
43
- hasActiveStripeSubscriptions
44
- };
45
- }
46
- },
47
-
48
36
  browse: {
49
37
  options: [
50
38
  'limit',
@@ -1,19 +1,19 @@
1
1
  const models = require('../../models');
2
2
 
3
3
  module.exports = {
4
- docName: 'actions',
4
+ docName: 'newsletters',
5
5
 
6
6
  browse: {
7
7
  options: [
8
- 'page',
9
- 'limit',
8
+ 'filter',
10
9
  'fields',
11
- 'include',
12
- 'filter'
10
+ 'limit',
11
+ 'order',
12
+ 'page'
13
13
  ],
14
14
  permissions: true,
15
15
  query(frame) {
16
- return models.Action.findPage(frame.options);
16
+ return models.Newsletter.findPage(frame.options);
17
17
  }
18
18
  }
19
19
  };
@@ -1,11 +1,6 @@
1
1
  const models = require('../../models');
2
- const tpl = require('@tryghost/tpl');
3
- const errors = require('@tryghost/errors');
4
2
  const allowedIncludes = ['count.posts', 'count.members'];
5
3
 
6
- const messages = {
7
- newsletterNotFound: 'Newsletter not found.'
8
- };
9
4
  const newslettersService = require('../../services/newsletters');
10
5
 
11
6
  module.exports = {
@@ -56,14 +51,7 @@ module.exports = {
56
51
  },
57
52
  permissions: true,
58
53
  async query(frame) {
59
- const newsletter = models.Newsletter.findOne(frame.data, frame.options);
60
-
61
- if (!newsletter) {
62
- throw new errors.NotFoundError({
63
- message: tpl(messages.newsletterNotFound)
64
- });
65
- }
66
- return newsletter;
54
+ return newslettersService.read(frame.data, frame.options);
67
55
  }
68
56
  },
69
57
 
@@ -1,5 +1,6 @@
1
1
  const {notifications} = require('../../services/notifications');
2
- const api = require('./index');
2
+ const settingsService = require('../../services/settings/settings-service');
3
+ const settingsBREADService = settingsService.getSettingsBREADServiceInstance();
3
4
  const internalContext = {context: {internal: true}};
4
5
 
5
6
  module.exports = {
@@ -25,19 +26,17 @@ module.exports = {
25
26
  }
26
27
  },
27
28
  permissions: true,
28
- query(frame) {
29
+ async query(frame) {
29
30
  const {allNotifications, notificationsToAdd} = notifications.add({
30
31
  notifications: frame.data.notifications
31
32
  });
32
33
 
33
34
  if (notificationsToAdd.length){
34
- return api.settings.edit({
35
- settings: [{
36
- key: 'notifications',
37
- // @NOTE: We always need to store all notifications!
38
- value: allNotifications.concat(notificationsToAdd)
39
- }]
40
- }, internalContext).then(() => {
35
+ return await settingsBREADService.edit([{
36
+ key: 'notifications',
37
+ // @NOTE: We always need to store all notifications!
38
+ value: allNotifications.concat(notificationsToAdd)
39
+ }], internalContext).then(() => {
41
40
  return notificationsToAdd;
42
41
  });
43
42
  }
@@ -63,12 +62,10 @@ module.exports = {
63
62
  }
64
63
  });
65
64
 
66
- return api.settings.edit({
67
- settings: [{
68
- key: 'notifications',
69
- value: allNotifications
70
- }]
71
- }, internalContext).return();
65
+ await settingsBREADService.edit([{
66
+ key: 'notifications',
67
+ value: allNotifications
68
+ }], internalContext);
72
69
  }
73
70
  },
74
71
 
@@ -82,15 +79,13 @@ module.exports = {
82
79
  permissions: {
83
80
  method: 'destroy'
84
81
  },
85
- query() {
82
+ async query() {
86
83
  const allNotifications = notifications.destroyAll();
87
84
 
88
- return api.settings.edit({
89
- settings: [{
90
- key: 'notifications',
91
- value: allNotifications
92
- }]
93
- }, internalContext).return();
85
+ await settingsBREADService.edit([{
86
+ key: 'notifications',
87
+ value: allNotifications
88
+ }], internalContext);
94
89
  }
95
90
  }
96
91
  };
@@ -0,0 +1,28 @@
1
+ const tpl = require('@tryghost/tpl');
2
+ const errors = require('@tryghost/errors');
3
+ const offersService = require('../../services/offers');
4
+
5
+ const messages = {
6
+ offerNotFound: 'Offer not found.'
7
+ };
8
+
9
+ module.exports = {
10
+ docName: 'offers',
11
+
12
+ read: {
13
+ data: ['id'],
14
+ permissions: true,
15
+ async query(frame) {
16
+ const offer = await offersService.api.getOffer(frame.data);
17
+ if (!offer) {
18
+ throw new errors.NotFoundError({
19
+ message: tpl(messages.offerNotFound)
20
+ });
21
+ }
22
+
23
+ frame.response = {
24
+ offers: [offer]
25
+ };
26
+ }
27
+ }
28
+ };
@@ -9,7 +9,7 @@ const messages = {
9
9
  pageNotFound: 'Page not found.'
10
10
  };
11
11
 
12
- const postsService = getPostServiceInstance('canary');
12
+ const postsService = getPostServiceInstance();
13
13
 
14
14
  module.exports = {
15
15
  docName: 'pages',
@@ -2,14 +2,14 @@ const models = require('../../models');
2
2
  const tpl = require('@tryghost/tpl');
3
3
  const errors = require('@tryghost/errors');
4
4
  const getPostServiceInstance = require('../../services/posts/posts-service');
5
- const allowedIncludes = ['tags', 'authors', 'authors.roles', 'email', 'tiers'];
5
+ const allowedIncludes = ['tags', 'authors', 'authors.roles', 'email', 'tiers', 'newsletter'];
6
6
  const unsafeAttrs = ['status', 'authors', 'visibility'];
7
7
 
8
8
  const messages = {
9
9
  postNotFound: 'Post not found.'
10
10
  };
11
11
 
12
- const postsService = getPostServiceInstance('canary');
12
+ const postsService = getPostServiceInstance();
13
13
 
14
14
  module.exports = {
15
15
  docName: 'posts',
@@ -128,9 +128,8 @@ module.exports = {
128
128
  'id',
129
129
  'formats',
130
130
  'source',
131
- 'email_recipient_filter',
132
- 'newsletter_id',
133
- 'send_email_when_published',
131
+ 'email_segment',
132
+ 'newsletter',
134
133
  'force_rerender',
135
134
  // NOTE: only for internal context
136
135
  'forUpdate',
@@ -146,9 +145,6 @@ module.exports = {
146
145
  },
147
146
  source: {
148
147
  values: ['html']
149
- },
150
- send_email_when_published: {
151
- values: [true, false]
152
148
  }
153
149
  }
154
150
  },
@@ -8,7 +8,7 @@ const messages = {
8
8
  };
9
9
 
10
10
  module.exports = {
11
- docName: 'preview',
11
+ docName: 'previews',
12
12
 
13
13
  read: {
14
14
  permissions: true,
@@ -1,6 +1,6 @@
1
1
  const models = require('../../models');
2
2
 
3
- const postSchedulingService = require('../../services/posts/post-scheduling-service')('canary');
3
+ const postSchedulingService = require('../../services/posts/post-scheduling-service')();
4
4
 
5
5
  module.exports = {
6
6
  docName: 'schedules',
@@ -51,7 +51,7 @@ const session = {
51
51
 
52
52
  if (err.errorType === 'PasswordResetRequiredError') {
53
53
  await api.authentication.generateResetToken({
54
- passwordreset: [{
54
+ password_reset: [{
55
55
  email: object.username
56
56
  }]
57
57
  }, frame.options.context);
@@ -1,5 +1,6 @@
1
1
  const settingsCache = require('../../../shared/settings-cache');
2
2
  const urlUtils = require('../../../shared/url-utils');
3
+ const ghostVersion = require('@tryghost/version');
3
4
 
4
5
  module.exports = {
5
6
  docName: 'settings',
@@ -10,7 +11,8 @@ module.exports = {
10
11
  // @TODO: decouple settings cache from API knowledge
11
12
  // The controller fetches models (or cached models) and the API frame for the target API version formats the response.
12
13
  return Object.assign({}, settingsCache.getPublic(), {
13
- url: urlUtils.urlFor('home', true)
14
+ url: urlUtils.urlFor('home', true),
15
+ version: ghostVersion.safe
14
16
  });
15
17
  }
16
18
  }
@@ -4,7 +4,7 @@ const models = require('../../models');
4
4
  const routeSettings = require('../../services/route-settings');
5
5
  const tpl = require('@tryghost/tpl');
6
6
  const {BadRequestError} = require('@tryghost/errors');
7
- const settingsService = require('../../services/settings');
7
+ const settingsService = require('../../services/settings/settings-service');
8
8
  const membersService = require('../../services/members');
9
9
  const stripeService = require('../../services/stripe');
10
10
 
@@ -12,9 +12,23 @@ const settingsBREADService = settingsService.getSettingsBREADServiceInstance();
12
12
 
13
13
  const messages = {
14
14
  failedSendingEmail: 'Failed Sending Email'
15
-
15
+
16
16
  };
17
17
 
18
+ async function getStripeConnectData(frame) {
19
+ const stripeConnectIntegrationToken = frame.data.settings.find(setting => setting.key === 'stripe_connect_integration_token');
20
+
21
+ if (stripeConnectIntegrationToken && stripeConnectIntegrationToken.value) {
22
+ const getSessionProp = prop => frame.original.session[prop];
23
+
24
+ return await settingsBREADService.getStripeConnectData(
25
+ stripeConnectIntegrationToken,
26
+ getSessionProp,
27
+ membersService.stripeConnect.getStripeConnectTokenData
28
+ );
29
+ }
30
+ }
31
+
18
32
  module.exports = {
19
33
  docName: 'settings',
20
34
 
@@ -57,7 +71,7 @@ module.exports = {
57
71
  required: true
58
72
  },
59
73
  action: {
60
- values: ['fromaddressupdate', 'supportaddressupdate']
74
+ values: ['supportaddressupdate']
61
75
  }
62
76
  }
63
77
  },
@@ -68,7 +82,6 @@ module.exports = {
68
82
  const {token, action} = frame.options;
69
83
  const updatedEmailAddress = await membersService.settings.getEmailFromToken({token});
70
84
  const actionToKeyMapping = {
71
- fromAddressUpdate: 'members_from_address',
72
85
  supportAddressUpdate: 'members_support_address'
73
86
  };
74
87
  if (updatedEmailAddress) {
@@ -96,6 +109,7 @@ module.exports = {
96
109
  },
97
110
 
98
111
  updateMembersEmail: {
112
+ statusCode: 204,
99
113
  permissions: {
100
114
  method: 'edit'
101
115
  },
@@ -122,12 +136,13 @@ module.exports = {
122
136
  },
123
137
 
124
138
  disconnectStripeConnectIntegration: {
139
+ statusCode: 204,
125
140
  permissions: {
126
141
  method: 'edit'
127
142
  },
128
143
  async query(frame) {
129
- const hasActiveStripeSubscriptions = await membersService.api.hasActiveStripeSubscriptions();
130
- if (hasActiveStripeSubscriptions) {
144
+ const paidMembers = await membersService.api.memberBREADService.browse({limit: 0, filter: 'status:paid'});
145
+ if (_.get(paidMembers, 'meta.pagination.total') !== 0) {
131
146
  throw new BadRequestError({
132
147
  message: 'Cannot disconnect Stripe whilst you have active subscriptions.'
133
148
  });
@@ -170,20 +185,17 @@ module.exports = {
170
185
  }
171
186
  },
172
187
  async query(frame) {
173
- let stripeConnectData;
174
- const stripeConnectIntegrationToken = frame.data.settings.find(setting => setting.key === 'stripe_connect_integration_token');
188
+ let stripeConnectData = await getStripeConnectData(frame);
175
189
 
176
- if (stripeConnectIntegrationToken && stripeConnectIntegrationToken.value) {
177
- const getSessionProp = prop => frame.original.session[prop];
190
+ let result = await settingsBREADService.edit(frame.data.settings, frame.options, stripeConnectData);
178
191
 
179
- stripeConnectData = await settingsBREADService.getStripeConnectData(
180
- stripeConnectIntegrationToken,
181
- getSessionProp,
182
- membersService.stripeConnect.getStripeConnectTokenData
183
- );
192
+ if (_.isEmpty(result)) {
193
+ this.headers.cacheInvalidate = false;
194
+ } else {
195
+ this.headers.cacheInvalidate = true;
184
196
  }
185
197
 
186
- return await settingsBREADService.edit(frame.data.settings, frame.options, stripeConnectData);
198
+ return result;
187
199
  }
188
200
  },
189
201
 
@@ -26,9 +26,7 @@ module.exports = {
26
26
  return frame.apiType === 'content';
27
27
  },
28
28
 
29
- // @TODO: Remove, not used.
30
- isAdminAPIKey: (frame) => {
31
- return frame.options.context && Object.keys(frame.options.context).length !== 0 && frame.options.context.api_key &&
32
- frame.options.context.api_key.type === 'admin';
29
+ isInternal: (frame) => {
30
+ return frame.options.context && frame.options.context.internal;
33
31
  }
34
32
  };