ghost 6.54.0 → 6.55.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 (327) hide show
  1. package/components/ghost-storage-base-3.0.0.tgz +0 -0
  2. package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
  3. package/components/tryghost-adapter-base-scheduling-0.2.0.tgz +0 -0
  4. package/components/tryghost-adapter-base-sso-0.1.1.tgz +0 -0
  5. package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
  6. package/components/tryghost-kg-default-cards-10.3.3.tgz +0 -0
  7. package/core/boot.js +3 -6
  8. package/core/built/admin/assets/{account-migration-DLvVA5yq.js → account-migration-sjHLx5dy.js} +1 -1
  9. package/core/built/admin/assets/activitypub/{account-migration-DHbZcxGM.js → account-migration-DoYXtnZ8.js} +4 -4
  10. package/core/built/admin/assets/activitypub/activitypub.js +2 -2
  11. package/core/built/admin/assets/activitypub/{bluesky-sharing-zfxUey_L.js → bluesky-sharing-Bxeh6MKW.js} +4 -4
  12. package/core/built/admin/assets/activitypub/{dist-BqkDUQxJ2.js → dist-ByFmDSNP2.js} +64 -63
  13. package/core/built/admin/assets/activitypub/{dist-Ba_QxHHl.js → dist-D8sFfdpC.js} +2 -2
  14. package/core/built/admin/assets/activitypub/{domain-CmwSZLHK.js → domain-CWueFW6q.js} +5 -5
  15. package/core/built/admin/assets/activitypub/{edit-profile-CXdwNmVG.js → edit-profile-BGxPU7N5.js} +3 -3
  16. package/core/built/admin/assets/activitypub/{explore-DfbjzGM1.js → explore-DBK-u0Ch.js} +3 -3
  17. package/core/built/admin/assets/activitypub/{feed-DSEBJOqf.js → feed-Bcir5RQZ.js} +3 -3
  18. package/core/built/admin/assets/activitypub/{field-CY7XVcx6.js → field-BV-CIT3d.js} +2 -2
  19. package/core/built/admin/assets/activitypub/{inbox-DtQ0kytT.js → inbox-yC0nfvzl.js} +4 -4
  20. package/core/built/admin/assets/activitypub/{label-Dw96GQ7u.js → label-DTRS9TDk.js} +2 -2
  21. package/core/built/admin/assets/activitypub/layout-qx-bUL1k.js +1 -0
  22. package/core/built/admin/assets/activitypub/{moderation-Dg_-I-8C.js → moderation-Dwl9t0pb.js} +4 -4
  23. package/core/built/admin/assets/activitypub/{note-Cy1-uKMY.js → note-B-zKsZ7r.js} +3 -3
  24. package/core/built/admin/assets/activitypub/{notifications-B_fvoLIM.js → notifications-DjJZD54t.js} +3 -3
  25. package/core/built/admin/assets/activitypub/{preferences-ByJseZp6.js → preferences-CoU8vs6d.js} +6 -6
  26. package/core/built/admin/assets/activitypub/{profile-BFtbnIjz.js → profile-BAsaJekx.js} +6 -6
  27. package/core/built/admin/assets/activitypub/{routes-Dh3xXfce.js → routes-CLH3OVTP.js} +28 -25
  28. package/core/built/admin/assets/activitypub/{settings-DTgqJPxM.js → settings-DA6pNJ-Q.js} +3 -3
  29. package/core/built/admin/assets/activitypub/{site-CdL9ZLqm.js → site-CQD42Pw5.js} +2 -2
  30. package/core/built/admin/assets/activitypub/{tabs-ogqwoBlb.js → tabs-Cg0saow1.js} +7 -7
  31. package/core/built/admin/assets/activitypub/{use-reply-chain-data-CxonteFD.js → use-reply-chain-data-Br4aOWOh.js} +2 -2
  32. package/core/built/admin/assets/audience-DjEWNhp3.js +1 -0
  33. package/core/built/admin/assets/{automated-emails-Cn87L5Md.js → automated-emails-DRy7qY-J.js} +2 -2
  34. package/core/built/admin/assets/{automations-BP_aHamJ.js → automations-Bx3VcFIL.js} +1 -1
  35. package/core/built/admin/assets/{automations-B7-y3dXt.js → automations-DhKeS_U5.js} +1 -1
  36. package/core/built/admin/assets/{bluesky-sharing-Bh36XPh4.js → bluesky-sharing-ClMd0-Ft.js} +1 -1
  37. package/core/built/admin/assets/{breadcrumb-D34YWnaw.js → breadcrumb-BD0U2ygg.js} +1 -1
  38. package/core/built/admin/assets/{chart-helpers-DbklaJw9.js → chart-helpers-fjQKRVyY.js} +1 -1
  39. package/core/built/admin/assets/checkbox-CWa28lgO.js +1 -0
  40. package/core/built/admin/assets/{chunk.962.b73442b07be930bb5d85.js → chunk.211.6f7328d63c41536451b3.js} +737 -559
  41. package/core/built/admin/assets/{chunk.962.b73442b07be930bb5d85.js.LICENSE.txt → chunk.211.6f7328d63c41536451b3.js.LICENSE.txt} +2 -0
  42. package/core/built/admin/assets/{chunk.589.096f4d0bb775e5229aa9.js → chunk.481.6c7395a49484bb4583aa.js} +41 -38
  43. package/core/built/admin/assets/chunk.524.cffd399783a519e404a9.js +25 -0
  44. package/core/built/admin/assets/chunk.582.eebf0d0b2d202bb746a5.js +27 -0
  45. package/core/built/admin/assets/code-editor-view-CCr0rBWS.js +1 -0
  46. package/core/built/admin/assets/comments-DyUSMUdj.js +1 -0
  47. package/core/built/admin/assets/{date-range-select-B5vSsrpx.js → date-range-select-BFp58EMk.js} +1 -1
  48. package/core/built/admin/assets/{disabled-sources-indicator-NkOIoMue.js → disabled-sources-indicator-CUxMfiPa.js} +1 -1
  49. package/core/built/admin/assets/dist-2Tnz2Yfq.js +1 -0
  50. package/core/built/admin/assets/dist-CjY-f5Z1.js +1 -0
  51. package/core/built/admin/assets/dist-DIC8yz5C.js +1 -0
  52. package/core/built/admin/assets/domain-C0bV2UV8.js +1 -0
  53. package/core/built/admin/assets/dropzone-DlK-K2DQ.js +5 -0
  54. package/core/built/admin/assets/{edit-profile-rvDGrS8J.js → edit-profile-BKT-REJw.js} +1 -1
  55. package/core/built/admin/assets/editor-Dp865O-4.js +8 -0
  56. package/core/built/admin/assets/{explore-BZAZOg5X.js → explore-ClUpJZOp.js} +1 -1
  57. package/core/built/admin/assets/{feed-CFV8xDw9.js → feed-DF92dUMP.js} +1 -1
  58. package/core/built/admin/assets/field-Do7lieBA.js +1 -0
  59. package/core/built/admin/assets/{filter-sources-Fx8wiYYw.js → filter-sources-BV2rnpfA.js} +1 -1
  60. package/core/built/admin/assets/filters-CUXJ2Nm9.js +1 -0
  61. package/core/built/admin/assets/{filters-CGX_pf2N.js → filters-DfbIWc_l.js} +1 -1
  62. package/core/built/admin/assets/{ghost-3063eae29e6c9cc6d6e7131928a27da0.css → ghost-a9c788f6f0b1ea6cf0f14ca4b13f4496.css} +1 -1
  63. package/core/built/admin/assets/{ghost-b1dce91ad3232cc259ee5fbbf9526243.js → ghost-c4057474943effc568c5659ccc4909d7.js} +407 -406
  64. package/core/built/admin/assets/{ghost-dark-c8d0ab7f515b2010c173e23e9b32ea8a.css → ghost-dark-db36d795d21c61426837df40af270966.css} +1 -1
  65. package/core/built/admin/assets/gift-link-modal-f9VIMNDv.js +1 -0
  66. package/core/built/admin/assets/{gift-links-nBxJjZiQ.js → gift-links-CsUhefWG.js} +1 -1
  67. package/core/built/admin/assets/growth-B3I6gNLm.js +1 -0
  68. package/core/built/admin/assets/{Growth-CSaHoSVD.js → growth-CVw1My4S.js} +2 -2
  69. package/core/built/admin/assets/{hooks-BApwwBE0.js → hooks-CixO01lL.js} +1 -1
  70. package/core/built/admin/assets/{inbox-BRp1_aaC.js → inbox-CFBSu4Ed.js} +12 -12
  71. package/core/built/admin/assets/index-9Cw8z3rA.css +1 -0
  72. package/core/built/admin/assets/index-BGG7NckO.js +67 -0
  73. package/core/built/admin/assets/input-group-BSgG_lVw.js +1 -0
  74. package/core/built/admin/assets/input-surface-BpAjZXY5.js +1 -0
  75. package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +974 -937
  76. package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +28 -28
  77. package/core/built/admin/assets/koenig-lexical/style.css +1 -1
  78. package/core/built/admin/assets/{koenig-lexical-CM7UFNdL.js → koenig-lexical-f8vHRYvz.js} +28 -28
  79. package/core/built/admin/assets/{kpi-card-BrGH6FsT.js → kpi-card-DSap9rAy.js} +1 -1
  80. package/core/built/admin/assets/{kpi-card-CIGyijjx.js → kpi-card-DU0rn9Cj.js} +1 -1
  81. package/core/built/admin/assets/{kpi-helpers-_HRRsklE.js → kpi-helpers-Dz33AV6h.js} +1 -1
  82. package/core/built/admin/assets/{kpi-tabs-BSvh9eoq.js → kpi-tabs-BtTTrKvJ.js} +1 -1
  83. package/core/built/admin/assets/{label-BOR9XdKl.js → label-DS8Mi6G5.js} +1 -1
  84. package/core/built/admin/assets/label-picker-1DvSuLA1.js +1 -0
  85. package/core/built/admin/assets/labels-CDSUt4J_.js +1 -0
  86. package/core/built/admin/assets/layout-yQEi2qDM.js +1 -0
  87. package/core/built/admin/assets/{link-helpers-tOlxmuH5.js → link-helpers-7EYqvvHs.js} +1 -1
  88. package/core/built/admin/assets/member-custom-fields-yOMHyAg9.js +1 -0
  89. package/core/built/admin/assets/member-detail-BAq7gDaa.js +1 -0
  90. package/core/built/admin/assets/members-CQpVFJu4.js +10 -0
  91. package/core/built/admin/assets/modals-ReORvWnu.js +31 -0
  92. package/core/built/admin/assets/moderation-DySbgyUS.js +1 -0
  93. package/core/built/admin/assets/newsletter-CJQvtHqN.js +1 -0
  94. package/core/built/admin/assets/{Newsletters-C5cs6FGo.js → newsletters-B3QQXfGT.js} +1 -1
  95. package/core/built/admin/assets/{newsletters-D1jbtV-h.js → newsletters-BXJbJgA-.js} +1 -1
  96. package/core/built/admin/assets/note-C8kxrz6w.js +1 -0
  97. package/core/built/admin/assets/notifications-CgtSfX7t.js +1 -0
  98. package/core/built/admin/assets/{offers-CrY6nSRR.js → offers-DEniVRD5.js} +1 -1
  99. package/core/built/admin/assets/onboarding-route-4qtziA9d.js +1 -0
  100. package/core/built/admin/assets/overview-Bf2sbznq.js +1 -0
  101. package/core/built/admin/assets/overview-CBfePxcr.js +1 -0
  102. package/core/built/admin/assets/{page-header-C0jVxtS8.js → page-header-B3Wb9Jqv.js} +1 -1
  103. package/core/built/admin/assets/{pages-BbNWFcGj.js → pages-B4goRPUn.js} +1 -1
  104. package/core/built/admin/assets/{post-analytics-Iw7dk1mT.js → post-analytics-We-ko5Cb.js} +1 -1
  105. package/core/built/admin/assets/post-analytics-header-Bmc9su6q.js +1 -0
  106. package/core/built/admin/assets/post-analytics-provider-B6UynTGb.js +1 -0
  107. package/core/built/admin/assets/{post-share-modal-DBfKl2GZ.js → post-share-modal-DFfO93_0.js} +1 -1
  108. package/core/built/admin/assets/{posts-EWpZIjkr.js → posts-DhXE7b6r.js} +1 -1
  109. package/core/built/admin/assets/{preferences-D4EANGoc.js → preferences-DJPfHEGu.js} +2 -2
  110. package/core/built/admin/assets/profile-DqBQp-gT.js +1 -0
  111. package/core/built/admin/assets/{referrers-BCfFYSHc.js → referrers-pmJT4k3-.js} +1 -1
  112. package/core/built/admin/assets/select-C5_xEt5b.js +1 -0
  113. package/core/built/admin/assets/settings-BwiVIXau.js +4 -0
  114. package/core/built/admin/assets/{settings-Bz3RZRmE.js → settings-WXNeWyU1.js} +1 -1
  115. package/core/built/admin/assets/shade-app-B3heOAfz-CGXQwWeO.js +3 -0
  116. package/core/built/admin/assets/{share-modal-CkdTTMJd.js → share-modal-DsgW3wbg.js} +1 -1
  117. package/core/built/admin/assets/social-urls-BQPFEk1_.js +8 -0
  118. package/core/built/admin/assets/{sort-button-DZp9Y2r1.js → sort-button-Bb_FCl7e.js} +1 -1
  119. package/core/built/admin/assets/{source-icon-CHr9qJ2Y.js → source-icon-BeaRxUn9.js} +1 -1
  120. package/core/built/admin/assets/{stats-DGoXZxWE.js → stats-Bjj_kmJ1.js} +1 -1
  121. package/core/built/admin/assets/{stats-view-D2-1L0ms.js → stats-view-BxPbW6K1.js} +1 -1
  122. package/core/built/admin/assets/{step-1-RdahbwyG.js → step-1-B1e3-1F8.js} +1 -1
  123. package/core/built/admin/assets/{step-2-D83PeRwd.js → step-2-C5WaeBJo.js} +1 -1
  124. package/core/built/admin/assets/{step-3-p_Op4wv4.js → step-3-B46iVPwu.js} +2 -2
  125. package/core/built/admin/assets/switch-z5Y6Uzt6.js +1 -0
  126. package/core/built/admin/assets/{table-B8LgTQJZ.js → table-CB-4_HBJ.js} +1 -1
  127. package/core/built/admin/assets/tabs-CCEgKYzq.js +1 -0
  128. package/core/built/admin/assets/{tags-B4l891z2.js → tags-Cg2VJGmG.js} +1 -1
  129. package/core/built/admin/assets/textarea-Bjccvh_E.js +1 -0
  130. package/core/built/admin/assets/{tiers-BgYLWRJv.js → tiers-DYsa4DCo.js} +1 -1
  131. package/core/built/admin/assets/{toggle-group-DNXDkAwf.js → toggle-group-b3IlxvhV.js} +1 -1
  132. package/core/built/admin/assets/{topic-filter-DZGjEcz3.js → topic-filter-DAFT87tQ.js} +1 -1
  133. package/core/built/admin/assets/{use-analytics-data-CaT8RirX.js → use-analytics-data-S0FTd43s.js} +1 -1
  134. package/core/built/admin/assets/use-filter-params-Gpoq2E1L.js +1 -0
  135. package/core/built/admin/assets/{use-growth-stats-9Db2CuJe.js → use-growth-stats-CIaiHOVb.js} +1 -1
  136. package/core/built/admin/assets/{use-post-referrers-BV54YcQS.js → use-post-referrers-Cq2vBPrA.js} +1 -1
  137. package/core/built/admin/assets/{use-reply-chain-data-DuYZGDan.js → use-reply-chain-data-DBDRtGu-.js} +1 -1
  138. package/core/built/admin/assets/{use-simple-pagination-8fTua9Nt.js → use-simple-pagination-CjYNxdwe.js} +1 -1
  139. package/core/built/admin/assets/{use-tinybird-query-Dz156HvZ.js → use-tinybird-query-falHAtuK.js} +1 -1
  140. package/core/built/admin/assets/{use-tinybird-token-C9RUdL_n.js → use-tinybird-token-D7-8ND1y.js} +1 -1
  141. package/core/built/admin/assets/{users-CcSCQFcQ.js → users-Dkv8NQZe.js} +1 -1
  142. package/core/built/admin/assets/{virtual-list-BCvP0YF-.js → virtual-list-CvnC9zF2.js} +1 -1
  143. package/core/built/admin/assets/web-B_5GZRvH.js +1 -0
  144. package/core/built/admin/assets/web-jFYWCKDn.js +2 -0
  145. package/core/built/admin/index.html +14 -10
  146. package/core/frontend/services/proxy.js +10 -1
  147. package/core/frontend/services/routing/router-manager.js +14 -14
  148. package/core/frontend/services/routing/static-routes-router.js +8 -10
  149. package/core/server/adapters/storage/LocalFilesStorage.js +13 -11
  150. package/core/server/adapters/storage/LocalFilesStorage.ts +24 -0
  151. package/core/server/adapters/storage/LocalImagesStorage.js +14 -12
  152. package/core/server/adapters/storage/LocalImagesStorage.ts +24 -0
  153. package/core/server/adapters/storage/LocalMediaStorage.js +13 -11
  154. package/core/server/adapters/storage/LocalMediaStorage.ts +24 -0
  155. package/core/server/adapters/storage/LocalStorageBase.js +107 -167
  156. package/core/server/adapters/storage/LocalStorageBase.ts +342 -0
  157. package/core/server/adapters/storage/utils.js +36 -50
  158. package/core/server/adapters/storage/utils.ts +60 -0
  159. package/core/server/api/endpoints/automation-action-links.js +68 -0
  160. package/core/server/api/endpoints/automation-action-links.ts +46 -0
  161. package/core/server/api/endpoints/db.js +6 -0
  162. package/core/server/api/endpoints/index.js +4 -0
  163. package/core/server/api/endpoints/members.js +25 -28
  164. package/core/server/api/endpoints/pages.js +6 -1
  165. package/core/server/api/endpoints/posts.js +11 -2
  166. package/core/server/api/endpoints/settings.js +0 -2
  167. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +4 -1
  168. package/core/server/api/endpoints/utils/serializers/output/members.js +18 -87
  169. package/core/server/api/endpoints/utils/serializers/output/utils/url.js +11 -1
  170. package/core/server/data/exporter/export-filename.js +2 -1
  171. package/core/server/data/importer/importers/data/revue-subscriber-importer.js +6 -10
  172. package/core/server/data/importer/importers/json-to-html.js +24 -4
  173. package/core/server/data/migrations/versions/6.55/2026-07-27-11-25-44-add-to-hash-to-redirects.js +51 -0
  174. package/core/server/data/migrations/versions/6.55/2026-07-28-12-08-00-remove-routes-hash-from-settings.js +5 -0
  175. package/core/server/data/schema/commands.js +5 -0
  176. package/core/server/data/schema/default-settings/default-settings.json +0 -4
  177. package/core/server/data/schema/schema.js +5 -1
  178. package/core/server/lib/image/image-size.js +3 -17
  179. package/core/server/lib/image/image-utils.js +15 -1
  180. package/core/server/lib/request-external.js +1 -1
  181. package/core/server/models/user.js +46 -70
  182. package/core/server/services/auth/session/session-service.js +28 -1
  183. package/core/server/services/automations/automations-api.js +21 -6
  184. package/core/server/services/automations/automations-api.ts +25 -6
  185. package/core/server/services/automations/automations-repository.ts +19 -0
  186. package/core/server/services/automations/database-automations-repository.js +116 -28
  187. package/core/server/services/automations/database-automations-repository.ts +118 -9
  188. package/core/server/services/automations/database-date.js +10 -0
  189. package/core/server/services/automations/database-date.ts +5 -0
  190. package/core/server/services/automations/poll.js +5 -2
  191. package/core/server/services/automations/poll.ts +7 -2
  192. package/core/server/services/automations/scheduler-poll-time.js +40 -0
  193. package/core/server/services/automations/scheduler-poll-time.ts +38 -0
  194. package/core/server/services/automations/service.js +15 -3
  195. package/core/server/services/automations/service.ts +16 -3
  196. package/core/server/services/comments/comments-service-emails.js +14 -8
  197. package/core/server/services/comments/comments-service.js +9 -4
  198. package/core/server/services/email-rendering/partials/email-wrapper.hbs +3 -1
  199. package/core/server/services/email-service/email-service-wrapper.js +6 -1
  200. package/core/server/services/email-service/email-templates/partials/styles.hbs +8 -0
  201. package/core/server/services/email-service/newsletter-email-event-storage.js +41 -10
  202. package/core/server/services/lib/dynamic-redirect-manager.js +12 -3
  203. package/core/server/services/link-redirection/link-redirect-repository.js +41 -4
  204. package/core/server/services/link-redirection/link-redirect.js +2 -0
  205. package/core/server/services/link-redirection/link-redirect.ts +3 -1
  206. package/core/server/services/link-redirection/link-redirects-service.js +38 -2
  207. package/core/server/services/link-tracking/click-event.js +3 -0
  208. package/core/server/services/link-tracking/index.js +38 -6
  209. package/core/server/services/link-tracking/link-click-repository.js +30 -9
  210. package/core/server/services/link-tracking/link-click-tracking-service.js +44 -3
  211. package/core/server/services/member-attribution/outbound-link-tagger.js +3 -1
  212. package/core/server/services/member-welcome-emails/member-welcome-email-renderer.js +19 -4
  213. package/core/server/services/member-welcome-emails/service.js +11 -3
  214. package/core/server/services/members/{importer → import-export}/config.js +4 -9
  215. package/core/server/services/members/{importer → import-export}/config.ts +4 -9
  216. package/core/server/services/members/import-export/csv/formula.js +16 -0
  217. package/core/server/services/members/import-export/csv/formula.ts +14 -0
  218. package/core/server/services/members/import-export/csv/index.js +12 -0
  219. package/core/server/services/members/import-export/csv/index.ts +3 -0
  220. package/core/server/services/members/import-export/csv/parse.js +64 -0
  221. package/core/server/services/members/import-export/csv/parse.ts +69 -0
  222. package/core/server/services/members/import-export/csv/serialize.js +13 -0
  223. package/core/server/services/members/import-export/csv/serialize.ts +18 -0
  224. package/core/server/services/members/import-export/export/exporter.js +202 -0
  225. package/core/server/services/members/import-export/export/exporter.ts +325 -0
  226. package/core/server/services/members/import-export/import/completion-email.js +84 -0
  227. package/core/server/services/members/import-export/import/completion-email.ts +141 -0
  228. package/core/server/services/members/import-export/import/importer.js +297 -0
  229. package/core/server/services/members/import-export/import/importer.ts +468 -0
  230. package/core/server/services/members/import-export/import/reader.js +32 -0
  231. package/core/server/services/members/import-export/import/reader.ts +33 -0
  232. package/core/server/services/members/import-export/import/row.js +33 -0
  233. package/core/server/services/members/import-export/import/row.ts +52 -0
  234. package/core/server/services/members/import-export/import/spool.js +30 -0
  235. package/core/server/services/members/import-export/import/spool.ts +38 -0
  236. package/core/server/services/members/import-export/index.js +99 -0
  237. package/core/server/services/members/import-export/index.ts +137 -0
  238. package/core/server/services/members/members-api/controllers/router-controller.js +7 -0
  239. package/core/server/services/members/service.js +25 -20
  240. package/core/server/services/members-custom-fields/values-service.js +19 -7
  241. package/core/server/services/members-custom-fields/values-service.ts +19 -7
  242. package/core/server/services/mentions/service.js +5 -1
  243. package/core/server/services/posts/posts-exporter.js +6 -4
  244. package/core/server/services/posts/posts-service.js +2 -2
  245. package/core/server/services/route-settings/activation-bridge.js +59 -49
  246. package/core/server/services/route-settings/activation-bridge.ts +91 -51
  247. package/core/server/services/route-settings/dynamic-routing-service.js +22 -51
  248. package/core/server/services/route-settings/index.js +1 -16
  249. package/core/server/services/settings/settings-service.js +0 -18
  250. package/core/server/services/themes/storage.js +9 -0
  251. package/core/server/services/themes/theme-storage.js +1 -1
  252. package/core/server/services/url/url-service-facade.js +1 -1
  253. package/core/server/services/url/url-service-facade.ts +8 -1
  254. package/core/server/web/api/endpoints/admin/routes.js +1 -0
  255. package/core/shared/config/defaults.json +2 -1
  256. package/core/shared/express.js +6 -1
  257. package/core/shared/labs.js +2 -1
  258. package/package.json +11 -11
  259. package/pnpm-lock.yaml +18 -18
  260. package/pnpm-workspace.yaml +8 -7
  261. package/components/tryghost-adapter-base-scheduling-0.1.1.tgz +0 -0
  262. package/core/built/admin/assets/Overview-j4NaeUNm.js +0 -1
  263. package/core/built/admin/assets/Web-_fD935OX.js +0 -2
  264. package/core/built/admin/assets/activitypub/layout-IdVq3lRy.js +0 -1
  265. package/core/built/admin/assets/audience-BKRdsFmy.js +0 -1
  266. package/core/built/admin/assets/checkbox-DA4-1UiI.js +0 -1
  267. package/core/built/admin/assets/chunk.524.45e0875f41b71e46e849.js +0 -25
  268. package/core/built/admin/assets/chunk.582.51defd4b009f0de8d4d5.js +0 -27
  269. package/core/built/admin/assets/code-editor-view-BKBrkffZ.js +0 -1
  270. package/core/built/admin/assets/comments-CzVNIT8b.js +0 -1
  271. package/core/built/admin/assets/constants-c-JNF9c2.js +0 -1
  272. package/core/built/admin/assets/dist-CT46_f_J.js +0 -1
  273. package/core/built/admin/assets/domain-B7_n5nfx.js +0 -1
  274. package/core/built/admin/assets/dropzone-DcuJEEUf.js +0 -5
  275. package/core/built/admin/assets/editor-BCiIyFjm.js +0 -8
  276. package/core/built/admin/assets/field-BW-M2Zwp.js +0 -1
  277. package/core/built/admin/assets/filters-DtcXMZDU.js +0 -1
  278. package/core/built/admin/assets/gift-link-modal-Bk8qpnMw.js +0 -1
  279. package/core/built/admin/assets/growth-Ck2s3JjR.js +0 -1
  280. package/core/built/admin/assets/index-BBf502Wg.js +0 -69
  281. package/core/built/admin/assets/index-BCCZKxP2.css +0 -1
  282. package/core/built/admin/assets/input-group-DjuYnNCd.js +0 -1
  283. package/core/built/admin/assets/label-picker-BdNAWuUX.js +0 -1
  284. package/core/built/admin/assets/labels-Cyayfd-e.js +0 -1
  285. package/core/built/admin/assets/layout-Bw4GnxXp.js +0 -1
  286. package/core/built/admin/assets/member-custom-fields-DvFyamLu.js +0 -1
  287. package/core/built/admin/assets/member-detail-Cg2vTqvJ.js +0 -1
  288. package/core/built/admin/assets/members-DsPxYAVm.js +0 -10
  289. package/core/built/admin/assets/modals-Bf_fyvHZ.js +0 -31
  290. package/core/built/admin/assets/moderation-Dlp7M5sa.js +0 -1
  291. package/core/built/admin/assets/multi-select-combobox-CH1o8XXQ.js +0 -1
  292. package/core/built/admin/assets/newsletter-CQ5CAYUI.js +0 -1
  293. package/core/built/admin/assets/note-BrAZ7Z0o.js +0 -1
  294. package/core/built/admin/assets/notifications-BnbHLOPC.js +0 -1
  295. package/core/built/admin/assets/onboarding-route-eU146kuA.js +0 -1
  296. package/core/built/admin/assets/overview-BpbaK-xu.js +0 -1
  297. package/core/built/admin/assets/post-analytics-header-D9pJ4iNm.js +0 -1
  298. package/core/built/admin/assets/post-analytics-provider-BDqcfBor.js +0 -1
  299. package/core/built/admin/assets/profile-dJ44Bn_W.js +0 -1
  300. package/core/built/admin/assets/select--2uVN9_-.js +0 -1
  301. package/core/built/admin/assets/settings-SD9bxIpt.js +0 -4
  302. package/core/built/admin/assets/social-urls-BvFZwYcE.js +0 -8
  303. package/core/built/admin/assets/switch-qp518gFQ.js +0 -1
  304. package/core/built/admin/assets/tabs-D3ZOYkM7.js +0 -1
  305. package/core/built/admin/assets/textarea-CTlb3Uu6.js +0 -1
  306. package/core/built/admin/assets/use-filter-params-DeQ8sX4N.js +0 -1
  307. package/core/built/admin/assets/web-DTZnnUGr.js +0 -1
  308. package/core/server/services/mail/templates/newsletter.html +0 -876
  309. package/core/server/services/members/csv/index.js +0 -10
  310. package/core/server/services/members/csv/index.ts +0 -3
  311. package/core/server/services/members/csv/parse.js +0 -94
  312. package/core/server/services/members/csv/parse.ts +0 -111
  313. package/core/server/services/members/csv/types.js +0 -2
  314. package/core/server/services/members/csv/types.ts +0 -39
  315. package/core/server/services/members/csv/unparse.js +0 -69
  316. package/core/server/services/members/csv/unparse.ts +0 -79
  317. package/core/server/services/members/exporter/query.js +0 -233
  318. package/core/server/services/members/importer/index.js +0 -30
  319. package/core/server/services/members/importer/labels.js +0 -125
  320. package/core/server/services/members/importer/members-csv-importer.js +0 -520
  321. package/core/server/services/route-settings/default-settings-manager.js +0 -63
  322. package/core/server/services/route-settings/route-settings.js +0 -170
  323. package/core/server/services/route-settings/settings-loader.js +0 -60
  324. package/core/server/services/route-settings/settings-path-manager.js +0 -47
  325. package/core/server/services/route-settings/validate.js +0 -440
  326. /package/core/server/services/members/{importer → import-export/import}/email-template.js +0 -0
  327. /package/core/server/services/members/{importer/members-csv-importer-stripe-utils.js → import-export/import/stripe-utils.js} +0 -0
