@sonordev/site-kit 4.2.3 → 4.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.
Files changed (241) hide show
  1. package/agent-manifest.json +11 -1
  2. package/dist/AnalyticsProvider-WRAJE62B.js +31 -0
  3. package/dist/{AnalyticsProvider-VSTTYP4W.js.map → AnalyticsProvider-WRAJE62B.js.map} +1 -1
  4. package/dist/AnalyticsProvider-YZAOPVAY.mjs +10 -0
  5. package/dist/{AnalyticsProvider-NW3UZYL5.mjs.map → AnalyticsProvider-YZAOPVAY.mjs.map} +1 -1
  6. package/dist/ChatWidget-NMZGPP7A.js +20 -0
  7. package/dist/{ChatWidget-BJOE2OSI.js.map → ChatWidget-NMZGPP7A.js.map} +1 -1
  8. package/dist/ChatWidget-ZI34F7JU.mjs +11 -0
  9. package/dist/{ChatWidget-EWQ7LRD4.mjs.map → ChatWidget-ZI34F7JU.mjs.map} +1 -1
  10. package/dist/EngageWidget-2U4EN7OP.js +18 -0
  11. package/dist/{EngageWidget-CZMNLFWI.js.map → EngageWidget-2U4EN7OP.js.map} +1 -1
  12. package/dist/EngageWidget-NI2BN6GO.mjs +9 -0
  13. package/dist/{EngageWidget-F427CI6Y.mjs.map → EngageWidget-NI2BN6GO.mjs.map} +1 -1
  14. package/dist/{FileField-5RVBU3Z4.mjs → FileField-I4UICUJF.mjs} +5 -5
  15. package/dist/{FileField-5RVBU3Z4.mjs.map → FileField-I4UICUJF.mjs.map} +1 -1
  16. package/dist/{FileField-Y4ZA7DST.js → FileField-UI6DAB3K.js} +6 -6
  17. package/dist/{FileField-Y4ZA7DST.js.map → FileField-UI6DAB3K.js.map} +1 -1
  18. package/dist/{FormSpotlight-MAEV6SZK.js → FormSpotlight-LO4BU6FY.js} +15 -15
  19. package/dist/{FormSpotlight-MAEV6SZK.js.map → FormSpotlight-LO4BU6FY.js.map} +1 -1
  20. package/dist/{FormSpotlight-CJPI2MRJ.mjs → FormSpotlight-RGFZMYPT.mjs} +3 -3
  21. package/dist/{FormSpotlight-CJPI2MRJ.mjs.map → FormSpotlight-RGFZMYPT.mjs.map} +1 -1
  22. package/dist/{FormStage-D42NAHSN.js → FormStage-NT5ZAH5Y.js} +13 -13
  23. package/dist/{FormStage-D42NAHSN.js.map → FormStage-NT5ZAH5Y.js.map} +1 -1
  24. package/dist/{FormStage-Z7WW3DNA.mjs → FormStage-RBXMNWM3.mjs} +3 -3
  25. package/dist/{FormStage-Z7WW3DNA.mjs.map → FormStage-RBXMNWM3.mjs.map} +1 -1
  26. package/dist/ManagedForm-CJOFGQK6.mjs +14 -0
  27. package/dist/{ManagedForm-A7BROQIN.mjs.map → ManagedForm-CJOFGQK6.mjs.map} +1 -1
  28. package/dist/ManagedForm-MKV5RM54.js +23 -0
  29. package/dist/{ManagedForm-Z3Z5Z6OL.js.map → ManagedForm-MKV5RM54.js.map} +1 -1
  30. package/dist/{SignalCore-77UH6PZ4.mjs → SignalCore-B2ZSLEXI.mjs} +5 -5
  31. package/dist/{SignalCore-77UH6PZ4.mjs.map → SignalCore-B2ZSLEXI.mjs.map} +1 -1
  32. package/dist/{SignalCore-NA6TJFVE.js → SignalCore-IX4L2TYS.js} +11 -11
  33. package/dist/{SignalCore-NA6TJFVE.js.map → SignalCore-IX4L2TYS.js.map} +1 -1
  34. package/dist/SitemapSync-2LLNO24P.mjs +8 -0
  35. package/dist/{SitemapSync-EY33A6P4.mjs.map → SitemapSync-2LLNO24P.mjs.map} +1 -1
  36. package/dist/SitemapSync-B2CY2JYM.js +17 -0
  37. package/dist/{SitemapSync-62F6HVAW.js.map → SitemapSync-B2CY2JYM.js.map} +1 -1
  38. package/dist/analytics/index.js +9 -9
  39. package/dist/analytics/index.mjs +4 -4
  40. package/dist/{chunk-NEIUWAAL.js → chunk-2EA4DC2G.js} +5 -5
  41. package/dist/{chunk-NEIUWAAL.js.map → chunk-2EA4DC2G.js.map} +1 -1
  42. package/dist/chunk-2X5ZB5D7.mjs +6 -0
  43. package/dist/{chunk-XCFCG46K.mjs.map → chunk-2X5ZB5D7.mjs.map} +1 -1
  44. package/dist/{chunk-RDISSFEH.js → chunk-3AAFSXFC.js} +15 -15
  45. package/dist/{chunk-RDISSFEH.js.map → chunk-3AAFSXFC.js.map} +1 -1
  46. package/dist/{chunk-KL4MV6HK.mjs → chunk-3DFYFDGC.mjs} +3 -3
  47. package/dist/{chunk-KL4MV6HK.mjs.map → chunk-3DFYFDGC.mjs.map} +1 -1
  48. package/dist/{chunk-HVDKAR77.js → chunk-3KVG2PSJ.js} +7 -7
  49. package/dist/{chunk-HVDKAR77.js.map → chunk-3KVG2PSJ.js.map} +1 -1
  50. package/dist/{chunk-FZAAQE4Y.mjs → chunk-3ZD2XCLE.mjs} +4 -4
  51. package/dist/{chunk-FZAAQE4Y.mjs.map → chunk-3ZD2XCLE.mjs.map} +1 -1
  52. package/dist/{chunk-RRR6Y6Y5.mjs → chunk-5PBJ42NC.mjs} +4 -4
  53. package/dist/{chunk-RRR6Y6Y5.mjs.map → chunk-5PBJ42NC.mjs.map} +1 -1
  54. package/dist/{chunk-3P4HJAZA.mjs → chunk-5S735BSH.mjs} +4 -4
  55. package/dist/{chunk-3P4HJAZA.mjs.map → chunk-5S735BSH.mjs.map} +1 -1
  56. package/dist/{chunk-535HXGDU.mjs → chunk-6SN3ABID.mjs} +3 -3
  57. package/dist/{chunk-535HXGDU.mjs.map → chunk-6SN3ABID.mjs.map} +1 -1
  58. package/dist/{chunk-OHA43BNK.js → chunk-7X4LKAYJ.js} +14 -14
  59. package/dist/{chunk-OHA43BNK.js.map → chunk-7X4LKAYJ.js.map} +1 -1
  60. package/dist/{chunk-RCRDDMUO.mjs → chunk-ACL5FDJI.mjs} +3 -3
  61. package/dist/{chunk-RCRDDMUO.mjs.map → chunk-ACL5FDJI.mjs.map} +1 -1
  62. package/dist/{chunk-SL6ZGJVN.mjs → chunk-ANJBOE46.mjs} +4 -4
  63. package/dist/{chunk-SL6ZGJVN.mjs.map → chunk-ANJBOE46.mjs.map} +1 -1
  64. package/dist/{chunk-BN4AL7XB.js → chunk-BGIT5M27.js} +4 -4
  65. package/dist/{chunk-BN4AL7XB.js.map → chunk-BGIT5M27.js.map} +1 -1
  66. package/dist/{chunk-TFAYDIWM.mjs → chunk-DYDJ6NCM.mjs} +3 -3
  67. package/dist/{chunk-TFAYDIWM.mjs.map → chunk-DYDJ6NCM.mjs.map} +1 -1
  68. package/dist/{chunk-M2SEYO5J.js → chunk-F3MOVBEE.js} +7 -7
  69. package/dist/{chunk-M2SEYO5J.js.map → chunk-F3MOVBEE.js.map} +1 -1
  70. package/dist/{chunk-XA7RBHKT.js → chunk-FIVPS4Z6.js} +4 -4
  71. package/dist/{chunk-XA7RBHKT.js.map → chunk-FIVPS4Z6.js.map} +1 -1
  72. package/dist/{chunk-TKVADZFD.mjs → chunk-G5EETWKH.mjs} +4 -4
  73. package/dist/{chunk-TKVADZFD.mjs.map → chunk-G5EETWKH.mjs.map} +1 -1
  74. package/dist/{chunk-BX6FFL2Y.js → chunk-HXHDOIV6.js} +5 -5
  75. package/dist/{chunk-BX6FFL2Y.js.map → chunk-HXHDOIV6.js.map} +1 -1
  76. package/dist/{chunk-UDNXM6RB.mjs → chunk-IDSTSLMM.mjs} +3 -3
  77. package/dist/{chunk-UDNXM6RB.mjs.map → chunk-IDSTSLMM.mjs.map} +1 -1
  78. package/dist/{chunk-DZUOLOYS.mjs → chunk-IT76CWZ2.mjs} +3 -3
  79. package/dist/{chunk-DZUOLOYS.mjs.map → chunk-IT76CWZ2.mjs.map} +1 -1
  80. package/dist/{chunk-7BVZLSUJ.js → chunk-IW6S62NR.js} +8 -8
  81. package/dist/{chunk-7BVZLSUJ.js.map → chunk-IW6S62NR.js.map} +1 -1
  82. package/dist/{chunk-EHNUPEFY.mjs → chunk-IWFQPGA2.mjs} +7 -7
  83. package/dist/{chunk-EHNUPEFY.mjs.map → chunk-IWFQPGA2.mjs.map} +1 -1
  84. package/dist/{chunk-S5UATBC7.js → chunk-IWV72YOE.js} +14 -14
  85. package/dist/{chunk-S5UATBC7.js.map → chunk-IWV72YOE.js.map} +1 -1
  86. package/dist/{chunk-WCTOQFAN.js → chunk-IZVV36RT.js} +14 -14
  87. package/dist/{chunk-WCTOQFAN.js.map → chunk-IZVV36RT.js.map} +1 -1
  88. package/dist/{chunk-T3HGONNE.mjs → chunk-JBX6KV46.mjs} +4 -4
  89. package/dist/{chunk-T3HGONNE.mjs.map → chunk-JBX6KV46.mjs.map} +1 -1
  90. package/dist/{chunk-J6HWSJT7.mjs → chunk-JJTCVH4Q.mjs} +3 -3
  91. package/dist/{chunk-J6HWSJT7.mjs.map → chunk-JJTCVH4Q.mjs.map} +1 -1
  92. package/dist/{chunk-GDMOAGVS.js → chunk-K7QBRZLN.js} +18 -18
  93. package/dist/{chunk-GDMOAGVS.js.map → chunk-K7QBRZLN.js.map} +1 -1
  94. package/dist/{chunk-6D3HZKTZ.mjs → chunk-L4FHGCQ2.mjs} +3 -3
  95. package/dist/{chunk-6D3HZKTZ.mjs.map → chunk-L4FHGCQ2.mjs.map} +1 -1
  96. package/dist/{chunk-N5RTJNMN.js → chunk-LTALFZX7.js} +6 -6
  97. package/dist/{chunk-N5RTJNMN.js.map → chunk-LTALFZX7.js.map} +1 -1
  98. package/dist/{chunk-ZASFY4NR.mjs → chunk-LVMPYAOQ.mjs} +4 -4
  99. package/dist/{chunk-ZASFY4NR.mjs.map → chunk-LVMPYAOQ.mjs.map} +1 -1
  100. package/dist/{chunk-XOJYGBYF.js → chunk-NGAKS4WG.js} +3 -3
  101. package/dist/{chunk-XOJYGBYF.js.map → chunk-NGAKS4WG.js.map} +1 -1
  102. package/dist/{chunk-MP7ZYKMM.js → chunk-O4TMBV54.js} +8 -8
  103. package/dist/{chunk-MP7ZYKMM.js.map → chunk-O4TMBV54.js.map} +1 -1
  104. package/dist/{chunk-T6T5IQMN.mjs → chunk-OBRGUSGB.mjs} +3 -3
  105. package/dist/{chunk-T6T5IQMN.mjs.map → chunk-OBRGUSGB.mjs.map} +1 -1
  106. package/dist/{chunk-3DSGMX7P.js → chunk-OOBEJZJ5.js} +3 -3
  107. package/dist/{chunk-3DSGMX7P.js.map → chunk-OOBEJZJ5.js.map} +1 -1
  108. package/dist/{chunk-JJDY5XXG.js → chunk-PJZHIISA.js} +3 -3
  109. package/dist/{chunk-JJDY5XXG.js.map → chunk-PJZHIISA.js.map} +1 -1
  110. package/dist/{chunk-XWFUQMU6.mjs → chunk-QEHPIQYN.mjs} +3 -3
  111. package/dist/{chunk-XWFUQMU6.mjs.map → chunk-QEHPIQYN.mjs.map} +1 -1
  112. package/dist/{chunk-QJK2X3UK.js → chunk-R2O5VDNJ.js} +12 -12
  113. package/dist/{chunk-QJK2X3UK.js.map → chunk-R2O5VDNJ.js.map} +1 -1
  114. package/dist/{chunk-INA4NW3Y.mjs → chunk-RW76CJBS.mjs} +3 -3
  115. package/dist/{chunk-INA4NW3Y.mjs.map → chunk-RW76CJBS.mjs.map} +1 -1
  116. package/dist/{chunk-2XRGCDDG.js → chunk-SABYEM57.js} +9 -9
  117. package/dist/{chunk-2XRGCDDG.js.map → chunk-SABYEM57.js.map} +1 -1
  118. package/dist/{chunk-ZAVNGZJZ.js → chunk-SACGTFCK.js} +22 -6
  119. package/dist/chunk-SACGTFCK.js.map +1 -0
  120. package/dist/{chunk-SAR473OC.js → chunk-SM27DPML.js} +12 -12
  121. package/dist/{chunk-SAR473OC.js.map → chunk-SM27DPML.js.map} +1 -1
  122. package/dist/{chunk-HTLWSCUQ.mjs → chunk-SRJSR6YP.mjs} +22 -6
  123. package/dist/chunk-SRJSR6YP.mjs.map +1 -0
  124. package/dist/{chunk-NB4MK2Q5.js → chunk-SWIKKSKL.js} +3 -2
  125. package/dist/chunk-SWIKKSKL.js.map +1 -0
  126. package/dist/{chunk-GJKO2TZN.js → chunk-T6YDAJ5F.js} +4 -4
  127. package/dist/{chunk-GJKO2TZN.js.map → chunk-T6YDAJ5F.js.map} +1 -1
  128. package/dist/{chunk-MF6XLEX5.js → chunk-TBIWQQVF.js} +15 -15
  129. package/dist/{chunk-MF6XLEX5.js.map → chunk-TBIWQQVF.js.map} +1 -1
  130. package/dist/chunk-U3P4WF2A.js +8 -0
  131. package/dist/{chunk-S5L73KZQ.js.map → chunk-U3P4WF2A.js.map} +1 -1
  132. package/dist/{chunk-YWXZ4YLU.js → chunk-UDXWBLBH.js} +4 -4
  133. package/dist/{chunk-YWXZ4YLU.js.map → chunk-UDXWBLBH.js.map} +1 -1
  134. package/dist/{chunk-I7ORAWYT.mjs → chunk-UFT7IKDN.mjs} +4 -4
  135. package/dist/{chunk-I7ORAWYT.mjs.map → chunk-UFT7IKDN.mjs.map} +1 -1
  136. package/dist/{chunk-GU5OTUQS.mjs → chunk-VS67QHNX.mjs} +3 -3
  137. package/dist/{chunk-GU5OTUQS.mjs.map → chunk-VS67QHNX.mjs.map} +1 -1
  138. package/dist/{chunk-XR3MDDQT.mjs → chunk-XPNOM353.mjs} +3 -3
  139. package/dist/{chunk-XR3MDDQT.mjs.map → chunk-XPNOM353.mjs.map} +1 -1
  140. package/dist/{chunk-PTZB4ES3.mjs → chunk-YSLGMCQH.mjs} +8 -8
  141. package/dist/{chunk-PTZB4ES3.mjs.map → chunk-YSLGMCQH.mjs.map} +1 -1
  142. package/dist/{chunk-NI7OY4FW.mjs → chunk-ZN4HBK5C.mjs} +3 -2
  143. package/dist/chunk-ZN4HBK5C.mjs.map +1 -0
  144. package/dist/cli/index.js +36 -23
  145. package/dist/cli/index.js.map +1 -1
  146. package/dist/cli/index.mjs +29 -16
  147. package/dist/cli/index.mjs.map +1 -1
  148. package/dist/client/index.js +5 -5
  149. package/dist/client/index.mjs +4 -4
  150. package/dist/commerce/index.js +56 -56
  151. package/dist/commerce/index.mjs +5 -5
  152. package/dist/engage/index.js +13 -13
  153. package/dist/engage/index.mjs +7 -7
  154. package/dist/fleet/index.js +8 -8
  155. package/dist/fleet/index.mjs +4 -4
  156. package/dist/forms/index.js +21 -21
  157. package/dist/forms/index.mjs +10 -10
  158. package/dist/forms/server.js +10 -10
  159. package/dist/forms/server.mjs +8 -8
  160. package/dist/forms/static.js +7 -7
  161. package/dist/forms/static.mjs +6 -6
  162. package/dist/images/index.js +11 -11
  163. package/dist/images/index.mjs +4 -4
  164. package/dist/index.js +63 -63
  165. package/dist/index.mjs +9 -9
  166. package/dist/layout/client.js +9 -9
  167. package/dist/layout/client.mjs +8 -8
  168. package/dist/layout/index.js +11 -11
  169. package/dist/layout/index.mjs +9 -9
  170. package/dist/maps/index.js +5 -5
  171. package/dist/maps/index.mjs +3 -3
  172. package/dist/mcp/WebMcpTools.d.ts +60 -0
  173. package/dist/mcp/WebMcpTools.d.ts.map +1 -0
  174. package/dist/mcp/client.d.ts +9 -0
  175. package/dist/mcp/client.d.ts.map +1 -0
  176. package/dist/mcp/client.js +132 -0
  177. package/dist/mcp/client.js.map +1 -0
  178. package/dist/mcp/client.mjs +129 -0
  179. package/dist/mcp/client.mjs.map +1 -0
  180. package/dist/mcp/declarative.d.ts +77 -0
  181. package/dist/mcp/declarative.d.ts.map +1 -0
  182. package/dist/mcp/handlers.d.ts +92 -0
  183. package/dist/mcp/handlers.d.ts.map +1 -0
  184. package/dist/mcp/index.d.ts +29 -0
  185. package/dist/mcp/index.d.ts.map +1 -0
  186. package/dist/mcp/index.js +537 -0
  187. package/dist/mcp/index.js.map +1 -0
  188. package/dist/mcp/index.mjs +509 -0
  189. package/dist/mcp/index.mjs.map +1 -0
  190. package/dist/mcp/protocol.d.ts +140 -0
  191. package/dist/mcp/protocol.d.ts.map +1 -0
  192. package/dist/mcp/protocol.test.d.ts +2 -0
  193. package/dist/mcp/protocol.test.d.ts.map +1 -0
  194. package/dist/mcp/serverCard.d.ts +77 -0
  195. package/dist/mcp/serverCard.d.ts.map +1 -0
  196. package/dist/mcp/types.d.ts +154 -0
  197. package/dist/mcp/types.d.ts.map +1 -0
  198. package/dist/og/config.d.ts +11 -1
  199. package/dist/og/config.d.ts.map +1 -1
  200. package/dist/og/index.js +5 -5
  201. package/dist/og/index.mjs +1 -1
  202. package/dist/og/pages.d.ts.map +1 -1
  203. package/dist/og/template.d.ts.map +1 -1
  204. package/dist/search/index.js +4 -4
  205. package/dist/search/index.mjs +3 -3
  206. package/dist/seo/client.js +5 -5
  207. package/dist/seo/client.mjs +4 -4
  208. package/dist/seo/index.js +5 -5
  209. package/dist/seo/index.mjs +4 -4
  210. package/dist/seo-pages/contract.js +6 -6
  211. package/dist/seo-pages/contract.mjs +2 -2
  212. package/dist/server/index.js +3 -3
  213. package/dist/server/index.mjs +2 -2
  214. package/dist/shared/build-entries.d.ts +4 -1
  215. package/dist/shared/build-entries.d.ts.map +1 -1
  216. package/dist/shared/version.d.ts +1 -1
  217. package/dist/signal/index.js +11 -11
  218. package/dist/signal/index.mjs +2 -2
  219. package/dist/sites/contract.js +9 -9
  220. package/dist/sites/contract.mjs +2 -2
  221. package/dist/sites/normalize.d.ts +2 -1
  222. package/dist/sites/normalize.d.ts.map +1 -1
  223. package/dist/sync/index.js +16 -16
  224. package/dist/sync/index.mjs +4 -4
  225. package/package.json +11 -1
  226. package/dist/AnalyticsProvider-NW3UZYL5.mjs +0 -10
  227. package/dist/AnalyticsProvider-VSTTYP4W.js +0 -31
  228. package/dist/ChatWidget-BJOE2OSI.js +0 -20
  229. package/dist/ChatWidget-EWQ7LRD4.mjs +0 -11
  230. package/dist/EngageWidget-CZMNLFWI.js +0 -18
  231. package/dist/EngageWidget-F427CI6Y.mjs +0 -9
  232. package/dist/ManagedForm-A7BROQIN.mjs +0 -14
  233. package/dist/ManagedForm-Z3Z5Z6OL.js +0 -23
  234. package/dist/SitemapSync-62F6HVAW.js +0 -17
  235. package/dist/SitemapSync-EY33A6P4.mjs +0 -8
  236. package/dist/chunk-HTLWSCUQ.mjs.map +0 -1
  237. package/dist/chunk-NB4MK2Q5.js.map +0 -1
  238. package/dist/chunk-NI7OY4FW.mjs.map +0 -1
  239. package/dist/chunk-S5L73KZQ.js +0 -8
  240. package/dist/chunk-XCFCG46K.mjs +0 -6
  241. package/dist/chunk-ZAVNGZJZ.js.map +0 -1
