ghost 6.56.0 → 6.57.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 (385) hide show
  1. package/bin/validate-adapters.js +74 -0
  2. package/bin/validate-adapters.ts +87 -0
  3. package/bin/warm-compile-cache.sh +60 -0
  4. package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
  5. package/components/tryghost-kg-html-to-lexical-1.3.3.tgz +0 -0
  6. package/components/tryghost-kg-lexical-html-renderer-1.4.3.tgz +0 -0
  7. package/components/tryghost-parse-email-address-0.0.0.tgz +0 -0
  8. package/core/app.js +1 -1
  9. package/core/boot.js +21 -25
  10. package/core/bridge.js +10 -12
  11. package/core/built/admin/assets/Combination-BDvCdg1t.js +41 -0
  12. package/core/built/admin/assets/about-C7O-AgRZ.js +1 -0
  13. package/core/built/admin/assets/{account-migration-D3O_yVck.js → account-migration-Cv_ol1ko.js} +1 -1
  14. package/core/built/admin/assets/action-list-lGzZLHc8.js +1 -0
  15. package/core/built/admin/assets/activitypub/{account-migration-D8FbP-Z-.js → account-migration-DHFbePl6.js} +7 -7
  16. package/core/built/admin/assets/activitypub/activitypub.js +3 -3
  17. package/core/built/admin/assets/activitypub/{avatar-11EA1VSs.js → avatar-CT4tS2_S.js} +2 -2
  18. package/core/built/admin/assets/activitypub/{avatar-flipboard-jfbLG-xe.js → avatar-flipboard-ByYWKipo.js} +2 -2
  19. package/core/built/admin/assets/activitypub/{bluesky-sharing-f1jTQe2P.js → bluesky-sharing-srVnSHDz.js} +8 -8
  20. package/core/built/admin/assets/activitypub/{content-formatters-nmTOPY9M.js → content-formatters-C2sos5Ht.js} +3 -3
  21. package/core/built/admin/assets/activitypub/{copy-BCwo9ep3.js → copy-B1UBTOoZ.js} +2 -2
  22. package/core/built/admin/assets/activitypub/{dist-BEfX-0aW.js → dist-MPsb2WZ1.js} +4 -4
  23. package/core/built/admin/assets/activitypub/{domain-AaDlZlrA.js → domain-DzcM9Dzo.js} +9 -9
  24. package/core/built/admin/assets/activitypub/{edit-profile-DPi8Tl5M.js → edit-profile-CsQ_4xAk.js} +5 -5
  25. package/core/built/admin/assets/activitypub/{explore-CxTzjILQ.js → explore-CJe0DZBK.js} +8 -8
  26. package/core/built/admin/assets/activitypub/{feed-DPv5x2MX.js → feed-CKV3qWON.js} +9 -9
  27. package/core/built/admin/assets/activitypub/{field-DbgA8lat.js → field-DckHfDJf.js} +3 -3
  28. package/core/built/admin/assets/activitypub/{hash-BWuZoYkA.js → hash-Dlp8RM55.js} +2 -2
  29. package/core/built/admin/assets/activitypub/{inbox-35VDQ2K2.js → inbox-CsPy4R0M.js} +2 -2
  30. package/core/built/admin/assets/activitypub/{inbox-DSrF_i1O.js → inbox-DAsjzUUe.js} +10 -10
  31. package/core/built/admin/assets/activitypub/{label-CPjFBbo7.js → label-DWyo9E5T.js} +3 -3
  32. package/core/built/admin/assets/activitypub/layout-DM_3pqsU.js +1 -0
  33. package/core/built/admin/assets/activitypub/{moderation-BkDC1XVZ.js → moderation-B0Inc03M.js} +7 -7
  34. package/core/built/admin/assets/activitypub/{note-xEyH4xT-.js → note-CSE54lER.js} +7 -7
  35. package/core/built/admin/assets/activitypub/{notifications-DClaL3ui.js → notifications-RSwbKqdh.js} +9 -9
  36. package/core/built/admin/assets/activitypub/{preferences-DpnOa-4Z.js → preferences-CE231n2_.js} +11 -11
  37. package/core/built/admin/assets/activitypub/{profile-Dvi9mz-6.js → profile-aaQ1j1Eo.js} +13 -13
  38. package/core/built/admin/assets/activitypub/{reply-Cs9ySd6Z.js → reply-Cjb0Vs3m.js} +2 -2
  39. package/core/built/admin/assets/activitypub/{routes-DFBeTnfn.js → routes-Djb0mc9k.js} +26 -26
  40. package/core/built/admin/assets/activitypub/{separator-C5u_VjzY.js → separator-D8pROI5n.js} +3 -3
  41. package/core/built/admin/assets/activitypub/{settings-CV2fFu6D.js → settings-DMc32IQl.js} +5 -5
  42. package/core/built/admin/assets/activitypub/{site-_TgDd_EM.js → site-DVIcsohX.js} +4 -4
  43. package/core/built/admin/assets/activitypub/{step-1-BfnNL2oF.js → step-1-9Yey9usF.js} +5 -5
  44. package/core/built/admin/assets/activitypub/{step-2-DLndZkO-.js → step-2-DdYmKRXV.js} +6 -6
  45. package/core/built/admin/assets/activitypub/{step-3-A-PZTtRE.js → step-3-hdSkcjZU.js} +10 -10
  46. package/core/built/admin/assets/activitypub/{tabs-BUbz7tea.js → tabs-CUqseYzQ.js} +6 -6
  47. package/core/built/admin/assets/activitypub/{topic-filter-BdX_xYYT.js → topic-filter-Coni6OXM.js} +3 -3
  48. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-EwuRemHh.js → use-activity-pub-queries-MeHTPMQv.js} +2 -2
  49. package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-cy4ACBc4.js → use-navigate-with-base-path-B046AM38.js} +24 -7
  50. package/core/built/admin/assets/activitypub/{use-reply-chain-data-CyFcGfan.js → use-reply-chain-data-1AO-Xob6.js} +5 -5
  51. package/core/built/admin/assets/activitypub/{x-7zk8mV2p.js → x-BRfRYd16.js} +2 -2
  52. package/core/built/admin/assets/add-integration-modal-m9Dv6f77.js +1 -0
  53. package/core/built/admin/assets/add-newsletter-modal-CPSVZL2H.js +1 -0
  54. package/core/built/admin/assets/add-recommendation-modal-Ci9Z5yat.js +1 -0
  55. package/core/built/admin/assets/analytics-DqSCVV8U.js +1 -0
  56. package/core/built/admin/assets/announcement-bar-modal-DU3avV7d.js +1 -0
  57. package/core/built/admin/assets/api-keys-BK0LylyK.js +1 -0
  58. package/core/built/admin/assets/api-keys-_iCT4dxr.js +1 -0
  59. package/core/built/admin/assets/{audience-CkBb2LlO.js → audience-DTJtXXWY.js} +1 -1
  60. package/core/built/admin/assets/automated-emails-PayPCT8L.js +1 -0
  61. package/core/built/admin/assets/{automations-DhKeS_U5.js → automations-162q5HjL.js} +1 -1
  62. package/core/built/admin/assets/{automations-cMllU545.js → automations-dtQ_MRZ7.js} +1 -1
  63. package/core/built/admin/assets/{bluesky-sharing-DPGpyD-G.js → bluesky-sharing-B8Es3AuV.js} +1 -1
  64. package/core/built/admin/assets/brand-icon-09YqFZjV.js +1 -0
  65. package/core/built/admin/assets/{breadcrumb-DIfcF5ow.js → breadcrumb-tg5zL--z.js} +1 -1
  66. package/core/built/admin/assets/{chart-helpers-DV0FkdcD.js → chart-helpers-CZElTGYL.js} +1 -1
  67. package/core/built/admin/assets/checkbox-Cyo-x7mC.js +1 -0
  68. package/core/built/admin/assets/{chunk.524.87b52f4fada529df2c4c.js → chunk.524.cd5498dd4e195f679266.js} +4 -4
  69. package/core/built/admin/assets/{chunk.582.340bcca873e806cbd4bb.js → chunk.582.6f92ec1f03734bf2ea3f.js} +6 -6
  70. package/core/built/admin/assets/{chunk.332.05991a101d67f732dec3.js → chunk.873.b8fc05a8ab877fb819ed.js} +28 -27
  71. package/core/built/admin/assets/code-editor-view-Dq1rQ4tS.js +1 -0
  72. package/core/built/admin/assets/color-picker-field-BonBgxhU.js +1 -0
  73. package/core/built/admin/assets/color-utils-BsrwXuDz.js +1 -0
  74. package/core/built/admin/assets/combobox-uX5r_paI.js +1 -0
  75. package/core/built/admin/assets/command-DxwBO2pF.js +1 -0
  76. package/core/built/admin/assets/comments-Dn-RO-nU.js +1 -0
  77. package/core/built/admin/assets/components-CwL6a6As-B0E0-NBJ.js +1 -0
  78. package/core/built/admin/assets/confirmation-modal-B6D6mk6R.js +1 -0
  79. package/core/built/admin/assets/content-api-modal-BxQ-7T6u.js +1 -0
  80. package/core/built/admin/assets/copy-field-BAxL4Zqn.js +1 -0
  81. package/core/built/admin/assets/currency-Dy4Tc2R2.js +1 -0
  82. package/core/built/admin/assets/custom-integration-modal---d_l7lc.js +1 -0
  83. package/core/built/admin/assets/{date-range-select-dXc-GsVe.js → date-range-select-PB2n1HZf.js} +1 -1
  84. package/core/built/admin/assets/debounce-Dg2fW5Rg.js +3 -0
  85. package/core/built/admin/assets/design-and-theme-modal-DYRT207a.js +23 -0
  86. package/core/built/admin/assets/dirty-confirm-dialog-BnDJ39ao.js +1 -0
  87. package/core/built/admin/assets/disabled-sources-indicator-iMHrkyV3.js +1 -0
  88. package/core/built/admin/assets/dist-B2PvRwLn.js +1 -0
  89. package/core/built/admin/assets/{dist-pHiOxyxa.js → dist-D5vhMdXf.js} +1 -1
  90. package/core/built/admin/assets/dist-DlCyLrOC.js +1 -0
  91. package/core/built/admin/assets/dist-WeOIvSYM.js +23 -0
  92. package/core/built/admin/assets/{dist-DyViJwIy.js → dist-cFzKLG7y.js} +3 -3
  93. package/core/built/admin/assets/dist-j1xxxnY8.js +1 -0
  94. package/core/built/admin/assets/dist-myQaY0ka.js +1 -0
  95. package/core/built/admin/assets/{domain-B5ogXUBa.js → domain-BR8FIdjD.js} +1 -1
  96. package/core/built/admin/assets/{dropzone-BnFG7dDP.js → dropzone-hNxmUvwD.js} +1 -1
  97. package/core/built/admin/assets/{edit-profile-B07jCZy9.js → edit-profile-CENrkY0l.js} +1 -1
  98. package/core/built/admin/assets/editor-B18D0lm8.js +8 -0
  99. package/core/built/admin/assets/embed-signup-form-modal-BsCYUMvQ.js +9 -0
  100. package/core/built/admin/assets/{explore-Ca1y8HW_.js → explore-BmrnljWw.js} +1 -1
  101. package/core/built/admin/assets/{feed-x4iFMBP4.js → feed-Dy4li6i8.js} +1 -1
  102. package/core/built/admin/assets/{field-ChCAabZg.js → field-Dh_lwk13.js} +1 -1
  103. package/core/built/admin/assets/{filter-sources-LdtH1e-T.js → filter-sources-D2zDuJH5.js} +1 -1
  104. package/core/built/admin/assets/filters-3JBQcNtJ.js +1 -0
  105. package/core/built/admin/assets/{filters-CjVKRP8U.js → filters-CFt_BDe4.js} +1 -1
  106. package/core/built/admin/assets/first-promoter-modal-D6Rjxugw.js +1 -0
  107. package/core/built/admin/assets/format-url-C-t8G6Qd.js +1 -0
  108. package/core/built/admin/assets/{ghost-7f01131115186d1af84ead76e79646dd.js → ghost-d683fbeb945b13155ea669caa5d8db41.js} +300 -298
  109. package/core/built/admin/assets/{gift-link-modal-Buqh2vXh.js → gift-link-modal-zMtlJhLQ.js} +1 -1
  110. package/core/built/admin/assets/{gift-links-CsUhefWG.js → gift-links-CVuqLhsZ.js} +1 -1
  111. package/core/built/admin/assets/global-data-provider-B949LDXJ.js +1 -0
  112. package/core/built/admin/assets/grid-CUciBfjf.js +1 -0
  113. package/core/built/admin/assets/{growth-Dy2UOSay.js → growth-C38Xtp8D.js} +2 -2
  114. package/core/built/admin/assets/{growth-DajOBdN0.js → growth-CFws67_i.js} +1 -1
  115. package/core/built/admin/assets/history-modal-ILAOkbxH.js +1 -0
  116. package/core/built/admin/assets/{hooks-CixO01lL.js → hooks-D6EE7BIt.js} +2 -2
  117. package/core/built/admin/assets/html-field-9a9Id_2q.js +1 -0
  118. package/core/built/admin/assets/iframe-buffering-e8vH4-Qn.js +1 -0
  119. package/core/built/admin/assets/images-CrQKVc9Q.js +1 -0
  120. package/core/built/admin/assets/{inbox-BUOLDoji.js → inbox-BrSRzyvz.js} +13 -13
  121. package/core/built/admin/assets/index-BHy2DZX-.js +67 -0
  122. package/core/built/admin/assets/index-Ds2iUoF6.css +1 -0
  123. package/core/built/admin/assets/index.es-B9tvf-t4.js +1 -0
  124. package/core/built/admin/assets/{input-group-uSK3XT7b.js → input-group-6vEPvX9S.js} +1 -1
  125. package/core/built/admin/assets/integration-header-B4DyXV06.js +1 -0
  126. package/core/built/admin/assets/integrations-BT6_iJvu.js +1 -0
  127. package/core/built/admin/assets/invite-user-modal-5xDCEw90.js +1 -0
  128. package/core/built/admin/assets/isEmail-BOfC647y.js +1 -0
  129. package/core/built/admin/assets/koenig-editor-base-BWLEB9Vf.js +1 -0
  130. package/core/built/admin/assets/{koenig-lexical-BFc4yFed.js → koenig-lexical-Cj62r_y9.js} +1 -1
  131. package/core/built/admin/assets/{kpi-card-BN-E6WYX.js → kpi-card-DOUnkZcN.js} +1 -1
  132. package/core/built/admin/assets/{kpi-card-CCt-qeWD.js → kpi-card-IHDo8Q56.js} +1 -1
  133. package/core/built/admin/assets/{kpi-helpers-DlxTbTs4.js → kpi-helpers-CjUdECAK.js} +1 -1
  134. package/core/built/admin/assets/{kpi-tabs-BlcUttpn.js → kpi-tabs-X3DkOYbI.js} +1 -1
  135. package/core/built/admin/assets/{label-AVrxwmsz.js → label-Dq6QaOuS.js} +1 -1
  136. package/core/built/admin/assets/label-picker-8YlhS2U3.js +1 -0
  137. package/core/built/admin/assets/{labels-DAIqKed7.js → labels-DAPjKPy2.js} +1 -1
  138. package/core/built/admin/assets/layout-TMj4P-vv.js +1 -0
  139. package/core/built/admin/assets/limit-modal-BRPsit_B.js +1 -0
  140. package/core/built/admin/assets/{link-helpers-D9LsDOkG.js → link-helpers-Bzkk68GD.js} +1 -1
  141. package/core/built/admin/assets/member-custom-fields-CmvsuuV_.js +1 -0
  142. package/core/built/admin/assets/member-detail-DCvRrkmJ.js +1 -0
  143. package/core/built/admin/assets/members-DxbSKngD.js +11 -0
  144. package/core/built/admin/assets/modal-page-BMTzFHVO.js +1 -0
  145. package/core/built/admin/assets/{moderation-CQ3urTFE.js → moderation-Da5lhhWh.js} +1 -1
  146. package/core/built/admin/assets/multi-select-combobox-CYdkH7KQ.js +1 -0
  147. package/core/built/admin/assets/navigation-modal-BIoTwtMy.js +1 -0
  148. package/core/built/admin/assets/newsletter-BptlVoJm.js +1 -0
  149. package/core/built/admin/assets/newsletter-detail-modal-BIvxqE0N.js +1 -0
  150. package/core/built/admin/assets/newsletter-emails-Bf8IZLsP.js +1 -0
  151. package/core/built/admin/assets/{newsletters-vt3Ni1Ov.js → newsletters-BgrIZk0V.js} +1 -1
  152. package/core/built/admin/assets/{newsletters-BXJbJgA-.js → newsletters-Du0lzskS.js} +1 -1
  153. package/core/built/admin/assets/{note-Dk877BTv.js → note-DYcLOmDb.js} +1 -1
  154. package/core/built/admin/assets/{notifications-CPlLjPxO.js → notifications-B2SPFIV9.js} +1 -1
  155. package/core/built/admin/assets/{offers-DEniVRD5.js → offers-Um6ab71O.js} +1 -1
  156. package/core/built/admin/assets/offers-container-modal-BZnZITMw.js +1 -0
  157. package/core/built/admin/assets/{onboarding-route-DdStOtjy.js → onboarding-route-DgdfxkQh.js} +1 -1
  158. package/core/built/admin/assets/overview-BYQJXSog.js +1 -0
  159. package/core/built/admin/assets/overview-Dt2_mR6U.js +1 -0
  160. package/core/built/admin/assets/{page-header-pp4dWmOS.js → page-header-CpmxJj5B.js} +1 -1
  161. package/core/built/admin/assets/{pages-B4goRPUn.js → pages-BVMnpI2O.js} +1 -1
  162. package/core/built/admin/assets/pintura-modal-B4MuBuuO.js +1 -0
  163. package/core/built/admin/assets/portal-frame-BF0NBIji.js +1 -0
  164. package/core/built/admin/assets/portal-modal-DMVbm0oy.js +1 -0
  165. package/core/built/admin/assets/{post-analytics-BMJrI81R.js → post-analytics-CXWBOGyP.js} +1 -1
  166. package/core/built/admin/assets/post-analytics-header-ChzjXVPt.js +1 -0
  167. package/core/built/admin/assets/{post-analytics-provider-Btml5vJI.js → post-analytics-provider-Cgw4U_fw.js} +1 -1
  168. package/core/built/admin/assets/{post-share-modal-AcUZkbfL.js → post-share-modal-B9Vmk_XM.js} +1 -1
  169. package/core/built/admin/assets/{posts-DhXE7b6r.js → posts-CxG7v0-M.js} +1 -1
  170. package/core/built/admin/assets/preferences-BfzJmnsd.js +5 -0
  171. package/core/built/admin/assets/preview-chrome-BOVO6_PE.js +1 -0
  172. package/core/built/admin/assets/preview-modal-Dw_HtD6S.js +1 -0
  173. package/core/built/admin/assets/profile-BT5vtv9b.js +1 -0
  174. package/core/built/admin/assets/radio-group-I7ou7PoJ.js +1 -0
  175. package/core/built/admin/assets/{referrers-pmJT4k3-.js → referrers-B9QDAfYm.js} +1 -1
  176. package/core/built/admin/assets/{router-provider-BmEZf6c6.js → router-provider-DSQfprxH.js} +1 -1
  177. package/core/built/admin/assets/select-D9oU1IoM.js +1 -0
  178. package/core/built/admin/assets/settings-CfZFbyu_.js +4 -0
  179. package/core/built/admin/assets/{settings-BGgk7oCI.js → settings-CpvHWix7.js} +1 -1
  180. package/core/built/admin/assets/settings-breadcrumbs-K0USP2nw.js +1 -0
  181. package/core/built/admin/assets/{share-modal-BeuydaBf.js → share-modal-ClIyPzc5.js} +1 -1
  182. package/core/built/admin/assets/slack-modal-1XXqOfiw.js +1 -0
  183. package/core/built/admin/assets/social-urls-CHQ9cTAK.js +1 -0
  184. package/core/built/admin/assets/{sort-button-Df4t2AL8.js → sort-button-CdBsm40v.js} +1 -1
  185. package/core/built/admin/assets/{source-icon-ajoaKb41.js → source-icon-CEYmVLXR.js} +1 -1
  186. package/core/built/admin/assets/{stats-C_lfxZAw.js → stats-D8nZCTy5.js} +1 -1
  187. package/core/built/admin/assets/{stats-view-Cxot1iD8.js → stats-view-CugFVf0g.js} +1 -1
  188. package/core/built/admin/assets/{step-1-ogAA4lDr.js → step-1-DOYjrORn.js} +1 -1
  189. package/core/built/admin/assets/{step-2-C5Xini-7.js → step-2-vA6RsarH.js} +1 -1
  190. package/core/built/admin/assets/{step-3-CZv1FV81.js → step-3-BtIBxMId.js} +2 -2
  191. package/core/built/admin/assets/stripe-button-UFP4QRXd.js +1 -0
  192. package/core/built/admin/assets/stripe-connect-modal-C_L3uM6n.js +1 -0
  193. package/core/built/admin/assets/switch-CE2NuMn-.js +1 -0
  194. package/core/built/admin/assets/{table-DFj1wiYv.js → table-TMCgCQK7.js} +1 -1
  195. package/core/built/admin/assets/tabs-Dd6oOKbv.js +1 -0
  196. package/core/built/admin/assets/tag-detail-D3l-UJPR.js +1 -0
  197. package/core/built/admin/assets/tags-BwCgmr5v.js +1 -0
  198. package/core/built/admin/assets/tags-WdKQGWR8.js +1 -0
  199. package/core/built/admin/assets/testimonials-modal-CqWp-xXJ.js +1 -0
  200. package/core/built/admin/assets/tier-detail-modal-BkcR2u0A.js +1 -0
  201. package/core/built/admin/assets/{tiers-DYsa4DCo.js → tiers-Da6kxHQP.js} +1 -1
  202. package/core/built/admin/assets/toggle-group-Guorw93z.js +1 -0
  203. package/core/built/admin/assets/{topic-filter-DGDxDalo.js → topic-filter-CbgoWIHn.js} +1 -1
  204. package/core/built/admin/assets/transistor-modal-DuNnnpal.js +1 -0
  205. package/core/built/admin/assets/unsplash-modal-y2bVwTHH.js +1 -0
  206. package/core/built/admin/assets/{use-analytics-data-C76v4LIp.js → use-analytics-data-B-b4wNSC.js} +1 -1
  207. package/core/built/admin/assets/use-check-theme-limit-error-m09J38Mq.js +2 -0
  208. package/core/built/admin/assets/use-feature-flag-ud0Qz8vt.js +1 -0
  209. package/core/built/admin/assets/use-filter-params-BnbBDc7T.js +1 -0
  210. package/core/built/admin/assets/use-filterable-api-iMpDZBxD.js +1 -0
  211. package/core/built/admin/assets/use-form-vRjI0Kwk.js +1 -0
  212. package/core/built/admin/assets/{use-growth-stats-aNXJOmQr.js → use-growth-stats-DPU5rt3W.js} +1 -1
  213. package/core/built/admin/assets/use-hash-link-navigation-guard-B9j6HIrV.js +1 -0
  214. package/core/built/admin/assets/use-limiter-BkN3E4gw.js +2 -0
  215. package/core/built/admin/assets/use-pintura-config-C_z8HTG2.js +1 -0
  216. package/core/built/admin/assets/use-pintura-editor-DNgbkhGp.js +1 -0
  217. package/core/built/admin/assets/{use-post-referrers-CG0SZioj.js → use-post-referrers-C2mXyrp-.js} +1 -1
  218. package/core/built/admin/assets/use-query-params-DHhhu8wi.js +1 -0
  219. package/core/built/admin/assets/{use-reply-chain-data-RLdPKRmS.js → use-reply-chain-data-DaK8q2qQ.js} +1 -1
  220. package/core/built/admin/assets/use-setting-group-YlYcoNyP.js +1 -0
  221. package/core/built/admin/assets/use-settings-navigation-Bf1g1rEh.js +1 -0
  222. package/core/built/admin/assets/{use-simple-pagination-DgcF69KI.js → use-simple-pagination-D9ckKo5-.js} +1 -1
  223. package/core/built/admin/assets/{use-tinybird-query-C1R_Kbmy.js → use-tinybird-query-GSa32hVw.js} +1 -1
  224. package/core/built/admin/assets/{use-tinybird-token-C9fPjVM_.js → use-tinybird-token-CKLOZFsw.js} +1 -1
  225. package/core/built/admin/assets/use-url-input-z-p0Kewm.js +5 -0
  226. package/core/built/admin/assets/user-detail-modal-BMxOA4Sv.js +1 -0
  227. package/core/built/admin/assets/{users-Dkv8NQZe.js → users-B6hIds6n.js} +1 -1
  228. package/core/built/admin/assets/validator-Cr0sMKuW.js +7 -0
  229. package/core/built/admin/assets/{virtual-list-BmTUzeoF.js → virtual-list-RHeEL05L.js} +1 -1
  230. package/core/built/admin/assets/web-Bw2QMO5u.js +2 -0
  231. package/core/built/admin/assets/web-xJtcwMy4.js +1 -0
  232. package/core/built/admin/assets/zapier-modal-BP2f4-vY.js +1 -0
  233. package/core/built/admin/index.html +15 -13
  234. package/core/frontend/helpers/authors.js +1 -1
  235. package/core/frontend/helpers/link.js +3 -8
  236. package/core/frontend/helpers/tags.js +1 -1
  237. package/core/frontend/meta/author-url.js +2 -2
  238. package/core/frontend/meta/url.js +4 -4
  239. package/core/frontend/services/proxy.js +1 -1
  240. package/core/frontend/services/routing/events.js +20 -6
  241. package/core/frontend/services/routing/permalink-adapter.js +0 -13
  242. package/core/frontend/services/routing/permalink-adapter.ts +0 -13
  243. package/core/frontend/services/routing/router-manager.js +15 -9
  244. package/core/frontend/services/sitemap/base-site-map-generator.js +1 -28
  245. package/core/frontend/services/sitemap/site-map-manager.js +22 -57
  246. package/core/server/adapters/route-settings/utils.js +10 -2
  247. package/core/server/adapters/route-settings/utils.ts +12 -2
  248. package/core/server/api/endpoints/email-post.js +1 -1
  249. package/core/server/api/endpoints/previews.js +1 -1
  250. package/core/server/api/endpoints/search-index-public.js +3 -3
  251. package/core/server/api/endpoints/search-index.js +4 -4
  252. package/core/server/api/endpoints/utils/serializers/input/authors.js +2 -2
  253. package/core/server/api/endpoints/utils/serializers/input/comments.js +1 -1
  254. package/core/server/api/endpoints/utils/serializers/input/pages.js +3 -3
  255. package/core/server/api/endpoints/utils/serializers/input/posts.js +3 -3
  256. package/core/server/api/endpoints/utils/serializers/input/tags.js +1 -1
  257. package/core/server/api/endpoints/utils/serializers/input/users.js +2 -2
  258. package/core/server/api/endpoints/utils/serializers/input/utils/url.js +31 -13
  259. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +2 -2
  260. package/core/server/api/endpoints/utils/serializers/output/mappers/tags.js +2 -2
  261. package/core/server/api/endpoints/utils/serializers/output/mappers/users.js +8 -0
  262. package/core/server/api/endpoints/utils/serializers/output/utils/url.js +18 -11
  263. package/core/server/data/migrations/versions/6.57/2026-08-04-18-00-00-store-custom-field-values-as-leaf-rows.js +74 -0
  264. package/core/server/data/migrations/versions/6.57/2026-08-04-18-54-14-reset-automation-email-analytics.js +25 -0
  265. package/core/server/data/schema/commands.js +21 -5
  266. package/core/server/data/schema/schema.js +24 -5
  267. package/core/server/lib/common/to-plain.ts +1 -1
  268. package/core/server/models/post.js +2 -2
  269. package/core/server/services/adapter-manager/adapter-manager.js +1 -45
  270. package/core/server/services/adapter-manager/adapter-manager.ts +2 -48
  271. package/core/server/services/adapter-manager/adapter-paths.js +24 -0
  272. package/core/server/services/adapter-manager/adapter-paths.ts +21 -0
  273. package/core/server/services/adapter-manager/base-classes.js +22 -0
  274. package/core/server/services/adapter-manager/base-classes.ts +22 -0
  275. package/core/server/services/adapter-manager/index.js +4 -27
  276. package/core/server/services/adapter-manager/index.ts +4 -31
  277. package/core/server/services/adapter-manager/utils.js +50 -0
  278. package/core/server/services/adapter-manager/utils.ts +57 -0
  279. package/core/server/services/audience-feedback/audience-feedback-controller.js +1 -1
  280. package/core/server/services/audience-feedback/audience-feedback-service.js +2 -2
  281. package/core/server/services/automations/service.js +2 -2
  282. package/core/server/services/automations/service.ts +2 -2
  283. package/core/server/services/comments/comments-service-emails.js +1 -1
  284. package/core/server/services/comments/comments-service.js +1 -1
  285. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +11 -2
  286. package/core/server/services/email-analytics/email-analytics-service.js +1 -1
  287. package/core/server/services/email-service/email-service-wrapper.js +2 -1
  288. package/core/server/services/email-service/mailgun-email-provider.js +15 -0
  289. package/core/server/services/indexnow-ping/indexnow-ping-service.js +1 -1
  290. package/core/server/services/indexnow-ping/indexnow-ping-service.ts +2 -4
  291. package/core/server/services/lib/mailgun-client.js +3 -3
  292. package/core/server/services/media-inliner/external-media-inliner.js +12 -8
  293. package/core/server/services/member-attribution/url-translator.js +5 -7
  294. package/core/server/services/member-welcome-emails/service.js +72 -12
  295. package/core/server/services/members/api.js +1 -1
  296. package/core/server/services/members/import-export/import/completion-email.js +8 -4
  297. package/core/server/services/members/import-export/import/completion-email.ts +9 -4
  298. package/core/server/services/members/import-export/import/importer.js +25 -4
  299. package/core/server/services/members/import-export/import/importer.ts +26 -6
  300. package/core/server/services/members/import-export/import/row.ts +5 -1
  301. package/core/server/services/members/import-export/index.js +1 -5
  302. package/core/server/services/members/import-export/index.ts +2 -6
  303. package/core/server/services/members-custom-fields/queries.js +4 -13
  304. package/core/server/services/members-custom-fields/queries.ts +4 -13
  305. package/core/server/services/members-custom-fields/schema.js +18 -27
  306. package/core/server/services/members-custom-fields/schema.ts +17 -27
  307. package/core/server/services/members-custom-fields/storage.js +94 -27
  308. package/core/server/services/members-custom-fields/storage.ts +114 -39
  309. package/core/server/services/members-custom-fields/values-service.js +98 -219
  310. package/core/server/services/members-custom-fields/values-service.ts +110 -238
  311. package/core/server/services/mentions/resource-service.js +1 -1
  312. package/core/server/services/mentions/service.js +2 -2
  313. package/core/server/services/route-settings/dynamic-routing-service.js +9 -59
  314. package/core/server/services/slack-ping/slack-ping-service.js +2 -2
  315. package/core/server/services/slack-ping/slack-ping-service.ts +3 -5
  316. package/core/server/services/stats/content-stats-service.js +3 -3
  317. package/core/server/services/stats/posts-stats-service.js +2 -2
  318. package/core/server/services/url/config.js +90 -135
  319. package/core/server/services/url/index.js +6 -49
  320. package/core/server/services/url/lazy-find-resource.js +14 -11
  321. package/core/server/services/url/lazy-find-resource.ts +14 -11
  322. package/core/server/services/url/lazy-url-service.js +174 -94
  323. package/core/server/services/url/lazy-url-service.ts +233 -97
  324. package/core/server/services/url/routable-resources.js +62 -71
  325. package/core/server/services/url/router-filter.js +12 -4
  326. package/core/server/services/url/router-filter.ts +12 -4
  327. package/core/server/services/webhooks/index.js +1 -1
  328. package/core/server/services/webhooks/serialize.js +2 -1
  329. package/core/shared/config/env/config.testing-mysql.json +1 -2
  330. package/core/shared/config/env/config.testing.json +1 -2
  331. package/core/shared/events/index.js +1 -2
  332. package/core/shared/labs.js +3 -3
  333. package/package.json +5 -6
  334. package/pnpm-lock.yaml +6 -9
  335. package/pnpm-workspace.yaml +2 -2
  336. package/tsconfig.json +1 -0
  337. package/core/built/admin/assets/Combination-BCm9FL4o.js +0 -41
  338. package/core/built/admin/assets/activitypub/layout-CTgrezN7.js +0 -1
  339. package/core/built/admin/assets/automated-emails-6t2bIRWf.js +0 -7
  340. package/core/built/admin/assets/checkbox-BIl077a0.js +0 -1
  341. package/core/built/admin/assets/code-editor-view-C0aWNwdl.js +0 -1
  342. package/core/built/admin/assets/comments-qwhIjH3c.js +0 -1
  343. package/core/built/admin/assets/disabled-sources-indicator-DYAXW-6V.js +0 -1
  344. package/core/built/admin/assets/dist-BUKmD51u.js +0 -1
  345. package/core/built/admin/assets/dist-CNlMj7ML.js +0 -1
  346. package/core/built/admin/assets/dist-DDY6GRVz.js +0 -1
  347. package/core/built/admin/assets/dist-DG78yroX.js +0 -23
  348. package/core/built/admin/assets/editor-DDYSOXGN.js +0 -8
  349. package/core/built/admin/assets/esm-CFX93H5M.js +0 -2
  350. package/core/built/admin/assets/filters-CLehPo_D.js +0 -1
  351. package/core/built/admin/assets/index-08n05-rc.js +0 -67
  352. package/core/built/admin/assets/index-DgUzgFvS.css +0 -1
  353. package/core/built/admin/assets/label-picker-DVnpu_IF.js +0 -1
  354. package/core/built/admin/assets/layout-B0YLh7R9.js +0 -1
  355. package/core/built/admin/assets/member-custom-fields-C8NpZYza.js +0 -1
  356. package/core/built/admin/assets/member-detail-CIVAdKXf.js +0 -1
  357. package/core/built/admin/assets/members-oLPiSkXD.js +0 -10
  358. package/core/built/admin/assets/modals-CB7v-k3T.js +0 -31
  359. package/core/built/admin/assets/newsletter-rbeDX9Wk.js +0 -1
  360. package/core/built/admin/assets/overview--4V-kx9c.js +0 -1
  361. package/core/built/admin/assets/overview-DSLv30oz.js +0 -1
  362. package/core/built/admin/assets/post-analytics-header-pU2m9ZuV.js +0 -1
  363. package/core/built/admin/assets/preferences-Ru4CRPHC.js +0 -5
  364. package/core/built/admin/assets/profile-BNb1oj7D.js +0 -1
  365. package/core/built/admin/assets/select-B0HteHrp.js +0 -1
  366. package/core/built/admin/assets/settings-B1C9Q3wo.js +0 -4
  367. package/core/built/admin/assets/social-urls-DA2lXrhW.js +0 -8
  368. package/core/built/admin/assets/switch-CyQcwMAv.js +0 -1
  369. package/core/built/admin/assets/tabs-D4y1gqUd.js +0 -1
  370. package/core/built/admin/assets/tags-Dmft-Y4O.js +0 -1
  371. package/core/built/admin/assets/toggle-group-R2QMFvXW.js +0 -1
  372. package/core/built/admin/assets/use-filter-params-WrdhAISv.js +0 -1
  373. package/core/built/admin/assets/web-BqW0b0_C.js +0 -1
  374. package/core/built/admin/assets/web-Cy5GKMWM.js +0 -2
  375. package/core/server/services/url/local-file-cache.js +0 -75
  376. package/core/server/services/url/queue.js +0 -260
  377. package/core/server/services/url/resource.js +0 -102
  378. package/core/server/services/url/resources.js +0 -480
  379. package/core/server/services/url/url-generator.js +0 -276
  380. package/core/server/services/url/url-service-facade.js +0 -366
  381. package/core/server/services/url/url-service-facade.ts +0 -519
  382. package/core/server/services/url/url-service.js +0 -387
  383. package/core/server/services/url/urls.js +0 -140
  384. package/core/shared/events/url-resource-updated-event.js +0 -33
  385. /package/core/built/admin/assets/{dist-CqO2lWS0.js → dist-CqO2lWS02.js} +0 -0
