@sonordev/site-kit 6.1.3 → 6.3.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 +7 -1
- package/dist/{AnalyticsProvider-QK6XBDEJ.js → AnalyticsProvider-JKWJGIH2.js} +10 -10
- package/dist/{AnalyticsProvider-QK6XBDEJ.js.map → AnalyticsProvider-JKWJGIH2.js.map} +1 -1
- package/dist/{AnalyticsProvider-TIJWTISP.mjs → AnalyticsProvider-T4UBUUV4.mjs} +6 -6
- package/dist/{AnalyticsProvider-TIJWTISP.mjs.map → AnalyticsProvider-T4UBUUV4.mjs.map} +1 -1
- package/dist/{ArticleViewTracker-I66RBWDK.mjs → ArticleViewTracker-AYYSXNJS.mjs} +5 -5
- package/dist/{ArticleViewTracker-I66RBWDK.mjs.map → ArticleViewTracker-AYYSXNJS.mjs.map} +1 -1
- package/dist/{ArticleViewTracker-ALE672ZR.js → ArticleViewTracker-F5IP734Z.js} +6 -6
- package/dist/{ArticleViewTracker-ALE672ZR.js.map → ArticleViewTracker-F5IP734Z.js.map} +1 -1
- package/dist/ChatWidget-3RVBHZCS.mjs +17 -0
- package/dist/{ChatWidget-LNOY4TUZ.mjs.map → ChatWidget-3RVBHZCS.mjs.map} +1 -1
- package/dist/ChatWidget-RFSI2XNU.js +34 -0
- package/dist/{ChatWidget-566CQUN6.js.map → ChatWidget-RFSI2XNU.js.map} +1 -1
- package/dist/EngageWidget-QO5S6YV5.js +21 -0
- package/dist/{EngageWidget-DF47YUHQ.js.map → EngageWidget-QO5S6YV5.js.map} +1 -1
- package/dist/EngageWidget-TE6S5KYT.mjs +12 -0
- package/dist/{EngageWidget-IGF7SC3R.mjs.map → EngageWidget-TE6S5KYT.mjs.map} +1 -1
- package/dist/{FileField-IK6E5IOC.js → FileField-JQSRKWXW.js} +6 -6
- package/dist/{FileField-IK6E5IOC.js.map → FileField-JQSRKWXW.js.map} +1 -1
- package/dist/{FileField-AG63W2BC.mjs → FileField-OXZXB3UW.mjs} +5 -5
- package/dist/{FileField-AG63W2BC.mjs.map → FileField-OXZXB3UW.mjs.map} +1 -1
- package/dist/{FormSpotlight-6MUDJWW5.js → FormSpotlight-H2A3JIFI.js} +9 -9
- package/dist/{FormSpotlight-6MUDJWW5.js.map → FormSpotlight-H2A3JIFI.js.map} +1 -1
- package/dist/{FormSpotlight-H7V4GBXG.mjs → FormSpotlight-PZ5RLZRV.mjs} +3 -3
- package/dist/{FormSpotlight-H7V4GBXG.mjs.map → FormSpotlight-PZ5RLZRV.mjs.map} +1 -1
- package/dist/{FormStage-ACETL7SD.mjs → FormStage-CIHL7OBA.mjs} +3 -3
- package/dist/{FormStage-ACETL7SD.mjs.map → FormStage-CIHL7OBA.mjs.map} +1 -1
- package/dist/{FormStage-ZXZRZ2LS.js → FormStage-ZA2FABYQ.js} +9 -9
- package/dist/{FormStage-ZXZRZ2LS.js.map → FormStage-ZA2FABYQ.js.map} +1 -1
- package/dist/ManagedForm-BVLS2QZR.js +25 -0
- package/dist/{ManagedForm-4U54NPW2.js.map → ManagedForm-BVLS2QZR.js.map} +1 -1
- package/dist/ManagedForm-PTCWSTC5.mjs +16 -0
- package/dist/{ManagedForm-MOBWSG4D.mjs.map → ManagedForm-PTCWSTC5.mjs.map} +1 -1
- package/dist/{ManagedNewsletterForm-5LBGBE2F.js → ManagedNewsletterForm-IB5VD43M.js} +8 -8
- package/dist/{ManagedNewsletterForm-5LBGBE2F.js.map → ManagedNewsletterForm-IB5VD43M.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-OV3OEMUP.mjs → ManagedNewsletterForm-WMCRFDL7.mjs} +7 -7
- package/dist/{ManagedNewsletterForm-OV3OEMUP.mjs.map → ManagedNewsletterForm-WMCRFDL7.mjs.map} +1 -1
- package/dist/{SignalCore-QCVR7TZV.js → SignalCore-Q57NY7EG.js} +11 -11
- package/dist/{SignalCore-QCVR7TZV.js.map → SignalCore-Q57NY7EG.js.map} +1 -1
- package/dist/{SignalCore-XM2MHEGR.mjs → SignalCore-R44AWPYN.mjs} +5 -5
- package/dist/{SignalCore-XM2MHEGR.mjs.map → SignalCore-R44AWPYN.mjs.map} +1 -1
- package/dist/SitemapSync-NICUUMQF.mjs +9 -0
- package/dist/{SitemapSync-74EVNOFQ.mjs.map → SitemapSync-NICUUMQF.mjs.map} +1 -1
- package/dist/SitemapSync-ZP4PKZZ3.js +18 -0
- package/dist/{SitemapSync-BQFZAE3X.js.map → SitemapSync-ZP4PKZZ3.js.map} +1 -1
- package/dist/admin-auth/index.d.ts +109 -0
- package/dist/admin-auth/index.d.ts.map +1 -0
- package/dist/admin-auth/index.js +0 -0
- package/dist/admin-auth/index.js.map +1 -0
- package/dist/admin-auth/index.mjs +0 -0
- package/dist/admin-auth/index.mjs.map +1 -0
- package/dist/admin-auth/session.d.ts +32 -0
- package/dist/admin-auth/session.d.ts.map +1 -0
- package/dist/analytics/index.js +9 -9
- package/dist/analytics/index.mjs +4 -4
- package/dist/articles/index.js +1 -1
- package/dist/articles/index.mjs +1 -1
- package/dist/articles/server-ui.js +1 -1
- package/dist/articles/server-ui.mjs +1 -1
- package/dist/{chunk-YK7SEUFJ.mjs → chunk-22MXW53O.mjs} +4 -4
- package/dist/{chunk-YK7SEUFJ.mjs.map → chunk-22MXW53O.mjs.map} +1 -1
- package/dist/{chunk-I7KIVKVW.js → chunk-2JZFTPPE.js} +3 -3
- package/dist/{chunk-I7KIVKVW.js.map → chunk-2JZFTPPE.js.map} +1 -1
- package/dist/{chunk-BGBP4UN4.js → chunk-4BQQGOHC.js} +4 -4
- package/dist/{chunk-BGBP4UN4.js.map → chunk-4BQQGOHC.js.map} +1 -1
- package/dist/{chunk-LXBPTKYT.mjs → chunk-5XLPWHQC.mjs} +4 -4
- package/dist/{chunk-LXBPTKYT.mjs.map → chunk-5XLPWHQC.mjs.map} +1 -1
- package/dist/{chunk-TIFVAASU.mjs → chunk-5YA6SI4Z.mjs} +2 -2
- package/dist/{chunk-CTAYH725.js → chunk-6AAT724D.js} +11 -11
- package/dist/{chunk-CTAYH725.js.map → chunk-6AAT724D.js.map} +1 -1
- package/dist/{chunk-AGEE4CGH.js → chunk-6AIXHYFO.js} +5 -5
- package/dist/{chunk-AGEE4CGH.js.map → chunk-6AIXHYFO.js.map} +1 -1
- package/dist/{chunk-I4PUQYBI.mjs → chunk-6SH6HLWS.mjs} +3 -3
- package/dist/{chunk-I4PUQYBI.mjs.map → chunk-6SH6HLWS.mjs.map} +1 -1
- package/dist/{chunk-S6CMQTVZ.js → chunk-72WO3AE5.js} +5 -5
- package/dist/{chunk-S6CMQTVZ.js.map → chunk-72WO3AE5.js.map} +1 -1
- package/dist/{chunk-AEW7EFYU.js → chunk-AEN7EL6N.js} +20 -6
- package/dist/chunk-AEN7EL6N.js.map +1 -0
- package/dist/{chunk-5IQOPL7T.mjs → chunk-BSTV3T6P.mjs} +3 -3
- package/dist/{chunk-5IQOPL7T.mjs.map → chunk-BSTV3T6P.mjs.map} +1 -1
- package/dist/{chunk-2SLA2LOD.js → chunk-C3MRX7NL.js} +12 -12
- package/dist/{chunk-2SLA2LOD.js.map → chunk-C3MRX7NL.js.map} +1 -1
- package/dist/{chunk-D5KKVWZK.mjs → chunk-CBZJNMYS.mjs} +3 -3
- package/dist/{chunk-D5KKVWZK.mjs.map → chunk-CBZJNMYS.mjs.map} +1 -1
- package/dist/chunk-COCYQHK3.mjs +6 -0
- package/dist/{chunk-5FBALULE.mjs.map → chunk-COCYQHK3.mjs.map} +1 -1
- package/dist/{chunk-PTQHPWEK.mjs → chunk-DFAW62AX.mjs} +151 -165
- package/dist/chunk-DFAW62AX.mjs.map +1 -0
- package/dist/{chunk-NRT7MOEO.mjs → chunk-DN6BLVU7.mjs} +4 -4
- package/dist/{chunk-NRT7MOEO.mjs.map → chunk-DN6BLVU7.mjs.map} +1 -1
- package/dist/{chunk-IUNFAKOS.mjs → chunk-ED5GOAF6.mjs} +3 -3
- package/dist/{chunk-IUNFAKOS.mjs.map → chunk-ED5GOAF6.mjs.map} +1 -1
- package/dist/{chunk-IZRVSIOK.js → chunk-F4DZDIR4.js} +4 -4
- package/dist/{chunk-IZRVSIOK.js.map → chunk-F4DZDIR4.js.map} +1 -1
- package/dist/{chunk-VDGCZVUF.js → chunk-FFE6P6PQ.js} +14 -14
- package/dist/{chunk-VDGCZVUF.js.map → chunk-FFE6P6PQ.js.map} +1 -1
- package/dist/{chunk-RQG7I6O4.js → chunk-GBOSAWBR.js} +4 -4
- package/dist/{chunk-RQG7I6O4.js.map → chunk-GBOSAWBR.js.map} +1 -1
- package/dist/{chunk-DVZ4BMXX.mjs → chunk-HQCWWQAI.mjs} +7 -7
- package/dist/{chunk-DVZ4BMXX.mjs.map → chunk-HQCWWQAI.mjs.map} +1 -1
- package/dist/{chunk-KDLN2MR5.js → chunk-I5XK32OJ.js} +18 -18
- package/dist/{chunk-KDLN2MR5.js.map → chunk-I5XK32OJ.js.map} +1 -1
- package/dist/{chunk-XXSSUCJB.js → chunk-I7AZC5ZQ.js} +2 -2
- package/dist/{chunk-RGXYE2ZI.mjs → chunk-IHG7W5JH.mjs} +4 -4
- package/dist/{chunk-RGXYE2ZI.mjs.map → chunk-IHG7W5JH.mjs.map} +1 -1
- package/dist/chunk-IMWON7OV.mjs +27 -0
- package/dist/chunk-IMWON7OV.mjs.map +1 -0
- package/dist/{chunk-KEEZX6Q4.js → chunk-JCBENABK.js} +3 -3
- package/dist/{chunk-KEEZX6Q4.js.map → chunk-JCBENABK.js.map} +1 -1
- package/dist/chunk-JLIL5EFG.js +8 -0
- package/dist/{chunk-OI3FCJSP.js.map → chunk-JLIL5EFG.js.map} +1 -1
- package/dist/{chunk-7K6L33BX.mjs → chunk-JOYMIGR2.mjs} +22 -22
- package/dist/{chunk-ATPQ6264.js → chunk-JS75ORH7.js} +24 -24
- package/dist/{chunk-3MLVI5DH.mjs → chunk-KLKUI3US.mjs} +3 -3
- package/dist/{chunk-3MLVI5DH.mjs.map → chunk-KLKUI3US.mjs.map} +1 -1
- package/dist/{chunk-XCOMBHLF.js → chunk-L6XXUNJB.js} +8 -8
- package/dist/{chunk-XCOMBHLF.js.map → chunk-L6XXUNJB.js.map} +1 -1
- package/dist/{chunk-OZTVJSFX.js → chunk-LIWPIG7U.js} +160 -172
- package/dist/chunk-LIWPIG7U.js.map +1 -0
- package/dist/{chunk-OWEJXMKY.mjs → chunk-M436JMD4.mjs} +3 -3
- package/dist/{chunk-OWEJXMKY.mjs.map → chunk-M436JMD4.mjs.map} +1 -1
- package/dist/{chunk-EVETX2XF.mjs → chunk-NCURAYKL.mjs} +4 -4
- package/dist/{chunk-EVETX2XF.mjs.map → chunk-NCURAYKL.mjs.map} +1 -1
- package/dist/{chunk-ZUQSVCMD.js → chunk-NN2YE5WT.js} +3 -3
- package/dist/{chunk-RH4XEXTK.mjs → chunk-NNZDWY3L.mjs} +3 -3
- package/dist/{chunk-5OUOVPXC.js → chunk-OMYR2ORG.js} +8 -8
- package/dist/{chunk-5OUOVPXC.js.map → chunk-OMYR2ORG.js.map} +1 -1
- package/dist/{chunk-JSM4AYSZ.js → chunk-OZLYJSFE.js} +14 -14
- package/dist/{chunk-JSM4AYSZ.js.map → chunk-OZLYJSFE.js.map} +1 -1
- package/dist/{chunk-ESPOINPT.mjs → chunk-P2VWGMQU.mjs} +3 -3
- package/dist/{chunk-ESPOINPT.mjs.map → chunk-P2VWGMQU.mjs.map} +1 -1
- package/dist/{chunk-7VRK3DWU.js → chunk-P35JIP3J.js} +6 -6
- package/dist/{chunk-7VRK3DWU.js.map → chunk-P35JIP3J.js.map} +1 -1
- package/dist/{chunk-IWHAJBYL.js → chunk-PXN7LIYZ.js} +15 -15
- package/dist/{chunk-IWHAJBYL.js.map → chunk-PXN7LIYZ.js.map} +1 -1
- package/dist/{chunk-GYKFHQSZ.mjs → chunk-QSCE66KQ.mjs} +3 -3
- package/dist/{chunk-GYKFHQSZ.mjs.map → chunk-QSCE66KQ.mjs.map} +1 -1
- package/dist/{chunk-QSN2QST7.mjs → chunk-QUMXVJ2C.mjs} +3 -3
- package/dist/{chunk-QSN2QST7.mjs.map → chunk-QUMXVJ2C.mjs.map} +1 -1
- package/dist/{chunk-6FIIA6ME.mjs → chunk-RB53MKRX.mjs} +4 -4
- package/dist/{chunk-6FIIA6ME.mjs.map → chunk-RB53MKRX.mjs.map} +1 -1
- package/dist/{chunk-JAA42HR7.js → chunk-RDKICSVU.js} +7 -7
- package/dist/{chunk-JAA42HR7.js.map → chunk-RDKICSVU.js.map} +1 -1
- package/dist/{chunk-EXVHO3CZ.mjs → chunk-REGHZJQF.mjs} +3 -3
- package/dist/{chunk-EXVHO3CZ.mjs.map → chunk-REGHZJQF.mjs.map} +1 -1
- package/dist/{chunk-MTHMOXZF.js → chunk-RNEPZD2I.js} +6 -6
- package/dist/{chunk-MTHMOXZF.js.map → chunk-RNEPZD2I.js.map} +1 -1
- package/dist/{chunk-CI7T4ZRP.mjs → chunk-RSP6RDR2.mjs} +4 -4
- package/dist/{chunk-CI7T4ZRP.mjs.map → chunk-RSP6RDR2.mjs.map} +1 -1
- package/dist/{chunk-MLXUMVBK.mjs → chunk-UCMMIGC6.mjs} +20 -6
- package/dist/chunk-UCMMIGC6.mjs.map +1 -0
- package/dist/{chunk-MQEVQ5YB.js → chunk-UJFRMHUN.js} +3 -3
- package/dist/{chunk-MQEVQ5YB.js.map → chunk-UJFRMHUN.js.map} +1 -1
- package/dist/{chunk-3RISRHOK.mjs → chunk-W7HSYABM.mjs} +8 -8
- package/dist/{chunk-3RISRHOK.mjs.map → chunk-W7HSYABM.mjs.map} +1 -1
- package/dist/{chunk-OUP6UL74.mjs → chunk-X5WJ5XPZ.mjs} +3 -3
- package/dist/{chunk-OUP6UL74.mjs.map → chunk-X5WJ5XPZ.mjs.map} +1 -1
- package/dist/{chunk-P4J3WG6C.js → chunk-XRUKYQ43.js} +4 -4
- package/dist/{chunk-P4J3WG6C.js.map → chunk-XRUKYQ43.js.map} +1 -1
- package/dist/{chunk-YEHC7VMW.mjs → chunk-YZCRYK5M.mjs} +3 -3
- package/dist/{chunk-YEHC7VMW.mjs.map → chunk-YZCRYK5M.mjs.map} +1 -1
- package/dist/chunk-YZJ22HUQ.js +29 -0
- package/dist/chunk-YZJ22HUQ.js.map +1 -0
- package/dist/{chunk-EVKP4SOM.js → chunk-ZKM6ELMZ.js} +10 -10
- package/dist/{chunk-EVKP4SOM.js.map → chunk-ZKM6ELMZ.js.map} +1 -1
- package/dist/cli/index.js +211 -211
- package/dist/cli/index.mjs +151 -151
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/commerce/index.js +57 -57
- package/dist/commerce/index.mjs +5 -5
- package/dist/engage/ChatWidget.d.ts +61 -1
- package/dist/engage/ChatWidget.d.ts.map +1 -1
- package/dist/engage/chat-messages.d.ts +86 -0
- package/dist/engage/chat-messages.d.ts.map +1 -0
- 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 +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +10 -10
- package/dist/layout/index.mjs +8 -8
- package/dist/{lib-6GWWPDJR.js → lib-6HOOMENJ.js} +7 -7
- package/dist/{lib-WFB5RLEQ.js → lib-BGAWCSUH.js} +8 -8
- package/dist/{lib-N5PD6JNJ.mjs → lib-R7IQ4ZHE.mjs} +2 -2
- package/dist/lib-RSDMEKDQ.mjs +4 -0
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/motion/CountUp.d.ts +49 -0
- package/dist/motion/CountUp.d.ts.map +1 -0
- package/dist/motion/Parallax.d.ts +14 -0
- package/dist/motion/Parallax.d.ts.map +1 -1
- package/dist/motion/ScrollScene.d.ts +1 -1
- package/dist/motion/ScrollScene.d.ts.map +1 -1
- package/dist/motion/engine.d.ts +19 -0
- package/dist/motion/engine.d.ts.map +1 -1
- package/dist/motion/gsap.d.ts +55 -6
- package/dist/motion/gsap.d.ts.map +1 -1
- package/dist/motion/gsap.js +101 -4
- package/dist/motion/gsap.js.map +1 -1
- package/dist/motion/gsap.mjs +96 -3
- package/dist/motion/gsap.mjs.map +1 -1
- package/dist/motion/index.d.ts +1 -1
- package/dist/motion/index.d.ts.map +1 -1
- package/dist/motion/index.js +21 -40
- package/dist/motion/index.js.map +1 -1
- package/dist/motion/index.mjs +11 -32
- package/dist/motion/index.mjs.map +1 -1
- package/dist/motion/three.js +5 -5
- package/dist/motion/three.mjs +1 -1
- 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/seo/register-sitemap-cli.js +2 -2
- package/dist/seo/register-sitemap-cli.mjs +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/shared/build-entries.d.ts +1 -0
- package/dist/shared/build-entries.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/sync/index.js +17 -17
- package/dist/sync/index.mjs +4 -4
- package/dist/{web-vitals.attribution-CHXXWO72.mjs → web-vitals.attribution-7LKLZ5GR.mjs} +3 -3
- package/dist/web-vitals.attribution-7LKLZ5GR.mjs.map +1 -0
- package/dist/{web-vitals.attribution-SQVZNHN3.js → web-vitals.attribution-ONVYQNRB.js} +3 -3
- package/dist/web-vitals.attribution-ONVYQNRB.js.map +1 -0
- package/package.json +6 -1
- package/dist/ChatWidget-566CQUN6.js +0 -26
- package/dist/ChatWidget-LNOY4TUZ.mjs +0 -17
- package/dist/EngageWidget-DF47YUHQ.js +0 -21
- package/dist/EngageWidget-IGF7SC3R.mjs +0 -12
- package/dist/ManagedForm-4U54NPW2.js +0 -25
- package/dist/ManagedForm-MOBWSG4D.mjs +0 -16
- package/dist/SitemapSync-74EVNOFQ.mjs +0 -9
- package/dist/SitemapSync-BQFZAE3X.js +0 -18
- package/dist/chunk-5FBALULE.mjs +0 -6
- package/dist/chunk-AEW7EFYU.js.map +0 -1
- package/dist/chunk-MLXUMVBK.mjs.map +0 -1
- package/dist/chunk-OI3FCJSP.js +0 -8
- package/dist/chunk-OZTVJSFX.js.map +0 -1
- package/dist/chunk-PTQHPWEK.mjs.map +0 -1
- package/dist/lib-BD4KKQBI.mjs +0 -4
- package/dist/web-vitals.attribution-CHXXWO72.mjs.map +0 -1
- package/dist/web-vitals.attribution-SQVZNHN3.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkI7AZC5ZQ_js = require('./chunk-I7AZC5ZQ.js');
|
|
4
4
|
var chunkSNAQBZPT_js = require('./chunk-SNAQBZPT.js');
|
|
5
5
|
var tty = require('tty');
|
|
6
6
|
var util = require('util');
|
|
7
7
|
|
|
8
|
-
//
|
|
8
|
+
// node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js
|
|
9
9
|
var require_jsesc = chunkSNAQBZPT_js.__commonJS({
|
|
10
|
-
"
|
|
10
|
+
"node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js"(exports, module) {
|
|
11
11
|
var object = {};
|
|
12
12
|
var hasOwnProperty = object.hasOwnProperty;
|
|
13
13
|
var forOwn = (object2, callback) => {
|
|
@@ -280,7 +280,7 @@ var require_jsesc = chunkSNAQBZPT_js.__commonJS({
|
|
|
280
280
|
}
|
|
281
281
|
});
|
|
282
282
|
|
|
283
|
-
//
|
|
283
|
+
// node_modules/.pnpm/obug@2.1.4/node_modules/obug/dist/core.js
|
|
284
284
|
function coerce(value) {
|
|
285
285
|
if (value instanceof Error) return value.stack || value.message;
|
|
286
286
|
return value;
|
|
@@ -546,7 +546,7 @@ function createDebug2(namespace, options) {
|
|
|
546
546
|
}
|
|
547
547
|
enable(env.DEBUG || "");
|
|
548
548
|
|
|
549
|
-
//
|
|
549
|
+
// node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/lib/common-shared.js
|
|
550
550
|
var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
|
|
551
551
|
function getMarkerLines(loc, source, opts, startLineBaseZero) {
|
|
552
552
|
const startLoc = {
|
|
@@ -661,7 +661,7 @@ ${frame}`;
|
|
|
661
661
|
return defs2.reset(frame);
|
|
662
662
|
}
|
|
663
663
|
|
|
664
|
-
//
|
|
664
|
+
// node_modules/.pnpm/js-tokens@10.0.0/node_modules/js-tokens/index.js
|
|
665
665
|
var HashbangComment;
|
|
666
666
|
var Identifier;
|
|
667
667
|
var JSXIdentifier;
|
|
@@ -1078,7 +1078,7 @@ jsTokens = function* (input, { jsx = false } = {}) {
|
|
|
1078
1078
|
};
|
|
1079
1079
|
var js_tokens_default = jsTokens;
|
|
1080
1080
|
|
|
1081
|
-
//
|
|
1081
|
+
// node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/lib/identifier.js
|
|
1082
1082
|
var bmpIdentifierStart = /[\p{ID_Start}\u088f\u0c5c\u0cdc\ua7ce\ua7cf\ua7d2\ua7d4\ua7f1]/u;
|
|
1083
1083
|
var bmpIdentifier = /[\p{ID_Continue}\u088f\u0c5c\u0cdc\ua7ce\ua7cf\ua7d2\ua7d4\ua7f1\u1acf-\u1add\u1ae0-\u1aeb]/u;
|
|
1084
1084
|
var supplementaryIdentifierStartCodes = [2368, 25, 1388, 2, 3817, 43, 20677, 24, 3, 24, 287, 4, 6146, 7, 1290, 21, 98, 114, 22734, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 53307, 5, 5987, 11, 21763, 4297];
|
|
@@ -1137,7 +1137,7 @@ function isIdentifierName(name) {
|
|
|
1137
1137
|
return !isFirst;
|
|
1138
1138
|
}
|
|
1139
1139
|
|
|
1140
|
-
//
|
|
1140
|
+
// node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/lib/index.js
|
|
1141
1141
|
var reservedWords = {
|
|
1142
1142
|
keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
|
|
1143
1143
|
strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
|
|
@@ -1156,7 +1156,7 @@ function isKeyword(word) {
|
|
|
1156
1156
|
return keywords.has(word);
|
|
1157
1157
|
}
|
|
1158
1158
|
|
|
1159
|
-
//
|
|
1159
|
+
// node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/lib/index.js
|
|
1160
1160
|
function isColorSupported() {
|
|
1161
1161
|
return util.styleText("red", "-") !== "-";
|
|
1162
1162
|
}
|
|
@@ -1301,7 +1301,7 @@ function codeFrameColumns(rawLines, loc, opts = {}) {
|
|
|
1301
1301
|
} : void 0);
|
|
1302
1302
|
}
|
|
1303
1303
|
|
|
1304
|
-
//
|
|
1304
|
+
// node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/lib/index.js
|
|
1305
1305
|
var lib_exports = {};
|
|
1306
1306
|
chunkSNAQBZPT_js.__export(lib_exports, {
|
|
1307
1307
|
ACCESSOR_TYPES: () => ACCESSOR_TYPES,
|
|
@@ -2553,7 +2553,7 @@ chunkSNAQBZPT_js.__export(lib_exports, {
|
|
|
2553
2553
|
yieldExpression: () => yieldExpression
|
|
2554
2554
|
});
|
|
2555
2555
|
|
|
2556
|
-
//
|
|
2556
|
+
// node_modules/.pnpm/@babel+helper-string-parser@8.0.0/node_modules/@babel/helper-string-parser/lib/index.js
|
|
2557
2557
|
var _isDigit = function isDigit(code) {
|
|
2558
2558
|
return code >= 48 && code <= 57;
|
|
2559
2559
|
};
|
|
@@ -2805,7 +2805,7 @@ function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
|
|
|
2805
2805
|
};
|
|
2806
2806
|
}
|
|
2807
2807
|
|
|
2808
|
-
//
|
|
2808
|
+
// node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/lib/index.js
|
|
2809
2809
|
function shallowEqual(actual, expected) {
|
|
2810
2810
|
const keys2 = Object.keys(expected);
|
|
2811
2811
|
for (const key of keys2) {
|
|
@@ -13901,7 +13901,7 @@ var react = {
|
|
|
13901
13901
|
buildChildren
|
|
13902
13902
|
};
|
|
13903
13903
|
|
|
13904
|
-
//
|
|
13904
|
+
// node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-lower.json
|
|
13905
13905
|
var builtin_lower_default = [
|
|
13906
13906
|
"decodeURI",
|
|
13907
13907
|
"decodeURIComponent",
|
|
@@ -13918,7 +13918,7 @@ var builtin_lower_default = [
|
|
|
13918
13918
|
"unescape"
|
|
13919
13919
|
];
|
|
13920
13920
|
|
|
13921
|
-
//
|
|
13921
|
+
// node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-upper.json
|
|
13922
13922
|
var builtin_upper_default = [
|
|
13923
13923
|
"AggregateError",
|
|
13924
13924
|
"Array",
|
|
@@ -13971,7 +13971,7 @@ var builtin_upper_default = [
|
|
|
13971
13971
|
"WeakSet"
|
|
13972
13972
|
];
|
|
13973
13973
|
|
|
13974
|
-
//
|
|
13974
|
+
// node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
|
|
13975
13975
|
var comma = ",".charCodeAt(0);
|
|
13976
13976
|
var semicolon = ";".charCodeAt(0);
|
|
13977
13977
|
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
@@ -14139,7 +14139,7 @@ function encode(decoded) {
|
|
|
14139
14139
|
return writer.flush();
|
|
14140
14140
|
}
|
|
14141
14141
|
|
|
14142
|
-
//
|
|
14142
|
+
// node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
|
|
14143
14143
|
var schemeRegex = /^[\w+.-]+:\/\//;
|
|
14144
14144
|
var urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
|
|
14145
14145
|
var fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
|
|
@@ -14308,7 +14308,7 @@ function resolve(input, base) {
|
|
|
14308
14308
|
}
|
|
14309
14309
|
}
|
|
14310
14310
|
|
|
14311
|
-
//
|
|
14311
|
+
// node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
|
|
14312
14312
|
function stripFilename(path) {
|
|
14313
14313
|
if (!path) return "";
|
|
14314
14314
|
const index3 = path.lastIndexOf("/");
|
|
@@ -14494,7 +14494,7 @@ function traceSegmentInternal(segments, memo, line, column, bias) {
|
|
|
14494
14494
|
return index3;
|
|
14495
14495
|
}
|
|
14496
14496
|
|
|
14497
|
-
//
|
|
14497
|
+
// node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs
|
|
14498
14498
|
var SetArray = class {
|
|
14499
14499
|
constructor() {
|
|
14500
14500
|
this._indexes = { __proto__: null };
|
|
@@ -14692,7 +14692,7 @@ function addMappingInternal(skipable, map, mapping) {
|
|
|
14692
14692
|
);
|
|
14693
14693
|
}
|
|
14694
14694
|
|
|
14695
|
-
//
|
|
14695
|
+
// node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/lib/index.js
|
|
14696
14696
|
var import_jsesc = chunkSNAQBZPT_js.__toESM(require_jsesc(), 1);
|
|
14697
14697
|
var SourceMap = class {
|
|
14698
14698
|
constructor(opts, code) {
|
|
@@ -19350,7 +19350,7 @@ function generate(ast, opts = {}, code) {
|
|
|
19350
19350
|
return printer.generate(ast);
|
|
19351
19351
|
}
|
|
19352
19352
|
|
|
19353
|
-
//
|
|
19353
|
+
// node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/lib/index.js
|
|
19354
19354
|
var {
|
|
19355
19355
|
assertExpressionStatement: assertExpressionStatement2
|
|
19356
19356
|
} = lib_exports;
|
|
@@ -19616,7 +19616,7 @@ function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {
|
|
|
19616
19616
|
plugins
|
|
19617
19617
|
};
|
|
19618
19618
|
try {
|
|
19619
|
-
return
|
|
19619
|
+
return chunkI7AZC5ZQ_js.parse(code, parserOpts);
|
|
19620
19620
|
} catch (err) {
|
|
19621
19621
|
const loc = err.loc;
|
|
19622
19622
|
if (loc) {
|
|
@@ -19890,7 +19890,7 @@ var index2 = Object.assign(smart.bind(void 0), {
|
|
|
19890
19890
|
ast: smart.ast
|
|
19891
19891
|
});
|
|
19892
19892
|
|
|
19893
|
-
//
|
|
19893
|
+
// node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/lib/index.js
|
|
19894
19894
|
var ReferencedIdentifier = ["Identifier", "JSXIdentifier"];
|
|
19895
19895
|
var ReferencedMemberExpression = ["MemberExpression"];
|
|
19896
19896
|
var BindingIdentifier = ["Identifier"];
|
|
@@ -22547,7 +22547,7 @@ function replaceWithSourceString(replacement) {
|
|
|
22547
22547
|
let ast;
|
|
22548
22548
|
try {
|
|
22549
22549
|
replacement = `(${replacement})`;
|
|
22550
|
-
ast =
|
|
22550
|
+
ast = chunkI7AZC5ZQ_js.parse(replacement);
|
|
22551
22551
|
} catch (err) {
|
|
22552
22552
|
const loc = err.loc;
|
|
22553
22553
|
if (loc) {
|
|
@@ -24857,4 +24857,4 @@ exports.isTemplateLiteral = isTemplateLiteral;
|
|
|
24857
24857
|
exports.isVariableDeclarator = isVariableDeclarator;
|
|
24858
24858
|
exports.traverse = traverse3;
|
|
24859
24859
|
exports.visitors = visitors;
|
|
24860
|
-
//# sourceMappingURL=chunk-
|
|
24860
|
+
//# sourceMappingURL=chunk-JS75ORH7.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { locToPath, isMalformedSitemapPath, inferPageType } from './chunk-C2CTLLIO.mjs';
|
|
3
3
|
import { resolveAnalyticsTarget } from './chunk-A6UYV475.mjs';
|
|
4
|
-
import { sonorFetch } from './chunk-
|
|
4
|
+
import { sonorFetch } from './chunk-RSP6RDR2.mjs';
|
|
5
5
|
import { useRef, useEffect } from 'react';
|
|
6
6
|
|
|
7
7
|
var SYNC_STAMP_KEY = "_sk_sitemap_synced_at";
|
|
@@ -189,5 +189,5 @@ function SitemapSync({
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
export { SitemapSync };
|
|
192
|
-
//# sourceMappingURL=chunk-
|
|
193
|
-
//# sourceMappingURL=chunk-
|
|
192
|
+
//# sourceMappingURL=chunk-KLKUI3US.mjs.map
|
|
193
|
+
//# sourceMappingURL=chunk-KLKUI3US.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/SitemapSync.tsx"],"names":[],"mappings":"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","file":"chunk-3MLVI5DH.mjs","sourcesContent":["/**\n * SitemapSync - Automatically sync sitemap.xml to Portal API\n *\n * Client-only component. Lives at package root so the main entry does not\n * pull in seo/ (and server-only code). For use in SiteKitLayout and\n * from @sonordev/site-kit/seo.\n *\n * @example\n * ```tsx\n * import { SitemapSync } from '@sonordev/site-kit'\n * // or\n * import { SitemapSync } from '@sonordev/site-kit/seo'\n * ```\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { sonorFetch } from './shared/sonorFetch'\nimport { resolveAnalyticsTarget, type AnalyticsGateOptions } from './shared/reporting-gate'\n// Single source of truth for page-type inference + path normalization, shared\n// with createSitemap (build) and the register-sitemap CLI. Pure string logic,\n// safe in the browser.\nimport { inferPageType, locToPath, isMalformedSitemapPath } from './sitemap/shared'\n\ninterface SitemapSyncProps extends AnalyticsGateOptions {\n /** Custom sitemap URL (defaults to /sitemap.xml) */\n sitemapUrl?: string\n /** How often to re-sync in minutes (0 = only on mount, default: 60) */\n syncInterval?: number\n /** Enable debug logging */\n debug?: boolean\n /**\n * Sync mode:\n * - 'additive' (default for runtime): adds/updates pages but never deletes existing ones\n * - 'full-replace': replaces the entire page set (use only for build-time sync via createSitemap)\n */\n mode?: 'additive' | 'full-replace'\n}\n\ninterface SitemapEntry {\n path: string\n lastmod?: string\n changefreq?: string\n priority?: number\n pageType?: string\n}\n\n/**\n * Per-browser-session sync throttle. Build-time sync (createSitemap) is the\n * canonical source of truth; runtime SitemapSync is only a safety net — so\n * re-registering the sitemap on every full page load of every visitor is pure\n * waste (fetch + DOMParser on the visitor's main thread, plus a write per\n * pageview against the API). Stamp the last successful sync in sessionStorage\n * and skip while inside the throttle window.\n */\nconst SYNC_STAMP_KEY = '_sk_sitemap_synced_at'\nconst SYNC_HASH_KEY = '_sk_sitemap_hash'\n\nfunction isRecentlySynced(throttleMinutes: number): boolean {\n try {\n const stamp = sessionStorage.getItem(SYNC_STAMP_KEY)\n if (!stamp) return false\n const elapsed = Date.now() - parseInt(stamp, 10)\n return elapsed >= 0 && elapsed < throttleMinutes * 60 * 1000\n } catch {\n return false // storage unavailable (private mode) — sync as before\n }\n}\n\nfunction stampSynced(): void {\n try {\n sessionStorage.setItem(SYNC_STAMP_KEY, Date.now().toString())\n } catch {\n /* storage unavailable — throttle simply won't apply */\n }\n}\n\n/**\n * Content-hash guard (localStorage, so it survives across sessions): the\n * sitemap of a static site only changes at deploy, so once ONE sync of a given\n * sitemap succeeded from this browser, re-POSTing the identical entry set is\n * pure API load. Hash the parsed entries; skip the POST when unchanged.\n * Keyed by sitemap URL so multiple SitemapSync instances don't collide.\n */\nfunction hashEntries(sitemapUrl: string, entries: SitemapEntry[]): string {\n const text = entries\n .map(e => `${e.path}|${e.lastmod ?? ''}|${e.changefreq ?? ''}|${e.priority ?? ''}`)\n .join('\\n')\n let hash = 0\n for (let i = 0; i < text.length; i++) {\n hash = ((hash << 5) - hash + text.charCodeAt(i)) | 0\n }\n return `${sitemapUrl}:${entries.length}:${hash.toString(16)}`\n}\n\nfunction isAlreadySyncedHash(hash: string): boolean {\n try {\n return localStorage.getItem(SYNC_HASH_KEY) === hash\n } catch {\n return false\n }\n}\n\nfunction storeSyncedHash(hash: string): void {\n try {\n localStorage.setItem(SYNC_HASH_KEY, hash)\n } catch {\n /* storage unavailable — guard simply won't apply */\n }\n}\n\nasync function parseSitemap(sitemapUrl: string, debug: boolean): Promise<SitemapEntry[]> {\n try {\n const response = await sonorFetch(sitemapUrl)\n if (!response.ok) {\n if (debug) console.warn('[SitemapSync] Failed to fetch sitemap:', response.status)\n return []\n }\n\n const text = await response.text()\n const parser = new DOMParser()\n const doc = parser.parseFromString(text, 'application/xml')\n\n const parseError = doc.querySelector('parsererror')\n if (parseError) {\n if (debug) console.warn('[SitemapSync] Sitemap parse error:', parseError.textContent)\n return []\n }\n\n const urls = doc.querySelectorAll('url')\n const entries: SitemapEntry[] = []\n\n urls.forEach(url => {\n const loc = url.querySelector('loc')?.textContent?.trim()\n if (!loc) return\n\n const path = locToPath(loc)\n\n // Reject malformed paths (embedded domains, double protocols, etc.)\n if (isMalformedSitemapPath(path)) {\n if (debug) console.warn(`[SitemapSync] Skipping malformed path: ${path}`)\n return\n }\n\n const lastmod = url.querySelector('lastmod')?.textContent || undefined\n const changefreq = url.querySelector('changefreq')?.textContent || undefined\n const priorityStr = url.querySelector('priority')?.textContent\n const priority = priorityStr ? parseFloat(priorityStr) : undefined\n\n entries.push({ path, lastmod, changefreq, priority })\n })\n\n if (debug) {\n console.log(`[SitemapSync] Parsed ${entries.length} entries from sitemap`)\n }\n\n return entries\n } catch (error) {\n if (debug) console.error('[SitemapSync] Error parsing sitemap:', error)\n return []\n }\n}\n\nasync function syncToPortal(\n entries: SitemapEntry[],\n apiUrl: string,\n apiKey: string,\n site: string,\n debug: boolean,\n mode: 'additive' | 'full-replace' = 'additive',\n gate: AnalyticsGateOptions = {},\n): Promise<{ success: boolean; created: number; updated: number }> {\n if (!apiKey) {\n if (debug) console.warn('[SitemapSync] No API key configured')\n return { success: false, created: 0, updated: 0 }\n }\n\n if (entries.length === 0) {\n if (debug) console.log('[SitemapSync] No entries to sync')\n return { success: true, created: 0, updated: 0 }\n }\n\n try {\n // Registration is idempotent in both modes (same payload → same final\n // state), so retrying a timed-out attempt is safe.\n const target = resolveAnalyticsTarget({ ...gate, apiUrl, apiKey })\n if (!target) return { success: false, created: 0, updated: 0 }\n const response = await sonorFetch(`${target.apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n entries: entries.map(e => ({\n path: e.path,\n priority: e.priority,\n changefreq: e.changefreq,\n pageType: inferPageType(e.path),\n })),\n mode,\n // Sub-site host — tagged on every seo_pages row so the dashboard\n // can scope the page tree to one microsite. Resolved by\n // SiteKitClientProviders (see __SITE_KIT_SITE__).\n ...(site ? { site } : {}),\n }),\n }, { apiKey: target.apiKey, retries: 2 })\n\n if (!response?.ok) {\n if (debug) console.error('[SitemapSync] API error:', response?.status, response?.statusText)\n return { success: false, created: 0, updated: 0 }\n }\n\n const result = await response.json()\n\n if (debug) {\n console.log(`[SitemapSync] Synced: ${result.created} created, ${result.updated} updated`)\n }\n\n return {\n success: true,\n created: result.created || 0,\n updated: result.updated || 0,\n }\n } catch (error) {\n if (debug) console.error('[SitemapSync] Sync error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport function SitemapSync({\n sitemapUrl = '/sitemap.xml',\n syncInterval = 60,\n debug = false,\n mode = 'additive',\n apiUrl: propApiUrl,\n apiKey: propApiKey,\n allowInFrame = false,\n allowLocalhost = false,\n}: SitemapSyncProps) {\n const hasSyncedRef = useRef(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n useEffect(() => {\n // Build-time sync via createSitemap is the canonical source of truth, but\n // it can fail during ISR revalidation (app/ dir unavailable on serverless).\n // Runtime SitemapSync in additive mode is a safe fallback — it adds/updates\n // pages that may be missing without ever deleting existing ones.\n // Full-replace is never safe at runtime — always force additive.\n const effectiveMode: 'additive' | 'full-replace' = 'additive'\n\n // Throttle window: reuse syncInterval when periodic syncing is on,\n // otherwise default to 60 minutes for the on-mount sync.\n const throttleMinutes = syncInterval > 0 ? syncInterval : 60\n\n const doSync = async () => {\n const gate = { apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug }\n const target = resolveAnalyticsTarget(gate)\n if (!target) return\n const { apiUrl, apiKey } = target\n const site = (window as any).__SITE_KIT_SITE__ || window.location.host || ''\n\n if (isRecentlySynced(throttleMinutes)) {\n if (debug) console.log('[SitemapSync] Skipped — synced within the last', throttleMinutes, 'min this session')\n return\n }\n\n if (debug) console.log('[SitemapSync] Starting sitemap sync...', site ? `(site: ${site})` : '')\n\n const entries = await parseSitemap(sitemapUrl, debug)\n\n if (entries.length > 0) {\n const hash = hashEntries(sitemapUrl, entries)\n if (isAlreadySyncedHash(hash)) {\n // This exact sitemap already synced from this browser — the server\n // state can't be improved by re-POSTing it. Stamp the session so we\n // don't even re-fetch/parse for the rest of the throttle window.\n stampSynced()\n if (debug) console.log('[SitemapSync] Skipped POST — sitemap unchanged since last successful sync')\n return\n }\n const result = await syncToPortal(entries, apiUrl, apiKey, site, debug, effectiveMode, gate)\n if (result.success) {\n stampSynced()\n storeSyncedHash(hash)\n }\n }\n }\n\n if (!resolveAnalyticsTarget({ apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug })) return\n\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true\n doSync()\n }\n\n if (syncInterval > 0) {\n intervalRef.current = setInterval(doSync, syncInterval * 60 * 1000)\n }\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n }\n }\n }, [sitemapUrl, syncInterval, debug, mode, propApiUrl, propApiKey, allowInFrame, allowLocalhost])\n\n return null\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/SitemapSync.tsx"],"names":[],"mappings":"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","file":"chunk-KLKUI3US.mjs","sourcesContent":["/**\n * SitemapSync - Automatically sync sitemap.xml to Portal API\n *\n * Client-only component. Lives at package root so the main entry does not\n * pull in seo/ (and server-only code). For use in SiteKitLayout and\n * from @sonordev/site-kit/seo.\n *\n * @example\n * ```tsx\n * import { SitemapSync } from '@sonordev/site-kit'\n * // or\n * import { SitemapSync } from '@sonordev/site-kit/seo'\n * ```\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { sonorFetch } from './shared/sonorFetch'\nimport { resolveAnalyticsTarget, type AnalyticsGateOptions } from './shared/reporting-gate'\n// Single source of truth for page-type inference + path normalization, shared\n// with createSitemap (build) and the register-sitemap CLI. Pure string logic,\n// safe in the browser.\nimport { inferPageType, locToPath, isMalformedSitemapPath } from './sitemap/shared'\n\ninterface SitemapSyncProps extends AnalyticsGateOptions {\n /** Custom sitemap URL (defaults to /sitemap.xml) */\n sitemapUrl?: string\n /** How often to re-sync in minutes (0 = only on mount, default: 60) */\n syncInterval?: number\n /** Enable debug logging */\n debug?: boolean\n /**\n * Sync mode:\n * - 'additive' (default for runtime): adds/updates pages but never deletes existing ones\n * - 'full-replace': replaces the entire page set (use only for build-time sync via createSitemap)\n */\n mode?: 'additive' | 'full-replace'\n}\n\ninterface SitemapEntry {\n path: string\n lastmod?: string\n changefreq?: string\n priority?: number\n pageType?: string\n}\n\n/**\n * Per-browser-session sync throttle. Build-time sync (createSitemap) is the\n * canonical source of truth; runtime SitemapSync is only a safety net — so\n * re-registering the sitemap on every full page load of every visitor is pure\n * waste (fetch + DOMParser on the visitor's main thread, plus a write per\n * pageview against the API). Stamp the last successful sync in sessionStorage\n * and skip while inside the throttle window.\n */\nconst SYNC_STAMP_KEY = '_sk_sitemap_synced_at'\nconst SYNC_HASH_KEY = '_sk_sitemap_hash'\n\nfunction isRecentlySynced(throttleMinutes: number): boolean {\n try {\n const stamp = sessionStorage.getItem(SYNC_STAMP_KEY)\n if (!stamp) return false\n const elapsed = Date.now() - parseInt(stamp, 10)\n return elapsed >= 0 && elapsed < throttleMinutes * 60 * 1000\n } catch {\n return false // storage unavailable (private mode) — sync as before\n }\n}\n\nfunction stampSynced(): void {\n try {\n sessionStorage.setItem(SYNC_STAMP_KEY, Date.now().toString())\n } catch {\n /* storage unavailable — throttle simply won't apply */\n }\n}\n\n/**\n * Content-hash guard (localStorage, so it survives across sessions): the\n * sitemap of a static site only changes at deploy, so once ONE sync of a given\n * sitemap succeeded from this browser, re-POSTing the identical entry set is\n * pure API load. Hash the parsed entries; skip the POST when unchanged.\n * Keyed by sitemap URL so multiple SitemapSync instances don't collide.\n */\nfunction hashEntries(sitemapUrl: string, entries: SitemapEntry[]): string {\n const text = entries\n .map(e => `${e.path}|${e.lastmod ?? ''}|${e.changefreq ?? ''}|${e.priority ?? ''}`)\n .join('\\n')\n let hash = 0\n for (let i = 0; i < text.length; i++) {\n hash = ((hash << 5) - hash + text.charCodeAt(i)) | 0\n }\n return `${sitemapUrl}:${entries.length}:${hash.toString(16)}`\n}\n\nfunction isAlreadySyncedHash(hash: string): boolean {\n try {\n return localStorage.getItem(SYNC_HASH_KEY) === hash\n } catch {\n return false\n }\n}\n\nfunction storeSyncedHash(hash: string): void {\n try {\n localStorage.setItem(SYNC_HASH_KEY, hash)\n } catch {\n /* storage unavailable — guard simply won't apply */\n }\n}\n\nasync function parseSitemap(sitemapUrl: string, debug: boolean): Promise<SitemapEntry[]> {\n try {\n const response = await sonorFetch(sitemapUrl)\n if (!response.ok) {\n if (debug) console.warn('[SitemapSync] Failed to fetch sitemap:', response.status)\n return []\n }\n\n const text = await response.text()\n const parser = new DOMParser()\n const doc = parser.parseFromString(text, 'application/xml')\n\n const parseError = doc.querySelector('parsererror')\n if (parseError) {\n if (debug) console.warn('[SitemapSync] Sitemap parse error:', parseError.textContent)\n return []\n }\n\n const urls = doc.querySelectorAll('url')\n const entries: SitemapEntry[] = []\n\n urls.forEach(url => {\n const loc = url.querySelector('loc')?.textContent?.trim()\n if (!loc) return\n\n const path = locToPath(loc)\n\n // Reject malformed paths (embedded domains, double protocols, etc.)\n if (isMalformedSitemapPath(path)) {\n if (debug) console.warn(`[SitemapSync] Skipping malformed path: ${path}`)\n return\n }\n\n const lastmod = url.querySelector('lastmod')?.textContent || undefined\n const changefreq = url.querySelector('changefreq')?.textContent || undefined\n const priorityStr = url.querySelector('priority')?.textContent\n const priority = priorityStr ? parseFloat(priorityStr) : undefined\n\n entries.push({ path, lastmod, changefreq, priority })\n })\n\n if (debug) {\n console.log(`[SitemapSync] Parsed ${entries.length} entries from sitemap`)\n }\n\n return entries\n } catch (error) {\n if (debug) console.error('[SitemapSync] Error parsing sitemap:', error)\n return []\n }\n}\n\nasync function syncToPortal(\n entries: SitemapEntry[],\n apiUrl: string,\n apiKey: string,\n site: string,\n debug: boolean,\n mode: 'additive' | 'full-replace' = 'additive',\n gate: AnalyticsGateOptions = {},\n): Promise<{ success: boolean; created: number; updated: number }> {\n if (!apiKey) {\n if (debug) console.warn('[SitemapSync] No API key configured')\n return { success: false, created: 0, updated: 0 }\n }\n\n if (entries.length === 0) {\n if (debug) console.log('[SitemapSync] No entries to sync')\n return { success: true, created: 0, updated: 0 }\n }\n\n try {\n // Registration is idempotent in both modes (same payload → same final\n // state), so retrying a timed-out attempt is safe.\n const target = resolveAnalyticsTarget({ ...gate, apiUrl, apiKey })\n if (!target) return { success: false, created: 0, updated: 0 }\n const response = await sonorFetch(`${target.apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n entries: entries.map(e => ({\n path: e.path,\n priority: e.priority,\n changefreq: e.changefreq,\n pageType: inferPageType(e.path),\n })),\n mode,\n // Sub-site host — tagged on every seo_pages row so the dashboard\n // can scope the page tree to one microsite. Resolved by\n // SiteKitClientProviders (see __SITE_KIT_SITE__).\n ...(site ? { site } : {}),\n }),\n }, { apiKey: target.apiKey, retries: 2 })\n\n if (!response?.ok) {\n if (debug) console.error('[SitemapSync] API error:', response?.status, response?.statusText)\n return { success: false, created: 0, updated: 0 }\n }\n\n const result = await response.json()\n\n if (debug) {\n console.log(`[SitemapSync] Synced: ${result.created} created, ${result.updated} updated`)\n }\n\n return {\n success: true,\n created: result.created || 0,\n updated: result.updated || 0,\n }\n } catch (error) {\n if (debug) console.error('[SitemapSync] Sync error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport function SitemapSync({\n sitemapUrl = '/sitemap.xml',\n syncInterval = 60,\n debug = false,\n mode = 'additive',\n apiUrl: propApiUrl,\n apiKey: propApiKey,\n allowInFrame = false,\n allowLocalhost = false,\n}: SitemapSyncProps) {\n const hasSyncedRef = useRef(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n useEffect(() => {\n // Build-time sync via createSitemap is the canonical source of truth, but\n // it can fail during ISR revalidation (app/ dir unavailable on serverless).\n // Runtime SitemapSync in additive mode is a safe fallback — it adds/updates\n // pages that may be missing without ever deleting existing ones.\n // Full-replace is never safe at runtime — always force additive.\n const effectiveMode: 'additive' | 'full-replace' = 'additive'\n\n // Throttle window: reuse syncInterval when periodic syncing is on,\n // otherwise default to 60 minutes for the on-mount sync.\n const throttleMinutes = syncInterval > 0 ? syncInterval : 60\n\n const doSync = async () => {\n const gate = { apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug }\n const target = resolveAnalyticsTarget(gate)\n if (!target) return\n const { apiUrl, apiKey } = target\n const site = (window as any).__SITE_KIT_SITE__ || window.location.host || ''\n\n if (isRecentlySynced(throttleMinutes)) {\n if (debug) console.log('[SitemapSync] Skipped — synced within the last', throttleMinutes, 'min this session')\n return\n }\n\n if (debug) console.log('[SitemapSync] Starting sitemap sync...', site ? `(site: ${site})` : '')\n\n const entries = await parseSitemap(sitemapUrl, debug)\n\n if (entries.length > 0) {\n const hash = hashEntries(sitemapUrl, entries)\n if (isAlreadySyncedHash(hash)) {\n // This exact sitemap already synced from this browser — the server\n // state can't be improved by re-POSTing it. Stamp the session so we\n // don't even re-fetch/parse for the rest of the throttle window.\n stampSynced()\n if (debug) console.log('[SitemapSync] Skipped POST — sitemap unchanged since last successful sync')\n return\n }\n const result = await syncToPortal(entries, apiUrl, apiKey, site, debug, effectiveMode, gate)\n if (result.success) {\n stampSynced()\n storeSyncedHash(hash)\n }\n }\n }\n\n if (!resolveAnalyticsTarget({ apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug })) return\n\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true\n doSync()\n }\n\n if (syncInterval > 0) {\n intervalRef.current = setInterval(doSync, syncInterval * 60 * 1000)\n }\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n }\n }\n }, [sitemapUrl, syncInterval, debug, mode, propApiUrl, propApiKey, allowInFrame, allowLocalhost])\n\n return null\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkGBOSAWBR_js = require('./chunk-GBOSAWBR.js');
|
|
4
4
|
var chunkXA2GJFVM_js = require('./chunk-XA2GJFVM.js');
|
|
5
|
-
var
|
|
5
|
+
var chunkF4DZDIR4_js = require('./chunk-F4DZDIR4.js');
|
|
6
6
|
var chunkKHPJ3CEL_js = require('./chunk-KHPJ3CEL.js');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@ function visibleStaticFields(config) {
|
|
|
14
14
|
}
|
|
15
15
|
function StaticForm({ config: raw, className, nativeReturnTo }) {
|
|
16
16
|
if (!raw) return null;
|
|
17
|
-
const config =
|
|
17
|
+
const config = chunkF4DZDIR4_js.normalizeFormConfig(raw);
|
|
18
18
|
const fields = visibleStaticFields(config);
|
|
19
19
|
const honeypotFieldName = config.honeypot_field || chunkKHPJ3CEL_js.DEFAULT_HONEYPOT_FIELD;
|
|
20
20
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -23,7 +23,7 @@ function StaticForm({ config: raw, className, nativeReturnTo }) {
|
|
|
23
23
|
"data-sk-state": "idle",
|
|
24
24
|
"data-sk-mount": "shell",
|
|
25
25
|
className: `sk-form ${className || ""}`,
|
|
26
|
-
...
|
|
26
|
+
...chunkGBOSAWBR_js.nativeFormProps(config),
|
|
27
27
|
children: [
|
|
28
28
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-form__step", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-form__fields", children: fields.map((field) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
29
|
"div",
|
|
@@ -34,13 +34,13 @@ function StaticForm({ config: raw, className, nativeReturnTo }) {
|
|
|
34
34
|
field.id || field.slug
|
|
35
35
|
)) }) }),
|
|
36
36
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-form__actions", style: { justifyContent: "flex-end" }, children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "submit", className: "sk-form__btn sk-form__btn--submit", children: config.submit_button_text || "Submit" }) }),
|
|
37
|
-
config.honeypot_enabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
38
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37
|
+
config.honeypot_enabled && /* @__PURE__ */ jsxRuntime.jsx(chunkGBOSAWBR_js.HoneypotField, { name: honeypotFieldName }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkGBOSAWBR_js.NativeFallbackFields, { config, returnTo: nativeReturnTo })
|
|
39
39
|
]
|
|
40
40
|
}
|
|
41
41
|
);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
exports.StaticForm = StaticForm;
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
45
|
+
//# sourceMappingURL=chunk-L6XXUNJB.js.map
|
|
46
|
+
//# sourceMappingURL=chunk-L6XXUNJB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/StaticForm.tsx"],"names":["normalizeFormConfig","DEFAULT_HONEYPOT_FIELD","jsxs","nativeFormProps","jsx","FormField","HoneypotField","NativeFallbackFields"],"mappings":";;;;;;;;AA6DA,SAAS,oBAAoB,MAAA,EAA2B;AACtD,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,IAAU,EAAC;AAC9B,EAAA,IAAI,CAAC,MAAA,CAAO,aAAA,EAAe,OAAO,GAAA;AAGlC,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,EAAG,EAAA;AACvC,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,OAAA,IAAW,CAAA,CAAE,OAAA,KAAY,WAAW,CAAA;AAClE;AAEO,SAAS,WAAW,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAA,EAAW,gBAAe,EAAoB;AACtF,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,MAAM,MAAA,GAASA,qCAAoB,GAAU,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,iBAAA,GAAoB,OAAO,cAAA,IAAkBC,uCAAA;AAEnD,EAAA,uBACEC,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAGC,eAAA,EAAc,MAAA;AAAA,MACd,eAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,CAAA,QAAA,EAAW,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,MACpC,GAAGC,iCAAgB,MAAM,CAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,CAAA;AAAA,YAGlF,yCAACC,0BAAA,EAAA,EAAU,KAAA,EAAc,KAAA,EAAO,KAAA,CAAM,iBAAiB,EAAA,EAAI;AAAA,WAAA;AAAA,UAJtD,KAAA,CAAM,MAAM,KAAA,CAAM;AAAA,SAM1B,GACH,CAAA,EACF,CAAA;AAAA,uCAEC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAmB,KAAA,EAAO,EAAE,gBAAgB,UAAA,EAAW,EACpE,QAAA,kBAAAD,cAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAU,qCAC7B,QAAA,EAAA,MAAA,CAAO,kBAAA,IAAsB,UAChC,CAAA,EACF,CAAA;AAAA,QAIC,MAAA,CAAO,gBAAA,oBAAoBA,cAAA,CAACE,8BAAA,EAAA,EAAc,MAAM,iBAAA,EAAmB,CAAA;AAAA,wBAGpEF,cAAA,CAACG,qCAAA,EAAA,EAAqB,MAAA,EAAgB,QAAA,EAAU,cAAA,EAAgB;AAAA;AAAA;AAAA,GAClE;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/forms/StaticForm.tsx"],"names":["normalizeFormConfig","DEFAULT_HONEYPOT_FIELD","jsxs","nativeFormProps","jsx","FormField","HoneypotField","NativeFallbackFields"],"mappings":";;;;;;;;AA6DA,SAAS,oBAAoB,MAAA,EAA2B;AACtD,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,IAAU,EAAC;AAC9B,EAAA,IAAI,CAAC,MAAA,CAAO,aAAA,EAAe,OAAO,GAAA;AAGlC,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,EAAG,EAAA;AACvC,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,OAAA,IAAW,CAAA,CAAE,OAAA,KAAY,WAAW,CAAA;AAClE;AAEO,SAAS,WAAW,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAA,EAAW,gBAAe,EAAoB;AACtF,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,MAAM,MAAA,GAASA,qCAAoB,GAAU,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,iBAAA,GAAoB,OAAO,cAAA,IAAkBC,uCAAA;AAEnD,EAAA,uBACEC,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAGC,eAAA,EAAc,MAAA;AAAA,MACd,eAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,CAAA,QAAA,EAAW,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,MACpC,GAAGC,iCAAgB,MAAM,CAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,CAAA;AAAA,YAGlF,yCAACC,0BAAA,EAAA,EAAU,KAAA,EAAc,KAAA,EAAO,KAAA,CAAM,iBAAiB,EAAA,EAAI;AAAA,WAAA;AAAA,UAJtD,KAAA,CAAM,MAAM,KAAA,CAAM;AAAA,SAM1B,GACH,CAAA,EACF,CAAA;AAAA,uCAEC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAmB,KAAA,EAAO,EAAE,gBAAgB,UAAA,EAAW,EACpE,QAAA,kBAAAD,cAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAU,qCAC7B,QAAA,EAAA,MAAA,CAAO,kBAAA,IAAsB,UAChC,CAAA,EACF,CAAA;AAAA,QAIC,MAAA,CAAO,gBAAA,oBAAoBA,cAAA,CAACE,8BAAA,EAAA,EAAc,MAAM,iBAAA,EAAmB,CAAA;AAAA,wBAGpEF,cAAA,CAACG,qCAAA,EAAA,EAAqB,MAAA,EAAgB,QAAA,EAAU,cAAA,EAAgB;AAAA;AAAA;AAAA,GAClE;AAEJ","file":"chunk-L6XXUNJB.js","sourcesContent":["/**\n * StaticForm — a complete, submittable managed form with ZERO client JavaScript.\n *\n * No `'use client'`. This renders in a Server Component, and what it emits is\n * a real `<form>`: every field, the honeypot, the signed native token, and a\n * submit button. With JavaScript disabled, off, or still downloading, the\n * browser performs an ordinary form-encoded POST to\n * `/api/public/forms/submit-native`, sonor-api runs the honeypot +\n * render-timestamp + quarantine stack, and the lead lands. 4.0.1 built that\n * endpoint; this is what finally puts it under every form by default.\n *\n * ── Why this exists ─────────────────────────────────────────────────────\n *\n * ManagedForm was a client component for historical reasons that no longer\n * hold: it used to fetch its own config (getFormConfig removed that) and it\n * could only submit via JSON (the native endpoint removed that). Nobody moved\n * the boundary afterward, so every site that rendered a form paid for the\n * whole forms runtime — validation, spotlight, celebration, momentum — as an\n * INITIAL script, on the LCP-critical path.\n *\n * Measured on upforge.io's homepage: 48 KB of form code in the initial chunk\n * set cost 6 Lighthouse points (88 -> 82, LCP 3.8s -> 4.7s). Deferring the\n * client component recovered the score but deleted the form from the HTML,\n * taking the no-JS floor and crawlable fields with it. Neither half was\n * acceptable; a server-rendered form is what makes both true at once.\n *\n * Pair it with <FormEnhancer> to upgrade this markup at idle. Alone, it is\n * still a working form — that is the point. Never make this file `'use\n * client'`, and never import a hook into it.\n */\n\nimport React from 'react'\nimport { DEFAULT_HONEYPOT_FIELD } from './contract'\nimport { FormField } from './FormField'\nimport { HoneypotField } from './HoneypotField'\nimport { nativeFormProps, NativeFallbackFields } from './native-fallback'\nimport { normalizeFormConfig } from './normalize-config'\nimport type { ManagedFormConfig } from './types'\n\nexport interface StaticFormProps {\n /**\n * RAW /api/public/forms/config payload from `getFormConfig`, or an\n * already-normalized config. Normalized here through the SAME function the\n * client fetch uses, so the shell and the enhancement cannot disagree about\n * field order, step count, or success copy.\n */\n config: Record<string, unknown> | ManagedFormConfig | null | undefined\n className?: string\n /**\n * Absolute URL the no-JS 303 should return to (usually the page hosting the\n * form). Without it the API falls back to the Referer origin — right site,\n * wrong page.\n */\n nativeReturnTo?: string\n}\n\n/**\n * Fields the static shell can render meaningfully. Conditional logic is a\n * runtime concern (it depends on values the visitor has not entered yet), so\n * a conditional field renders here and the enhancement takes over hiding it.\n */\nfunction visibleStaticFields(config: ManagedFormConfig) {\n const all = config.fields || []\n if (!config.is_multi_step) return all\n // Multi-step is JS-only navigation and is excluded from native POST, so the\n // shell shows step one as a preview of what the form asks for.\n const firstStepId = config.steps?.[0]?.id\n return all.filter((f) => !f.step_id || f.step_id === firstStepId)\n}\n\nexport function StaticForm({ config: raw, className, nativeReturnTo }: StaticFormProps) {\n if (!raw) return null\n const config = normalizeFormConfig(raw as any)\n const fields = visibleStaticFields(config)\n const honeypotFieldName = config.honeypot_field || DEFAULT_HONEYPOT_FIELD\n\n return (\n <form\n // Matches FormClient's classic branch attribute-for-attribute so the\n // enhancement swap is invisible. Change one, change the other.\n data-sk-state=\"idle\"\n data-sk-mount=\"shell\"\n className={`sk-form ${className || ''}`}\n {...nativeFormProps(config)}\n >\n <div className=\"sk-form__step\">\n <div className=\"sk-form__fields\">\n {fields.map((field) => (\n <div\n key={field.id || field.slug}\n className={`sk-form__field-wrapper sk-form__field-wrapper--${field.width || 'full'}`}\n >\n {/* No onChange — FormField renders native uncontrolled controls. */}\n <FormField field={field} value={field.default_value ?? ''} />\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"sk-form__actions\" style={{ justifyContent: 'flex-end' }}>\n <button type=\"submit\" className=\"sk-form__btn sk-form__btn--submit\">\n {config.submit_button_text || 'Submit'}\n </button>\n </div>\n\n {/* Same trap the hydrated form uses; no state needed because the value\n is read and stripped server-side. */}\n {config.honeypot_enabled && <HoneypotField name={honeypotFieldName} />}\n\n {/* _sk_token auth + _sk_return destination for the native POST. */}\n <NativeFallbackFields config={config} returnTo={nativeReturnTo} />\n </form>\n )\n}\n"]}
|