@@ -2,8 +2,8 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <link rel="stylesheet" href="./assets/vendor-3bf602dfa6463c3400ffd81697767274.css">
5
- <link rel="stylesheet" href="./assets/ghost-3063eae29e6c9cc6d6e7131928a27da0.css">
6
- <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%226.54%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%22293973f65e%22%2C%22activitypubFilename%22%3A%22activitypub.js%22%2C%22activitypubHash%22%3A%2201d9d91477%22%2C%22activitypubRemoteConfigUrl%22%3A%22%2F.ghost%2Factivitypub%2Fstable%2Fclient-config%22%7D">
5
+ <link rel="stylesheet" href="./assets/ghost-a9c788f6f0b1ea6cf0f14ca4b13f4496.css">
6
+ <meta name="ghost-admin/config/environment" content="%7B%22modulePrefix%22%3A%22ghost-admin%22%2C%22environment%22%3A%22production%22%2C%22editorUrl%22%3A%22%22%2C%22rootURL%22%3A%22%22%2C%22locationType%22%3A%22trailing-hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%2C%22Array%22%3Atrue%2C%22String%22%3Atrue%2C%22Function%22%3Afalse%7D%2C%22_APPLICATION_TEMPLATE_WRAPPER%22%3Afalse%2C%22_JQUERY_INTEGRATION%22%3Atrue%2C%22_TEMPLATE_ONLY_GLIMMER_COMPONENTS%22%3Atrue%7D%2C%22APP%22%3A%7B%22version%22%3A%226.55%22%2C%22name%22%3A%22ghost-admin%22%7D%2C%22ember-simple-auth%22%3A%7B%7D%2C%22%40sentry%2Fember%22%3A%7B%22disablePerformance%22%3Atrue%2C%22sentry%22%3A%7B%7D%7D%2C%22ember-cli-mirage%22%3A%7B%22usingProxy%22%3Afalse%2C%22useDefaultPassthroughs%22%3Atrue%7D%2C%22exportApplicationGlobal%22%3Afalse%2C%22ember-load%22%3A%7B%22loadingIndicatorClass%22%3A%22ember-load-indicator%22%7D%2C%22editorFilename%22%3A%22koenig-lexical.umd.js%22%2C%22editorHash%22%3A%22e35f1aa34a%22%2C%22activitypubFilename%22%3A%22activitypub.js%22%2C%22activitypubHash%22%3A%22d7e993cdd1%22%2C%22activitypubRemoteConfigUrl%22%3A%22%2F.ghost%2Factivitypub%2Fstable%2Fclient-config%22%7D">
7
7
 
