ghost 6.64.0 → 6.65.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 (672) hide show
  1. package/bin/create-migration.js +15 -0
  2. package/components/tryghost-adapter-base-scheduling-0.2.4.tgz +0 -0
  3. package/components/tryghost-api-framework-0.0.0.tgz +0 -0
  4. package/components/tryghost-i18n-0.0.0.tgz +0 -0
  5. package/components/tryghost-kg-default-cards-10.3.6.tgz +0 -0
  6. package/components/tryghost-kg-lexical-html-renderer-1.5.1.tgz +0 -0
  7. package/components/tryghost-metafield-types-0.0.0.tgz +0 -0
  8. package/content/themes/casper/assets/built/casper.js +1 -1
  9. package/content/themes/casper/assets/built/screen.css +1 -1
  10. package/content/themes/casper/assets/css/screen.css +15 -2
  11. package/content/themes/casper/assets/js/init.js +37 -9
  12. package/content/themes/casper/package.json +8 -8
  13. package/content/themes/source/assets/built/screen.css +1 -1
  14. package/content/themes/source/assets/built/source.js +1 -1
  15. package/content/themes/source/assets/css/screen.css +14 -1
  16. package/content/themes/source/assets/js/main.js +24 -4
  17. package/content/themes/source/package.json +7 -7
  18. package/core/boot.js +22 -16
  19. package/core/bridge.js +1 -1
  20. package/core/built/admin/assets/Combination-DQ6f9A5P.js +41 -0
  21. package/core/built/admin/assets/{PolarAngleAxis-a81ieQUO.js → PolarAngleAxis-BBaU7PRV.js} +1 -1
  22. package/core/built/admin/assets/RadialBarChart-Bp20JPnA.js +1 -0
  23. package/core/built/admin/assets/{about-39CAfroa.js → about-Dp43j18M.js} +1 -1
  24. package/core/built/admin/assets/accordion-h62UzFhj.js +1 -0
  25. package/core/built/admin/assets/account-migration-CBTbtX6Q.js +1 -0
  26. package/core/built/admin/assets/action-list-DC9QpX-l.js +1 -0
  27. package/core/built/admin/assets/activitypub/{account-migration-KA6Jjf9L.js → account-migration-B1DUZS4Q.js} +8 -8
  28. package/core/built/admin/assets/activitypub/activitypub.js +24 -11
  29. package/core/built/admin/assets/activitypub/avatar-CRGud8yf.js +153 -0
  30. package/core/built/admin/assets/activitypub/{avatar-flipboard-csQaNeYK.js → avatar-flipboard-BZNFAXfm.js} +3 -3
  31. package/core/built/admin/assets/activitypub/{bluesky-sharing-C7nTDMvw.js → bluesky-sharing-Cg_v-LwS.js} +30 -31
  32. package/core/built/admin/assets/activitypub/{chunk-KS7C4IRE-Ck3O4oo2.js → chunk-KS7C4IRE-CTUL98Lc.js} +2498 -1885
  33. package/core/built/admin/assets/activitypub/{content-formatters-CLcjaBwV.js → content-formatters-D7GWP7nH.js} +23 -24
  34. package/core/built/admin/assets/activitypub/{copy-DcOh8kXw.js → copy-CgzTvoeR.js} +2 -2
  35. package/core/built/admin/assets/activitypub/{domain-fZ-X8i4-.js → domain-C3G_nkHU.js} +46 -46
  36. package/core/built/admin/assets/activitypub/{edit-profile-BqMLQV88.js → edit-profile-C8cCY-AK.js} +927 -928
  37. package/core/built/admin/assets/activitypub/{explore-B4yPoP8E.js → explore-NlDT4inq.js} +11 -11
  38. package/core/built/admin/assets/activitypub/{feed-BRC_mvAe.js → feed-DF22jCTV.js} +10 -10
  39. package/core/built/admin/assets/activitypub/{field-COacNgOt.js → field-95-iuTte.js} +4 -4
  40. package/core/built/admin/assets/activitypub/{hash-C7u-irQQ.js → hash-R7LMLnhY.js} +2 -2
  41. package/core/built/admin/assets/activitypub/{inbox-CbTTdDQ3.js → inbox-DUJUiV6x.js} +2 -2
  42. package/core/built/admin/assets/activitypub/{inbox-BW-yvUoN.js → inbox-DerExBzA.js} +416 -414
  43. package/core/built/admin/assets/activitypub/{label-kPMmYI7l.js → label-EwCn1QYc.js} +4 -4
  44. package/core/built/admin/assets/activitypub/layout-Dy6NnW1G.js +1 -0
  45. package/core/built/admin/assets/activitypub/{moderation-CuidJzc0.js → moderation-BSkfiVYo.js} +73 -75
  46. package/core/built/admin/assets/activitypub/{note-CAMRRSqD.js → note-DOnAJTXK.js} +9 -9
  47. package/core/built/admin/assets/activitypub/{notifications-BmNlXGgp.js → notifications-DZc6XTjG.js} +27 -27
  48. package/core/built/admin/assets/activitypub/{onboarding-Dmun9jr_.js → onboarding-8vEIwYTH.js} +3 -3
  49. package/core/built/admin/assets/activitypub/{onboarding-Bqg7fh_L.js → onboarding-DYVqbNmp.js} +2 -2
  50. package/core/built/admin/assets/activitypub/{preferences--oH19wf9.js → preferences-DDok6F2N.js} +1418 -1390
  51. package/core/built/admin/assets/activitypub/{profile-DH_tQx2D.js → profile-DjVa2hUk.js} +254 -255
  52. package/core/built/admin/assets/activitypub/{reply-Cap9PxSH.js → reply-DtXBpHxu.js} +2 -2
  53. package/core/built/admin/assets/activitypub/routes-Cw302e1c.js +4946 -0
  54. package/core/built/admin/assets/activitypub/{separator-CAxxu8VV.js → separator-FpRpVDd3.js} +8 -9
  55. package/core/built/admin/assets/activitypub/settings-yK-puALn.js +314 -0
  56. package/core/built/admin/assets/activitypub/{site-BYps63oh.js → site-CHw0R2PA.js} +2 -2
  57. package/core/built/admin/assets/activitypub/{step-1-CKjR2KAm.js → step-1-737bnvxk.js} +7 -7
  58. package/core/built/admin/assets/activitypub/{step-2-B6PKfOUQ.js → step-2-DBaIsAsM.js} +7 -7
  59. package/core/built/admin/assets/activitypub/{step-3-C-qBbcUo.js → step-3-BBmy9m9V.js} +23 -23
  60. package/core/built/admin/assets/activitypub/tabs-LQ2xirdm.js +1101 -0
  61. package/core/built/admin/assets/activitypub/{topic-filter-DsUOuu0k.js → topic-filter-75Nu0CKj.js} +4 -4
  62. package/core/built/admin/assets/activitypub/{use-activity-pub-queries-CX9snsLs.js → use-activity-pub-queries-CYI2QJMs.js} +58 -58
  63. package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-DsJTGDSS.js → use-navigate-with-base-path-B4jZ8hyg.js} +3924 -1403
  64. package/core/built/admin/assets/activitypub/{use-reply-chain-data-AJi9zkzm.js → use-reply-chain-data-BHmFxc3U.js} +6 -6
  65. package/core/built/admin/assets/activitypub/users-CSjOwpT9.js +886 -0
  66. package/core/built/admin/assets/activitypub/{x-DR8AT3-4.js → x-B9ptWCds.js} +2 -2
  67. package/core/built/admin/assets/{add-integration-modal-B12oRifD.js → add-integration-modal-BwePhq95.js} +1 -1
  68. package/core/built/admin/assets/add-newsletter-modal-Zv0I7Msm.js +1 -0
  69. package/core/built/admin/assets/{add-recommendation-modal-CJf92edY.js → add-recommendation-modal-cdLv0wHy.js} +1 -1
  70. package/core/built/admin/assets/analytics-DY8_SaP7.js +1 -0
  71. package/core/built/admin/assets/announcement-bar-modal-C-2yWwag.js +1 -0
  72. package/core/built/admin/assets/api-keys-BHKATUqQ.js +1 -0
  73. package/core/built/admin/assets/{audience-6GXevic-.js → audience-wRcSN0jV.js} +1 -1
  74. package/core/built/admin/assets/{automated-emails-DJQ4uNZo.js → automated-emails-CzUa3v4d.js} +1 -1
  75. package/core/built/admin/assets/automations-DupSsSOr.js +1 -0
  76. package/core/built/admin/assets/badge-CI1Z0xyG.js +1 -0
  77. package/core/built/admin/assets/bluesky-sharing-B8PC1SBj.js +1 -0
  78. package/core/built/admin/assets/box-LUuYRT-1.js +1 -0
  79. package/core/built/admin/assets/brand-icon-CrmbX86T.js +1 -0
  80. package/core/built/admin/assets/breadcrumb-DDDpzLyo.js +1 -0
  81. package/core/built/admin/assets/button-D414TI3B.js +1 -0
  82. package/core/built/admin/assets/calendar-Cp_opo3i.js +1 -0
  83. package/core/built/admin/assets/card-C2dfd5u0.js +1 -0
  84. package/core/built/admin/assets/chart-B_UNLXse.js +63 -0
  85. package/core/built/admin/assets/chart-helpers-Czu_9QpJ.js +1 -0
  86. package/core/built/admin/assets/checkbox-CFFqf0Nh.js +1 -0
  87. package/core/built/admin/assets/{chunk.368.22ce1b732c0b40abd3f1.js → chunk.201.6961b57ed7a281ac193e.js} +23 -19
  88. package/core/built/admin/assets/chunk.524.0b850e72ec49a0fa3882.js +25 -0
  89. package/core/built/admin/assets/chunk.582.db2ae9e968256e8d58ac.js +27 -0
  90. package/core/built/admin/assets/code-editor-view-Bd_nnHKk.js +1 -0
  91. package/core/built/admin/assets/code-editor-view-BeU3Yf9M.js +1 -0
  92. package/core/built/admin/assets/color-picker-Bzm1V7qg.js +3 -0
  93. package/core/built/admin/assets/color-picker-field-DP0moHz9.js +1 -0
  94. package/core/built/admin/assets/combobox-6_ruuTuj.js +1 -0
  95. package/core/built/admin/assets/command-B5wfm6pd.js +1 -0
  96. package/core/built/admin/assets/comments-BB26dUSl.js +1 -0
  97. package/core/built/admin/assets/confirmation-context-znVJD4pX.js +1 -0
  98. package/core/built/admin/assets/container-CHHif8km.js +1 -0
  99. package/core/built/admin/assets/{content-api-modal-0ZjuLcQ8.js → content-api-modal-DOHwl0yZ.js} +1 -1
  100. package/core/built/admin/assets/context-menu-BpY46Dlb.js +1 -0
  101. package/core/built/admin/assets/copy-field-DRBx6Ady.js +1 -0
  102. package/core/built/admin/assets/create-ghost-browse-value-source-eIXo5Qws.js +1 -0
  103. package/core/built/admin/assets/custom-field-type-option-DrSlETOI.js +1 -0
  104. package/core/built/admin/assets/custom-integration-modal-Dgo425Ec.js +1 -0
  105. package/core/built/admin/assets/data-list-DM8yqpXi.js +1 -0
  106. package/core/built/admin/assets/date-range-select-DdC23c13.js +1 -0
  107. package/core/built/admin/assets/design-and-theme-modal-CbSu9IT4.js +2 -0
  108. package/core/built/admin/assets/detail-page-CN4NdhpV.js +1 -0
  109. package/core/built/admin/assets/dirty-confirm-dialog-BT_Vq9TD.js +1 -0
  110. package/core/built/admin/assets/{disabled-sources-indicator-CLZhMv8J.js → disabled-sources-indicator-C5xtW0Q2.js} +1 -1
  111. package/core/built/admin/assets/dist-B40T-RCQ.js +1 -0
  112. package/core/built/admin/assets/dist-CrlaEoaK.js +1 -0
  113. package/core/built/admin/assets/domain-BPReCZa8.js +1 -0
  114. package/core/built/admin/assets/dropzone-B2auMkf2.js +5 -0
  115. package/core/built/admin/assets/edit-profile-B7XTBzKe.js +1 -0
  116. package/core/built/admin/assets/editor-BcaC9dqm.js +8 -0
  117. package/core/built/admin/assets/editor-screen-FuMpItC8.js +27 -0
  118. package/core/built/admin/assets/email-sending-status-provider-9d81o1C2.js +1 -0
  119. package/core/built/admin/assets/embed-signup-form-modal-CbVbMsxl.js +8 -0
  120. package/core/built/admin/assets/empty-indicator-CSQts7GV.js +1 -0
  121. package/core/built/admin/assets/explore-DbSXFTJN.js +1 -0
  122. package/core/built/admin/assets/feature-image-placeholder-DFXA4vfJ.js +1 -0
  123. package/core/built/admin/assets/feed-W7RlF-Gp.js +1 -0
  124. package/core/built/admin/assets/field-BXEh3ptU.js +1 -0
  125. package/core/built/admin/assets/filter-sources-DHK2IoCk.js +1 -0
  126. package/core/built/admin/assets/filters-0SYNTqyQ.js +1 -0
  127. package/core/built/admin/assets/filters-DTtZKQyq.js +1 -0
  128. package/core/built/admin/assets/{first-promoter-modal-wr73Dldc.js → first-promoter-modal-DcoN_OXu.js} +1 -1
  129. package/core/built/admin/assets/{ghost-a1e6e172c6917e8ef8fa6b0007756d9b.js → ghost-25495154132af7305cb7b646fd83f48f.js} +562 -514
  130. package/core/built/admin/assets/gift-link-modal-BX-Q1TOk.js +1 -0
  131. package/core/built/admin/assets/grid-BEUIDQX7.js +1 -0
  132. package/core/built/admin/assets/growth-G6PLO4aF.js +1 -0
  133. package/core/built/admin/assets/growth-tkD-fBOY.js +3 -0
  134. package/core/built/admin/assets/heading-ih-fOVqF.js +1 -0
  135. package/core/built/admin/assets/history-modal-Ca-gStoq.js +1 -0
  136. package/core/built/admin/assets/html-field-B3CrKV9Y.js +1 -0
  137. package/core/built/admin/assets/images-H-BIm8OQ.js +1 -0
  138. package/core/built/admin/assets/{inbox-DgSZ6w2p.js → inbox-DBbDVMPz.js} +14 -14
  139. package/core/built/admin/assets/index-DOF2jDq0.js +4 -0
  140. package/core/built/admin/assets/index-JrrNchW1.css +2 -0
  141. package/core/built/admin/assets/input-group-CvH-3d3F.js +1 -0
  142. package/core/built/admin/assets/input-surface-CL23Mlh8.js +1 -0
  143. package/core/built/admin/assets/integration-header-C7GXGis_.js +1 -0
  144. package/core/built/admin/assets/invite-user-modal-EJ2_6RpV.js +1 -0
  145. package/core/built/admin/assets/isPlainObject-BzzgUf1E.js +1 -0
  146. package/core/built/admin/assets/{koenig-lexical-CXVgQFUk.js → koenig-lexical-Dkwee5FG.js} +1 -1
  147. package/core/built/admin/assets/koenig-loader-BzXCXHoA.js +2 -0
  148. package/core/built/admin/assets/kpi-card-iCDUTgOR.js +1 -0
  149. package/core/built/admin/assets/kpi-card-jTnpLKGr.js +1 -0
  150. package/core/built/admin/assets/kpi-helpers-Criu0YAf.js +1 -0
  151. package/core/built/admin/assets/kpi-tabs-DbOmmyOo.js +1 -0
  152. package/core/built/admin/assets/label-Du0yqMqL.js +1 -0
  153. package/core/built/admin/assets/label-picker-Bq1XXr1D.js +1 -0
  154. package/core/built/admin/assets/{labels-KMkFoRG6.js → labels-0x2NfLtC.js} +1 -1
  155. package/core/built/admin/assets/layout-Ckwzsnsu.js +1 -0
  156. package/core/built/admin/assets/lib-CCz2mjm8.js +2 -0
  157. package/core/built/admin/assets/link-helpers-o9GgBTni.js +1 -0
  158. package/core/built/admin/assets/{links-FwNCVyVe.js → links-Ctujreuh.js} +1 -1
  159. package/core/built/admin/assets/list-page-CH_wnDC3.js +1 -0
  160. package/core/built/admin/assets/member-activity-CsAh6MxK.js +1 -0
  161. package/core/built/admin/assets/member-activity-feed-0ytsQbtY.js +1 -0
  162. package/core/built/admin/assets/member-custom-fields-CTFGnnYv.js +1 -0
  163. package/core/built/admin/assets/member-detail-QU3vB1ML.js +1 -0
  164. package/core/built/admin/assets/members-CtMVO_AB.js +4 -0
  165. package/core/built/admin/assets/modal-page-8Ipfl51B.js +1 -0
  166. package/core/built/admin/assets/moderation-B8VtA-W0.js +1 -0
  167. package/core/built/admin/assets/multi-select-combobox-_9wEYmGv.js +1 -0
  168. package/core/built/admin/assets/navigation-modal-CGcjJvkc.js +1 -0
  169. package/core/built/admin/assets/newsletter-BpHjjqmq.js +1 -0
  170. package/core/built/admin/assets/newsletter-detail-modal-DzTbGOyo.js +1 -0
  171. package/core/built/admin/assets/newsletter-emails-BMKH4Osp.js +1 -0
  172. package/core/built/admin/assets/newsletters-BxC84_cL.js +1 -0
  173. package/core/built/admin/assets/note-BPtEzzZS.js +1 -0
  174. package/core/built/admin/assets/notifications-ng3ulEdp.js +1 -0
  175. package/core/built/admin/assets/offers-container-modal-CwqnRa3T.js +1 -0
  176. package/core/built/admin/assets/onboarding-route-CplZzd7F.js +1 -0
  177. package/core/built/admin/assets/overview-B0yD9OoX.js +1 -0
  178. package/core/built/admin/assets/overview-C4eJzQqi.js +1 -0
  179. package/core/built/admin/assets/page-header-CdCpekG9.js +1 -0
  180. package/core/built/admin/assets/pagemenu-CKQD9hoP.js +1 -0
  181. package/core/built/admin/assets/pages-route-CKsnxIvw.js +1 -0
  182. package/core/built/admin/assets/{pintura-modal-BljM7hf8.js → pintura-modal-C5jzeyGk.js} +1 -1
  183. package/core/built/admin/assets/portal-frame-DYo0bh0E.js +1 -0
  184. package/core/built/admin/assets/portal-modal-C0d8xjKa.js +1 -0
  185. package/core/built/admin/assets/post-analytics-C5C7IyAm.js +1 -0
  186. package/core/built/admin/assets/post-analytics-header-DKWHwoK2.js +1 -0
  187. package/core/built/admin/assets/{post-analytics-provider-CgreZDjS.js → post-analytics-provider-BqCPPxmW.js} +1 -1
  188. package/core/built/admin/assets/post-share-modal-wxmqbAv_.js +1 -0
  189. package/core/built/admin/assets/posts-list-screen-B978ZO0R.js +2 -0
  190. package/core/built/admin/assets/posts-route-CDqxKazl.js +1 -0
  191. package/core/built/admin/assets/preferences-CnejTRc4.js +5 -0
  192. package/core/built/admin/assets/preview-chrome-C7yZWVLZ.js +1 -0
  193. package/core/built/admin/assets/preview-modal-CFUxUGHp.js +1 -0
  194. package/core/built/admin/assets/profile-ClRGiOqA.js +1 -0
  195. package/core/built/admin/assets/radio-group-CTmLo0h9.js +1 -0
  196. package/core/built/admin/assets/router-provider-DDZvgS3V.js +1 -0
  197. package/core/built/admin/assets/select-D_4xWFYv.js +1 -0
  198. package/core/built/admin/assets/settings-BRl7-7a9.js +1 -0
  199. package/core/built/admin/assets/settings-BoQcPa-y.js +4 -0
  200. package/core/built/admin/assets/settings-breadcrumbs-C9Yxl81q.js +1 -0
  201. package/core/built/admin/assets/{dist-BXHrDV19.js → shade-scope-Cccj-c7I-D0XwkdKQ.js} +5 -3
  202. package/core/built/admin/assets/share-modal-DBqZobuR.js +1 -0
  203. package/core/built/admin/assets/simple-pagination-D5t_ox6x.js +1 -0
  204. package/core/built/admin/assets/skeleton-CPcTiTSX.js +1 -0
  205. package/core/built/admin/assets/{slack-modal-D7W_fNON.js → slack-modal-BF9ex8cd.js} +1 -1
  206. package/core/built/admin/assets/sort-button-C0EXGjnS.js +1 -0
  207. package/core/built/admin/assets/{source-icon-CQboPZQ3.js → source-icon-BzzftCQ2.js} +1 -1
  208. package/core/built/admin/assets/stats-view-CzpGoHzF.js +1 -0
  209. package/core/built/admin/assets/{step-1-BKhjy0PV.js → step-1-CBUYUPPF.js} +1 -1
  210. package/core/built/admin/assets/{step-2-PxA1OM7R.js → step-2-CEIXUwQa.js} +1 -1
  211. package/core/built/admin/assets/{step-3-BJbAiq16.js → step-3-C1HA5i1N.js} +2 -2
  212. package/core/built/admin/assets/stripe-button-DMFsLs80.js +1 -0
  213. package/core/built/admin/assets/stripe-connect-modal-CEvxCUTv.js +1 -0
  214. package/core/built/admin/assets/switch-DoOJF2yg.js +1 -0
  215. package/core/built/admin/assets/table-BDYbUHJz.js +1 -0
  216. package/core/built/admin/assets/tabs-BZyz4ZCH.js +1 -0
  217. package/core/built/admin/assets/tag-detail-CFzaz_9E.js +2 -0
  218. package/core/built/admin/assets/tag-picker-BKUCZuRc.js +1 -0
  219. package/core/built/admin/assets/tags-Bs1FiD7m.js +1 -0
  220. package/core/built/admin/assets/{testimonials-modal-Dkt6ODLW.js → testimonials-modal-CVm0_7E-.js} +1 -1
  221. package/core/built/admin/assets/text-BLI0C8Mc.js +1 -0
  222. package/core/built/admin/assets/textarea-C5qolByg.js +1 -0
  223. package/core/built/admin/assets/tier-detail-modal-Cmwzi-e7.js +1 -0
  224. package/core/built/admin/assets/toggle-group-BTL1QsWY.js +1 -0
  225. package/core/built/admin/assets/{topic-filter-DVOe3D-b.js → topic-filter-BMjhquv7.js} +1 -1
  226. package/core/built/admin/assets/transistor-modal-hMv53jF8.js +1 -0
  227. package/core/built/admin/assets/trend-badge-1w_HEzkG.js +1 -0
  228. package/core/built/admin/assets/{unsplash-modal-DXt7Brum.js → unsplash-modal-jzC8lEB2.js} +1 -1
  229. package/core/built/admin/assets/use-analytics-data-B3lGOxsC.js +1 -0
  230. package/core/built/admin/assets/use-availability-DnKqOyqd.js +1 -0
  231. package/core/built/admin/assets/{use-check-theme-limit-error-JD-J5aaZ.js → use-check-theme-limit-error-C1tc2P4N.js} +2 -2
  232. package/core/built/admin/assets/use-filter-params-DU-aiaTb.js +1 -0
  233. package/core/built/admin/assets/{use-filterable-api-CEMSAYPg.js → use-filterable-api-CxCrnPxG.js} +1 -1
  234. package/core/built/admin/assets/use-growth-stats-E13rMQUE.js +1 -0
  235. package/core/built/admin/assets/use-limiter-DlL7au90.js +19 -0
  236. package/core/built/admin/assets/{use-navigate-with-base-path-88EQpw2k.js → use-navigate-with-base-path-BzgNwMAx.js} +1 -1
  237. package/core/built/admin/assets/{use-pintura-config-BmU45Ruy.js → use-pintura-config-CtEV1JQY.js} +1 -1
  238. package/core/built/admin/assets/{use-pintura-editor-Bz2bZ4iT.js → use-pintura-editor-CaxE64kD.js} +1 -1
  239. package/core/built/admin/assets/use-reply-chain-data-BST2OgCM.js +1 -0
  240. package/core/built/admin/assets/use-sending-eta-DR9ueMH8.js +1 -0
  241. package/core/built/admin/assets/use-setting-group-ldtX1Vsk.js +1 -0
  242. package/core/built/admin/assets/use-settings-navigation-CzGU4sus.js +1 -0
  243. package/core/built/admin/assets/use-staff-users-DoeXaPsb.js +1 -0
  244. package/core/built/admin/assets/use-tinybird-query-BaBNCaj0.js +1 -0
  245. package/core/built/admin/assets/{use-tinybird-token-Lk1RSn0t.js → use-tinybird-token-CnZ19NDf.js} +1 -1
  246. package/core/built/admin/assets/{use-url-input-DpmbDppC.js → use-url-input-C5KHJw79.js} +1 -1
  247. package/core/built/admin/assets/user-detail-modal-Dm0KfPeR.js +1 -0
  248. package/core/built/admin/assets/{vendor-2dd263291938d407802568d3357ec69e.js → vendor-97e91ff8dd1457c668f9ef103ee1a77b.js} +2748 -2977
  249. package/core/built/admin/assets/virtual-list-tAuPUICw.js +1 -0
  250. package/core/built/admin/assets/web-BQlKcW2x.js +2 -0
  251. package/core/built/admin/assets/web-NTT5DkEz.js +1 -0
  252. package/core/built/admin/assets/{zapier-modal-BafLUO4R.js → zapier-modal-DsHG9Oev.js} +1 -1
  253. package/core/built/admin/index.html +22 -24
  254. package/core/frontend/apps/private-blogging/index.js +2 -2
  255. package/core/frontend/apps/private-blogging/lib/middleware.js +1 -1
  256. package/core/frontend/apps/private-blogging/lib/router.js +1 -1
  257. package/core/frontend/helpers/cancel_link.js +3 -3
  258. package/core/frontend/helpers/content.js +2 -2
  259. package/core/frontend/helpers/content_api_url.js +1 -1
  260. package/core/frontend/helpers/date.js +1 -1
  261. package/core/frontend/helpers/foreach.js +5 -5
  262. package/core/frontend/helpers/get.js +7 -4
  263. package/core/frontend/helpers/ghost_head.js +2 -2
  264. package/core/frontend/helpers/has.js +1 -3
  265. package/core/frontend/helpers/link.js +7 -7
  266. package/core/frontend/helpers/link_class.js +2 -2
  267. package/core/frontend/helpers/navigation.js +1 -2
  268. package/core/frontend/helpers/recommendations.js +5 -6
  269. package/core/frontend/helpers/tiers.js +1 -1
  270. package/core/frontend/helpers/total_members.js +1 -1
  271. package/core/frontend/helpers/total_paid_members.js +1 -1
  272. package/core/frontend/meta/author-url.js +1 -1
  273. package/core/frontend/meta/modified-date.js +1 -1
  274. package/core/frontend/meta/published-date.js +1 -1
  275. package/core/frontend/meta/schema.js +3 -8
  276. package/core/frontend/meta/structured-data.js +1 -2
  277. package/core/frontend/services/assets-minification/minifier.js +1 -1
  278. package/core/frontend/services/data/entry-lookup.js +1 -1
  279. package/core/frontend/services/data/fetch-data.js +2 -2
  280. package/core/frontend/services/rendering/format-response.js +1 -1
  281. package/core/frontend/services/rendering/renderer.js +3 -0
  282. package/core/frontend/services/rendering/templates.js +1 -1
  283. package/core/frontend/services/routing/controllers/static.js +1 -1
  284. package/core/frontend/services/routing/parent-router.js +1 -1
  285. package/core/frontend/services/routing/registry.js +1 -1
  286. package/core/frontend/services/sitemap/base-site-map-generator.js +68 -97
  287. package/core/frontend/services/sitemap/site-map-index-generator.js +16 -21
  288. package/core/frontend/services/sitemap/site-map-manager.js +82 -43
  289. package/core/frontend/services/sitemap/sitemap-xml.js +72 -0
  290. package/core/frontend/services/theme-engine/handlebars/utils.js +8 -8
  291. package/core/frontend/services/theme-engine/i18n/i18n.js +4 -5
  292. package/core/frontend/services/theme-engine/middleware/update-global-template-options.js +1 -1
  293. package/core/frontend/services/theme-engine/preview.js +1 -1
  294. package/core/frontend/utils/member-count.js +2 -2
  295. package/core/frontend/web/routers/serve-public-file.js +1 -1
  296. package/core/server/adapters/scheduling/README.md +4 -0
  297. package/core/server/adapters/scheduling/get-scheduler-idempotency-key.js +21 -0
  298. package/core/server/adapters/storage/LocalStorageBase.js +2 -1
  299. package/core/server/api/endpoints/automated-emails.js +8 -2
  300. package/core/server/api/endpoints/db.js +1 -1
  301. package/core/server/api/endpoints/emails.js +3 -3
  302. package/core/server/api/endpoints/mail.js +1 -1
  303. package/core/server/api/endpoints/member-signin-urls.js +1 -1
  304. package/core/server/api/endpoints/members.js +3 -3
  305. package/core/server/api/endpoints/oembed.js +1 -1
  306. package/core/server/api/endpoints/posts.js +1 -1
  307. package/core/server/api/endpoints/settings.js +2 -2
  308. package/core/server/api/endpoints/themes.js +5 -5
  309. package/core/server/api/endpoints/utils/serializers/input/pages.js +2 -2
  310. package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -2
  311. package/core/server/api/endpoints/utils/serializers/input/tags.js +1 -1
  312. package/core/server/api/endpoints/utils/serializers/input/utils/slug-filter-order.js +4 -4
  313. package/core/server/api/endpoints/utils/serializers/output/mappers/comments.js +8 -5
  314. package/core/server/api/endpoints/utils/serializers/output/mappers/posts.js +1 -1
  315. package/core/server/api/endpoints/utils/serializers/output/pages.js +4 -4
  316. package/core/server/api/endpoints/utils/serializers/output/posts.js +4 -4
  317. package/core/server/api/endpoints/utils/serializers/output/search-index.js +11 -11
  318. package/core/server/api/endpoints/utils/serializers/output/settings.js +1 -1
  319. package/core/server/api/endpoints/utils/serializers/output/utils/extra-attrs.js +3 -3
  320. package/core/server/api/endpoints/utils/validators/input/automated_emails.js +23 -33
  321. package/core/server/api/endpoints/utils/validators/input/settings.js +3 -3
  322. package/core/server/data/exporter/exporter.js +1 -2
  323. package/core/server/data/exporter/table-lists.js +1 -0
  324. package/core/server/data/importer/handlers/image.js +1 -2
  325. package/core/server/data/importer/handlers/json.js +1 -3
  326. package/core/server/data/importer/handlers/markdown.js +4 -8
  327. package/core/server/data/importer/import-manager.js +1 -1
  328. package/core/server/data/importer/importers/content-file-importer.js +4 -8
  329. package/core/server/data/importer/importers/data/base.js +10 -10
  330. package/core/server/data/importer/importers/data/custom-theme-settings-importer.js +1 -1
  331. package/core/server/data/importer/importers/data/data-importer.js +3 -4
  332. package/core/server/data/importer/importers/data/posts-importer.js +10 -10
  333. package/core/server/data/importer/importers/data/products-importer.js +3 -3
  334. package/core/server/data/importer/importers/data/settings-importer.js +2 -2
  335. package/core/server/data/importer/importers/data/stripe-prices-importer.js +1 -1
  336. package/core/server/data/importer/importers/data/stripe-products-importer.js +1 -1
  337. package/core/server/data/importer/importers/data/tags-importer.js +1 -1
  338. package/core/server/data/importer/importers/data/users-importer.js +2 -2
  339. package/core/server/data/importer/importers/json-to-html.js +12 -9
  340. package/core/server/data/migrations/versions/5.0/2022-05-11-13-12-rename-settings.js +1 -1
  341. package/core/server/data/migrations/versions/6.65/2026-09-16-15-35-26-add-members-metafield-change-events.js +17 -0
  342. package/core/server/data/schema/fixtures/fixture-manager.js +3 -3
  343. package/core/server/data/schema/index.js +1 -1
  344. package/core/server/data/schema/schema.js +26 -0
  345. package/core/server/data/schema/validator.js +96 -123
  346. package/core/server/data/seeders/importers/email-recipients-importer.js +2 -2
  347. package/core/server/data/seeders/importers/members-login-events-importer.js +1 -1
  348. package/core/server/data/seeders/importers/members-newsletters-importer.js +1 -1
  349. package/core/server/data/seeders/importers/members-paid-subscription-events-importer.js +1 -1
  350. package/core/server/data/seeders/importers/members-status-events-importer.js +1 -1
  351. package/core/server/data/seeders/importers/members-stripe-customers-importer.js +1 -1
  352. package/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js +1 -1
  353. package/core/server/data/seeders/importers/members-subscribe-events-importer.js +2 -2
  354. package/core/server/data/seeders/importers/members-subscription-created-events-importer.js +1 -1
  355. package/core/server/data/tinybird/pipes/mv_hits.pipe +25 -20
  356. package/core/server/data/tinybird/scripts/docker-analytics-manager.js +2 -2
  357. package/core/server/ghost-server.js +1 -19
  358. package/core/server/lib/image/image-size.js +1 -3
  359. package/core/server/lib/request-external.js +53 -117
  360. package/core/server/models/base/plugins/actions.js +2 -3
  361. package/core/server/models/base/plugins/crud.js +1 -2
  362. package/core/server/models/base/plugins/events.js +4 -4
  363. package/core/server/models/base/plugins/raw-knex.js +3 -3
  364. package/core/server/models/base/plugins/sanitize.js +1 -1
  365. package/core/server/models/benefit.js +1 -1
  366. package/core/server/models/collection.js +1 -1
  367. package/core/server/models/comment.js +3 -3
  368. package/core/server/models/invite.js +2 -5
  369. package/core/server/models/label.js +3 -6
  370. package/core/server/models/member.js +7 -10
  371. package/core/server/models/newsletter.js +1 -1
  372. package/core/server/models/permission.js +3 -6
  373. package/core/server/models/post.js +20 -23
  374. package/core/server/models/product.js +4 -1
  375. package/core/server/models/relations/authors.js +9 -12
  376. package/core/server/models/role.js +2 -5
  377. package/core/server/models/settings.js +3 -3
  378. package/core/server/models/tag.js +2 -5
  379. package/core/server/models/user.js +8 -10
  380. package/core/server/models/webhook.js +2 -4
  381. package/core/server/notify.js +2 -2
  382. package/core/server/services/adapter-manager/utils.js +6 -1
  383. package/core/server/services/api-version-compatibility/legacy-api-path-match.js +2 -2
  384. package/core/server/services/auth/api-key/admin.js +2 -2
  385. package/core/server/services/auth/api-key/content.js +1 -1
  386. package/core/server/services/auth/passwordreset.js +1 -1
  387. package/core/server/services/auth/setup.js +1 -3
  388. package/core/server/services/automations/README.md +19 -0
  389. package/core/server/services/automations/poll.js +3 -1
  390. package/core/server/services/automations/service.js +2 -2
  391. package/core/server/services/automations/welcome-email-automation-poll.js +199 -293
  392. package/core/server/services/comments/comments-controller.js +9 -30
  393. package/core/server/services/comments/comments-service-email-renderer.js +1 -1
  394. package/core/server/services/comments/comments-service-emails.js +1 -1
  395. package/core/server/services/comments/comments-service.js +27 -58
  396. package/core/server/services/comments/comments-stats-service.js +1 -1
  397. package/core/server/services/content-import/import/staged-file.js +9 -9
  398. package/core/server/services/content-import/index.js +1 -1
  399. package/core/server/services/custom-redirects/validation.js +1 -1
  400. package/core/server/services/email-analytics/email-analytics-service-wrapper.js +23 -55
  401. package/core/server/services/email-analytics/index.js +35 -19
  402. package/core/server/services/email-analytics/jobs/email-analytics-job-scheduler.js +31 -60
  403. package/core/server/services/email-service/README.md +35 -0
  404. package/core/server/services/email-service/batch-sending-service.js +13 -14
  405. package/core/server/services/email-service/email-renderer.js +50 -14
  406. package/core/server/services/email-service/email-service-wrapper.js +3 -2
  407. package/core/server/services/email-service/email-service.js +33 -8
  408. package/core/server/services/email-service/email-templates/partials/feedback-button.hbs +2 -1
  409. package/core/server/services/email-service/email-templates/partials/styles.hbs +0 -6
  410. package/core/server/services/email-service/email-templates/template.hbs +1 -1
  411. package/core/server/services/email-service/jobs/send-email-job.js +12 -0
  412. package/core/server/services/email-service/mailgun-email-provider.js +7 -2
  413. package/core/server/services/email-service/sending-service.js +1 -1
  414. package/core/server/services/gifts/gift-service.js +12 -3
  415. package/core/server/services/gifts/index.js +0 -2
  416. package/core/server/services/gifts/jobs/index.js +12 -24
  417. package/core/server/services/gifts/jobs/send-gift-reminders-job.js +6 -46
  418. package/core/server/services/invitations/accept.js +2 -2
  419. package/core/server/services/jobs/job-service.js +0 -28
  420. package/core/server/services/jobs-service/jobs-service.js +5 -0
  421. package/core/server/services/jobs-service/register-job-handlers.js +17 -1
  422. package/core/server/services/lib/mailgun-client.js +16 -1
  423. package/core/server/services/lib/mailgun-recipient-message-id.js +49 -0
  424. package/core/server/services/limits.js +1 -1
  425. package/core/server/services/mail/ghost-mailer.js +1 -1
  426. package/core/server/services/member-attribution/member-attribution-service.js +1 -1
  427. package/core/server/services/member-attribution/referrer-translator.js +1 -1
  428. package/core/server/services/members/account-service.js +3 -3
  429. package/core/server/services/members/api.js +1 -1
  430. package/core/server/services/members/import-export/import/importer.js +25 -16
  431. package/core/server/services/members/import-export/import/spool.js +11 -15
  432. package/core/server/services/members/import-export/index.js +6 -4
  433. package/core/server/services/members/jobs/index.js +1 -1
  434. package/core/server/services/members/jobs/members-import-job.js +18 -0
  435. package/core/server/services/members/member-avatar.js +18 -0
  436. package/core/server/services/members/members-api/controllers/member-controller.js +2 -2
  437. package/core/server/services/members/members-api/members-api.js +4 -4
  438. package/core/server/services/members/members-api/repositories/event-repository.js +36 -1
  439. package/core/server/services/members/members-api/repositories/member-repository.js +55 -17
  440. package/core/server/services/members/members-api/repositories/product-repository.js +1 -1
  441. package/core/server/services/members/members-api/services/member-bread-service.js +4 -7
  442. package/core/server/services/members/service.js +7 -2
  443. package/core/server/services/members/stats/members-stats.js +2 -2
  444. package/core/server/services/members-events/event-storage.js +2 -2
  445. package/core/server/services/members-metafields/actions.js +23 -2
  446. package/core/server/services/members-metafields/bindings-service.js +5 -5
  447. package/core/server/services/members-metafields/definitions-service.js +2 -7
  448. package/core/server/services/members-metafields/index.js +2 -1
  449. package/core/server/services/members-metafields/queries.js +7 -1
  450. package/core/server/services/members-metafields/schema.js +49 -1
  451. package/core/server/services/members-metafields/values-service.js +112 -10
  452. package/core/server/services/mentions/mention-sending-service.js +2 -2
  453. package/core/server/services/mentions/mention.js +3 -4
  454. package/core/server/services/mentions/mentions-api.js +4 -1
  455. package/core/server/services/mentions-jobs/job-service.js +0 -28
  456. package/core/server/services/milestones/milestones-service.js +1 -1
  457. package/core/server/services/newsletters/newsletters-service.js +1 -1
  458. package/core/server/services/notifications/notifications.js +3 -3
  459. package/core/server/services/oembed/oembed-service.js +79 -3
  460. package/core/server/services/permissions/can-this.js +1 -2
  461. package/core/server/services/post-scheduling/post-scheduling.js +8 -1
  462. package/core/server/services/posts/post-scheduling.js +7 -0
  463. package/core/server/services/settings/settings-bread-service.js +3 -3
  464. package/core/server/services/settings/settings-utils.js +1 -1
  465. package/core/server/services/settings-helpers/settings-helpers.js +1 -1
  466. package/core/server/services/staff/staff-service-emails.js +9 -9
  467. package/core/server/services/stats/posts-stats-service.js +10 -10
  468. package/core/server/services/stats/referrers-stats-service.js +1 -1
  469. package/core/server/services/stats/subscription-stats-service.js +3 -3
  470. package/core/server/services/stats/utils/tinybird.js +8 -1
  471. package/core/server/services/stripe/stripe-api.js +3 -3
  472. package/core/server/services/stripe/stripe-migrations.js +6 -6
  473. package/core/server/services/themes/storage.js +21 -26
  474. package/core/server/services/themes/theme-storage.js +2 -2
  475. package/core/server/services/tiers/tier.js +15 -15
  476. package/core/server/services/tinybird-sync/index.js +3 -0
  477. package/core/server/services/tinybird-sync/tinybird-sync-service.js +7 -2
  478. package/core/server/services/update-check/update-check-service.js +3 -3
  479. package/core/server/services/webhooks/serialize.js +1 -1
  480. package/core/server/web/api/app.js +0 -5
  481. package/core/server/web/api/middleware/upload.js +29 -2
  482. package/core/server/web/parent/middleware/index.js +1 -1
  483. package/core/server/web/parent/middleware/log-request.js +5 -0
  484. package/core/server/web/parent/middleware/queue-request.js +104 -59
  485. package/core/server/web/shared/middleware/api/spam-prevention.js +2 -2
  486. package/core/shared/config/defaults.json +6 -1
  487. package/core/shared/custom-theme-settings-cache/custom-theme-settings-service.js +1 -1
  488. package/core/shared/labs.js +3 -2
  489. package/core/shared/settings-cache/cache-manager.js +1 -1
  490. package/nodemon.json +1 -1
  491. package/package.json +6 -7
  492. package/pnpm-lock.yaml +126 -728
  493. package/pnpm-workspace.yaml +4 -7
  494. package/tsconfig.json +1 -1
  495. package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
  496. package/core/built/admin/assets/Combination-DWfJPcz9.js +0 -41
  497. package/core/built/admin/assets/RadialBarChart-CHRBhiBN.js +0 -1
  498. package/core/built/admin/assets/_baseAssignValue-DcPokYW8.js +0 -1
  499. package/core/built/admin/assets/accordion-CJmRaqK7.js +0 -1
  500. package/core/built/admin/assets/account-migration-DYf7skbb.js +0 -1
  501. package/core/built/admin/assets/action-list-Crnh-_UI.js +0 -1
  502. package/core/built/admin/assets/activitypub/avatar-DVJF5bxP.js +0 -261
  503. package/core/built/admin/assets/activitypub/layout-BL4_jtuV.js +0 -1
  504. package/core/built/admin/assets/activitypub/routes-DdyY9uFF.js +0 -7181
  505. package/core/built/admin/assets/activitypub/settings-B6EEcVkW.js +0 -315
  506. package/core/built/admin/assets/activitypub/tabs-DLhZtVde.js +0 -1083
  507. package/core/built/admin/assets/activitypub/users-inweyKL5.js +0 -1499
  508. package/core/built/admin/assets/add-newsletter-modal-CTvXiIqY.js +0 -1
  509. package/core/built/admin/assets/analytics-PHR1Fggi.js +0 -1
  510. package/core/built/admin/assets/announcement-bar-modal-Bql0CXdp.js +0 -1
  511. package/core/built/admin/assets/api-keys-CubH-7_H.js +0 -1
  512. package/core/built/admin/assets/automations-DcZSLFDU.js +0 -1
  513. package/core/built/admin/assets/badge-qP06OT7C.js +0 -1
  514. package/core/built/admin/assets/bluesky-sharing-CJw4d4Mf.js +0 -1
  515. package/core/built/admin/assets/box-CZ_LSVSy.js +0 -1
  516. package/core/built/admin/assets/brand-icon-D3ffDYaC.js +0 -1
  517. package/core/built/admin/assets/breadcrumb-Chn1Ip_q.js +0 -1
  518. package/core/built/admin/assets/button-DvIh2Bq-.js +0 -1
  519. package/core/built/admin/assets/calendar-1QGoStFM.js +0 -1
  520. package/core/built/admin/assets/card-FHQ4D10L.js +0 -1
  521. package/core/built/admin/assets/chart-helpers-CNpA7re_.js +0 -1
  522. package/core/built/admin/assets/chart-jVz9Nf9t.js +0 -63
  523. package/core/built/admin/assets/checkbox-DKht9xMl.js +0 -1
  524. package/core/built/admin/assets/chunk.524.cc9be98e44890cedc8c8.js +0 -25
  525. package/core/built/admin/assets/chunk.582.e6fe742b3217207b11a6.js +0 -27
  526. package/core/built/admin/assets/code-editor-view-BLQIV85-.js +0 -1
  527. package/core/built/admin/assets/code-editor-view-Cg5eJxcr.js +0 -1
  528. package/core/built/admin/assets/color-picker-DQoghc0t.js +0 -3
  529. package/core/built/admin/assets/color-picker-field-BbeK5RRs.js +0 -1
  530. package/core/built/admin/assets/combobox-weO4FBbv.js +0 -1
  531. package/core/built/admin/assets/command-DlLrCm9V.js +0 -1
  532. package/core/built/admin/assets/comments-BjTitLmP.js +0 -1
  533. package/core/built/admin/assets/confirmation-context-IyqoXVk-.js +0 -1
  534. package/core/built/admin/assets/container-DAimjOF_.js +0 -1
  535. package/core/built/admin/assets/context-menu-BtioYFrg.js +0 -1
  536. package/core/built/admin/assets/copy-field-C6ujqJlP.js +0 -1
  537. package/core/built/admin/assets/create-ghost-browse-value-source-DAZMWZNq.js +0 -1
  538. package/core/built/admin/assets/custom-integration-modal-Dm8QI_J4.js +0 -1
  539. package/core/built/admin/assets/data-list-C0CKkeWW.js +0 -1
  540. package/core/built/admin/assets/date-range-select-DrjHQdgz.js +0 -1
  541. package/core/built/admin/assets/design-and-theme-modal-CXVOzBWu.js +0 -2
  542. package/core/built/admin/assets/detail-page-QpLIL-EO.js +0 -1
  543. package/core/built/admin/assets/dirty-confirm-dialog-DWwxREGh.js +0 -1
  544. package/core/built/admin/assets/dist-Bf-HQtVL.js +0 -1
  545. package/core/built/admin/assets/dist-CUwte9v_.js +0 -1
  546. package/core/built/admin/assets/dist-FEQQAwTe.js +0 -1
  547. package/core/built/admin/assets/domain-DBrBic6q.js +0 -1
  548. package/core/built/admin/assets/dropzone-D61QVcEY.js +0 -5
  549. package/core/built/admin/assets/edit-profile-jCqJBxqw.js +0 -1
  550. package/core/built/admin/assets/editor-8Fm4UBEd.js +0 -8
  551. package/core/built/admin/assets/editor-screen-BSX_uC2B.js +0 -27
  552. package/core/built/admin/assets/email-sending-status-provider-DnNhlIvt.js +0 -1
  553. package/core/built/admin/assets/embed-signup-form-modal-DqtBs1WE.js +0 -8
  554. package/core/built/admin/assets/empty-indicator-L4Ql5Db7.js +0 -1
  555. package/core/built/admin/assets/en-Cx75dJv5.js +0 -1
  556. package/core/built/admin/assets/explore-DXhDCtKw.js +0 -1
  557. package/core/built/admin/assets/feature-image-placeholder-e2q6TcH6.js +0 -1
  558. package/core/built/admin/assets/feed-mmt4noNL.js +0 -1
  559. package/core/built/admin/assets/field-p7KnP98B.js +0 -1
  560. package/core/built/admin/assets/filter-bar-CiIKBg3D.js +0 -1
  561. package/core/built/admin/assets/filter-sources-I-dRaQxl.js +0 -1
  562. package/core/built/admin/assets/filters-1injvyxJ.js +0 -1
  563. package/core/built/admin/assets/filters-DnpO6GWX.js +0 -1
  564. package/core/built/admin/assets/gift-link-modal-C3H7YFXO.js +0 -1
  565. package/core/built/admin/assets/grid-5vplBYri.js +0 -1
  566. package/core/built/admin/assets/growth-B1og1kQp.js +0 -1
  567. package/core/built/admin/assets/growth-Bf6OHZlK.js +0 -3
  568. package/core/built/admin/assets/heading-BB21QAbb.js +0 -1
  569. package/core/built/admin/assets/history-modal-t_qEnxPx.js +0 -1
  570. package/core/built/admin/assets/html-field-COLQbV4r.js +0 -1
  571. package/core/built/admin/assets/images-4mvoc3lB.js +0 -1
  572. package/core/built/admin/assets/index-B3HZU2i8.css +0 -2
  573. package/core/built/admin/assets/index-DDd-zhNL.js +0 -4
  574. package/core/built/admin/assets/inline-B8H6NzIw.js +0 -1
  575. package/core/built/admin/assets/input-group-CLIN2ykI.js +0 -1
  576. package/core/built/admin/assets/input-surface-wSO5CRy5.js +0 -1
  577. package/core/built/admin/assets/integration-header-CKGrXNVP.js +0 -1
  578. package/core/built/admin/assets/invite-user-modal-BaN2mdhI.js +0 -1
  579. package/core/built/admin/assets/koenig-loader-B1XPPY5C.js +0 -2
  580. package/core/built/admin/assets/kpi-card-CRLPVlFW.js +0 -1
  581. package/core/built/admin/assets/kpi-card-CRPbW8NZ.js +0 -1
  582. package/core/built/admin/assets/kpi-helpers-D7zT96bp.js +0 -1
  583. package/core/built/admin/assets/kpi-tabs-DE_yh9Go.js +0 -1
  584. package/core/built/admin/assets/label-CgeBxy4o.js +0 -1
  585. package/core/built/admin/assets/label-picker-DGDp4Vwr.js +0 -1
  586. package/core/built/admin/assets/layout-DWnOMly4.js +0 -1
  587. package/core/built/admin/assets/lib-_QYaUU89.js +0 -2
  588. package/core/built/admin/assets/link-helpers-8J7ixADV.js +0 -1
  589. package/core/built/admin/assets/list-page-DLMP0PxC.js +0 -1
  590. package/core/built/admin/assets/member-activity-ClMWFyvN.js +0 -1
  591. package/core/built/admin/assets/member-activity-feed-BQY5Rwaj.js +0 -1
  592. package/core/built/admin/assets/member-custom-fields-Dd_ie1zG.js +0 -1
  593. package/core/built/admin/assets/member-detail-DjwkGVne.js +0 -1
  594. package/core/built/admin/assets/members--N9lhk1N.js +0 -4
  595. package/core/built/admin/assets/modal-page-Dz-9TP4E.js +0 -1
  596. package/core/built/admin/assets/moderation-DfYBKq9s.js +0 -1
  597. package/core/built/admin/assets/multi-select-combobox-BcBEzUW_.js +0 -1
  598. package/core/built/admin/assets/navigation-modal-Cd-scywg.js +0 -1
  599. package/core/built/admin/assets/newsletter-detail-modal-CFRY6vg_.js +0 -1
  600. package/core/built/admin/assets/newsletter-emails-4ntck1AC.js +0 -1
  601. package/core/built/admin/assets/newsletter-o6eCJtab.js +0 -1
  602. package/core/built/admin/assets/newsletters-Bmlv0edG.js +0 -1
  603. package/core/built/admin/assets/note-CWs3LF-0.js +0 -1
  604. package/core/built/admin/assets/notifications-BjSvTJqh.js +0 -1
  605. package/core/built/admin/assets/offers-container-modal-Bc9A196w.js +0 -1
  606. package/core/built/admin/assets/onboarding-route-Di1LJYEE.js +0 -1
  607. package/core/built/admin/assets/overview-DE7NHZQN.js +0 -1
  608. package/core/built/admin/assets/overview-DEF-ZY6x.js +0 -1
  609. package/core/built/admin/assets/page-header-B-G_g42C.js +0 -1
  610. package/core/built/admin/assets/pagemenu-CnkTDO71.js +0 -1
  611. package/core/built/admin/assets/pages-route-VT7r7YhG.js +0 -1
  612. package/core/built/admin/assets/portal-frame-D9V8iq5x.js +0 -1
  613. package/core/built/admin/assets/portal-modal-B5OOR9ZD.js +0 -1
  614. package/core/built/admin/assets/post-analytics-header-J0WciLx6.js +0 -1
  615. package/core/built/admin/assets/post-analytics-rGb-PgD-.js +0 -1
  616. package/core/built/admin/assets/post-share-modal-D0BbTo4W.js +0 -1
  617. package/core/built/admin/assets/posts-list-screen-CO5jAWoU.js +0 -2
  618. package/core/built/admin/assets/posts-route-DV-CXWK9.js +0 -1
  619. package/core/built/admin/assets/preferences-Tac29oG6.js +0 -5
  620. package/core/built/admin/assets/preview-chrome-C2lQgZBZ.js +0 -1
  621. package/core/built/admin/assets/preview-modal-CjRbBr8U.js +0 -1
  622. package/core/built/admin/assets/profile-yiM1f_Og.js +0 -1
  623. package/core/built/admin/assets/radio-group-CKROWsw4.js +0 -1
  624. package/core/built/admin/assets/router-provider-CU87qxXw.js +0 -1
  625. package/core/built/admin/assets/select-CKaC4ggu.js +0 -1
  626. package/core/built/admin/assets/settings-81kxUa28.js +0 -1
  627. package/core/built/admin/assets/settings-BVXFqBVK.js +0 -4
  628. package/core/built/admin/assets/settings-breadcrumbs-czGRx-iu.js +0 -1
  629. package/core/built/admin/assets/shade-app-CcS3f8MZ-D5BnfHck.js +0 -3
  630. package/core/built/admin/assets/share-modal-BL-16PiB.js +0 -1
  631. package/core/built/admin/assets/skeleton-DwCva0-b.js +0 -1
  632. package/core/built/admin/assets/sort-button-Dquc83jY.js +0 -1
  633. package/core/built/admin/assets/stack-BURz77VS.js +0 -1
  634. package/core/built/admin/assets/stats-view-NDja_g96.js +0 -1
  635. package/core/built/admin/assets/stripe-button-C3cfCAou.js +0 -1
  636. package/core/built/admin/assets/stripe-connect-modal-FyE3Ey2c.js +0 -1
  637. package/core/built/admin/assets/switch-zfUUy9Jh.js +0 -1
  638. package/core/built/admin/assets/table-dE4GTIRT.js +0 -1
  639. package/core/built/admin/assets/tabs-B3XK93sR.js +0 -1
  640. package/core/built/admin/assets/tag-detail-D4P-tZdM.js +0 -2
  641. package/core/built/admin/assets/tag-picker-BNSZ6Qxw.js +0 -1
  642. package/core/built/admin/assets/tags-BsZcaJ6h.js +0 -1
  643. package/core/built/admin/assets/text-DC-ot6u2.js +0 -1
  644. package/core/built/admin/assets/textarea-B4FffFmE.js +0 -1
  645. package/core/built/admin/assets/tier-detail-modal-a77Z2VMH.js +0 -1
  646. package/core/built/admin/assets/toggle-group-D2p4okmJ.js +0 -1
  647. package/core/built/admin/assets/transistor-modal-C8RMkhOD.js +0 -1
  648. package/core/built/admin/assets/trend-badge-B9v7kMF8.js +0 -1
  649. package/core/built/admin/assets/types-uYQ1HgqL.js +0 -1
  650. package/core/built/admin/assets/use-analytics-data-ChHqiZXv.js +0 -1
  651. package/core/built/admin/assets/use-availability-hPdeG76y.js +0 -1
  652. package/core/built/admin/assets/use-filter-params-BSFigDIn.js +0 -1
  653. package/core/built/admin/assets/use-growth-stats-CqqdnESN.js +0 -1
  654. package/core/built/admin/assets/use-limiter-DBGjYqu7.js +0 -19
  655. package/core/built/admin/assets/use-reply-chain-data-DmD2yX5D.js +0 -1
  656. package/core/built/admin/assets/use-sending-eta-CQeG6OP_.js +0 -1
  657. package/core/built/admin/assets/use-setting-group-Dza6bQ7W.js +0 -1
  658. package/core/built/admin/assets/use-settings-navigation-BIjI5mL3.js +0 -1
  659. package/core/built/admin/assets/use-simple-pagination-DwVxe-Lo.js +0 -1
  660. package/core/built/admin/assets/use-staff-users-i_Mq9OGR.js +0 -1
  661. package/core/built/admin/assets/use-tinybird-query-DXoF74NM.js +0 -1
  662. package/core/built/admin/assets/user-detail-modal-BU4QCHE7.js +0 -1
  663. package/core/built/admin/assets/virtual-list-DScLNuU8.js +0 -1
  664. package/core/built/admin/assets/web-BZS-t4H0.js +0 -1
  665. package/core/built/admin/assets/web-DxAUxnK3.js +0 -2
  666. package/core/frontend/services/sitemap/utils.js +0 -17
  667. package/core/server/services/automations/get-scheduler-idempotency-key.js +0 -13
  668. package/core/server/web/api/testmode/index.js +0 -1
  669. package/core/server/web/api/testmode/jobs/cpu-hog.js +0 -15
  670. package/core/server/web/api/testmode/jobs/graceful-job.js +0 -50
  671. package/core/server/web/api/testmode/jobs/say-hello.js +0 -17
  672. package/core/server/web/api/testmode/routes.js +0 -120
