@sonordev/site-kit 4.3.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-manifest.json +1 -1
- package/dist/AnalyticsProvider-KCLRFOX6.mjs +10 -0
- package/dist/{AnalyticsProvider-VWYCBDBH.mjs.map → AnalyticsProvider-KCLRFOX6.mjs.map} +1 -1
- package/dist/AnalyticsProvider-TXM3DRLI.js +31 -0
- package/dist/{AnalyticsProvider-7AR6JHXJ.js.map → AnalyticsProvider-TXM3DRLI.js.map} +1 -1
- package/dist/BlogViewTracker-J6LRGUHU.js +51 -0
- package/dist/BlogViewTracker-J6LRGUHU.js.map +1 -0
- package/dist/BlogViewTracker-PZWAWB3O.mjs +48 -0
- package/dist/BlogViewTracker-PZWAWB3O.mjs.map +1 -0
- package/dist/ChatWidget-LD54Z2PQ.js +20 -0
- package/dist/{ChatWidget-CIDC64OF.js.map → ChatWidget-LD54Z2PQ.js.map} +1 -1
- package/dist/ChatWidget-PMDPSZXG.mjs +11 -0
- package/dist/{ChatWidget-XZQXPCLI.mjs.map → ChatWidget-PMDPSZXG.mjs.map} +1 -1
- package/dist/EngageWidget-4CBFRN4Y.mjs +9 -0
- package/dist/{EngageWidget-RDX5XJ3V.mjs.map → EngageWidget-4CBFRN4Y.mjs.map} +1 -1
- package/dist/EngageWidget-BF5NMQ5A.js +18 -0
- package/dist/{EngageWidget-27RJHFFZ.js.map → EngageWidget-BF5NMQ5A.js.map} +1 -1
- package/dist/{FileField-HSPQLACF.mjs → FileField-FFRHS3XP.mjs} +5 -5
- package/dist/{FileField-HSPQLACF.mjs.map → FileField-FFRHS3XP.mjs.map} +1 -1
- package/dist/{FileField-ASOR3XG5.js → FileField-VXADIOMN.js} +6 -6
- package/dist/{FileField-ASOR3XG5.js.map → FileField-VXADIOMN.js.map} +1 -1
- package/dist/{FormSpotlight-VTWP4X6H.js → FormSpotlight-JG4ZHS56.js} +15 -15
- package/dist/{FormSpotlight-VTWP4X6H.js.map → FormSpotlight-JG4ZHS56.js.map} +1 -1
- package/dist/{FormSpotlight-VZPPMBJU.mjs → FormSpotlight-KE46EDP5.mjs} +3 -3
- package/dist/{FormSpotlight-VZPPMBJU.mjs.map → FormSpotlight-KE46EDP5.mjs.map} +1 -1
- package/dist/{FormStage-DUCY4VGI.js → FormStage-5Z53Z2WY.js} +13 -13
- package/dist/{FormStage-DUCY4VGI.js.map → FormStage-5Z53Z2WY.js.map} +1 -1
- package/dist/{FormStage-MTUODSRC.mjs → FormStage-PZKWEXZE.mjs} +3 -3
- package/dist/{FormStage-MTUODSRC.mjs.map → FormStage-PZKWEXZE.mjs.map} +1 -1
- package/dist/ManagedForm-E4WHMARH.js +23 -0
- package/dist/{ManagedForm-6MTTWEER.js.map → ManagedForm-E4WHMARH.js.map} +1 -1
- package/dist/ManagedForm-VU2TKV6J.mjs +14 -0
- package/dist/{ManagedForm-GKCCHPIX.mjs.map → ManagedForm-VU2TKV6J.mjs.map} +1 -1
- package/dist/ManagedNewsletterForm-6DET3VGZ.mjs +62 -0
- package/dist/ManagedNewsletterForm-6DET3VGZ.mjs.map +1 -0
- package/dist/ManagedNewsletterForm-PG4EX3W6.js +64 -0
- package/dist/ManagedNewsletterForm-PG4EX3W6.js.map +1 -0
- package/dist/{SignalCore-TG3G3VYI.mjs → SignalCore-RZVTLUC2.mjs} +5 -5
- package/dist/{SignalCore-TG3G3VYI.mjs.map → SignalCore-RZVTLUC2.mjs.map} +1 -1
- package/dist/{SignalCore-HWTGSUMC.js → SignalCore-TCUVXVMN.js} +11 -11
- package/dist/{SignalCore-HWTGSUMC.js.map → SignalCore-TCUVXVMN.js.map} +1 -1
- package/dist/SitemapSync-AJU4DM3G.js +17 -0
- package/dist/{SitemapSync-PQMQAZMH.js.map → SitemapSync-AJU4DM3G.js.map} +1 -1
- package/dist/SitemapSync-T75NAFB3.mjs +8 -0
- package/dist/{SitemapSync-62VTFZDI.mjs.map → SitemapSync-T75NAFB3.mjs.map} +1 -1
- package/dist/analytics/index.js +9 -9
- package/dist/analytics/index.mjs +4 -4
- package/dist/blog/AuthorCard.d.ts.map +1 -1
- package/dist/blog/AuthorPage.d.ts.map +1 -1
- package/dist/blog/BlogList.d.ts +7 -1
- package/dist/blog/BlogList.d.ts.map +1 -1
- package/dist/blog/BlogPost.d.ts +1 -1
- package/dist/blog/BlogPost.d.ts.map +1 -1
- package/dist/blog/BlogSidebar.d.ts +0 -7
- package/dist/blog/BlogSidebar.d.ts.map +1 -1
- package/dist/blog/BlogViewTracker.d.ts +10 -0
- package/dist/blog/BlogViewTracker.d.ts.map +1 -0
- package/dist/blog/ClusterLandingPage.d.ts.map +1 -1
- package/dist/blog/ManagedNewsletterForm.d.ts +13 -0
- package/dist/blog/ManagedNewsletterForm.d.ts.map +1 -0
- package/dist/blog/NewsletterShell.d.ts +18 -0
- package/dist/blog/NewsletterShell.d.ts.map +1 -0
- package/dist/blog/NewsletterWidget.d.ts +31 -0
- package/dist/blog/NewsletterWidget.d.ts.map +1 -0
- package/dist/blog/RelatedPosts.d.ts.map +1 -1
- package/dist/blog/author-social.d.ts +15 -0
- package/dist/blog/author-social.d.ts.map +1 -0
- package/dist/blog/author-social.test.d.ts +2 -0
- package/dist/blog/author-social.test.d.ts.map +1 -0
- package/dist/blog/blog-view-tracker.test.d.ts +2 -0
- package/dist/blog/blog-view-tracker.test.d.ts.map +1 -0
- package/dist/blog/category-metadata.test.d.ts +2 -0
- package/dist/blog/category-metadata.test.d.ts.map +1 -0
- package/dist/blog/index.d.ts +4 -2
- package/dist/blog/index.d.ts.map +1 -1
- package/dist/blog/index.js +94 -505
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +59 -491
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/newsletter-widget.test.d.ts +2 -0
- package/dist/blog/newsletter-widget.test.d.ts.map +1 -0
- package/dist/blog/reading-time.d.ts +10 -0
- package/dist/blog/reading-time.d.ts.map +1 -0
- package/dist/blog/reading-time.test.d.ts +2 -0
- package/dist/blog/reading-time.test.d.ts.map +1 -0
- package/dist/blog/server-core-contract.test.d.ts +2 -0
- package/dist/blog/server-core-contract.test.d.ts.map +1 -0
- package/dist/blog/server-core.d.ts +16 -4
- package/dist/blog/server-core.d.ts.map +1 -1
- package/dist/blog/server-ui.d.ts +5 -0
- package/dist/blog/server-ui.d.ts.map +1 -1
- package/dist/blog/server-ui.js +35 -10
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +8 -6
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.ts +16 -4
- package/dist/blog/server.d.ts.map +1 -1
- package/dist/blog/server.js +40 -40
- package/dist/blog/server.mjs +1 -1
- package/dist/blog/tag-links.test.d.ts +2 -0
- package/dist/blog/tag-links.test.d.ts.map +1 -0
- package/dist/blog/types-wire-shape.test.d.ts +2 -0
- package/dist/blog/types-wire-shape.test.d.ts.map +1 -0
- package/dist/blog/types.d.ts +25 -19
- package/dist/blog/types.d.ts.map +1 -1
- package/dist/blog/widget-styles.d.ts +9 -0
- package/dist/blog/widget-styles.d.ts.map +1 -0
- package/dist/{chunk-IM4OVQ4O.js → chunk-3FZ76VI5.js} +14 -14
- package/dist/{chunk-IM4OVQ4O.js.map → chunk-3FZ76VI5.js.map} +1 -1
- package/dist/{chunk-YXZTCBS7.mjs → chunk-3SMG4EXR.mjs} +3 -3
- package/dist/{chunk-YXZTCBS7.mjs.map → chunk-3SMG4EXR.mjs.map} +1 -1
- package/dist/{chunk-3ZWY6S4V.js → chunk-4D2G5ZNP.js} +15 -15
- package/dist/{chunk-3ZWY6S4V.js.map → chunk-4D2G5ZNP.js.map} +1 -1
- package/dist/{chunk-AVFXLKIP.mjs → chunk-4UHO6DPJ.mjs} +4 -4
- package/dist/{chunk-AVFXLKIP.mjs.map → chunk-4UHO6DPJ.mjs.map} +1 -1
- package/dist/{chunk-E637QPCS.mjs → chunk-5JNLZRLX.mjs} +3 -3
- package/dist/{chunk-E637QPCS.mjs.map → chunk-5JNLZRLX.mjs.map} +1 -1
- package/dist/{chunk-MPL42FJL.js → chunk-5JQLLF2T.js} +12 -12
- package/dist/{chunk-MPL42FJL.js.map → chunk-5JQLLF2T.js.map} +1 -1
- package/dist/{chunk-2MAYXWJI.js → chunk-5OHHYGD6.js} +15 -15
- package/dist/{chunk-2MAYXWJI.js.map → chunk-5OHHYGD6.js.map} +1 -1
- package/dist/{chunk-QIJIOKNT.js → chunk-62ODUWUX.js} +4 -4
- package/dist/{chunk-QIJIOKNT.js.map → chunk-62ODUWUX.js.map} +1 -1
- package/dist/{chunk-BL26HJKE.js → chunk-6QQFEJIP.js} +8 -8
- package/dist/{chunk-BL26HJKE.js.map → chunk-6QQFEJIP.js.map} +1 -1
- package/dist/{chunk-3FYSBRMT.js → chunk-7T4VMXKD.js} +3 -3
- package/dist/{chunk-3FYSBRMT.js.map → chunk-7T4VMXKD.js.map} +1 -1
- package/dist/chunk-AK6JZ3OE.mjs +65 -0
- package/dist/chunk-AK6JZ3OE.mjs.map +1 -0
- package/dist/{chunk-OAOT72JI.mjs → chunk-AXYKBQVI.mjs} +9 -8
- package/dist/chunk-AXYKBQVI.mjs.map +1 -0
- package/dist/{chunk-QC6EOISZ.js → chunk-BQY3FJ3R.js} +8 -8
- package/dist/{chunk-QC6EOISZ.js.map → chunk-BQY3FJ3R.js.map} +1 -1
- package/dist/{chunk-6VHVIBLQ.mjs → chunk-DHXQBTXE.mjs} +62 -41
- package/dist/chunk-DHXQBTXE.mjs.map +1 -0
- package/dist/chunk-DO6ATNLN.js +67 -0
- package/dist/chunk-DO6ATNLN.js.map +1 -0
- package/dist/{chunk-UE537WQU.js → chunk-DX6D7HDI.js} +4 -4
- package/dist/{chunk-UE537WQU.js.map → chunk-DX6D7HDI.js.map} +1 -1
- package/dist/chunk-EISVUD75.mjs +23 -0
- package/dist/chunk-EISVUD75.mjs.map +1 -0
- package/dist/{chunk-JPHPRD4Z.mjs → chunk-FCKL5CF3.mjs} +3 -3
- package/dist/{chunk-JPHPRD4Z.mjs.map → chunk-FCKL5CF3.mjs.map} +1 -1
- package/dist/{chunk-RPLZIPTB.mjs → chunk-FDWDXMJL.mjs} +3 -3
- package/dist/{chunk-RPLZIPTB.mjs.map → chunk-FDWDXMJL.mjs.map} +1 -1
- package/dist/{chunk-ST7YQMYN.js → chunk-FQ3JQV3M.js} +4 -4
- package/dist/{chunk-ST7YQMYN.js.map → chunk-FQ3JQV3M.js.map} +1 -1
- package/dist/{chunk-PK43IK7S.mjs → chunk-FTBABL3T.mjs} +3 -3
- package/dist/{chunk-PK43IK7S.mjs.map → chunk-FTBABL3T.mjs.map} +1 -1
- package/dist/{chunk-5EFSD7VM.js → chunk-GCZMDY2T.js} +490 -20
- package/dist/chunk-GCZMDY2T.js.map +1 -0
- package/dist/chunk-GZJE23Y5.mjs +21 -0
- package/dist/chunk-GZJE23Y5.mjs.map +1 -0
- package/dist/{chunk-22UZYZKI.js → chunk-HCN2US4M.js} +18 -18
- package/dist/{chunk-22UZYZKI.js.map → chunk-HCN2US4M.js.map} +1 -1
- package/dist/{chunk-ACAMCJJQ.mjs → chunk-HEUCDF3O.mjs} +3 -3
- package/dist/{chunk-ACAMCJJQ.mjs.map → chunk-HEUCDF3O.mjs.map} +1 -1
- package/dist/chunk-HX6ZG3PP.js +19 -0
- package/dist/chunk-HX6ZG3PP.js.map +1 -0
- package/dist/{chunk-HSPDHVSJ.js → chunk-IX5RAZWX.js} +6 -6
- package/dist/{chunk-HSPDHVSJ.js.map → chunk-IX5RAZWX.js.map} +1 -1
- package/dist/{chunk-RJBW2JFO.mjs → chunk-J4JXAFSW.mjs} +3 -3
- package/dist/{chunk-RJBW2JFO.mjs.map → chunk-J4JXAFSW.mjs.map} +1 -1
- package/dist/{chunk-FBI6LYTM.js → chunk-JBGRXICL.js} +62 -41
- package/dist/chunk-JBGRXICL.js.map +1 -0
- package/dist/{chunk-Y5SN5HTO.js → chunk-JIUVBSQZ.js} +3 -3
- package/dist/{chunk-Y5SN5HTO.js.map → chunk-JIUVBSQZ.js.map} +1 -1
- package/dist/chunk-JPTJGLKS.mjs +6 -0
- package/dist/{chunk-Q3VBSR4M.mjs.map → chunk-JPTJGLKS.mjs.map} +1 -1
- package/dist/{chunk-DDP6XUF5.js → chunk-JY3KZDEM.js} +3 -3
- package/dist/{chunk-DDP6XUF5.js.map → chunk-JY3KZDEM.js.map} +1 -1
- package/dist/{chunk-U7WGZOJY.js → chunk-KWH6RAVY.js} +13 -12
- package/dist/chunk-KWH6RAVY.js.map +1 -0
- package/dist/{chunk-U2V6WHKY.js → chunk-LLKXPJSE.js} +7 -7
- package/dist/{chunk-U2V6WHKY.js.map → chunk-LLKXPJSE.js.map} +1 -1
- package/dist/{chunk-MIYP7WFZ.js → chunk-LZY374FB.js} +4 -4
- package/dist/{chunk-MIYP7WFZ.js.map → chunk-LZY374FB.js.map} +1 -1
- package/dist/{chunk-3YW4TAK2.js → chunk-MGPHBVOK.js} +9 -9
- package/dist/{chunk-3YW4TAK2.js.map → chunk-MGPHBVOK.js.map} +1 -1
- package/dist/{chunk-KI6LGZYL.js → chunk-MPO6TRLS.js} +14 -14
- package/dist/{chunk-KI6LGZYL.js.map → chunk-MPO6TRLS.js.map} +1 -1
- package/dist/{chunk-RRAUM373.mjs → chunk-MVJQ4ZA2.mjs} +4 -4
- package/dist/{chunk-RRAUM373.mjs.map → chunk-MVJQ4ZA2.mjs.map} +1 -1
- package/dist/{chunk-ISILFNCI.mjs → chunk-MWXBRCM2.mjs} +3 -3
- package/dist/{chunk-ISILFNCI.mjs.map → chunk-MWXBRCM2.mjs.map} +1 -1
- package/dist/chunk-N3RWPAR5.js +25 -0
- package/dist/chunk-N3RWPAR5.js.map +1 -0
- package/dist/{chunk-ZZV4EWMF.js → chunk-OGPS3DKE.js} +5 -5
- package/dist/{chunk-ZZV4EWMF.js.map → chunk-OGPS3DKE.js.map} +1 -1
- package/dist/chunk-OZ3FU4BT.js +23 -0
- package/dist/chunk-OZ3FU4BT.js.map +1 -0
- package/dist/{chunk-SS74PQTF.mjs → chunk-PPCTL4B5.mjs} +21 -10
- package/dist/chunk-PPCTL4B5.mjs.map +1 -0
- package/dist/{chunk-LHQ5IEFS.mjs → chunk-PZE5L2FK.mjs} +4 -4
- package/dist/{chunk-LHQ5IEFS.mjs.map → chunk-PZE5L2FK.mjs.map} +1 -1
- package/dist/{chunk-YLZNSSNI.mjs → chunk-QH3WVTEK.mjs} +4 -4
- package/dist/{chunk-YLZNSSNI.mjs.map → chunk-QH3WVTEK.mjs.map} +1 -1
- package/dist/{chunk-5Z44EOL6.mjs → chunk-QI2H5KK6.mjs} +4 -4
- package/dist/{chunk-5Z44EOL6.mjs.map → chunk-QI2H5KK6.mjs.map} +1 -1
- package/dist/chunk-S65JSRWW.js +8 -0
- package/dist/{chunk-GFMUUALQ.js.map → chunk-S65JSRWW.js.map} +1 -1
- package/dist/{chunk-MTKE7ASR.mjs → chunk-SW6KWUNI.mjs} +3 -3
- package/dist/{chunk-MTKE7ASR.mjs.map → chunk-SW6KWUNI.mjs.map} +1 -1
- package/dist/{chunk-BW6DSJEJ.mjs → chunk-SXPINIJG.mjs} +4 -4
- package/dist/{chunk-BW6DSJEJ.mjs.map → chunk-SXPINIJG.mjs.map} +1 -1
- package/dist/{chunk-WMKE5XNV.js → chunk-UABMMR7U.js} +21 -10
- package/dist/chunk-UABMMR7U.js.map +1 -0
- package/dist/{chunk-JEEWKAAY.mjs → chunk-UFURXSAI.mjs} +3 -3
- package/dist/{chunk-JEEWKAAY.mjs.map → chunk-UFURXSAI.mjs.map} +1 -1
- package/dist/{chunk-JJS63TDR.mjs → chunk-UV6KQUSL.mjs} +483 -21
- package/dist/chunk-UV6KQUSL.mjs.map +1 -0
- package/dist/{chunk-M5ZCJ34F.js → chunk-VACFVPNF.js} +14 -14
- package/dist/{chunk-M5ZCJ34F.js.map → chunk-VACFVPNF.js.map} +1 -1
- package/dist/{chunk-LYOM356F.mjs → chunk-XPAHKYX7.mjs} +3 -3
- package/dist/{chunk-LYOM356F.mjs.map → chunk-XPAHKYX7.mjs.map} +1 -1
- package/dist/chunk-YFX3Q56O.mjs +16 -0
- package/dist/chunk-YFX3Q56O.mjs.map +1 -0
- package/dist/{chunk-SMCNQWEU.mjs → chunk-YGRHEEPX.mjs} +7 -7
- package/dist/{chunk-SMCNQWEU.mjs.map → chunk-YGRHEEPX.mjs.map} +1 -1
- package/dist/{chunk-CCGFWAPD.mjs → chunk-YSZB2DRX.mjs} +3 -3
- package/dist/{chunk-CCGFWAPD.mjs.map → chunk-YSZB2DRX.mjs.map} +1 -1
- package/dist/{chunk-6726TSBB.mjs → chunk-YVE65W47.mjs} +4 -4
- package/dist/{chunk-6726TSBB.mjs.map → chunk-YVE65W47.mjs.map} +1 -1
- package/dist/cli/index.js +7 -27
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +5 -25
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/index.js +5 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +4 -3
- package/dist/client/index.mjs.map +1 -1
- package/dist/commerce/index.js +56 -56
- package/dist/commerce/index.mjs +5 -5
- package/dist/engage/index.js +10 -10
- package/dist/engage/index.mjs +7 -7
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/index.js +16 -16
- package/dist/forms/index.mjs +9 -9
- package/dist/forms/server.js +10 -10
- package/dist/forms/server.mjs +8 -8
- package/dist/forms/static.js +7 -7
- package/dist/forms/static.mjs +6 -6
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +63 -63
- package/dist/index.mjs +9 -9
- package/dist/layout/client.js +9 -8
- package/dist/layout/client.mjs +8 -7
- package/dist/layout/index.js +11 -10
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +9 -8
- package/dist/layout/index.mjs.map +1 -1
- package/dist/llms/api.d.ts +13 -3
- package/dist/llms/api.d.ts.map +1 -1
- package/dist/llms/generateLLMsTxt.d.ts.map +1 -1
- package/dist/llms/index.js +14 -12
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +4 -2
- package/dist/llms/index.mjs.map +1 -1
- package/dist/llms/types.d.ts +8 -0
- package/dist/llms/types.d.ts.map +1 -1
- package/dist/llms/writeLLMsTxt.d.ts +9 -0
- package/dist/llms/writeLLMsTxt.d.ts.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/client.js +5 -5
- package/dist/seo/client.mjs +4 -4
- package/dist/seo/index.js +5 -5
- package/dist/seo/index.mjs +4 -4
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/shared/publishCredential.d.ts +25 -9
- package/dist/shared/publishCredential.d.ts.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sitemap/index.d.ts +22 -0
- package/dist/sitemap/index.d.ts.map +1 -1
- package/dist/sitemap/index.js +9 -2
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +8 -1
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/sitemap/site-scope.test.d.ts +2 -0
- package/dist/sitemap/site-scope.test.d.ts.map +1 -0
- package/dist/sites/resolve.d.ts +7 -0
- package/dist/sites/resolve.d.ts.map +1 -0
- package/dist/sync/index.js +16 -16
- package/dist/sync/index.mjs +4 -4
- package/package.json +2 -2
- package/dist/AnalyticsProvider-7AR6JHXJ.js +0 -31
- package/dist/AnalyticsProvider-VWYCBDBH.mjs +0 -10
- package/dist/ChatWidget-CIDC64OF.js +0 -20
- package/dist/ChatWidget-XZQXPCLI.mjs +0 -11
- package/dist/EngageWidget-27RJHFFZ.js +0 -18
- package/dist/EngageWidget-RDX5XJ3V.mjs +0 -9
- package/dist/ManagedForm-6MTTWEER.js +0 -23
- package/dist/ManagedForm-GKCCHPIX.mjs +0 -14
- package/dist/SitemapSync-62VTFZDI.mjs +0 -8
- package/dist/SitemapSync-PQMQAZMH.js +0 -17
- package/dist/chunk-5EFSD7VM.js.map +0 -1
- package/dist/chunk-6VHVIBLQ.mjs.map +0 -1
- package/dist/chunk-7M7LNHVD.js +0 -40
- package/dist/chunk-7M7LNHVD.js.map +0 -1
- package/dist/chunk-CJTU5EUQ.mjs +0 -37
- package/dist/chunk-CJTU5EUQ.mjs.map +0 -1
- package/dist/chunk-FBI6LYTM.js.map +0 -1
- package/dist/chunk-GFMUUALQ.js +0 -8
- package/dist/chunk-JJS63TDR.mjs.map +0 -1
- package/dist/chunk-OAOT72JI.mjs.map +0 -1
- package/dist/chunk-Q3VBSR4M.mjs +0 -6
- package/dist/chunk-SS74PQTF.mjs.map +0 -1
- package/dist/chunk-U7WGZOJY.js.map +0 -1
- package/dist/chunk-WMKE5XNV.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fleet/heartbeat.ts","../src/fleet/FleetHeartbeat.tsx"],"names":["sanitizeFleetVersion","buildFleetHeartbeatPayload","SITE_KIT_VERSION","sonorFetch","useDeferredActivation","useRef","useEffect"],"mappings":"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","file":"chunk-U2V6WHKY.js","sourcesContent":["/**\n * @sonordev/site-kit/fleet — heartbeat sender (single source of truth for the POST)\n *\n * One place that turns fleet inputs into a validated payload and ships it to\n * `/api/public/fleet/heartbeat`. Used by BOTH the client component\n * (FleetHeartbeat) and any build-time caller, so the send path never forks.\n *\n * It routes through the canonical `sonorFetch` transport, which already stamps\n * the x-sitekit-version header, attaches x-api-key, and honors the auth\n * circuit breaker — a site on a stale/canceled key will not spam the API.\n */\n\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { SITE_KIT_VERSION } from '../shared/version'\nimport {\n buildFleetHeartbeatPayload,\n sanitizeFleetVersion,\n type FleetHeartbeatPayload,\n type FleetHeartbeatSource,\n type FleetModule,\n} from './contract'\n\n/** Canonical ingest path — resolved against the site's Sonor API origin. */\nexport const FLEET_HEARTBEAT_PATH = '/api/public/fleet/heartbeat'\n\nexport interface SendFleetHeartbeatOptions {\n /** Sonor API origin (e.g. https://api.sonor.io). Trailing slash tolerated. */\n apiUrl: string\n /** Project API key — scopes the request; the project is resolved server-side. */\n apiKey: string\n /** Client-observable active modules (validated/deduped by the contract). */\n modules?: FleetModule[] | string[]\n /** Normalized host for the multi-site sub-dimension (server re-normalizes). */\n site?: string | null\n /** Installed Next.js version, if the caller can resolve it. */\n nextVersion?: string | null\n /** 'client' (runtime boot) or 'build' (CI). Default 'client'. */\n source?: FleetHeartbeatSource\n /** Override the reported kit version. Defaults to the runtime SITE_KIT_VERSION. */\n kitVersion?: string\n /** Log one info line with the result. Never logs at error level. */\n debug?: boolean\n}\n\n/**\n * Best-effort runtime detection of the host Next.js version. Unreliable by\n * design — Next does not expose its version consistently across app/pages\n * router — so it returns null unless a site injects `__SITE_KIT_NEXT_VERSION__`\n * or `window.next.version` is present. Build-time callers should pass\n * `nextVersion` explicitly (resolvable from `next/package.json`).\n */\nexport function detectNextVersion(): string | null {\n if (typeof window === 'undefined') return null\n const w = window as unknown as {\n __SITE_KIT_NEXT_VERSION__?: string\n next?: { version?: string }\n }\n return sanitizeFleetVersion(w.__SITE_KIT_NEXT_VERSION__ ?? w.next?.version ?? null)\n}\n\n/**\n * Fire one heartbeat. Fire-and-forget by contract: it never throws — a\n * telemetry POST must never break a visitor's page or a site's build. Returns\n * true only when the POST was accepted (2xx).\n */\nexport async function sendFleetHeartbeat(opts: SendFleetHeartbeatOptions): Promise<boolean> {\n const { apiUrl, apiKey } = opts\n if (!apiUrl || !apiKey) return false\n\n const payload: FleetHeartbeatPayload = buildFleetHeartbeatPayload({\n kitVersion: opts.kitVersion || SITE_KIT_VERSION,\n nextVersion: opts.nextVersion,\n modules: opts.modules,\n site: opts.site,\n source: opts.source,\n })\n\n try {\n const res = await sonorFetch(\n `${apiUrl.replace(/\\/$/, '')}${FLEET_HEARTBEAT_PATH}`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n },\n // retries: 0 — the once-per-session guard already bounds volume, and a\n // missed heartbeat is harmless (the next page load or passive\n // x-sitekit-version capture re-registers the site).\n { apiKey, retries: 0 },\n )\n if (opts.debug) {\n // info, never error: a visitor's console must stay clean (Lighthouse).\n console.info(\n `[Sonor fleet] heartbeat ${res.status} v${payload.kit_version} [${payload.modules.join(',') || 'none'}]`,\n )\n }\n return res.ok\n } catch (err) {\n if (opts.debug) console.info('[Sonor fleet] heartbeat skipped (network)', err)\n return false\n }\n}\n","/**\n * @sonordev/site-kit/fleet — FleetHeartbeat\n *\n * A childless, effect-only client component that reports this site's build\n * fingerprint (kit version, Next.js version, active modules, host) to Sonor\n * exactly once per browser session. It exists so the platform can answer\n * \"which version / modules / key state is each site running\" without shelling\n * into every client repo.\n *\n * It is mounted as a deferred, CHILDLESS SIBLING — never a wrapper — by\n * SiteKitClientProviders, behind the same idle/first-interaction gate as\n * Analytics and Engage, so it never enters the critical hydration path (see\n * CLAUDE.md \"the page must server-render\"). It renders null and carries no\n * visitor data.\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { useDeferredActivation } from '../shared/defer'\nimport { SITE_KIT_VERSION } from '../shared/version'\nimport { detectNextVersion, sendFleetHeartbeat } from './heartbeat'\nimport type { FleetModule } from './contract'\n\n/** Session guard key — one heartbeat per session, re-sent when version/host changes. */\nconst SESSION_GUARD_KEY = '_sk_fleet_hb'\n\nexport interface FleetHeartbeatProps {\n /** Sonor API origin. Falls back to `window.__SITE_KIT_API_URL__` then api.sonor.io. */\n apiUrl?: string\n /** Project API key. Falls back to `window.__SITE_KIT_API_KEY__`. */\n apiKey?: string\n /** Host for the multi-site sub-dimension. Falls back to `__SITE_KIT_SITE__` then location.host. */\n site?: string | null\n /** Client-observable active modules (SiteKitClientProviders passes the enabled set). */\n modules?: FleetModule[]\n /** Installed Next.js version if known; otherwise best-effort runtime detection. */\n nextVersion?: string | null\n /**\n * Self-defer to idle / first interaction. Default true so standalone use is\n * safe. SiteKitClientProviders already gates the mount and passes false.\n */\n defer?: boolean\n /** Send at most once per browser session per (version, host). Default true. */\n oncePerSession?: boolean\n debug?: boolean\n}\n\nexport function FleetHeartbeat({\n apiUrl,\n apiKey,\n site,\n modules,\n nextVersion,\n defer = true,\n oncePerSession = true,\n debug = false,\n}: FleetHeartbeatProps) {\n const ready = useDeferredActivation(defer)\n const sentRef = useRef(false)\n\n useEffect(() => {\n if (!ready || sentRef.current) return\n if (typeof window === 'undefined') return\n\n const w = window as unknown as {\n __SITE_KIT_API_URL__?: string\n __SITE_KIT_API_KEY__?: string\n __SITE_KIT_SITE__?: string\n }\n const url = apiUrl || w.__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n const key = apiKey || w.__SITE_KIT_API_KEY__\n if (!key) return // no key resolvable — nothing to authenticate the heartbeat\n\n const resolvedSite = site ?? w.__SITE_KIT_SITE__ ?? window.location.host ?? ''\n\n // Once-per-session-per-(version,host): keeps heartbeat volume to one POST\n // per visitor session while still re-reporting after an upgrade or on a\n // different sub-site. Storage-disabled browsers simply send once per load.\n if (oncePerSession) {\n const stamp = `${SITE_KIT_VERSION}:${resolvedSite}`\n try {\n if (sessionStorage.getItem(SESSION_GUARD_KEY) === stamp) {\n sentRef.current = true\n return\n }\n sessionStorage.setItem(SESSION_GUARD_KEY, stamp)\n } catch {\n /* storage unavailable — fall through and send this load */\n }\n }\n\n sentRef.current = true\n void sendFleetHeartbeat({\n apiUrl: url,\n apiKey: key,\n site: resolvedSite,\n modules,\n nextVersion: nextVersion ?? detectNextVersion(),\n source: 'client',\n debug,\n })\n }, [ready, apiUrl, apiKey, site, modules, nextVersion, oncePerSession, debug])\n\n return null\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/fleet/heartbeat.ts","../src/fleet/FleetHeartbeat.tsx"],"names":["sanitizeFleetVersion","buildFleetHeartbeatPayload","SITE_KIT_VERSION","sonorFetch","useDeferredActivation","useRef","useEffect"],"mappings":"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","file":"chunk-LLKXPJSE.js","sourcesContent":["/**\n * @sonordev/site-kit/fleet — heartbeat sender (single source of truth for the POST)\n *\n * One place that turns fleet inputs into a validated payload and ships it to\n * `/api/public/fleet/heartbeat`. Used by BOTH the client component\n * (FleetHeartbeat) and any build-time caller, so the send path never forks.\n *\n * It routes through the canonical `sonorFetch` transport, which already stamps\n * the x-sitekit-version header, attaches x-api-key, and honors the auth\n * circuit breaker — a site on a stale/canceled key will not spam the API.\n */\n\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { SITE_KIT_VERSION } from '../shared/version'\nimport {\n buildFleetHeartbeatPayload,\n sanitizeFleetVersion,\n type FleetHeartbeatPayload,\n type FleetHeartbeatSource,\n type FleetModule,\n} from './contract'\n\n/** Canonical ingest path — resolved against the site's Sonor API origin. */\nexport const FLEET_HEARTBEAT_PATH = '/api/public/fleet/heartbeat'\n\nexport interface SendFleetHeartbeatOptions {\n /** Sonor API origin (e.g. https://api.sonor.io). Trailing slash tolerated. */\n apiUrl: string\n /** Project API key — scopes the request; the project is resolved server-side. */\n apiKey: string\n /** Client-observable active modules (validated/deduped by the contract). */\n modules?: FleetModule[] | string[]\n /** Normalized host for the multi-site sub-dimension (server re-normalizes). */\n site?: string | null\n /** Installed Next.js version, if the caller can resolve it. */\n nextVersion?: string | null\n /** 'client' (runtime boot) or 'build' (CI). Default 'client'. */\n source?: FleetHeartbeatSource\n /** Override the reported kit version. Defaults to the runtime SITE_KIT_VERSION. */\n kitVersion?: string\n /** Log one info line with the result. Never logs at error level. */\n debug?: boolean\n}\n\n/**\n * Best-effort runtime detection of the host Next.js version. Unreliable by\n * design — Next does not expose its version consistently across app/pages\n * router — so it returns null unless a site injects `__SITE_KIT_NEXT_VERSION__`\n * or `window.next.version` is present. Build-time callers should pass\n * `nextVersion` explicitly (resolvable from `next/package.json`).\n */\nexport function detectNextVersion(): string | null {\n if (typeof window === 'undefined') return null\n const w = window as unknown as {\n __SITE_KIT_NEXT_VERSION__?: string\n next?: { version?: string }\n }\n return sanitizeFleetVersion(w.__SITE_KIT_NEXT_VERSION__ ?? w.next?.version ?? null)\n}\n\n/**\n * Fire one heartbeat. Fire-and-forget by contract: it never throws — a\n * telemetry POST must never break a visitor's page or a site's build. Returns\n * true only when the POST was accepted (2xx).\n */\nexport async function sendFleetHeartbeat(opts: SendFleetHeartbeatOptions): Promise<boolean> {\n const { apiUrl, apiKey } = opts\n if (!apiUrl || !apiKey) return false\n\n const payload: FleetHeartbeatPayload = buildFleetHeartbeatPayload({\n kitVersion: opts.kitVersion || SITE_KIT_VERSION,\n nextVersion: opts.nextVersion,\n modules: opts.modules,\n site: opts.site,\n source: opts.source,\n })\n\n try {\n const res = await sonorFetch(\n `${apiUrl.replace(/\\/$/, '')}${FLEET_HEARTBEAT_PATH}`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n },\n // retries: 0 — the once-per-session guard already bounds volume, and a\n // missed heartbeat is harmless (the next page load or passive\n // x-sitekit-version capture re-registers the site).\n { apiKey, retries: 0 },\n )\n if (opts.debug) {\n // info, never error: a visitor's console must stay clean (Lighthouse).\n console.info(\n `[Sonor fleet] heartbeat ${res.status} v${payload.kit_version} [${payload.modules.join(',') || 'none'}]`,\n )\n }\n return res.ok\n } catch (err) {\n if (opts.debug) console.info('[Sonor fleet] heartbeat skipped (network)', err)\n return false\n }\n}\n","/**\n * @sonordev/site-kit/fleet — FleetHeartbeat\n *\n * A childless, effect-only client component that reports this site's build\n * fingerprint (kit version, Next.js version, active modules, host) to Sonor\n * exactly once per browser session. It exists so the platform can answer\n * \"which version / modules / key state is each site running\" without shelling\n * into every client repo.\n *\n * It is mounted as a deferred, CHILDLESS SIBLING — never a wrapper — by\n * SiteKitClientProviders, behind the same idle/first-interaction gate as\n * Analytics and Engage, so it never enters the critical hydration path (see\n * CLAUDE.md \"the page must server-render\"). It renders null and carries no\n * visitor data.\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { useDeferredActivation } from '../shared/defer'\nimport { SITE_KIT_VERSION } from '../shared/version'\nimport { detectNextVersion, sendFleetHeartbeat } from './heartbeat'\nimport type { FleetModule } from './contract'\n\n/** Session guard key — one heartbeat per session, re-sent when version/host changes. */\nconst SESSION_GUARD_KEY = '_sk_fleet_hb'\n\nexport interface FleetHeartbeatProps {\n /** Sonor API origin. Falls back to `window.__SITE_KIT_API_URL__` then api.sonor.io. */\n apiUrl?: string\n /** Project API key. Falls back to `window.__SITE_KIT_API_KEY__`. */\n apiKey?: string\n /** Host for the multi-site sub-dimension. Falls back to `__SITE_KIT_SITE__` then location.host. */\n site?: string | null\n /** Client-observable active modules (SiteKitClientProviders passes the enabled set). */\n modules?: FleetModule[]\n /** Installed Next.js version if known; otherwise best-effort runtime detection. */\n nextVersion?: string | null\n /**\n * Self-defer to idle / first interaction. Default true so standalone use is\n * safe. SiteKitClientProviders already gates the mount and passes false.\n */\n defer?: boolean\n /** Send at most once per browser session per (version, host). Default true. */\n oncePerSession?: boolean\n debug?: boolean\n}\n\nexport function FleetHeartbeat({\n apiUrl,\n apiKey,\n site,\n modules,\n nextVersion,\n defer = true,\n oncePerSession = true,\n debug = false,\n}: FleetHeartbeatProps) {\n const ready = useDeferredActivation(defer)\n const sentRef = useRef(false)\n\n useEffect(() => {\n if (!ready || sentRef.current) return\n if (typeof window === 'undefined') return\n\n const w = window as unknown as {\n __SITE_KIT_API_URL__?: string\n __SITE_KIT_API_KEY__?: string\n __SITE_KIT_SITE__?: string\n }\n const url = apiUrl || w.__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n const key = apiKey || w.__SITE_KIT_API_KEY__\n if (!key) return // no key resolvable — nothing to authenticate the heartbeat\n\n const resolvedSite = site ?? w.__SITE_KIT_SITE__ ?? window.location.host ?? ''\n\n // Once-per-session-per-(version,host): keeps heartbeat volume to one POST\n // per visitor session while still re-reporting after an upgrade or on a\n // different sub-site. Storage-disabled browsers simply send once per load.\n if (oncePerSession) {\n const stamp = `${SITE_KIT_VERSION}:${resolvedSite}`\n try {\n if (sessionStorage.getItem(SESSION_GUARD_KEY) === stamp) {\n sentRef.current = true\n return\n }\n sessionStorage.setItem(SESSION_GUARD_KEY, stamp)\n } catch {\n /* storage unavailable — fall through and send this load */\n }\n }\n\n sentRef.current = true\n void sendFleetHeartbeat({\n apiUrl: url,\n apiKey: key,\n site: resolvedSite,\n modules,\n nextVersion: nextVersion ?? detectNextVersion(),\n source: 'client',\n debug,\n })\n }, [ready, apiUrl, apiKey, site, modules, nextVersion, oncePerSession, debug])\n\n return null\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk62ODUWUX_js = require('./chunk-62ODUWUX.js');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
|
|
6
6
|
function HoneypotField({ name, value, onChange }) {
|
|
@@ -46,7 +46,7 @@ function nativeEligible(config) {
|
|
|
46
46
|
}
|
|
47
47
|
function nativeFormProps(config) {
|
|
48
48
|
if (!nativeEligible(config)) return {};
|
|
49
|
-
const { apiUrl } =
|
|
49
|
+
const { apiUrl } = chunk62ODUWUX_js.getApiConfig();
|
|
50
50
|
return { action: `${apiUrl}/api/public/forms/submit-native`, method: "post" };
|
|
51
51
|
}
|
|
52
52
|
function NativeFallbackFields({ config, returnTo }) {
|
|
@@ -60,5 +60,5 @@ function NativeFallbackFields({ config, returnTo }) {
|
|
|
60
60
|
exports.HoneypotField = HoneypotField;
|
|
61
61
|
exports.NativeFallbackFields = NativeFallbackFields;
|
|
62
62
|
exports.nativeFormProps = nativeFormProps;
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-LZY374FB.js.map
|
|
64
|
+
//# sourceMappingURL=chunk-LZY374FB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/HoneypotField.tsx","../src/forms/native-fallback.tsx"],"names":["jsx","getApiConfig","jsxs","Fragment"],"mappings":";;;;;AAqCO,SAAS,aAAA,CAAc,EAAE,IAAA,EAAM,KAAA,EAAO,UAAS,EAAuB;AAC3E,EAAA,MAAM,WAAA,GAAc,OAAO,QAAA,KAAa,UAAA;AACxC,EAAA,uBACEA,cAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,MAAA;AAAA,MACL,IAAA;AAAA,MACA,QAAA,EAAU,EAAA;AAAA,MACV,YAAA,EAAa,cAAA;AAAA,MACb,aAAA,EAAY,MAAA;AAAA,MACZ,KAAA,EAAK,IAAA;AAAA,MACL,kBAAA,EAAiB,EAAA;AAAA,MAGjB,gBAAA,EAAe,EAAA;AAAA,MACf,eAAA,EAAc,MAAA;AAAA,MACd,gBAAA,EAAe,OAAA;AAAA,MACf,eAAA,EAAc,EAAA;AAAA,MACd,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,QAAA,EAAU,QAAA;AAAA,QACV,OAAA,EAAS,CAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,aAAA,EAAe;AAAA,OACjB;AAAA,MACC,GAAI,WAAA,GACD;AAAA,QACE,OAAO,KAAA,IAAS,EAAA;AAAA,QAChB,QAAA,EAAU,CAAC,CAAA,KAA2C;AACpD,UAAA,QAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AACxB,UAAA,IAAI,CAAA,CAAE,OAAO,KAAA,EAAO;AAElB,YAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA;AAAA,UAC3C;AAAA,QACF;AAAA,OACF,GACA,EAAE,YAAA,EAAc,EAAA;AAAG;AAAA,GACzB;AAEJ;ACjDA,SAAS,eAAe,MAAA,EAAuD;AAC7E,EAAA,OAAO,CAAC,CAAC,MAAA,EAAQ,YAAA,IAAgB,CAAC,MAAA,CAAO,aAAA;AAC3C;AAGO,SAAS,gBACd,MAAA,EACsC;AACtC,EAAA,IAAI,CAAC,cAAA,CAAe,MAAM,CAAA,SAAU,EAAC;AACrC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIC,6BAAA,EAAa;AAChC,EAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAM,CAAA,+BAAA,CAAA,EAAmC,QAAQ,MAAA,EAAO;AAC9E;AAaO,SAAS,oBAAA,CAAqB,EAAE,MAAA,EAAQ,QAAA,EAAS,EAA8B;AACpF,EAAA,IAAI,CAAC,cAAA,CAAe,MAAM,CAAA,EAAG,OAAO,IAAA;AACpC,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,aAAY,KAAA,EAAO,MAAA,CAAQ,YAAA,EAAc,QAAA,EAAQ,IAAA,EAAC,CAAA;AAAA,IAC3E,QAAA,mBAAWA,cAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,YAAA,EAAa,KAAA,EAAO,QAAA,EAAU,QAAA,EAAQ,IAAA,EAAC,CAAA,GAAK;AAAA,GAAA,EACpF,CAAA;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/forms/HoneypotField.tsx","../src/forms/native-fallback.tsx"],"names":["jsx","getApiConfig","jsxs","Fragment"],"mappings":";;;;;AAqCO,SAAS,aAAA,CAAc,EAAE,IAAA,EAAM,KAAA,EAAO,UAAS,EAAuB;AAC3E,EAAA,MAAM,WAAA,GAAc,OAAO,QAAA,KAAa,UAAA;AACxC,EAAA,uBACEA,cAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,MAAA;AAAA,MACL,IAAA;AAAA,MACA,QAAA,EAAU,EAAA;AAAA,MACV,YAAA,EAAa,cAAA;AAAA,MACb,aAAA,EAAY,MAAA;AAAA,MACZ,KAAA,EAAK,IAAA;AAAA,MACL,kBAAA,EAAiB,EAAA;AAAA,MAGjB,gBAAA,EAAe,EAAA;AAAA,MACf,eAAA,EAAc,MAAA;AAAA,MACd,gBAAA,EAAe,OAAA;AAAA,MACf,eAAA,EAAc,EAAA;AAAA,MACd,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO,CAAA;AAAA,QACP,MAAA,EAAQ,CAAA;AAAA,QACR,QAAA,EAAU,QAAA;AAAA,QACV,OAAA,EAAS,CAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,aAAA,EAAe;AAAA,OACjB;AAAA,MACC,GAAI,WAAA,GACD;AAAA,QACE,OAAO,KAAA,IAAS,EAAA;AAAA,QAChB,QAAA,EAAU,CAAC,CAAA,KAA2C;AACpD,UAAA,QAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AACxB,UAAA,IAAI,CAAA,CAAE,OAAO,KAAA,EAAO;AAElB,YAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA;AAAA,UAC3C;AAAA,QACF;AAAA,OACF,GACA,EAAE,YAAA,EAAc,EAAA;AAAG;AAAA,GACzB;AAEJ;ACjDA,SAAS,eAAe,MAAA,EAAuD;AAC7E,EAAA,OAAO,CAAC,CAAC,MAAA,EAAQ,YAAA,IAAgB,CAAC,MAAA,CAAO,aAAA;AAC3C;AAGO,SAAS,gBACd,MAAA,EACsC;AACtC,EAAA,IAAI,CAAC,cAAA,CAAe,MAAM,CAAA,SAAU,EAAC;AACrC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIC,6BAAA,EAAa;AAChC,EAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAM,CAAA,+BAAA,CAAA,EAAmC,QAAQ,MAAA,EAAO;AAC9E;AAaO,SAAS,oBAAA,CAAqB,EAAE,MAAA,EAAQ,QAAA,EAAS,EAA8B;AACpF,EAAA,IAAI,CAAC,cAAA,CAAe,MAAM,CAAA,EAAG,OAAO,IAAA;AACpC,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,aAAY,KAAA,EAAO,MAAA,CAAQ,YAAA,EAAc,QAAA,EAAQ,IAAA,EAAC,CAAA;AAAA,IAC3E,QAAA,mBAAWA,cAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,YAAA,EAAa,KAAA,EAAO,QAAA,EAAU,QAAA,EAAQ,IAAA,EAAC,CAAA,GAAK;AAAA,GAAA,EACpF,CAAA;AAEJ","file":"chunk-LZY374FB.js","sourcesContent":["/**\n * Single source of truth for the honeypot input — rendered by BOTH form\n * experiences (classic and stage) inside their <form>. The customRender path\n * deliberately gets none (documented limitation: custom renders lose the\n * honeypot, which is why alternate experiences must be render branches).\n *\n * Invariants (do not weaken any of these):\n * - `inert` blocks focus/interaction at the browser level, surviving hostile\n * site CSS that could defeat the inline styles.\n * - data-sk-honeypot gives site CSS a stable opt-OUT hook.\n * - Controlled input: bots filling via JS still fire React onChange, so the\n * value reaches submitForm's data payload.\n * - Name comes from config (`honeypot_field || DEFAULT_HONEYPOT_FIELD` from\n * the shared contract) — resolved by the caller, never forked here.\n * - The trap must be invisible to AUTOFILL as well as to people. A browser or\n * password manager filling a hidden input flags a real visitor as a bot, and\n * because the value is stripped server-side the mistake is undiagnosable\n * after the fact. `autocomplete=\"off\"` does not achieve this — it is the one\n * value Chrome deliberately ignores for contact/address autofill — so the\n * trap declares `new-password` (never offered saved contact data) plus the\n * documented per-manager opt-outs.\n */\n\nimport React from 'react'\n\nexport interface HoneypotFieldProps {\n name: string\n value?: string\n /**\n * Omit for STATIC mode — an uncontrolled trap a Server Component can render.\n * The trap's whole job is server-side (the value is read off the submission\n * and stripped), so it needs no client state to work; the controlled form is\n * only so the hydrated JSON path can read it back out of React state.\n */\n onChange?: (value: string) => void\n}\n\nexport function HoneypotField({ name, value, onChange }: HoneypotFieldProps) {\n const interactive = typeof onChange === 'function'\n return (\n <input\n type=\"text\"\n name={name}\n tabIndex={-1}\n autoComplete=\"new-password\"\n aria-hidden=\"true\"\n inert\n data-sk-honeypot=\"\"\n // Password-manager opt-outs: 1Password, LastPass, Dashlane, Bitwarden.\n // Each ignores its own attribute; none respects autocomplete alone.\n data-1p-ignore=\"\"\n data-lpignore=\"true\"\n data-form-type=\"other\"\n data-bwignore=\"\"\n style={{\n position: 'absolute',\n left: -9999,\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n visibility: 'hidden',\n pointerEvents: 'none',\n }}\n {...(interactive\n ? {\n value: value ?? '',\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange!(e.target.value)\n if (e.target.value) {\n // Bot detected\n console.warn('[Forms] Honeypot triggered')\n }\n },\n }\n : { defaultValue: '' })}\n />\n )\n}\n","'use client'\n\n/**\n * No-JS native submission fallback — the floor under every managed form.\n *\n * The classic form is the SSR/no-JS surface (experiences are post-hydration\n * chunks), so it alone carries a real `action`/`method` pointing at\n * sonor-api's POST /api/public/forms/submit-native. With JS running, the\n * form's onSubmit preventDefault()s and the JSON path wins; without JS the\n * browser performs an ordinary form-encoded POST and the lead still lands.\n *\n * Auth rides in the hidden `_sk_token` field: a signed, single-purpose\n * credential minted by the api-key-authenticated forms/config endpoint\n * (`native_token` in the response). No token in the config (older API, or no\n * signing secret) means no fallback — the form keeps its historical behavior\n * rather than pointing at an endpoint that will reject it.\n *\n * Multi-step forms are excluded: step navigation is JS, and a native POST of\n * step-1 fields alone fails whole-form validation server-side. Single-step\n * forms are the overwhelming lead-capture case.\n *\n * Single source of truth for the gating — the form attrs and the hidden\n * fields must always agree, so both read the same predicate.\n */\n\nimport React from 'react'\nimport type { ManagedFormConfig } from './types'\nimport { getApiConfig } from './submitForm'\n\nfunction nativeEligible(config: ManagedFormConfig | null | undefined): boolean {\n return !!config?.native_token && !config.is_multi_step\n}\n\n/** `action`/`method` for the classic <form> — empty when ineligible. */\nexport function nativeFormProps(\n config: ManagedFormConfig | null | undefined,\n): { action?: string; method?: 'post' } {\n if (!nativeEligible(config)) return {}\n const { apiUrl } = getApiConfig()\n return { action: `${apiUrl}/api/public/forms/submit-native`, method: 'post' }\n}\n\nexport interface NativeFallbackFieldsProps {\n config: ManagedFormConfig | null | undefined\n /**\n * Absolute URL the native 303 should land on (usually the page hosting the\n * form). Optional — without it the server falls back to the Referer origin,\n * which loses the path but still returns the visitor to the right site.\n */\n returnTo?: string\n}\n\n/** Hidden control fields the native endpoint reads (`_sk_*` namespace). */\nexport function NativeFallbackFields({ config, returnTo }: NativeFallbackFieldsProps) {\n if (!nativeEligible(config)) return null\n return (\n <>\n <input type=\"hidden\" name=\"_sk_token\" value={config!.native_token} readOnly />\n {returnTo ? <input type=\"hidden\" name=\"_sk_return\" value={returnTo} readOnly /> : null}\n </>\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunk4D2G5ZNP_js = require('./chunk-4D2G5ZNP.js');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
@@ -22,7 +22,7 @@ async function fetchBookingTypes(orgSlug, apiUrl, apiKey) {
|
|
|
22
22
|
const url = apiUrl || cfg.apiUrl;
|
|
23
23
|
const key = apiKey || cfg.apiKey;
|
|
24
24
|
const endpoint = key ? `${url}/sync/widget/types` : `${url}/sync/public/${orgSlug}/types`;
|
|
25
|
-
const response = await
|
|
25
|
+
const response = await chunk4D2G5ZNP_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
|
|
26
26
|
if (!response.ok) {
|
|
27
27
|
const msg = await response.json().catch(() => ({ message: response.statusText }));
|
|
28
28
|
const detail = msg && typeof msg.message === "string" ? msg.message : response.statusText;
|
|
@@ -36,7 +36,7 @@ async function fetchBookingTypeDetails(typeSlug, orgSlug, apiUrl, apiKey) {
|
|
|
36
36
|
const url = apiUrl || cfg.apiUrl;
|
|
37
37
|
const key = apiKey || cfg.apiKey;
|
|
38
38
|
const endpoint = key ? `${url}/sync/widget/types/${typeSlug}` : `${url}/sync/public/${orgSlug}/types/${typeSlug}`;
|
|
39
|
-
const response = await
|
|
39
|
+
const response = await chunk4D2G5ZNP_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
|
|
40
40
|
if (!response.ok) {
|
|
41
41
|
const msg = await response.json().catch(() => ({ message: response.statusText }));
|
|
42
42
|
const detail = msg && typeof msg.message === "string" ? msg.message : response.statusText;
|
|
@@ -52,7 +52,7 @@ async function fetchAvailability(typeSlug, date, orgSlug, apiUrl, apiKey, timezo
|
|
|
52
52
|
if (timezone) params.append("timezone", timezone);
|
|
53
53
|
if (hostId) params.append("hostId", hostId);
|
|
54
54
|
const endpoint = key ? `${url}/sync/widget/availability/${typeSlug}?${params}` : `${url}/sync/public/${orgSlug}/availability/${typeSlug}?${params}`;
|
|
55
|
-
const response = await
|
|
55
|
+
const response = await chunk4D2G5ZNP_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
|
|
56
56
|
if (!response.ok) {
|
|
57
57
|
const msg = await response.json().catch(() => ({ message: response.statusText }));
|
|
58
58
|
let detail = msg && typeof msg.message === "string" ? String(msg.message).trim() : (response.statusText || "").trim();
|
|
@@ -75,7 +75,7 @@ async function createSlotHold(holdData, apiUrl, apiKey) {
|
|
|
75
75
|
const url = apiUrl || cfg.apiUrl;
|
|
76
76
|
const key = apiKey || cfg.apiKey;
|
|
77
77
|
const endpoint = key ? `${url}/sync/widget/hold` : `${url}/sync/public/hold`;
|
|
78
|
-
const response = await
|
|
78
|
+
const response = await chunk4D2G5ZNP_js.sonorFetch(endpoint, {
|
|
79
79
|
method: "POST",
|
|
80
80
|
headers: buildHeaders(true),
|
|
81
81
|
body: JSON.stringify(holdData)
|
|
@@ -90,7 +90,7 @@ async function releaseSlotHold(holdId, apiUrl, apiKey) {
|
|
|
90
90
|
const url = apiUrl || cfg.apiUrl;
|
|
91
91
|
const key = apiKey || cfg.apiKey;
|
|
92
92
|
const endpoint = key ? `${url}/sync/widget/hold/${holdId}` : `${url}/sync/public/hold/${holdId}`;
|
|
93
|
-
await
|
|
93
|
+
await chunk4D2G5ZNP_js.sonorFetch(endpoint, {
|
|
94
94
|
method: "DELETE",
|
|
95
95
|
headers: buildHeaders()
|
|
96
96
|
}, { apiKey: key, retries: 0 });
|
|
@@ -100,7 +100,7 @@ async function createBooking(bookingData, apiUrl, apiKey) {
|
|
|
100
100
|
const url = apiUrl || cfg.apiUrl;
|
|
101
101
|
const key = apiKey || cfg.apiKey;
|
|
102
102
|
const endpoint = key ? `${url}/sync/widget/booking` : `${url}/sync/public/booking`;
|
|
103
|
-
const response = await
|
|
103
|
+
const response = await chunk4D2G5ZNP_js.sonorFetch(endpoint, {
|
|
104
104
|
method: "POST",
|
|
105
105
|
headers: buildHeaders(true),
|
|
106
106
|
body: JSON.stringify(bookingData)
|
|
@@ -1100,5 +1100,5 @@ exports.formatDate = formatDate;
|
|
|
1100
1100
|
exports.formatDuration = formatDuration;
|
|
1101
1101
|
exports.formatTime = formatTime;
|
|
1102
1102
|
exports.releaseSlotHold = releaseSlotHold;
|
|
1103
|
-
//# sourceMappingURL=chunk-
|
|
1104
|
-
//# sourceMappingURL=chunk-
|
|
1103
|
+
//# sourceMappingURL=chunk-MGPHBVOK.js.map
|
|
1104
|
+
//# sourceMappingURL=chunk-MGPHBVOK.js.map
|