8
8
  <meta charset="UTF-8" />
9
9
 
@@ -20,13 +20,13 @@
20
20
 
21
21
  <link rel="shortcut icon" href="./assets/favicon-C_q1KHzv.ico" />
22
22
  <link rel="apple-touch-icon" href="./assets/apple-touch-icon-DhO18_4B.png" />
23
- <script type="module" crossorigin src="./assets/index-BBf502Wg.js"></script>
23
+ <script type="module" crossorigin src="./assets/index-BGG7NckO.js"></script>
24
24
  <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-DAXXjFlN.js">
25
25
  <link rel="modulepreload" crossorigin href="./assets/react-Bb3IsNbi.js">
26
26
  <link rel="modulepreload" crossorigin href="./assets/jsx-runtime-DX3WBWVO.js">
27
27
  <link rel="modulepreload" crossorigin href="./assets/framework-provider-CmtnPXIT.js">
28
28
  <link rel="modulepreload" crossorigin href="./assets/dist-Ndy-PuGN.js">
29
- <link rel="modulepreload" crossorigin href="./assets/hooks-BApwwBE0.js">
29
+ <link rel="modulepreload" crossorigin href="./assets/hooks-CixO01lL.js">
30
30
  <link rel="modulepreload" crossorigin href="./assets/dist-DGzPJ_bO.js">