@@ -8,9 +8,10 @@ function normalizeSiteHost(site) {
8
8
  if (slash >= 0) s = s.slice(0, slash);
9
9
  const colon = s.indexOf(":");
10
10
  if (colon >= 0) s = s.slice(0, colon);
11
+ s = s.replace(/\.+$/, "");
11
12
  return s || null;
12
13
  }
13
14
 
14
15
  export { normalizeSiteHost };
15
- //# sourceMappingURL=chunk-NI7OY4FW.mjs.map
16
- //# sourceMappingURL=chunk-NI7OY4FW.mjs.map
16
+ //# sourceMappingURL=chunk-ZN4HBK5C.mjs.map
17
+ //# sourceMappingURL=chunk-ZN4HBK5C.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sites/normalize.ts"],"names":[],"mappings":";AAmCO,SAAS,kBAAkB,IAAA,EAAqC;AACrE,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,IAAA;AAC9C,EAAA,IAAI,CAAA,GAAI,IAAA,CAAK,IAAA,EAAK,CAAE,WAAA,EAAY;AAChC,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AAEf,EAAA,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,cAAA,EAAgB,EAAE,CAAA;AAEhC,EAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAC3B,EAAA,IAAI,SAAS,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,GAAG,KAAK,CAAA;AAEpC,EAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAC3B,EAAA,IAAI,SAAS,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,GAAG,KAAK,CAAA;AAIpC,EAAA,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AACxB,EAAA,OAAO,CAAA,IAAK,IAAA;AACd","file":"chunk-ZN4HBK5C.mjs","sourcesContent":["/**\n * @sonordev/site-kit/sites — normalizeSiteHost (leaf module)\n *\n * Deliberately its own file, not part of `./contract`, so browser code can pull\n * in the normalizer WITHOUT the rest of the contract surface.\n *\n * `publishCredential` (which every client entry that publishes a credential\n * imports) needs exactly this one function. When it lived in `./contract`, the\n * bundler emitted that whole module as one shared chunk — `SITE_HOST_JSON_SCHEMA`,\n * `SITE_HOST_CONTRACT_VERSION`, `stripWww`, `sameSite`, `hostFromUrl`,\n * `isNormalizedSiteHost` and all — into `client`, `layout/client` and every\n * other entry that touched it. That was ~750B gzipped of agent-facing contract\n * metadata shipped to browsers for a 14-line string normalizer, and it is what\n * pushed those entries over their bundle budgets.\n *\n * `./contract` re-exports this, so the public `@sonordev/site-kit/sites/contract`\n * surface and the cross-repo drift tests are unchanged. Keep the implementation\n * HERE — the Nest APIs mirror this exact logic (sonor-api\n * `src/common/utils/site-host.ts`, signal-api `src/shared/utils/seo-page-pick.util.ts`).\n *\n * Pure string logic only (no Node built-ins) so it is safe in the browser.\n */\n\n/**\n * normalizeSiteHost — canonical normalizer for a sub-site host value before it\n * is persisted or used as a filter.\n *\n * `https://OhioPowerStudies.com:3000/path` → `ohiopowerstudies.com`\n *\n * Lowercases, strips protocol, keeps host only (drops path + query), strips\n * port (rollups span dev/prod) and the FQDN root dot. Returns null for\n * empty/non-string input.\n * Note: `www.` is intentionally preserved here — use `sameSite`/`stripWww`\n * for www-insensitive equality.\n */\nexport function normalizeSiteHost(site?: string | null): string | null {\n if (!site || typeof site !== 'string') return null\n let s = site.trim().toLowerCase()\n if (!s) return null\n // Strip protocol if present\n s = s.replace(/^https?:\\/\\//, '')\n // Keep host only — drop everything from first slash onward\n const slash = s.indexOf('/')\n if (slash >= 0) s = s.slice(0, slash)\n // Strip port (rollups span dev/prod)\n const colon = s.indexOf(':')\n if (colon >= 0) s = s.slice(0, colon)\n // Strip the FQDN root dot — \"spademade.com.\" is the same host as\n // \"spademade.com\". Because `site` is part of seo_pages identity, leaving the\n // dot on spells one site as two and mints a full duplicate page set.\n s = s.replace(/\\.+$/, '')\n return s || null\n}\n"]}
package/dist/cli/index.js CHANGED
@@ -3,10 +3,10 @@
3
3
 
