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.
Files changed (664) 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-b6e3268bcae976a8675b0d9ae54540f2.css +1 -0
  23. package/core/built/assets/{ghost.min-a2a47979b0b61d15a3914042a7b1cd20.js → ghost.min-2cc3688ea6600a54e0cd83107a8577e8.js} +1138 -1212
  24. package/core/built/assets/ghost.min-a40c7b301c702bd84c2fae19366ab5d7.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-2bca41946dea27dc292428db605d466d.js} +99 -93
  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 +104 -108
  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/context.js +1 -5
  57. package/core/frontend/services/rendering/format-response.js +9 -2
  58. package/core/frontend/services/rendering/index.js +0 -4
  59. package/core/frontend/services/rendering/render-entry.js +1 -1
  60. package/core/frontend/services/rendering/templates.js +15 -5
  61. package/core/frontend/services/routing/CollectionRouter.js +2 -2
  62. package/core/frontend/services/routing/EmailRouter.js +2 -2
  63. package/core/frontend/services/routing/ParentRouter.js +1 -1
  64. package/core/frontend/services/routing/PreviewRouter.js +3 -3
  65. package/core/frontend/services/routing/{config/v4.js → config.js} +3 -5
  66. package/core/frontend/services/routing/controllers/channel.js +0 -10
  67. package/core/frontend/services/routing/controllers/collection.js +0 -9
  68. package/core/frontend/services/routing/controllers/email-post.js +2 -7
  69. package/core/frontend/services/routing/controllers/entry.js +1 -3
  70. package/core/frontend/services/routing/controllers/index.js +2 -2
  71. package/core/frontend/services/routing/controllers/{preview.js → previews.js} +3 -8
  72. package/core/frontend/services/routing/controllers/static.js +1 -6
  73. package/core/frontend/services/routing/router-manager.js +38 -20
  74. package/core/frontend/services/rss/generate-feed.js +7 -9
  75. package/core/frontend/services/theme-engine/active.js +0 -8
  76. package/core/frontend/services/theme-engine/config/defaults.json +1 -3
  77. package/core/frontend/services/theme-engine/middleware/index.js +0 -1
  78. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +0 -69
  79. package/core/frontend/services/theme-engine/middleware/update-local-template-options.js +3 -6
  80. package/core/frontend/web/middleware/static-theme.js +14 -6
  81. package/core/frontend/web/routes.js +9 -9
  82. package/core/frontend/web/site.js +15 -18
  83. package/core/server/adapters/scheduling/post-scheduling/index.js +1 -1
  84. package/core/server/api/README.md +2 -6
  85. package/core/server/api/canary/authentication.js +4 -3
  86. package/core/server/api/canary/{email-preview.js → email-previews.js} +9 -8
  87. package/core/server/api/canary/index.js +14 -18
  88. package/core/server/api/canary/members.js +4 -24
  89. package/core/server/api/{v3/actions.js → canary/newsletters-public.js} +6 -6
  90. package/core/server/api/canary/newsletters.js +1 -13
  91. package/core/server/api/canary/notifications.js +17 -22
  92. package/core/server/api/canary/offers-public.js +28 -0
  93. package/core/server/api/canary/pages.js +1 -1
  94. package/core/server/api/canary/posts.js +4 -8
  95. package/core/server/api/canary/{preview.js → previews.js} +1 -1
  96. package/core/server/api/canary/schedules.js +1 -1
  97. package/core/server/api/canary/session.js +1 -1
  98. package/core/server/api/canary/settings-public.js +3 -1
  99. package/core/server/api/canary/settings.js +30 -16
  100. package/core/server/api/canary/utils/index.js +2 -4
  101. package/core/server/api/canary/utils/serializers/input/index.js +0 -4
  102. package/core/server/api/canary/utils/serializers/input/members.js +46 -17
  103. package/core/server/api/canary/utils/serializers/input/pages.js +0 -17
  104. package/core/server/api/canary/utils/serializers/input/posts.js +1 -28
  105. package/core/server/api/canary/utils/serializers/input/settings.js +61 -142
  106. package/core/server/api/canary/utils/serializers/input/tiers.js +56 -12
  107. package/core/server/api/canary/utils/serializers/output/authentication.js +2 -6
  108. package/core/server/api/canary/utils/serializers/output/index.js +2 -10
  109. package/core/server/api/canary/utils/serializers/output/mappers/index.js +1 -0
  110. package/core/server/api/canary/utils/serializers/output/mappers/newsletters.js +24 -0
  111. package/core/server/api/canary/utils/serializers/output/mappers/pages.js +1 -1
  112. package/core/server/api/canary/utils/serializers/output/mappers/posts.js +9 -7
  113. package/core/server/api/canary/utils/serializers/output/mappers/settings.js +5 -31
  114. package/core/server/api/canary/utils/serializers/output/members.js +21 -11
  115. package/core/server/api/canary/utils/serializers/output/offers.js +9 -1
  116. package/core/server/api/canary/utils/serializers/output/{preview.js → previews.js} +2 -2
  117. package/core/server/api/canary/utils/serializers/output/settings.js +6 -14
  118. package/core/server/api/canary/utils/serializers/output/site.js +0 -1
  119. package/core/server/api/canary/utils/serializers/output/tiers.js +35 -75
  120. package/core/server/api/canary/utils/serializers/output/utils/clean.js +5 -10
  121. package/core/server/api/canary/utils/serializers/output/utils/extra-attrs.js +0 -126
  122. package/core/server/api/canary/utils/serializers/output/utils/post-gating.js +1 -1
  123. package/core/server/api/canary/utils/serializers/output/utils/url.js +0 -5
  124. package/core/server/api/canary/utils/validators/input/index.js +2 -2
  125. package/core/server/api/canary/utils/validators/input/{passwordreset.js → password_reset.js} +2 -2
  126. package/core/server/api/canary/utils/validators/input/settings.js +2 -23
  127. package/core/server/api/canary/utils/validators/utils/json-schema.js +1 -2
  128. package/core/server/api/index.js +1 -7
  129. package/core/server/api/shared/serializers/input/utils/settings-key-group-mapper.js +2 -2
  130. package/core/server/api/shared/serializers/input/utils/settings-key-type-mapper.js +2 -4
  131. package/core/server/data/db/connection.js +0 -13
  132. package/core/server/data/exporter/index.js +4 -1
  133. package/core/server/data/exporter/table-lists.js +13 -15
  134. package/core/server/data/importer/importers/data/base.js +16 -7
  135. package/core/server/data/importer/importers/data/data-importer.js +38 -1
  136. package/core/server/data/importer/importers/data/newsletters.js +45 -0
  137. package/core/server/data/importer/importers/data/posts.js +40 -12
  138. package/core/server/data/importer/importers/data/products.js +68 -0
  139. package/core/server/data/importer/importers/data/settings.js +10 -10
  140. package/core/server/data/importer/importers/data/stripe-prices.js +59 -0
  141. package/core/server/data/importer/importers/data/stripe-products.js +61 -0
  142. package/core/server/data/migrations/utils/constants.js +3 -0
  143. package/core/server/data/migrations/utils/index.js +10 -0
  144. package/core/server/data/migrations/utils/migrations.js +156 -0
  145. package/core/server/data/migrations/utils/permissions.js +291 -0
  146. package/core/server/data/migrations/utils/schema.js +158 -0
  147. package/core/server/data/migrations/utils/settings.js +59 -0
  148. package/core/server/data/migrations/utils/tables.js +94 -0
  149. package/core/server/data/migrations/versions/1.25/01-final-v1.js +2 -0
  150. package/core/server/data/migrations/versions/1.25/02-noop.js +6 -0
  151. package/core/server/data/migrations/versions/2.37/01-final-v2.js +2 -0
  152. package/core/server/data/migrations/versions/3.41/01-final-v3.js +2 -0
  153. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +3 -9
  154. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +2 -11
  155. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +1 -1
  156. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -1
  157. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -1
  158. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +1 -1
  159. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +1 -1
  160. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +1 -1
  161. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +1 -1
  162. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -1
  163. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +1 -1
  164. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
  165. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -1
  166. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -1
  167. package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +36 -0
  168. package/core/server/data/migrations/versions/5.0/2022-03-28-15-25-backfill-mrr-adjustments-for-offers.js +108 -0
  169. package/core/server/data/migrations/versions/5.0/2022-04-25-10-32-backfill-mrr-for-discounted-subscriptions.js +44 -0
  170. package/core/server/data/migrations/versions/5.0/2022-04-26-15-44-backfill-mrr-events-for-canceled-subscriptions.js +73 -0
  171. package/core/server/data/migrations/versions/5.0/2022-04-27-11-26-backfill-mrr-for-canceled-subscriptions.js +31 -0
  172. package/core/server/data/migrations/versions/5.0/2022-04-28-03-26-remove-author-id-column-from-posts-table.js +7 -0
  173. package/core/server/data/migrations/versions/5.0/2022-05-03-09-39-drop-nullable-subscribe-event-newsletter-id.js +4 -0
  174. package/core/server/data/migrations/versions/5.0/2022-05-04-15-24-map-existing-emails-to-default-newsletter.js +44 -0
  175. package/core/server/data/migrations/versions/5.0/2022-05-05-13-13-migrate-legacy-recipient-filters.js +30 -0
  176. package/core/server/data/migrations/versions/5.0/2022-05-05-13-29-add-newsletters-admin-integration-permission-roles.js +20 -0
  177. package/core/server/data/migrations/versions/5.0/2022-05-05-15-17-drop-oauth-table.js +3 -0
  178. package/core/server/data/migrations/versions/5.0/2022-05-06-08-16-cleanup-client-subscriber-permissions.js +68 -0
  179. package/core/server/data/migrations/versions/5.0/2022-05-06-13-22-add-frontend-integration.js +68 -0
  180. package/core/server/data/migrations/versions/5.0/2022-05-09-10-00-drop-members-subscribed-column.js +18 -0
  181. package/core/server/data/migrations/versions/5.0/2022-05-09-14-17-cleanup-invalid-users-status.js +17 -0
  182. package/core/server/data/migrations/versions/5.0/2022-05-10-08-33-drop-members-analytics-table.js +3 -0
  183. package/core/server/data/migrations/versions/5.0/2022-05-10-14-57-cleanup-invalid-posts-status.js +17 -0
  184. package/core/server/data/migrations/versions/5.0/2022-05-11-12-08-drop-webhooks-status-column.js +18 -0
  185. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +51 -0
  186. package/core/server/data/migrations/versions/5.0/2022-05-11-16-36-remove-unused-settings.js +54 -0
  187. package/core/server/data/migrations/versions/5.0/2022-05-12-10-29-add-newsletter-permissions-for-editors-and-authors.js +20 -0
  188. package/core/server/data/migrations/versions/5.0/2022-05-12-13-51-add-label-permissions-for-authors.js +12 -0
  189. package/core/server/data/migrations/versions/5.0/2022-05-13-11-38-drop-none-email-recipient-filter.js +28 -0
  190. package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +70 -0
  191. package/core/server/data/schema/commands.js +35 -3
  192. package/core/server/data/schema/default-settings/default-settings.json +2 -159
  193. package/core/server/data/schema/fixtures/fixture-manager.js +11 -2
  194. package/core/server/data/schema/fixtures/fixtures.json +16 -7
  195. package/core/server/data/schema/schema.js +26 -38
  196. package/core/server/data/schema/validator.js +2 -0
  197. package/core/server/ghost-server.js +34 -64
  198. package/core/server/lib/image/gravatar.js +25 -9
  199. package/core/server/models/api-key.js +3 -26
  200. package/core/server/models/base/plugins/bulk-operations.js +14 -6
  201. package/core/server/models/integration.js +17 -0
  202. package/core/server/models/member.js +8 -4
  203. package/core/server/models/newsletter.js +27 -0
  204. package/core/server/models/post.js +30 -32
  205. package/core/server/models/relations/authors.js +74 -100
  206. package/core/server/models/settings.js +6 -2
  207. package/core/server/models/webhook.js +2 -1
  208. package/core/server/run-update-check.js +1 -1
  209. package/core/server/services/api-version-compatibility/index.js +24 -18
  210. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +23 -0
  211. package/core/server/services/api-version-compatibility/mw-version-rewrites.js +36 -0
  212. package/core/server/services/auth/api-key/admin.js +8 -7
  213. package/core/server/services/auth/passwordreset.js +3 -3
  214. package/core/server/services/auth/session/express-session.js +1 -1
  215. package/core/server/services/auth/session/index.js +1 -1
  216. package/core/server/services/auth/setup.js +8 -8
  217. package/core/server/services/bulk-email/bulk-email-processor.js +5 -1
  218. package/core/server/services/email-analytics/lib/event-processor.js +25 -14
  219. package/core/server/services/frontend-data-service/frontend-data-service.js +27 -0
  220. package/core/server/services/frontend-data-service/index.js +6 -0
  221. package/core/server/services/mail/index.js +14 -1
  222. package/core/server/services/mega/email-preview.js +14 -15
  223. package/core/server/services/mega/mega.js +37 -52
  224. package/core/server/services/mega/post-email-serializer.js +18 -28
  225. package/core/server/services/members/api.js +0 -3
  226. package/core/server/services/members/config.js +0 -49
  227. package/core/server/services/members/exporter/query.js +88 -0
  228. package/core/server/services/members/middleware.js +3 -135
  229. package/core/server/services/members/service.js +2 -29
  230. package/core/server/services/members/settings.js +3 -9
  231. package/core/server/services/newsletters/service.js +78 -10
  232. package/core/server/services/posts/post-scheduling-service.js +5 -17
  233. package/core/server/services/posts/posts-service.js +15 -62
  234. package/core/server/services/public-config/site.js +0 -6
  235. package/core/server/services/route-settings/index.js +0 -3
  236. package/core/server/services/route-settings/settings-loader.js +10 -34
  237. package/core/server/services/route-settings/validate.js +1 -7
  238. package/core/server/services/settings/index.js +1 -77
  239. package/core/server/services/settings/settings-service.js +184 -0
  240. package/core/server/services/themes/validate.js +1 -1
  241. package/core/server/services/url/Resources.js +1 -3
  242. package/core/server/services/url/UrlGenerator.js +1 -1
  243. package/core/server/services/url/UrlService.js +6 -20
  244. package/core/server/services/url/{configs/v2.js → config.js} +0 -0
  245. package/core/server/services/users.js +2 -2
  246. package/core/server/services/webhooks/listen.js +5 -2
  247. package/core/server/services/webhooks/serialize.js +6 -7
  248. package/core/server/services/webhooks/trigger.js +62 -47
  249. package/core/server/update-check.js +1 -1
  250. package/core/server/web/admin/app.js +1 -1
  251. package/core/server/web/admin/views/default-prod.html +4 -4
  252. package/core/server/web/admin/views/default.html +4 -4
  253. package/core/server/web/api/app.js +3 -15
  254. package/core/server/web/api/canary/admin/app.js +1 -1
  255. package/core/server/web/api/canary/admin/middleware.js +3 -1
  256. package/core/server/web/api/canary/admin/routes.js +7 -23
  257. package/core/server/web/api/canary/content/app.js +2 -3
  258. package/core/server/web/api/canary/content/routes.js +5 -4
  259. package/core/server/web/members/app.js +5 -4
  260. package/core/server/web/parent/backend.js +0 -1
  261. package/core/server/web/parent/frontend.js +5 -6
  262. package/core/server/web/parent/middleware/ghost-locals.js +0 -3
  263. package/core/server/web/well-known.js +14 -1
  264. package/core/shared/config/defaults.json +5 -2
  265. package/core/shared/config/overrides.json +1 -27
  266. package/core/shared/html-to-plaintext.js +78 -10
  267. package/core/shared/labs.js +4 -8
  268. package/core/shared/settings-cache/cache.js +38 -4
  269. package/core/shared/settings-cache/public.js +13 -7
  270. package/core/shared/url-utils.js +0 -2
  271. package/ghost.js +6 -0
  272. package/package.json +66 -64
  273. package/yarn.lock +765 -1300
  274. package/core/built/assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css +0 -1
  275. package/core/built/assets/ghost.min-4084931bc22e794fe3722139050a80b3.css +0 -1
  276. package/core/frontend/helpers/author.js +0 -41
  277. package/core/frontend/helpers/products.js +0 -65
  278. package/core/frontend/services/rendering/secure.js +0 -19
  279. package/core/frontend/services/routing/config/canary.js +0 -61
  280. package/core/frontend/services/routing/config/v2.js +0 -54
  281. package/core/frontend/services/routing/config/v3.js +0 -54
  282. package/core/frontend/services/theme-engine/engines/create.js +0 -45
  283. package/core/frontend/services/theme-engine/engines/index.js +0 -5
  284. package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +0 -9
  285. package/core/server/api/canary/products-public.js +0 -34
  286. package/core/server/api/canary/products.js +0 -116
  287. package/core/server/api/canary/utils/serializers/input/products.js +0 -28
  288. package/core/server/api/canary/utils/serializers/output/email-previews.js +0 -7
  289. package/core/server/api/canary/utils/serializers/output/products.js +0 -213
  290. package/core/server/api/v2/actions.js +0 -38
  291. package/core/server/api/v2/authentication.js +0 -191
  292. package/core/server/api/v2/authors-public.js +0 -69
  293. package/core/server/api/v2/config.js +0 -12
  294. package/core/server/api/v2/db.js +0 -120
  295. package/core/server/api/v2/images.js +0 -20
  296. package/core/server/api/v2/index.js +0 -147
  297. package/core/server/api/v2/integrations.js +0 -144
  298. package/core/server/api/v2/invites.js +0 -126
  299. package/core/server/api/v2/mail.js +0 -66
  300. package/core/server/api/v2/notifications.js +0 -96
  301. package/core/server/api/v2/oembed.js +0 -186
  302. package/core/server/api/v2/pages-public.js +0 -78
  303. package/core/server/api/v2/pages.js +0 -197
  304. package/core/server/api/v2/posts-public.js +0 -78
  305. package/core/server/api/v2/posts.js +0 -192
  306. package/core/server/api/v2/preview.js +0 -46
  307. package/core/server/api/v2/redirects.js +0 -28
  308. package/core/server/api/v2/roles.js +0 -19
  309. package/core/server/api/v2/schedules.js +0 -77
  310. package/core/server/api/v2/session.js +0 -70
  311. package/core/server/api/v2/settings-public.js +0 -17
  312. package/core/server/api/v2/settings.js +0 -195
  313. package/core/server/api/v2/site.js +0 -14
  314. package/core/server/api/v2/slack.js +0 -12
  315. package/core/server/api/v2/slugs.js +0 -51
  316. package/core/server/api/v2/tags-public.js +0 -71
  317. package/core/server/api/v2/tags.js +0 -159
  318. package/core/server/api/v2/themes.js +0 -133
  319. package/core/server/api/v2/users.js +0 -179
  320. package/core/server/api/v2/utils/index.js +0 -34
  321. package/core/server/api/v2/utils/permissions.js +0 -112
  322. package/core/server/api/v2/utils/serializers/index.js +0 -9
  323. package/core/server/api/v2/utils/serializers/input/db.js +0 -20
  324. package/core/server/api/v2/utils/serializers/input/index.js +0 -33
  325. package/core/server/api/v2/utils/serializers/input/integrations.js +0 -33
  326. package/core/server/api/v2/utils/serializers/input/pages.js +0 -203
  327. package/core/server/api/v2/utils/serializers/input/posts.js +0 -218
  328. package/core/server/api/v2/utils/serializers/input/settings.js +0 -152
  329. package/core/server/api/v2/utils/serializers/input/tags.js +0 -35
  330. package/core/server/api/v2/utils/serializers/input/users.js +0 -26
  331. package/core/server/api/v2/utils/serializers/input/utils/url.js +0 -71
  332. package/core/server/api/v2/utils/serializers/input/webhooks.js +0 -12
  333. package/core/server/api/v2/utils/serializers/output/actions.js +0 -13
  334. package/core/server/api/v2/utils/serializers/output/all.js +0 -25
  335. package/core/server/api/v2/utils/serializers/output/authentication.js +0 -68
  336. package/core/server/api/v2/utils/serializers/output/authors.js +0 -21
  337. package/core/server/api/v2/utils/serializers/output/config.js +0 -21
  338. package/core/server/api/v2/utils/serializers/output/db.js +0 -40
  339. package/core/server/api/v2/utils/serializers/output/images.js +0 -19
  340. package/core/server/api/v2/utils/serializers/output/index.js +0 -107
  341. package/core/server/api/v2/utils/serializers/output/integrations.js +0 -35
  342. package/core/server/api/v2/utils/serializers/output/invites.js +0 -24
  343. package/core/server/api/v2/utils/serializers/output/mail.js +0 -19
  344. package/core/server/api/v2/utils/serializers/output/notifications.js +0 -29
  345. package/core/server/api/v2/utils/serializers/output/oembed.js +0 -8
  346. package/core/server/api/v2/utils/serializers/output/pages.js +0 -26
  347. package/core/server/api/v2/utils/serializers/output/posts.js +0 -26
  348. package/core/server/api/v2/utils/serializers/output/preview.js +0 -9
  349. package/core/server/api/v2/utils/serializers/output/redirects.js +0 -5
  350. package/core/server/api/v2/utils/serializers/output/roles.js +0 -29
  351. package/core/server/api/v2/utils/serializers/output/schedules.js +0 -5
  352. package/core/server/api/v2/utils/serializers/output/settings.js +0 -61
  353. package/core/server/api/v2/utils/serializers/output/site.js +0 -16
  354. package/core/server/api/v2/utils/serializers/output/slugs.js +0 -11
  355. package/core/server/api/v2/utils/serializers/output/tags.js +0 -25
  356. package/core/server/api/v2/utils/serializers/output/themes.js +0 -25
  357. package/core/server/api/v2/utils/serializers/output/users.js +0 -45
  358. package/core/server/api/v2/utils/serializers/output/utils/clean.js +0 -174
  359. package/core/server/api/v2/utils/serializers/output/utils/date.js +0 -21
  360. package/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +0 -161
  361. package/core/server/api/v2/utils/serializers/output/utils/mapper.js +0 -136
  362. package/core/server/api/v2/utils/serializers/output/utils/post-gating.js +0 -29
  363. package/core/server/api/v2/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  364. package/core/server/api/v2/utils/serializers/output/utils/url.js +0 -67
  365. package/core/server/api/v2/utils/serializers/output/webhooks.js +0 -15
  366. package/core/server/api/v2/utils/validators/index.js +0 -9
  367. package/core/server/api/v2/utils/validators/input/images.js +0 -85
  368. package/core/server/api/v2/utils/validators/input/index.js +0 -45
  369. package/core/server/api/v2/utils/validators/input/invitations.js +0 -49
  370. package/core/server/api/v2/utils/validators/input/invites.js +0 -21
  371. package/core/server/api/v2/utils/validators/input/oembed.js +0 -17
  372. package/core/server/api/v2/utils/validators/input/pages.js +0 -46
  373. package/core/server/api/v2/utils/validators/input/passwordreset.js +0 -36
  374. package/core/server/api/v2/utils/validators/input/posts.js +0 -46
  375. package/core/server/api/v2/utils/validators/input/settings.js +0 -79
  376. package/core/server/api/v2/utils/validators/input/setup.js +0 -17
  377. package/core/server/api/v2/utils/validators/input/tags.js +0 -6
  378. package/core/server/api/v2/utils/validators/input/users.js +0 -21
  379. package/core/server/api/v2/utils/validators/output/index.js +0 -1
  380. package/core/server/api/v2/utils/validators/utils/json-schema.js +0 -17
  381. package/core/server/api/v2/webhooks.js +0 -163
  382. package/core/server/api/v3/authentication.js +0 -192
  383. package/core/server/api/v3/authors-public.js +0 -69
  384. package/core/server/api/v3/config.js +0 -12
  385. package/core/server/api/v3/db.js +0 -131
  386. package/core/server/api/v3/email-preview.js +0 -74
  387. package/core/server/api/v3/email.js +0 -65
  388. package/core/server/api/v3/identities.js +0 -36
  389. package/core/server/api/v3/images.js +0 -20
  390. package/core/server/api/v3/index.js +0 -179
  391. package/core/server/api/v3/integrations.js +0 -150
  392. package/core/server/api/v3/invites.js +0 -125
  393. package/core/server/api/v3/labels.js +0 -162
  394. package/core/server/api/v3/mail.js +0 -66
  395. package/core/server/api/v3/memberSigninUrls.js +0 -33
  396. package/core/server/api/v3/members.js +0 -412
  397. package/core/server/api/v3/membersStripeConnect.js +0 -29
  398. package/core/server/api/v3/notifications.js +0 -96
  399. package/core/server/api/v3/oembed.js +0 -23
  400. package/core/server/api/v3/pages-public.js +0 -77
  401. package/core/server/api/v3/pages.js +0 -199
  402. package/core/server/api/v3/posts-public.js +0 -76
  403. package/core/server/api/v3/posts.js +0 -200
  404. package/core/server/api/v3/preview.js +0 -44
  405. package/core/server/api/v3/redirects.js +0 -47
  406. package/core/server/api/v3/roles.js +0 -19
  407. package/core/server/api/v3/schedules.js +0 -77
  408. package/core/server/api/v3/session.js +0 -70
  409. package/core/server/api/v3/settings-public.js +0 -17
  410. package/core/server/api/v3/settings.js +0 -224
  411. package/core/server/api/v3/site.js +0 -14
  412. package/core/server/api/v3/slack.js +0 -12
  413. package/core/server/api/v3/slugs.js +0 -48
  414. package/core/server/api/v3/snippets.js +0 -115
  415. package/core/server/api/v3/tags-public.js +0 -71
  416. package/core/server/api/v3/tags.js +0 -159
  417. package/core/server/api/v3/themes.js +0 -131
  418. package/core/server/api/v3/users.js +0 -242
  419. package/core/server/api/v3/utils/index.js +0 -34
  420. package/core/server/api/v3/utils/permissions.js +0 -116
  421. package/core/server/api/v3/utils/serializers/index.js +0 -9
  422. package/core/server/api/v3/utils/serializers/input/authors.js +0 -31
  423. package/core/server/api/v3/utils/serializers/input/db.js +0 -20
  424. package/core/server/api/v3/utils/serializers/input/index.js +0 -41
  425. package/core/server/api/v3/utils/serializers/input/integrations.js +0 -33
  426. package/core/server/api/v3/utils/serializers/input/members.js +0 -62
  427. package/core/server/api/v3/utils/serializers/input/pages.js +0 -208
  428. package/core/server/api/v3/utils/serializers/input/posts.js +0 -242
  429. package/core/server/api/v3/utils/serializers/input/settings.js +0 -168
  430. package/core/server/api/v3/utils/serializers/input/tags.js +0 -42
  431. package/core/server/api/v3/utils/serializers/input/users.js +0 -26
  432. package/core/server/api/v3/utils/serializers/input/utils/slug-filter-order.js +0 -18
  433. package/core/server/api/v3/utils/serializers/input/utils/url.js +0 -71
  434. package/core/server/api/v3/utils/serializers/input/webhooks.js +0 -12
  435. package/core/server/api/v3/utils/serializers/output/actions.js +0 -13
  436. package/core/server/api/v3/utils/serializers/output/all.js +0 -25
  437. package/core/server/api/v3/utils/serializers/output/authentication.js +0 -69
  438. package/core/server/api/v3/utils/serializers/output/authors.js +0 -21
  439. package/core/server/api/v3/utils/serializers/output/config.js +0 -25
  440. package/core/server/api/v3/utils/serializers/output/db.js +0 -40
  441. package/core/server/api/v3/utils/serializers/output/email-preview.js +0 -7
  442. package/core/server/api/v3/utils/serializers/output/emails.js +0 -13
  443. package/core/server/api/v3/utils/serializers/output/identities.js +0 -7
  444. package/core/server/api/v3/utils/serializers/output/images.js +0 -19
  445. package/core/server/api/v3/utils/serializers/output/index.js +0 -135
  446. package/core/server/api/v3/utils/serializers/output/integrations.js +0 -35
  447. package/core/server/api/v3/utils/serializers/output/invites.js +0 -24
  448. package/core/server/api/v3/utils/serializers/output/labels.js +0 -25
  449. package/core/server/api/v3/utils/serializers/output/mail.js +0 -19
  450. package/core/server/api/v3/utils/serializers/output/member-signin_urls.js +0 -7
  451. package/core/server/api/v3/utils/serializers/output/members.js +0 -228
  452. package/core/server/api/v3/utils/serializers/output/notifications.js +0 -29
  453. package/core/server/api/v3/utils/serializers/output/oembed.js +0 -8
  454. package/core/server/api/v3/utils/serializers/output/pages.js +0 -26
  455. package/core/server/api/v3/utils/serializers/output/posts.js +0 -26
  456. package/core/server/api/v3/utils/serializers/output/preview.js +0 -10
  457. package/core/server/api/v3/utils/serializers/output/redirects.js +0 -5
  458. package/core/server/api/v3/utils/serializers/output/roles.js +0 -29
  459. package/core/server/api/v3/utils/serializers/output/schedules.js +0 -5
  460. package/core/server/api/v3/utils/serializers/output/settings.js +0 -65
  461. package/core/server/api/v3/utils/serializers/output/site.js +0 -19
  462. package/core/server/api/v3/utils/serializers/output/slugs.js +0 -11
  463. package/core/server/api/v3/utils/serializers/output/snippets.js +0 -97
  464. package/core/server/api/v3/utils/serializers/output/tags.js +0 -25
  465. package/core/server/api/v3/utils/serializers/output/themes.js +0 -25
  466. package/core/server/api/v3/utils/serializers/output/users.js +0 -74
  467. package/core/server/api/v3/utils/serializers/output/utils/clean.js +0 -166
  468. package/core/server/api/v3/utils/serializers/output/utils/date.js +0 -21
  469. package/core/server/api/v3/utils/serializers/output/utils/extra-attrs.js +0 -174
  470. package/core/server/api/v3/utils/serializers/output/utils/mapper.js +0 -197
  471. package/core/server/api/v3/utils/serializers/output/utils/post-gating.js +0 -39
  472. package/core/server/api/v3/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  473. package/core/server/api/v3/utils/serializers/output/utils/url.js +0 -67
  474. package/core/server/api/v3/utils/serializers/output/webhooks.js +0 -15
  475. package/core/server/api/v3/utils/validators/index.js +0 -9
  476. package/core/server/api/v3/utils/validators/input/images.js +0 -85
  477. package/core/server/api/v3/utils/validators/input/index.js +0 -61
  478. package/core/server/api/v3/utils/validators/input/invitations.js +0 -49
  479. package/core/server/api/v3/utils/validators/input/invites.js +0 -21
  480. package/core/server/api/v3/utils/validators/input/labels.js +0 -6
  481. package/core/server/api/v3/utils/validators/input/members.js +0 -6
  482. package/core/server/api/v3/utils/validators/input/oembed.js +0 -17
  483. package/core/server/api/v3/utils/validators/input/pages.js +0 -46
  484. package/core/server/api/v3/utils/validators/input/passwordreset.js +0 -36
  485. package/core/server/api/v3/utils/validators/input/posts.js +0 -46
  486. package/core/server/api/v3/utils/validators/input/settings.js +0 -89
  487. package/core/server/api/v3/utils/validators/input/setup.js +0 -17
  488. package/core/server/api/v3/utils/validators/input/snippets.js +0 -6
  489. package/core/server/api/v3/utils/validators/input/tags.js +0 -6
  490. package/core/server/api/v3/utils/validators/input/users.js +0 -22
  491. package/core/server/api/v3/utils/validators/input/webhooks.js +0 -27
  492. package/core/server/api/v3/utils/validators/output/index.js +0 -1
  493. package/core/server/api/v3/utils/validators/utils/json-schema.js +0 -17
  494. package/core/server/api/v3/webhooks.js +0 -130
  495. package/core/server/data/migrations/utils.js +0 -571
  496. package/core/server/data/migrations/versions/1.13/1-custom-template-post.js +0 -7
  497. package/core/server/data/migrations/versions/1.13/2-theme-permissions.js +0 -58
  498. package/core/server/data/migrations/versions/1.18/1-add-webhooks-table.js +0 -2
  499. package/core/server/data/migrations/versions/1.19/1-webhook-permissions.js +0 -31
  500. package/core/server/data/migrations/versions/1.20/1-remove-settings-keys.js +0 -65
  501. package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +0 -58
  502. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DDL.js +0 -2
  503. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DML.js +0 -63
  504. package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +0 -70
  505. package/core/server/data/migrations/versions/1.25/2-demo-post.js +0 -55
  506. package/core/server/data/migrations/versions/1.3/1-post-excerpt.js +0 -7
  507. package/core/server/data/migrations/versions/1.4/1-codeinjection-post.js +0 -14
  508. package/core/server/data/migrations/versions/1.5/1-og-twitter-post.js +0 -34
  509. package/core/server/data/migrations/versions/1.7/1-add-backup-client.js +0 -10
  510. package/core/server/data/migrations/versions/1.9/1-add-permissions-redirect.js +0 -23
  511. package/core/server/data/migrations/versions/2.0/1-rename-amp-column.js +0 -44
  512. package/core/server/data/migrations/versions/2.0/2-update-posts.js +0 -7
  513. package/core/server/data/migrations/versions/2.0/3-remove-koenig-labs.js +0 -42
  514. package/core/server/data/migrations/versions/2.0/4-permalink-setting.js +0 -85
  515. package/core/server/data/migrations/versions/2.0/5-remove-demo-post.js +0 -85
  516. package/core/server/data/migrations/versions/2.0/6-replace-fixture-posts.js +0 -10
  517. package/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +0 -5
  518. package/core/server/data/migrations/versions/2.14/1-add-actions-table.js +0 -2
  519. package/core/server/data/migrations/versions/2.14/2-add-actions-permissions.js +0 -12
  520. package/core/server/data/migrations/versions/2.15/1-add-type-column-to-integrations.js +0 -8
  521. package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +0 -69
  522. package/core/server/data/migrations/versions/2.16/1-add-members-perrmissions.js +0 -1
  523. package/core/server/data/migrations/versions/2.17/1-normalize-settings.js +0 -74
  524. package/core/server/data/migrations/versions/2.17/2-posts-add-canonical-url.js +0 -7
  525. package/core/server/data/migrations/versions/2.18/1-restore-settings-from-backup.js +0 -134
  526. package/core/server/data/migrations/versions/2.2/1-add-sessions-table.js +0 -2
  527. package/core/server/data/migrations/versions/2.2/2-add-integrations-and-api-key-tables.js +0 -6
  528. package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +0 -83
  529. package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js +0 -77
  530. package/core/server/data/migrations/versions/2.2/5-add-mobiledoc-revisions-table.js +0 -2
  531. package/core/server/data/migrations/versions/2.21/1-update-editor-permissions.js +0 -28
  532. package/core/server/data/migrations/versions/2.22/1-add-member-permissions-to-roles.js +0 -47
  533. package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +0 -83
  534. package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +0 -69
  535. package/core/server/data/migrations/versions/2.27/3-add-subdirectory-to-relative-canonical-urls.js +0 -100
  536. package/core/server/data/migrations/versions/2.28/1-add-db-backup-content-permission.js +0 -9
  537. package/core/server/data/migrations/versions/2.28/2-add-db-backup-content-permission-to-roles.js +0 -15
  538. package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +0 -84
  539. package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +0 -69
  540. package/core/server/data/migrations/versions/2.28/5-add-scheduler-permission-to-roles.js +0 -23
  541. package/core/server/data/migrations/versions/2.28/6-add-type-column.js +0 -6
  542. package/core/server/data/migrations/versions/2.28/7-populate-type-column.js +0 -6
  543. package/core/server/data/migrations/versions/2.28/8-remove-page-column.js +0 -6
  544. package/core/server/data/migrations/versions/2.29/1-add-post-page-column.js +0 -20
  545. package/core/server/data/migrations/versions/2.29/2-populate-post-page-column.js +0 -98
  546. package/core/server/data/migrations/versions/2.29/3-remove-page-type-column.js +0 -15
  547. package/core/server/data/migrations/versions/2.3/1-add-webhook-columns.js +0 -45
  548. package/core/server/data/migrations/versions/2.3/2-add-webhook-edit-permission.js +0 -9
  549. package/core/server/data/migrations/versions/2.31/1-remove-name-and-password-from-members-table.js +0 -15
  550. package/core/server/data/migrations/versions/2.32/01-add-members-stripe-customers-table.js +0 -4
  551. package/core/server/data/migrations/versions/2.32/02-add-name-to-members-table.js +0 -7
  552. package/core/server/data/migrations/versions/2.33/01-correct-members-stripe-customers-table.js +0 -37
  553. package/core/server/data/migrations/versions/2.34/01-add-stripe-customers-subscriptions-table.js +0 -2
  554. package/core/server/data/migrations/versions/2.34/02-add-email-to-members-stripe-customers-table.js +0 -7
  555. package/core/server/data/migrations/versions/2.34/03-add-name-to-members-stripe-customers-table.js +0 -7
  556. package/core/server/data/migrations/versions/2.35/01-add-note-to-members-table.js +0 -7
  557. package/core/server/data/migrations/versions/2.37/01-add-self-signup-and-from address-to-members-settings.js +0 -67
  558. package/core/server/data/migrations/versions/2.6/1-add-webhook-permission-roles.js +0 -31
  559. package/core/server/data/migrations/versions/2.8/1-add-members-table.js +0 -2
  560. package/core/server/data/migrations/versions/3.0/01-remove-user-ghost-auth-columns.js +0 -14
  561. package/core/server/data/migrations/versions/3.0/02-drop-token-auth-tables.js +0 -31
  562. package/core/server/data/migrations/versions/3.0/03-drop-client-auth-tables.js +0 -35
  563. package/core/server/data/migrations/versions/3.0/04-add-posts-meta-table.js +0 -2
  564. package/core/server/data/migrations/versions/3.0/05-populate-posts-meta-table.js +0 -83
  565. package/core/server/data/migrations/versions/3.0/06-remove-posts-meta-columns.js +0 -44
  566. package/core/server/data/migrations/versions/3.0/07-add-posts-type-column.js +0 -8
  567. package/core/server/data/migrations/versions/3.0/08-populate-posts-type-column.js +0 -94
  568. package/core/server/data/migrations/versions/3.0/09-remove-posts-page-column.js +0 -7
  569. package/core/server/data/migrations/versions/3.0/10-remove-empty-strings.js +0 -81
  570. package/core/server/data/migrations/versions/3.0/11-update-posts-html.js +0 -7
  571. package/core/server/data/migrations/versions/3.0/12-populate-members-table-from-subscribers.js +0 -54
  572. package/core/server/data/migrations/versions/3.0/13-drop-subscribers-table.js +0 -34
  573. package/core/server/data/migrations/versions/3.0/14-remove-subscribers-flag.js +0 -24
  574. package/core/server/data/migrations/versions/3.1/01-add-send-email-when-published-to-posts.js +0 -7
  575. package/core/server/data/migrations/versions/3.1/02-add-email-subject-to-posts-meta.js +0 -7
  576. package/core/server/data/migrations/versions/3.1/03-add-email-preview-permissions.js +0 -18
  577. package/core/server/data/migrations/versions/3.1/04-add-subscribed-flag-to-members.js +0 -7
  578. package/core/server/data/migrations/versions/3.1/05-add-emails-table.js +0 -2
  579. package/core/server/data/migrations/versions/3.1/06-add-email-permissions.js +0 -15
  580. package/core/server/data/migrations/versions/3.1/07-add-uuid-field-to-members.js +0 -8
  581. package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +0 -23
  582. package/core/server/data/migrations/versions/3.1/09-add-further-email-permissions.js +0 -25
  583. package/core/server/data/migrations/versions/3.1/10-add-email-error-data-column.js +0 -8
  584. package/core/server/data/migrations/versions/3.11/01-remove-broken-complimentary-plan-from-members-settings.js +0 -68
  585. package/core/server/data/migrations/versions/3.12/01-add-identity-permission.js +0 -7
  586. package/core/server/data/migrations/versions/3.12/02-remove-legacy-is-paid-flag-from-settings.js +0 -93
  587. package/core/server/data/migrations/versions/3.18/01-add-email-preview-permissions-to-roles.js +0 -39
  588. package/core/server/data/migrations/versions/3.18/02-add-members_stripe_connect-auth-permissions.js +0 -7
  589. package/core/server/data/migrations/versions/3.19/01-update-member-from-email-address.js +0 -91
  590. package/core/server/data/migrations/versions/3.2/01-add-cancel-at-period-end-to-subscriptions.js +0 -7
  591. package/core/server/data/migrations/versions/3.22/01-removed-legacy-values-from-settings-table.js +0 -65
  592. package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +0 -90
  593. package/core/server/data/migrations/versions/3.22/03-add-group-and-flags-to-settings.js +0 -15
  594. package/core/server/data/migrations/versions/3.22/04-populate-settings-groups-and-flags.js +0 -194
  595. package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +0 -182
  596. package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +0 -132
  597. package/core/server/data/migrations/versions/3.22/07-update-type-for-settings.js +0 -137
  598. package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +0 -65
  599. package/core/server/data/migrations/versions/3.23/02-remove-bulk-email-settings.js +0 -48
  600. package/core/server/data/migrations/versions/3.23/03-update-portal-button-setting.js +0 -24
  601. package/core/server/data/migrations/versions/3.23/04-add-meta-columns-to-tags-table.js +0 -54
  602. package/core/server/data/migrations/versions/3.24/01-populate-group-for-new-portal-settings.js +0 -38
  603. package/core/server/data/migrations/versions/3.25/01-add-members-stripe-webhook-settings.js +0 -22
  604. package/core/server/data/migrations/versions/3.26/01-add-amp-gtag-id-setting.js +0 -20
  605. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +0 -53
  606. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +0 -53
  607. package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +0 -35
  608. package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +0 -35
  609. package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +0 -177
  610. package/core/server/data/migrations/versions/3.30/01-add-member-signin-url-permission-roles.js +0 -8
  611. package/core/server/data/migrations/versions/3.32/01-add-member-support-address-setting.js +0 -27
  612. package/core/server/data/migrations/versions/3.32/02-add-member-reply-address-setting.js +0 -20
  613. package/core/server/data/migrations/versions/3.32/03-add-routes-hash-setting.js +0 -20
  614. package/core/server/data/migrations/versions/3.33/01-add-email-recipients-tables.js +0 -8
  615. package/core/server/data/migrations/versions/3.34/01-add-tokens-table.js +0 -2
  616. package/core/server/data/migrations/versions/3.35/01-add-address-columns-to-emails-table.js +0 -14
  617. package/core/server/data/migrations/versions/3.36/01-add-snippets-table.js +0 -2
  618. package/core/server/data/migrations/versions/3.36/02-add-snippets-permissions.js +0 -56
  619. package/core/server/data/migrations/versions/3.37/01-update-portal-button-setting.js +0 -30
  620. package/core/server/data/migrations/versions/3.38/01-add-email-recipient-filter-column.js +0 -8
  621. package/core/server/data/migrations/versions/3.38/02-populate-email-recipient-filter-column.js +0 -34
  622. package/core/server/data/migrations/versions/3.38/03-add-recipient-filter-column.js +0 -8
  623. package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +0 -49
  624. package/core/server/data/migrations/versions/3.38/05-add-emails-track-opens-column.js +0 -7
  625. package/core/server/data/migrations/versions/3.38/06-add-newsletter-settings.js +0 -16
  626. package/core/server/data/migrations/versions/3.38/07-migrate-newsletter-settings-from-config.js +0 -48
  627. package/core/server/data/migrations/versions/3.38/08-repopulate-send-email-when-published-down-migration.js +0 -25
  628. package/core/server/data/migrations/versions/3.38/09-remove-send-email-when-published-column.js +0 -7
  629. package/core/server/data/migrations/versions/3.39/01-add-members-signup-redirect-settings.js +0 -16
  630. package/core/server/data/migrations/versions/3.39/02-add-user-id-to-api-keys-table.js +0 -7
  631. package/core/server/data/migrations/versions/3.39/03-add-email-track-opens-setting.js +0 -16
  632. package/core/server/data/migrations/versions/3.39/04-add-cancellation-reason-column.js +0 -7
  633. package/core/server/data/migrations/versions/3.39/05-remove-unused-columns-on-emails.js +0 -14
  634. package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +0 -58
  635. package/core/server/data/migrations/versions/3.39/07-add-email-recipients-event-timestamps.js +0 -19
  636. package/core/server/data/migrations/versions/3.39/08-add-email-stats-columns.js +0 -22
  637. package/core/server/data/migrations/versions/3.40/01-add-members-email-open-rate-column.js +0 -8
  638. package/core/server/data/migrations/versions/3.40/02-add members-email-aggregation-columns.js +0 -16
  639. package/core/server/data/migrations/versions/3.40/03-populate-members-email-counts.js +0 -15
  640. package/core/server/data/migrations/versions/3.41/01-add-firstpromoter-settings.js +0 -16
  641. package/core/server/data/migrations/versions/3.6/1-add-labels-table.js +0 -2
  642. package/core/server/data/migrations/versions/3.6/2-add-members-labels-table.js +0 -2
  643. package/core/server/data/migrations/versions/3.6/3-add-labels-permissions.js +0 -47
  644. package/core/server/data/migrations/versions/3.7/01-fix-incorrect-member-labels-foreign-keys.js +0 -46
  645. package/core/server/data/migrations/versions/3.8/01-add-geolocation-to-members.js +0 -7
  646. package/core/server/data/migrations/versions/3.9/01-add-member-sigin-url-permissions.js +0 -7
  647. package/core/server/services/mail/utils.js +0 -34
  648. package/core/server/services/url/configs/canary.js +0 -143
  649. package/core/server/services/url/configs/v3.js +0 -141
  650. package/core/server/services/url/configs/v4.js +0 -143
  651. package/core/server/web/api/v2/admin/app.js +0 -43
  652. package/core/server/web/api/v2/admin/middleware.js +0 -85
  653. package/core/server/web/api/v2/admin/routes.js +0 -200
  654. package/core/server/web/api/v2/content/app.js +0 -38
  655. package/core/server/web/api/v2/content/middleware.js +0 -23
  656. package/core/server/web/api/v2/content/routes.js +0 -37
  657. package/core/server/web/api/v3/admin/app.js +0 -43
  658. package/core/server/web/api/v3/admin/middleware.js +0 -89
  659. package/core/server/web/api/v3/admin/routes.js +0 -267
  660. package/core/server/web/api/v3/content/app.js +0 -38
  661. package/core/server/web/api/v3/content/middleware.js +0 -23
  662. package/core/server/web/api/v3/content/routes.js +0 -37
  663. package/core/server/web/oauth/app.js +0 -153
  664. package/core/server/web/oauth/index.js +0 -1