31
31
  <link rel="modulepreload" crossorigin href="./assets/dist-CQJY6SVY.js">
32
32
  <link rel="modulepreload" crossorigin href="./assets/dist-P_ohUlTi.js">
@@ -35,9 +35,13 @@
35
35
  <link rel="modulepreload" crossorigin href="./assets/chunk-KS7C4IRE-DG9HTHQ3.js">
36
36
  <link rel="modulepreload" crossorigin href="./assets/router-provider-C1R4AZ2o.js">
37
37
  <link rel="modulepreload" crossorigin href="./assets/text-DwtjwGkh.js">
38
+ <link rel="modulepreload" crossorigin href="./assets/shade-app-B3heOAfz-CGXQwWeO.js">
39
+ <link rel="modulepreload" crossorigin href="./assets/dist-CjY-f5Z1.js">
40
+ <link rel="modulepreload" crossorigin href="./assets/dist-2Tnz2Yfq.js">
41
+ <link rel="modulepreload" crossorigin href="./assets/input-surface-BpAjZXY5.js">
38
42
  <link rel="modulepreload" crossorigin href="./assets/update-queries-C4CnvJaW.js">
39
- <link rel="modulepreload" crossorigin href="./assets/users-CcSCQFcQ.js">
40
- <link rel="stylesheet" crossorigin href="./assets/index-BCCZKxP2.css">
43
+ <link rel="modulepreload" crossorigin href="./assets/users-Dkv8NQZe.js">
44
+ <link rel="stylesheet" crossorigin href="./assets/index-9Cw8z3rA.css">
41
45
  </head>