@@ -0,0 +1 @@
1
+ import{s as e,t}from"./react-BXwhMTuc.js";import{t as n}from"./jsx-runtime-BlNNh7jY.js";import{t as r}from"./use-tinybird-query-BaBNCaj0.js";import{i}from"./pagemenu-CKQD9hoP.js";import{_ as a,h as o}from"./chunk-KS7C4IRE-DhOcHQOU.js";import{a as s,t as c}from"./router-provider-DDZvgS3V.js";import{G as l,H as u,N as d,U as f}from"./shade-scope-Cccj-c7I-D0XwkdKQ.js";import{a as p}from"./heading-ih-fOVqF.js";import{r as m}from"./trend-badge-1w_HEzkG.js";import{L as h,t as g,vn as ee}from"./button-D414TI3B.js";import{r as _,t as v}from"./tabs-BZyz4ZCH.js";import{a as y,i as b,n as x,o as S,r as C,t as w}from"./card-C2dfd5u0.js";import{a as T,c as E,i as D,l as O,n as k,o as A,r as j,s as M,t as N,u as P}from"./data-list-DM8yqpXi.js";import{t as te}from"./empty-indicator-CSQts7GV.js";import{a as F,i as ne,n as re,o as I,r as ie,s as L}from"./use-filter-params-DU-aiaTb.js";import{D as ae,Mi as oe,Qn as R,Si as se,T as ce,Tn as le,cn as z,cr as B,dn as V,er as H,fn as U,ln as W,nr as G,sn as K,un as ue,w as de,yn as fe}from"./index-DOF2jDq0.js";import{o as pe}from"./filters-DTtZKQyq.js";import{n as q,r as J,t as me}from"./kpi-tabs-DbOmmyOo.js";import{t as Y}from"./date-range-select-DdC23c13.js";import{a as X,c as he,i as ge,n as _e,o as ve,r as ye}from"./chart-helpers-Czu_9QpJ.js";import{t as be}from"./use-analytics-data-B3lGOxsC.js";import{n as xe,t as Se}from"./audience-wRcSN0jV.js";import{n as Ce}from"./post-analytics-context-bt2YTBAC.js";import{r as we,t as Te}from"./post-analytics-header-DKWHwoK2.js";import{n as Z,r as Ee,t as De}from"./kpi-helpers-Criu0YAf.js";var Q=e(t(),1),$=n(),Oe=({data:e,range:t})=>{let[n]=a(),[r,i]=(0,Q.useState)(n.get(`tab`)||`visits`),o=Z[r],s=he(e||[],t,o.dataKey,`sum`)?.map(e=>{let t=Number(e[o.dataKey]);return{date:String(e.date),value:t,formattedValue:o.formatter(t),label:o.label}}),c=De(e),l=ye(t,e||[],{fieldName:o.dataKey});return(0,$.jsx)(w,{children:(0,$.jsx)(x,{children:(0,$.jsxs)(v,{defaultValue:r,variant:`kpis`,children:[(0,$.jsxs)(_,{className:`-mx-6 hidden grid-cols-2 md:visible! md:grid!`,children:[(0,$.jsx)(q,{value:`visits`,onClick:()=>{i(`visits`)},children:(0,$.jsx)(J,{color:Z.visits.color,label:`Unique visitors`,value:c.visits})}),(0,$.jsx)(q,{value:`views`,onClick:()=>{i(`views`)},children:(0,$.jsx)(J,{color:Z.views.color,label:`Total views`,value:c.views})})]}),(0,$.jsxs)(R,{children:[(0,$.jsx)(B,{className:`md:hidden`,asChild:!0,children:(0,$.jsxs)(me,{children:[r===`visits`&&(0,$.jsx)(J,{color:`var(--chart-blue)`,label:`Unique visitors`,value:c.visits}),r===`views`&&(0,$.jsx)(J,{color:`var(--chart-teal)`,label:`Total views`,value:c.views})]})}),(0,$.jsxs)(H,{align:`end`,className:`w-56`,children:[(0,$.jsx)(G,{onClick:()=>i(`visits`),children:`Unique visitors`}),(0,$.jsx)(G,{onClick:()=>i(`views`),children:`Total views`})]})]}),(0,$.jsx)(`div`,{className:`my-4 [&_.recharts-cartesian-axis-tick-value]:fill-gray-500`,children:(0,$.jsx)(m,{className:`-mb-3 aspect-auto h-[16vw] max-h-[320px] min-h-[180px] w-full`,color:o.color,data:s,id:o.dataKey,range:l,showHours:!0,syncId:`overview-charts`})})]})})})},ke=e(I(),1);ke.registerLocale(F);var Ae=e=>de[e]||ke.getName(e,`en`,{select:`alias`})||`Unknown`,je=e=>({"UNITED STATES":`US`,"UNITED STATES OF AMERICA":`US`,USA:`US`,"UNITED KINGDOM":`GB`,UK:`GB`,"GREAT BRITAIN":`GB`,NETHERLANDS:`NL`})[e.toUpperCase()]||(e.length>2?e.substring(0,2):e),Me=({tableHeader:e,data:t,onLocationClick:n})=>(0,$.jsxs)(N,{children:[e&&(0,$.jsxs)(T,{children:[(0,$.jsx)(D,{children:`Country`}),(0,$.jsx)(D,{children:`Visitors`})]}),(0,$.jsx)(j,{children:t.map(e=>{let t=Ae(`${e.location}`)||`Unknown`,r=n&&e.location!==`Unknown`,i=e.location?e.location.toLowerCase():`unknown`;return(0,$.jsxs)(P,{className:r?`cursor-pointer`:``,"data-testid":`location-row-${i}`,onClick:r?()=>n(e.location):void 0,children:[(0,$.jsx)(k,{style:{width:`${e.percentage?Math.round(e.percentage*100):0}%`}}),(0,$.jsx)(A,{className:`group-hover/data:max-w-[calc(100%-140px)]`,children:(0,$.jsxs)(`div`,{className:`flex items-center space-x-3 overflow-hidden`,title:t||`Unknown`,children:[(0,$.jsx)(L,{countryCode:`${je(e.location)}`,fallback:(0,$.jsx)(`span`,{className:`flex h-[14px] w-[22px] items-center justify-center rounded-[2px] bg-black text-white`,children:(0,$.jsx)(d.SkullAndBones,{className:`size-3`})})}),(0,$.jsx)(`div`,{className:`truncate font-medium`,children:t})]})}),(0,$.jsxs)(M,{children:[(0,$.jsx)(E,{children:u(Number(e.visits))}),(0,$.jsx)(O,{children:f(e.percentage)})]})]},e.location||`unknown`)})})]}),Ne=({data:e,isLoading:t,onLocationClick:n})=>{let r=e.slice(0,10);return(0,$.jsx)($.Fragment,{children:t?``:(0,$.jsx)($.Fragment,{children:e&&e.length>0&&(0,$.jsxs)(w,{className:`group/datalist`,"data-testid":`locations-card`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-6`,children:[(0,$.jsxs)(y,{className:`p-0`,children:[(0,$.jsx)(S,{children:`Locations`}),(0,$.jsx)(C,{children:`Where are the readers of this post`})]}),(0,$.jsx)(p,{className:`mr-2`,children:`Visitors`})]}),(0,$.jsxs)(x,{className:`overflow-hidden`,children:[(0,$.jsx)(fe,{}),(0,$.jsx)(Me,{data:r,tableHeader:!1,onLocationClick:n})]}),e.length>10&&(0,$.jsx)(b,{children:(0,$.jsxs)(K,{children:[(0,$.jsx)(U,{asChild:!0,children:(0,$.jsxs)(g,{variant:`subtle`,children:[`View all `,(0,$.jsx)(h,{})]})}),(0,$.jsxs)(z,{className:`overflow-y-auto pt-0 sm:max-w-[420px]`,children:[(0,$.jsxs)(ue,{className:`sticky top-0 z-40 -mx-6 bg-surface-elevated/60 p-6 backdrop-blur`,children:[(0,$.jsx)(V,{children:`Top locations`}),(0,$.jsx)(W,{children:`Where are the readers of this post`})]}),(0,$.jsx)(`div`,{className:`group/datalist`,children:(0,$.jsx)(Me,{data:e,tableHeader:!0,onLocationClick:n})})]})]})})]})})})},Pe=()=>{let e=s(),{postId:t}=o(),{statsConfig:n,isLoading:a,site:u}=be(),{range:d,setRange:f,post:p,isPostLoading:m}=Ce(),{data:h}=se(),g=oe(),_=(0,Q.useRef)(null),{filters:v,setFilters:y}=ie({supportedFields:re,trackingSource:`post-analytics`}),b=(0,Q.useMemo)(()=>Se(v.find(e=>e.field===`audience`)?.values),[v]);(0,Q.useEffect)(()=>{!m&&p?.email_only&&e(`/posts/analytics/${t}`)},[m,p?.email_only,e,t]);let S=(0,Q.useMemo)(()=>{if(!p?.published_at)return ce.allTime.value;let e=ve(p.published_at),{startDate:t,endDate:n}=X(d);return n.diff(t,`days`)+1>e?e:d},[p?.published_at,d]),{startDate:C,endDate:T,timezone:E}=X(S),D=(0,Q.useCallback)(()=>{let e=l(_.current);e&&e.scrollTo({top:0,behavior:`smooth`})},[]),O=(0,Q.useMemo)(()=>{let e={};return v.forEach(t=>{let n=t.field,r=t.values;if(n===`audience`)return;let i=r&&r.length>0&&r[0]!==null&&r[0]!==void 0,a=n===`source`&&r?.[0]===``;if(i&&(r[0]!==``||a)){let t=String(r[0]);e[n]=t}}),e},[v]),k=(0,Q.useCallback)((e,t)=>{y(n=>n.find(t=>t.field===e)?n.map(n=>n.field===e?{...n,values:[t]}:n):[...n,pe(e,`is`,[t])]),D()},[y,D]),A=(0,Q.useCallback)(e=>k(`location`,e),[k]),j=(0,Q.useCallback)(e=>k(`source`,e),[k]),M=(0,Q.useMemo)(()=>{let e={site_uuid:n?.id||``,date_from:_e(C),date_to:_e(T),timezone:E,member_status:xe(b),post_uuid:``,...O};return!m&&p?.uuid?{...e,post_uuid:p.uuid}:e},[m,p,n?.id,C,T,E,b,O]),{data:N,loading:P}=r({endpoint:`api_kpis`,statsConfig:n,params:M}),{data:F,loading:I}=r({endpoint:`api_top_locations`,statsConfig:n,params:M}),{data:L,loading:R}=r({endpoint:`api_top_sources`,statsConfig:n,params:M}),z=(0,Q.useMemo)(()=>F?.reduce((e,t)=>e+Number(t.visits),0)||0,[F]),B=(0,Q.useMemo)(()=>L?L.reduce((e,t)=>e+Number(t.visits||0),0):0,[L]),V=u.url,H=u.icon,U=(0,Q.useMemo)(()=>{let e=F?.map(e=>({location:String(e.location),visits:Number(e.visits),percentage:z>0?Number(e.visits)/z:0,isUnknown:ae.includes(String(e.location))}))||[],t=e.filter(e=>!e.isUnknown),n=e.filter(e=>e.isUnknown),r=n.length>0?[{location:`Unknown`,visits:n.reduce((e,t)=>e+t.visits,0),percentage:n.reduce((e,t)=>e+t.percentage,0)}]:[];return[...t,...r]},[F,z]),W=a||m||P||I||R,G=De(N),K=v.length>0;return h?.settings&&!g?(0,$.jsx)(c,{to:`/posts/analytics/${t}`,replace:!0}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(Te,{currentTab:`Web`,children:[K&&(0,$.jsx)(i,{children:(0,$.jsx)(Y,{range:d,onRangeChange:f})}),(0,$.jsxs)(i,{className:`${K?`mt-0! [grid-area:subactions] lg:mt-[25px]!`:`[grid-area:actions]`}`,children:[(0,$.jsx)(ne,{filters:v,postUuid:p?.uuid,range:d,onChange:y}),!K&&(0,$.jsx)(Y,{range:d,onRangeChange:f})]})]}),(0,$.jsx)(we,{ref:_,children:W?(0,$.jsx)(w,{className:`size-full`,variant:`plain`,children:(0,$.jsx)(x,{className:`size-full items-center justify-center`,children:(0,$.jsx)(le,{})})}):N&&N.length!==0&&G.visits!==`0`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Oe,{data:N,range:S}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-6 lg:grid lg:grid-cols-2`,children:[(0,$.jsx)(Ne,{data:U,isLoading:I,onLocationClick:A}),(0,$.jsx)(Ee,{data:L,range:S,siteIcon:H,siteUrl:V,totalVisitors:B,onSourceClick:j})]})]}):(0,$.jsx)(`div`,{className:`grow`,children:(0,$.jsx)(te,{className:`h-full`,description:`Try adjusting filters to see more data.`,title:`No visitors ${ge(d)}`,children:(0,$.jsx)(ee,{strokeWidth:1.5})})})})]})};export{Pe as default};
@@ -1 +1 @@
1
- import{i as e,s as t,t as n}from"./react-BXwhMTuc.js";import{f as r,p as i}from"./hooks-DYfTEQLk.js";import{t as a}from"./jsx-runtime-BlNNh7jY.js";import{Or as o,t as s}from"./button-DvIh2Bq-.js";import{o as c,t as l}from"./use-settings-navigation-BIjI5mL3.js";import{i as u,n as d,r as f,t as p}from"./action-list-Crnh-_UI.js";import{t as ee}from"./use-host-limits-mpTkZIq8.js";import{t as m}from"./brand-icon-D3ffDYaC.js";import{n as h}from"./confirmation-context-IyqoXVk-.js";import{n as te}from"./integrations-DnJrZnHv.js";import{t as ne}from"./api-keys-CubH-7_H.js";import{t as re}from"./integration-header-CKGrXNVP.js";import{t as ie}from"./api-keys-omLA6iYn.js";var ae=``+new URL(`zapier-logo-D8a11oW_.svg`,import.meta.url).href,g=t(n(),1),_=a(),v=(e,t)=>`${e}-${t}`,y=()=>{let[e,t]=(0,g.useState)(``),[n,r]=(0,g.useState)(!1),i=(0,g.useRef)(new Map),[a,o]=(0,g.useState)(new Set),s=t=>t.length?t.some(t=>t.toLowerCase().includes(e.toLowerCase())):!0,c=(0,g.useCallback)((t,n)=>{i.current.set(t,n),(!e||n.some(t=>t.toLowerCase().includes(e.toLowerCase())))&&o(e=>new Set(e).add(t))},[e]),l=(0,g.useCallback)(e=>{i.current.delete(e),o(t=>{let n=new Set(t);return n.delete(e),n})},[]);(0,g.useEffect)(()=>{let t=new Set;i.current.forEach((n,r)=>{(!e||n.some(t=>t.toLowerCase().includes(e.toLowerCase())))&&t.add(r)}),o(t)},[e]);let u=(0,g.useCallback)(e=>a.size===1&&a.has(e),[a]),d=(0,g.useCallback)(()=>a,[a]),f=t=>{if(!e)return t;if(typeof t==`string`){let n=e.split(/\s+/).map(e=>e.toLowerCase()),r=n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),i=t.split(RegExp(`(${r})`,`gi`)),a=new Map;return i.map(e=>{if(!n.includes(e.toLowerCase()))return e;let t=(a.get(e)??0)+1;return a.set(e,t),(0,_.jsx)(`span`,{className:`bg-yellow-500/40`,children:e},`${e}-${t}`)})}else if(Array.isArray(t))return t.map(e=>f(e));else if(t&&typeof t==`object`&&t)return g.Children.map(t,e=>e&&typeof e==`object`&&`props`in e?f(e.props.children):e);else return t};return{filter:e,setFilter:t,checkVisible:s,highlightKeywords:f,noResult:n,setNoResult:r,registerComponent:c,unregisterComponent:l,getVisibleComponents:d,isOnlyVisibleComponent:u}},b=``+new URL(`Alto-DoS3yH_j.png`,import.meta.url).href,x=``+new URL(`Bulletin-BUpcurG5.png`,import.meta.url).href,S=``+new URL(`Casper-ASA9Ix4v.png`,import.meta.url).href,C=``+new URL(`Dawn-aeEVEPie.png`,import.meta.url).href,w=``+new URL(`Digest-DJl0U_FG.png`,import.meta.url).href,T=``+new URL(`Dope-D_CgP0p0.png`,import.meta.url).href,E=``+new URL(`Ease-B4NuA7sj.png`,import.meta.url).href,D=``+new URL(`Edge-BPZxvKka.png`,import.meta.url).href,O=``+new URL(`Edition-cIDLjlhj.png`,import.meta.url).href,k=``+new URL(`Episode-D7bgV2bY.png`,import.meta.url).href,A=``+new URL(`Headline-BFXOunIb.png`,import.meta.url).href,j=``+new URL(`Journal-D3UW9T2b.png`,import.meta.url).href,M=``+new URL(`London-CSCVHwS0.png`,import.meta.url).href,N=``+new URL(`Ruby-DVEXVMTx.png`,import.meta.url).href,P=``+new URL(`Solo-c-yPo0gw.png`,import.meta.url).href,F=``+new URL(`Source-V-WXZXnS.png`,import.meta.url).href,I=``+new URL(`Source-Magazine-Czq1p0a_.png`,import.meta.url).href,L=``+new URL(`Source-Newsletter-CwTcfhJ-.png`,import.meta.url).href,R=``+new URL(`Taste-U2cRR2yO.png`,import.meta.url).href,z=``+new URL(`Wave-DE2aI-FM.png`,import.meta.url).href,B=[{name:`Source`,category:`News`,previewUrl:`https://source.ghost.io/`,ref:`default`,image:F,variants:[{category:`Magazine`,previewUrl:`https://source-magazine.ghost.io/`,image:I},{category:`Newsletter`,previewUrl:`https://source-newsletter.ghost.io/`,image:L}]},{name:`Casper`,category:`Blog`,previewUrl:`https://demo.ghost.io/`,ref:`TryGhost/Casper`,image:S},{name:`Edition`,category:`Newsletter`,url:`https://github.com/TryGhost/Edition`,previewUrl:`https://edition.ghost.io/`,ref:`TryGhost/Edition`,image:O},{name:`Solo`,category:`Blog`,url:`https://github.com/TryGhost/Solo`,previewUrl:`https://solo.ghost.io`,ref:`TryGhost/Solo`,image:P},{name:`Taste`,category:`Blog`,url:`https://github.com/TryGhost/Taste`,previewUrl:`https://taste.ghost.io`,ref:`TryGhost/Taste`,image:R},{name:`Episode`,category:`Podcast`,url:`https://github.com/TryGhost/Episode`,previewUrl:`https://episode.ghost.io`,ref:`TryGhost/Episode`,image:k},{name:`Digest`,category:`Newsletter`,url:`https://github.com/TryGhost/Digest`,previewUrl:`https://digest.ghost.io/`,ref:`TryGhost/Digest`,image:w},{name:`Bulletin`,category:`Newsletter`,url:`https://github.com/TryGhost/Bulletin`,previewUrl:`https://bulletin.ghost.io/`,ref:`TryGhost/Bulletin`,image:x},{name:`Alto`,category:`Blog`,url:`https://github.com/TryGhost/Alto`,previewUrl:`https://alto.ghost.io`,ref:`TryGhost/Alto`,image:b},{name:`Dope`,category:`Magazine`,url:`https://github.com/TryGhost/Dope`,previewUrl:`https://dope.ghost.io`,ref:`TryGhost/Dope`,image:T},{name:`Wave`,category:`Podcast`,url:`https://github.com/TryGhost/Wave`,previewUrl:`https://wave.ghost.io`,ref:`TryGhost/Wave`,image:z},{name:`Edge`,category:`Photography`,url:`https://github.com/TryGhost/Edge`,previewUrl:`https://edge.ghost.io`,ref:`TryGhost/Edge`,image:D},{name:`Dawn`,category:`Newsletter`,url:`https://github.com/TryGhost/Dawn`,previewUrl:`https://dawn.ghost.io/`,ref:`TryGhost/Dawn`,image:C},{name:`Ease`,category:`Documentation`,url:`https://github.com/TryGhost/Ease`,previewUrl:`https://ease.ghost.io`,ref:`TryGhost/Ease`,image:E},{name:`Headline`,category:`News`,url:`https://github.com/TryGhost/Headline`,previewUrl:`https://headline.ghost.io`,ref:`TryGhost/Headline`,image:A},{name:`Ruby`,category:`Magazine`,url:`https://github.com/TryGhost/Ruby`,previewUrl:`https://ruby.ghost.io`,ref:`TryGhost/Ruby`,image:N},{name:`London`,category:`Photography`,url:`https://github.com/TryGhost/London`,previewUrl:`https://london.ghost.io`,ref:`TryGhost/London`,image:M},{name:`Journal`,category:`Newsletter`,url:`https://github.com/TryGhost/Journal`,previewUrl:`https://journal.ghost.io/`,ref:`TryGhost/Journal`,image:j}],V=``+new URL(`orb-black-1-bYPPSSAp.png`,import.meta.url).href,H=``+new URL(`orb-black-2-C-rcujeh.png`,import.meta.url).href,U=``+new URL(`orb-black-3-DTkwRv_1.png`,import.meta.url).href,W=``+new URL(`orb-black-4-BXF3fMuE.png`,import.meta.url).href,G=``+new URL(`orb-black-5-94Eda1ek.png`,import.meta.url).href,K=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201818.2%202500'%20style='enable-background:new%200%200%201818.2%202500'%20xml:space='preserve'%3e%3ctitle%3egoogle-docs%3c/title%3e%3cpath%20d='M1136.4%200h-966C79.6%200%200%2079.5%200%20170.5v2159.1c0%2090.9%2079.5%20170.5%20170.5%20170.5h1477.3c90.9%200%20170.5-79.5%20170.5-170.5V681.8l-397.7-284.1L1136.4%200z'%20style='fill:%234285f4'/%3e%3cpath%20d='M454.5%201818.2h909.1v-113.6h-909l-.1%20113.6zm0%20227.3h681.8v-113.6H454.5v113.6zm0-795.5v113.6h909.1V1250H454.5zm0%20340.9h909.1v-113.6h-909l-.1%20113.6z'%20style='fill:%23f1f1f1'/%3e%3cpath%20d='M1136.4%200v511.4c0%2090.9%2079.5%20170.4%20170.4%20170.4h511.4L1136.4%200z'%20style='fill:%23a1c2fa'/%3e%3c/svg%3e`,q=``+new URL(`mailchimp-DwTEN-tS.svg`,import.meta.url).href,J=`data:image/svg+xml,%3csvg%20height='546'%20viewBox='0%200%20569%20546'%20width='569'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3epatreon%3c/title%3e%3cg%20fill='%23FF424D'%3e%3ccircle%20cx='362.59'%20cy='204.59'%20data-fill='1'%20r='204.59'/%3e%3cpath%20data-fill='1'%20d='M0%200h100v545.8H0z'/%3e%3c/g%3e%3c/svg%3e`,Y=`data:image/svg+xml,%3csvg%20width='152'%20height='179'%20viewBox='0%200%20152%20179'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3epaypal%3c/title%3e%3cg%20fill='none'%20fill-rule='evenodd'%3e%3cpath%20d='M136.492%2045.453c2.179-13.894-.015-23.348-7.53-31.911C120.688%204.114%20105.741.075%2086.617.075H31.105a7.943%207.943%200%200%200-7.846%206.705L.144%20153.36a4.765%204.765%200%200%200%204.707%205.507h34.27l-2.365%2015a4.168%204.168%200%200%200%204.118%204.818H69.76a6.948%206.948%200%200%200%206.863-5.865l.283-1.468%205.442-34.507.351-1.907a6.947%206.947%200%200%201%206.862-5.865h4.322c27.984%200%2049.896-11.37%2056.299-44.25%202.675-13.74%201.292-25.208-5.783-33.27-2.14-2.439-4.802-4.455-7.907-6.1'%20fill='%23238EC2'/%3e%3cpath%20d='M136.492%2045.453c2.179-13.894-.015-23.348-7.53-31.911C120.688%204.114%20105.741.075%2086.617.075H31.105a7.943%207.943%200%200%200-7.846%206.705L.144%20153.36a4.765%204.765%200%200%200%204.707%205.507h34.27l8.609-54.588-.267%201.711c.609-3.86%203.909-6.704%207.817-6.704h16.288c31.989%200%2057.037-12.996%2064.356-50.582.217-1.113.402-2.191.568-3.251'%20fill='%2320274F'/%3e%3cpath%20d='M56.978%2045.638a6.945%206.945%200%200%201%206.863-5.866h43.514c5.155%200%209.961.337%2014.356%201.045%201.256.202%202.478.435%203.665.698a53.92%2053.92%200%200%201%203.455.885c.558.162%201.106.333%201.646.512%202.157.717%204.166%201.562%206.015%202.541%202.179-13.894-.015-23.348-7.53-31.911C120.688%204.114%20105.741.075%2086.617.075H31.105a7.943%207.943%200%200%200-7.846%206.705L.144%20153.36a4.765%204.765%200%200%200%204.707%205.507h34.27L56.978%2045.638'%20fill='%23253667'/%3e%3c/g%3e%3c/svg%3e`,oe=``+new URL(`slackicon-37ETtpm7.png`,import.meta.url).href,se=`data:image/svg+xml,%3csvg%20width='86'%20height='89'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3etypeform%3c/title%3e%3cg%20fill='none'%20fill-rule='evenodd'%3e%3cpath%20d='M40.28%2087.561c12.464.154%2021.16-3.994%2030.135-12.175%208.975-8.18%2014.306-16.867%2014.741-28.73.436-11.862-3.412-21.43-12.564-30.581C63.441%206.923%2051.64.9%2039.4.899%2027.158.898%2018.967%206.252%2011.385%2016.07c-7.581%209.818-9.237%2022.212-9.894%2033.921-.657%2011.71-1.15%2017.111%206.608%2024.625%207.758%207.514%2019.718%2012.791%2032.182%2012.945z'%20stroke='%23262627'/%3e%3cpath%20d='M29.136%2037.976v-4.885h25.918v4.885H44.679v27.998H39.51V37.976z'%20fill='%23262627'%20fill-rule='nonzero'/%3e%3c/g%3e%3c/svg%3e`,ce=``+new URL(`zero-bounce-lzY95s9E.png`,import.meta.url).href,X=[{ghostImage:H,appImage:oe,title:`Share scheduled posts with your team in Slack`,url:`https://zapier.com/webintent/create-zap?template=359499`},{ghostImage:U,appImage:J,title:`Connect Patreon to your Ghost membership site`,url:`https://zapier.com/webintent/create-zap?template=75801`},{ghostImage:W,appImage:ce,title:`Protect email delivery with email verification`,url:`https://zapier.com/webintent/create-zap?template=359415`},{ghostImage:G,appImage:Y,title:`Add members for successful sales in PayPal`,url:`https://zapier.com/webintent/create-zap?template=184423`},{ghostImage:U,appImage:Y,title:`Unsubscribe members who cancel a subscription in PayPal`,url:`https://zapier.com/webintent/create-zap?template=359348`},{ghostImage:V,appImage:K,title:`Send new post drafts from Google Docs to Ghost`,url:`https://zapier.com/webintent/create-zap?template=50924`},{ghostImage:W,appImage:se,title:`Survey new members using Typeform`,url:`https://zapier.com/webintent/create-zap?template=359407`},{ghostImage:V,appImage:q,title:`Sync email subscribers in Ghost + Mailchimp`,url:`https://zapier.com/webintent/create-zap?template=359342`}],Z=(0,g.createContext)({officialThemes:B,zapierTemplates:X,search:{filter:``,setFilter:()=>{},checkVisible:()=>!0,highlightKeywords:()=>``,noResult:!1,setNoResult:()=>{},registerComponent:()=>{},unregisterComponent:()=>{},getVisibleComponents:()=>new Set,isOnlyVisibleComponent:()=>!1},sortingState:[],offersShowArchived:!1,setOffersShowArchived:()=>{}}),Q=()=>(0,g.useContext)(Z),le=()=>Q().officialThemes,$=()=>Q().search,ue=()=>Q().upgradeStatus,de=()=>{let{sortingState:e,setSortingState:t}=Q();return{sortingState:e,setSortingState:t}},fe=()=>{let{offersShowArchived:e,setOffersShowArchived:t}=Q();return{offersShowArchived:e,setOffersShowArchived:t}},pe=e({default:()=>me});function me(){let{updateRoute:e}=l(),{zapierTemplates:t}=Q(),{data:{integrations:n}={integrations:[]}}=te(),{mutateAsync:a}=ie(),v=i(),{confirm:y}=h(),[b,x]=(0,g.useState)(!1),S=ee()?.customIntegrations?.disabled,C=n.find(({slug:e})=>e===`zapier`),w=C?.api_keys?.find(e=>e.type===`admin`);return(0,g.useEffect)(()=>{S&&e(`integrations`)},[S,e]),(0,_.jsxs)(c,{cancelLabel:``,footer:(0,_.jsxs)(`div`,{className:`mx-8 flex w-full items-center justify-between`,children:[(0,_.jsxs)(`a`,{className:`mt-1 self-baseline font-bold`,href:`https://zapier.com/apps/ghost/integrations?utm_medium=partner_api&utm_source=widget&utm_campaign=Widget`,rel:`noopener noreferrer`,target:`_blank`,children:[`View more Ghost integrations powered by`,` `,(0,_.jsx)(`span`,{children:(0,_.jsx)(`img`,{alt:`Zapier`,className:`relative top-[-2px] inline-block`,src:ae})})]}),(0,_.jsx)(s,{type:`button`,onClick:()=>{e(`integrations`)},children:`Close`})]}),okLabel:`Close`,okVariant:`default`,testId:`zapier-modal`,title:``,stickyFooter:!0,onClose:()=>{e(`integrations`)},onOk:()=>{e(`integrations`)},children:[(0,_.jsx)(re,{detail:`Automation for your favorite apps`,extra:(0,_.jsx)(`div`,{className:`mt-1 -mb-4`,children:(0,_.jsx)(ne,{keys:[{id:`admin-api-key`,label:`Admin API key`,text:w?.secret,hint:b?(0,_.jsx)(`div`,{className:`text-green`,children:`Admin API Key was successfully regenerated`}):void 0,onRegenerate:()=>{!C||!w||(x(!1),y({title:`Regenerate Admin API Key`,prompt:`You will need to locate the Ghost App within your Zapier account and click on "Reconnect" to enter the new Admin API Key.`,okLabel:`Regenerate Admin API Key`,onOk:async e=>{try{await a({integrationId:C.id,apiKeyId:w.id}),x(!0),e?.remove()}catch(e){v(e)}}}))}},{id:`api-url`,label:`API URL`,text:window.location.origin+r().subdir}]})}),icon:(0,_.jsx)(m,{name:`zapier`,size:56}),title:`Zapier`}),(0,_.jsx)(p,{children:t.map(e=>(0,_.jsxs)(d,{hover:!1,children:[(0,_.jsx)(u,{className:`flex items-center gap-3 py-2 pl-3`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-center`,children:[(0,_.jsxs)(`div`,{className:`flex shrink-0 flex-nowrap items-center gap-2`,children:[(0,_.jsx)(`img`,{className:`size-8 object-contain dark:invert`,role:`presentation`,src:e.ghostImage}),(0,_.jsx)(o,{className:`size-3`}),(0,_.jsx)(`img`,{className:`size-8 object-contain`,role:`presentation`,src:e.appImage})]}),(0,_.jsx)(`span`,{children:e.title})]})}),(0,_.jsx)(f,{visibility:`hover`,children:(0,_.jsx)(s,{className:`h-auto p-0 font-semibold whitespace-nowrap text-[#FF4A00] hover:text-[#FF4A00]`,variant:`link`,asChild:!0,children:(0,_.jsx)(`a`,{href:e.url,rel:`noopener noreferrer`,target:`_blank`,children:`Use this Zap`})})})]},e.url))})]})}export{$ as a,X as c,y as d,le as i,B as l,Z as n,de as o,fe as r,ue as s,pe as t,v as u};
1
+ import{i as e,s as t,t as n}from"./react-BXwhMTuc.js";import{f as r,p as i}from"./hooks-DYfTEQLk.js";import{t as a}from"./jsx-runtime-BlNNh7jY.js";import{t as o}from"./use-host-limits-mpTkZIq8.js";import{kr as s,t as c}from"./button-D414TI3B.js";import{o as l,t as u}from"./use-settings-navigation-CzGU4sus.js";import{i as d,n as f,r as p,t as ee}from"./action-list-DC9QpX-l.js";import{t as m}from"./brand-icon-CrmbX86T.js";import{n as h}from"./confirmation-context-znVJD4pX.js";import{n as te}from"./integrations-DnJrZnHv.js";import{t as ne}from"./api-keys-BHKATUqQ.js";import{t as re}from"./integration-header-C7GXGis_.js";import{t as ie}from"./api-keys-omLA6iYn.js";var ae=``+new URL(`zapier-logo-D8a11oW_.svg`,import.meta.url).href,g=t(n(),1),_=a(),v=(e,t)=>`${e}-${t}`,y=()=>{let[e,t]=(0,g.useState)(``),[n,r]=(0,g.useState)(!1),i=(0,g.useRef)(new Map),[a,o]=(0,g.useState)(new Set),s=t=>t.length?t.some(t=>t.toLowerCase().includes(e.toLowerCase())):!0,c=(0,g.useCallback)((t,n)=>{i.current.set(t,n),(!e||n.some(t=>t.toLowerCase().includes(e.toLowerCase())))&&o(e=>new Set(e).add(t))},[e]),l=(0,g.useCallback)(e=>{i.current.delete(e),o(t=>{let n=new Set(t);return n.delete(e),n})},[]);(0,g.useEffect)(()=>{let t=new Set;i.current.forEach((n,r)=>{(!e||n.some(t=>t.toLowerCase().includes(e.toLowerCase())))&&t.add(r)}),o(t)},[e]);let u=(0,g.useCallback)(e=>a.size===1&&a.has(e),[a]),d=(0,g.useCallback)(()=>a,[a]),f=t=>{if(!e)return t;if(typeof t==`string`){let n=e.split(/\s+/).map(e=>e.toLowerCase()),r=n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),i=t.split(RegExp(`(${r})`,`gi`)),a=new Map;return i.map(e=>{if(!n.includes(e.toLowerCase()))return e;let t=(a.get(e)??0)+1;return a.set(e,t),(0,_.jsx)(`span`,{className:`bg-yellow-500/40`,children:e},`${e}-${t}`)})}else if(Array.isArray(t))return t.map(e=>f(e));else if(t&&typeof t==`object`&&t)return g.Children.map(t,e=>e&&typeof e==`object`&&`props`in e?f(e.props.children):e);else return t};return{filter:e,setFilter:t,checkVisible:s,highlightKeywords:f,noResult:n,setNoResult:r,registerComponent:c,unregisterComponent:l,getVisibleComponents:d,isOnlyVisibleComponent:u}},b=``+new URL(`Alto-DoS3yH_j.png`,import.meta.url).href,x=``+new URL(`Bulletin-BUpcurG5.png`,import.meta.url).href,S=``+new URL(`Casper-ASA9Ix4v.png`,import.meta.url).href,C=``+new URL(`Dawn-aeEVEPie.png`,import.meta.url).href,w=``+new URL(`Digest-DJl0U_FG.png`,import.meta.url).href,T=``+new URL(`Dope-D_CgP0p0.png`,import.meta.url).href,E=``+new URL(`Ease-B4NuA7sj.png`,import.meta.url).href,D=``+new URL(`Edge-BPZxvKka.png`,import.meta.url).href,O=``+new URL(`Edition-cIDLjlhj.png`,import.meta.url).href,k=``+new URL(`Episode-D7bgV2bY.png`,import.meta.url).href,A=``+new URL(`Headline-BFXOunIb.png`,import.meta.url).href,j=``+new URL(`Journal-D3UW9T2b.png`,import.meta.url).href,M=``+new URL(`London-CSCVHwS0.png`,import.meta.url).href,N=``+new URL(`Ruby-DVEXVMTx.png`,import.meta.url).href,P=``+new URL(`Solo-c-yPo0gw.png`,import.meta.url).href,F=``+new URL(`Source-V-WXZXnS.png`,import.meta.url).href,I=``+new URL(`Source-Magazine-Czq1p0a_.png`,import.meta.url).href,L=``+new URL(`Source-Newsletter-CwTcfhJ-.png`,import.meta.url).href,R=``+new URL(`Taste-U2cRR2yO.png`,import.meta.url).href,z=``+new URL(`Wave-DE2aI-FM.png`,import.meta.url).href,B=[{name:`Source`,category:`News`,previewUrl:`https://source.ghost.io/`,ref:`default`,image:F,variants:[{category:`Magazine`,previewUrl:`https://source-magazine.ghost.io/`,image:I},{category:`Newsletter`,previewUrl:`https://source-newsletter.ghost.io/`,image:L}]},{name:`Casper`,category:`Blog`,previewUrl:`https://demo.ghost.io/`,ref:`TryGhost/Casper`,image:S},{name:`Edition`,category:`Newsletter`,url:`https://github.com/TryGhost/Edition`,previewUrl:`https://edition.ghost.io/`,ref:`TryGhost/Edition`,image:O},{name:`Solo`,category:`Blog`,url:`https://github.com/TryGhost/Solo`,previewUrl:`https://solo.ghost.io`,ref:`TryGhost/Solo`,image:P},{name:`Taste`,category:`Blog`,url:`https://github.com/TryGhost/Taste`,previewUrl:`https://taste.ghost.io`,ref:`TryGhost/Taste`,image:R},{name:`Episode`,category:`Podcast`,url:`https://github.com/TryGhost/Episode`,previewUrl:`https://episode.ghost.io`,ref:`TryGhost/Episode`,image:k},{name:`Digest`,category:`Newsletter`,url:`https://github.com/TryGhost/Digest`,previewUrl:`https://digest.ghost.io/`,ref:`TryGhost/Digest`,image:w},{name:`Bulletin`,category:`Newsletter`,url:`https://github.com/TryGhost/Bulletin`,previewUrl:`https://bulletin.ghost.io/`,ref:`TryGhost/Bulletin`,image:x},{name:`Alto`,category:`Blog`,url:`https://github.com/TryGhost/Alto`,previewUrl:`https://alto.ghost.io`,ref:`TryGhost/Alto`,image:b},{name:`Dope`,category:`Magazine`,url:`https://github.com/TryGhost/Dope`,previewUrl:`https://dope.ghost.io`,ref:`TryGhost/Dope`,image:T},{name:`Wave`,category:`Podcast`,url:`https://github.com/TryGhost/Wave`,previewUrl:`https://wave.ghost.io`,ref:`TryGhost/Wave`,image:z},{name:`Edge`,category:`Photography`,url:`https://github.com/TryGhost/Edge`,previewUrl:`https://edge.ghost.io`,ref:`TryGhost/Edge`,image:D},{name:`Dawn`,category:`Newsletter`,url:`https://github.com/TryGhost/Dawn`,previewUrl:`https://dawn.ghost.io/`,ref:`TryGhost/Dawn`,image:C},{name:`Ease`,category:`Documentation`,url:`https://github.com/TryGhost/Ease`,previewUrl:`https://ease.ghost.io`,ref:`TryGhost/Ease`,image:E},{name:`Headline`,category:`News`,url:`https://github.com/TryGhost/Headline`,previewUrl:`https://headline.ghost.io`,ref:`TryGhost/Headline`,image:A},{name:`Ruby`,category:`Magazine`,url:`https://github.com/TryGhost/Ruby`,previewUrl:`https://ruby.ghost.io`,ref:`TryGhost/Ruby`,image:N},{name:`London`,category:`Photography`,url:`https://github.com/TryGhost/London`,previewUrl:`https://london.ghost.io`,ref:`TryGhost/London`,image:M},{name:`Journal`,category:`Newsletter`,url:`https://github.com/TryGhost/Journal`,previewUrl:`https://journal.ghost.io/`,ref:`TryGhost/Journal`,image:j}],V=``+new URL(`orb-black-1-bYPPSSAp.png`,import.meta.url).href,H=``+new URL(`orb-black-2-C-rcujeh.png`,import.meta.url).href,U=``+new URL(`orb-black-3-DTkwRv_1.png`,import.meta.url).href,W=``+new URL(`orb-black-4-BXF3fMuE.png`,import.meta.url).href,G=``+new URL(`orb-black-5-94Eda1ek.png`,import.meta.url).href,K=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201818.2%202500'%20style='enable-background:new%200%200%201818.2%202500'%20xml:space='preserve'%3e%3ctitle%3egoogle-docs%3c/title%3e%3cpath%20d='M1136.4%200h-966C79.6%200%200%2079.5%200%20170.5v2159.1c0%2090.9%2079.5%20170.5%20170.5%20170.5h1477.3c90.9%200%20170.5-79.5%20170.5-170.5V681.8l-397.7-284.1L1136.4%200z'%20style='fill:%234285f4'/%3e%3cpath%20d='M454.5%201818.2h909.1v-113.6h-909l-.1%20113.6zm0%20227.3h681.8v-113.6H454.5v113.6zm0-795.5v113.6h909.1V1250H454.5zm0%20340.9h909.1v-113.6h-909l-.1%20113.6z'%20style='fill:%23f1f1f1'/%3e%3cpath%20d='M1136.4%200v511.4c0%2090.9%2079.5%20170.4%20170.4%20170.4h511.4L1136.4%200z'%20style='fill:%23a1c2fa'/%3e%3c/svg%3e`,q=``+new URL(`mailchimp-DwTEN-tS.svg`,import.meta.url).href,J=`data:image/svg+xml,%3csvg%20height='546'%20viewBox='0%200%20569%20546'%20width='569'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3epatreon%3c/title%3e%3cg%20fill='%23FF424D'%3e%3ccircle%20cx='362.59'%20cy='204.59'%20data-fill='1'%20r='204.59'/%3e%3cpath%20data-fill='1'%20d='M0%200h100v545.8H0z'/%3e%3c/g%3e%3c/svg%3e`,Y=`data:image/svg+xml,%3csvg%20width='152'%20height='179'%20viewBox='0%200%20152%20179'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3epaypal%3c/title%3e%3cg%20fill='none'%20fill-rule='evenodd'%3e%3cpath%20d='M136.492%2045.453c2.179-13.894-.015-23.348-7.53-31.911C120.688%204.114%20105.741.075%2086.617.075H31.105a7.943%207.943%200%200%200-7.846%206.705L.144%20153.36a4.765%204.765%200%200%200%204.707%205.507h34.27l-2.365%2015a4.168%204.168%200%200%200%204.118%204.818H69.76a6.948%206.948%200%200%200%206.863-5.865l.283-1.468%205.442-34.507.351-1.907a6.947%206.947%200%200%201%206.862-5.865h4.322c27.984%200%2049.896-11.37%2056.299-44.25%202.675-13.74%201.292-25.208-5.783-33.27-2.14-2.439-4.802-4.455-7.907-6.1'%20fill='%23238EC2'/%3e%3cpath%20d='M136.492%2045.453c2.179-13.894-.015-23.348-7.53-31.911C120.688%204.114%20105.741.075%2086.617.075H31.105a7.943%207.943%200%200%200-7.846%206.705L.144%20153.36a4.765%204.765%200%200%200%204.707%205.507h34.27l8.609-54.588-.267%201.711c.609-3.86%203.909-6.704%207.817-6.704h16.288c31.989%200%2057.037-12.996%2064.356-50.582.217-1.113.402-2.191.568-3.251'%20fill='%2320274F'/%3e%3cpath%20d='M56.978%2045.638a6.945%206.945%200%200%201%206.863-5.866h43.514c5.155%200%209.961.337%2014.356%201.045%201.256.202%202.478.435%203.665.698a53.92%2053.92%200%200%201%203.455.885c.558.162%201.106.333%201.646.512%202.157.717%204.166%201.562%206.015%202.541%202.179-13.894-.015-23.348-7.53-31.911C120.688%204.114%20105.741.075%2086.617.075H31.105a7.943%207.943%200%200%200-7.846%206.705L.144%20153.36a4.765%204.765%200%200%200%204.707%205.507h34.27L56.978%2045.638'%20fill='%23253667'/%3e%3c/g%3e%3c/svg%3e`,oe=``+new URL(`slackicon-37ETtpm7.png`,import.meta.url).href,se=`data:image/svg+xml,%3csvg%20width='86'%20height='89'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3etypeform%3c/title%3e%3cg%20fill='none'%20fill-rule='evenodd'%3e%3cpath%20d='M40.28%2087.561c12.464.154%2021.16-3.994%2030.135-12.175%208.975-8.18%2014.306-16.867%2014.741-28.73.436-11.862-3.412-21.43-12.564-30.581C63.441%206.923%2051.64.9%2039.4.899%2027.158.898%2018.967%206.252%2011.385%2016.07c-7.581%209.818-9.237%2022.212-9.894%2033.921-.657%2011.71-1.15%2017.111%206.608%2024.625%207.758%207.514%2019.718%2012.791%2032.182%2012.945z'%20stroke='%23262627'/%3e%3cpath%20d='M29.136%2037.976v-4.885h25.918v4.885H44.679v27.998H39.51V37.976z'%20fill='%23262627'%20fill-rule='nonzero'/%3e%3c/g%3e%3c/svg%3e`,ce=``+new URL(`zero-bounce-lzY95s9E.png`,import.meta.url).href,X=[{ghostImage:H,appImage:oe,title:`Share scheduled posts with your team in Slack`,url:`https://zapier.com/webintent/create-zap?template=359499`},{ghostImage:U,appImage:J,title:`Connect Patreon to your Ghost membership site`,url:`https://zapier.com/webintent/create-zap?template=75801`},{ghostImage:W,appImage:ce,title:`Protect email delivery with email verification`,url:`https://zapier.com/webintent/create-zap?template=359415`},{ghostImage:G,appImage:Y,title:`Add members for successful sales in PayPal`,url:`https://zapier.com/webintent/create-zap?template=184423`},{ghostImage:U,appImage:Y,title:`Unsubscribe members who cancel a subscription in PayPal`,url:`https://zapier.com/webintent/create-zap?template=359348`},{ghostImage:V,appImage:K,title:`Send new post drafts from Google Docs to Ghost`,url:`https://zapier.com/webintent/create-zap?template=50924`},{ghostImage:W,appImage:se,title:`Survey new members using Typeform`,url:`https://zapier.com/webintent/create-zap?template=359407`},{ghostImage:V,appImage:q,title:`Sync email subscribers in Ghost + Mailchimp`,url:`https://zapier.com/webintent/create-zap?template=359342`}],Z=(0,g.createContext)({officialThemes:B,zapierTemplates:X,search:{filter:``,setFilter:()=>{},checkVisible:()=>!0,highlightKeywords:()=>``,noResult:!1,setNoResult:()=>{},registerComponent:()=>{},unregisterComponent:()=>{},getVisibleComponents:()=>new Set,isOnlyVisibleComponent:()=>!1},sortingState:[],offersShowArchived:!1,setOffersShowArchived:()=>{}}),Q=()=>(0,g.useContext)(Z),le=()=>Q().officialThemes,$=()=>Q().search,ue=()=>Q().upgradeStatus,de=()=>{let{sortingState:e,setSortingState:t}=Q();return{sortingState:e,setSortingState:t}},fe=()=>{let{offersShowArchived:e,setOffersShowArchived:t}=Q();return{offersShowArchived:e,setOffersShowArchived:t}},pe=e({default:()=>me});function me(){let{updateRoute:e}=u(),{zapierTemplates:t}=Q(),{data:{integrations:n}={integrations:[]}}=te(),{mutateAsync:a}=ie(),v=i(),{confirm:y}=h(),[b,x]=(0,g.useState)(!1),S=o()?.customIntegrations?.disabled,C=n.find(({slug:e})=>e===`zapier`),w=C?.api_keys?.find(e=>e.type===`admin`);return(0,g.useEffect)(()=>{S&&e(`integrations`)},[S,e]),(0,_.jsxs)(l,{cancelLabel:``,footer:(0,_.jsxs)(`div`,{className:`mx-8 flex w-full items-center justify-between`,children:[(0,_.jsxs)(`a`,{className:`mt-1 self-baseline font-bold`,href:`https://zapier.com/apps/ghost/integrations?utm_medium=partner_api&utm_source=widget&utm_campaign=Widget`,rel:`noopener noreferrer`,target:`_blank`,children:[`View more Ghost integrations powered by`,` `,(0,_.jsx)(`span`,{children:(0,_.jsx)(`img`,{alt:`Zapier`,className:`relative top-[-2px] inline-block`,src:ae})})]}),(0,_.jsx)(c,{type:`button`,onClick:()=>{e(`integrations`)},children:`Close`})]}),okLabel:`Close`,okVariant:`default`,testId:`zapier-modal`,title:``,stickyFooter:!0,onClose:()=>{e(`integrations`)},onOk:()=>{e(`integrations`)},children:[(0,_.jsx)(re,{detail:`Automation for your favorite apps`,extra:(0,_.jsx)(`div`,{className:`mt-1 -mb-4`,children:(0,_.jsx)(ne,{keys:[{id:`admin-api-key`,label:`Admin API key`,text:w?.secret,hint:b?(0,_.jsx)(`div`,{className:`text-green`,children:`Admin API Key was successfully regenerated`}):void 0,onRegenerate:()=>{!C||!w||(x(!1),y({title:`Regenerate Admin API Key`,prompt:`You will need to locate the Ghost App within your Zapier account and click on "Reconnect" to enter the new Admin API Key.`,okLabel:`Regenerate Admin API Key`,onOk:async e=>{try{await a({integrationId:C.id,apiKeyId:w.id}),x(!0),e?.remove()}catch(e){v(e)}}}))}},{id:`api-url`,label:`API URL`,text:window.location.origin+r().subdir}]})}),icon:(0,_.jsx)(m,{name:`zapier`,size:56}),title:`Zapier`}),(0,_.jsx)(ee,{children:t.map(e=>(0,_.jsxs)(f,{hover:!1,children:[(0,_.jsx)(d,{className:`flex items-center gap-3 py-2 pl-3`,children:(0,_.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-center`,children:[(0,_.jsxs)(`div`,{className:`flex shrink-0 flex-nowrap items-center gap-2`,children:[(0,_.jsx)(`img`,{className:`size-8 object-contain dark:invert`,role:`presentation`,src:e.ghostImage}),(0,_.jsx)(s,{className:`size-3`}),(0,_.jsx)(`img`,{className:`size-8 object-contain`,role:`presentation`,src:e.appImage})]}),(0,_.jsx)(`span`,{children:e.title})]})}),(0,_.jsx)(p,{visibility:`hover`,children:(0,_.jsx)(c,{className:`h-auto p-0 font-semibold whitespace-nowrap text-[#FF4A00] hover:text-[#FF4A00]`,variant:`link`,asChild:!0,children:(0,_.jsx)(`a`,{href:e.url,rel:`noopener noreferrer`,target:`_blank`,children:`Use this Zap`})})})]},e.url))})]})}export{$ as a,X as c,y as d,le as i,B as l,Z as n,de as o,fe as r,ue as s,pe as t,v as u};
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <link rel="stylesheet" href="./assets/vendor-3bf602dfa6463c3400ffd81697767274.css">
5
5
  <link rel="stylesheet" href="./assets/ghost-8fd5bb799356bbefb254210ba7e1236d.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.64%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%2241cf10d900%22%2C%22activitypubFilename%22%3A%22activitypub.js%22%2C%22activitypubHash%22%3A%226cee18d2a5%22%2C%22activitypubRemoteConfigUrl%22%3A%22%2F.ghost%2Factivitypub%2Fstable%2Fclient-config%22%7D">
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.65%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%2241cf10d900%22%2C%22activitypubFilename%22%3A%22activitypub.js%22%2C%22activitypubHash%22%3A%223cd9dea5d1%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,7 +20,7 @@
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-DDd-zhNL.js"></script>
23
+ <script type="module" crossorigin src="./assets/index-DOF2jDq0.js"></script>
24
24
  <link rel="modulepreload" crossorigin href="./assets/react-BXwhMTuc.js">