@@ -46,12 +46,19 @@ function formatPageResponse(result) {
46
46
  *
47
47
  * @return {Object} containing page variables
48
48
  */
49
- function formatResponse(post) {
49
+ function formatResponse(post, context) {
50
50
  prepareContextResource(post);
51
51
 
52
- return {
52
+ let entry = {
53
53
  post: post
54
54
  };
55
+
56
+ // NOTE: preview context is a special case where the internal preview api returns the post model's type field
57
+ if (context?.includes('page') || (context?.includes('preview') && post.type === 'page')) {
58
+ entry.page = post;
59
+ }
60
+
61
+ return entry;
55
62
  }
56
63
 
57
64
  module.exports = {
@@ -19,10 +19,6 @@ module.exports = {
19
19
  return require('./templates');
20
20
  },
21
21
 
22
- get secure() {
23
- return require('./secure');
24
- },
25
-
26
22
  get handleError() {
27
23
  return require('./error');
28
24
  },
@@ -13,6 +13,6 @@ module.exports = function renderEntry(req, res) {
13
13
  return function renderEntryClosure(entry) {
14
14
  // Format data 2 - 1 is in preview/entry
15
15
  // Render
16
- return renderer(req, res, formatResponse.entry(entry));
16
+ return renderer(req, res, formatResponse.entry(entry, res.routerOptions?.context));
17
17
  };
18
18
  };
@@ -82,11 +82,11 @@ _private.getEntriesTemplateHierarchy = function getEntriesTemplateHierarchy(rout
82
82
  * @param {Object} postObject
83
83
  * @returns {String[]}
84
84
  */
85
- _private.getEntryTemplateHierarchy = function getEntryTemplateHierarchy(postObject) {
85
+ _private.getEntryTemplateHierarchy = function getEntryTemplateHierarchy(postObject, context) {
86
86
  const templateList = ['post'];
87
87
  let slugTemplate = 'post-' + postObject.slug;
88
88
 
89
- if (postObject.page) {
89
+ if (context === 'page') {
90
90
  templateList.unshift('page');
91
91
  slugTemplate = 'page-' + postObject.slug;
92
92
  }
@@ -141,8 +141,14 @@ _private.pickTemplate = function pickTemplate(templateList, fallback) {
141
141
  return template;
142
142
  };
143
143
 
144
- _private.getTemplateForEntry = function getTemplateForEntry(postObject) {
145
- const templateList = _private.getEntryTemplateHierarchy(postObject);
144
+ /**
145
+ *
146
+ * @param {Object} entry
147
+ * @param {('post'|'page')} context
148
+ * @returns
149
+ */
150
+ _private.getTemplateForEntry = function getTemplateForEntry(entry, context) {
151
+ const templateList = _private.getEntryTemplateHierarchy(entry, context);
146
152
  const fallback = templateList[templateList.length - 1];
147
153
  return _private.pickTemplate(templateList, fallback);
148
154
  };
@@ -184,7 +190,11 @@ module.exports.setTemplate = function setTemplate(req, res, data) {
184
190
  } else if (res.routerOptions.type === 'custom') {
185
191
  res._template = _private.pickTemplate(res.routerOptions.templates, res.routerOptions.defaultTemplate);
186
192
  } else if (res.routerOptions.type === 'entry') {
187
- res._template = _private.getTemplateForEntry(data.post);
193
+ if (res.routerOptions?.context?.includes('page') || (res.routerOptions?.context?.includes('preview') && data.page)) {
194
+ res._template = _private.getTemplateForEntry(data.page, 'page');
195
+ } else {
196
+ res._template = _private.getTemplateForEntry(data.post, 'post');
197
+ }
188
198
  } else {
189
199
  res._template = 'index';
190
200
  }
@@ -140,7 +140,7 @@ class CollectionRouter extends ParentRouter {
140
140
  getRoute(options) {
141
141
  options = options || {};
142
142
 
143
- return urlUtils.createUrl(this.route.value, options.absolute, options.secure);
143
+ return urlUtils.createUrl(this.route.value, options.absolute);
144
144
  }
145
145
 
146
146
  /**
@@ -153,7 +153,7 @@ class CollectionRouter extends ParentRouter {
153
153
  return null;
154
154
  }
155
155
 
156
- return urlUtils.createUrl(urlUtils.urlJoin(this.route.value, this.rssRouter.route.value), options.absolute, options.secure);
156
+ return urlUtils.createUrl(urlUtils.urlJoin(this.route.value, this.rssRouter.route.value), options.absolute);
157
157
  }
158
158
  }
159
159
 
@@ -3,11 +3,11 @@ const urlUtils = require('../../../shared/url-utils');
3
3
  const controllers = require('./controllers');
4
4
 
5
5
  /**
6
- * @description Preview Router.
6
+ * @description Email Router.
7
7
  */
8
8
  class EmailRouter extends ParentRouter {
9
9
  constructor(RESOURCE_CONFIG) {
10
- super('PreviewRouter');
10
+ super('EmailRouter');
11
11
 
12
12
  this.RESOURCE_CONFIG = RESOURCE_CONFIG.QUERY.email;
13
13
 
@@ -192,7 +192,7 @@ class ParentRouter {
192
192
  getRoute(options) {
193
193
  options = options || {};
194
194
 
195
- return urlUtils.createUrl(this.route.value, options.absolute, options.secure);
195
+ return urlUtils.createUrl(this.route.value, options.absolute);
196
196
  }
197
197
 
198
198
  /**
@@ -9,7 +9,7 @@ class PreviewRouter extends ParentRouter {
9
9
  constructor(RESOURCE_CONFIG) {
10
10
  super('PreviewRouter');
11
11
 
12
- this.RESOURCE_CONFIG = RESOURCE_CONFIG.QUERY.preview;
12
+ this.RESOURCE_CONFIG = RESOURCE_CONFIG.QUERY.previews;
13
13
 
14
14
  // @NOTE: hardcoded, not configureable
15
15
  this.route = {value: '/p/'};
@@ -25,8 +25,8 @@ class PreviewRouter extends ParentRouter {
25
25
  // REGISTER: prepare context
26
26
  this.router().use(this._prepareContext.bind(this));
27
27
 
28
- // REGISTER: actual preview route
29
- this.mountRoute(urlUtils.urlJoin(this.route.value, ':uuid', ':options?'), controllers.preview);
28
+ // REGISTER: actual previews route
29
+ this.mountRoute(urlUtils.urlJoin(this.route.value, ':uuid', ':options?'), controllers.previews);
30
30
  }
31
31
 
32
32
  /**
@@ -1,4 +1,3 @@
1
- /* eslint-disable */
2
1
  module.exports.QUERY = {
3
2
  tag: {
4
3
  controller: 'tagsPublic',
@@ -33,9 +32,9 @@ module.exports.QUERY = {
33
32
  slug: '%s'
34
33
  }
35
34
  },
36
- preview: {
37
- controller: 'preview',
38
- resource: 'preview'
35
+ previews: {
36
+ controller: 'previews',
37
+ resource: 'previews'
39
38
  },
40
39
  email: {
41
40
  controller: 'emailPost',
@@ -58,4 +57,3 @@ module.exports.TAXONOMIES = {
58
57
  resource: 'authors'
59
58
  }
60
59
  };
61
- /* eslint-enable */
@@ -1,4 +1,3 @@
1
- const _ = require('lodash');
2
1
  const debug = require('@tryghost/debug')('services:routing:controllers:channel');
3
2
  const tpl = require('@tryghost/tpl');
4
3
  const errors = require('@tryghost/errors');
@@ -60,15 +59,6 @@ module.exports = function channelController(req, res, next) {
60
59
  }));
61
60
  }
62
61
 
63
- // Format data 1
64
- // @TODO: See renderer/secure for explanation.
65
- renderer.secure(req, result.posts);
66
-
67
- // @TODO: See renderer/secure for explanation.
68
- _.each(result.data, function (data) {
69
- renderer.secure(req, data);
70
- });
71
-
72
62
  return renderer.renderEntries(req, res)(result);
73
63
  })
74
64
  .catch(renderer.handleError(next));
@@ -80,15 +80,6 @@ module.exports = function collectionController(req, res, next) {
80
80
  debug(`'${post.slug}' is not owned by this collection`);
81
81
  });
82
82
 
83
- // Format data 1
84
- // @TODO: See renderer/secure for explanation.
85
- renderer.secure(req, result.posts);
86
-
87
- // @TODO: See renderer/secure for explanation.
88
- _.each(result.data, function (data) {
89
- renderer.secure(req, data);
90
- });
91
-
92
83
  return renderer.renderEntries(req, res)(result);
93
84
  })
94
85
  .catch(renderer.handleError(next));
@@ -14,7 +14,7 @@ const renderer = require('../../rendering');
14
14
  module.exports = function emailPostController(req, res, next) {
15
15
  debug('emailPostController');
16
16
 
17
- const api = require('../../proxy').api[res.locals.apiVersion];
17
+ const api = require('../../proxy').api;
18
18
 
19
19
  const params = {
20
20
  uuid: req.params.uuid,
@@ -51,12 +51,7 @@ module.exports = function emailPostController(req, res, next) {
51
51
  return urlUtils.redirect301(res, routerManager.getUrlByResourceId(post.id, {withSubdirectory: true}));
52
52
  }
53
53
 
54
- if (res.locals.apiVersion !== 'v0.1' && res.locals.apiVersion !== 'v2') {
55
- post.access = !!post.html;
56
- }
57
-
58
- // @TODO: See renderer/secure
59
- renderer.secure(req, post);
54
+ post.access = !!post.html;
60
55
 
61
56
  return renderer.renderEntry(req, res)(post);
62
57
  })
@@ -40,7 +40,7 @@ module.exports = function entryController(req, res, next) {
40
40
  }
41
41
 
42
42
  debug('redirect. is edit url');
43
- const resourceType = entry.page ? 'page' : 'post';
43
+ const resourceType = res.routerOptions?.context?.includes('page') ? 'page' : 'post';
44
44
 
45
45
  return urlUtils.redirectToAdmin(302, res, `/#/editor/${resourceType}/${entry.id}`);
46
46
  }
@@ -84,8 +84,6 @@ module.exports = function entryController(req, res, next) {
84
84
  }));
85
85
  }
86
86
 
87
- renderer.secure(req, entry);
88
-
89
87
  return renderer.renderEntry(req, res)(entry);
90
88
  })
91
89
  .catch(renderer.handleError(next));
@@ -11,8 +11,8 @@ module.exports = {
11
11
  return require('./rss');
12
12
  },
13
13
 
14
- get preview() {
15
- return require('./preview');
14
+ get previews() {
15
+ return require('./previews');
16
16
  },
17
17
 
18
18
  get email() {
@@ -14,7 +14,7 @@ const renderer = require('../../rendering');
14
14
  module.exports = function previewController(req, res, next) {
15
15
  debug('previewController');
16
16
 
17
- const api = require('../../proxy').api[res.locals.apiVersion];
17
+ const api = require('../../proxy').api;
18
18
 
19
19
  const params = {
20
20
  uuid: req.params.uuid,
@@ -40,7 +40,7 @@ module.exports = function previewController(req, res, next) {
40
40
  // @TODO: we don't know which resource type it is, because it's a generic preview handler and the
41
41
  // preview API returns {previews: []}
42
42
  // @TODO: figure out how to solve better
43
- const resourceType = post.page ? 'page' : 'post';
43
+ const resourceType = post.type;
44
44
 
45
45
  // CASE: last param of the url is /edit, redirect to admin
46
46
  return urlUtils.redirectToAdmin(302, res, `/#/editor/${resourceType}/${post.id}`);
@@ -53,12 +53,7 @@ module.exports = function previewController(req, res, next) {
53
53
  return urlUtils.redirect301(res, routerManager.getUrlByResourceId(post.id, {withSubdirectory: true}));
54
54
  }
55
55
 
56
- if (res.locals.apiVersion !== 'v0.1' && res.locals.apiVersion !== 'v2') {
57
- post.access = !!post.html;
58
- }
59
-
60
- // @TODO: See renderer/secure
61
- renderer.secure(req, post);
56
+ post.access = !!post.html;
62
57
 
63
58
  return renderer.renderEntry(req, res)(post);
64
59
  })
@@ -4,7 +4,7 @@ const debug = require('@tryghost/debug')('services:routing:controllers:static');
4
4
  const renderer = require('../../rendering');
5
5
 
6
6
  function processQuery(query, locals) {
7
- const api = require('../../proxy').api[locals.apiVersion];
7
+ const api = require('../../proxy').api;
8
8
  query = _.cloneDeep(query);
9
9
 
10
10
  // CASE: If you define a single data key for a static route (e.g. data: page.team), this static route will represent
@@ -60,11 +60,6 @@ module.exports = function staticController(req, res, next) {
60
60
  });
61
61
  }
62
62
 
63
- // @TODO: See renderer/secure for more context.
64
- _.each(response.data, function (data) {
65
- renderer.secure(req, data);
66
- });
67
-
68
63
  renderer.renderer(req, res, renderer.formatResponse.entries(response));
69
64
  })
70
65
  .catch(renderer.handleError(next));
@@ -1,4 +1,4 @@
1
- const debug = require('@tryghost/debug')('routing');
1
+ const debug = require('@tryghost/debug')('frontend:routing');
2
2
  const _ = require('lodash');
3
3
  const StaticRoutesRouter = require('./StaticRoutesRouter');
4
4
  const StaticPagesRouter = require('./StaticPagesRouter');
@@ -13,10 +13,12 @@ const UnsubscribeRouter = require('./UnsubscribeRouter');
13
13
  const events = require('../../../server/lib/common/events');
14
14
 
15
15
  class RouterManager {
16
- constructor({registry, defaultApiVersion = 'v4'}) {
16
+ constructor({registry}) {
17
17
  this.registry = registry;
18
- this.defaultApiVersion = defaultApiVersion;
19
18
  this.siteRouter = null;
19
+ /**
20
+ * @type {URLService}
21
+ */
20
22
  this.urlService = null;
21
23
  }
22
24
 
@@ -52,24 +54,20 @@ class RouterManager {
52
54
  }
53
55
 
54
56
  /**
55
- * @description The `init` function will return the wrapped parent express router and will start creating all
56
- * routers if you pass the option "start: true".
57
+ * The `init` function will return the wrapped parent express router and will start creating all
58
+ * routers if you pass the option "start: true".
57
59
  *
58
60
  * CASES:
59
61
  * - if Ghost starts, it will first init the site app with the wrapper router and then call `start`
60
62
  * separately, because it could be that your blog goes into maintenance mode
61
63
  * - if you change your route settings, we will re-initialize routing
62
64
  *
63
- * @param {Object} options
64
- * @param {Boolean} [options.start] - flag controlling if the frontend Routes should be reinitialized
65
- * @param {String} options.apiVersion - API version frontend Routes should communicate through
66
- * @param {Object} options.routerSettings - JSON configuration to build frontend Routes
67
- * @param {Object} options.urlService - service providing resource URL utility functions such as owns, getUrlByResourceId, and getResourceById
68
- * @returns {ExpressRouter}
65
+ * @param {RouterConfig} options
66
+ * @returns {import('express').Router}
69
67
  */
70
- init({start = false, routerSettings, apiVersion, urlService}) {
68
+ init({routeSettings, urlService}) {
71
69
  this.urlService = urlService;
72
- debug('routing init', start, apiVersion, routerSettings);
70
+ debug('routing init', routeSettings);
73
71
 
74
72
  this.registry.resetAllRouters();
75
73
  this.registry.resetAllRoutes();
@@ -81,9 +79,8 @@ class RouterManager {
81
79
  this.siteRouter = new ParentRouter('SiteRouter');
82
80
  this.registry.setRouter('siteRouter', this.siteRouter);
83
81
 
84
- if (start) {
85
- apiVersion = apiVersion || this.defaultApiVersion;
86
- this.start(apiVersion, routerSettings);
82
+ if (routeSettings) {
83
+ this.start(routeSettings);
87
84
  }
88
85
 
89
86
  return this.siteRouter.router();
@@ -102,12 +99,11 @@ class RouterManager {
102
99
  * 5. Static Pages: Weaker than collections, because we first try to find a post slug and fallback to lookup a static page.
103
100
  * 6. Internal Apps: Weakest
104
101
  *
105
- * @param {string} apiVersion
106
102
  * @param {object} routerSettings
107
103
  */
108
- start(apiVersion, routerSettings) {
109
- debug('routing start', apiVersion, routerSettings);
110
- const RESOURCE_CONFIG = require(`./config/${apiVersion}`);
104
+ start(routerSettings) {
105
+ debug('routing start', routerSettings);
106
+ const RESOURCE_CONFIG = require(`./config`);
111
107
 
112
108
  const unsubscribeRouter = new UnsubscribeRouter();
113
109
  this.siteRouter.mountRouter(unsubscribeRouter.router());
@@ -190,3 +186,25 @@ class RouterManager {
190
186
  }
191
187
 
192
188
  module.exports = RouterManager;
189
+
190
+ /**
191
+ * @typedef {Object} RouterConfig
192
+ * @property {RouteSettings} [routeSettings] - JSON config representing routes
193
+ * @property {URLService} urlService - service providing resource URL utility functions such as owns, getUrlByResourceId, and getResourceById
194
+ */
195
+
196
+ /**
197
+ * @typedef {Object} RouteSettings
198
+ * @property {Object} routes
199
+ * @property {Object} collections
200
+ * @property {Object} taxonomies
201
+ */
202
+
203
+ /**
204
+ * @typedef {Object} URLService
205
+ * @property {Function} owns
206
+ * @property {Function} getUrlByResourceId
207
+ * @property {Function} getResourceById
208
+ * @property {Function} onRouterAddedType
209
+ * @property {Function} onRouterUpdated
210
+ */
@@ -17,10 +17,10 @@ const generateTags = function generateTags(data) {
17
17
  return [];
18
18
  };
19
19
 
20
- const generateItem = function generateItem(post, secure) {
20
+ const generateItem = function generateItem(post) {
21
21
  const cheerio = require('cheerio');
22
22
 
23
- const itemUrl = routerManager.getUrlByResourceId(post.id, {secure, absolute: true});
23
+ const itemUrl = routerManager.getUrlByResourceId(post.id, {absolute: true});
24
24
  const htmlContent = cheerio.load(post.html || '');
25
25
  const item = {
26
26
  title: post.title,
@@ -35,7 +35,7 @@ const generateItem = function generateItem(post, secure) {
35
35
  };
36
36
 
37
37
  if (post.feature_image) {
38
- const imageUrl = urlUtils.urlFor('image', {image: post.feature_image, secure}, true);
38
+ const imageUrl = urlUtils.urlFor('image', {image: post.feature_image}, true);
39
39
 
40
40
  // Add a media content tag
41
41
  item.custom_elements.push({
@@ -67,17 +67,15 @@ const generateItem = function generateItem(post, secure) {
67
67
  * Data is an object which contains the res.locals + results from fetching a collection, but without related data.
68
68
  *
69
69
  * @param {string} baseUrl
70
- * @param {{title, description, safeVersion, secure, posts}} data
70
+ * @param {{title, description, safeVersion, posts}} data
71
71
  */
72
72
  const generateFeed = function generateFeed(baseUrl, data) {
73
- const {secure} = data;
74
-
75
73
  const feed = new RSS({
76
74
  title: data.title,
77
75
  description: data.description,
78
76
  generator: 'Ghost ' + data.safeVersion,
79
- feed_url: urlUtils.urlFor({relativeUrl: baseUrl, secure}, true),
80
- site_url: urlUtils.urlFor('home', {secure}, true),
77
+ feed_url: urlUtils.urlFor({relativeUrl: baseUrl}, true),
78
+ site_url: urlUtils.urlFor('home', true),
81
79
  image_url: urlUtils.urlFor({relativeUrl: 'favicon.png'}, true),
82
80
  ttl: '60',
83
81
  custom_namespaces: {
@@ -88,7 +86,7 @@ const generateFeed = function generateFeed(baseUrl, data) {
88
86
 
89
87
  return data.posts.reduce((feedPromise, post) => {
90
88
  return feedPromise.then(() => {
91
- const item = generateItem(post, secure);
89
+ const item = generateItem(post);
92
90
  return feed.item(item);
93
91
  });
94
92
  }, Promise.resolve()).then(() => {
@@ -15,7 +15,6 @@ const join = require('path').join;
15
15
 
16
16
  const _ = require('lodash');
17
17
  const themeConfig = require('./config');
18
- const themeEngines = require('./engines');
19
18
  const config = require('../../../shared/config');
20
19
  const engine = require('./engine');
21
20
  const themeI18n = require('./i18n');
@@ -53,9 +52,6 @@ class ActiveTheme {
53
52
  // Create a theme config object
54
53
  this._config = themeConfig.create(this._packageInfo);
55
54
 
56
- // Create a theme engines object
57
- this._engines = themeEngines.create(this._packageInfo);
58
-
59
55
  this.initI18n();
60
56
  }
61
57
 
@@ -95,10 +91,6 @@ class ActiveTheme {
95
91
  return this._config[key];
96
92
  }
97
93
 
98
- engine(key) {
99
- return this._engines[key];
100
- }
101
-
102
94
  /**
103
95
  *
104
96
  * @param {object} options
@@ -1,6 +1,4 @@
1
1
  {
2
2
  "posts_per_page": 5,
3
- "card_assets": {
4
- "exclude": ["bookmark", "gallery"]
5
- }
3
+ "card_assets": true
6
4
  }
@@ -1,6 +1,5 @@
1
1
  module.exports = [
2
2
  require('./ensure-active-theme'),
3
3
  require('./update-global-template-options'),
4
- require('./update-local-template-data'),
5
4
  require('./update-local-template-options')
6
5
  ];
@@ -1,64 +1,10 @@
1
1
  const hbs = require('../engine');
2
2
  const urlUtils = require('../../../../shared/url-utils');
3
- const {api} = require('../../proxy');
4
3
  const settingsCache = require('../../../../shared/settings-cache');
5
4
  const customThemeSettingsCache = require('../../../../shared/custom-theme-settings-cache');
6
5
  const labs = require('../../../../shared/labs');
7
6
  const activeTheme = require('../active');
8
7
 
9
- function calculateLegacyPriceData(products) {
10
- const defaultPrice = {
11
- amount: 0,
12
- currency: 'usd',
13
- interval: 'year',
14
- nickname: ''
15
- };
16
-
17
- function makePriceObject(price) {
18
- const numberAmount = 0 + price.amount;
19
- const dollarAmount = numberAmount ? Math.round(numberAmount / 100) : 0;
20
- return {
21
- valueOf() {
22
- return dollarAmount;
23
- },
24
- amount: numberAmount,
25
- currency: price.currency,
26
- nickname: price.name,
27
- interval: price.interval
28
- };
29
- }
30
-
31
- const defaultProduct = products.find((product) => {
32
- return product.type === 'paid';
33
- }) || {};
34
-
35
- const monthlyPrice = makePriceObject(defaultProduct.monthly_price || defaultPrice);
36
-
37
- const yearlyPrice = makePriceObject(defaultProduct.yearly_price || defaultPrice);
38
-
39
- const priceData = {
40
- monthly: monthlyPrice,
41
- yearly: yearlyPrice,
42
- currency: monthlyPrice ? monthlyPrice.currency : defaultPrice.currency
43
- };
44
-
45
- return priceData;
46
- }
47
-
48
- async function getProductAndPricesData() {
49
- try {
50
- const page = await api.canary.productsPublic.browse({
51
- include: ['monthly_price', 'yearly_price', 'benefits'],
52
- limit: 'all',
53
- filter: 'active:true'
54
- });
55
-
56
- return page.products;
57
- } catch (err) {
58
- return [];
59
- }
60
- }
61
-
62
8
  function getSiteData() {
63
9
  let siteData = settingsCache.getPublic();
64
10
 
@@ -85,29 +31,14 @@ async function updateGlobalTemplateOptions(req, res, next) {
85
31
  image_sizes: activeTheme.get().config('image_sizes')
86
32
  };
87
33
  const themeSettingsData = customThemeSettingsCache.getAll();
88
- const productData = await getProductAndPricesData();
89
- const priceData = calculateLegacyPriceData(productData);
90
-
91
- let products = null;
92
- let product = null;
93
- if (productData.length === 1) {
94
- product = productData[0];
95
- } else {
96
- products = productData;
97
- }
98
34
 
99
35
  // @TODO: only do this if something changed?
100
- // @TODO: remove blog in a major where we are happy to break more themes
101
36
  {
102
37
  hbs.updateTemplateOptions({
103
38
  data: {
104
- blog: siteData,
105
39
  site: siteData,
106
40
  labs: labsData,
107
41
  config: themeData,
108
- price: priceData,
109
- product,
110
- products,
111
42
  custom: themeSettingsData
112
43
  }
113
44
  });
@@ -9,7 +9,7 @@ function updateLocalTemplateOptions(req, res, next) {
9
9
 
10
10
  // adjust @site.url for http/https based on the incoming request
11
11
  const siteData = {
12
- url: urlUtils.urlFor('home', {secure: req.secure, trailingSlash: false}, true)
12
+ url: urlUtils.urlFor('home', {trailingSlash: false}, true)
13
13
  };
14
14
 
15
15
  // @TODO: it would be nicer if this was proper middleware somehow...
@@ -34,17 +34,14 @@ function updateLocalTemplateOptions(req, res, next) {
34
34
  });
35
35
  }),
36
36
  paid: req.member.status !== 'free',
37
- status: req.member.status,
38
- products: req.member.products
37
+ status: req.member.status
39
38
  } : null;
40
39
 
41
40
  hbs.updateLocalTemplateOptions(res.locals, _.merge({}, localTemplateOptions, {
42
41
  data: {
43
42
  member: member,
44
43
  site: siteData,
45
- custom: customData,
46
- // @deprecated: a gscan warning for @blog was added before 3.0 which replaced it with @site
47
- blog: siteData
44
+ custom: customData
48
45
  }
49
46
  }));
50
47