@@ -1,22 +1,21 @@
1
1
  const errors = require('@tryghost/errors');
2
2
 
3
3
  /**
4
- * Enumerates the routable resources of a type: the rows the lazy URL service
5
- * would produce a URL for. This is the lazy counterpart of the eager
6
- * service's boot walk — same raw-knex fast path, same public-visibility
7
- * gates — computed on demand instead of held in memory.
4
+ * Enumerates the routable resources of a type: the rows the URL service would
5
+ * produce a URL for. Computed on demand rather than held in memory.
8
6
  *
9
- * Callers name the extra columns they want back; everything else stays out
10
- * of memory. The columns URL computation needs (permalink fields, filter
11
- * columns, relations) come from the lazy service itself, so rows are never
12
- * thin for the active routing config.
7
+ * Callers name the extra columns they want back; everything else stays out of
8
+ * memory. The columns URL computation itself needs (permalink fields, filter
9
+ * columns, relations) are passed in by the URL service, which is the source of
10
+ * truth for what the active routing config reads — so rows are never thin for
11
+ * it.
13
12
  */
14
13
 
15
14
  // Which rows of each type are routable. visibility:public alone is not
16
15
  // enough for tags and authors: without the has-posts join, empty tags and
17
16
  // staff user accounts would be routable/listable.