25
25
  <link rel="modulepreload" crossorigin href="./assets/react-dom-CMOtJ5MH.js">
26
26
  <link rel="modulepreload" crossorigin href="./assets/jsx-runtime-BlNNh7jY.js">
@@ -31,30 +31,28 @@
31
31
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-DYl5dUZ5.js">
32
32
  <link rel="modulepreload" crossorigin href="./assets/chunk-KS7C4IRE-DhOcHQOU.js">
33
33
  <link rel="modulepreload" crossorigin href="./assets/feature-flag-overrides-context-CrcQKm9Z.js">
34
- <link rel="modulepreload" crossorigin href="./assets/dist-BXHrDV19.js">
35
- <link rel="modulepreload" crossorigin href="./assets/router-provider-CU87qxXw.js">
36
- <link rel="modulepreload" crossorigin href="./assets/text-DC-ot6u2.js">
37
- <link rel="modulepreload" crossorigin href="./assets/heading-BB21QAbb.js">
34
+ <link rel="modulepreload" crossorigin href="./assets/shade-scope-Cccj-c7I-D0XwkdKQ.js">
35
+ <link rel="modulepreload" crossorigin href="./assets/router-provider-DDZvgS3V.js">
36
+ <link rel="modulepreload" crossorigin href="./assets/text-BLI0C8Mc.js">
37
+ <link rel="modulepreload" crossorigin href="./assets/heading-ih-fOVqF.js">
38
38
  <link rel="modulepreload" crossorigin href="./assets/lazy-component-COKiVB72.js">
