ghost 4.47.3 → 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 (661) 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-a2a47979b0b61d15a3914042a7b1cd20.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 +4 -24
  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 +21 -11
  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/index.js +4 -1
  132. package/core/server/data/exporter/table-lists.js +13 -15
  133. package/core/server/data/importer/importers/data/base.js +16 -7
  134. package/core/server/data/importer/importers/data/data-importer.js +38 -1
  135. package/core/server/data/importer/importers/data/newsletters.js +45 -0
  136. package/core/server/data/importer/importers/data/posts.js +40 -12
  137. package/core/server/data/importer/importers/data/products.js +68 -0
  138. package/core/server/data/importer/importers/data/settings.js +10 -10
  139. package/core/server/data/importer/importers/data/stripe-prices.js +59 -0
  140. package/core/server/data/importer/importers/data/stripe-products.js +61 -0
  141. package/core/server/data/migrations/utils/constants.js +3 -0
  142. package/core/server/data/migrations/utils/index.js +10 -0
  143. package/core/server/data/migrations/utils/migrations.js +156 -0
  144. package/core/server/data/migrations/utils/permissions.js +291 -0
  145. package/core/server/data/migrations/utils/schema.js +158 -0
  146. package/core/server/data/migrations/utils/settings.js +59 -0
  147. package/core/server/data/migrations/utils/tables.js +94 -0
  148. package/core/server/data/migrations/versions/1.25/01-final-v1.js +2 -0
  149. package/core/server/data/migrations/versions/1.25/02-noop.js +6 -0
  150. package/core/server/data/migrations/versions/2.37/01-final-v2.js +2 -0
  151. package/core/server/data/migrations/versions/3.41/01-final-v3.js +2 -0
  152. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +3 -9
  153. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +2 -11
  154. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +1 -1
  155. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +1 -1
  156. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +1 -1
  157. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +1 -1
  158. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +1 -1
  159. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +1 -1
  160. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +1 -1
  161. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +1 -1
  162. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +1 -1
  163. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +1 -1
  164. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +1 -1
  165. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +1 -1
  166. package/core/server/data/migrations/versions/5.0/2022-03-14-12-33-delete-duplicate-offer-redemptions.js +36 -0
  167. package/core/server/data/migrations/versions/5.0/2022-03-28-15-25-backfill-mrr-adjustments-for-offers.js +108 -0
  168. package/core/server/data/migrations/versions/5.0/2022-04-25-10-32-backfill-mrr-for-discounted-subscriptions.js +44 -0
  169. package/core/server/data/migrations/versions/5.0/2022-04-26-15-44-backfill-mrr-events-for-canceled-subscriptions.js +73 -0
  170. package/core/server/data/migrations/versions/5.0/2022-04-27-11-26-backfill-mrr-for-canceled-subscriptions.js +31 -0
  171. package/core/server/data/migrations/versions/5.0/2022-04-28-03-26-remove-author-id-column-from-posts-table.js +7 -0
  172. package/core/server/data/migrations/versions/5.0/2022-05-03-09-39-drop-nullable-subscribe-event-newsletter-id.js +4 -0
  173. package/core/server/data/migrations/versions/5.0/2022-05-04-15-24-map-existing-emails-to-default-newsletter.js +44 -0
  174. package/core/server/data/migrations/versions/5.0/2022-05-05-13-13-migrate-legacy-recipient-filters.js +30 -0
  175. package/core/server/data/migrations/versions/5.0/2022-05-05-13-29-add-newsletters-admin-integration-permission-roles.js +20 -0
  176. package/core/server/data/migrations/versions/5.0/2022-05-05-15-17-drop-oauth-table.js +3 -0
  177. package/core/server/data/migrations/versions/5.0/2022-05-06-08-16-cleanup-client-subscriber-permissions.js +68 -0
  178. package/core/server/data/migrations/versions/5.0/2022-05-06-13-22-add-frontend-integration.js +68 -0
  179. package/core/server/data/migrations/versions/5.0/2022-05-09-10-00-drop-members-subscribed-column.js +18 -0
  180. package/core/server/data/migrations/versions/5.0/2022-05-09-14-17-cleanup-invalid-users-status.js +17 -0
  181. package/core/server/data/migrations/versions/5.0/2022-05-10-08-33-drop-members-analytics-table.js +3 -0
  182. package/core/server/data/migrations/versions/5.0/2022-05-10-14-57-cleanup-invalid-posts-status.js +17 -0
  183. package/core/server/data/migrations/versions/5.0/2022-05-11-12-08-drop-webhooks-status-column.js +18 -0
  184. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +51 -0
  185. package/core/server/data/migrations/versions/5.0/2022-05-11-16-36-remove-unused-settings.js +54 -0
  186. package/core/server/data/migrations/versions/5.0/2022-05-12-10-29-add-newsletter-permissions-for-editors-and-authors.js +20 -0
  187. package/core/server/data/migrations/versions/5.0/2022-05-12-13-51-add-label-permissions-for-authors.js +12 -0
  188. package/core/server/data/migrations/versions/5.0/2022-05-13-11-38-drop-none-email-recipient-filter.js +28 -0
  189. package/core/server/data/migrations/versions/5.0/2022-05-21-00-00-regenerate-posts-html.js +70 -0
  190. package/core/server/data/schema/commands.js +35 -3
  191. package/core/server/data/schema/default-settings/default-settings.json +2 -159
  192. package/core/server/data/schema/fixtures/fixture-manager.js +11 -2
  193. package/core/server/data/schema/fixtures/fixtures.json +16 -7
  194. package/core/server/data/schema/schema.js +26 -38
  195. package/core/server/data/schema/validator.js +2 -0
  196. package/core/server/ghost-server.js +34 -64
  197. package/core/server/lib/image/gravatar.js +25 -9
  198. package/core/server/models/api-key.js +3 -26
  199. package/core/server/models/base/plugins/bulk-operations.js +14 -6
  200. package/core/server/models/integration.js +17 -0
  201. package/core/server/models/member.js +8 -4
  202. package/core/server/models/newsletter.js +27 -0
  203. package/core/server/models/post.js +30 -32
  204. package/core/server/models/relations/authors.js +74 -100
  205. package/core/server/models/settings.js +6 -2
  206. package/core/server/models/webhook.js +2 -1
  207. package/core/server/run-update-check.js +1 -1
  208. package/core/server/services/api-version-compatibility/index.js +24 -18
  209. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +23 -0
  210. package/core/server/services/api-version-compatibility/mw-version-rewrites.js +36 -0
  211. package/core/server/services/auth/api-key/admin.js +8 -7
  212. package/core/server/services/auth/passwordreset.js +3 -3
  213. package/core/server/services/auth/session/express-session.js +1 -1
  214. package/core/server/services/auth/session/index.js +1 -1
  215. package/core/server/services/auth/setup.js +8 -8
  216. package/core/server/services/bulk-email/bulk-email-processor.js +5 -1
  217. package/core/server/services/frontend-data-service/frontend-data-service.js +27 -0
  218. package/core/server/services/frontend-data-service/index.js +6 -0
  219. package/core/server/services/mail/index.js +14 -1
  220. package/core/server/services/mega/email-preview.js +14 -15
  221. package/core/server/services/mega/mega.js +36 -50
  222. package/core/server/services/mega/post-email-serializer.js +18 -28
  223. package/core/server/services/members/api.js +0 -3
  224. package/core/server/services/members/config.js +0 -49
  225. package/core/server/services/members/exporter/query.js +88 -0
  226. package/core/server/services/members/middleware.js +3 -135
  227. package/core/server/services/members/service.js +2 -29
  228. package/core/server/services/members/settings.js +3 -9
  229. package/core/server/services/newsletters/service.js +78 -10
  230. package/core/server/services/posts/post-scheduling-service.js +5 -17
  231. package/core/server/services/posts/posts-service.js +15 -62
  232. package/core/server/services/public-config/site.js +0 -6
  233. package/core/server/services/route-settings/index.js +0 -3
  234. package/core/server/services/route-settings/settings-loader.js +10 -34
  235. package/core/server/services/route-settings/validate.js +1 -7
  236. package/core/server/services/settings/index.js +1 -77
  237. package/core/server/services/settings/settings-service.js +184 -0
  238. package/core/server/services/themes/validate.js +1 -1
  239. package/core/server/services/url/Resources.js +1 -3
  240. package/core/server/services/url/UrlGenerator.js +1 -1
  241. package/core/server/services/url/UrlService.js +6 -20
  242. package/core/server/services/url/{configs/v2.js → config.js} +0 -0
  243. package/core/server/services/users.js +2 -2
  244. package/core/server/services/webhooks/listen.js +5 -2
  245. package/core/server/services/webhooks/serialize.js +6 -7
  246. package/core/server/services/webhooks/trigger.js +62 -47
  247. package/core/server/update-check.js +1 -1
  248. package/core/server/web/admin/app.js +1 -1
  249. package/core/server/web/admin/views/default-prod.html +4 -4
  250. package/core/server/web/admin/views/default.html +4 -4
  251. package/core/server/web/api/app.js +3 -15
  252. package/core/server/web/api/canary/admin/app.js +1 -1
  253. package/core/server/web/api/canary/admin/middleware.js +3 -1
  254. package/core/server/web/api/canary/admin/routes.js +7 -23
  255. package/core/server/web/api/canary/content/app.js +2 -3
  256. package/core/server/web/api/canary/content/routes.js +5 -4
  257. package/core/server/web/members/app.js +5 -4
  258. package/core/server/web/parent/backend.js +0 -1
  259. package/core/server/web/parent/frontend.js +5 -6
  260. package/core/server/web/parent/middleware/ghost-locals.js +0 -3
  261. package/core/shared/config/defaults.json +5 -2
  262. package/core/shared/config/overrides.json +1 -27
  263. package/core/shared/html-to-plaintext.js +74 -10
  264. package/core/shared/labs.js +4 -8
  265. package/core/shared/settings-cache/cache.js +38 -4
  266. package/core/shared/settings-cache/public.js +13 -7
  267. package/core/shared/url-utils.js +0 -2
  268. package/ghost.js +6 -0
  269. package/package.json +66 -64
  270. package/yarn.lock +751 -1295
  271. package/core/built/assets/ghost-dark-c94ae212747200ca4bafc37cfb0714d8.css +0 -1
  272. package/core/built/assets/ghost.min-4084931bc22e794fe3722139050a80b3.css +0 -1
  273. package/core/frontend/helpers/author.js +0 -41
  274. package/core/frontend/helpers/products.js +0 -65
  275. package/core/frontend/services/rendering/secure.js +0 -19
  276. package/core/frontend/services/routing/config/canary.js +0 -61
  277. package/core/frontend/services/routing/config/v2.js +0 -54
  278. package/core/frontend/services/routing/config/v3.js +0 -54
  279. package/core/frontend/services/theme-engine/engines/create.js +0 -45
  280. package/core/frontend/services/theme-engine/engines/index.js +0 -5
  281. package/core/frontend/services/theme-engine/middleware/update-local-template-data.js +0 -9
  282. package/core/server/api/canary/products-public.js +0 -34
  283. package/core/server/api/canary/products.js +0 -116
  284. package/core/server/api/canary/utils/serializers/input/products.js +0 -28
  285. package/core/server/api/canary/utils/serializers/output/email-previews.js +0 -7
  286. package/core/server/api/canary/utils/serializers/output/products.js +0 -213
  287. package/core/server/api/v2/actions.js +0 -38
  288. package/core/server/api/v2/authentication.js +0 -191
  289. package/core/server/api/v2/authors-public.js +0 -69
  290. package/core/server/api/v2/config.js +0 -12
  291. package/core/server/api/v2/db.js +0 -120
  292. package/core/server/api/v2/images.js +0 -20
  293. package/core/server/api/v2/index.js +0 -147
  294. package/core/server/api/v2/integrations.js +0 -144
  295. package/core/server/api/v2/invites.js +0 -126
  296. package/core/server/api/v2/mail.js +0 -66
  297. package/core/server/api/v2/notifications.js +0 -96
  298. package/core/server/api/v2/oembed.js +0 -186
  299. package/core/server/api/v2/pages-public.js +0 -78
  300. package/core/server/api/v2/pages.js +0 -197
  301. package/core/server/api/v2/posts-public.js +0 -78
  302. package/core/server/api/v2/posts.js +0 -192
  303. package/core/server/api/v2/preview.js +0 -46
  304. package/core/server/api/v2/redirects.js +0 -28
  305. package/core/server/api/v2/roles.js +0 -19
  306. package/core/server/api/v2/schedules.js +0 -77
  307. package/core/server/api/v2/session.js +0 -70
  308. package/core/server/api/v2/settings-public.js +0 -17
  309. package/core/server/api/v2/settings.js +0 -195
  310. package/core/server/api/v2/site.js +0 -14
  311. package/core/server/api/v2/slack.js +0 -12
  312. package/core/server/api/v2/slugs.js +0 -51
  313. package/core/server/api/v2/tags-public.js +0 -71
  314. package/core/server/api/v2/tags.js +0 -159
  315. package/core/server/api/v2/themes.js +0 -133
  316. package/core/server/api/v2/users.js +0 -179
  317. package/core/server/api/v2/utils/index.js +0 -34
  318. package/core/server/api/v2/utils/permissions.js +0 -112
  319. package/core/server/api/v2/utils/serializers/index.js +0 -9
  320. package/core/server/api/v2/utils/serializers/input/db.js +0 -20
  321. package/core/server/api/v2/utils/serializers/input/index.js +0 -33
  322. package/core/server/api/v2/utils/serializers/input/integrations.js +0 -33
  323. package/core/server/api/v2/utils/serializers/input/pages.js +0 -203
  324. package/core/server/api/v2/utils/serializers/input/posts.js +0 -218
  325. package/core/server/api/v2/utils/serializers/input/settings.js +0 -152
  326. package/core/server/api/v2/utils/serializers/input/tags.js +0 -35
  327. package/core/server/api/v2/utils/serializers/input/users.js +0 -26
  328. package/core/server/api/v2/utils/serializers/input/utils/url.js +0 -71
  329. package/core/server/api/v2/utils/serializers/input/webhooks.js +0 -12
  330. package/core/server/api/v2/utils/serializers/output/actions.js +0 -13
  331. package/core/server/api/v2/utils/serializers/output/all.js +0 -25
  332. package/core/server/api/v2/utils/serializers/output/authentication.js +0 -68
  333. package/core/server/api/v2/utils/serializers/output/authors.js +0 -21
  334. package/core/server/api/v2/utils/serializers/output/config.js +0 -21
  335. package/core/server/api/v2/utils/serializers/output/db.js +0 -40
  336. package/core/server/api/v2/utils/serializers/output/images.js +0 -19
  337. package/core/server/api/v2/utils/serializers/output/index.js +0 -107
  338. package/core/server/api/v2/utils/serializers/output/integrations.js +0 -35
  339. package/core/server/api/v2/utils/serializers/output/invites.js +0 -24
  340. package/core/server/api/v2/utils/serializers/output/mail.js +0 -19
  341. package/core/server/api/v2/utils/serializers/output/notifications.js +0 -29
  342. package/core/server/api/v2/utils/serializers/output/oembed.js +0 -8
  343. package/core/server/api/v2/utils/serializers/output/pages.js +0 -26
  344. package/core/server/api/v2/utils/serializers/output/posts.js +0 -26
  345. package/core/server/api/v2/utils/serializers/output/preview.js +0 -9
  346. package/core/server/api/v2/utils/serializers/output/redirects.js +0 -5
  347. package/core/server/api/v2/utils/serializers/output/roles.js +0 -29
  348. package/core/server/api/v2/utils/serializers/output/schedules.js +0 -5
  349. package/core/server/api/v2/utils/serializers/output/settings.js +0 -61
  350. package/core/server/api/v2/utils/serializers/output/site.js +0 -16
  351. package/core/server/api/v2/utils/serializers/output/slugs.js +0 -11
  352. package/core/server/api/v2/utils/serializers/output/tags.js +0 -25
  353. package/core/server/api/v2/utils/serializers/output/themes.js +0 -25
  354. package/core/server/api/v2/utils/serializers/output/users.js +0 -45
  355. package/core/server/api/v2/utils/serializers/output/utils/clean.js +0 -174
  356. package/core/server/api/v2/utils/serializers/output/utils/date.js +0 -21
  357. package/core/server/api/v2/utils/serializers/output/utils/extra-attrs.js +0 -161
  358. package/core/server/api/v2/utils/serializers/output/utils/mapper.js +0 -136
  359. package/core/server/api/v2/utils/serializers/output/utils/post-gating.js +0 -29
  360. package/core/server/api/v2/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  361. package/core/server/api/v2/utils/serializers/output/utils/url.js +0 -67
  362. package/core/server/api/v2/utils/serializers/output/webhooks.js +0 -15
  363. package/core/server/api/v2/utils/validators/index.js +0 -9
  364. package/core/server/api/v2/utils/validators/input/images.js +0 -85
  365. package/core/server/api/v2/utils/validators/input/index.js +0 -45
  366. package/core/server/api/v2/utils/validators/input/invitations.js +0 -49
  367. package/core/server/api/v2/utils/validators/input/invites.js +0 -21
  368. package/core/server/api/v2/utils/validators/input/oembed.js +0 -17
  369. package/core/server/api/v2/utils/validators/input/pages.js +0 -46
  370. package/core/server/api/v2/utils/validators/input/passwordreset.js +0 -36
  371. package/core/server/api/v2/utils/validators/input/posts.js +0 -46
  372. package/core/server/api/v2/utils/validators/input/settings.js +0 -79
  373. package/core/server/api/v2/utils/validators/input/setup.js +0 -17
  374. package/core/server/api/v2/utils/validators/input/tags.js +0 -6
  375. package/core/server/api/v2/utils/validators/input/users.js +0 -21
  376. package/core/server/api/v2/utils/validators/output/index.js +0 -1
  377. package/core/server/api/v2/utils/validators/utils/json-schema.js +0 -17
  378. package/core/server/api/v2/webhooks.js +0 -163
  379. package/core/server/api/v3/authentication.js +0 -192
  380. package/core/server/api/v3/authors-public.js +0 -69
  381. package/core/server/api/v3/config.js +0 -12
  382. package/core/server/api/v3/db.js +0 -131
  383. package/core/server/api/v3/email-preview.js +0 -74
  384. package/core/server/api/v3/email.js +0 -65
  385. package/core/server/api/v3/identities.js +0 -36
  386. package/core/server/api/v3/images.js +0 -20
  387. package/core/server/api/v3/index.js +0 -179
  388. package/core/server/api/v3/integrations.js +0 -150
  389. package/core/server/api/v3/invites.js +0 -125
  390. package/core/server/api/v3/labels.js +0 -162
  391. package/core/server/api/v3/mail.js +0 -66
  392. package/core/server/api/v3/memberSigninUrls.js +0 -33
  393. package/core/server/api/v3/members.js +0 -412
  394. package/core/server/api/v3/membersStripeConnect.js +0 -29
  395. package/core/server/api/v3/notifications.js +0 -96
  396. package/core/server/api/v3/oembed.js +0 -23
  397. package/core/server/api/v3/pages-public.js +0 -77
  398. package/core/server/api/v3/pages.js +0 -199
  399. package/core/server/api/v3/posts-public.js +0 -76
  400. package/core/server/api/v3/posts.js +0 -200
  401. package/core/server/api/v3/preview.js +0 -44
  402. package/core/server/api/v3/redirects.js +0 -47
  403. package/core/server/api/v3/roles.js +0 -19
  404. package/core/server/api/v3/schedules.js +0 -77
  405. package/core/server/api/v3/session.js +0 -70
  406. package/core/server/api/v3/settings-public.js +0 -17
  407. package/core/server/api/v3/settings.js +0 -224
  408. package/core/server/api/v3/site.js +0 -14
  409. package/core/server/api/v3/slack.js +0 -12
  410. package/core/server/api/v3/slugs.js +0 -48
  411. package/core/server/api/v3/snippets.js +0 -115
  412. package/core/server/api/v3/tags-public.js +0 -71
  413. package/core/server/api/v3/tags.js +0 -159
  414. package/core/server/api/v3/themes.js +0 -131
  415. package/core/server/api/v3/users.js +0 -242
  416. package/core/server/api/v3/utils/index.js +0 -34
  417. package/core/server/api/v3/utils/permissions.js +0 -116
  418. package/core/server/api/v3/utils/serializers/index.js +0 -9
  419. package/core/server/api/v3/utils/serializers/input/authors.js +0 -31
  420. package/core/server/api/v3/utils/serializers/input/db.js +0 -20
  421. package/core/server/api/v3/utils/serializers/input/index.js +0 -41
  422. package/core/server/api/v3/utils/serializers/input/integrations.js +0 -33
  423. package/core/server/api/v3/utils/serializers/input/members.js +0 -62
  424. package/core/server/api/v3/utils/serializers/input/pages.js +0 -208
  425. package/core/server/api/v3/utils/serializers/input/posts.js +0 -242
  426. package/core/server/api/v3/utils/serializers/input/settings.js +0 -168
  427. package/core/server/api/v3/utils/serializers/input/tags.js +0 -42
  428. package/core/server/api/v3/utils/serializers/input/users.js +0 -26
  429. package/core/server/api/v3/utils/serializers/input/utils/slug-filter-order.js +0 -18
  430. package/core/server/api/v3/utils/serializers/input/utils/url.js +0 -71
  431. package/core/server/api/v3/utils/serializers/input/webhooks.js +0 -12
  432. package/core/server/api/v3/utils/serializers/output/actions.js +0 -13
  433. package/core/server/api/v3/utils/serializers/output/all.js +0 -25
  434. package/core/server/api/v3/utils/serializers/output/authentication.js +0 -69
  435. package/core/server/api/v3/utils/serializers/output/authors.js +0 -21
  436. package/core/server/api/v3/utils/serializers/output/config.js +0 -25
  437. package/core/server/api/v3/utils/serializers/output/db.js +0 -40
  438. package/core/server/api/v3/utils/serializers/output/email-preview.js +0 -7
  439. package/core/server/api/v3/utils/serializers/output/emails.js +0 -13
  440. package/core/server/api/v3/utils/serializers/output/identities.js +0 -7
  441. package/core/server/api/v3/utils/serializers/output/images.js +0 -19
  442. package/core/server/api/v3/utils/serializers/output/index.js +0 -135
  443. package/core/server/api/v3/utils/serializers/output/integrations.js +0 -35
  444. package/core/server/api/v3/utils/serializers/output/invites.js +0 -24
  445. package/core/server/api/v3/utils/serializers/output/labels.js +0 -25
  446. package/core/server/api/v3/utils/serializers/output/mail.js +0 -19
  447. package/core/server/api/v3/utils/serializers/output/member-signin_urls.js +0 -7
  448. package/core/server/api/v3/utils/serializers/output/members.js +0 -228
  449. package/core/server/api/v3/utils/serializers/output/notifications.js +0 -29
  450. package/core/server/api/v3/utils/serializers/output/oembed.js +0 -8
  451. package/core/server/api/v3/utils/serializers/output/pages.js +0 -26
  452. package/core/server/api/v3/utils/serializers/output/posts.js +0 -26
  453. package/core/server/api/v3/utils/serializers/output/preview.js +0 -10
  454. package/core/server/api/v3/utils/serializers/output/redirects.js +0 -5
  455. package/core/server/api/v3/utils/serializers/output/roles.js +0 -29
  456. package/core/server/api/v3/utils/serializers/output/schedules.js +0 -5
  457. package/core/server/api/v3/utils/serializers/output/settings.js +0 -65
  458. package/core/server/api/v3/utils/serializers/output/site.js +0 -19
  459. package/core/server/api/v3/utils/serializers/output/slugs.js +0 -11
  460. package/core/server/api/v3/utils/serializers/output/snippets.js +0 -97
  461. package/core/server/api/v3/utils/serializers/output/tags.js +0 -25
  462. package/core/server/api/v3/utils/serializers/output/themes.js +0 -25
  463. package/core/server/api/v3/utils/serializers/output/users.js +0 -74
  464. package/core/server/api/v3/utils/serializers/output/utils/clean.js +0 -166
  465. package/core/server/api/v3/utils/serializers/output/utils/date.js +0 -21
  466. package/core/server/api/v3/utils/serializers/output/utils/extra-attrs.js +0 -174
  467. package/core/server/api/v3/utils/serializers/output/utils/mapper.js +0 -197
  468. package/core/server/api/v3/utils/serializers/output/utils/post-gating.js +0 -39
  469. package/core/server/api/v3/utils/serializers/output/utils/settings-type-group-mapper.js +0 -24
  470. package/core/server/api/v3/utils/serializers/output/utils/url.js +0 -67
  471. package/core/server/api/v3/utils/serializers/output/webhooks.js +0 -15
  472. package/core/server/api/v3/utils/validators/index.js +0 -9
  473. package/core/server/api/v3/utils/validators/input/images.js +0 -85
  474. package/core/server/api/v3/utils/validators/input/index.js +0 -61
  475. package/core/server/api/v3/utils/validators/input/invitations.js +0 -49
  476. package/core/server/api/v3/utils/validators/input/invites.js +0 -21
  477. package/core/server/api/v3/utils/validators/input/labels.js +0 -6
  478. package/core/server/api/v3/utils/validators/input/members.js +0 -6
  479. package/core/server/api/v3/utils/validators/input/oembed.js +0 -17
  480. package/core/server/api/v3/utils/validators/input/pages.js +0 -46
  481. package/core/server/api/v3/utils/validators/input/passwordreset.js +0 -36
  482. package/core/server/api/v3/utils/validators/input/posts.js +0 -46
  483. package/core/server/api/v3/utils/validators/input/settings.js +0 -89
  484. package/core/server/api/v3/utils/validators/input/setup.js +0 -17
  485. package/core/server/api/v3/utils/validators/input/snippets.js +0 -6
  486. package/core/server/api/v3/utils/validators/input/tags.js +0 -6
  487. package/core/server/api/v3/utils/validators/input/users.js +0 -22
  488. package/core/server/api/v3/utils/validators/input/webhooks.js +0 -27
  489. package/core/server/api/v3/utils/validators/output/index.js +0 -1
  490. package/core/server/api/v3/utils/validators/utils/json-schema.js +0 -17
  491. package/core/server/api/v3/webhooks.js +0 -130
  492. package/core/server/data/migrations/utils.js +0 -571
  493. package/core/server/data/migrations/versions/1.13/1-custom-template-post.js +0 -7
  494. package/core/server/data/migrations/versions/1.13/2-theme-permissions.js +0 -58
  495. package/core/server/data/migrations/versions/1.18/1-add-webhooks-table.js +0 -2
  496. package/core/server/data/migrations/versions/1.19/1-webhook-permissions.js +0 -31
  497. package/core/server/data/migrations/versions/1.20/1-remove-settings-keys.js +0 -65
  498. package/core/server/data/migrations/versions/1.21/1-add-contributor-role.js +0 -58
  499. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DDL.js +0 -2
  500. package/core/server/data/migrations/versions/1.22/1-multiple-authors-DML.js +0 -63
  501. package/core/server/data/migrations/versions/1.25/1-update-koenig-beta-html.js +0 -70
  502. package/core/server/data/migrations/versions/1.25/2-demo-post.js +0 -55
  503. package/core/server/data/migrations/versions/1.3/1-post-excerpt.js +0 -7
  504. package/core/server/data/migrations/versions/1.4/1-codeinjection-post.js +0 -14
  505. package/core/server/data/migrations/versions/1.5/1-og-twitter-post.js +0 -34
  506. package/core/server/data/migrations/versions/1.7/1-add-backup-client.js +0 -10
  507. package/core/server/data/migrations/versions/1.9/1-add-permissions-redirect.js +0 -23
  508. package/core/server/data/migrations/versions/2.0/1-rename-amp-column.js +0 -44
  509. package/core/server/data/migrations/versions/2.0/2-update-posts.js +0 -7
  510. package/core/server/data/migrations/versions/2.0/3-remove-koenig-labs.js +0 -42
  511. package/core/server/data/migrations/versions/2.0/4-permalink-setting.js +0 -85
  512. package/core/server/data/migrations/versions/2.0/5-remove-demo-post.js +0 -85
  513. package/core/server/data/migrations/versions/2.0/6-replace-fixture-posts.js +0 -10
  514. package/core/server/data/migrations/versions/2.13/1-remove-empty-strings.js +0 -5
  515. package/core/server/data/migrations/versions/2.14/1-add-actions-table.js +0 -2
  516. package/core/server/data/migrations/versions/2.14/2-add-actions-permissions.js +0 -12
  517. package/core/server/data/migrations/versions/2.15/1-add-type-column-to-integrations.js +0 -8
  518. package/core/server/data/migrations/versions/2.15/2-insert-zapier-integration.js +0 -69
  519. package/core/server/data/migrations/versions/2.16/1-add-members-perrmissions.js +0 -1
  520. package/core/server/data/migrations/versions/2.17/1-normalize-settings.js +0 -74
  521. package/core/server/data/migrations/versions/2.17/2-posts-add-canonical-url.js +0 -7
  522. package/core/server/data/migrations/versions/2.18/1-restore-settings-from-backup.js +0 -134
  523. package/core/server/data/migrations/versions/2.2/1-add-sessions-table.js +0 -2
  524. package/core/server/data/migrations/versions/2.2/2-add-integrations-and-api-key-tables.js +0 -6
  525. package/core/server/data/migrations/versions/2.2/3-insert-admin-integration-role.js +0 -83
  526. package/core/server/data/migrations/versions/2.2/4-insert-integration-and-api-key-permissions.js +0 -77
  527. package/core/server/data/migrations/versions/2.2/5-add-mobiledoc-revisions-table.js +0 -2
  528. package/core/server/data/migrations/versions/2.21/1-update-editor-permissions.js +0 -28
  529. package/core/server/data/migrations/versions/2.22/1-add-member-permissions-to-roles.js +0 -47
  530. package/core/server/data/migrations/versions/2.27/1-insert-ghost-db-backup-role.js +0 -83
  531. package/core/server/data/migrations/versions/2.27/2-insert-db-backup-integration.js +0 -69
  532. package/core/server/data/migrations/versions/2.27/3-add-subdirectory-to-relative-canonical-urls.js +0 -100
  533. package/core/server/data/migrations/versions/2.28/1-add-db-backup-content-permission.js +0 -9
  534. package/core/server/data/migrations/versions/2.28/2-add-db-backup-content-permission-to-roles.js +0 -15
  535. package/core/server/data/migrations/versions/2.28/3-insert-ghost-scheduler-role.js +0 -84
  536. package/core/server/data/migrations/versions/2.28/4-insert-scheduler-integration.js +0 -69
  537. package/core/server/data/migrations/versions/2.28/5-add-scheduler-permission-to-roles.js +0 -23
  538. package/core/server/data/migrations/versions/2.28/6-add-type-column.js +0 -6
  539. package/core/server/data/migrations/versions/2.28/7-populate-type-column.js +0 -6
  540. package/core/server/data/migrations/versions/2.28/8-remove-page-column.js +0 -6
  541. package/core/server/data/migrations/versions/2.29/1-add-post-page-column.js +0 -20
  542. package/core/server/data/migrations/versions/2.29/2-populate-post-page-column.js +0 -98
  543. package/core/server/data/migrations/versions/2.29/3-remove-page-type-column.js +0 -15
  544. package/core/server/data/migrations/versions/2.3/1-add-webhook-columns.js +0 -45
  545. package/core/server/data/migrations/versions/2.3/2-add-webhook-edit-permission.js +0 -9
  546. package/core/server/data/migrations/versions/2.31/1-remove-name-and-password-from-members-table.js +0 -15
  547. package/core/server/data/migrations/versions/2.32/01-add-members-stripe-customers-table.js +0 -4
  548. package/core/server/data/migrations/versions/2.32/02-add-name-to-members-table.js +0 -7
  549. package/core/server/data/migrations/versions/2.33/01-correct-members-stripe-customers-table.js +0 -37
  550. package/core/server/data/migrations/versions/2.34/01-add-stripe-customers-subscriptions-table.js +0 -2
  551. package/core/server/data/migrations/versions/2.34/02-add-email-to-members-stripe-customers-table.js +0 -7
  552. package/core/server/data/migrations/versions/2.34/03-add-name-to-members-stripe-customers-table.js +0 -7
  553. package/core/server/data/migrations/versions/2.35/01-add-note-to-members-table.js +0 -7
  554. package/core/server/data/migrations/versions/2.37/01-add-self-signup-and-from address-to-members-settings.js +0 -67
  555. package/core/server/data/migrations/versions/2.6/1-add-webhook-permission-roles.js +0 -31
  556. package/core/server/data/migrations/versions/2.8/1-add-members-table.js +0 -2
  557. package/core/server/data/migrations/versions/3.0/01-remove-user-ghost-auth-columns.js +0 -14
  558. package/core/server/data/migrations/versions/3.0/02-drop-token-auth-tables.js +0 -31
  559. package/core/server/data/migrations/versions/3.0/03-drop-client-auth-tables.js +0 -35
  560. package/core/server/data/migrations/versions/3.0/04-add-posts-meta-table.js +0 -2
  561. package/core/server/data/migrations/versions/3.0/05-populate-posts-meta-table.js +0 -83
  562. package/core/server/data/migrations/versions/3.0/06-remove-posts-meta-columns.js +0 -44
  563. package/core/server/data/migrations/versions/3.0/07-add-posts-type-column.js +0 -8
  564. package/core/server/data/migrations/versions/3.0/08-populate-posts-type-column.js +0 -94
  565. package/core/server/data/migrations/versions/3.0/09-remove-posts-page-column.js +0 -7
  566. package/core/server/data/migrations/versions/3.0/10-remove-empty-strings.js +0 -81
  567. package/core/server/data/migrations/versions/3.0/11-update-posts-html.js +0 -7
  568. package/core/server/data/migrations/versions/3.0/12-populate-members-table-from-subscribers.js +0 -54
  569. package/core/server/data/migrations/versions/3.0/13-drop-subscribers-table.js +0 -34
  570. package/core/server/data/migrations/versions/3.0/14-remove-subscribers-flag.js +0 -24
  571. package/core/server/data/migrations/versions/3.1/01-add-send-email-when-published-to-posts.js +0 -7
  572. package/core/server/data/migrations/versions/3.1/02-add-email-subject-to-posts-meta.js +0 -7
  573. package/core/server/data/migrations/versions/3.1/03-add-email-preview-permissions.js +0 -18
  574. package/core/server/data/migrations/versions/3.1/04-add-subscribed-flag-to-members.js +0 -7
  575. package/core/server/data/migrations/versions/3.1/05-add-emails-table.js +0 -2
  576. package/core/server/data/migrations/versions/3.1/06-add-email-permissions.js +0 -15
  577. package/core/server/data/migrations/versions/3.1/07-add-uuid-field-to-members.js +0 -8
  578. package/core/server/data/migrations/versions/3.1/08-add-uuid-values-to-members.js +0 -23
  579. package/core/server/data/migrations/versions/3.1/09-add-further-email-permissions.js +0 -25
  580. package/core/server/data/migrations/versions/3.1/10-add-email-error-data-column.js +0 -8
  581. package/core/server/data/migrations/versions/3.11/01-remove-broken-complimentary-plan-from-members-settings.js +0 -68
  582. package/core/server/data/migrations/versions/3.12/01-add-identity-permission.js +0 -7
  583. package/core/server/data/migrations/versions/3.12/02-remove-legacy-is-paid-flag-from-settings.js +0 -93
  584. package/core/server/data/migrations/versions/3.18/01-add-email-preview-permissions-to-roles.js +0 -39
  585. package/core/server/data/migrations/versions/3.18/02-add-members_stripe_connect-auth-permissions.js +0 -7
  586. package/core/server/data/migrations/versions/3.19/01-update-member-from-email-address.js +0 -91
  587. package/core/server/data/migrations/versions/3.2/01-add-cancel-at-period-end-to-subscriptions.js +0 -7
  588. package/core/server/data/migrations/versions/3.22/01-removed-legacy-values-from-settings-table.js +0 -65
  589. package/core/server/data/migrations/versions/3.22/02-settings-key-renames.js +0 -90
  590. package/core/server/data/migrations/versions/3.22/03-add-group-and-flags-to-settings.js +0 -15
  591. package/core/server/data/migrations/versions/3.22/04-populate-settings-groups-and-flags.js +0 -194
  592. package/core/server/data/migrations/versions/3.22/05-migrate-members-subscription-settings.js +0 -182
  593. package/core/server/data/migrations/versions/3.22/06-migrate-stripe-connect-settings.js +0 -132
  594. package/core/server/data/migrations/versions/3.22/07-update-type-for-settings.js +0 -137
  595. package/core/server/data/migrations/versions/3.23/01-migrate-bulk-email-settings.js +0 -65
  596. package/core/server/data/migrations/versions/3.23/02-remove-bulk-email-settings.js +0 -48
  597. package/core/server/data/migrations/versions/3.23/03-update-portal-button-setting.js +0 -24
  598. package/core/server/data/migrations/versions/3.23/04-add-meta-columns-to-tags-table.js +0 -54
  599. package/core/server/data/migrations/versions/3.24/01-populate-group-for-new-portal-settings.js +0 -38
  600. package/core/server/data/migrations/versions/3.25/01-add-members-stripe-webhook-settings.js +0 -22
  601. package/core/server/data/migrations/versions/3.26/01-add-amp-gtag-id-setting.js +0 -20
  602. package/core/server/data/migrations/versions/3.29/01-remove-duplicate-subscriptions.js +0 -53
  603. package/core/server/data/migrations/versions/3.29/02-remove-duplicate-customers.js +0 -53
  604. package/core/server/data/migrations/versions/3.29/03-remove-orphaned-customers.js +0 -35
  605. package/core/server/data/migrations/versions/3.29/04-remove-orphaned-subscriptions.js +0 -35
  606. package/core/server/data/migrations/versions/3.29/05-add-member-constraints.js +0 -177
  607. package/core/server/data/migrations/versions/3.30/01-add-member-signin-url-permission-roles.js +0 -8
  608. package/core/server/data/migrations/versions/3.32/01-add-member-support-address-setting.js +0 -27
  609. package/core/server/data/migrations/versions/3.32/02-add-member-reply-address-setting.js +0 -20
  610. package/core/server/data/migrations/versions/3.32/03-add-routes-hash-setting.js +0 -20
  611. package/core/server/data/migrations/versions/3.33/01-add-email-recipients-tables.js +0 -8
  612. package/core/server/data/migrations/versions/3.34/01-add-tokens-table.js +0 -2
  613. package/core/server/data/migrations/versions/3.35/01-add-address-columns-to-emails-table.js +0 -14
  614. package/core/server/data/migrations/versions/3.36/01-add-snippets-table.js +0 -2
  615. package/core/server/data/migrations/versions/3.36/02-add-snippets-permissions.js +0 -56
  616. package/core/server/data/migrations/versions/3.37/01-update-portal-button-setting.js +0 -30
  617. package/core/server/data/migrations/versions/3.38/01-add-email-recipient-filter-column.js +0 -8
  618. package/core/server/data/migrations/versions/3.38/02-populate-email-recipient-filter-column.js +0 -34
  619. package/core/server/data/migrations/versions/3.38/03-add-recipient-filter-column.js +0 -8
  620. package/core/server/data/migrations/versions/3.38/04-populate-recipient-filter-column.js +0 -49
  621. package/core/server/data/migrations/versions/3.38/05-add-emails-track-opens-column.js +0 -7
  622. package/core/server/data/migrations/versions/3.38/06-add-newsletter-settings.js +0 -16
  623. package/core/server/data/migrations/versions/3.38/07-migrate-newsletter-settings-from-config.js +0 -48
  624. package/core/server/data/migrations/versions/3.38/08-repopulate-send-email-when-published-down-migration.js +0 -25
  625. package/core/server/data/migrations/versions/3.38/09-remove-send-email-when-published-column.js +0 -7
  626. package/core/server/data/migrations/versions/3.39/01-add-members-signup-redirect-settings.js +0 -16
  627. package/core/server/data/migrations/versions/3.39/02-add-user-id-to-api-keys-table.js +0 -7
  628. package/core/server/data/migrations/versions/3.39/03-add-email-track-opens-setting.js +0 -16
  629. package/core/server/data/migrations/versions/3.39/04-add-cancellation-reason-column.js +0 -7
  630. package/core/server/data/migrations/versions/3.39/05-remove-unused-columns-on-emails.js +0 -14
  631. package/core/server/data/migrations/versions/3.39/06-add-email-recipient-index.js +0 -58
  632. package/core/server/data/migrations/versions/3.39/07-add-email-recipients-event-timestamps.js +0 -19
  633. package/core/server/data/migrations/versions/3.39/08-add-email-stats-columns.js +0 -22
  634. package/core/server/data/migrations/versions/3.40/01-add-members-email-open-rate-column.js +0 -8
  635. package/core/server/data/migrations/versions/3.40/02-add members-email-aggregation-columns.js +0 -16
  636. package/core/server/data/migrations/versions/3.40/03-populate-members-email-counts.js +0 -15
  637. package/core/server/data/migrations/versions/3.41/01-add-firstpromoter-settings.js +0 -16
  638. package/core/server/data/migrations/versions/3.6/1-add-labels-table.js +0 -2
  639. package/core/server/data/migrations/versions/3.6/2-add-members-labels-table.js +0 -2
  640. package/core/server/data/migrations/versions/3.6/3-add-labels-permissions.js +0 -47
  641. package/core/server/data/migrations/versions/3.7/01-fix-incorrect-member-labels-foreign-keys.js +0 -46
  642. package/core/server/data/migrations/versions/3.8/01-add-geolocation-to-members.js +0 -7
  643. package/core/server/data/migrations/versions/3.9/01-add-member-sigin-url-permissions.js +0 -7
  644. package/core/server/services/mail/utils.js +0 -34
  645. package/core/server/services/url/configs/canary.js +0 -143
  646. package/core/server/services/url/configs/v3.js +0 -141
  647. package/core/server/services/url/configs/v4.js +0 -143
  648. package/core/server/web/api/v2/admin/app.js +0 -43
  649. package/core/server/web/api/v2/admin/middleware.js +0 -85
  650. package/core/server/web/api/v2/admin/routes.js +0 -200
  651. package/core/server/web/api/v2/content/app.js +0 -38
  652. package/core/server/web/api/v2/content/middleware.js +0 -23
  653. package/core/server/web/api/v2/content/routes.js +0 -37
  654. package/core/server/web/api/v3/admin/app.js +0 -43
  655. package/core/server/web/api/v3/admin/middleware.js +0 -89
  656. package/core/server/web/api/v3/admin/routes.js +0 -267
  657. package/core/server/web/api/v3/content/app.js +0 -38
  658. package/core/server/web/api/v3/content/middleware.js +0 -23
  659. package/core/server/web/api/v3/content/routes.js +0 -37
  660. package/core/server/web/oauth/app.js +0 -153
  661. 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