18
17
  const TYPE_CONFIG = {
19
- posts: {modelName: 'Post', table: 'posts', filter: 'status:published+type:post'},
18
+ posts: {modelName: 'Post', table: 'posts', filter: 'status:published+type:post', canCarryRelations: true},
20
19
  pages: {modelName: 'Post', table: 'posts', filter: 'status:published+type:page'},
21
20
  tags: {
22
21
  modelName: 'Tag',
@@ -37,80 +36,72 @@ const RELATION_FIELDS = {
37
36
  authors: ['users.id', 'users.slug']
38
37
  };
39
38
 
40
- // Keeps each SQLite query under the bound-variable limit (#5810) — the same
41
- // strategy as the eager boot walk (services/url/resources.js).
39
+ // Keeps each SQLite query under the bound-variable limit (#5810).
42
40
  const SQLITE_BATCH_SIZE = 999;
43
41
 
44
42
  /**
45
- * @param {Object} deps
46
- * @param {Object} deps.lazyUrlService - source of truth for the columns and
47
- * relations the active routing config reads
48
- * @returns {(type: string, options?: {columns?: string[]}) => Promise<Object[]>}
43
+ * @param {string} type
44
+ * @param {Object} [options]
45
+ * @param {string[]} [options.columns] - extra columns the caller wants back
46
+ * @param {string[]} [options.requiredFields] - columns URL computation reads
47
+ * @param {string[]} [options.requiredRelations] - relations URL computation
48
+ * reads; ignored for types that carry none
49
+ * @returns {Promise<Object[]>}
49
50
  */
50
- function createFetchRoutableResources({lazyUrlService}) {
51
- if (!lazyUrlService) {
51
+ async function fetchRoutableResources(type, {columns = [], requiredFields = [], requiredRelations = []} = {}) {
52
+ const typeConfig = TYPE_CONFIG[type];
53
+ if (!typeConfig) {
52
54
  throw new errors.IncorrectUsageError({
53
- message: 'fetchRoutableResources requires a lazy URL service backend'
55
+ message: `Unknown routable resource type: ${type}`
54
56
  });
55
57
  }
56
58
 
57
- return async function fetchRoutableResources(type, {columns = []} = {}) {
58
- const typeConfig = TYPE_CONFIG[type];
59
- if (!typeConfig) {
60
- throw new errors.IncorrectUsageError({
61
- message: `Unknown routable resource type: ${type}`
62
- });
63
- }
64
-
65
- // Lazy requires: the model layer must not load before boot wires it.
66
- const models = require('../../models');
67
- const schema = require('../../data/schema');
68
- const DatabaseInfo = require('@tryghost/database-info');
59
+ // Required here rather than at the top so this module can be loaded
60
+ // for its shape without pulling in the model layer.
61
+ const models = require('../../models');
62
+ const schema = require('../../data/schema');
63
+ const DatabaseInfo = require('@tryghost/database-info');
69
64
 
70
- // Callers speak include; raw_knex only speaks exclude, so translate
71
- // against the table schema here, once.
72
- const include = new Set(['id', ...columns, ...lazyUrlService.getRequiredFields(type)]);
73
- const options = {
74
- modelName: typeConfig.modelName,
75
- filter: typeConfig.filter,
76
- exclude: Object.keys(schema.tables[typeConfig.table]).filter(column => !include.has(column))
77
- };
78
- if (typeConfig.shouldHavePosts) {
79
- options.shouldHavePosts = typeConfig.shouldHavePosts;
80
- }
65
+ // Callers speak include; raw_knex only speaks exclude, so translate
66
+ // against the table schema here, once.
67
+ const include = new Set(['id', ...columns, ...requiredFields]);
68
+ const options = {
69
+ modelName: typeConfig.modelName,
70
+ filter: typeConfig.filter,
71
+ exclude: Object.keys(schema.tables[typeConfig.table]).filter(column => !include.has(column))
72
+ };
73
+ if (typeConfig.shouldHavePosts) {
74
+ options.shouldHavePosts = typeConfig.shouldHavePosts;
75
+ }
81
76
 
82
- // Relations only when the active routing config reads them (e.g.
83
- // /:primary_tag/:slug/ permalinks, tag-filtered collections). Pages
84
- // never carry relations, mirroring the eager resource config.
85
- if (type === 'posts') {
86
- const relations = lazyUrlService.getRequiredRelations();
87
- if (relations.length) {
88
- options.withRelated = relations;
89
- options.withRelatedFields = {};
90
- for (const relation of relations) {
91
- options.withRelatedFields[relation] = RELATION_FIELDS[relation];
92
- }
93
- }
77
+ // Relations only when the active routing config reads them (e.g.
78
+ // /:primary_tag/:slug/ permalinks, tag-filtered collections), and only for
79
+ // the types that have any see canCarryRelations above.
80
+ if (typeConfig.canCarryRelations && requiredRelations.length) {
81
+ options.withRelated = requiredRelations;
82
+ options.withRelatedFields = {};
83
+ for (const relation of requiredRelations) {
84
+ options.withRelatedFields[relation] = RELATION_FIELDS[relation];
94
85
  }
86
+ }
95
87
 
96
- let rows;
97
- if (!DatabaseInfo.isSQLite(models.Base.knex)) {
98
- rows = await models.Base.Model.raw_knex.fetchAll(options);
99
- } else {
100
- rows = [];
101
- let offset = 0;
102
- let batch;
103
- do {
104
- // orderBy makes the pagination deterministic; without it the
105
- // row order between batches is unspecified.
106
- batch = await models.Base.Model.raw_knex.fetchAll({...options, orderBy: 'id', offset, limit: SQLITE_BATCH_SIZE});
107
- rows.push(...batch);
108
- offset += SQLITE_BATCH_SIZE;
109
- } while (batch.length);
110
- }
88
+ let rows;
89
+ if (!DatabaseInfo.isSQLite(models.Base.knex)) {
90
+ rows = await models.Base.Model.raw_knex.fetchAll(options);
91
+ } else {
92
+ rows = [];
93
+ let offset = 0;
94
+ let batch;
95
+ do {
96
+ // orderBy makes the pagination deterministic; without it the
97
+ // row order between batches is unspecified.
98
+ batch = await models.Base.Model.raw_knex.fetchAll({...options, orderBy: 'id', offset, limit: SQLITE_BATCH_SIZE});
99
+ rows.push(...batch);
100
+ offset += SQLITE_BATCH_SIZE;
101
+ } while (batch.length);
102
+ }
111
103
 
112
- return rows;
113
- };
104
+ return rows;
114
105
  }
115
106
 
116
- module.exports = {createFetchRoutableResources};
107
+ module.exports = {fetchRoutableResources};
@@ -6,8 +6,9 @@ exports.buildFilter = buildFilter;
6
6
  exports.filterMatches = filterMatches;
7
7
  const nql = require('@tryghost/nql');
8
8
  const logging = require('@tryghost/logging');
9
- // A deliberate copy of the eager UrlGenerator's NQL semantics: while both
10
- // services run side by side, eager is the parity oracle and must stay separate.
9
+ // NQL evaluation for routes.yaml collection filters, kept in one place so the
10
+ // forward lookup, ownership check and reverse lookup all decide membership the
11
+ // same way.
11
12
  exports.EXPANSIONS = [
12
13
  { key: 'author', replacement: 'authors.slug' },
13
14
  { key: 'tags', replacement: 'tags.slug' },
@@ -46,8 +47,15 @@ function buildFilter(filter) {
46
47
  }
47
48
  return nql(filter, { expansions: exports.EXPANSIONS, transformer: PAGE_TRANSFORMER });
48
49
  }
49
- // A null filter always matches; a filter that throws is a non-match, not an
50
- // error, mirroring the eager generator's try/catch.
50
+ // A null filter always matches; anything that throws is a non-match, not an
51
+ // error.
52
+ //
53
+ // That covers malformed filters as well as odd records, because NQL parses
54
+ // lazily: `buildFilter` returns happily for a filter like `((`, and the parse
55
+ // error surfaces here on the first `queryJSON`. So this catch is the only
56
+ // thing standing between a bad routes.yaml filter and a site that cannot
57
+ // route — do not narrow it on the assumption that compilation already
58
+ // failed somewhere upstream. Pinned in router-filter.test.js.
51
59
  function filterMatches(compiledFilter, record) {
52
60
  if (!compiledFilter) {
53
61
  return true;
@@ -1,8 +1,9 @@
1
1
  const nql = require('@tryghost/nql');
2
2
  const logging = require('@tryghost/logging');
3
3
 
4
- // A deliberate copy of the eager UrlGenerator's NQL semantics: while both
5
- // services run side by side, eager is the parity oracle and must stay separate.
4
+ // NQL evaluation for routes.yaml collection filters, kept in one place so the
5
+ // forward lookup, ownership check and reverse lookup all decide membership the
6
+ // same way.
6
7
  export const EXPANSIONS = [
7
8
  {key: 'author', replacement: 'authors.slug'},
8
9
  {key: 'tags', replacement: 'tags.slug'},
@@ -50,8 +51,15 @@ export function buildFilter(filter: string | null | undefined): CompiledFilter |
50
51
  return nql(filter, {expansions: EXPANSIONS, transformer: PAGE_TRANSFORMER});
51
52
  }
52
53
 
53
- // A null filter always matches; a filter that throws is a non-match, not an
54
- // error, mirroring the eager generator's try/catch.
54
+ // A null filter always matches; anything that throws is a non-match, not an
55
+ // error.
56
+ //
57
+ // That covers malformed filters as well as odd records, because NQL parses
58
+ // lazily: `buildFilter` returns happily for a filter like `((`, and the parse
59
+ // error surfaces here on the first `queryJSON`. So this catch is the only
60
+ // thing standing between a bad routes.yaml filter and a site that cannot
61
+ // route — do not narrow it on the assumption that compilation already
62
+ // failed somewhere upstream. Pinned in router-filter.test.js.
55
63
  export function filterMatches(compiledFilter: CompiledFilter | null, record: Record<string, unknown>): boolean {
56
64
  if (!compiledFilter) {
57
65
  return true;
@@ -7,7 +7,7 @@ module.exports = {
7
7
  const models = require('../../models');
8
8
  const limitService = require('../../services/limits');
9
9
  const events = require('../../lib/common/events');
10
- const urlService = require('../url').facade;
10
+ const urlService = require('../url');
11
11
  const createSerialize = require('./serialize');
12
12
  const createPayload = require('./payload');
13
13
  const WebhookTrigger = require('./webhook-trigger');
@@ -3,7 +3,8 @@
3
3
  // routing an under-loaded post 404s. Ask the URL service which relations it
4
4
  // needs and load only the ones missing — reloading a relation the event
5
5
  // already carries (e.g. authors) would strip its nested roles from the
6
- // payload. Returns [] under eager routing, which resolves URLs by id.
6
+ // payload. `getRequiredRelations()` is [] when the routing config reads
7
+ // none, so this is a no-op on a default routes.yaml.
7
8
  const loadRequiredUrlRelations = async (model, urlService) => {
8
9
  const required = urlService.getRequiredRelations();
9
10
  const missing = required.filter(relation => !model.relations[relation]);
@@ -115,7 +115,6 @@
115
115
  "useMinFiles": false,
116
116
  "paths": {
117
117
  "fixtures": "test/utils/fixtures/fixtures",
118
- "defaultSettings": "test/utils/fixtures/default-settings.json",
119
- "urlCache": "test/utils/fixtures/urls"
118
+ "defaultSettings": "test/utils/fixtures/default-settings.json"
120
119
  }
121
120
  }
@@ -111,7 +111,6 @@
111
111
  "useMinFiles": false,
112
112
  "paths": {
113
113
  "fixtures": "test/utils/fixtures/fixtures",
114
- "defaultSettings": "test/utils/fixtures/default-settings.json",
115
- "urlCache": "test/utils/fixtures/urls"
114
+ "defaultSettings": "test/utils/fixtures/default-settings.json"
116
115
  }
117
116
  }
@@ -12,6 +12,5 @@ module.exports = {
12
12
  OfferRedemptionEvent: require('./offer-redemption-event'),
13
13
  SubscriptionActivatedEvent: require('./subscription-activated-event'),
14
14
  SubscriptionCancelledEvent: require('./subscription-cancelled-event'),
15
- SubscriptionCreatedEvent: require('./subscription-created-event'),
16
- URLResourceUpdatedEvent: require('./url-resource-updated-event')
15
+ SubscriptionCreatedEvent: require('./subscription-created-event')
17
16
  };
@@ -27,6 +27,7 @@ const messages = {
27
27
 
28
28
  // flags in this list always return `true`, allows quick global enable prior to full flag removal
29
29
  const GA_FEATURES = [
30
+ 'automationAnalytics',
30
31
  'customFonts',
31
32
  'explore',
32
33
  'commentsThreads',
@@ -48,11 +49,9 @@ const PUBLIC_BETA_FEATURES = [
48
49
  // Which is only visible if the developer experiments flag is enabled
49
50
  const PRIVATE_FEATURES = [
50
51
  'automations',
51
- 'automationAnalytics',
52
52
  'stripeAutomaticTax',
53
53
  'importMemberTier',
54
54
  'csvContentImporter',
55
- 'urlCache',
56
55
  'lexicalIndicators',
57
56
  'adminUIRefresh',
58
57
  'emailCustomization',
@@ -65,7 +64,8 @@ const PRIVATE_FEATURES = [
65
64
  'memberDetailsReact',
66
65
  'membersCustomFields',
67
66
  'paywallImprovements',
68
- 'giftSubCustomization'
67
+ 'giftSubCustomization',
68
+ 'tagDetailsReact'
69
69
  ];
70
70
 
71
71
  module.exports.GA_KEYS = [...GA_FEATURES];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ghost",
3
- "version": "6.56.0",
3
+ "version": "6.57.0",
4
4
  "description": "The professional publishing platform",
5
5
  "author": "Ghost Foundation",
6
6
  "homepage": "https://ghost.org",
@@ -111,7 +111,6 @@
111
111
  "countries-and-timezones": "3.9.0",
112
112
  "csso": "5.0.5",
113
113
  "csv-writer": "1.6.0",
114
- "date-fns": "2.30.0",
115
114
  "dequal": "2.0.3",
116
115
  "dompurify": "3.4.11",
117
116
  "downsize-cjs": "1.1.2",
@@ -198,17 +197,17 @@
198
197
  "@tryghost/adapter-base-scheduling": "file:components/tryghost-adapter-base-scheduling-0.2.0.tgz",
199
198
  "@tryghost/adapter-base-sso": "file:components/tryghost-adapter-base-sso-0.1.1.tgz",
200
199
  "@tryghost/admin-api-schema": "file:components/tryghost-admin-api-schema-0.0.0.tgz",
200
+ "@tryghost/custom-field-types": "file:components/tryghost-custom-field-types-0.0.0.tgz",
201
201
  "@tryghost/i18n": "file:components/tryghost-i18n-0.0.0.tgz",
202
202
  "@tryghost/kg-card-factory": "file:components/tryghost-kg-card-factory-5.2.3.tgz",
203
203
  "@tryghost/kg-converters": "file:components/tryghost-kg-converters-1.2.3.tgz",
204
- "@tryghost/kg-default-cards": "file:components/tryghost-kg-default-cards-10.3.3.tgz",
205
204
  "@tryghost/kg-default-nodes": "file:components/tryghost-kg-default-nodes-2.1.4.tgz",
205
+ "@tryghost/kg-html-to-lexical": "file:components/tryghost-kg-html-to-lexical-1.3.3.tgz",
206
206
  "@tryghost/kg-lexical-html-renderer": "file:components/tryghost-kg-lexical-html-renderer-1.4.3.tgz",
207
+ "@tryghost/kg-default-cards": "file:components/tryghost-kg-default-cards-10.3.3.tgz",
207
208
  "@tryghost/nql-string": "file:components/tryghost-nql-string-0.0.0.tgz",
208
209
  "@tryghost/parse-email-address": "file:components/tryghost-parse-email-address-0.0.0.tgz",
209
- "ghost-storage-base": "file:components/ghost-storage-base-3.0.0.tgz",
210
- "@tryghost/custom-field-types": "file:components/tryghost-custom-field-types-0.0.0.tgz",
211
- "@tryghost/kg-html-to-lexical": "file:components/tryghost-kg-html-to-lexical-1.3.3.tgz"
210
+ "ghost-storage-base": "file:components/ghost-storage-base-3.0.0.tgz"
212
211
  },
213
212
  "optionalDependencies": {
214
213
  "better-sqlite3": "12.11.1"
package/pnpm-lock.yaml CHANGED
@@ -59,10 +59,10 @@ overrides:
59
59
  underscore@>=1.3.2 <1.12.1: ^1.12.1
60
60
  '@xmldom/xmldom@<0.8.13': ^0.9.0
61
61
  perf-primitives: ^0.0.6
62
+ '@tryghost/adapter-base-cache': file:components/tryghost-adapter-base-cache-0.2.0.tgz
62
63
  '@tryghost/adapter-base-redirects': file:components/tryghost-adapter-base-redirects-0.0.0.tgz
63
- '@tryghost/adapter-base-route-settings': file:components/tryghost-adapter-base-route-settings-0.0.0.tgz
64
64
  '@tryghost/adapter-base-scheduling': file:components/tryghost-adapter-base-scheduling-0.2.0.tgz
65
- '@tryghost/adapter-base-cache': file:components/tryghost-adapter-base-cache-0.2.0.tgz
65
+ '@tryghost/adapter-base-route-settings': file:components/tryghost-adapter-base-route-settings-0.0.0.tgz
66
66
  '@tryghost/adapter-base-sso': file:components/tryghost-adapter-base-sso-0.1.1.tgz
67
67
  '@tryghost/custom-field-types': file:components/tryghost-custom-field-types-0.0.0.tgz
68
68
  '@tryghost/kg-card-factory': file:components/tryghost-kg-card-factory-5.2.3.tgz
@@ -327,9 +327,6 @@ importers:
327
327
  csv-writer:
328
328
  specifier: 1.6.0
329
329
  version: 1.6.0
330
- date-fns:
331
- specifier: 2.30.0
332
- version: 2.30.0
333
330
  dequal:
334
331
  specifier: 2.0.3
335
332
  version: 2.0.3
@@ -1372,7 +1369,7 @@ packages:
1372
1369
  resolution: {integrity: sha512-fTAJPbBEOQgb7K2XXt3M9YDpfLrLPpbg/FrNZBOWoz6g4T/jtqPE11EnPVvIan/8dhgjC3uORcCh9kF/JuOmnA==}
1373
1370
 
1374
1371
  '@tryghost/custom-field-types@file:components/tryghost-custom-field-types-0.0.0.tgz':
1375
- resolution: {integrity: sha512-Nrx7P7q+4YnIgpv1QiFfe5KRLNdCOH1IcaQXQu9sK3IpCefmCR0h0nmdJcB6gLTcQyCGyL6zf9PteLwY4M31rA==, tarball: file:components/tryghost-custom-field-types-0.0.0.tgz}
1372
+ resolution: {integrity: sha512-mwqygO5ERA/MWya3qxsNiJiGJ2Sg/n63m/M1RbgCc7/qlLEgCJ6Z2sMCBSEPwZyY6koo7CMV5gmQm2/ZAXrGmg==, tarball: file:components/tryghost-custom-field-types-0.0.0.tgz}
1376
1373
  version: 0.0.0
1377
1374
 
1378
1375
  '@tryghost/custom-fonts@1.0.11':
@@ -1462,11 +1459,11 @@ packages:
1462
1459
  version: 1.3.3
1463
1460
 
1464
1461
  '@tryghost/kg-html-to-lexical@file:components/tryghost-kg-html-to-lexical-1.3.3.tgz':
1465
- resolution: {integrity: sha512-WfcWr11CFtT4tst1D9WP3tPSNE79F1U0NtPpqucEn+y1Slruxxw5kdnRY8HRYeyPwfXE2Rr1iVnqP9omSGSOeA==, tarball: file:components/tryghost-kg-html-to-lexical-1.3.3.tgz}
1462
+ resolution: {integrity: sha512-8EZDDKw1exkG//DFkViUx5Dxb63nodvJHfhjhbS6gYxNHy6ca6ZRtpvS6Tx9xlCQ/L5yN0EjWuBx7JegFcy1sw==, tarball: file:components/tryghost-kg-html-to-lexical-1.3.3.tgz}
1466
1463
  version: 1.3.3
1467
1464
 
1468
1465
  '@tryghost/kg-lexical-html-renderer@file:components/tryghost-kg-lexical-html-renderer-1.4.3.tgz':
1469
- resolution: {integrity: sha512-AnyKgGOxkq8nxQixpgJwSWo24zIx0WB6ZIRTKYA+0RLQft7LZGoalKNUQfvONQy++m4Y9EAqy21df8VGQvsqIA==, tarball: file:components/tryghost-kg-lexical-html-renderer-1.4.3.tgz}
1466
+ resolution: {integrity: sha512-QMgE1jlVmCexwVVp2lQqwTWOfHxryfvKKVNdj0SRBQV3mAtOKx1NOix4Cy4MXuV1PzTZ2//PeYYvJkj+myaOMg==, tarball: file:components/tryghost-kg-lexical-html-renderer-1.4.3.tgz}
1470
1467
  version: 1.4.3
1471
1468
 
1472
1469
  '@tryghost/kg-markdown-html-renderer@file:components/tryghost-kg-markdown-html-renderer-7.2.3.tgz':
@@ -1513,7 +1510,7 @@ packages:
1513
1510
  resolution: {integrity: sha512-TQRDur1miWd2ORa3XOhtw8Na8AUj/8h+epNMDgiutOyAH/RTw+d+ksLndMnm/Z9MhnKg7kFy7398peKZ7nF8bQ==}
1514
1511
 
1515
1512
  '@tryghost/parse-email-address@file:components/tryghost-parse-email-address-0.0.0.tgz':
1516
- resolution: {integrity: sha512-h1A3EInCVS4Q8+8UlPPn+0SoQ3jO6nGHACyABniU45KCbp5e47R2c24RnZakOrH57IOGn+McSifAQBTuLNGewg==, tarball: file:components/tryghost-parse-email-address-0.0.0.tgz}
1513
+ resolution: {integrity: sha512-xJlGV8ZjkKuk3f5wfCEAgAojlC9s7HtsD7rNSUJkj/H4yj3PMgWQcVlI29WgqgN8ue6iXuTpSh7zWWSgZfA5gA==, tarball: file:components/tryghost-parse-email-address-0.0.0.tgz}
1517
1514
  version: 0.0.0
1518
1515
 
1519
1516
  '@tryghost/pretty-cli@3.3.1':
@@ -220,10 +220,10 @@ overrides:
220
220
  underscore@>=1.3.2 <1.12.1: ^1.12.1
221
221
  '@xmldom/xmldom@<0.8.13': ^0.9.0
222
222
  perf-primitives: ^0.0.6
223
+ '@tryghost/adapter-base-cache': file:components/tryghost-adapter-base-cache-0.2.0.tgz
223
224
  '@tryghost/adapter-base-redirects': file:components/tryghost-adapter-base-redirects-0.0.0.tgz
224
- '@tryghost/adapter-base-route-settings': file:components/tryghost-adapter-base-route-settings-0.0.0.tgz
225
225
  '@tryghost/adapter-base-scheduling': file:components/tryghost-adapter-base-scheduling-0.2.0.tgz
226
- '@tryghost/adapter-base-cache': file:components/tryghost-adapter-base-cache-0.2.0.tgz
226
+ '@tryghost/adapter-base-route-settings': file:components/tryghost-adapter-base-route-settings-0.0.0.tgz
227
227
  '@tryghost/adapter-base-sso': file:components/tryghost-adapter-base-sso-0.1.1.tgz
228
228
  '@tryghost/custom-field-types': file:components/tryghost-custom-field-types-0.0.0.tgz
229
229
  '@tryghost/kg-card-factory': file:components/tryghost-kg-card-factory-5.2.3.tgz
package/tsconfig.json CHANGED
@@ -100,6 +100,7 @@
100
100
  "skipLibCheck": true /* Skip type checking all .d.ts files. */
101
101
  },
102
102
  "include": [
103
+ "bin/**/*.ts",
103
104
  "core/**/*.ts",
104
105
  "test/**/*.ts",
105
106
  "types/**/*.d.ts"
@@ -1,41 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{t}from"./react-Bb3IsNbi.js";import{n,t as r}from"./jsx-runtime-DX3WBWVO.js";import{a as i}from"./dist-Cb5RSHSg.js";import{n as a,t as o}from"./dist-CQJY6SVY.js";import{n as s,t as c}from"./dist-CqO2lWS0.js";var l=e(t(),1),u=e(n(),1),d=r(),f=function(){return f=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},f.apply(this,arguments)};function p(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n}function m(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}function h(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))}typeof window<`u`&&window.document&&window.document.createElement;function g(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var _=l.useEffectEvent,v=l.useInsertionEffect;function y(e){if(typeof _==`function`)return _(e);let t=l.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof v==`function`?v(()=>{t.current=e}):a(()=>{t.current=e}),l.useMemo(()=>((...e)=>t.current?.(...e)),[])}var b=l.useInsertionEffect||a;function x({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=S({defaultProp:t,onChange:n}),s=e!==void 0,c=s?e:i;{let t=l.useRef(e!==void 0);l.useEffect(()=>{let e=t.current;e!==s&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${s?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=s},[s,r])}return[c,l.useCallback(t=>{if(s){let n=C(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[s,e,a,o])]}function S({defaultProp:e,onChange:t}){let[n,r]=l.useState(e),i=l.useRef(n),a=l.useRef(t);return b(()=>{a.current=t},[t]),l.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function C(e){return typeof e==`function`}var w=`DismissableLayer`,T=`dismissableLayer.update`,E=`dismissableLayer.pointerDownOutside`,ee=`dismissableLayer.focusOutside`,te,D=l.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),O=l.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:s,onInteractOutside:u,onDismiss:f,...p}=e,m=l.useContext(D),[h,_]=l.useState(null),v=h?.ownerDocument??globalThis?.document,[,b]=l.useState({}),x=i(t,_),S=Array.from(m.layers),[C]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),w=S.indexOf(C),E=h?S.indexOf(h):-1,ee=m.layersWithOutsidePointerEventsDisabled.size>0,O=E>=w,k=l.useRef(!1),ne=re(e=>{let t=e.target;if(!(t instanceof Node))return;let n=[...m.branches].some(e=>e.contains(t));!O||n||(o?.(e),u?.(e),e.defaultPrevented||f?.())},{ownerDocument:v,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:k,dismissableSurfaces:m.dismissableSurfaces}),A=ie(e=>{if(r&&k.current)return;let t=e.target;[...m.branches].some(e=>e.contains(t))||(s?.(e),u?.(e),e.defaultPrevented||f?.())},v),j=h?E===S.length-1:!1,M=y(e=>{e.key===`Escape`&&(a?.(e),!e.defaultPrevented&&f&&(e.preventDefault(),f()))});return l.useEffect(()=>{if(j)return v.addEventListener(`keydown`,M,{capture:!0}),()=>v.removeEventListener(`keydown`,M,{capture:!0})},[v,j]),l.useEffect(()=>{if(h)return n&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(te=v.body.style.pointerEvents,v.body.style.pointerEvents=`none`),m.layersWithOutsidePointerEventsDisabled.add(h)),m.layers.add(h),ae(),()=>{n&&(m.layersWithOutsidePointerEventsDisabled.delete(h),m.layersWithOutsidePointerEventsDisabled.size===0&&(v.body.style.pointerEvents=te))}},[h,v,n,m]),l.useEffect(()=>()=>{h&&(m.layers.delete(h),m.layersWithOutsidePointerEventsDisabled.delete(h),ae())},[h,m]),l.useEffect(()=>{let e=()=>b({});return document.addEventListener(T,e),()=>document.removeEventListener(T,e)},[]),(0,d.jsx)(c.div,{...p,ref:x,style:{pointerEvents:ee?O?`auto`:`none`:void 0,...e.style},onFocusCapture:g(e.onFocusCapture,A.onFocusCapture),onBlurCapture:g(e.onBlurCapture,A.onBlurCapture),onPointerDownCapture:g(e.onPointerDownCapture,ne.onPointerDownCapture)})});O.displayName=w;var k=`DismissableLayerBranch`,ne=l.forwardRef((e,t)=>{let n=l.useContext(D),r=l.useRef(null),a=i(t,r);return l.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,d.jsx)(c.div,{...e,ref:a})});ne.displayName=k;function A(){let e=l.useContext(D),[t,n]=l.useState(null);return l.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}function re(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a}=t,s=o(e),c=l.useRef(!1),u=l.useRef(!1),d=l.useRef(new Map),f=l.useRef(()=>{});return l.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}function t(){return Array.from(d.current.values()).some(Boolean)}function o(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}function l(e){u.current&&d.current.set(e.type,!1)}let p=a=>{if(a.target&&!c.current){let o=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||j(E,s,c,{discrete:!0})},c={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?o():(n.removeEventListener(`click`,f.current),f.current=o,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();c.current=!1},m=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of m)n.addEventListener(e,o,!0),n.addEventListener(e,l);let h=window.setTimeout(()=>{n.addEventListener(`pointerdown`,p)},0);return()=>{window.clearTimeout(h),n.removeEventListener(`pointerdown`,p),n.removeEventListener(`click`,f.current);for(let e of m)n.removeEventListener(e,o,!0),n.removeEventListener(e,l)}},[n,s,r,i,a]),{onPointerDownCapture:()=>c.current=!0}}function ie(e,t=globalThis?.document){let n=o(e),r=l.useRef(!1);return l.useEffect(()=>{let e=e=>{e.target&&!r.current&&j(ee,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function ae(){let e=new CustomEvent(T);document.dispatchEvent(e)}function j(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?s(i,a):i.dispatchEvent(a)}var M=0,N=null;function oe(){l.useEffect(()=>{N||={start:se(),end:se()};let{start:e,end:t}=N;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),M++,()=>{M===1&&(N?.start.remove(),N?.end.remove(),N=null),M=Math.max(0,M-1)}},[])}function se(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var P=`focusScope.autoFocusOnMount`,F=`focusScope.autoFocusOnUnmount`,ce={bubbles:!1,cancelable:!0},le=`FocusScope`,ue=l.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:s,...u}=e,[f,p]=l.useState(null),m=o(a),h=o(s),g=l.useRef(null),_=i(t,p),v=l.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;l.useEffect(()=>{if(r){let e=function(e){if(v.paused||!f)return;let t=e.target;f.contains(t)?g.current=t:I(g.current,{select:!0})},t=function(e){if(v.paused||!f)return;let t=e.relatedTarget;t!==null&&(f.contains(t)||I(g.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&I(f)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return f&&r.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,f,v.paused]),l.useEffect(()=>{if(f){_e.add(v);let e=document.activeElement;if(!f.contains(e)){let t=new CustomEvent(P,ce);f.addEventListener(P,m),f.dispatchEvent(t),t.defaultPrevented||(de(be(pe(f)),{select:!0}),document.activeElement===e&&I(f))}return()=>{f.removeEventListener(P,m),setTimeout(()=>{let t=new CustomEvent(F,ce);f.addEventListener(F,h),f.dispatchEvent(t),t.defaultPrevented||I(e??document.body,{select:!0}),f.removeEventListener(F,h),_e.remove(v)},0)}}},[f,m,h,v]);let y=l.useCallback(e=>{if(!n&&!r||v.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=fe(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&I(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&I(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,v.paused]);return(0,d.jsx)(c.div,{tabIndex:-1,...u,ref:_,onKeyDown:y})});ue.displayName=le;function de(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(I(r,{select:t}),document.activeElement!==n)return}function fe(e){let t=pe(e);return[me(t,e),me(t.reverse(),e)]}function pe(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function me(e,t){for(let n of e)if(!he(n,{upTo:t}))return n}function he(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function ge(e){return e instanceof HTMLInputElement&&`select`in e}function I(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&ge(e)&&t&&e.select()}}var _e=ve();function ve(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=ye(e,t),e.unshift(t)},remove(t){e=ye(e,t),e[0]?.resume()}}}function ye(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function be(e){return e.filter(e=>e.tagName!==`A`)}var xe=l.useId||(()=>void 0),Se=0;function Ce(e){let[t,n]=l.useState(xe());return a(()=>{e||n(e=>e??String(Se++))},[e]),e||(t?`radix-${t}`:``)}var we=`Portal`,Te=l.forwardRef((e,t)=>{let{container:n,...r}=e,[i,o]=l.useState(!1);a(()=>o(!0),[]);let s=n||i&&globalThis?.document?.body;return s?u.createPortal((0,d.jsx)(c.div,{...r,ref:t}),s):null});Te.displayName=we;function Ee(e,t){return l.useReducer((e,n)=>t[e][n]??e,e)}var De=e=>{let{present:t,children:n}=e,r=Oe(t),i=typeof n==`function`?n({present:r.isPresent}):l.Children.only(n),a=Ae(r.ref,je(i));return typeof n==`function`||r.isPresent?l.cloneElement(i,{ref:a}):null};De.displayName=`Presence`;function Oe(e){let[t,n]=l.useState(),r=l.useRef(null),i=l.useRef(e),o=l.useRef(`none`),[s,c]=Ee(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return l.useEffect(()=>{let e=L(r.current);o.current=s===`mounted`?e:`none`},[s]),a(()=>{let t=r.current,n=i.current;if(n!==e){let r=o.current,a=L(t);e?c(`MOUNT`):a===`none`||t?.display===`none`?c(`UNMOUNT`):c(n&&r!==a?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,c]),a(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,a=a=>{let o=L(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(c(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},s=e=>{e.target===t&&(o.current=L(r.current))};return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,a),t.addEventListener(`animationend`,a),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,a),t.removeEventListener(`animationend`,a)}}else c(`ANIMATION_END`)},[t,c]),{isPresent:[`mounted`,`unmountSuspended`].includes(s),ref:l.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}function ke(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function Ae(...e){let t=l.useRef(e);return t.current=e,l.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=ke(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;e<i.length;e++){let t=i[e];typeof t==`function`?t():ke(n[e],null)}}},[])}function L(e){return e?.animationName||`none`}function je(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Me=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},R=new WeakMap,z=new WeakMap,B={},V=0,Ne=function(e){return e&&(e.host||Ne(e.parentNode))},Pe=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Ne(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Fe=function(e,t,n,r){var i=Pe(t,Array.isArray(e)?e:[e]);B[n]||(B[n]=new WeakMap);var a=B[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(R.get(e)||0)+1,l=(a.get(e)||0)+1;R.set(e,c),a.set(e,l),o.push(e),c===1&&i&&z.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),V++,function(){o.forEach(function(e){var t=R.get(e)-1,i=a.get(e)-1;R.set(e,t),a.set(e,i),t||(z.has(e)||e.removeAttribute(r),z.delete(e)),i||e.removeAttribute(n)}),V--,V||(R=new WeakMap,R=new WeakMap,z=new WeakMap,B={})}},Ie=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Me(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Fe(r,i,n,`aria-hidden`)):function(){return null}},H=`right-scroll-bar-position`,U=`width-before-scroll-bar`,Le=`with-scroll-bars-hidden`,Re=`--removed-body-scroll-bar-size`;function W(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function ze(e,t){var n=(0,l.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var Be=typeof window<`u`?l.useLayoutEffect:l.useEffect,Ve=new WeakMap;function He(e,t){var n=ze(t||null,function(t){return e.forEach(function(e){return W(e,t)})});return Be(function(){var t=Ve.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||W(e,null)}),i.forEach(function(e){r.has(e)||W(e,a)})}Ve.set(n,e)},[e]),n}function Ue(e){return e}function We(e,t){t===void 0&&(t=Ue);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function Ge(e){e===void 0&&(e={});var t=We(null);return t.options=f({async:!0,ssr:!1},e),t}var Ke=function(e){var t=e.sideCar,n=p(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return l.createElement(r,f({},n))};Ke.isSideCarExport=!0;function qe(e,t){return e.useMedium(t),Ke}var Je=Ge(),G=function(){},K=l.forwardRef(function(e,t){var n=l.useRef(null),r=l.useState({onScrollCapture:G,onWheelCapture:G,onTouchMoveCapture:G}),i=r[0],a=r[1],o=e.forwardProps,s=e.children,c=e.className,u=e.removeScrollBar,d=e.enabled,m=e.shards,h=e.sideCar,g=e.noRelative,_=e.noIsolation,v=e.inert,y=e.allowPinchZoom,b=e.as,x=b===void 0?`div`:b,S=e.gapMode,C=p(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),w=h,T=He([n,t]),E=f(f({},C),i);return l.createElement(l.Fragment,null,d&&l.createElement(w,{sideCar:Je,removeScrollBar:u,shards:m,noRelative:g,noIsolation:_,inert:v,setCallbacks:a,allowPinchZoom:!!y,lockRef:n,gapMode:S}),o?l.cloneElement(l.Children.only(s),f(f({},E),{ref:T})):l.createElement(x,f({},E,{className:c,ref:T}),s))});K.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},K.classNames={fullWidth:U,zeroRight:H};var Ye,Xe=function(){if(Ye)return Ye;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function Ze(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=Xe();return t&&e.setAttribute(`nonce`,t),e}function Qe(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function $e(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var et=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Ze())&&(Qe(t,n),$e(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},tt=function(){var e=et();return function(t,n){l.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},nt=function(){var e=tt();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},rt={left:0,top:0,right:0,gap:0},q=function(e){return parseInt(e||``,10)||0},it=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[q(n),q(r),q(i)]},at=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return rt;var t=it(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},ot=nt(),J=`data-scroll-locked`,st=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),`
2
- .${Le} {
3
- overflow: hidden ${r};
4
- padding-right: ${s}px ${r};
5
- }
6
- body[${J}] {
7
- overflow: hidden ${r};
8
- overscroll-behavior: contain;
9
- ${[t&&`position: relative ${r};`,n===`margin`&&`
10
- padding-left: ${i}px;
11
- padding-top: ${a}px;
12
- padding-right: ${o}px;
13
- margin-left:0;
14
- margin-top:0;
15
- margin-right: ${s}px ${r};
16
- `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)}
17
- }
18
-
19
- .${H} {
20
- right: ${s}px ${r};
21
- }
22
-
23
- .${U} {
24
- margin-right: ${s}px ${r};
25
- }
26
-
27
- .${H} .${H} {
28
- right: 0 ${r};
29
- }
30
-
31
- .${U} .${U} {
32
- margin-right: 0 ${r};
33
- }
34
-
35
- body[${J}] {
36
- ${Re}: ${s}px;
37
- }
38
- `},ct=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},lt=function(){l.useEffect(function(){return document.body.setAttribute(J,(ct()+1).toString()),function(){var e=ct()-1;e<=0?document.body.removeAttribute(J):document.body.setAttribute(J,e.toString())}},[])},ut=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;lt();var a=l.useMemo(function(){return at(i)},[i]);return l.createElement(ot,{styles:st(a,!t,i,n?``:`!important`)})},Y=!1;if(typeof window<`u`)try{var X=Object.defineProperty({},"passive",{get:function(){return Y=!0,!0}});window.addEventListener(`test`,X,X),window.removeEventListener(`test`,X,X)}catch{Y=!1}var Z=Y?{passive:!1}:!1,dt=function(e){return e.tagName===`TEXTAREA`},ft=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!dt(e)&&n[t]===`visible`)},pt=function(e){return ft(e,`overflowY`)},mt=function(e){return ft(e,`overflowX`)},ht=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),vt(e,r)){var i=yt(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},gt=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},_t=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},vt=function(e,t){return e===`v`?pt(t):mt(t)},yt=function(e,t){return e===`v`?gt(t):_t(t)},bt=function(e,t){return e===`h`&&t===`rtl`?-1:1},xt=function(e,t,n,r,i){var a=bt(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=yt(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&vt(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},Q=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},St=function(e){return[e.deltaX,e.deltaY]},Ct=function(e){return e&&`current`in e?e.current:e},wt=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Tt=function(e){return`
39
- .block-interactivity-${e} {pointer-events: none;}
40
- .allow-interactivity-${e} {pointer-events: all;}
41
- `},Et=0,$=[];function Dt(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),i=l.useState(Et++)[0],a=l.useState(nt)[0],o=l.useRef(e);l.useEffect(function(){o.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=h([e.lockRef.current],(e.shards||[]).map(Ct),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=l.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=Q(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=ht(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=ht(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return xt(h,t,e,h===`h`?s:c,!0)},[]),c=l.useCallback(function(e){var n=e;if(!(!$.length||$[$.length-1]!==a)){var r=`deltaY`in n?St(n):Q(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&wt(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(Ct).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=l.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Ot(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=l.useCallback(function(e){n.current=Q(e),r.current=void 0},[]),f=l.useCallback(function(t){u(t.type,St(t),t.target,s(t,e.lockRef.current))},[]),p=l.useCallback(function(t){u(t.type,Q(t),t.target,s(t,e.lockRef.current))},[]);l.useEffect(function(){return $.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,c,Z),document.addEventListener(`touchmove`,c,Z),document.addEventListener(`touchstart`,d,Z),function(){$=$.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,Z),document.removeEventListener(`touchmove`,c,Z),document.removeEventListener(`touchstart`,d,Z)}},[]);var m=e.removeScrollBar,g=e.inert;return l.createElement(l.Fragment,null,g?l.createElement(a,{styles:Tt(i)}):null,m?l.createElement(ut,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Ot(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var kt=qe(Je,Dt),At=l.forwardRef(function(e,t){return l.createElement(K,f({},e,{ref:t,sideCar:kt}))});At.classNames=K.classNames;export{Ce as a,O as c,g as d,m as f,Te as i,A as l,Ie as n,ue as o,p,De as r,oe as s,At as t,x as u};
@@ -1 +0,0 @@
1
- import "./routes-DFBeTnfn.js";