39
- <link rel="modulepreload" crossorigin href="./assets/dist-FEQQAwTe.js">
40
- <link rel="modulepreload" crossorigin href="./assets/shade-app-CcS3f8MZ-D5BnfHck.js">
41
- <link rel="modulepreload" crossorigin href="./assets/overlay-escape-C7XYQuvP.js">
42
- <link rel="modulepreload" crossorigin href="./assets/button-DvIh2Bq-.js">
43
- <link rel="modulepreload" crossorigin href="./assets/dist-CUwte9v_.js">
44
- <link rel="modulepreload" crossorigin href="./assets/Combination-DWfJPcz9.js">
45
- <link rel="modulepreload" crossorigin href="./assets/dist-Bf-HQtVL.js">
46
- <link rel="modulepreload" crossorigin href="./assets/input-surface-wSO5CRy5.js">
47
- <link rel="modulepreload" crossorigin href="./assets/skeleton-DwCva0-b.js">
48
- <link rel="modulepreload" crossorigin href="./assets/accordion-CJmRaqK7.js">
49
- <link rel="modulepreload" crossorigin href="./assets/badge-qP06OT7C.js">
50
- <link rel="modulepreload" crossorigin href="./assets/use-navigate-with-base-path-88EQpw2k.js">
51
39
  <link rel="modulepreload" crossorigin href="./assets/update-queries-C4CnvJaW.js">
