ghost 6.61.0 → 6.63.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.
- package/components/ghost-storage-base-3.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-cache-0.2.0.tgz +0 -0
- package/components/tryghost-adapter-base-jobs-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-redirects-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-route-settings-0.0.0.tgz +0 -0
- package/components/tryghost-adapter-base-scheduling-0.2.3.tgz +0 -0
- package/components/tryghost-adapter-base-sso-0.1.3.tgz +0 -0
- package/components/tryghost-admin-api-schema-0.0.0.tgz +0 -0
- package/components/tryghost-checkout-0.0.0.tgz +0 -0
- package/components/tryghost-i18n-0.0.0.tgz +0 -0
- package/components/tryghost-kg-card-factory-5.2.4.tgz +0 -0
- package/components/tryghost-kg-clean-basic-html-4.3.4.tgz +0 -0
- package/components/tryghost-kg-converters-1.2.5.tgz +0 -0
- package/components/tryghost-kg-default-cards-10.3.5.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.2.1.tgz +0 -0
- package/components/tryghost-kg-default-transforms-1.3.4.tgz +0 -0
- package/components/tryghost-kg-html-to-lexical-1.4.0.tgz +0 -0
- package/components/tryghost-kg-lexical-html-renderer-1.5.0.tgz +0 -0
- package/components/tryghost-kg-markdown-html-renderer-7.2.4.tgz +0 -0
- package/components/tryghost-kg-utils-1.1.4.tgz +0 -0
- package/components/tryghost-limit-service-0.0.0.tgz +0 -0
- package/components/tryghost-metafield-types-0.0.0.tgz +0 -0
- package/components/tryghost-nql-string-0.0.0.tgz +0 -0
- package/components/tryghost-parse-email-address-0.0.0.tgz +0 -0
- package/content/settings/README.md +1 -1
- package/content/themes/casper/.gitignore +28 -0
- package/content/themes/casper/assets/built/casper.js +1 -1
- package/content/themes/casper/assets/built/screen.css +1 -1
- package/content/themes/casper/assets/css/screen.css +2 -1
- package/content/themes/casper/assets/js/lightbox.js +63 -46
- package/content/themes/casper/package.json +6 -6
- package/content/themes/casper/page.hbs +1 -0
- package/content/themes/casper/post.hbs +1 -0
- package/content/themes/source/.gitignore +28 -0
- package/content/themes/source/assets/built/screen.css +1 -1
- package/content/themes/source/assets/built/source.js +1 -1
- package/content/themes/source/assets/css/screen.css +2 -1
- package/content/themes/source/assets/js/lightbox.js +62 -45
- package/content/themes/source/assets/js/main.js +2 -2
- package/content/themes/source/package.json +4 -4
- package/content/themes/source/partials/feature-image.hbs +1 -0
- package/content/themes/source/partials/post-card.hbs +1 -1
- package/core/boot.js +61 -27
- package/core/built/admin/assets/Combination-B0l4MKVh.js +41 -0
- package/core/built/admin/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
- package/core/built/admin/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
- package/core/built/admin/assets/{about-Bve7IJS2.js → about-C1C3s5-g.js} +1 -1
- package/core/built/admin/assets/accordion-CxGsDKwa.js +1 -0
- package/core/built/admin/assets/account-migration-CbUhW6gk.js +1 -0
- package/core/built/admin/assets/activitypub/{account-migration-C-aej4x_.js → account-migration-KA6Jjf9L.js} +16 -16
- package/core/built/admin/assets/activitypub/activitypub.js +9 -9
- package/core/built/admin/assets/activitypub/{avatar-DLPL3Abs.js → avatar-DVJF5bxP.js} +2 -2
- package/core/built/admin/assets/activitypub/{avatar-flipboard-C9iDY-QV.js → avatar-flipboard-csQaNeYK.js} +2 -2
- package/core/built/admin/assets/activitypub/{bluesky-sharing-BXkA5mqV.js → bluesky-sharing-C7nTDMvw.js} +37 -37
- package/core/built/admin/assets/activitypub/{content-formatters-CHcyMFk4.js → content-formatters-CLcjaBwV.js} +4 -4
- package/core/built/admin/assets/activitypub/{copy-DIAOQoCZ.js → copy-DcOh8kXw.js} +2 -2
- package/core/built/admin/assets/activitypub/{domain-B3ihkPde.js → domain-fZ-X8i4-.js} +121 -121
- package/core/built/admin/assets/activitypub/{edit-profile-DsZM3rTX.js → edit-profile-BqMLQV88.js} +40 -40
- package/core/built/admin/assets/activitypub/{explore-BodNrZgR.js → explore-B4yPoP8E.js} +27 -27
- package/core/built/admin/assets/activitypub/{feed-PwH1iJ84.js → feed-BRC_mvAe.js} +51 -51
- package/core/built/admin/assets/activitypub/{field-D06-kmOJ.js → field-COacNgOt.js} +3 -3
- package/core/built/admin/assets/activitypub/{hash-Bm3WxYN4.js → hash-C7u-irQQ.js} +2 -2
- package/core/built/admin/assets/activitypub/inbox-BW-yvUoN.js +1284 -0
- package/core/built/admin/assets/activitypub/{inbox-d8oJRTf4.js → inbox-CbTTdDQ3.js} +2 -2
- package/core/built/admin/assets/activitypub/label-kPMmYI7l.js +16 -0
- package/core/built/admin/assets/activitypub/layout-BL4_jtuV.js +1 -0
- package/core/built/admin/assets/activitypub/{moderation-D1Yapsod.js → moderation-CuidJzc0.js} +91 -91
- package/core/built/admin/assets/activitypub/{note-C5zjqq5C.js → note-CAMRRSqD.js} +24 -24
- package/core/built/admin/assets/activitypub/{notifications-B9p8eCHD.js → notifications-BmNlXGgp.js} +51 -51
- package/core/built/admin/assets/activitypub/{onboarding-CNelD_uF.js → onboarding-Bqg7fh_L.js} +2 -2
- package/core/built/admin/assets/activitypub/{onboarding-mat5Hrl0.js → onboarding-Dmun9jr_.js} +2 -2
- package/core/built/admin/assets/activitypub/{preferences-BCqUdC3v.js → preferences--oH19wf9.js} +1519 -1519
- package/core/built/admin/assets/activitypub/{profile-BRCWoFem.js → profile-DH_tQx2D.js} +185 -185
- package/core/built/admin/assets/activitypub/{reply-DYK5vVqb.js → reply-Cap9PxSH.js} +2 -2
- package/core/built/admin/assets/activitypub/{routes-BSXT992i.js → routes-DdyY9uFF.js} +744 -735
- package/core/built/admin/assets/activitypub/{separator-BbQqTm-p.js → separator-CAxxu8VV.js} +3 -3
- package/core/built/admin/assets/activitypub/settings-B6EEcVkW.js +315 -0
- package/core/built/admin/assets/activitypub/{site-DHoMupSB.js → site-BYps63oh.js} +2 -2
- package/core/built/admin/assets/activitypub/{step-1-B-YfsVeO.js → step-1-CKjR2KAm.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-2-DtPQzlTH.js → step-2-B6PKfOUQ.js} +6 -6
- package/core/built/admin/assets/activitypub/{step-3-D6BFMXL_.js → step-3-C-qBbcUo.js} +11 -11
- package/core/built/admin/assets/activitypub/{tabs-GpNecvfB.js → tabs-DLhZtVde.js} +306 -306
- package/core/built/admin/assets/activitypub/{topic-filter-BPDeQQys.js → topic-filter-DsUOuu0k.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-activity-pub-queries-BoVOxXkV.js → use-activity-pub-queries-CX9snsLs.js} +3 -3
- package/core/built/admin/assets/activitypub/{use-navigate-with-base-path-Bmk5h4lW.js → use-navigate-with-base-path-DsJTGDSS.js} +988 -959
- package/core/built/admin/assets/activitypub/{use-reply-chain-data-wVBX7swM.js → use-reply-chain-data-AJi9zkzm.js} +30 -30
- package/core/built/admin/assets/activitypub/{users-CoX6FT_K.js → users-inweyKL5.js} +192 -164
- package/core/built/admin/assets/activitypub/{x-DbQZOLiI.js → x-DR8AT3-4.js} +2 -2
- package/core/built/admin/assets/add-integration-modal-BT_onDJy.js +1 -0
- package/core/built/admin/assets/add-newsletter-modal-Cx1kQpiY.js +1 -0
- package/core/built/admin/assets/add-recommendation-modal-B5nvAhvr.js +1 -0
- package/core/built/admin/assets/analytics-DjoJWPI7.js +1 -0
- package/core/built/admin/assets/{announcement-bar-modal-DM3cYOpo.js → announcement-bar-modal-Dwd0EGFP.js} +1 -1
- package/core/built/admin/assets/{api-keys-3-0vJC3Y.js → api-keys-BGPzLHzA.js} +1 -1
- package/core/built/admin/assets/{api-keys-BLm2NDBh.js → api-keys-BoeacM-s.js} +1 -1
- package/core/built/admin/assets/{audience-9mwU5TW6.js → audience-ceV3XVHq.js} +1 -1
- package/core/built/admin/assets/automated-emails-BLesE41L.js +1 -0
- package/core/built/admin/assets/{automations-sAcJ1334.js → automations-BN4u3GR8.js} +1 -1
- package/core/built/admin/assets/automations-C-ZTUwW3.js +1 -0
- package/core/built/admin/assets/bluesky-sharing-vzh-oPXL.js +1 -0
- package/core/built/admin/assets/{breadcrumb-DLiqCyFc.js → breadcrumb-CaLk2b7D.js} +1 -1
- package/core/built/admin/assets/{button-B2jcu6bk.js → button-Dvcv1QSR.js} +1 -1
- package/core/built/admin/assets/calendar-Bl9RLcZX.js +1 -0
- package/core/built/admin/assets/{chart-helpers-Fo3bUL3K.js → chart-helpers-FHywU0pj.js} +1 -1
- package/core/built/admin/assets/{checkbox-BfKktMph.js → checkbox-BtayFtjg.js} +1 -1
- package/core/built/admin/assets/chunk.254.035b85ec456ebbd7336b.js +440 -0
- package/core/built/admin/assets/{chunk.524.60ca4692d91c6022042f.js → chunk.524.e6975095fccdf22d90f8.js} +5 -5
- package/core/built/admin/assets/{chunk.582.525c7617c2d9e94c940a.js → chunk.582.98b485f9b2802f540897.js} +6 -6
- package/core/built/admin/assets/{chunk.492.f24d855d7e3f3aad261c.js → chunk.901.4ccc639821020230bcca.js} +9949 -7921
- package/core/built/admin/assets/{code-editor-view-DCQJxsfU.js → code-editor-view-C3ZfoF1X.js} +1 -1
- package/core/built/admin/assets/{code-editor-view-CYVu4EW6.js → code-editor-view-CAyRWy1s.js} +1 -1
- package/core/built/admin/assets/color-picker-G4kGR7rp.js +3 -0
- package/core/built/admin/assets/color-picker-field-DQFVTNnT.js +1 -0
- package/core/built/admin/assets/combobox-BnYzgEB4.js +1 -0
- package/core/built/admin/assets/command-C_vyTikI.js +1 -0
- package/core/built/admin/assets/comments-aBrxfnZf.js +1 -0
- package/core/built/admin/assets/{config-DOMQDZGZ.js → config-kSHvwdTG.js} +1 -1
- package/core/built/admin/assets/confirmation-context-DwXX_Y5h.js +1 -0
- package/core/built/admin/assets/{content-api-modal-CyQEC3fr.js → content-api-modal-D2G0nJP6.js} +1 -1
- package/core/built/admin/assets/context-menu-DOVB6yaz.js +1 -0
- package/core/built/admin/assets/{copy-field-B3M1s78L.js → copy-field-DCJwh9qf.js} +1 -1
- package/core/built/admin/assets/create-ghost-browse-value-source-5C53jJaX.js +1 -0
- package/core/built/admin/assets/custom-field-type-option-BAuW0F-E.js +1 -0
- package/core/built/admin/assets/custom-integration-modal-AbJGVyKc.js +1 -0
- package/core/built/admin/assets/{date-range-select-DD2RKkgB.js → date-range-select-BY3K-ukj.js} +1 -1
- package/core/built/admin/assets/design-and-theme-modal-BvEy4_pC.js +2 -0
- package/core/built/admin/assets/dirty-confirm-dialog-DVPuGz3U.js +1 -0
- package/core/built/admin/assets/{disabled-sources-indicator-Cvy47bE2.js → disabled-sources-indicator-Cy7Zp4c8.js} +1 -1
- package/core/built/admin/assets/dist-Dcsslyo72.js +1 -0
- package/core/built/admin/assets/domain-Dl61QGuk.js +1 -0
- package/core/built/admin/assets/dropzone-Dtz5Rmjt.js +5 -0
- package/core/built/admin/assets/edit-profile-DNJSMDwm.js +1 -0
- package/core/built/admin/assets/editor-DbAen9zf.js +8 -0
- package/core/built/admin/assets/editor-screen-BFWThIai.js +26 -0
- package/core/built/admin/assets/email-sending-status-context-CWDOD1FN.js +1 -0
- package/core/built/admin/assets/email-sending-status-provider-DCPkDICt.js +1 -0
- package/core/built/admin/assets/emails-vFMk4yYl.js +1 -0
- package/core/built/admin/assets/{embed-signup-form-modal-DeBMLxlL.js → embed-signup-form-modal-DGqsORxS.js} +1 -1
- package/core/built/admin/assets/en-B1jX3WMs.js +1 -0
- package/core/built/admin/assets/explore-nnRr1Fja.js +1 -0
- package/core/built/admin/assets/feature-flag-overrides-context-DQjdJFAk.js +1 -0
- package/core/built/admin/assets/feature-image-placeholder-BrIHmPs8.js +1 -0
- package/core/built/admin/assets/feed-BNUcNu-W.js +1 -0
- package/core/built/admin/assets/feedback-DJ4Zb9rZ.js +1 -0
- package/core/built/admin/assets/{field-Cj8lmDOo.js → field-C93_Mg6j.js} +1 -1
- package/core/built/admin/assets/filter-bar-Da1qxybu.js +1 -0
- package/core/built/admin/assets/filter-sources-CGJb4C5r.js +1 -0
- package/core/built/admin/assets/filters--kKP-EC8.js +1 -0
- package/core/built/admin/assets/filters-DxA_a4FP.js +1 -0
- package/core/built/admin/assets/first-promoter-modal-BYDtrz2S.js +1 -0
- package/core/built/admin/assets/focus-koenig-editor-on-bottom-click-BbSnGOtK.js +1 -0
- package/core/built/admin/assets/{ghost-c8807202a07c20030acb719ee0114815.css → ghost-8fd5bb799356bbefb254210ba7e1236d.css} +1 -1
- package/core/built/admin/assets/{ghost-3894eedcc6968f658578c0abfe942aab.js → ghost-b4e8a403baba61905cd7560e30b9732d.js} +63 -44
- package/core/built/admin/assets/{ghost-dark-fbf1e384aaef3ae315e540f0eb7373a7.css → ghost-dark-cac0cb2d5bb78e9bd14d8d1c2768ed45.css} +1 -1
- package/core/built/admin/assets/gift-link-modal-B7u5bD4e.js +1 -0
- package/core/built/admin/assets/{gift-links-DLDS7ljO.js → gift-links-CfLSnst2.js} +1 -1
- package/core/built/admin/assets/{growth-D6mhcx3q.js → growth-Cd1uO9d2.js} +1 -1
- package/core/built/admin/assets/growth-aG32xfdE.js +3 -0
- package/core/built/admin/assets/history-modal-Df8lW8h-.js +1 -0
- package/core/built/admin/assets/hooks-Cy_-oZ4o.js +2 -0
- package/core/built/admin/assets/{html-field-C8qVGGC1.js → html-field-DA4eU7eq.js} +1 -1
- package/core/built/admin/assets/{images-h8VZEQ9k.js → images-KXmyO3Ss.js} +1 -1
- package/core/built/admin/assets/{inbox-BYd1M06Q.js → inbox-gJHG7_xd.js} +14 -14
- package/core/built/admin/assets/index-BHHXtR5C.css +2 -0
- package/core/built/admin/assets/index-CgMCwsxN.js +4 -0
- package/core/built/admin/assets/index.es-CY6-yuw9.js +1 -0
- package/core/built/admin/assets/{input-group-D8sCXRF5.js → input-group-BE8rM2y1.js} +1 -1
- package/core/built/admin/assets/{integrations-Bjbu86Z0.js → integrations-B4kuRBFY.js} +1 -1
- package/core/built/admin/assets/invite-user-modal-B4CuNcx4.js +1 -0
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.js +14 -14
- package/core/built/admin/assets/koenig-lexical/koenig-lexical.umd.js +3 -3
- package/core/built/admin/assets/koenig-lexical/style.css +1 -1
- package/core/built/admin/assets/{koenig-lexical-_-IsVI7E.js → koenig-lexical-CGXb0F8o.js} +3 -3
- package/core/built/admin/assets/koenig-loader-BeM5rFPX.js +2 -0
- package/core/built/admin/assets/{kpi-card-DZQk_0W8.js → kpi-card-B21aToe8.js} +1 -1
- package/core/built/admin/assets/{kpi-card-DW_2y3ug.js → kpi-card-pz6Wv4Ae.js} +1 -1
- package/core/built/admin/assets/{kpi-helpers-PueTKuA6.js → kpi-helpers-Dq5jelmP.js} +1 -1
- package/core/built/admin/assets/{kpi-tabs-CojDs-Qz.js → kpi-tabs-DEZHpKUt.js} +1 -1
- package/core/built/admin/assets/{label-DjbT91GM.js → label-OLCzze8N.js} +1 -1
- package/core/built/admin/assets/label-picker-BigOvMPV.js +1 -0
- package/core/built/admin/assets/{labels-CH3Kn8RV.js → labels-Dr0SgUQD.js} +1 -1
- package/core/built/admin/assets/layout-DUTL8SH5.js +1 -0
- package/core/built/admin/assets/lib-7QPTI0FS.js +1 -0
- package/core/built/admin/assets/link-helpers-BRAg9SCj.js +1 -0
- package/core/built/admin/assets/links-BDHPTlyj.js +1 -0
- package/core/built/admin/assets/member-custom-fields-TRTHCAz9.js +1 -0
- package/core/built/admin/assets/member-detail-b6dRwc3C.js +1 -0
- package/core/built/admin/assets/members-Czt5lJSc.js +4 -0
- package/core/built/admin/assets/moderation-ZWefD9uH.js +1 -0
- package/core/built/admin/assets/{multi-select-combobox-B6LiRzDO.js → multi-select-combobox-CT13MTo-.js} +1 -1
- package/core/built/admin/assets/navigation-modal-C8FEhBK5.js +1 -0
- package/core/built/admin/assets/newsletter-5VYW4RyJ.js +1 -0
- package/core/built/admin/assets/newsletter-detail-modal-ChjC0ZqH.js +1 -0
- package/core/built/admin/assets/{newsletter-emails-CFeLlt4z.js → newsletter-emails-DZH6I-PY.js} +1 -1
- package/core/built/admin/assets/newsletters-DOC9KBcX.js +1 -0
- package/core/built/admin/assets/newsletters-Rq1M3GD-.js +1 -0
- package/core/built/admin/assets/note-DIV-Pojr.js +1 -0
- package/core/built/admin/assets/notifications-s20-H49V.js +1 -0
- package/core/built/admin/assets/nql-BLpCn7qX.js +21 -0
- package/core/built/admin/assets/{offers-9J1CSiLy.js → offers--e2nGvkW.js} +1 -1
- package/core/built/admin/assets/offers-container-modal-BmG5M5Tv.js +1 -0
- package/core/built/admin/assets/onboarding-CUuy9unR.js +1 -0
- package/core/built/admin/assets/{onboarding-B4YhlZ0i.js → onboarding-pXyct0Jm.js} +1 -1
- package/core/built/admin/assets/{onboarding-route-Dmc4IPm3.js → onboarding-route-CK4pcXoR.js} +1 -1
- package/core/built/admin/assets/overview-CaPsciMs.js +1 -0
- package/core/built/admin/assets/overview-a8GfcsKX.js +1 -0
- package/core/built/admin/assets/{page-header-BR_nbIPp.js → page-header-DM_KyoFI.js} +1 -1
- package/core/built/admin/assets/pagemenu-vgZVUVKR.js +1 -0
- package/core/built/admin/assets/pages-CjDY2CBI.js +1 -0
- package/core/built/admin/assets/pages-route-BzKZYdV5.js +1 -0
- package/core/built/admin/assets/papaparse.min-cQwnxGCG.js +10 -0
- package/core/built/admin/assets/{pintura-modal-BR9hEvS8.js → pintura-modal-DExCF1ii.js} +1 -1
- package/core/built/admin/assets/portal-frame-Cqanidq4.js +1 -0
- package/core/built/admin/assets/portal-modal-oinBgA27.js +1 -0
- package/core/built/admin/assets/post-analytics-C5oJ1dWV.js +1 -0
- package/core/built/admin/assets/post-analytics-header-OATo3X_r.js +1 -0
- package/core/built/admin/assets/post-analytics-provider-tOpIVGT5.js +1 -0
- package/core/built/admin/assets/post-helpers-C88JBa4D.js +1 -0
- package/core/built/admin/assets/post-share-modal-DvhC1XgV.js +1 -0
- package/core/built/admin/assets/post-utils-DKF4mfuo.js +1 -0
- package/core/built/admin/assets/posts-list-screen-o4ZjbgS3.js +2 -0
- package/core/built/admin/assets/posts-pCPrhQeR.js +1 -0
- package/core/built/admin/assets/posts-route-9F--xdIb.js +1 -0
- package/core/built/admin/assets/preferences--vNubsqD.js +5 -0
- package/core/built/admin/assets/{preview-modal-C-BL-F9k.js → preview-modal-YYbzlYdO.js} +1 -1
- package/core/built/admin/assets/profile-BllKV3dR.js +1 -0
- package/core/built/admin/assets/{radio-group-Bgz60i81.js → radio-group-DL8GI8rt.js} +1 -1
- package/core/built/admin/assets/{referrers-CnhCMWCs.js → referrers-D8oHPmDB.js} +1 -1
- package/core/built/admin/assets/router-provider-BSvTXgZY.js +1 -0
- package/core/built/admin/assets/schemas-BoYdB6YU.js +64 -0
- package/core/built/admin/assets/select-v5YbA3Mw.js +1 -0
- package/core/built/admin/assets/settings-PEsZupw1.js +4 -0
- package/core/built/admin/assets/{settings-breadcrumbs-CyP_9zTo.js → settings-breadcrumbs-NwPnCTC7.js} +1 -1
- package/core/built/admin/assets/settings-u_s1CRkr.js +1 -0
- package/core/built/admin/assets/share-modal-SskCmVGL.js +1 -0
- package/core/built/admin/assets/slack-modal-XxSJiYgo.js +1 -0
- package/core/built/admin/assets/{sort-button-Cc-Z96sA.js → sort-button-Cx1KtINE.js} +1 -1
- package/core/built/admin/assets/{source-icon-v6PUnmyM.js → source-icon-Bdp9Im_5.js} +1 -1
- package/core/built/admin/assets/stats-D9PDLS3x.js +1 -0
- package/core/built/admin/assets/stats-view-W2g6Jsd-.js +1 -0
- package/core/built/admin/assets/{step-1-DSRp2vBj.js → step-1-BQYzvBzr.js} +1 -1
- package/core/built/admin/assets/{step-2-COqv2g0u.js → step-2-xES32xJV.js} +1 -1
- package/core/built/admin/assets/{step-3-6W1NMVQc.js → step-3-DA_XK5kW.js} +2 -2
- package/core/built/admin/assets/{stripe-button-D2K42Uty.js → stripe-button-CVsLHelt.js} +1 -1
- package/core/built/admin/assets/stripe-connect-modal-ClmLOMGS.js +1 -0
- package/core/built/admin/assets/style-Wd9nQubI.css +1 -0
- package/core/built/admin/assets/{table-B2pIKjVh.js → table-BenqVupI.js} +1 -1
- package/core/built/admin/assets/{tabs-SaW_UT-Q.js → tabs-eBBlxPp8.js} +1 -1
- package/core/built/admin/assets/tag-detail-Ce8Se2qd.js +2 -0
- package/core/built/admin/assets/tag-picker-C3UR-uJ-.js +1 -0
- package/core/built/admin/assets/tags-B-kJxCs7.js +1 -0
- package/core/built/admin/assets/{tags-zTFiKRpb.js → tags-ChfdwJyS.js} +1 -1
- package/core/built/admin/assets/testimonials-modal-9Q6fT06V.js +1 -0
- package/core/built/admin/assets/tier-detail-modal-CDyYdqK7.js +1 -0
- package/core/built/admin/assets/tiers-BCpIOGQr.js +1 -0
- package/core/built/admin/assets/{toggle-group-EM9WpESu.js → toggle-group-CviIkyok.js} +1 -1
- package/core/built/admin/assets/{topic-filter-DY4gNHn2.js → topic-filter-I2jCBGxm.js} +1 -1
- package/core/built/admin/assets/{transistor-modal-CpyPG-MH.js → transistor-modal-p53u3W8y.js} +1 -1
- package/core/built/admin/assets/{trend-badge-ByMkuAuH.js → trend-badge-CideVzQd.js} +1 -1
- package/core/built/admin/assets/{unsplash-modal-Cv2Q6GtY.js → unsplash-modal-DY8UcKcE.js} +1 -1
- package/core/built/admin/assets/{use-analytics-data-CHvjMYuT.js → use-analytics-data-DAIGcr2f.js} +1 -1
- package/core/built/admin/assets/use-check-theme-limit-error-B8bjF-gO.css +1 -0
- package/core/built/admin/assets/{use-check-theme-limit-error-Qv4SVXqw.js → use-check-theme-limit-error-DRUjK4YM.js} +1 -1
- package/core/built/admin/assets/use-filter-params-JkZhIS8L.js +1 -0
- package/core/built/admin/assets/{use-filterable-api-CzXcpUh8.js → use-filterable-api-BVEVMrhZ.js} +1 -1
- package/core/built/admin/assets/use-growth-stats-937CUj6j.js +1 -0
- package/core/built/admin/assets/use-host-limits-D0Dv3tKA.js +1 -0
- package/core/built/admin/assets/{use-limiter-cwJvsNBo.js → use-limiter-CohWfzvK.js} +1 -1
- package/core/built/admin/assets/{use-navigate-with-base-path-BHPA228f.js → use-navigate-with-base-path-BkxcPj5l.js} +1 -1
- package/core/built/admin/assets/use-pintura-config-xgytjU35.js +1 -0
- package/core/built/admin/assets/{use-pintura-editor-BDBXWUYq.js → use-pintura-editor-CaV1mbfO.js} +1 -1
- package/core/built/admin/assets/{use-post-referrers-DbY-mzci.js → use-post-referrers-BCQI7fDg.js} +1 -1
- package/core/built/admin/assets/use-reply-chain-data-CYRhoaxY.js +1 -0
- package/core/built/admin/assets/{use-router-history-entry-Bg6BhBQQ.js → use-router-history-entry-NOKcd--l.js} +1 -1
- package/core/built/admin/assets/{use-setting-group-VM7FQwMY.js → use-setting-group-bLKMwoBT.js} +1 -1
- package/core/built/admin/assets/use-settings-navigation-B-qrriKD.js +1 -0
- package/core/built/admin/assets/{use-simple-pagination-Dum6Irbs.js → use-simple-pagination-CNPd6Rf6.js} +1 -1
- package/core/built/admin/assets/use-staff-users-pRIMIyiW.js +1 -0
- package/core/built/admin/assets/use-tinybird-query-CmdbCS9X.js +1 -0
- package/core/built/admin/assets/use-tinybird-token-KLne235s.js +1 -0
- package/core/built/admin/assets/{use-unsaved-changes-guard-BAy0RANR.js → use-unsaved-changes-guard-7-ug0JdH.js} +1 -1
- package/core/built/admin/assets/use-upgrade-route-Dm_qqKr0.js +1 -0
- package/core/built/admin/assets/{use-url-input-Df5QzNa7.js → use-url-input-fvp-TpPx.js} +1 -1
- package/core/built/admin/assets/user-detail-modal-D3KlGYv-.js +1 -0
- package/core/built/admin/assets/users-DVNWrqg9.js +1 -0
- package/core/built/admin/assets/{vendor-5753232c7d6ffb3c44e1eb0a02133953.js → vendor-2dd263291938d407802568d3357ec69e.js} +19 -17
- package/core/built/admin/assets/{virtual-list-DEx8WgiO.js → virtual-list-CZ3RK2Yf.js} +1 -1
- package/core/built/admin/assets/web-ClEJsCAj.js +2 -0
- package/core/built/admin/assets/web-X9rdnrtq.js +1 -0
- package/core/built/admin/assets/{zapier-modal-Cw3BTBUu.js → zapier-modal-DfVhV17j.js} +1 -1
- package/core/built/admin/index.html +23 -27
- package/core/frontend/apps/private-blogging/lib/views/private.hbs +44 -43
- package/core/frontend/helpers/cancel_link.js +2 -2
- package/core/frontend/helpers/pagination.js +2 -2
- package/core/frontend/helpers/social_accounts.js +2 -2
- package/core/frontend/public/ghost.css +1 -1
- package/core/frontend/public/ghost.min.css +1 -1
- package/core/frontend/services/sitemap/user-map-generator.js +9 -2
- package/core/server/adapters/jobs/InMemoryJobsBackend.js +74 -29
- package/core/server/api/endpoints/authentication.js +1 -2
- package/core/server/api/endpoints/authors-public.js +15 -5
- package/core/server/api/endpoints/emails.js +13 -0
- package/core/server/api/endpoints/index.js +10 -2
- package/core/server/api/endpoints/mail.js +1 -1
- package/core/server/api/endpoints/member-metafields-members.js +23 -0
- package/core/server/api/endpoints/member-metafields.js +102 -0
- package/core/server/api/endpoints/members-account.js +42 -0
- package/core/server/api/endpoints/members.js +4 -4
- package/core/server/api/endpoints/newsletters-public.js +10 -1
- package/core/server/api/endpoints/pages-public.js +15 -5
- package/core/server/api/endpoints/posts-public.js +15 -5
- package/core/server/api/endpoints/posts.js +3 -3
- package/core/server/api/endpoints/tags-public.js +22 -3
- package/core/server/api/endpoints/tiers-checkout-config.js +2 -2
- package/core/server/api/endpoints/tiers-public.js +38 -1
- package/core/server/api/endpoints/users.js +2 -2
- package/core/server/api/endpoints/utils/api-filter-utils.js +170 -3
- package/core/server/api/endpoints/utils/public-cache-keys.js +3 -0
- package/core/server/api/endpoints/utils/serializers/input/authors.js +2 -0
- package/core/server/api/endpoints/utils/serializers/input/members.js +20 -9
- package/core/server/api/endpoints/utils/serializers/input/pages.js +2 -0
- package/core/server/api/endpoints/utils/serializers/input/posts.js +2 -0
- package/core/server/api/endpoints/utils/serializers/input/tags.js +2 -0
- package/core/server/api/endpoints/utils/serializers/output/emails.js +7 -0
- package/core/server/api/endpoints/utils/serializers/output/index.js +6 -2
- package/core/server/api/endpoints/utils/serializers/output/member-metafields.js +18 -0
- package/core/server/api/endpoints/utils/serializers/output/members-account.js +19 -0
- package/core/server/api/endpoints/utils/serializers/output/members-csv-transform.js +1 -1
- package/core/server/api/endpoints/utils/serializers/output/members.js +2 -4
- package/core/server/api/endpoints/utils/serializers/output/tiers.js +10 -2
- package/core/server/api/endpoints/utils/serializers/output/users.js +0 -10
- package/core/server/api/endpoints/utils/validators/input/invitations.js +0 -5
- package/core/server/api/endpoints/utils/validators/input/pages.js +1 -1
- package/core/server/api/endpoints/utils/validators/input/posts.js +1 -1
- package/core/server/data/exporter/table-lists.js +3 -3
- package/core/server/data/importer/importers/data/data-importer.js +3 -3
- package/core/server/data/migrations/utils/migrations.js +1 -1
- package/core/server/data/migrations/versions/6.53/2026-07-15-20-22-53-add-members-custom-field-values.js +1 -1
- package/core/server/data/migrations/versions/6.57/2026-08-04-18-00-00-store-custom-field-values-as-leaf-rows.js +10 -1
- package/core/server/data/migrations/versions/6.63/2026-09-03-10-07-03-rename-custom-field-tables-to-metafields.js +169 -0
- package/core/server/data/migrations/versions/6.63/2026-09-03-11-03-31-remove-member-custom-field-read-permissions.js +30 -0
- package/core/server/data/schema/fixtures/fixtures.json +0 -11
- package/core/server/data/schema/lib/default-index-name.js +8 -11
- package/core/server/data/schema/schema.js +18 -18
- package/core/server/data/seeders/README.md +48 -0
- package/core/server/data/tinybird/pipes/mv_hits.pipe +86 -50
- package/core/server/lib/db-types/count.js +16 -0
- package/core/server/lib/image/image-size.js +24 -0
- package/core/server/lib/package-json/parse.js +2 -2
- package/core/server/lib/validate-password.js +81 -120
- package/core/server/models/action.js +4 -4
- package/core/server/models/base/plugins/filtered-collection.js +16 -0
- package/core/server/models/member.js +10 -21
- package/core/server/models/post.js +2 -2
- package/core/server/models/relations/authors.js +2 -16
- package/core/server/models/user.js +10 -3
- package/core/server/services/auth/passwordreset.js +13 -0
- package/core/server/services/automations/automations-api.js +1 -1
- package/core/server/services/automations/database-automations-repository.js +11 -4
- package/core/server/services/comments/comments-controller.js +30 -9
- package/core/server/services/comments/comments-service.js +55 -5
- package/core/server/services/content-import/csv/formula.js +12 -0
- package/core/server/services/content-import/csv/index.js +6 -1
- package/core/server/services/content-import/csv/parse.js +27 -6
- package/core/server/services/content-import/csv/serialize.js +13 -0
- package/core/server/services/content-import/import/completion-email.js +164 -0
- package/core/server/services/content-import/import/errors-file.js +36 -0
- package/core/server/services/content-import/import/importer.js +160 -53
- package/core/server/services/content-import/import/local-media-url.js +63 -0
- package/core/server/services/content-import/import/media.js +254 -0
- package/core/server/services/content-import/import/post-data.js +0 -1
- package/core/server/services/content-import/import/post-link.js +11 -0
- package/core/server/services/content-import/import/post-repository.js +25 -3
- package/core/server/services/content-import/import/reader.js +9 -2
- package/core/server/services/content-import/import/report.js +34 -0
- package/core/server/services/content-import/import/row.js +0 -2
- package/core/server/services/content-import/import/schema.js +1 -0
- package/core/server/services/content-import/import/staged-file.js +29 -0
- package/core/server/services/content-import/import/store.js +25 -2
- package/core/server/services/content-import/index.js +52 -6
- package/core/server/services/content-import/jobs/content-csv-import-job.js +20 -0
- package/core/server/services/custom-redirects/redirect-config-parser.js +2 -2
- package/core/server/services/custom-redirects/redirects-service.js +1 -1
- package/core/server/services/custom-redirects/validation.js +1 -1
- package/core/server/services/email-address/email-address-parser.js +30 -38
- package/core/server/services/email-address/email-address-service.js +37 -4
- package/core/server/services/email-analytics/index.js +2 -7
- package/core/server/services/email-service/CONTEXT.md +37 -0
- package/core/server/services/email-service/README.md +42 -0
- package/core/server/services/email-service/batch-sending-service.js +2 -4
- package/core/server/services/email-service/email-controller.js +18 -2
- package/core/server/services/email-service/email-renderer.js +14 -4
- package/core/server/services/email-service/email-service-wrapper.js +3 -9
- package/core/server/services/email-service/mailgun-email-provider.js +20 -9
- package/core/server/services/email-service/sending-status-schema.js +21 -0
- package/core/server/services/email-service/sending-status-serializers.js +33 -0
- package/core/server/services/email-service/sending-status-service.js +47 -0
- package/core/server/services/email-service/sending-status.js +111 -0
- package/core/server/services/email-suppression-list/email-suppression-list.js +0 -33
- package/core/server/services/email-suppression-list/mailgun-email-suppression-list.js +6 -7
- package/core/server/services/gifts/README.md +2 -2
- package/core/server/services/gifts/constants.js +1 -1
- package/core/server/services/gifts/email-templates/gift-delivery.hbs +3 -3
- package/core/server/services/gifts/gift-email-service.js +0 -1
- package/core/server/services/gifts/gift-service.js +19 -57
- package/core/server/services/gifts/index.js +3 -5
- package/core/server/services/gifts/jobs/index.js +4 -4
- package/core/server/services/indexnow-ping/indexnow-ping-service.js +2 -2
- package/core/server/services/invitations/accept.js +4 -2
- package/core/server/services/jobs/job-service.js +0 -9
- package/core/server/services/jobs-service/index.js +8 -0
- package/core/server/services/jobs-service/jobs-service.js +52 -3
- package/core/server/services/jobs-service/register-job-handlers.js +32 -11
- package/core/server/services/mail/ghost-mailer.js +4 -4
- package/core/server/services/member-welcome-emails/service.js +7 -7
- package/core/server/services/members/account-service.js +98 -0
- package/core/server/services/members/api.js +4 -3
- package/core/server/services/members/import-export/csv/parse.js +0 -7
- package/core/server/services/members/import-export/export/exporter.js +20 -20
- package/core/server/services/members/import-export/import/completion-email.js +8 -11
- package/core/server/services/members/import-export/import/importer.js +13 -13
- package/core/server/services/members/import-export/import/row.js +0 -3
- package/core/server/services/members/import-export/index.js +10 -17
- package/core/server/services/members/jobs/clean-expired-comped-job.js +7 -0
- package/core/server/services/members/jobs/clean-expired-comped-task.js +145 -0
- package/core/server/services/members/jobs/index.js +48 -24
- package/core/server/services/members/members-api/controllers/member-controller.js +11 -0
- package/core/server/services/members/members-api/controllers/router-controller.js +3 -6
- package/core/server/services/members/members-api/members-api.js +26 -8
- package/core/server/services/members/members-api/repositories/event-repository.js +0 -4
- package/core/server/services/members/members-api/repositories/member-repository.js +4 -4
- package/core/server/services/members/members-api/services/member-bread-service.js +62 -84
- package/core/server/services/members/members-api/services/payments-service.js +1 -1
- package/core/server/services/members/members-ssr.js +18 -0
- package/core/server/services/members/middleware.js +95 -81
- package/core/server/services/members/service.js +71 -47
- package/core/server/services/members/utils.js +9 -0
- package/core/server/services/members-metafields/access.js +28 -0
- package/core/server/services/{members-custom-fields → members-metafields}/actions.js +5 -5
- package/core/server/services/members-metafields/bindings-service.js +147 -0
- package/core/server/services/members-metafields/codec.js +14 -0
- package/core/server/services/{members-custom-fields → members-metafields}/config.js +1 -1
- package/core/server/services/{members-custom-fields → members-metafields}/definitions-service.js +68 -22
- package/core/server/services/members-metafields/filter.js +181 -0
- package/core/server/services/{members-custom-fields → members-metafields}/index.js +16 -7
- package/core/server/services/{members-custom-fields → members-metafields}/key.js +2 -1
- package/core/server/services/{members-custom-fields → members-metafields}/models.js +5 -5
- package/core/server/services/members-metafields/namespaces.js +34 -0
- package/core/server/services/{members-custom-fields → members-metafields}/queries.js +1 -1
- package/core/server/services/{members-custom-fields → members-metafields}/schema.js +16 -12
- package/core/server/services/members-metafields/serializers.js +22 -0
- package/core/server/services/{members-custom-fields → members-metafields}/values-service.js +80 -48
- package/core/server/services/mentions/mention-controller.js +23 -21
- package/core/server/services/mentions/mention-sending-service.js +26 -9
- package/core/server/services/mentions/process-webmention-job.js +16 -0
- package/core/server/services/mentions/send-webmentions-job.js +18 -0
- package/core/server/services/mentions/service.js +7 -33
- package/core/server/services/route-settings/validation-errors.js +1 -1
- package/core/server/services/route-settings/yaml-parser.js +1 -1
- package/core/server/services/settings/settings-service.js +1 -8
- package/core/server/services/settings-helpers/settings-helpers.js +4 -6
- package/core/server/services/slack-ping/slack-ping-service.js +1 -1
- package/core/server/services/staff/staff-service-emails.js +2 -2
- package/core/server/services/stripe/config.js +14 -8
- package/core/server/services/stripe/service.js +10 -1
- package/core/server/services/stripe/services/checkout/completed-session.js +2 -2
- package/core/server/services/stripe/services/checkout/session-options.js +18 -15
- package/core/server/services/stripe/services/webhook/checkout-session-event-service.js +28 -7
- package/core/server/services/stripe/stripe-api.js +2 -0
- package/core/server/services/stripe/stripe-service.js +24 -14
- package/core/server/services/stripe/webhook-controller.js +10 -0
- package/core/server/services/tier-checkout-config/codec.js +11 -7
- package/core/server/services/tier-checkout-config/index.js +2 -1
- package/core/server/services/tier-checkout-config/models.js +11 -5
- package/core/server/services/tier-checkout-config/queries.js +12 -12
- package/core/server/services/tier-checkout-config/serializers.js +73 -10
- package/core/server/services/tier-checkout-config/service.js +14 -13
- package/core/server/services/tiers/service.js +3 -3
- package/core/server/services/update-check/index.js +13 -13
- package/core/server/services/update-check/jobs/update-check-job.js +7 -0
- package/core/server/services/update-check/update-check-service.js +2 -2
- package/core/server/services/url/router-filter.js +8 -10
- package/core/server/services/users.js +1 -19
- package/core/server/web/admin/controller.js +1 -1
- package/core/server/web/api/endpoints/admin/routes.js +20 -16
- package/core/server/web/members/account/index.js +2 -0
- package/core/server/web/members/account/routes.js +46 -0
- package/core/server/web/members/app.js +4 -18
- package/core/shared/config/defaults.json +1 -1
- package/core/shared/config/env/config.testing-mysql.json +1 -1
- package/core/shared/labs.js +7 -2
- package/package.json +42 -41
- package/pnpm-lock.yaml +1159 -582
- package/pnpm-workspace.yaml +18 -15
- package/components/tryghost-custom-field-types-0.0.0.tgz +0 -0
- package/components/tryghost-kg-default-nodes-2.2.0.tgz +0 -0
- package/core/built/admin/assets/Combination-5fYEzgbs.js +0 -41
- package/core/built/admin/assets/account-migration-DRhAehfw.js +0 -1
- package/core/built/admin/assets/activitypub/inbox-BluD2ucT.js +0 -1284
- package/core/built/admin/assets/activitypub/label-FHSh6ZAw.js +0 -16
- package/core/built/admin/assets/activitypub/layout-Cq4NG0Xr.js +0 -1
- package/core/built/admin/assets/activitypub/settings-DQDkr06X.js +0 -315
- package/core/built/admin/assets/add-integration-modal-BC0jExDZ.js +0 -1
- package/core/built/admin/assets/add-newsletter-modal-DchTkA7l.js +0 -1
- package/core/built/admin/assets/add-recommendation-modal-DMvaJZKp.js +0 -1
- package/core/built/admin/assets/alert-dialog-QhXzdHfc.js +0 -1
- package/core/built/admin/assets/analytics-No1DDY3A.js +0 -1
- package/core/built/admin/assets/automated-emails-te1D5kq-.js +0 -1
- package/core/built/admin/assets/automations-DpUNUdcZ.js +0 -1
- package/core/built/admin/assets/bluesky-sharing-Cjrv_f62.js +0 -1
- package/core/built/admin/assets/chunk.896.435fe0637944d4a69810.js +0 -366
- package/core/built/admin/assets/color-picker-BTY_NdEm.js +0 -3
- package/core/built/admin/assets/color-picker-field-CPlkzOH0.js +0 -1
- package/core/built/admin/assets/combobox-DrMtv_4P.js +0 -1
- package/core/built/admin/assets/command-ZdgYJpoI.js +0 -1
- package/core/built/admin/assets/comments-kidj60-h.js +0 -1
- package/core/built/admin/assets/confirmation-context-BhbmQQEl.js +0 -1
- package/core/built/admin/assets/custom-field-type-option-CsGIZk1J.js +0 -10
- package/core/built/admin/assets/custom-integration-modal-BY37O_9X.js +0 -1
- package/core/built/admin/assets/design-and-theme-modal-DUSKM4uC.js +0 -22
- package/core/built/admin/assets/dialog-B44iRwlc.js +0 -1
- package/core/built/admin/assets/dirty-confirm-dialog-BxgQgQ6H.js +0 -1
- package/core/built/admin/assets/dist-Cy8tfrp_.js +0 -1
- package/core/built/admin/assets/domain-Ca6KhoQt.js +0 -1
- package/core/built/admin/assets/dropzone-Bb-5zQTk.js +0 -5
- package/core/built/admin/assets/edit-profile-BdupLlus.js +0 -1
- package/core/built/admin/assets/editor-BP883Lpn.js +0 -8
- package/core/built/admin/assets/explore-FB-CimXw.js +0 -1
- package/core/built/admin/assets/feed-C1GxsmI2.js +0 -1
- package/core/built/admin/assets/filter-sources-D5n5bFA2.js +0 -1
- package/core/built/admin/assets/filters-DJEzkMUK.js +0 -1
- package/core/built/admin/assets/filters-MZXvdH5D.js +0 -1
- package/core/built/admin/assets/first-promoter-modal-CGTGLCr5.js +0 -1
- package/core/built/admin/assets/gift-link-modal-B6v0tnRN.js +0 -1
- package/core/built/admin/assets/growth-BGAJD1rs.js +0 -3
- package/core/built/admin/assets/history-modal-iKwUY3XR.js +0 -1
- package/core/built/admin/assets/hooks-CuEZV2-q.js +0 -2
- package/core/built/admin/assets/index-DjQe-e5s.js +0 -4
- package/core/built/admin/assets/index-Dqf2x-ry.css +0 -1
- package/core/built/admin/assets/index.es-VihPwfeH.js +0 -1
- package/core/built/admin/assets/input--W-rCTrX.js +0 -1
- package/core/built/admin/assets/invite-user-modal-MdImLCaJ.js +0 -1
- package/core/built/admin/assets/koenig-loader-DYZpm6El.js +0 -2
- package/core/built/admin/assets/label-picker-cB51xl1r.js +0 -1
- package/core/built/admin/assets/layout-c_B_1hax.js +0 -1
- package/core/built/admin/assets/link-helpers-MVDdnFCY.js +0 -1
- package/core/built/admin/assets/loading-indicator-BpFWTVgh.js +0 -1
- package/core/built/admin/assets/member-custom-fields-qs0dIkxM.js +0 -1
- package/core/built/admin/assets/member-detail-B6uec2a6.js +0 -1
- package/core/built/admin/assets/members-BQF3CqhI.js +0 -2
- package/core/built/admin/assets/moderation-DY4wF1Q3.js +0 -1
- package/core/built/admin/assets/navigation-modal-DX-gNF3X.js +0 -1
- package/core/built/admin/assets/newsletter-CyQA7m3m.js +0 -1
- package/core/built/admin/assets/newsletter-detail-modal-BDrptuxn.js +0 -1
- package/core/built/admin/assets/newsletters-DXuNmC42.js +0 -1
- package/core/built/admin/assets/newsletters-DhNigJUh.js +0 -1
- package/core/built/admin/assets/note-Cgo2LCJ6.js +0 -1
- package/core/built/admin/assets/notifications-BC50AMku.js +0 -1
- package/core/built/admin/assets/offers-container-modal-DWycIMzT.js +0 -1
- package/core/built/admin/assets/onboarding-DGQuV7Ew.js +0 -1
- package/core/built/admin/assets/overview-CVbFtn-k.js +0 -1
- package/core/built/admin/assets/overview-YKj7SZaK.js +0 -1
- package/core/built/admin/assets/pages-B6vr9F_D.js +0 -1
- package/core/built/admin/assets/popover-CCy0h5rq.js +0 -1
- package/core/built/admin/assets/portal-frame-dc4XKr0e.js +0 -1
- package/core/built/admin/assets/portal-modal-BvvdF_B9.js +0 -1
- package/core/built/admin/assets/post-analytics-DX470WRG.js +0 -1
- package/core/built/admin/assets/post-analytics-header-CXpJmdDv.js +0 -1
- package/core/built/admin/assets/post-analytics-provider-CLfKGWZy.js +0 -1
- package/core/built/admin/assets/post-helpers-C5OQMBoi.js +0 -1
- package/core/built/admin/assets/post-share-modal-Cl0NXRJr.js +0 -1
- package/core/built/admin/assets/posts-KY3aUhVV.js +0 -1
- package/core/built/admin/assets/preferences-DO0UUWFp.js +0 -5
- package/core/built/admin/assets/profile-CxT-0l4d.js +0 -1
- package/core/built/admin/assets/router-provider-B0gZyiGJ.js +0 -1
- package/core/built/admin/assets/schemas-4UPic-oD.js +0 -64
- package/core/built/admin/assets/select-DuDUFdPq.js +0 -1
- package/core/built/admin/assets/settings-BjCii7BM.js +0 -1
- package/core/built/admin/assets/settings-b8kNzZSQ.js +0 -4
- package/core/built/admin/assets/share-modal-BV70mr9k.js +0 -1
- package/core/built/admin/assets/shim-ClF_m5ux.js +0 -1
- package/core/built/admin/assets/slack-modal-Be2_KK-z.js +0 -1
- package/core/built/admin/assets/stats-C4reGh9O.js +0 -1
- package/core/built/admin/assets/stats-view-DP9pQ62k.js +0 -1
- package/core/built/admin/assets/stripe-connect-modal-Z-UT_BGc.js +0 -1
- package/core/built/admin/assets/tag-detail-Dc0nTOtU.js +0 -2
- package/core/built/admin/assets/tags-BLaXBwnb.js +0 -1
- package/core/built/admin/assets/testimonials-modal-sFwRnNLh.js +0 -1
- package/core/built/admin/assets/tier-detail-modal-BCFpWwUS.js +0 -1
- package/core/built/admin/assets/tiers-Nd_z4BZY.js +0 -1
- package/core/built/admin/assets/use-filter-params-CAvfDvf1.js +0 -1
- package/core/built/admin/assets/use-growth-stats-D6mZXGhK.js +0 -1
- package/core/built/admin/assets/use-host-limits-DZtR08oa.js +0 -1
- package/core/built/admin/assets/use-pintura-config-CzTfnufz.js +0 -1
- package/core/built/admin/assets/use-reply-chain-data-BeQwz8oF.js +0 -1
- package/core/built/admin/assets/use-settings-navigation-BbrSUVcf.js +0 -1
- package/core/built/admin/assets/use-staff-users-cZg4ugOF.js +0 -1
- package/core/built/admin/assets/use-tinybird-query-B1IMyAcv.js +0 -39
- package/core/built/admin/assets/use-tinybird-token-Bow0Zwn8.js +0 -1
- package/core/built/admin/assets/use-upgrade-route-DhRSo7at.js +0 -1
- package/core/built/admin/assets/user-detail-modal-yipSoQfv.js +0 -1
- package/core/built/admin/assets/users-5msE1WMs.js +0 -1
- package/core/built/admin/assets/web-CKcXAu86.js +0 -1
- package/core/built/admin/assets/web-DR4TqM3E.js +0 -2
- package/core/server/api/endpoints/member-custom-fields.js +0 -90
- package/core/server/api/endpoints/utils/serializers/output/member-custom-fields.js +0 -20
- package/core/server/services/email-suppression-list/in-memory-email-suppression-list.js +0 -39
- package/core/server/services/jobs/worker-model-event-bridge.js +0 -149
- package/core/server/services/members/jobs/clean-expired-comped.js +0 -132
- package/core/server/services/members-custom-fields/bindings-service.js +0 -119
- package/core/server/services/members-custom-fields/codec.js +0 -15
- package/core/server/services/members-custom-fields/filter.js +0 -199
- package/core/server/services/members-custom-fields/serializers.js +0 -24
- package/core/server/services/stripe/services/checkout/allowed-countries.js +0 -267
- package/core/server/services/stripe/services/checkout/field-ports.js +0 -34
- package/core/server/services/tier-checkout-config/destinations.js +0 -17
- package/core/server/services/update-check/run-update-check.js +0 -63
- /package/core/built/admin/assets/{chunk.492.f24d855d7e3f3aad261c.js.LICENSE.txt → chunk.901.4ccc639821020230bcca.js.LICENSE.txt} +0 -0
- /package/core/server/services/{members-custom-fields → members-metafields}/storage.js +0 -0
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CUSTOM_FIELDS_RELATION = void 0;
|
|
7
|
-
exports.createCustomFieldsFilterTransformer = createCustomFieldsFilterTransformer;
|
|
8
|
-
// The members filter reaches custom field values through a `custom_fields` relation
|
|
9
|
-
// on the Member model (the values table joined on member_id). A field is named by its
|
|
10
|
-
// `key` — the stable public slug — and matched on its `value`; a composite field's
|
|
11
|
-
// part is named as `value.<part>`, and a part's presence as `path.<part>`:
|
|
12
|
-
//
|
|
13
|
-
// (custom_fields.key:'company'+custom_fields.value:'Ghost') // value
|
|
14
|
-
// (custom_fields.key:'shipping_address'+custom_fields.value.country:'GB')
|
|
15
|
-
// custom_fields.key:'phone' / custom_fields.key:-'phone' // field set / not set
|
|
16
|
-
// (custom_fields.key:'shipping_address'+custom_fields.path:'country') // part set
|
|
17
|
-
// (custom_fields.key:'shipping_address'+custom_fields.path:-'country') // part not set
|
|
18
|
-
//
|
|
19
|
-
// The values table stores one row per leaf: `custom_field_key` (the field's stable key),
|
|
20
|
-
// `path` (empty for a scalar, the part's key for a composite), and `value_text`. A scalar
|
|
21
|
-
// field is just a leaf at path ''; "the field", "a part", and "the whole field" are the
|
|
22
|
-
// same thing — a set of leaf rows pinned by (custom_field_key, [path], [value]). So every
|
|
23
|
-
// filter is one `$elemMatch` over those columns: positive asserts a matching leaf exists,
|
|
24
|
-
// `$not` asserts none does. The public grammar is the storage vocabulary here — the key
|
|
25
|
-
// sits on the row — so the transformer emits it straight, with no id lookup and no field
|
|
26
|
-
// catalog read. That is what lets the Member model chain it inline on every members query,
|
|
27
|
-
// rather than each call site remembering to wire it. A key that names no current field
|
|
28
|
-
// matches no leaf; the admin never offers an archived or deleted field in the filter UI,
|
|
29
|
-
// though the API leaves them queryable.
|
|
30
|
-
const errors_1 = __importDefault(require("@tryghost/errors"));
|
|
31
|
-
const RELATION = 'custom_fields';
|
|
32
|
-
const PREFIX = `${RELATION}.`;
|
|
33
|
-
const KEY_ATTRIBUTE = `${PREFIX}key`;
|
|
34
|
-
const VALUE_ATTRIBUTE = `${PREFIX}value`;
|
|
35
|
-
const PATH_ATTRIBUTE = `${PREFIX}path`;
|
|
36
|
-
const ROOT_PATH = '';
|
|
37
|
-
// Only recurse into plain objects/arrays; a RegExp, Date, etc. is a leaf value that
|
|
38
|
-
// must pass through by reference (recursing would strip a regex to `{}`).
|
|
39
|
-
function isPlainObject(value) {
|
|
40
|
-
return (typeof value === 'object' &&
|
|
41
|
-
value !== null &&
|
|
42
|
-
!Array.isArray(value) &&
|
|
43
|
-
(Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null));
|
|
44
|
-
}
|
|
45
|
-
// A single-clause object whose one key targets the custom_fields relation.
|
|
46
|
-
function isCustomFieldClause(node) {
|
|
47
|
-
if (!isPlainObject(node)) {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
const keys = Object.keys(node);
|
|
51
|
-
return keys.length === 1 && keys[0].startsWith(PREFIX);
|
|
52
|
-
}
|
|
53
|
-
// A grouped compound: an $and whose clauses all target the relation and name exactly one
|
|
54
|
-
// `key`. Its clauses describe one leaf row.
|
|
55
|
-
//
|
|
56
|
-
// Exactly one, not at least one: two whole-field filters ANDed together arrive as a flat
|
|
57
|
-
// `key:'a'+key:'b'`, since a bare key clause needs no group of its own. That is two
|
|
58
|
-
// filters — a member with a value for both — not one leaf that is somehow both fields, so
|
|
59
|
-
// it has to fall through and be transformed a clause at a time.
|
|
60
|
-
function isCustomFieldCompound(clauses) {
|
|
61
|
-
if (!Array.isArray(clauses) || clauses.length < 2 || !clauses.every(isCustomFieldClause)) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
return clauses.filter((clause) => Object.keys(clause)[0] === KEY_ATTRIBUTE).length === 1;
|
|
65
|
-
}
|
|
66
|
-
// `custom_fields.value` addresses the scalar (root) leaf; `custom_fields.value.<part>`
|
|
67
|
-
// a composite's part. Returns the row `path` the attribute selects, or null if the
|
|
68
|
-
// attribute isn't a value clause.
|
|
69
|
-
function pathForValueAttribute(attribute) {
|
|
70
|
-
if (attribute === VALUE_ATTRIBUTE) {
|
|
71
|
-
return ROOT_PATH;
|
|
72
|
-
}
|
|
73
|
-
if (attribute.startsWith(`${VALUE_ATTRIBUTE}.`)) {
|
|
74
|
-
return attribute.slice(`${VALUE_ATTRIBUTE}.`.length);
|
|
75
|
-
}
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
// The single `{$ne}` shape all negations arrive as (is-not-set on a key or part).
|
|
79
|
-
function negatedString(value) {
|
|
80
|
-
return isPlainObject(value) && typeof value.$ne === 'string' ? value.$ne : null;
|
|
81
|
-
}
|
|
82
|
-
function createCustomFieldsFilterTransformer() {
|
|
83
|
-
// The grammar carries the field key in the clause value; take it as a string,
|
|
84
|
-
// defaulting to one no field can hold so a malformed clause matches nothing.
|
|
85
|
-
const keyOf = (value) => (typeof value === 'string' ? value : '');
|
|
86
|
-
// One (maybe-negated) $elemMatch over the leaf columns: positive is "a leaf pinned
|
|
87
|
-
// by these matches", `$not` is "no leaf does".
|
|
88
|
-
function buildElemMatch(fieldKey, conditions, negate) {
|
|
89
|
-
const match = { custom_field_key: fieldKey, ...conditions };
|
|
90
|
-
if (negate) {
|
|
91
|
-
return { [RELATION]: { $not: { $elemMatch: match } } };
|
|
92
|
-
}
|
|
93
|
-
return { [RELATION]: { $elemMatch: match } };
|
|
94
|
-
}
|
|
95
|
-
// A `(key + value[.part] | path)` compound. A `value` clause pins the part and its
|
|
96
|
-
// value; a `path` clause pins the part's presence (no value), and a negated path is
|
|
97
|
-
// is-not-set — no such leaf — which negates the whole match.
|
|
98
|
-
function toElemMatch(clauses) {
|
|
99
|
-
let fieldKey = '';
|
|
100
|
-
let hasKey = false;
|
|
101
|
-
let hasLeaf = false;
|
|
102
|
-
const conditions = {};
|
|
103
|
-
let negate = false;
|
|
104
|
-
const oneLeafOnly = () => {
|
|
105
|
-
if (hasLeaf) {
|
|
106
|
-
throw new errors_1.default.BadRequestError({
|
|
107
|
-
message: 'A custom field filter takes one value or path clause.',
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
hasLeaf = true;
|
|
111
|
-
};
|
|
112
|
-
for (const clause of clauses) {
|
|
113
|
-
const [attribute, value] = Object.entries(clause)[0];
|
|
114
|
-
if (attribute === KEY_ATTRIBUTE) {
|
|
115
|
-
if (hasKey) {
|
|
116
|
-
throw new errors_1.default.BadRequestError({
|
|
117
|
-
message: `A custom field filter takes one "${KEY_ATTRIBUTE}" clause.`,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
hasKey = true;
|
|
121
|
-
fieldKey = keyOf(value);
|
|
122
|
-
}
|
|
123
|
-
else if (attribute === PATH_ATTRIBUTE) {
|
|
124
|
-
oneLeafOnly();
|
|
125
|
-
const negatedPath = negatedString(value);
|
|
126
|
-
conditions.path = negatedPath ?? value;
|
|
127
|
-
negate = negatedPath !== null;
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
const path = pathForValueAttribute(attribute);
|
|
131
|
-
if (path === null) {
|
|
132
|
-
// Not the key, a value/value.<part>, or a path: it names no leaf
|
|
133
|
-
// column, so dropping it would silently widen the match to the key
|
|
134
|
-
// alone. Fail closed instead.
|
|
135
|
-
throw new errors_1.default.BadRequestError({
|
|
136
|
-
message: `Unsupported custom field filter clause "${attribute}".`,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
oneLeafOnly();
|
|
140
|
-
conditions.path = path;
|
|
141
|
-
conditions.value_text = value;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return buildElemMatch(fieldKey, conditions, negate);
|
|
145
|
-
}
|
|
146
|
-
// A standalone `key` clause is whole-field is-set / is-not-set: a leaf for this
|
|
147
|
-
// field exists (any part), or none does.
|
|
148
|
-
function fromKeyClause(value) {
|
|
149
|
-
const negatedKey = negatedString(value);
|
|
150
|
-
if (negatedKey !== null) {
|
|
151
|
-
return buildElemMatch(keyOf(negatedKey), {}, true);
|
|
152
|
-
}
|
|
153
|
-
return buildElemMatch(keyOf(value), {}, false);
|
|
154
|
-
}
|
|
155
|
-
function transform(node) {
|
|
156
|
-
if (Array.isArray(node)) {
|
|
157
|
-
return node.map(transform);
|
|
158
|
-
}
|
|
159
|
-
if (!isPlainObject(node)) {
|
|
160
|
-
return node;
|
|
161
|
-
}
|
|
162
|
-
if (isCustomFieldCompound(node.$and)) {
|
|
163
|
-
return toElemMatch(node.$and);
|
|
164
|
-
}
|
|
165
|
-
const out = {};
|
|
166
|
-
for (const [key, value] of Object.entries(node)) {
|
|
167
|
-
if (key === KEY_ATTRIBUTE) {
|
|
168
|
-
Object.assign(out, fromKeyClause(value));
|
|
169
|
-
}
|
|
170
|
-
else if (key.startsWith(PREFIX)) {
|
|
171
|
-
// A value or path clause only means something paired with its key in one
|
|
172
|
-
// leaf, which arrives as the compound handled above. A `custom_fields.*`
|
|
173
|
-
// clause reaching here is unpaired (or its pair was not grouped), so fail
|
|
174
|
-
// closed rather than pass it to mongo-knex as a column that does not exist.
|
|
175
|
-
throw new errors_1.default.BadRequestError({
|
|
176
|
-
message: `A "${key}" filter must be grouped with its "${KEY_ATTRIBUTE}" clause, for example (${KEY_ATTRIBUTE}:'a_field'+${VALUE_ATTRIBUTE}:'a value').`,
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
out[key] = transform(value);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return out;
|
|
184
|
-
}
|
|
185
|
-
return (query) => transform(query);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* The Member filter relation that exposes custom field values. A member has many leaf
|
|
189
|
-
* rows (one per field, or per part of a composite field), and a predicate asks whether
|
|
190
|
-
* one of them matches, so this joins the values table on member_id and mongo-knex emits
|
|
191
|
-
* it as a correlated `members.id IN (…)` subquery — composing with every other member
|
|
192
|
-
* filter. Registered only behind the `membersCustomFields` flag.
|
|
193
|
-
*/
|
|
194
|
-
exports.CUSTOM_FIELDS_RELATION = {
|
|
195
|
-
tableName: 'members_custom_field_values',
|
|
196
|
-
tableNameAs: RELATION,
|
|
197
|
-
type: 'oneToOne',
|
|
198
|
-
joinFrom: 'member_id',
|
|
199
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toCustomFieldsResponse = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const case_keys_1 = require("../../lib/case-keys");
|
|
6
|
-
const models_1 = require("./models");
|
|
7
|
-
// Response schema — the field-definition shape the admin endpoints emit. `id` is
|
|
8
|
-
// the DB primary key and deliberately never leaves the API; a field is addressed
|
|
9
|
-
// by its immutable `key`. The `.pipe` below strips id from the mapped output.
|
|
10
|
-
const CustomFieldResource = zod_1.z.object({
|
|
11
|
-
key: zod_1.z.string(),
|
|
12
|
-
name: zod_1.z.string(),
|
|
13
|
-
type: zod_1.z.string(),
|
|
14
|
-
status: zod_1.z.string(),
|
|
15
|
-
created_at: zod_1.z.date(),
|
|
16
|
-
updated_at: zod_1.z.date().nullable(),
|
|
17
|
-
});
|
|
18
|
-
const CustomFieldsResponse = zod_1.z.object({ members_custom_fields: zod_1.z.array(CustomFieldResource) });
|
|
19
|
-
exports.toCustomFieldsResponse = zod_1.z
|
|
20
|
-
.array(models_1.CustomField)
|
|
21
|
-
.transform((fields) => ({
|
|
22
|
-
members_custom_fields: fields.map((field) => (0, case_keys_1.snakeKeys)(field)),
|
|
23
|
-
}))
|
|
24
|
-
.pipe(CustomFieldsResponse);
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.STRIPE_ALLOWED_COUNTRIES = void 0;
|
|
4
|
-
exports.isStripeAllowedCountry = isStripeAllowedCountry;
|
|
5
|
-
/**
|
|
6
|
-
* The countries Stripe Checkout will accept in `shipping_address_collection`.
|
|
7
|
-
*
|
|
8
|
-
* Not a general list of countries. This is not a question about which places exist, it is
|
|
9
|
-
* a question about where this payment processor will ship, and only the processor's answer
|
|
10
|
-
* decides whether a session can be created at all. A general ISO list gets it wrong in both
|
|
11
|
-
* directions: it omits places Stripe accepts, and it includes the sanctioned countries
|
|
12
|
-
* Stripe refuses.
|
|
13
|
-
*
|
|
14
|
-
* Measured against the live API at the pinned version by `e2e/scripts/probe-stripe-constraints.ts`,
|
|
15
|
-
* not read from the SDK's `AllowedCountry` union, because that union is wrong: it omits
|
|
16
|
-
* `SD`, which the live API accepts. Every other code the union carries was confirmed
|
|
17
|
-
* accepted, so the union is a subset of this list rather than a different one — which is
|
|
18
|
-
* what the accompanying test holds it to, so a country Stripe adds cannot pass unnoticed.
|
|
19
|
-
*
|
|
20
|
-
* A code Stripe rejects fails the whole session create, which is a publisher who cannot
|
|
21
|
-
* sell. So this is checked when a publisher chooses a country rather than when a member
|
|
22
|
-
* tries to buy.
|
|
23
|
-
*/
|
|
24
|
-
exports.STRIPE_ALLOWED_COUNTRIES = [
|
|
25
|
-
'AC',
|
|
26
|
-
'AD',
|
|
27
|
-
'AE',
|
|
28
|
-
'AF',
|
|
29
|
-
'AG',
|
|
30
|
-
'AI',
|
|
31
|
-
'AL',
|
|
32
|
-
'AM',
|
|
33
|
-
'AO',
|
|
34
|
-
'AQ',
|
|
35
|
-
'AR',
|
|
36
|
-
'AT',
|
|
37
|
-
'AU',
|
|
38
|
-
'AW',
|
|
39
|
-
'AX',
|
|
40
|
-
'AZ',
|
|
41
|
-
'BA',
|
|
42
|
-
'BB',
|
|
43
|
-
'BD',
|
|
44
|
-
'BE',
|
|
45
|
-
'BF',
|
|
46
|
-
'BG',
|
|
47
|
-
'BH',
|
|
48
|
-
'BI',
|
|
49
|
-
'BJ',
|
|
50
|
-
'BL',
|
|
51
|
-
'BM',
|
|
52
|
-
'BN',
|
|
53
|
-
'BO',
|
|
54
|
-
'BQ',
|
|
55
|
-
'BR',
|
|
56
|
-
'BS',
|
|
57
|
-
'BT',
|
|
58
|
-
'BV',
|
|
59
|
-
'BW',
|
|
60
|
-
'BY',
|
|
61
|
-
'BZ',
|
|
62
|
-
'CA',
|
|
63
|
-
'CD',
|
|
64
|
-
'CF',
|
|
65
|
-
'CG',
|
|
66
|
-
'CH',
|
|
67
|
-
'CI',
|
|
68
|
-
'CK',
|
|
69
|
-
'CL',
|
|
70
|
-
'CM',
|
|
71
|
-
'CN',
|
|
72
|
-
'CO',
|
|
73
|
-
'CR',
|
|
74
|
-
'CV',
|
|
75
|
-
'CW',
|
|
76
|
-
'CY',
|
|
77
|
-
'CZ',
|
|
78
|
-
'DE',
|
|
79
|
-
'DJ',
|
|
80
|
-
'DK',
|
|
81
|
-
'DM',
|
|
82
|
-
'DO',
|
|
83
|
-
'DZ',
|
|
84
|
-
'EC',
|
|
85
|
-
'EE',
|
|
86
|
-
'EG',
|
|
87
|
-
'EH',
|
|
88
|
-
'ER',
|
|
89
|
-
'ES',
|
|
90
|
-
'ET',
|
|
91
|
-
'FI',
|
|
92
|
-
'FJ',
|
|
93
|
-
'FK',
|
|
94
|
-
'FO',
|
|
95
|
-
'FR',
|
|
96
|
-
'GA',
|
|
97
|
-
'GB',
|
|
98
|
-
'GD',
|
|
99
|
-
'GE',
|
|
100
|
-
'GF',
|
|
101
|
-
'GG',
|
|
102
|
-
'GH',
|
|
103
|
-
'GI',
|
|
104
|
-
'GL',
|
|
105
|
-
'GM',
|
|
106
|
-
'GN',
|
|
107
|
-
'GP',
|
|
108
|
-
'GQ',
|
|
109
|
-
'GR',
|
|
110
|
-
'GS',
|
|
111
|
-
'GT',
|
|
112
|
-
'GU',
|
|
113
|
-
'GW',
|
|
114
|
-
'GY',
|
|
115
|
-
'HK',
|
|
116
|
-
'HN',
|
|
117
|
-
'HR',
|
|
118
|
-
'HT',
|
|
119
|
-
'HU',
|
|
120
|
-
'ID',
|
|
121
|
-
'IE',
|
|
122
|
-
'IL',
|
|
123
|
-
'IM',
|
|
124
|
-
'IN',
|
|
125
|
-
'IO',
|
|
126
|
-
'IQ',
|
|
127
|
-
'IS',
|
|
128
|
-
'IT',
|
|
129
|
-
'JE',
|
|
130
|
-
'JM',
|
|
131
|
-
'JO',
|
|
132
|
-
'JP',
|
|
133
|
-
'KE',
|
|
134
|
-
'KG',
|
|
135
|
-
'KH',
|
|
136
|
-
'KI',
|
|
137
|
-
'KM',
|
|
138
|
-
'KN',
|
|
139
|
-
'KR',
|
|
140
|
-
'KW',
|
|
141
|
-
'KY',
|
|
142
|
-
'KZ',
|
|
143
|
-
'LA',
|
|
144
|
-
'LB',
|
|
145
|
-
'LC',
|
|
146
|
-
'LI',
|
|
147
|
-
'LK',
|
|
148
|
-
'LR',
|
|
149
|
-
'LS',
|
|
150
|
-
'LT',
|
|
151
|
-
'LU',
|
|
152
|
-
'LV',
|
|
153
|
-
'LY',
|
|
154
|
-
'MA',
|
|
155
|
-
'MC',
|
|
156
|
-
'MD',
|
|
157
|
-
'ME',
|
|
158
|
-
'MF',
|
|
159
|
-
'MG',
|
|
160
|
-
'MK',
|
|
161
|
-
'ML',
|
|
162
|
-
'MM',
|
|
163
|
-
'MN',
|
|
164
|
-
'MO',
|
|
165
|
-
'MQ',
|
|
166
|
-
'MR',
|
|
167
|
-
'MS',
|
|
168
|
-
'MT',
|
|
169
|
-
'MU',
|
|
170
|
-
'MV',
|
|
171
|
-
'MW',
|
|
172
|
-
'MX',
|
|
173
|
-
'MY',
|
|
174
|
-
'MZ',
|
|
175
|
-
'NA',
|
|
176
|
-
'NC',
|
|
177
|
-
'NE',
|
|
178
|
-
'NG',
|
|
179
|
-
'NI',
|
|
180
|
-
'NL',
|
|
181
|
-
'NO',
|
|
182
|
-
'NP',
|
|
183
|
-
'NR',
|
|
184
|
-
'NU',
|
|
185
|
-
'NZ',
|
|
186
|
-
'OM',
|
|
187
|
-
'PA',
|
|
188
|
-
'PE',
|
|
189
|
-
'PF',
|
|
190
|
-
'PG',
|
|
191
|
-
'PH',
|
|
192
|
-
'PK',
|
|
193
|
-
'PL',
|
|
194
|
-
'PM',
|
|
195
|
-
'PN',
|
|
196
|
-
'PR',
|
|
197
|
-
'PS',
|
|
198
|
-
'PT',
|
|
199
|
-
'PY',
|
|
200
|
-
'QA',
|
|
201
|
-
'RE',
|
|
202
|
-
'RO',
|
|
203
|
-
'RS',
|
|
204
|
-
'RU',
|
|
205
|
-
'RW',
|
|
206
|
-
'SA',
|
|
207
|
-
'SB',
|
|
208
|
-
'SC',
|
|
209
|
-
'SD',
|
|
210
|
-
'SE',
|
|
211
|
-
'SG',
|
|
212
|
-
'SH',
|
|
213
|
-
'SI',
|
|
214
|
-
'SJ',
|
|
215
|
-
'SK',
|
|
216
|
-
'SL',
|
|
217
|
-
'SM',
|
|
218
|
-
'SN',
|
|
219
|
-
'SO',
|
|
220
|
-
'SR',
|
|
221
|
-
'SS',
|
|
222
|
-
'ST',
|
|
223
|
-
'SV',
|
|
224
|
-
'SX',
|
|
225
|
-
'SZ',
|
|
226
|
-
'TA',
|
|
227
|
-
'TC',
|
|
228
|
-
'TD',
|
|
229
|
-
'TF',
|
|
230
|
-
'TG',
|
|
231
|
-
'TH',
|
|
232
|
-
'TJ',
|
|
233
|
-
'TK',
|
|
234
|
-
'TL',
|
|
235
|
-
'TM',
|
|
236
|
-
'TN',
|
|
237
|
-
'TO',
|
|
238
|
-
'TR',
|
|
239
|
-
'TT',
|
|
240
|
-
'TV',
|
|
241
|
-
'TW',
|
|
242
|
-
'TZ',
|
|
243
|
-
'UA',
|
|
244
|
-
'UG',
|
|
245
|
-
'US',
|
|
246
|
-
'UY',
|
|
247
|
-
'UZ',
|
|
248
|
-
'VA',
|
|
249
|
-
'VC',
|
|
250
|
-
'VE',
|
|
251
|
-
'VG',
|
|
252
|
-
'VN',
|
|
253
|
-
'VU',
|
|
254
|
-
'WF',
|
|
255
|
-
'WS',
|
|
256
|
-
'XK',
|
|
257
|
-
'YE',
|
|
258
|
-
'YT',
|
|
259
|
-
'ZA',
|
|
260
|
-
'ZM',
|
|
261
|
-
'ZW',
|
|
262
|
-
'ZZ',
|
|
263
|
-
];
|
|
264
|
-
const ALLOWED = new Set(exports.STRIPE_ALLOWED_COUNTRIES);
|
|
265
|
-
function isStripeAllowedCountry(code) {
|
|
266
|
-
return ALLOWED.has(code);
|
|
267
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* What Stripe Checkout will render, measured against the live API at Ghost's pinned
|
|
4
|
-
* version rather than read from the reference — which disagreed with the API in three of
|
|
5
|
-
* five probes, missing the field cap and the key format entirely. A wrong bound here fails
|
|
6
|
-
* the session create, which fails the checkout.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.CHECKOUT_ELIGIBLE_FIELD_TYPES = exports.MAX_CHECKOUT_LABEL_LENGTH = exports.MAX_CHECKOUT_CUSTOM_FIELDS = exports.STRIPE_PORT = exports.STRIPE_PORTS = void 0;
|
|
10
|
-
exports.isStripePort = isStripePort;
|
|
11
|
-
exports.isCheckoutEligible = isCheckoutEligible;
|
|
12
|
-
/** The names Stripe returns values under, and the only ports a binding for it may use. */
|
|
13
|
-
exports.STRIPE_PORTS = ['shipping_name', 'shipping_address', 'phone'];
|
|
14
|
-
function isStripePort(key) {
|
|
15
|
-
return exports.STRIPE_PORTS.includes(key);
|
|
16
|
-
}
|
|
17
|
-
exports.STRIPE_PORT = {
|
|
18
|
-
shippingName: 'shipping_name',
|
|
19
|
-
shippingAddress: 'shipping_address',
|
|
20
|
-
phone: 'phone',
|
|
21
|
-
};
|
|
22
|
-
/** Stripe rejects a fourth. */
|
|
23
|
-
exports.MAX_CHECKOUT_CUSTOM_FIELDS = 3;
|
|
24
|
-
/** Stripe caps a custom label at 50, where a field name may be 191 — hence a question label. */
|
|
25
|
-
exports.MAX_CHECKOUT_LABEL_LENGTH = 50;
|
|
26
|
-
/**
|
|
27
|
-
* What Stripe Checkout can ask for. No `long_text`: its text input caps shorter than that
|
|
28
|
-
* type allows. No `address`: Stripe has no custom-field equivalent, so an address is
|
|
29
|
-
* collected through its own parameter instead.
|
|
30
|
-
*/
|
|
31
|
-
exports.CHECKOUT_ELIGIBLE_FIELD_TYPES = ['short_text'];
|
|
32
|
-
function isCheckoutEligible(type) {
|
|
33
|
-
return exports.CHECKOUT_ELIGIBLE_FIELD_TYPES.includes(type);
|
|
34
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PORT_FIELD = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* What a port supplies, and what to call a field made to hold it. The type is a rule about
|
|
6
|
-
* any destination: a port that returns an address can only be collected into a field that
|
|
7
|
-
* keeps one. The name is used only when the request names a key the site does not keep
|
|
8
|
-
* yet, which is the one moment a publisher has not chosen a label themselves.
|
|
9
|
-
*
|
|
10
|
-
* A key is not a port. `phone` is what Stripe calls what it returns; where it lands is
|
|
11
|
-
* whatever the request said, and `Shipping Phone` is only how that field is listed.
|
|
12
|
-
*/
|
|
13
|
-
exports.PORT_FIELD = {
|
|
14
|
-
shipping_name: { name: 'Shipping Name', type: 'short_text' },
|
|
15
|
-
shipping_address: { name: 'Shipping Address', type: 'address' },
|
|
16
|
-
phone: { name: 'Shipping Phone', type: 'short_text' },
|
|
17
|
-
};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
const { parentPort, workerData } = require('worker_threads');
|
|
2
|
-
|
|
3
|
-
const postParentPortMessage = (message) => {
|
|
4
|
-
if (parentPort) {
|
|
5
|
-
parentPort.postMessage(message);
|
|
6
|
-
}
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
// Exit early when cancelled to prevent stalling shutdown. No cleanup needed when cancelling as everything is idempotent and will pick up
|
|
10
|
-
// where it left off on next run
|
|
11
|
-
function cancel() {
|
|
12
|
-
postParentPortMessage('cancelled before completion');
|
|
13
|
-
|
|
14
|
-
if (parentPort) {
|
|
15
|
-
postParentPortMessage('cancelled');
|
|
16
|
-
} else {
|
|
17
|
-
setTimeout(() => {
|
|
18
|
-
process.exit(0);
|
|
19
|
-
}, 1000);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (parentPort) {
|
|
24
|
-
parentPort.once('message', (message) => {
|
|
25
|
-
if (message === 'cancel') {
|
|
26
|
-
return cancel();
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
(async () => {
|
|
32
|
-
const startedAt = Date.now();
|
|
33
|
-
postParentPortMessage('execution started');
|
|
34
|
-
const updateCheck = require('./');
|
|
35
|
-
|
|
36
|
-
// INIT required services
|
|
37
|
-
const permissions = require('../permissions');
|
|
38
|
-
await permissions.init();
|
|
39
|
-
|
|
40
|
-
const settings = require('../settings/settings-service');
|
|
41
|
-
await settings.init();
|
|
42
|
-
|
|
43
|
-
const emailAddress = require('../email-address');
|
|
44
|
-
emailAddress.init();
|
|
45
|
-
// Finished INIT
|
|
46
|
-
|
|
47
|
-
await updateCheck({
|
|
48
|
-
rethrowErrors: true,
|
|
49
|
-
forceUpdate: workerData.forceUpdate,
|
|
50
|
-
updateCheckUrl: workerData.updateCheckUrl,
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
postParentPortMessage(`completed in ${Date.now() - startedAt}ms`);
|
|
54
|
-
|
|
55
|
-
if (parentPort) {
|
|
56
|
-
postParentPortMessage('done');
|
|
57
|
-
} else {
|
|
58
|
-
// give the logging pipes time finish writing before exit
|
|
59
|
-
setTimeout(() => {
|
|
60
|
-
process.exit(0);
|
|
61
|
-
}, 1000);
|
|
62
|
-
}
|
|
63
|
-
})();
|
|
File without changes
|
|
File without changes
|