4
4
  var chunkJS75ORH7_js = require('../chunk-JS75ORH7.js');
5
5
  var chunkI7AZC5ZQ_js = require('../chunk-I7AZC5ZQ.js');
6
- var chunkZAVNGZJZ_js = require('../chunk-ZAVNGZJZ.js');
6
+ var chunkSACGTFCK_js = require('../chunk-SACGTFCK.js');
7
7
  var chunkNN2YE5WT_js = require('../chunk-NN2YE5WT.js');
8
8
  var chunkLOS5D6B3_js = require('../chunk-LOS5D6B3.js');
9
- var chunkS5L73KZQ_js = require('../chunk-S5L73KZQ.js');
9
+ var chunkU3P4WF2A_js = require('../chunk-U3P4WF2A.js');
10
10
  var chunkSNAQBZPT_js = require('../chunk-SNAQBZPT.js');
11
11
  var events = require('events');
12
12
  var childProcess = require('child_process');
@@ -13543,7 +13543,7 @@ function buildEnvelope(input, nowMs = Date.now()) {
13543
13543
  ok: exitCode === 0 /* OK */,
13544
13544
  command,
13545
13545
  schemaVersion: 1,
13546
- siteKitVersion: chunkS5L73KZQ_js.SITE_KIT_VERSION,
13546
+ siteKitVersion: chunkU3P4WF2A_js.SITE_KIT_VERSION,
13547
13547
  exitCode,
13548
13548
  status: statusForCode(exitCode),
13549
13549
  summary,
@@ -27273,8 +27273,17 @@ function clampSubtitle(text, max = 100) {
27273
27273
  if (flat.length <= max) return flat;
27274
27274
  const sentence = flat.slice(0, max + 1).match(/^.*[.!?](?=\s|$)/)?.[0];
27275
27275
  if (sentence && sentence.length >= 30) return sentence.trim();
27276
- const cut = flat.slice(0, flat.lastIndexOf(" ", max) || max).trim();
27277
- return `${cut.replace(/[.,;:!?…]+$/, "")}\u2026`;
27276
+ return void 0;
27277
+ }
27278
+ function kickerIsRedundant(kicker, title) {
27279
+ if (!kicker) return false;
27280
+ const norm = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
27281
+ const k2 = norm(kicker);
27282
+ const t = norm(title);
27283
+ if (!k2) return true;
27284
+ if (t.includes(k2) || k2.includes(t)) return true;
27285
+ const titleWords = new Set(t.split(" "));
27286
+ return k2.split(" ").every((w) => titleWords.has(w));
27278
27287
  }
27279
27288
  function slugForPath(path27) {
27280
27289
  const trimmed = path27.replace(/^\/+|\/+$/g, "");
@@ -27283,18 +27292,22 @@ function slugForPath(path27) {
27283
27292
  }
27284
27293
  function pageCardConfig(base, route, brand) {
27285
27294
  const override = base.cards?.[route.path] ?? base.cards?.[slugForPath(route.path)];
27286
- const title = route.title ? stripBrandSuffix(route.title, brand) : titleFromPath(route.path);
27287
- const derived = {
27288
- ...base,
27289
- // `cards` is a build-time instruction, not part of a rendered card.
27290
- cards: void 0,
27291
- content: {
27292
- ...base.content,
27293
- kicker: kickerFromPath(route.path, base.content.kicker),
27294
- title,
27295
- subtitle: clampSubtitle(route.description) ?? base.content.subtitle
27296
- }
27297
- };
27295
+ const isHome = route.path === "/";
27296
+ const derived = isHome ? { ...base, cards: void 0 } : (() => {
27297
+ const title = route.title ? stripBrandSuffix(route.title, brand) : titleFromPath(route.path);
27298
+ const kicker = kickerFromPath(route.path, base.content.kicker);
27299
+ return {
27300
+ ...base,
27301
+ // `cards` is a build-time instruction, not part of a rendered card.
27302
+ cards: void 0,
27303
+ content: {
27304
+ ...base.content,
27305
+ kicker: kickerIsRedundant(kicker, title) ? void 0 : kicker,
27306
+ title,
27307
+ subtitle: clampSubtitle(route.description) ?? base.content.subtitle
27308
+ }
27309
+ };
27310
+ })();
27298
27311
  if (!override) return derived;
27299
27312
  return {
27300
27313
  ...derived,
@@ -27384,7 +27397,7 @@ async function renderCard(config2, outPath, cwd, chrome, tmpSuffix) {
27384
27397
  const tmpHtml = path10__default.default.join(cwd, `.sonor-og-${tmpSuffix}.html`);
27385
27398
  try {
27386
27399
  await fs3__default.default.mkdir(path10__default.default.dirname(outPath), { recursive: true });
27387
- await fs3__default.default.writeFile(tmpHtml, inlinePublicPaths(chunkZAVNGZJZ_js.buildOgHtml(config2), cwd));
27400
+ await fs3__default.default.writeFile(tmpHtml, inlinePublicPaths(chunkSACGTFCK_js.buildOgHtml(config2), cwd));
27388
27401
  const { stdout } = await execFileAsync5(
27389
27402
  chrome,
27390
27403
  [
@@ -27405,15 +27418,15 @@ async function renderCard(config2, outPath, cwd, chrome, tmpSuffix) {
27405
27418
  }
27406
27419
  }
27407
27420
  function parseReport(dom) {
27408
- const raw = dom.match(new RegExp(`${chunkZAVNGZJZ_js.OG_REPORT_ATTR}="([^"]*)"`))?.[1];
27421
+ const raw = dom.match(new RegExp(`${chunkSACGTFCK_js.OG_REPORT_ATTR}="([^"]*)"`))?.[1];
27409
27422
  if (!raw) {
27410
- return { fits: true, titlePx: chunkZAVNGZJZ_js.TITLE_MAX_PX, issues: ["card rendered but could not be measured (fitter did not run)"] };
27423
+ return { fits: true, titlePx: chunkSACGTFCK_js.TITLE_MAX_PX, issues: ["card rendered but could not be measured (fitter did not run)"] };
27411
27424
  }
27412
27425
  try {
27413
27426
  const decoded = raw.replace(/&quot;/g, '"').replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
27414
27427
  return JSON.parse(decoded);
27415
27428
  } catch {
27416
- return { fits: true, titlePx: chunkZAVNGZJZ_js.TITLE_MAX_PX, issues: ["card rendered but the fit report was unreadable"] };
27429
+ return { fits: true, titlePx: chunkSACGTFCK_js.TITLE_MAX_PX, issues: ["card rendered but the fit report was unreadable"] };
27417
27430
  }
27418
27431
  }
27419
27432
  async function compressCard(pngPath, cwd) {
@@ -27485,7 +27498,7 @@ async function resolveRouteCopy(paths) {
27485
27498
  }
27486
27499
  function reportCard(label, report) {
27487
27500
  if (report.fits && !report.issues.length) {
27488
- const shrunk = report.titlePx < chunkZAVNGZJZ_js.TITLE_MAX_PX ? source_default.gray(` (title fitted to ${report.titlePx}px)`) : "";
27501
+ const shrunk = report.titlePx < chunkSACGTFCK_js.TITLE_MAX_PX ? source_default.gray(` (title fitted to ${report.titlePx}px)`) : "";
27489
27502
  console.log(` ${source_default.green("\u2713")} ${label}${shrunk}`);
27490
27503
  return true;
27491
27504
  }
@@ -32391,7 +32404,7 @@ async function geoCommand(options) {
32391
32404
  (0, import_dotenv.config)({ path: ".env.local", quiet: true });
32392
32405
  (0, import_dotenv.config)({ path: ".env", quiet: true });
32393
32406
  var program2 = new Command();
32394
- program2.name("sonor-setup").description("Setup + verification toolchain for @sonordev/site-kit").version(chunkS5L73KZQ_js.SITE_KIT_VERSION);
32407
+ program2.name("sonor-setup").description("Setup + verification toolchain for @sonordev/site-kit").version(chunkU3P4WF2A_js.SITE_KIT_VERSION);
32395
32408
  withAgentFlags(
32396
32409
  program2.command("verify").description("Verify the integration actually works (health + key + SSR) \u2014 exit 0 = done").option("--url <url>", "Verify a running/deployed URL server-renders (recommended for agents)").option("--offline", "Skip the network key-validity ping").option("--strict", "Treat warnings as failures")
32397
32410
  ).action(verifyCommand);