52
40
  <link rel="modulepreload" crossorigin href="./assets/users-C60_hpn6.js">
41
+ <link rel="modulepreload" crossorigin href="./assets/schemas-BoYdB6YU.js">
42
+ <link rel="modulepreload" crossorigin href="./assets/button-D414TI3B.js">
43
+ <link rel="modulepreload" crossorigin href="./assets/overlay-escape-C7XYQuvP.js">
44
+ <link rel="modulepreload" crossorigin href="./assets/dist-B40T-RCQ.js">
45
+ <link rel="modulepreload" crossorigin href="./assets/Combination-DQ6f9A5P.js">
46
+ <link rel="modulepreload" crossorigin href="./assets/input-surface-CL23Mlh8.js">
47
+ <link rel="modulepreload" crossorigin href="./assets/dist-CrlaEoaK.js">
48
+ <link rel="modulepreload" crossorigin href="./assets/skeleton-CPcTiTSX.js">
49
+ <link rel="modulepreload" crossorigin href="./assets/accordion-h62UzFhj.js">
50
+ <link rel="modulepreload" crossorigin href="./assets/badge-CI1Z0xyG.js">
51
+ <link rel="modulepreload" crossorigin href="./assets/use-navigate-with-base-path-BzgNwMAx.js">
53
52
  <link rel="modulepreload" crossorigin href="./assets/onboarding-DV_XbHts.js">
