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
@@ -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')) {
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
 
@@ -5,17 +5,24 @@ const themeEngine = require('../../services/theme-engine');
5
5
  const express = require('../../../shared/express');
6
6
 
7
7
  function isDeniedFile(file) {
8
- const deniedFileTypes = ['.hbs', '.md', '.json'];
8
+ const deniedFileTypes = ['.hbs', '.md', '.json', '.lock', '.log'];
9
+ const deniedFiles = ['gulpfile.js', 'gruntfile.js'];
10
+
9
11
  const ext = path.extname(file);
12
+ const base = path.basename(file);
10
13
 
11
- return deniedFileTypes.includes(ext);
14
+ return deniedFiles.includes(base) || deniedFileTypes.includes(ext);
12
15
  }
13
16
 
14
17
  function isAllowedFile(file) {
15
18
  const allowedFiles = ['manifest.json'];
19
+ const allowedPath = '/assets/';
20
+ const alwaysDeny = ['.hbs'];
21
+
22
+ const ext = path.extname(file);
16
23
  const base = path.basename(file);
17
24
 
18
- return allowedFiles.includes(base);
25
+ return allowedFiles.includes(base) || (file.startsWith(allowedPath) && !alwaysDeny.includes(ext));
19
26
  }
20
27
 
21
28
  function forwardToExpressStatic(req, res, next) {
@@ -25,14 +32,15 @@ function forwardToExpressStatic(req, res, next) {
25
32
 
26
33
  const configMaxAge = config.get('caching:theme:maxAge');
27
34
 
28
- express.static(themeEngine.getActive().path,
29
- {maxAge: (configMaxAge || configMaxAge === 0) ? configMaxAge : constants.ONE_YEAR_MS}
35
+ express.static(themeEngine.getActive().path, {
36
+ maxAge: (configMaxAge || configMaxAge === 0) ? configMaxAge : constants.ONE_YEAR_MS
37
+ }
30
38
  )(req, res, next);
31
39
  }
32
40
 
33
41
  function staticTheme() {
34
42
  return function denyStatic(req, res, next) {
35
- if (!isAllowedFile(req.path) && isDeniedFile(req.path)) {
43
+ if (!isAllowedFile(req.path.toLowerCase()) && isDeniedFile(req.path.toLowerCase())) {
36
44
  return next();
37
45
  }
38
46