42
46
  <body class="react-admin">
43
47
  <div id="ember-alerts-wormhole"></div>
@@ -57,9 +61,9 @@
57
61
  <div id="ember-liquid-wormhole"></div>
58
62
  <div id="ember-notifications-wormhole"></div>
59
63
  <script src="./assets/vendor-25f0bb2b2de85265afdf33da79f14a44.js"></script>
60
- <script src="./assets/chunk.962.b73442b07be930bb5d85.js"></script>
61
- <script src="./assets/chunk.589.096f4d0bb775e5229aa9.js"></script>
62
- <script src="./assets/chunk.524.45e0875f41b71e46e849.js"></script>
63
- <script src="./assets/ghost-b1dce91ad3232cc259ee5fbbf9526243.js"></script>
64
+ <script src="./assets/chunk.211.6f7328d63c41536451b3.js"></script>
65
+ <script src="./assets/chunk.481.6c7395a49484bb4583aa.js"></script>
66
+ <script src="./assets/chunk.524.cffd399783a519e404a9.js"></script>
67
+ <script src="./assets/ghost-c4057474943effc568c5659ccc4909d7.js"></script>
64
68
  </body>
65
69
  </html>
@@ -16,6 +16,11 @@ const FRONTEND_SUBSCRIBABLE_EVENTS = ['site.changed', 'url.added', 'url.removed'
16
16
  // Require from the handlebars framework
17
17
  const {SafeString} = require('./handlebars');
18
18
 
19
+ // sanitize-html over DOMPurify here: DOMPurify needs a DOM, and jsdom costs
20
+ // ~116MB RSS to load. This module is on the boot path, so that was paid by
21
+ // every process — including ones that never render a caption.
22
+ const sanitizeHtml = require('sanitize-html');
23
+
19
24
  module.exports = {
20
25
  getFrontendKey: async () => {
21
26
  try {
@@ -44,7 +49,11 @@ module.exports = {
44
49
  (Array.isArray(data) ? data : [data]).forEach((resource) => {
45
50
  // feature_image_caption contains HTML, making it a SafeString spares theme devs from triple-curlies
46
51
  if (resource.feature_image_caption) {
47
- resource.feature_image_caption = new SafeString(resource.feature_image_caption);
52
+ const sanitizedCaption = sanitizeHtml(resource.feature_image_caption, {
53
+ allowedTags: ['a', 'b', 'i', 'span'],
54
+ allowedAttributes: {'*': ['href', 'style']}
55
+ });
56
+ resource.feature_image_caption = new SafeString(sanitizedCaption);
48
57
  }
49
58
 
50
59
  // some properties are extracted to local template data to force one way of using it
@@ -1,5 +1,4 @@
1
1
  const debug = require('@tryghost/debug')('frontend:routing');
2
- const _ = require('lodash');
3
2
  const StaticRoutesRouter = require('./static-routes-router');
4
3
  const StaticPagesRouter = require('./static-pages-router');
5
4
  const CollectionRouter = require('./collection-router');
@@ -111,30 +110,30 @@ class RouterManager {
111
110
  this.siteRouter.mountRouter(previewRouter.router());
112
111
  this.registry.setRouter('previewRouter', previewRouter);
113
112
 
114
- _.each(routerSettings.routes, (value, key) => {
115
- const staticRoutesRouter = new StaticRoutesRouter(key, value, this.routerCreated.bind(this));
113
+ for (const route of routerSettings.routes) {
114
+ const staticRoutesRouter = new StaticRoutesRouter(route.path, route, this.routerCreated.bind(this));
116
115
  this.siteRouter.mountRouter(staticRoutesRouter.router());
117
116
 
118
117
  this.registry.setRouter(staticRoutesRouter.identifier, staticRoutesRouter);
119
- });
118
+ }
120
119
 
121
- _.each(routerSettings.collections, (value, key) => {
122
- const collectionRouter = new CollectionRouter(key, value, RESOURCE_CONFIG, this.routerCreated.bind(this));
120
+ for (const collection of routerSettings.collections) {
121
+ const collectionRouter = new CollectionRouter(collection.path, collection, RESOURCE_CONFIG, this.routerCreated.bind(this));
123
122
  this.siteRouter.mountRouter(collectionRouter.router());
124
123
  this.registry.setRouter(collectionRouter.identifier, collectionRouter);
125
- });
124
+ }
126
125
 
127
126
  const staticPagesRouter = new StaticPagesRouter(RESOURCE_CONFIG, this.routerCreated.bind(this));
128
127
  this.siteRouter.mountRouter(staticPagesRouter.router());
129
128
 
130
129
  this.registry.setRouter('staticPagesRouter', staticPagesRouter);
131
130
 
132
- _.each(routerSettings.taxonomies, (value, key) => {
133
- const taxonomyRouter = new TaxonomyRouter(key, value, RESOURCE_CONFIG, this.routerCreated.bind(this));
131
+ for (const taxonomy of routerSettings.taxonomies) {
132
+ const taxonomyRouter = new TaxonomyRouter(taxonomy.key, taxonomy.permalink, RESOURCE_CONFIG, this.routerCreated.bind(this));
134
133
  this.siteRouter.mountRouter(taxonomyRouter.router());
135
134
 
136
135
  this.registry.setRouter(taxonomyRouter.identifier, taxonomyRouter);
137
- });
136
+ }
138
137
 
139
138
  const appRouter = new ParentRouter('AppsRouter');
140
139
  this.siteRouter.mountRouter(appRouter.router());
@@ -186,10 +185,11 @@ module.exports = RouterManager;
186
185
  */
187
186
 
188
187
  /**
189
- * @typedef {Object} RouteSettings
190
- * @property {Object} routes
191
- * @property {Object} collections
192
- * @property {Object} taxonomies
188
+ * The shape RouterManager consumes — produced by the activation bridge. This is
189
+ * a temporary reference into server code; when the bridge is removed (HKG-1898)
190
+ * it becomes the domain `RouteSettings` from @tryghost/adapter-base-route-settings.
191
+ *
192
+ * @typedef {import('../../../server/services/route-settings/activation-bridge').RouterSettings} RouteSettings
193
193
  */
194
194
 
195
195
  /**
@@ -30,12 +30,12 @@ class StaticRoutesRouter extends ParentRouter {
30
30
  this.limit = object.limit;
31
31
  this.order = object.order;
32
32
 
33
- this.controller = object.controller;
33
+ this.type = object.type;
34
34
 
35
35
  debug(this.route.value, this.templates, this.filter, this.data);
36
36
  this._registerChannelRoutes();
37
37
  } else {
38
- this.contentType = object.content_type;
38
+ this.contentType = object.contentType;
39
39
  debug(this.route.value, this.templates);
40
40
  this._registerStaticRoute();
41
41
  }
@@ -56,11 +56,11 @@ class StaticRoutesRouter extends ParentRouter {
56
56
  }
57
57
 
58
58
  // REGISTER: channel route
59
- this.mountRoute(this.route.value, controllers[this.controller]);
59
+ this.mountRoute(this.route.value, controllers[this.type]);
60
60
 
61
61
  // REGISTER: pagination
62
62
  this.router().param('page', middleware.pageParam);
63
- this.mountRoute(urlUtils.urlJoin(this.route.value, 'page', ':page(\\d+)'), controllers[this.controller]);
63
+ this.mountRoute(urlUtils.urlJoin(this.route.value, 'page', ':page(\\d+)'), controllers[this.type]);
64
64
 
65
65
  this.routerCreated(this);
66
66
  }
@@ -74,7 +74,7 @@ class StaticRoutesRouter extends ParentRouter {
74
74
  */
75
75
  _prepareChannelContext(req, res, next) {
76
76
  res.routerOptions = {
77
- type: this.controller,
77
+ type: this.type,
78
78
  name: this.routerName,
79
79
  context: [this.routerName],
80
80
  filter: this.filter,
@@ -131,11 +131,9 @@ class StaticRoutesRouter extends ParentRouter {
131
131
  * @returns {boolean}
132
132
  */
133
133
  isChannel(object) {
134
- if (object && object.controller && object.controller === 'channel') {
135
- return true;
136
- }
137
-
138
- return this.controller === 'channel';
134
+ // buildRouterSettings always sets `type` ('channel' | 'template') on
135
+ // every route, so a channel is simply `type === 'channel'`.
136
+ return object?.type === 'channel';
139
137
  }
140
138
  }
141
139
 
@@ -1,24 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
1
6
  // # Local File System Storage module
2
7
  // The (default) module for storing media, using the local file system
3
- const config = require('../../../shared/config');
4
- const urlUtils = require('../../../shared/url-utils').default;
5
- const LocalStorageBase = require('./LocalStorageBase');
6
-
8
+ const config_1 = __importDefault(require("../../../shared/config"));
9
+ const url_utils_1 = __importDefault(require("../../../shared/url-utils"));
10
+ const LocalStorageBase_1 = __importDefault(require("./LocalStorageBase"));
7
11
  const messages = {
8
12
  notFound: 'File not found',
9
13
  notFoundWithRef: 'File not found: {file}',
10
14
  cannotRead: 'Could not read File: {file}'
11
15
  };
12
-
13
- class LocalFilesStorage extends LocalStorageBase {
16
+ class LocalFilesStorage extends LocalStorageBase_1.default {
14
17
  constructor() {
15
18
  super({
16
- storagePath: config.getContentPath('files'),
17
- siteUrl: config.getSiteUrl(),
18
- staticFileURLPrefix: urlUtils.STATIC_FILES_URL_PREFIX,
19
+ storagePath: config_1.default.getContentPath('files'),
20
+ siteUrl: config_1.default.getSiteUrl(),
21
+ staticFileURLPrefix: url_utils_1.default.STATIC_FILES_URL_PREFIX,
19
22
  errorMessages: messages
20
23
  });
21
24
  }
22
25
  }
23
-
24
- module.exports = LocalFilesStorage;
26
+ exports.default = LocalFilesStorage;
@@ -0,0 +1,24 @@
1
+ // # Local File System Storage module
2
+ // The (default) module for storing media, using the local file system
3
+ import config from '../../../shared/config';
4
+ import urlUtils from '../../../shared/url-utils';
5
+ import LocalStorageBase from './LocalStorageBase';
6
+
7
+ const messages = {
8
+ notFound: 'File not found',
9
+ notFoundWithRef: 'File not found: {file}',
10
+ cannotRead: 'Could not read File: {file}'
11
+ };
12
+
13
+ class LocalFilesStorage extends LocalStorageBase {
14
+ constructor() {
15
+ super({
16
+ storagePath: config.getContentPath('files'),
17
+ siteUrl: config.getSiteUrl(),
18
+ staticFileURLPrefix: urlUtils.STATIC_FILES_URL_PREFIX,
19
+ errorMessages: messages
20
+ });
21
+ }
22
+ }
23
+
24
+ export default LocalFilesStorage;
@@ -1,24 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
1
6
  // # Local File System Image Storage module
2
7
  // The (default) module for storing images, using the local file system
3
- const config = require('../../../shared/config');
4
- const urlUtils = require('../../../shared/url-utils').default;
5
- const LocalStorageBase = require('./LocalStorageBase');
6
-
7
- let messages = {
8
+ const config_1 = __importDefault(require("../../../shared/config"));
9
+ const url_utils_1 = __importDefault(require("../../../shared/url-utils"));
10
+ const LocalStorageBase_1 = __importDefault(require("./LocalStorageBase"));
11
+ const messages = {
8
12
  notFound: 'Image not found',
9
13
  notFoundWithRef: 'Image not found: {file}',
10
14
  cannotRead: 'Could not read image: {file}'
11
15
  };
12
-
13
- class LocalImagesStorage extends LocalStorageBase {
16
+ class LocalImagesStorage extends LocalStorageBase_1.default {
14
17
  constructor() {
15
18
  super({
16
- storagePath: config.getContentPath('images'),
17
- staticFileURLPrefix: urlUtils.STATIC_IMAGE_URL_PREFIX,
18
- siteUrl: config.getSiteUrl(),
19
+ storagePath: config_1.default.getContentPath('images'),
20
+ staticFileURLPrefix: url_utils_1.default.STATIC_IMAGE_URL_PREFIX,
21
+ siteUrl: config_1.default.getSiteUrl(),
19
22
  errorMessages: messages
20
23
  });
21
24
  }
22
25
  }
23
-
24
- module.exports = LocalImagesStorage;
26
+ exports.default = LocalImagesStorage;
@@ -0,0 +1,24 @@
1
+ // # Local File System Image Storage module
2
+ // The (default) module for storing images, using the local file system
3
+ import config from '../../../shared/config';
4
+ import urlUtils from '../../../shared/url-utils';
5
+ import LocalStorageBase from './LocalStorageBase';
6
+
7
+ const messages = {
8
+ notFound: 'Image not found',
9
+ notFoundWithRef: 'Image not found: {file}',
10
+ cannotRead: 'Could not read image: {file}'
11
+ };
12
+
13
+ class LocalImagesStorage extends LocalStorageBase {
14
+ constructor() {
15
+ super({
16
+ storagePath: config.getContentPath('images'),
17
+ staticFileURLPrefix: urlUtils.STATIC_IMAGE_URL_PREFIX,
18
+ siteUrl: config.getSiteUrl(),
19
+ errorMessages: messages
20
+ });
21
+ }
22
+ }
23
+
24
+ export default LocalImagesStorage;
@@ -1,24 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
1
6
  // # Local File System Media Storage module
2
7
  // The (default) module for storing media, using the local file system
3
- const config = require('../../../shared/config');
4
- const urlUtils = require('../../../shared/url-utils').default;
5
- const LocalStorageBase = require('./LocalStorageBase');
6
-
8
+ const config_1 = __importDefault(require("../../../shared/config"));
9
+ const url_utils_1 = __importDefault(require("../../../shared/url-utils"));
10
+ const LocalStorageBase_1 = __importDefault(require("./LocalStorageBase"));
7
11
  const messages = {
8
12
  notFound: 'Media file not found',
9
13
  notFoundWithRef: 'Media file not found: {file}',
10
14
  cannotRead: 'Could not read media file: {file}'
11
15
  };
12
-
13
- class LocalMediaStorage extends LocalStorageBase {
16
+ class LocalMediaStorage extends LocalStorageBase_1.default {
14
17
  constructor() {
15
18
  super({
16
- storagePath: config.getContentPath('media'),
17
- staticFileURLPrefix: urlUtils.STATIC_MEDIA_URL_PREFIX,
18
- siteUrl: config.getSiteUrl(),
19
+ storagePath: config_1.default.getContentPath('media'),
20
+ staticFileURLPrefix: url_utils_1.default.STATIC_MEDIA_URL_PREFIX,
21
+ siteUrl: config_1.default.getSiteUrl(),
19
22
  errorMessages: messages
20
23
  });
21
24
  }
22
25
  }
23
-
24
- module.exports = LocalMediaStorage;
26
+ exports.default = LocalMediaStorage;
@@ -0,0 +1,24 @@
1
+ // # Local File System Media Storage module
2
+ // The (default) module for storing media, using the local file system
3
+ import config from '../../../shared/config';
4
+ import urlUtils from '../../../shared/url-utils';
5
+ import LocalStorageBase from './LocalStorageBase';
6
+
7
+ const messages = {
8
+ notFound: 'Media file not found',
9
+ notFoundWithRef: 'Media file not found: {file}',
10
+ cannotRead: 'Could not read media file: {file}'
11
+ };
12
+
13
+ class LocalMediaStorage extends LocalStorageBase {
14
+ constructor() {
15
+ super({
16
+ storagePath: config.getContentPath('media'),
17
+ staticFileURLPrefix: urlUtils.STATIC_MEDIA_URL_PREFIX,
18
+ siteUrl: config.getSiteUrl(),
19
+ errorMessages: messages
20
+ });
21
+ }
22
+ }
23
+
24
+ export default LocalMediaStorage;