54
53
  <link rel="modulepreload" crossorigin href="./assets/onboarding-B4hfBi9a.js">
55
- <link rel="modulepreload" crossorigin href="./assets/schemas-BoYdB6YU.js">
56
54
  <link rel="modulepreload" crossorigin href="./assets/themes-DtcEFQWm.js">
57
- <link rel="stylesheet" crossorigin href="./assets/index-B3HZU2i8.css">
55
+ <link rel="stylesheet" crossorigin href="./assets/index-JrrNchW1.css">
58
56
  </head>
59
57
  <body class="react-admin">
60
58
  <div id="ember-alerts-wormhole"></div>
@@ -73,10 +71,10 @@
73
71
  <div id="ember-modal-wormhole"></div>
74
72
  <div id="ember-liquid-wormhole"></div>
75
73
  <div id="ember-notifications-wormhole"></div>
76
- <script src="./assets/vendor-2dd263291938d407802568d3357ec69e.js"></script>
74
+ <script src="./assets/vendor-97e91ff8dd1457c668f9ef103ee1a77b.js"></script>
77
75
  <script src="./assets/chunk.972.4b8c97f93d66db15e751.js"></script>
78
- <script src="./assets/chunk.368.22ce1b732c0b40abd3f1.js"></script>
79
- <script src="./assets/chunk.524.cc9be98e44890cedc8c8.js"></script>
80
- <script src="./assets/ghost-a1e6e172c6917e8ef8fa6b0007756d9b.js"></script>
76
+ <script src="./assets/chunk.201.6961b57ed7a281ac193e.js"></script>
77
+ <script src="./assets/chunk.524.0b850e72ec49a0fa3882.js"></script>
78
+ <script src="./assets/ghost-25495154132af7305cb7b646fd83f48f.js"></script>
81
79
  </body>
82
80
  </html>
@@ -16,7 +16,7 @@ const messages = {
16
16
  // routeKeywords.private: 'private'
17
17
  const PRIVATE_KEYWORD = 'private';
18
18
 
19
- let checkSubdir = function checkSubdir() {
19
+ const checkSubdir = function checkSubdir() {
20
20
  if (urlUtils.getSubdir()) {
21
21
  const paths = urlUtils.getSubdir().split('/');
22
22
 
@@ -37,7 +37,7 @@ let checkSubdir = function checkSubdir() {
37
37
 
38
38
  module.exports = {
39
39
  activate: function activate(ghost) {
40
- let privateRoute = `/${PRIVATE_KEYWORD}/`;
40
+ const privateRoute = `/${PRIVATE_KEYWORD}/`;
41
41
 
42
42
  checkSubdir();
43
43
 
@@ -78,7 +78,7 @@ const privateBlogging = {
78
78
 
79
79
  // CASE: Allow private RSS feed urls.
80
80
  // If the path matches the private rss feed URL we rewrite the url. Even Express uses rewriting when using `app.use()`.
81
- let isPrivateRSS = new RegExp(`/${settingsCache.get('public_hash')}/rss(/)?$`);
81
+ const isPrivateRSS = new RegExp(`/${settingsCache.get('public_hash')}/rss(/)?$`);
82
82
  if (isPrivateRSS.test(req.path)) {
83
83
  req.url = req.url.replace(settingsCache.get('public_hash') + '/', '');
84
84
  return next();
@@ -16,7 +16,7 @@ function _renderer(req, res) {
16
16
 
17
17
  // Renderer begin
18
18
  // Format data
19
- let data = {};
19
+ const data = {};
20
20
 
21
21
  if (res.error) {
22
22
  data.error = res.error;
@@ -18,7 +18,7 @@ const messages = {
18
18
 
19
19
  // eslint-disable-next-line camelcase
20
20
  function cancel_link(options) {
21
- let truncateOptions = (options || {}).hash || {};
21
+ const truncateOptions = (options || {}).hash || {};
22
22
 
23
23
  if (this.id === undefined || this.cancel_at_period_end === undefined) {
24
24
  throw new errors.IncorrectUsageError({ message: tpl(messages.invalidData) });
@@ -37,8 +37,8 @@ function cancel_link(options) {
37
37
  }
38
38
 
39
39
  module.exports = function cancelLabsWrapper() {
40
- let self = this;
41
- let args = arguments;
40
+ const self = this;
41
+ const args = arguments;
42
42
 
43
43
  return labs.enabledHelper(
44
44
  {
@@ -29,8 +29,8 @@ function restrictedCta(options) {
29
29
  }
30
30
 
31
31
  module.exports = function content(options = {}) {
32
- let self = this;
33
- let args = arguments;
32
+ const self = this;
33
+ const args = arguments;
34
34
 
35
35
  const hash = options.hash || {};
36
36
  const truncateOptions = {};
@@ -8,7 +8,7 @@ module.exports = function content_api_url(options) {
8
8
  const absoluteUrlRequested = getAbsoluteOption(options);
9
9
 
10
10
  try {
11
- let path = urlUtils.urlFor('api', { type: 'content' }, absoluteUrlRequested);
11
+ const path = urlUtils.urlFor('api', { type: 'content' }, absoluteUrlRequested);
12
12
  result = new SafeString(path);
13
13
  } catch (error) {
14
14
  logging.error(error);
@@ -34,7 +34,7 @@ module.exports = function (...attrs) {
34
34
 
35
35
  const timeNow = moment().tz(timezone);
36
36
  // Our date might be user input
37
- let testDateInput = Date.parse(date);
37
+ const testDateInput = Date.parse(date);
38
38
  let dateMoment;
39
39
  if (isNaN(testDateInput) === false) {
40
40
  dateMoment = moment.parseZone(date);
@@ -28,17 +28,17 @@ module.exports = function foreach(items, options) {
28
28
  items = items.call(this);
29
29
  }
30
30
  let visibility = options.hash.visibility;
31
- if (_.isArray(items) && items.length > 0 && checks.isPost(items[0])) {
31
+ if (Array.isArray(items) && items.length > 0 && checks.isPost(items[0])) {
32
32
  visibility = visibility || 'all';
33
- } else if (_.isObject(items) && _.isArray(Object.values(items))) {
33
+ } else if (_.isObject(items) && Array.isArray(Object.values(items))) {
34
34
  if (Object.values(items).length > 0 && checks.isPost(Object.values(items)[0])) {
35
35
  visibility = visibility || 'all';
36
36
  }
37
37
  }
38
38
 
39
- if (_.isArray(items) && items.length > 0 && checks.isNewsletter(items[0])) {
39
+ if (Array.isArray(items) && items.length > 0 && checks.isNewsletter(items[0])) {
40
40
  visibility = visibility || 'all';
41
- } else if (_.isObject(items) && _.isArray(Object.values(items))) {
41
+ } else if (_.isObject(items) && Array.isArray(Object.values(items))) {
42
42
  if (Object.values(items).length > 0 && checks.isNewsletter(Object.values(items)[0])) {
43
43
  visibility = visibility || 'all';
44
44
  }
@@ -49,7 +49,7 @@ module.exports = function foreach(items, options) {
49
49
  // Initial values set based on parameters sent through. If nothing sent, set to defaults
50
50
  const { fn, inverse, hash, data, ids } = options;
51
51
  let { columns, limit, from, to } = hash;
52
- let length = _.size(items);
52
+ const length = _.size(items);
53
53
  let output = '';
54
54
  let frame;
55
55
  let contextPath;
@@ -223,12 +223,15 @@ function optimiseFilterCacheability(resource, options) {
223
223
  return noOptimisation;
224
224
  }
225
225
 
226
+ // Themes can pass a SafeString here, e.g. `filter=(concat "id:-" id)`
227
+ const originalFilter = String(options.filter);
228
+
226
229
  try {
227
- if (options.filter.split('id:-').length !== 2) {
230
+ if (originalFilter.split('id:-').length !== 2) {
228
231
  return noOptimisation;
229
232
  }
230
233
 
231
- const parsedFilter = nqlLang.parse(options.filter);
234
+ const parsedFilter = nqlLang.parse(originalFilter);
232
235
  // Support either `id:blah` or `id:blah+other:stuff`
233
236
  if (!parsedFilter.$and && !parsedFilter.id) {
234
237
  return noOptimisation;
@@ -250,7 +253,7 @@ function optimiseFilterCacheability(resource, options) {
250
253
  }
251
254
 
252
255
  // We replace with id:-null so we don't have to deal with leading/trailing AND operators
253
- const filter = options.filter.replace(/id:-[a-f0-9A-F]{24}/, 'id:-null');
256
+ const filter = originalFilter.replace(/id:-[a-f0-9A-F]{24}/, 'id:-null');
254
257
 
255
258
  const parseResult = function parseResult(result) {
256
259
  const filteredPosts =
@@ -297,7 +300,7 @@ function optimiseFilterCacheability(resource, options) {
297
300
  */
298
301
  async function makeAPICall(resource, controllerName, action, apiOptions) {
299
302
  const controller = api[controllerName];
300
- let makeRequest = (options) => controller[action](options);
303
+ const makeRequest = (options) => controller[action](options);
301
304
 
302
305
  const { options, parseResult } = optimiseFilterCacheability(resource, apiOptions);
303
306
 
@@ -186,7 +186,7 @@ function getSearchHelper(frontendKey) {
186
186
  locale: settingsCache.get('locale') || 'en',
187
187
  };
188
188
  const dataAttrs = getDataAttributes(attrs);
189
- let helper = `<script defer src="${scriptUrl}" ${dataAttrs} crossorigin="anonymous"></script>`;
189
+ const helper = `<script defer src="${scriptUrl}" ${dataAttrs} crossorigin="anonymous"></script>`;
190
190
 
191
191
  return helper;
192
192
  }
@@ -226,7 +226,7 @@ function getAnnouncementBarHelper(data) {
226
226
  }
227
227
 
228
228
  const dataAttrs = getDataAttributes(attrs);
229
- let helper = `<script defer src="${scriptUrl}" ${dataAttrs} crossorigin="anonymous"></script>`;
229
+ const helper = `<script defer src="${scriptUrl}" ${dataAttrs} crossorigin="anonymous"></script>`;
230
230
 
231
231
  return helper;
232
232
  }
@@ -167,14 +167,12 @@ module.exports = function has(options) {
167
167
  },
168
168
  };
169
169
 
170
- let result;
171
-
172
170
  if (_.isEmpty(attrs)) {
173
171
  logging.warn(tpl(messages.invalidAttribute));
174
172
  return;
175
173
  }
176
174
 
177
- result = _.some(attrs, function (value, attr) {
175
+ const result = _.some(attrs, function (value, attr) {
178
176
  return checks[attr]();
179
177
  });
180
178
 
@@ -41,10 +41,10 @@ module.exports = function link(options) {
41
41
  options.hash.href = '';
42
42
  }
43
43
 
44
- let href = options.hash.href.string || options.hash.href;
44
+ const href = options.hash.href.string || options.hash.href;
45
45
 
46
46
  // Calculate dynamic properties
47
- let classes = buildLinkClasses(config.get('url'), href, options);
47
+ const classes = buildLinkClasses(config.get('url'), href, options);
48
48
 
49
49
  // Remove all the attributes we don't want to do a one-to-one mapping of
50
50
  managedAttributes.forEach((attr) => {
@@ -52,14 +52,14 @@ module.exports = function link(options) {
52
52
  });
53
53
 
54
54
  // Setup our one-to-one mapping of attributes;
55
- let attributes = options.hash;
55
+ const attributes = options.hash;
56
56
 
57
57
  // Prepare output
58
- let classString = classes.length > 0 ? `class="${classes.join(' ')}"` : '';
59
- let hrefString = `href="${href}"`;
60
- let attributeString = _.size(attributes) > 0 ? _formatAttrs(attributes) : '';
58
+ const classString = classes.length > 0 ? `class="${classes.join(' ')}"` : '';
59
+ const hrefString = `href="${href}"`;
60
+ const attributeString = _.size(attributes) > 0 ? _formatAttrs(attributes) : '';
61
61
  let openingTag = `<a ${classString} ${hrefString} ${attributeString}>`;
62
- let closingTag = `</a>`;
62
+ const closingTag = `</a>`;
63
63
 
64
64
  // Clean up any extra spaces
65
65
  openingTag = openingTag.replace(/\s{2,}/g, ' ').replace(/\s>/, '>');
@@ -32,8 +32,8 @@ module.exports = function link_class(options) {
32
32
  options.hash.for = '';
33
33
  }
34
34
 
35
- let href = options.hash.for.string || options.hash.for;
36
- let classes = buildLinkClasses(config.get('url'), href, options);
35
+ const href = options.hash.for.string || options.hash.for;
36
+ const classes = buildLinkClasses(config.get('url'), href, options);
37
37
 
38
38
  return new SafeString(classes.join(' '));
39
39
  };
@@ -110,7 +110,6 @@ module.exports = function navigation(options) {
110
110
  const navigationData = options.data.site[key];
111
111
  const currentUrl = options.data.root.relativeUrl;
112
112
  const member = options.data.member || options.data.root.member;
113
- let output;
114
113
 
115
114
  if (!Array.isArray(navigationData)) {
116
115
  throw new errors.IncorrectUsageError({
@@ -154,7 +153,7 @@ module.exports = function navigation(options) {
154
153
 
155
154
  const navigationIconsEnabled = labs.isSet('navigationIcons');
156
155
 
157
- output = navigationData
156
+ const output = navigationData
158
157
  .filter((item) => (navigationIconsEnabled ? isNavigationItemVisible(item, member) : true))
159
158
  .map(function (e) {
160
159
  const out = {};
@@ -24,7 +24,6 @@ async function fetchRecommendations(apiOptions) {
24
24
 
25
25
  try {
26
26
  const controller = api.recommendationsPublic;
27
- let response;
28
27
 
29
28
  const logLevel = config.get('optimization:getHelper:timeout:level') || 'error';
30
29
  const threshold = config.get('optimization:getHelper:timeout:threshold') || 5000;
@@ -47,7 +46,7 @@ async function fetchRecommendations(apiOptions) {
47
46
  }, threshold);
48
47
  });
49
48
 
50
- response = await Promise.race([apiResponse, timeout]);
49
+ const response = await Promise.race([apiResponse, timeout]);
51
50
  clearTimeout(timer);
52
51
 
53
52
  return response;
@@ -64,10 +63,10 @@ async function fetchRecommendations(apiOptions) {
64
63
  * @returns {*}
65
64
  */
66
65
  function parseOptions(options) {
67
- let limit = options.limit ?? 5;
68
- let order = options.order ?? 'created_at desc';
69
- let filter = options.filter ?? '';
70
- let page = options.page ?? 1;
66
+ const limit = options.limit ?? 5;
67
+ const order = options.order ?? 'created_at desc';
68
+ const filter = options.filter ?? '';
69
+ const page = options.page ?? 1;
71
70
 
72
71
  return {
73
72
  limit,
@@ -18,7 +18,7 @@ module.exports = function tiers(options = {}) {
18
18
 
19
19
  let output = '';
20
20
 
21
- let accessProductsList = this.tiers;
21
+ const accessProductsList = this.tiers;
22
22
 
23
23
  if (accessProductsList && accessProductsList.length > 0) {
24
24
  const tierNames = accessProductsList.map((tier) => {
@@ -9,7 +9,7 @@ module.exports = async function total_members() {
9
9
  if (this.total) {
10
10
  return new SafeString(memberCountRounding(this.total));
11
11
  } else {
12
- let memberStats = await getMemberStats();
12
+ const memberStats = await getMemberStats();
13
13
  const { total } = memberStats;
14
14
  return new SafeString(total > 0 ? memberCountRounding(total) : 0);
15
15
  }
@@ -8,7 +8,7 @@ module.exports = async function total_paid_members() {
8
8
  if (this.paid) {
9
9
  return new SafeString(memberCountRounding(this.paid));
10
10
  } else {
11
- let memberStats = await getMemberStats();
11
+ const memberStats = await getMemberStats();
12
12
  const { paid } = memberStats;
13
13
  return new SafeString(paid > 0 ? memberCountRounding(paid) : 0);
14
14
  }
@@ -2,7 +2,7 @@ const { urlService } = require('../services/proxy');
2
2
  const getContextObject = require('./context-object.js');
3
3
 
4
4
  function getAuthorUrl(data, absolute) {
5
- let context = data.context ? data.context[0] : null;
5
+ const context = data.context ? data.context[0] : null;
6
6
 
7
7
  const contextObject = getContextObject(data, context);
8
8
 
@@ -1,7 +1,7 @@
1
1
  const getContextObject = require('./context-object.js');
2
2
 
3
3
  function getModifiedDate(data) {
4
- let context = data.context ? data.context : null;
4
+ const context = data.context ? data.context : null;
5
5
  let modDate;
6
6
 
7
7
  const contextObject = getContextObject(data, context);
@@ -1,7 +1,7 @@
1
1
  const getContextObject = require('./context-object.js');
2
2
 
3
3
  function getPublishedDate(data) {
4
- let context = data.context ? data.context[0] : null;
4
+ const context = data.context ? data.context[0] : null;
5
5
 
6
6
  const contextObject = getContextObject(data, context);
7
7
 
@@ -11,12 +11,11 @@ const _ = require('lodash');
11
11
  // literal `Tom &amp; Jerry`.
12
12
 
13
13
  function schemaImageObject(metaDataVal) {
14
- let imageObject;
15
14
  if (!metaDataVal || !metaDataVal.url) {
16
15
  return null;
17
16
  }
18
17
 
19
- imageObject = {
18
+ const imageObject = {
20
19
  '@type': 'ImageObject',
21
20
  url: metaDataVal.url,
22
21
  };
@@ -30,9 +29,7 @@ function schemaImageObject(metaDataVal) {
30
29
  }
31
30
 
32
31
  function schemaPublisherObject(metaDataVal) {
33
- let publisherObject;
34
-
35
- publisherObject = {
32
+ const publisherObject = {
36
33
  '@type': 'Organization',
37
34
  name: metaDataVal.site.title,
38
35
  url: metaDataVal.site.url || null,
@@ -118,11 +115,9 @@ function getPostSchema(metaData, data) {
118
115
  // or the automated excerpt of 50 words. It is empty for any other context.
119
116
  const description = metaData.excerpt || null;
120
117
 
121
- let schema;
122
-
123
118
  const context = data.page ? 'page' : 'post';
124
119
 
125
- schema = {
120
+ const schema = {
126
121
  '@context': 'https://schema.org',
127
122
  '@type': 'Article',
128
123
  publisher: schemaPublisherObject(metaData),
@@ -1,14 +1,13 @@
1
1
  const socialUrls = require('@tryghost/social-urls');
2
2
 
3
3
  function getStructuredData(metaData) {
4
- let structuredData;
5
4
  let card = 'summary';
6
5
 
7
6
  if (metaData.twitterImage || metaData.coverImage.url) {
8
7
  card = 'summary_large_image';
9
8
  }
10
9
 
11
- structuredData = {
10
+ const structuredData = {
12
11
  'og:site_name': metaData.site.title,
13
12
  'og:type': metaData.ogType,
14
13
  'og:title': metaData.ogTitle,
@@ -126,7 +126,7 @@ class Minifier {
126
126
 
127
127
  async writeFile(contents, dest) {
128
128
  if (contents) {
129
- let writePath = this.getFullDest(dest);
129
+ const writePath = this.getFullDest(dest);
130
130
  // Ensure the output folder exists
131
131
  await fs.mkdir(this.destPath, { recursive: true });
132
132
  // Create the file
@@ -38,7 +38,7 @@ function entryLookup(postUrl, routerOptions, locals, { giftToken } = {}) {
38
38
  isEditURL = true;
39
39
  }
40
40
 
41
- let options = {
41
+ const options = {
42
42
  include: 'authors,tags,tiers',
43
43
  };
44
44
 
@@ -64,8 +64,8 @@ async function fetchData(pathOptions, routerOptions, locals) {
64
64
  pathOptions = pathOptions || {};
65
65
  routerOptions = routerOptions || {};
66
66
 
67
- let postQuery = _.cloneDeep(defaultPostQuery);
68
- let promises = [];
67
+ const postQuery = _.cloneDeep(defaultPostQuery);
68
+ const promises = [];
69
69
 
70
70
  if (routerOptions.filter) {
71
71
  postQuery.options.filter = routerOptions.filter;