@sonordev/site-kit 6.5.0 → 7.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.
Files changed (1625) hide show
  1. package/AGENTS.md +18 -3
  2. package/README.md +50 -34
  3. package/agent-manifest.json +282 -52
  4. package/dist/AnalyticsProvider-GJ6JFQO5.js +11 -0
  5. package/dist/ArticleFaqSection-3Q26DP7P.js +9 -0
  6. package/dist/ArticleViewTracker-FEA5SBKW.js +49 -0
  7. package/dist/BlocksPopup-MNK4SDZM.js +43 -0
  8. package/dist/ChatWidget-M2YNLRYW.js +15 -0
  9. package/dist/DatePicker-JEBV6WYJ.js +2 -0
  10. package/dist/EngageWidget-RR63JQCA.js +11 -0
  11. package/dist/FileField-JFBXXD43.js +83 -0
  12. package/dist/FormCelebration-OVGAGBKF.js +2 -0
  13. package/dist/FormSpotlight-QE3J3VB5.js +754 -0
  14. package/dist/FormStage-OTPKEWID.js +418 -0
  15. package/dist/ManagedForm-3VRALWUD.js +14 -0
  16. package/dist/ManagedNewsletterForm-A2FE6L5C.js +62 -0
  17. package/dist/SignalCore-S6DO3VQV.js +322 -0
  18. package/dist/SiteDesignReporter-2WZVWJMA.js +11 -0
  19. package/dist/SitemapSync-IKNKPT2G.js +8 -0
  20. package/dist/SitemapSync.d.ts +0 -1
  21. package/dist/_client/booking-widget.d.ts +4 -0
  22. package/dist/_client/booking-widget.js +7 -0
  23. package/dist/_client/testimonial-section.d.ts +11 -0
  24. package/dist/_client/testimonial-section.js +5 -0
  25. package/dist/admin-auth/index.d.ts +0 -1
  26. package/dist/admin-auth/index.js +0 -0
  27. package/dist/admin-auth/session.d.ts +0 -1
  28. package/dist/affiliates/AffiliatesWidget.d.ts +0 -1
  29. package/dist/affiliates/api.d.ts +0 -1
  30. package/dist/affiliates/index.d.ts +0 -1
  31. package/dist/affiliates/index.js +149 -0
  32. package/dist/affiliates/types.d.ts +0 -1
  33. package/dist/affiliates/useAffiliates.d.ts +0 -1
  34. package/dist/analytics/AnalyticsProvider.d.ts +0 -1
  35. package/dist/analytics/WebVitals.d.ts +0 -1
  36. package/dist/analytics/dispatch.d.ts +0 -1
  37. package/dist/analytics/index.d.ts +0 -1
  38. package/dist/analytics/index.js +12 -67
  39. package/dist/analytics/measurement-context.d.ts +0 -1
  40. package/dist/analytics/page-observation.d.ts +0 -1
  41. package/dist/analytics/send-gate.d.ts +0 -1
  42. package/dist/analytics/types.d.ts +0 -1
  43. package/dist/analytics/useContactTracking.d.ts +0 -1
  44. package/dist/article-styles-6CM5FUMV.js +590 -0
  45. package/dist/article-tables-AXSZOGNW.js +2 -0
  46. package/dist/articles/Article.d.ts +0 -1
  47. package/dist/articles/ArticleFAQ.d.ts +0 -1
  48. package/dist/articles/ArticleFaqSection.d.ts +0 -1
  49. package/dist/articles/ArticleList.d.ts +0 -1
  50. package/dist/articles/ArticleViewTracker.d.ts +0 -1
  51. package/dist/articles/AuthorCard.d.ts +0 -1
  52. package/dist/articles/AuthorPage.d.ts +0 -1
  53. package/dist/articles/ClusterLandingPage.d.ts +0 -1
  54. package/dist/articles/ClusterNavigation.d.ts +0 -1
  55. package/dist/articles/ManagedNewsletterForm.d.ts +0 -1
  56. package/dist/articles/NewsletterShell.d.ts +0 -1
  57. package/dist/articles/NewsletterWidget.d.ts +0 -1
  58. package/dist/articles/PublicationLayout.d.ts +0 -1
  59. package/dist/articles/PublicationSidebar.d.ts +0 -1
  60. package/dist/articles/RelatedPosts.d.ts +0 -1
  61. package/dist/articles/ServiceCallout.d.ts +0 -1
  62. package/dist/articles/TableOfContents.d.ts +0 -1
  63. package/dist/articles/article-styles.d.ts +0 -1
  64. package/dist/articles/article-tables.d.ts +0 -1
  65. package/dist/articles/artwork.d.ts +0 -1
  66. package/dist/articles/author-schema.d.ts +0 -1
  67. package/dist/articles/author-social.d.ts +0 -1
  68. package/dist/articles/excerpt.d.ts +0 -1
  69. package/dist/articles/index.d.ts +0 -1
  70. package/dist/articles/index.js +87 -147
  71. package/dist/articles/news-sitemap.d.ts +0 -1
  72. package/dist/articles/processArticleHtml.d.ts +0 -1
  73. package/dist/articles/public-reads.d.ts +0 -1
  74. package/dist/articles/reading-time.d.ts +0 -1
  75. package/dist/articles/routes.d.ts +0 -1
  76. package/dist/articles/server-core.d.ts +0 -14
  77. package/dist/articles/server-ui.d.ts +0 -1
  78. package/dist/articles/server-ui.js +221 -265
  79. package/dist/articles/server.d.ts +0 -14
  80. package/dist/articles/server.js +10 -252
  81. package/dist/articles/types.d.ts +0 -1
  82. package/dist/articles/widget-styles.d.ts +0 -1
  83. package/dist/brand/extract-brand-profile.d.ts +0 -1
  84. package/dist/chat/index.d.ts +11 -0
  85. package/dist/chat/index.js +16 -0
  86. package/dist/chunk-24QZEO3Q.js +41 -0
  87. package/dist/chunk-3XHK5DFX.js +184 -0
  88. package/dist/chunk-43OCZ3JA.js +67 -0
  89. package/dist/chunk-4KZ6W3ZH.js +8 -0
  90. package/dist/chunk-4WI3FU5L.js +129 -0
  91. package/dist/chunk-4Y5FWDPM.js +97 -0
  92. package/dist/chunk-5C4WVOVO.js +478 -0
  93. package/dist/chunk-5SQK3D53.js +24 -0
  94. package/dist/chunk-5UZN5V52.js +52 -0
  95. package/dist/chunk-5YSI5KFD.js +19 -0
  96. package/dist/chunk-6CUFRMMF.js +937 -0
  97. package/dist/chunk-6HDT4G4A.js +253 -0
  98. package/dist/chunk-6T6CQVNL.js +37 -0
  99. package/dist/chunk-6ZB3XNAT.js +54 -0
  100. package/dist/chunk-7KJGO77W.js +1 -0
  101. package/dist/chunk-7L5AARVY.js +68 -0
  102. package/dist/chunk-7ZHJIRM3.js +4 -0
  103. package/dist/chunk-7ZWO5HDQ.js +1 -0
  104. package/dist/chunk-A4CC4ZG3.js +15 -0
  105. package/dist/chunk-AQSNPZY4.js +92 -0
  106. package/dist/chunk-B52EXDWI.js +1803 -0
  107. package/dist/chunk-BQR4IPBW.js +146 -0
  108. package/dist/chunk-BR4ZKUHH.js +227 -0
  109. package/dist/chunk-BU66S5B7.js +1 -0
  110. package/dist/chunk-C4G3NW2E.js +25 -0
  111. package/dist/chunk-D7SLSJS4.js +1 -0
  112. package/dist/chunk-DIKNRN34.js +28 -0
  113. package/dist/chunk-DXO6SBMD.js +43 -0
  114. package/dist/chunk-EDYHROQ7.js +77 -0
  115. package/dist/chunk-EKBEOXTH.js +114 -0
  116. package/dist/chunk-FESKKJAS.js +19 -0
  117. package/dist/chunk-FV2VD7WM.js +347 -0
  118. package/dist/chunk-FYAB6CXS.js +265 -0
  119. package/dist/chunk-G3NHWMP5.js +233 -0
  120. package/dist/chunk-GJWI74ZZ.js +27 -0
  121. package/dist/chunk-GKGSXUVQ.js +218 -0
  122. package/dist/chunk-GLHQ3LRO.js +97 -0
  123. package/dist/chunk-GW7GSBO7.js +66 -0
  124. package/dist/chunk-GYBMMWGF.js +163 -0
  125. package/dist/chunk-GYF2ULVO.js +14 -0
  126. package/dist/chunk-HPUXKMNR.js +148 -0
  127. package/dist/chunk-HXJ54KAM.js +122 -0
  128. package/dist/chunk-I6WUCBKI.js +99 -0
  129. package/dist/chunk-IHG36STL.js +286 -0
  130. package/dist/chunk-J4FSB4OG.js +200 -0
  131. package/dist/chunk-JE4A5S4F.js +48 -0
  132. package/dist/chunk-JJ4JS3LD.js +26 -0
  133. package/dist/chunk-JMRESWQT.js +130 -0
  134. package/dist/chunk-JSZN6LDZ.js +338 -0
  135. package/dist/chunk-KPAZG65P.js +138 -0
  136. package/dist/chunk-KV4LOKOU.js +154 -0
  137. package/dist/chunk-KXPBMCFL.js +39 -0
  138. package/dist/chunk-L2V5PUFN.js +15 -0
  139. package/dist/chunk-L3AQCDCY.js +386 -0
  140. package/dist/chunk-L5UOHS6E.js +45 -0
  141. package/dist/chunk-LCDVPAMR.js +24 -0
  142. package/dist/chunk-LE7ZOTHB.js +43 -0
  143. package/dist/chunk-LNSNA3W4.js +217 -0
  144. package/dist/chunk-LQJC5S2M.js +236 -0
  145. package/dist/chunk-LT5ITURG.js +1071 -0
  146. package/dist/chunk-LVESVYCE.js +270 -0
  147. package/dist/chunk-M4ZY2FVB.js +177 -0
  148. package/dist/chunk-MH2DSGC6.js +10 -0
  149. package/dist/chunk-MJP63SSS.js +14 -0
  150. package/dist/chunk-MVLMXC44.js +9 -0
  151. package/dist/chunk-MZFF5F7R.js +407 -0
  152. package/dist/chunk-N2UVOR3X.js +238 -0
  153. package/dist/chunk-NDF4A5JM.js +37 -0
  154. package/dist/chunk-NJCTQH2P.js +62 -0
  155. package/dist/chunk-NZOJHERI.js +32 -0
  156. package/dist/chunk-OO2GZ272.js +1241 -0
  157. package/dist/chunk-OPRBF7VE.js +41 -0
  158. package/dist/chunk-OSQHWIM5.js +523 -0
  159. package/dist/chunk-OSYCOC3K.js +21 -0
  160. package/dist/chunk-P5GB6NEO.js +66 -0
  161. package/dist/chunk-PKBMQBKP.js +5 -0
  162. package/dist/chunk-PO2TRJPY.js +40 -0
  163. package/dist/chunk-PSAG45YF.js +451 -0
  164. package/dist/chunk-PXKIGZ2F.js +31 -0
  165. package/dist/chunk-QLTDFUJ7.js +94 -0
  166. package/dist/chunk-QPEEKFCA.js +533 -0
  167. package/dist/chunk-QXMIKDOL.js +125 -0
  168. package/dist/chunk-R3TOKUDJ.js +191 -0
  169. package/dist/chunk-S22FSH7C.js +94 -0
  170. package/dist/chunk-SC4MZGWZ.js +63 -0
  171. package/dist/chunk-SOD2F6C2.js +281 -0
  172. package/dist/chunk-SS636UDN.js +35 -0
  173. package/dist/chunk-SSUQKA7L.js +746 -0
  174. package/dist/chunk-SWKE6FWH.js +47 -0
  175. package/dist/chunk-T22VK4NJ.js +49 -0
  176. package/dist/chunk-TT63HHIT.js +543 -0
  177. package/dist/chunk-TXBAOEKG.js +1084 -0
  178. package/dist/chunk-UINSEWQ3.js +127 -0
  179. package/dist/chunk-UPFU63L4.js +126 -0
  180. package/dist/chunk-UVPGW4R7.js +222 -0
  181. package/dist/chunk-VX5CMNMM.js +26 -0
  182. package/dist/chunk-WFHI6HXP.js +837 -0
  183. package/dist/chunk-WMVK77ND.js +53 -0
  184. package/dist/chunk-X6F6SO4S.js +135 -0
  185. package/dist/chunk-XTRZGXB2.js +34 -0
  186. package/dist/chunk-XZMVNORA.js +100 -0
  187. package/dist/chunk-Y3INC4QJ.js +133 -0
  188. package/dist/chunk-YC7ELZS3.js +51 -0
  189. package/dist/chunk-YGGDU6C3.js +93 -0
  190. package/dist/chunk-YVKRYQRG.js +70 -0
  191. package/dist/chunk-Z22QVHT4.js +57 -0
  192. package/dist/chunk-ZEGVKVD5.js +80 -0
  193. package/dist/chunk-ZTZQPYP6.js +55 -0
  194. package/dist/client/SiteKitCredential.d.ts +0 -1
  195. package/dist/client/index.d.ts +0 -1
  196. package/dist/client/index.js +13 -53
  197. package/dist/cms/CmsPage.d.ts +0 -1
  198. package/dist/cms/CmsPreview.d.ts +0 -1
  199. package/dist/cms/CmsSection.d.ts +0 -1
  200. package/dist/cms/PortableTextRenderer.d.ts +0 -1
  201. package/dist/cms/index.d.ts +1 -2
  202. package/dist/cms/index.js +5 -410
  203. package/dist/cms/sanity-image.d.ts +0 -1
  204. package/dist/cms/sections/CtaSection.d.ts +0 -1
  205. package/dist/cms/sections/CustomSection.d.ts +0 -1
  206. package/dist/cms/sections/FaqSection.d.ts +0 -1
  207. package/dist/cms/sections/FormSection.d.ts +0 -1
  208. package/dist/cms/sections/GallerySection.d.ts +0 -1
  209. package/dist/cms/sections/HeroSection.d.ts +0 -1
  210. package/dist/cms/sections/RichTextSection.d.ts +0 -1
  211. package/dist/cms/sections/TestimonialsSection.d.ts +0 -1
  212. package/dist/cms/sections/index.d.ts +0 -1
  213. package/dist/cms/server-api.d.ts +0 -1
  214. package/dist/cms/server.d.ts +0 -1
  215. package/dist/cms/server.js +5 -22
  216. package/dist/cms/types.d.ts +0 -1
  217. package/dist/commerce/CalendarView.d.ts +0 -1
  218. package/dist/commerce/CheckoutForm.d.ts +0 -1
  219. package/dist/commerce/EventCalendar.d.ts +0 -1
  220. package/dist/commerce/EventCheckout.d.ts +0 -1
  221. package/dist/commerce/EventEmbed.d.ts +0 -1
  222. package/dist/commerce/EventModal.d.ts +0 -1
  223. package/dist/commerce/EventTile.d.ts +0 -1
  224. package/dist/commerce/EventsAgenda.d.ts +0 -1
  225. package/dist/commerce/EventsWidget.d.ts +0 -1
  226. package/dist/commerce/OfferingCard.d.ts +0 -1
  227. package/dist/commerce/OfferingList.d.ts +0 -1
  228. package/dist/commerce/ProductDetail.d.ts +0 -1
  229. package/dist/commerce/ProductEmbed.d.ts +0 -1
  230. package/dist/commerce/ProductGrid.d.ts +0 -1
  231. package/dist/commerce/ProductPage.d.ts +0 -1
  232. package/dist/commerce/RegistrationForm.d.ts +0 -1
  233. package/dist/commerce/SizeChart.d.ts +0 -1
  234. package/dist/commerce/UpcomingEvents.d.ts +0 -1
  235. package/dist/commerce/api.d.ts +0 -1
  236. package/dist/commerce/events-extras.d.ts +0 -1
  237. package/dist/commerce/index.d.ts +0 -1
  238. package/dist/commerce/index.js +8021 -228
  239. package/dist/commerce/server.d.ts +0 -1
  240. package/dist/commerce/server.js +2 -251
  241. package/dist/commerce/types.d.ts +0 -1
  242. package/dist/commerce/useEventModal.d.ts +0 -1
  243. package/dist/commerce/utils.d.ts +0 -1
  244. package/dist/config/index.d.ts +0 -1
  245. package/dist/config/index.js +7 -11
  246. package/dist/contracts/color.d.ts +38 -0
  247. package/dist/contracts/entries.d.ts +8 -0
  248. package/dist/contracts/fleet.d.ts +96 -0
  249. package/dist/contracts/forms.d.ts +89 -0
  250. package/dist/contracts/llms.d.ts +54 -0
  251. package/dist/contracts/portfolio.d.ts +158 -0
  252. package/dist/contracts/seo-meta.d.ts +56 -0
  253. package/dist/contracts/seo-pages.d.ts +124 -0
  254. package/dist/contracts/sites-normalize.d.ts +35 -0
  255. package/dist/contracts/sites.d.ts +48 -0
  256. package/dist/contracts/slots.d.ts +81 -0
  257. package/dist/contracts/website.d.ts +148 -0
  258. package/dist/cta-bar/CtaBar.d.ts +0 -1
  259. package/dist/cta-bar/CtaBarBehavior.d.ts +0 -1
  260. package/dist/cta-bar/client.d.ts +0 -1
  261. package/dist/cta-bar/client.js +3 -22
  262. package/dist/cta-bar/index.d.ts +0 -1
  263. package/dist/cta-bar/index.js +5 -227
  264. package/dist/cta-bar/styles.d.ts +0 -1
  265. package/dist/discover-3YYOHOQP.js +2 -0
  266. package/dist/engage/ChatWidget.d.ts +0 -1
  267. package/dist/engage/DesignRenderer.d.ts +0 -1
  268. package/dist/engage/EchoUiActions.d.ts +0 -1
  269. package/dist/engage/EngageWidget.d.ts +2 -1
  270. package/dist/engage/brand-color.d.ts +0 -1
  271. package/dist/engage/chat-messages.d.ts +0 -1
  272. package/dist/engage/echo-config.d.ts +0 -1
  273. package/dist/engage/element-rules.d.ts +0 -1
  274. package/dist/engage/index.d.ts +0 -1
  275. package/dist/engage/index.js +20 -37
  276. package/dist/engage/launcher-placement.d.ts +0 -1
  277. package/dist/engage/socket-loader.d.ts +0 -1
  278. package/dist/engage/types.d.ts +18 -1
  279. package/dist/fleet/FleetHeartbeat.d.ts +0 -1
  280. package/dist/fleet/contract.d.ts +1 -98
  281. package/dist/fleet/contract.js +2 -53
  282. package/dist/fleet/heartbeat.d.ts +0 -1
  283. package/dist/fleet/index.d.ts +0 -1
  284. package/dist/fleet/index.js +9 -76
  285. package/dist/forms/DatePicker.d.ts +0 -1
  286. package/dist/forms/FileField.d.ts +0 -1
  287. package/dist/forms/FormCelebration.d.ts +0 -1
  288. package/dist/forms/FormClient.d.ts +0 -1
  289. package/dist/forms/FormEnhancer.d.ts +0 -1
  290. package/dist/forms/FormField.d.ts +0 -1
  291. package/dist/forms/FormSpotlight.d.ts +0 -1
  292. package/dist/forms/FormStage.d.ts +0 -1
  293. package/dist/forms/HoneypotField.d.ts +0 -1
  294. package/dist/forms/ManagedForm.d.ts +0 -1
  295. package/dist/forms/ServerForm.d.ts +0 -1
  296. package/dist/forms/StaticForm.d.ts +0 -1
  297. package/dist/forms/contract.d.ts +1 -91
  298. package/dist/forms/contract.js +2 -37
  299. package/dist/forms/defaultSuccessMessage.d.ts +0 -1
  300. package/dist/forms/delight.d.ts +0 -1
  301. package/dist/forms/experience-chrome.d.ts +0 -1
  302. package/dist/forms/experience-plan.d.ts +0 -1
  303. package/dist/forms/field-controls.d.ts +0 -1
  304. package/dist/forms/field-interactions.d.ts +0 -1
  305. package/dist/forms/field-rules.d.ts +0 -1
  306. package/dist/forms/form-loaded-at.d.ts +12 -0
  307. package/dist/forms/form-values.d.ts +0 -1
  308. package/dist/forms/formsApi.d.ts +0 -1
  309. package/dist/forms/ga4-identity.d.ts +0 -1
  310. package/dist/forms/index.d.ts +0 -1
  311. package/dist/forms/index.js +20 -64
  312. package/dist/forms/normalize-config.d.ts +0 -1
  313. package/dist/forms/recaptcha-warmup.d.ts +0 -1
  314. package/dist/forms/recaptcha.d.ts +0 -1
  315. package/dist/forms/server.d.ts +0 -1
  316. package/dist/forms/server.js +11 -67
  317. package/dist/forms/static.d.ts +0 -1
  318. package/dist/forms/static.js +6 -17
  319. package/dist/forms/submitForm.d.ts +0 -1
  320. package/dist/forms/tracking-session.d.ts +0 -1
  321. package/dist/forms/types.d.ts +0 -1
  322. package/dist/forms/useForm.d.ts +0 -1
  323. package/dist/forms/useFormTracking.d.ts +0 -1
  324. package/dist/images/ManagedFavicon.d.ts +0 -1
  325. package/dist/images/ManagedImage.d.ts +0 -1
  326. package/dist/images/api.d.ts +0 -1
  327. package/dist/images/index.d.ts +0 -1
  328. package/dist/images/index.js +6 -49
  329. package/dist/images/server.d.ts +0 -1
  330. package/dist/images/server.js +3 -21
  331. package/dist/index.d.ts +13 -56
  332. package/dist/index.js +2 -427
  333. package/dist/landing/LandingPage.d.ts +0 -1
  334. package/dist/landing/contract.d.ts +0 -1
  335. package/dist/landing/index.d.ts +0 -1
  336. package/dist/landing/index.js +3 -22
  337. package/dist/landing/metadata.d.ts +0 -1
  338. package/dist/landing/server.d.ts +0 -1
  339. package/dist/landing/server.js +3 -17
  340. package/dist/layout/SiteKitClientProviders.d.ts +12 -3
  341. package/dist/layout/SiteKitLayout.d.ts +19 -4
  342. package/dist/layout/SpeculationRules.d.ts +0 -1
  343. package/dist/layout/client.d.ts +12 -3
  344. package/dist/layout/client.js +16 -27
  345. package/dist/layout/index.d.ts +0 -1
  346. package/dist/layout/index.js +43 -41
  347. package/dist/layout/types.d.ts +13 -1
  348. package/dist/llms/AEOComponents.d.ts +0 -1
  349. package/dist/llms/SpeakableSchema.d.ts +0 -1
  350. package/dist/llms/agent-access.d.ts +43 -0
  351. package/dist/llms/aiRobots.d.ts +0 -10
  352. package/dist/llms/api.d.ts +0 -1
  353. package/dist/llms/client.d.ts +0 -1
  354. package/dist/llms/client.js +4 -66
  355. package/dist/llms/contract.d.ts +1 -42
  356. package/dist/llms/contract.js +2 -41
  357. package/dist/llms/discovery-headers.d.ts +6 -1
  358. package/dist/llms/generateLLMsTxt.d.ts +0 -1
  359. package/dist/llms/handlers.d.ts +0 -1
  360. package/dist/llms/humanize-industry.d.ts +0 -1
  361. package/dist/llms/index.d.ts +3 -2
  362. package/dist/llms/index.js +17 -448
  363. package/dist/llms/links.d.ts +0 -1
  364. package/dist/llms/revalidate.d.ts +0 -1
  365. package/dist/llms/seo-revalidate.d.ts +0 -1
  366. package/dist/llms/sourcedFacts.d.ts +0 -1
  367. package/dist/llms/types.d.ts +6 -1
  368. package/dist/llms/writeLLMsTxt.d.ts +10 -1
  369. package/dist/manifest/index.d.ts +0 -1
  370. package/dist/manifest/index.js +4 -8
  371. package/dist/maps/GoogleMap.d.ts +0 -1
  372. package/dist/maps/NeighborhoodMap.d.ts +0 -1
  373. package/dist/maps/api.d.ts +0 -1
  374. package/dist/maps/index.d.ts +0 -1
  375. package/dist/maps/index.js +85 -92
  376. package/dist/maps/types.d.ts +0 -1
  377. package/dist/mcp/WebMcpTools.d.ts +0 -1
  378. package/dist/mcp/client.d.ts +0 -1
  379. package/dist/mcp/client.js +9 -12
  380. package/dist/mcp/declarative.d.ts +0 -1
  381. package/dist/mcp/handlers.d.ts +15 -2
  382. package/dist/mcp/index.d.ts +2 -3
  383. package/dist/mcp/index.js +50 -298
  384. package/dist/mcp/protocol.d.ts +0 -1
  385. package/dist/mcp/report.d.ts +27 -0
  386. package/dist/mcp/serverCard.d.ts +0 -1
  387. package/dist/mcp/sonor.d.ts +99 -0
  388. package/dist/mcp/sonor.js +482 -0
  389. package/dist/mcp/transport.d.ts +0 -1
  390. package/dist/mcp/transport.js +8 -24
  391. package/dist/mcp/types.d.ts +21 -1
  392. package/dist/motion/CountUp.d.ts +0 -1
  393. package/dist/motion/Parallax.d.ts +0 -1
  394. package/dist/motion/Reveal.d.ts +0 -1
  395. package/dist/motion/ScrollScene.d.ts +0 -1
  396. package/dist/motion/engine.d.ts +0 -1
  397. package/dist/motion/failsafe.d.ts +0 -1
  398. package/dist/motion/gsap.d.ts +0 -1
  399. package/dist/motion/gsap.js +17 -29
  400. package/dist/motion/index.d.ts +0 -1
  401. package/dist/motion/index.js +25 -51
  402. package/dist/motion/three.d.ts +0 -1
  403. package/dist/motion/three.js +16 -23
  404. package/dist/og/config.d.ts +0 -1
  405. package/dist/og/contrast.d.ts +0 -1
  406. package/dist/og/index.d.ts +0 -1
  407. package/dist/og/index.js +4 -43
  408. package/dist/og/pages.d.ts +0 -1
  409. package/dist/og/route-fit.d.ts +0 -1
  410. package/dist/og/route.d.ts +0 -1
  411. package/dist/og/route.js +3 -245
  412. package/dist/og/template.d.ts +0 -1
  413. package/dist/portfolio/contract.d.ts +1 -153
  414. package/dist/portfolio/contract.js +2 -136
  415. package/dist/proxy/index.d.ts +16 -14
  416. package/dist/proxy/index.js +20 -36
  417. package/dist/proxy/securityHeaders.d.ts +0 -1
  418. package/dist/proxy/segment.d.ts +0 -1
  419. package/dist/redirects/index.d.ts +0 -8
  420. package/dist/redirects/index.js +6 -41
  421. package/dist/reputation/TestimonialSection.d.ts +0 -1
  422. package/dist/reputation/api.d.ts +0 -1
  423. package/dist/reputation/index.d.ts +0 -1
  424. package/dist/reputation/index.js +4 -22
  425. package/dist/reputation/server.d.ts +0 -1
  426. package/dist/reputation/server.js +3 -17
  427. package/dist/reputation/types.d.ts +0 -1
  428. package/dist/robots/index.d.ts +1 -2
  429. package/dist/robots/index.js +4 -78
  430. package/dist/robots/indexnow.d.ts +0 -1
  431. package/dist/robots/indexnow.js +4 -39
  432. package/dist/robots/next-internals.d.ts +0 -1
  433. package/dist/seo/ManagedContent.d.ts +0 -1
  434. package/dist/seo/ManagedFAQ.d.ts +0 -1
  435. package/dist/seo/ManagedInternalLinks.d.ts +0 -1
  436. package/dist/seo/ManagedSchema.d.ts +0 -1
  437. package/dist/seo/ManagedScripts.d.ts +0 -1
  438. package/dist/seo/api.d.ts +0 -1
  439. package/dist/seo/client.d.ts +0 -1
  440. package/dist/seo/client.js +8 -19
  441. package/dist/seo/entry-indexnow.d.ts +2 -0
  442. package/dist/seo/entry-llms-client.d.ts +2 -0
  443. package/dist/seo/entry-llms-contract.d.ts +2 -0
  444. package/dist/seo/entry-llms.d.ts +2 -0
  445. package/dist/seo/entry-meta-contract.d.ts +2 -0
  446. package/dist/seo/entry-og-route.d.ts +2 -0
  447. package/dist/seo/entry-og.d.ts +2 -0
  448. package/dist/seo/entry-pages-contract.d.ts +2 -0
  449. package/dist/seo/entry-redirects.d.ts +2 -0
  450. package/dist/seo/entry-robots.d.ts +2 -0
  451. package/dist/seo/entry-sitemap.d.ts +2 -0
  452. package/dist/seo/getManagedMetadata.d.ts +0 -1
  453. package/dist/seo/groundingSchema.d.ts +0 -1
  454. package/dist/seo/index.d.ts +0 -2
  455. package/dist/seo/index.js +88 -318
  456. package/dist/seo/indexnow.d.ts +2 -0
  457. package/dist/seo/indexnow.js +4 -0
  458. package/dist/seo/llms/client.d.ts +2 -0
  459. package/dist/seo/llms/client.js +4 -0
  460. package/dist/seo/llms/contract.d.ts +2 -0
  461. package/dist/seo/llms/contract.js +2 -0
  462. package/dist/seo/llms.d.ts +2 -0
  463. package/dist/seo/llms.js +17 -0
  464. package/dist/seo/load-env.d.ts +12 -0
  465. package/dist/seo/meta/contract.d.ts +2 -0
  466. package/dist/seo/meta/contract.js +2 -0
  467. package/dist/seo/og/route.d.ts +2 -0
  468. package/dist/seo/og/route.js +3 -0
  469. package/dist/seo/og.d.ts +2 -0
  470. package/dist/seo/og.js +4 -0
  471. package/dist/seo/pages/contract.d.ts +2 -0
  472. package/dist/seo/pages/contract.js +4 -0
  473. package/dist/seo/redirects.d.ts +2 -0
  474. package/dist/seo/redirects.js +6 -0
  475. package/dist/seo/register-sitemap-cli-impl.d.ts +6 -1
  476. package/dist/seo/register-sitemap-cli.d.ts +1 -1
  477. package/dist/seo/register-sitemap-cli.js +73 -66
  478. package/dist/seo/register-sitemap-request.d.ts +0 -1
  479. package/dist/seo/robots.d.ts +2 -0
  480. package/dist/seo/robots.js +4 -0
  481. package/dist/seo/routing.d.ts +0 -1
  482. package/dist/seo/safeJsonLd.d.ts +0 -1
  483. package/dist/seo/schema-filter.d.ts +0 -1
  484. package/dist/seo/server-api.d.ts +0 -1
  485. package/dist/seo/server.d.ts +0 -1
  486. package/dist/seo/server.js +10 -80
  487. package/dist/seo/sitemap.d.ts +2 -0
  488. package/dist/seo/sitemap.js +15 -0
  489. package/dist/seo/types.d.ts +0 -1
  490. package/dist/seo/withManagedMetadata.d.ts +0 -1
  491. package/dist/seo-meta/contract.d.ts +1 -60
  492. package/dist/seo-meta/contract.js +2 -41
  493. package/dist/seo-pages/contract.d.ts +1 -61
  494. package/dist/seo-pages/contract.js +4 -49
  495. package/dist/server/index.d.ts +0 -1
  496. package/dist/server/index.js +6 -32
  497. package/dist/server/mint-site-token.d.ts +0 -1
  498. package/dist/server/server-fetch.d.ts +0 -1
  499. package/dist/server-api-GJJQZVG7.js +8 -0
  500. package/dist/shared/build-entries.d.ts +53 -14
  501. package/dist/shared/clock.d.ts +20 -0
  502. package/dist/shared/color.d.ts +1 -39
  503. package/dist/shared/defer.d.ts +0 -1
  504. package/dist/shared/fetchWithRetry.d.ts +0 -1
  505. package/dist/shared/frame.d.ts +1 -9
  506. package/dist/shared/fresh-fetch.d.ts +0 -1
  507. package/dist/shared/glass.d.ts +0 -1
  508. package/dist/shared/identity.d.ts +0 -1
  509. package/dist/shared/markdown.d.ts +40 -0
  510. package/dist/shared/next-files.d.ts +0 -1
  511. package/dist/shared/page-leave.d.ts +0 -1
  512. package/dist/shared/publishCredential.d.ts +0 -1
  513. package/dist/shared/reporting-gate.d.ts +0 -1
  514. package/dist/shared/request-guards.d.ts +0 -1
  515. package/dist/shared/siteToken.d.ts +0 -1
  516. package/dist/shared/sonorFetch.d.ts +0 -1
  517. package/dist/shared/source-graph.d.ts +0 -1
  518. package/dist/shared/uuid.d.ts +0 -1
  519. package/dist/shared/version.d.ts +1 -2
  520. package/dist/shared/visual-viewport-gap.d.ts +0 -1
  521. package/dist/signal/SignalBridge.d.ts +0 -1
  522. package/dist/signal/SignalCore.d.ts +0 -1
  523. package/dist/signal/SignalExperiment.d.ts +0 -1
  524. package/dist/signal/index.d.ts +0 -1
  525. package/dist/signal/index.js +72 -44
  526. package/dist/signal/store.d.ts +0 -1
  527. package/dist/signal/types.d.ts +0 -1
  528. package/dist/site-config/index.d.ts +0 -1
  529. package/dist/site-config/index.js +2 -17
  530. package/dist/sitemap/discover.d.ts +0 -1
  531. package/dist/sitemap/index.d.ts +6 -1
  532. package/dist/sitemap/index.js +15 -553
  533. package/dist/sitemap/shared.d.ts +0 -1
  534. package/dist/sites/contract.d.ts +1 -51
  535. package/dist/sites/contract.js +3 -38
  536. package/dist/sites/normalize.d.ts +1 -36
  537. package/dist/sites/resolve.d.ts +0 -1
  538. package/dist/sites/site-param.d.ts +0 -1
  539. package/dist/slots/ManagedSlot.d.ts +0 -1
  540. package/dist/slots/contract.d.ts +1 -82
  541. package/dist/slots/contract.js +2 -41
  542. package/dist/slots/index.d.ts +0 -1
  543. package/dist/slots/index.js +5 -182
  544. package/dist/slots/revalidate.d.ts +0 -1
  545. package/dist/slots/server-api.d.ts +0 -1
  546. package/dist/socket-loader-R24ZSRSQ.js +12 -0
  547. package/dist/sync/AddToCalendar.d.ts +0 -1
  548. package/dist/sync/BookingWidget.d.ts +0 -1
  549. package/dist/sync/MeetingFormatStep.d.ts +0 -1
  550. package/dist/sync/api.d.ts +0 -1
  551. package/dist/sync/booking-flow.d.ts +0 -1
  552. package/dist/sync/index.d.ts +0 -1
  553. package/dist/sync/index.js +6 -64
  554. package/dist/sync/types.d.ts +0 -1
  555. package/dist/types.d.ts +0 -63
  556. package/dist/web-vitals.attribution-N2PCCF4Q.js +522 -0
  557. package/dist/website/BlocksPopup.d.ts +25 -0
  558. package/dist/website/PopupBlocks.d.ts +57 -0
  559. package/dist/website/SiteDesignReporter.d.ts +28 -0
  560. package/dist/website/cms/server.d.ts +2 -0
  561. package/dist/website/cms/server.js +5 -0
  562. package/dist/website/cms-server.d.ts +2 -0
  563. package/dist/website/cms.d.ts +2 -0
  564. package/dist/website/cms.js +5 -0
  565. package/dist/website/contract.d.ts +1 -0
  566. package/dist/website/contract.js +3 -0
  567. package/dist/website/cta-bar.d.ts +2 -0
  568. package/dist/website/cta-bar.js +5 -0
  569. package/dist/website/design.d.ts +165 -0
  570. package/dist/website/images/server.d.ts +2 -0
  571. package/dist/website/images/server.js +3 -0
  572. package/dist/website/images-server.d.ts +2 -0
  573. package/dist/website/images.d.ts +2 -0
  574. package/dist/website/images.js +6 -0
  575. package/dist/website/index.d.ts +17 -0
  576. package/dist/website/index.js +13 -0
  577. package/dist/website/landing/server.d.ts +2 -0
  578. package/dist/website/landing/server.js +3 -0
  579. package/dist/website/landing-server.d.ts +2 -0
  580. package/dist/website/landing.d.ts +2 -0
  581. package/dist/website/landing.js +3 -0
  582. package/dist/website/popups.d.ts +17 -0
  583. package/dist/website/popups.js +22 -0
  584. package/dist/website/slots/contract.d.ts +2 -0
  585. package/dist/website/slots/contract.js +2 -0
  586. package/dist/website/slots-contract.d.ts +2 -0
  587. package/dist/website/slots.d.ts +3 -0
  588. package/dist/website/slots.js +5 -0
  589. package/dist/writeLLMsTxt-UMHKGNRR.js +11 -0
  590. package/package.json +191 -161
  591. package/skills/site-kit/SKILL.md +9 -3
  592. package/dist/AnalyticsProvider-44PDLORZ.js +0 -34
  593. package/dist/AnalyticsProvider-44PDLORZ.js.map +0 -1
  594. package/dist/AnalyticsProvider-F6KHEAOX.mjs +0 -13
  595. package/dist/AnalyticsProvider-F6KHEAOX.mjs.map +0 -1
  596. package/dist/ArticleFaqSection-3KZ24MFS.js +0 -13
  597. package/dist/ArticleFaqSection-3KZ24MFS.js.map +0 -1
  598. package/dist/ArticleFaqSection-XZPXJVH4.mjs +0 -11
  599. package/dist/ArticleFaqSection-XZPXJVH4.mjs.map +0 -1
  600. package/dist/ArticleViewTracker-MGNVIHZ4.js +0 -54
  601. package/dist/ArticleViewTracker-MGNVIHZ4.js.map +0 -1
  602. package/dist/ArticleViewTracker-NI4UNSY7.mjs +0 -51
  603. package/dist/ArticleViewTracker-NI4UNSY7.mjs.map +0 -1
  604. package/dist/ChatWidget-XSALHDDW.mjs +0 -17
  605. package/dist/ChatWidget-XSALHDDW.mjs.map +0 -1
  606. package/dist/ChatWidget-YBXJRR2Z.js +0 -34
  607. package/dist/ChatWidget-YBXJRR2Z.js.map +0 -1
  608. package/dist/DatePicker-4WNKNNCV.mjs +0 -4
  609. package/dist/DatePicker-4WNKNNCV.mjs.map +0 -1
  610. package/dist/DatePicker-VPZR7RU3.js +0 -13
  611. package/dist/DatePicker-VPZR7RU3.js.map +0 -1
  612. package/dist/EngageWidget-DUEXPVOY.mjs +0 -13
  613. package/dist/EngageWidget-DUEXPVOY.mjs.map +0 -1
  614. package/dist/EngageWidget-MDCRS3BN.js +0 -22
  615. package/dist/EngageWidget-MDCRS3BN.js.map +0 -1
  616. package/dist/FileField-AXU6KBSV.js +0 -91
  617. package/dist/FileField-AXU6KBSV.js.map +0 -1
  618. package/dist/FileField-UTLGR5ZN.mjs +0 -85
  619. package/dist/FileField-UTLGR5ZN.mjs.map +0 -1
  620. package/dist/FormCelebration-7CBANVNS.mjs +0 -4
  621. package/dist/FormCelebration-7CBANVNS.mjs.map +0 -1
  622. package/dist/FormCelebration-O2O5S6JI.js +0 -13
  623. package/dist/FormCelebration-O2O5S6JI.js.map +0 -1
  624. package/dist/FormSpotlight-NWLCZMOT.mjs +0 -756
  625. package/dist/FormSpotlight-NWLCZMOT.mjs.map +0 -1
  626. package/dist/FormSpotlight-RR5KJDIH.js +0 -761
  627. package/dist/FormSpotlight-RR5KJDIH.js.map +0 -1
  628. package/dist/FormStage-GFNX4GLU.js +0 -422
  629. package/dist/FormStage-GFNX4GLU.js.map +0 -1
  630. package/dist/FormStage-V4XKLI6J.mjs +0 -420
  631. package/dist/FormStage-V4XKLI6J.mjs.map +0 -1
  632. package/dist/ManagedForm-4AD3LWSC.js +0 -25
  633. package/dist/ManagedForm-4AD3LWSC.js.map +0 -1
  634. package/dist/ManagedForm-4IWPG6AZ.mjs +0 -16
  635. package/dist/ManagedForm-4IWPG6AZ.mjs.map +0 -1
  636. package/dist/ManagedNewsletterForm-ARSY2VHC.mjs +0 -64
  637. package/dist/ManagedNewsletterForm-ARSY2VHC.mjs.map +0 -1
  638. package/dist/ManagedNewsletterForm-HJZNUABY.js +0 -66
  639. package/dist/ManagedNewsletterForm-HJZNUABY.js.map +0 -1
  640. package/dist/SignalCore-N2LKG4XN.mjs +0 -324
  641. package/dist/SignalCore-N2LKG4XN.mjs.map +0 -1
  642. package/dist/SignalCore-P2JUY2BO.js +0 -326
  643. package/dist/SignalCore-P2JUY2BO.js.map +0 -1
  644. package/dist/SitemapSync-KFY4PJ7G.js +0 -19
  645. package/dist/SitemapSync-KFY4PJ7G.js.map +0 -1
  646. package/dist/SitemapSync-UYDL7T4M.mjs +0 -10
  647. package/dist/SitemapSync-UYDL7T4M.mjs.map +0 -1
  648. package/dist/SitemapSync.d.ts.map +0 -1
  649. package/dist/admin-auth/index.d.ts.map +0 -1
  650. package/dist/admin-auth/index.js.map +0 -1
  651. package/dist/admin-auth/index.mjs +0 -0
  652. package/dist/admin-auth/index.mjs.map +0 -1
  653. package/dist/admin-auth/session.d.ts.map +0 -1
  654. package/dist/affiliates/AffiliatesWidget.d.ts.map +0 -1
  655. package/dist/affiliates/api.d.ts.map +0 -1
  656. package/dist/affiliates/index.d.ts.map +0 -1
  657. package/dist/affiliates/types.d.ts.map +0 -1
  658. package/dist/affiliates/useAffiliates.d.ts.map +0 -1
  659. package/dist/analytics/AnalyticsProvider.d.ts.map +0 -1
  660. package/dist/analytics/WebVitals.d.ts.map +0 -1
  661. package/dist/analytics/dispatch.d.ts.map +0 -1
  662. package/dist/analytics/index.d.ts.map +0 -1
  663. package/dist/analytics/index.js.map +0 -1
  664. package/dist/analytics/index.mjs +0 -15
  665. package/dist/analytics/index.mjs.map +0 -1
  666. package/dist/analytics/measurement-context.d.ts.map +0 -1
  667. package/dist/analytics/page-observation.d.ts.map +0 -1
  668. package/dist/analytics/send-gate.d.ts.map +0 -1
  669. package/dist/analytics/types.d.ts.map +0 -1
  670. package/dist/analytics/useContactTracking.d.ts.map +0 -1
  671. package/dist/api-D745LGGU.mjs +0 -183
  672. package/dist/api-XR5APCH3.js +0 -201
  673. package/dist/article-styles-DACUAOVT.mjs +0 -592
  674. package/dist/article-styles-DACUAOVT.mjs.map +0 -1
  675. package/dist/article-styles-JHHTNHOK.js +0 -595
  676. package/dist/article-styles-JHHTNHOK.js.map +0 -1
  677. package/dist/article-tables-EWXG4LNP.js +0 -17
  678. package/dist/article-tables-EWXG4LNP.js.map +0 -1
  679. package/dist/article-tables-OGE52LNT.mjs +0 -4
  680. package/dist/article-tables-OGE52LNT.mjs.map +0 -1
  681. package/dist/articles/Article.d.ts.map +0 -1
  682. package/dist/articles/ArticleFAQ.d.ts.map +0 -1
  683. package/dist/articles/ArticleFaqSection.d.ts.map +0 -1
  684. package/dist/articles/ArticleList.d.ts.map +0 -1
  685. package/dist/articles/ArticleViewTracker.d.ts.map +0 -1
  686. package/dist/articles/AuthorCard.d.ts.map +0 -1
  687. package/dist/articles/AuthorPage.d.ts.map +0 -1
  688. package/dist/articles/ClusterLandingPage.d.ts.map +0 -1
  689. package/dist/articles/ClusterNavigation.d.ts.map +0 -1
  690. package/dist/articles/ManagedNewsletterForm.d.ts.map +0 -1
  691. package/dist/articles/NewsletterShell.d.ts.map +0 -1
  692. package/dist/articles/NewsletterWidget.d.ts.map +0 -1
  693. package/dist/articles/PublicationLayout.d.ts.map +0 -1
  694. package/dist/articles/PublicationSidebar.d.ts.map +0 -1
  695. package/dist/articles/RelatedPosts.d.ts.map +0 -1
  696. package/dist/articles/ServiceCallout.d.ts.map +0 -1
  697. package/dist/articles/TableOfContents.d.ts.map +0 -1
  698. package/dist/articles/article-styles.d.ts.map +0 -1
  699. package/dist/articles/article-tables.d.ts.map +0 -1
  700. package/dist/articles/artwork.d.ts.map +0 -1
  701. package/dist/articles/author-schema.d.ts.map +0 -1
  702. package/dist/articles/author-social.d.ts.map +0 -1
  703. package/dist/articles/excerpt.d.ts.map +0 -1
  704. package/dist/articles/index.d.ts.map +0 -1
  705. package/dist/articles/index.js.map +0 -1
  706. package/dist/articles/index.mjs +0 -457
  707. package/dist/articles/index.mjs.map +0 -1
  708. package/dist/articles/news-sitemap.d.ts.map +0 -1
  709. package/dist/articles/processArticleHtml.d.ts.map +0 -1
  710. package/dist/articles/public-reads.d.ts.map +0 -1
  711. package/dist/articles/reading-time.d.ts.map +0 -1
  712. package/dist/articles/routes.d.ts.map +0 -1
  713. package/dist/articles/server-core.d.ts.map +0 -1
  714. package/dist/articles/server-ui.d.ts.map +0 -1
  715. package/dist/articles/server-ui.js.map +0 -1
  716. package/dist/articles/server-ui.mjs +0 -1098
  717. package/dist/articles/server-ui.mjs.map +0 -1
  718. package/dist/articles/server.d.ts.map +0 -1
  719. package/dist/articles/server.js.map +0 -1
  720. package/dist/articles/server.mjs +0 -11
  721. package/dist/articles/server.mjs.map +0 -1
  722. package/dist/articles/types.d.ts.map +0 -1
  723. package/dist/articles/widget-styles.d.ts.map +0 -1
  724. package/dist/brand/extract-brand-profile.d.ts.map +0 -1
  725. package/dist/chunk-2FEQ6TYD.mjs +0 -37
  726. package/dist/chunk-2FEQ6TYD.mjs.map +0 -1
  727. package/dist/chunk-34XL7TVH.js +0 -130
  728. package/dist/chunk-34XL7TVH.js.map +0 -1
  729. package/dist/chunk-3AOKYAZ2.js +0 -135
  730. package/dist/chunk-3AOKYAZ2.js.map +0 -1
  731. package/dist/chunk-3BLKKF67.mjs +0 -131
  732. package/dist/chunk-3BLKKF67.mjs.map +0 -1
  733. package/dist/chunk-3DWIYCQX.js +0 -30
  734. package/dist/chunk-3DWIYCQX.js.map +0 -1
  735. package/dist/chunk-3EAS4PAT.js +0 -141
  736. package/dist/chunk-3EAS4PAT.js.map +0 -1
  737. package/dist/chunk-3SDMJMN2.js +0 -71
  738. package/dist/chunk-3SDMJMN2.js.map +0 -1
  739. package/dist/chunk-3T2CVHFO.mjs +0 -453
  740. package/dist/chunk-3T2CVHFO.mjs.map +0 -1
  741. package/dist/chunk-42LLFAJQ.mjs +0 -932
  742. package/dist/chunk-42LLFAJQ.mjs.map +0 -1
  743. package/dist/chunk-4BEGKFMN.js +0 -133
  744. package/dist/chunk-4BEGKFMN.js.map +0 -1
  745. package/dist/chunk-4KAMU5HD.mjs +0 -16
  746. package/dist/chunk-4KAMU5HD.mjs.map +0 -1
  747. package/dist/chunk-4U5NCKQY.mjs +0 -39
  748. package/dist/chunk-4U5NCKQY.mjs.map +0 -1
  749. package/dist/chunk-4WCA2HM6.mjs +0 -57
  750. package/dist/chunk-4WCA2HM6.mjs.map +0 -1
  751. package/dist/chunk-54CARHDR.mjs +0 -95
  752. package/dist/chunk-54CARHDR.mjs.map +0 -1
  753. package/dist/chunk-55J2KE7D.js +0 -60
  754. package/dist/chunk-55J2KE7D.js.map +0 -1
  755. package/dist/chunk-5F2FIM5A.mjs +0 -135
  756. package/dist/chunk-5F2FIM5A.mjs.map +0 -1
  757. package/dist/chunk-5SANRSX3.mjs +0 -17
  758. package/dist/chunk-5SANRSX3.mjs.map +0 -1
  759. package/dist/chunk-5XFFUP6D.js +0 -100
  760. package/dist/chunk-5XFFUP6D.js.map +0 -1
  761. package/dist/chunk-5YA6SI4Z.mjs +0 -14279
  762. package/dist/chunk-5YVQWLSQ.mjs +0 -47
  763. package/dist/chunk-5YVQWLSQ.mjs.map +0 -1
  764. package/dist/chunk-5ZMTEK7U.js +0 -1430
  765. package/dist/chunk-5ZMTEK7U.js.map +0 -1
  766. package/dist/chunk-64BOVMXG.mjs +0 -68
  767. package/dist/chunk-64BOVMXG.mjs.map +0 -1
  768. package/dist/chunk-662YHKWW.mjs +0 -10
  769. package/dist/chunk-662YHKWW.mjs.map +0 -1
  770. package/dist/chunk-6C47333H.mjs +0 -55
  771. package/dist/chunk-6C47333H.mjs.map +0 -1
  772. package/dist/chunk-6EDVCUAG.mjs +0 -29
  773. package/dist/chunk-6EDVCUAG.mjs.map +0 -1
  774. package/dist/chunk-6FNFM7JL.js +0 -113
  775. package/dist/chunk-6FNFM7JL.js.map +0 -1
  776. package/dist/chunk-6OQYRVMI.js +0 -937
  777. package/dist/chunk-6OQYRVMI.js.map +0 -1
  778. package/dist/chunk-6PJTLBRR.mjs +0 -11
  779. package/dist/chunk-6PJTLBRR.mjs.map +0 -1
  780. package/dist/chunk-6XNEGG5B.mjs +0 -137
  781. package/dist/chunk-6XNEGG5B.mjs.map +0 -1
  782. package/dist/chunk-7F66Y4MA.mjs +0 -1073
  783. package/dist/chunk-7F66Y4MA.mjs.map +0 -1
  784. package/dist/chunk-7RLL67F3.js +0 -47
  785. package/dist/chunk-7RLL67F3.js.map +0 -1
  786. package/dist/chunk-7THQ4UW3.js +0 -69
  787. package/dist/chunk-7THQ4UW3.js.map +0 -1
  788. package/dist/chunk-A2HL22BO.mjs +0 -165
  789. package/dist/chunk-A2HL22BO.mjs.map +0 -1
  790. package/dist/chunk-AAZNH3MA.mjs +0 -23
  791. package/dist/chunk-AAZNH3MA.mjs.map +0 -1
  792. package/dist/chunk-AEN7EL6N.js +0 -161
  793. package/dist/chunk-AEN7EL6N.js.map +0 -1
  794. package/dist/chunk-AGIMH67E.mjs +0 -26
  795. package/dist/chunk-AGIMH67E.mjs.map +0 -1
  796. package/dist/chunk-AL4Z6VYF.js +0 -83
  797. package/dist/chunk-AL4Z6VYF.js.map +0 -1
  798. package/dist/chunk-AS2HUIDW.mjs +0 -16
  799. package/dist/chunk-AS2HUIDW.mjs.map +0 -1
  800. package/dist/chunk-B22WSN4L.mjs +0 -59
  801. package/dist/chunk-B22WSN4L.mjs.map +0 -1
  802. package/dist/chunk-B6QPCAEG.mjs +0 -128
  803. package/dist/chunk-B6QPCAEG.mjs.map +0 -1
  804. package/dist/chunk-BBBJHYPH.js +0 -19
  805. package/dist/chunk-BBBJHYPH.js.map +0 -1
  806. package/dist/chunk-BEXTDHO4.mjs +0 -57
  807. package/dist/chunk-BEXTDHO4.mjs.map +0 -1
  808. package/dist/chunk-BHZHWXER.js +0 -791
  809. package/dist/chunk-BHZHWXER.js.map +0 -1
  810. package/dist/chunk-BNKBRLJK.mjs +0 -75
  811. package/dist/chunk-BNKBRLJK.mjs.map +0 -1
  812. package/dist/chunk-BQP6JIE2.mjs +0 -28
  813. package/dist/chunk-BQP6JIE2.mjs.map +0 -1
  814. package/dist/chunk-BZR6RUIN.mjs +0 -128
  815. package/dist/chunk-BZR6RUIN.mjs.map +0 -1
  816. package/dist/chunk-C2CTLLIO.mjs +0 -72
  817. package/dist/chunk-C2CTLLIO.mjs.map +0 -1
  818. package/dist/chunk-C5VITBN7.mjs +0 -220
  819. package/dist/chunk-C5VITBN7.mjs.map +0 -1
  820. package/dist/chunk-CABEVWKJ.mjs +0 -25
  821. package/dist/chunk-CABEVWKJ.mjs.map +0 -1
  822. package/dist/chunk-CDRQYJUT.js +0 -355
  823. package/dist/chunk-CDRQYJUT.js.map +0 -1
  824. package/dist/chunk-CFRJ2MK5.mjs +0 -16
  825. package/dist/chunk-CFRJ2MK5.mjs.map +0 -1
  826. package/dist/chunk-CIM5W3UO.js +0 -26
  827. package/dist/chunk-CIM5W3UO.js.map +0 -1
  828. package/dist/chunk-CLO3K7PF.js +0 -19
  829. package/dist/chunk-CLO3K7PF.js.map +0 -1
  830. package/dist/chunk-CM4AVKXR.js +0 -533
  831. package/dist/chunk-CM4AVKXR.js.map +0 -1
  832. package/dist/chunk-CU6OGBKK.mjs +0 -68
  833. package/dist/chunk-CU6OGBKK.mjs.map +0 -1
  834. package/dist/chunk-CUNZAD46.js +0 -53
  835. package/dist/chunk-CUNZAD46.js.map +0 -1
  836. package/dist/chunk-CXAXZFFW.js +0 -157
  837. package/dist/chunk-CXAXZFFW.js.map +0 -1
  838. package/dist/chunk-D3WJMSTB.mjs +0 -132
  839. package/dist/chunk-D3WJMSTB.mjs.map +0 -1
  840. package/dist/chunk-DA7IANFG.mjs +0 -37
  841. package/dist/chunk-DA7IANFG.mjs.map +0 -1
  842. package/dist/chunk-DV2LJYFD.js +0 -14
  843. package/dist/chunk-DV2LJYFD.js.map +0 -1
  844. package/dist/chunk-DV5KVNA7.js +0 -45
  845. package/dist/chunk-DV5KVNA7.js.map +0 -1
  846. package/dist/chunk-DVYYGHSG.js +0 -285
  847. package/dist/chunk-DVYYGHSG.js.map +0 -1
  848. package/dist/chunk-DWZGW77V.mjs +0 -1669
  849. package/dist/chunk-DWZGW77V.mjs.map +0 -1
  850. package/dist/chunk-EDLNMGQC.mjs +0 -65
  851. package/dist/chunk-EDLNMGQC.mjs.map +0 -1
  852. package/dist/chunk-EHJANA5C.js +0 -231
  853. package/dist/chunk-EHJANA5C.js.map +0 -1
  854. package/dist/chunk-EMHSHAVW.js +0 -19
  855. package/dist/chunk-EMHSHAVW.js.map +0 -1
  856. package/dist/chunk-ESP5RMB7.js +0 -42
  857. package/dist/chunk-ESP5RMB7.js.map +0 -1
  858. package/dist/chunk-FCAHV5P3.mjs +0 -45
  859. package/dist/chunk-FCAHV5P3.mjs.map +0 -1
  860. package/dist/chunk-FPVYKSXE.mjs +0 -154
  861. package/dist/chunk-FPVYKSXE.mjs.map +0 -1
  862. package/dist/chunk-G2KGHIAP.js +0 -176
  863. package/dist/chunk-G2KGHIAP.js.map +0 -1
  864. package/dist/chunk-G6WF4G3E.js +0 -43
  865. package/dist/chunk-G6WF4G3E.js.map +0 -1
  866. package/dist/chunk-GCPPXUAI.js +0 -72
  867. package/dist/chunk-GCPPXUAI.js.map +0 -1
  868. package/dist/chunk-GFSQMK35.mjs +0 -127
  869. package/dist/chunk-GFSQMK35.mjs.map +0 -1
  870. package/dist/chunk-GIGUDKLS.mjs +0 -6
  871. package/dist/chunk-GIGUDKLS.mjs.map +0 -1
  872. package/dist/chunk-GSRT66PA.js +0 -80
  873. package/dist/chunk-GSRT66PA.js.map +0 -1
  874. package/dist/chunk-H4TSADY3.mjs +0 -761
  875. package/dist/chunk-H4TSADY3.mjs.map +0 -1
  876. package/dist/chunk-H6AU3WKF.js +0 -108
  877. package/dist/chunk-H6AU3WKF.js.map +0 -1
  878. package/dist/chunk-HGNSJXWT.js +0 -55
  879. package/dist/chunk-HGNSJXWT.js.map +0 -1
  880. package/dist/chunk-HIZJD7TU.mjs +0 -326
  881. package/dist/chunk-HIZJD7TU.mjs.map +0 -1
  882. package/dist/chunk-HPGPOUHU.mjs +0 -105
  883. package/dist/chunk-HPGPOUHU.mjs.map +0 -1
  884. package/dist/chunk-HXHDOIV6.js +0 -41
  885. package/dist/chunk-HXHDOIV6.js.map +0 -1
  886. package/dist/chunk-I7AZC5ZQ.js +0 -14285
  887. package/dist/chunk-IBJOGXQI.js +0 -33
  888. package/dist/chunk-IBJOGXQI.js.map +0 -1
  889. package/dist/chunk-IMWON7OV.mjs +0 -27
  890. package/dist/chunk-IMWON7OV.mjs.map +0 -1
  891. package/dist/chunk-IO65ROAO.js +0 -134
  892. package/dist/chunk-IO65ROAO.js.map +0 -1
  893. package/dist/chunk-IWSN4DGG.js +0 -132
  894. package/dist/chunk-IWSN4DGG.js.map +0 -1
  895. package/dist/chunk-J7QI3GDX.js +0 -12
  896. package/dist/chunk-J7QI3GDX.js.map +0 -1
  897. package/dist/chunk-JA77WXRE.js +0 -30
  898. package/dist/chunk-JA77WXRE.js.map +0 -1
  899. package/dist/chunk-JCDX37BY.js +0 -58
  900. package/dist/chunk-JCDX37BY.js.map +0 -1
  901. package/dist/chunk-JONWE26J.js +0 -81
  902. package/dist/chunk-JONWE26J.js.map +0 -1
  903. package/dist/chunk-JOYMIGR2.mjs +0 -24842
  904. package/dist/chunk-JP5WGL75.js +0 -62
  905. package/dist/chunk-JP5WGL75.js.map +0 -1
  906. package/dist/chunk-JS75ORH7.js +0 -24860
  907. package/dist/chunk-JSXLTZUP.mjs +0 -255
  908. package/dist/chunk-JSXLTZUP.mjs.map +0 -1
  909. package/dist/chunk-JX3PO2MH.js +0 -53
  910. package/dist/chunk-JX3PO2MH.js.map +0 -1
  911. package/dist/chunk-KHPJ3CEL.js +0 -72
  912. package/dist/chunk-KHPJ3CEL.js.map +0 -1
  913. package/dist/chunk-KP5BFPGT.js +0 -44
  914. package/dist/chunk-KP5BFPGT.js.map +0 -1
  915. package/dist/chunk-KR7ATPAN.js +0 -52
  916. package/dist/chunk-KR7ATPAN.js.map +0 -1
  917. package/dist/chunk-KZVSB5WE.mjs +0 -21
  918. package/dist/chunk-KZVSB5WE.mjs.map +0 -1
  919. package/dist/chunk-LVGSOW2F.js +0 -32
  920. package/dist/chunk-LVGSOW2F.js.map +0 -1
  921. package/dist/chunk-M2N7NY3V.js +0 -103
  922. package/dist/chunk-M2N7NY3V.js.map +0 -1
  923. package/dist/chunk-MDQLON5R.mjs +0 -101
  924. package/dist/chunk-MDQLON5R.mjs.map +0 -1
  925. package/dist/chunk-MHKD34B4.js +0 -1677
  926. package/dist/chunk-MHKD34B4.js.map +0 -1
  927. package/dist/chunk-MLVHVKFT.mjs +0 -148
  928. package/dist/chunk-MLVHVKFT.mjs.map +0 -1
  929. package/dist/chunk-MU3D5IO7.mjs +0 -283
  930. package/dist/chunk-MU3D5IO7.mjs.map +0 -1
  931. package/dist/chunk-MU7DTEUF.mjs +0 -77
  932. package/dist/chunk-MU7DTEUF.mjs.map +0 -1
  933. package/dist/chunk-MVHR77V4.js +0 -205
  934. package/dist/chunk-MVHR77V4.js.map +0 -1
  935. package/dist/chunk-MXJOKOFK.mjs +0 -51
  936. package/dist/chunk-MXJOKOFK.mjs.map +0 -1
  937. package/dist/chunk-NBOBOYMT.js +0 -52
  938. package/dist/chunk-NBOBOYMT.js.map +0 -1
  939. package/dist/chunk-NE6QGHFT.mjs +0 -240
  940. package/dist/chunk-NE6QGHFT.mjs.map +0 -1
  941. package/dist/chunk-NH2P27MA.js +0 -27
  942. package/dist/chunk-NH2P27MA.js.map +0 -1
  943. package/dist/chunk-NN2YE5WT.js +0 -325
  944. package/dist/chunk-NNZDWY3L.mjs +0 -323
  945. package/dist/chunk-NSWO43XW.mjs +0 -39
  946. package/dist/chunk-NSWO43XW.mjs.map +0 -1
  947. package/dist/chunk-NYXENHD2.mjs +0 -96
  948. package/dist/chunk-NYXENHD2.mjs.map +0 -1
  949. package/dist/chunk-O5GHP7UO.js +0 -142
  950. package/dist/chunk-O5GHP7UO.js.map +0 -1
  951. package/dist/chunk-OBKS3CPP.mjs +0 -50
  952. package/dist/chunk-OBKS3CPP.mjs.map +0 -1
  953. package/dist/chunk-OFBEBMXN.mjs +0 -8014
  954. package/dist/chunk-OFBEBMXN.mjs.map +0 -1
  955. package/dist/chunk-OGNX6JT4.js +0 -222
  956. package/dist/chunk-OGNX6JT4.js.map +0 -1
  957. package/dist/chunk-OIPG3EGM.js +0 -771
  958. package/dist/chunk-OIPG3EGM.js.map +0 -1
  959. package/dist/chunk-OSU4QA5M.js +0 -260
  960. package/dist/chunk-OSU4QA5M.js.map +0 -1
  961. package/dist/chunk-OY3PDIB3.js +0 -106
  962. package/dist/chunk-OY3PDIB3.js.map +0 -1
  963. package/dist/chunk-P4Y75QSU.js +0 -19
  964. package/dist/chunk-P4Y75QSU.js.map +0 -1
  965. package/dist/chunk-PENNTSJE.mjs +0 -99
  966. package/dist/chunk-PENNTSJE.mjs.map +0 -1
  967. package/dist/chunk-PFDRQJKJ.js +0 -1079
  968. package/dist/chunk-PFDRQJKJ.js.map +0 -1
  969. package/dist/chunk-PGYOBEPL.mjs +0 -150
  970. package/dist/chunk-PGYOBEPL.mjs.map +0 -1
  971. package/dist/chunk-PIPGH7GA.js +0 -158
  972. package/dist/chunk-PIPGH7GA.js.map +0 -1
  973. package/dist/chunk-PRAHDLKT.js +0 -67
  974. package/dist/chunk-PRAHDLKT.js.map +0 -1
  975. package/dist/chunk-PURI56RE.js +0 -8
  976. package/dist/chunk-PURI56RE.js.map +0 -1
  977. package/dist/chunk-QAQTDHHT.mjs +0 -1102
  978. package/dist/chunk-QAQTDHHT.mjs.map +0 -1
  979. package/dist/chunk-QCS7NWMA.js +0 -161
  980. package/dist/chunk-QCS7NWMA.js.map +0 -1
  981. package/dist/chunk-QRHVMTHF.mjs +0 -94
  982. package/dist/chunk-QRHVMTHF.mjs.map +0 -1
  983. package/dist/chunk-QZF5NTXQ.mjs +0 -28
  984. package/dist/chunk-QZF5NTXQ.mjs.map +0 -1
  985. package/dist/chunk-R5F2JQVX.mjs +0 -41
  986. package/dist/chunk-R5F2JQVX.mjs.map +0 -1
  987. package/dist/chunk-RC4WWQXR.js +0 -47
  988. package/dist/chunk-RC4WWQXR.js.map +0 -1
  989. package/dist/chunk-RCB6HEHM.mjs +0 -349
  990. package/dist/chunk-RCB6HEHM.mjs.map +0 -1
  991. package/dist/chunk-RI6DFQCA.js +0 -539
  992. package/dist/chunk-RI6DFQCA.js.map +0 -1
  993. package/dist/chunk-RLUNEEGM.js +0 -336
  994. package/dist/chunk-RLUNEEGM.js.map +0 -1
  995. package/dist/chunk-RMDH2HMW.js +0 -108
  996. package/dist/chunk-RMDH2HMW.js.map +0 -1
  997. package/dist/chunk-RQROZLH3.js +0 -1153
  998. package/dist/chunk-RQROZLH3.js.map +0 -1
  999. package/dist/chunk-SFMNUVDN.mjs +0 -49
  1000. package/dist/chunk-SFMNUVDN.mjs.map +0 -1
  1001. package/dist/chunk-SG7CWD2R.js +0 -138
  1002. package/dist/chunk-SG7CWD2R.js.map +0 -1
  1003. package/dist/chunk-SHLWA6JY.mjs +0 -26
  1004. package/dist/chunk-SHLWA6JY.mjs.map +0 -1
  1005. package/dist/chunk-SNAQBZPT.js +0 -68
  1006. package/dist/chunk-SNAQBZPT.js.map +0 -1
  1007. package/dist/chunk-SUGBIEYQ.js +0 -195
  1008. package/dist/chunk-SUGBIEYQ.js.map +0 -1
  1009. package/dist/chunk-SVCKJ5KH.mjs +0 -193
  1010. package/dist/chunk-SVCKJ5KH.mjs.map +0 -1
  1011. package/dist/chunk-SWIKKSKL.js +0 -19
  1012. package/dist/chunk-SWIKKSKL.js.map +0 -1
  1013. package/dist/chunk-TBXWJJGT.js +0 -468
  1014. package/dist/chunk-TBXWJJGT.js.map +0 -1
  1015. package/dist/chunk-THO4NS6Z.mjs +0 -1416
  1016. package/dist/chunk-THO4NS6Z.mjs.map +0 -1
  1017. package/dist/chunk-TMVKRQGJ.mjs +0 -64
  1018. package/dist/chunk-TMVKRQGJ.mjs.map +0 -1
  1019. package/dist/chunk-TPEPAHU5.mjs +0 -525
  1020. package/dist/chunk-TPEPAHU5.mjs.map +0 -1
  1021. package/dist/chunk-TST2IKYO.js +0 -264
  1022. package/dist/chunk-TST2IKYO.js.map +0 -1
  1023. package/dist/chunk-TULCHQX2.js +0 -29
  1024. package/dist/chunk-TULCHQX2.js.map +0 -1
  1025. package/dist/chunk-U577ITSA.js +0 -23
  1026. package/dist/chunk-U577ITSA.js.map +0 -1
  1027. package/dist/chunk-UCMMIGC6.mjs +0 -156
  1028. package/dist/chunk-UCMMIGC6.mjs.map +0 -1
  1029. package/dist/chunk-UCQDE5UH.mjs +0 -102
  1030. package/dist/chunk-UCQDE5UH.mjs.map +0 -1
  1031. package/dist/chunk-UHYRVALN.mjs +0 -98
  1032. package/dist/chunk-UHYRVALN.mjs.map +0 -1
  1033. package/dist/chunk-UO6KTHBQ.mjs +0 -125
  1034. package/dist/chunk-UO6KTHBQ.mjs.map +0 -1
  1035. package/dist/chunk-UZKXOZHR.js +0 -23
  1036. package/dist/chunk-UZKXOZHR.js.map +0 -1
  1037. package/dist/chunk-VA2O5OSV.mjs +0 -21
  1038. package/dist/chunk-VA2O5OSV.mjs.map +0 -1
  1039. package/dist/chunk-VIGRGMWR.mjs +0 -229
  1040. package/dist/chunk-VIGRGMWR.mjs.map +0 -1
  1041. package/dist/chunk-VJMPIRSD.js +0 -31
  1042. package/dist/chunk-VJMPIRSD.js.map +0 -1
  1043. package/dist/chunk-VJTKIKZY.mjs +0 -782
  1044. package/dist/chunk-VJTKIKZY.mjs.map +0 -1
  1045. package/dist/chunk-VQL7XDIY.mjs +0 -43
  1046. package/dist/chunk-VQL7XDIY.mjs.map +0 -1
  1047. package/dist/chunk-VS67QHNX.mjs +0 -34
  1048. package/dist/chunk-VS67QHNX.mjs.map +0 -1
  1049. package/dist/chunk-VUAGR6VL.js +0 -483
  1050. package/dist/chunk-VUAGR6VL.js.map +0 -1
  1051. package/dist/chunk-WRRVYPMY.mjs +0 -535
  1052. package/dist/chunk-WRRVYPMY.mjs.map +0 -1
  1053. package/dist/chunk-WS7MH3GD.js +0 -40
  1054. package/dist/chunk-WS7MH3GD.js.map +0 -1
  1055. package/dist/chunk-WSPGXSBU.mjs +0 -202
  1056. package/dist/chunk-WSPGXSBU.mjs.map +0 -1
  1057. package/dist/chunk-XEOIGCUE.mjs +0 -480
  1058. package/dist/chunk-XEOIGCUE.mjs.map +0 -1
  1059. package/dist/chunk-Y2CP5J6Q.js +0 -116
  1060. package/dist/chunk-Y2CP5J6Q.js.map +0 -1
  1061. package/dist/chunk-YBKALLBH.js +0 -46
  1062. package/dist/chunk-YBKALLBH.js.map +0 -1
  1063. package/dist/chunk-YMZNEDFP.js +0 -39
  1064. package/dist/chunk-YMZNEDFP.js.map +0 -1
  1065. package/dist/chunk-YPGUV6BT.mjs +0 -30
  1066. package/dist/chunk-YPGUV6BT.mjs.map +0 -1
  1067. package/dist/chunk-YU7QZ3PP.mjs +0 -45
  1068. package/dist/chunk-YU7QZ3PP.mjs.map +0 -1
  1069. package/dist/chunk-YVJASVVK.js +0 -97
  1070. package/dist/chunk-YVJASVVK.js.map +0 -1
  1071. package/dist/chunk-YZJ22HUQ.js +0 -29
  1072. package/dist/chunk-YZJ22HUQ.js.map +0 -1
  1073. package/dist/chunk-Z2URIOKG.mjs +0 -36
  1074. package/dist/chunk-Z2URIOKG.mjs.map +0 -1
  1075. package/dist/chunk-ZN4HBK5C.mjs +0 -17
  1076. package/dist/chunk-ZN4HBK5C.mjs.map +0 -1
  1077. package/dist/chunk-ZVBLXXNJ.mjs +0 -53
  1078. package/dist/chunk-ZVBLXXNJ.mjs.map +0 -1
  1079. package/dist/chunk-ZXC56JS3.js +0 -8071
  1080. package/dist/chunk-ZXC56JS3.js.map +0 -1
  1081. package/dist/chunk-ZZQAGCSI.mjs +0 -43
  1082. package/dist/chunk-ZZQAGCSI.mjs.map +0 -1
  1083. package/dist/cli/agent/checks.d.ts +0 -96
  1084. package/dist/cli/agent/checks.d.ts.map +0 -1
  1085. package/dist/cli/agent/context.d.ts +0 -50
  1086. package/dist/cli/agent/context.d.ts.map +0 -1
  1087. package/dist/cli/agent/envelope.d.ts +0 -98
  1088. package/dist/cli/agent/envelope.d.ts.map +0 -1
  1089. package/dist/cli/agent/errors.d.ts +0 -36
  1090. package/dist/cli/agent/errors.d.ts.map +0 -1
  1091. package/dist/cli/agent/output.d.ts +0 -41
  1092. package/dist/cli/agent/output.d.ts.map +0 -1
  1093. package/dist/cli/agent/ssr-bailout.d.ts +0 -27
  1094. package/dist/cli/agent/ssr-bailout.d.ts.map +0 -1
  1095. package/dist/cli/api/sonor.d.ts +0 -39
  1096. package/dist/cli/api/sonor.d.ts.map +0 -1
  1097. package/dist/cli/codemod/diff.d.ts +0 -14
  1098. package/dist/cli/codemod/diff.d.ts.map +0 -1
  1099. package/dist/cli/codemod/engine.d.ts +0 -26
  1100. package/dist/cli/codemod/engine.d.ts.map +0 -1
  1101. package/dist/cli/codemod/transforms.d.ts +0 -31
  1102. package/dist/cli/codemod/transforms.d.ts.map +0 -1
  1103. package/dist/cli/commands/api-routes.d.ts +0 -13
  1104. package/dist/cli/commands/api-routes.d.ts.map +0 -1
  1105. package/dist/cli/commands/codemod.d.ts +0 -21
  1106. package/dist/cli/commands/codemod.d.ts.map +0 -1
  1107. package/dist/cli/commands/doctor.d.ts +0 -27
  1108. package/dist/cli/commands/doctor.d.ts.map +0 -1
  1109. package/dist/cli/commands/faqs.d.ts +0 -16
  1110. package/dist/cli/commands/faqs.d.ts.map +0 -1
  1111. package/dist/cli/commands/geo.d.ts +0 -18
  1112. package/dist/cli/commands/geo.d.ts.map +0 -1
  1113. package/dist/cli/commands/images.d.ts +0 -85
  1114. package/dist/cli/commands/images.d.ts.map +0 -1
  1115. package/dist/cli/commands/init.d.ts +0 -21
  1116. package/dist/cli/commands/init.d.ts.map +0 -1
  1117. package/dist/cli/commands/install.d.ts +0 -15
  1118. package/dist/cli/commands/install.d.ts.map +0 -1
  1119. package/dist/cli/commands/locations.d.ts +0 -55
  1120. package/dist/cli/commands/locations.d.ts.map +0 -1
  1121. package/dist/cli/commands/manifest.d.ts +0 -17
  1122. package/dist/cli/commands/manifest.d.ts.map +0 -1
  1123. package/dist/cli/commands/migrate.d.ts +0 -19
  1124. package/dist/cli/commands/migrate.d.ts.map +0 -1
  1125. package/dist/cli/commands/next16.d.ts +0 -10
  1126. package/dist/cli/commands/next16.d.ts.map +0 -1
  1127. package/dist/cli/commands/og.d.ts +0 -117
  1128. package/dist/cli/commands/og.d.ts.map +0 -1
  1129. package/dist/cli/commands/scaffold.d.ts +0 -22
  1130. package/dist/cli/commands/scaffold.d.ts.map +0 -1
  1131. package/dist/cli/commands/scan.d.ts +0 -18
  1132. package/dist/cli/commands/scan.d.ts.map +0 -1
  1133. package/dist/cli/commands/setup.d.ts +0 -35
  1134. package/dist/cli/commands/setup.d.ts.map +0 -1
  1135. package/dist/cli/commands/sync.d.ts +0 -22
  1136. package/dist/cli/commands/sync.d.ts.map +0 -1
  1137. package/dist/cli/commands/upgrade.d.ts +0 -15
  1138. package/dist/cli/commands/upgrade.d.ts.map +0 -1
  1139. package/dist/cli/commands/verify.d.ts +0 -22
  1140. package/dist/cli/commands/verify.d.ts.map +0 -1
  1141. package/dist/cli/config.d.ts +0 -31
  1142. package/dist/cli/config.d.ts.map +0 -1
  1143. package/dist/cli/generators/index.d.ts +0 -60
  1144. package/dist/cli/generators/index.d.ts.map +0 -1
  1145. package/dist/cli/index.d.ts +0 -15
  1146. package/dist/cli/index.d.ts.map +0 -1
  1147. package/dist/cli/index.js +0 -32904
  1148. package/dist/cli/index.mjs +0 -32872
  1149. package/dist/cli/migrator/index.d.ts +0 -92
  1150. package/dist/cli/migrator/index.d.ts.map +0 -1
  1151. package/dist/cli/scanner/index.d.ts +0 -129
  1152. package/dist/cli/scanner/index.d.ts.map +0 -1
  1153. package/dist/cli/state.d.ts +0 -7
  1154. package/dist/cli/state.d.ts.map +0 -1
  1155. package/dist/client/SiteKitCredential.d.ts.map +0 -1
  1156. package/dist/client/index.d.ts.map +0 -1
  1157. package/dist/client/index.js.map +0 -1
  1158. package/dist/client/index.mjs +0 -27
  1159. package/dist/client/index.mjs.map +0 -1
  1160. package/dist/cms/CmsPage.d.ts.map +0 -1
  1161. package/dist/cms/CmsPreview.d.ts.map +0 -1
  1162. package/dist/cms/CmsSection.d.ts.map +0 -1
  1163. package/dist/cms/PortableTextRenderer.d.ts.map +0 -1
  1164. package/dist/cms/index.d.ts.map +0 -1
  1165. package/dist/cms/index.js.map +0 -1
  1166. package/dist/cms/index.mjs +0 -389
  1167. package/dist/cms/index.mjs.map +0 -1
  1168. package/dist/cms/sanity-image.d.ts.map +0 -1
  1169. package/dist/cms/sections/CtaSection.d.ts.map +0 -1
  1170. package/dist/cms/sections/CustomSection.d.ts.map +0 -1
  1171. package/dist/cms/sections/FaqSection.d.ts.map +0 -1
  1172. package/dist/cms/sections/FormSection.d.ts.map +0 -1
  1173. package/dist/cms/sections/GallerySection.d.ts.map +0 -1
  1174. package/dist/cms/sections/HeroSection.d.ts.map +0 -1
  1175. package/dist/cms/sections/RichTextSection.d.ts.map +0 -1
  1176. package/dist/cms/sections/TestimonialsSection.d.ts.map +0 -1
  1177. package/dist/cms/sections/index.d.ts.map +0 -1
  1178. package/dist/cms/server-api.d.ts.map +0 -1
  1179. package/dist/cms/server.d.ts.map +0 -1
  1180. package/dist/cms/server.js.map +0 -1
  1181. package/dist/cms/server.mjs +0 -5
  1182. package/dist/cms/server.mjs.map +0 -1
  1183. package/dist/cms/types.d.ts.map +0 -1
  1184. package/dist/commerce/CalendarView.d.ts.map +0 -1
  1185. package/dist/commerce/CheckoutForm.d.ts.map +0 -1
  1186. package/dist/commerce/EventCalendar.d.ts.map +0 -1
  1187. package/dist/commerce/EventCheckout.d.ts.map +0 -1
  1188. package/dist/commerce/EventEmbed.d.ts.map +0 -1
  1189. package/dist/commerce/EventModal.d.ts.map +0 -1
  1190. package/dist/commerce/EventTile.d.ts.map +0 -1
  1191. package/dist/commerce/EventsAgenda.d.ts.map +0 -1
  1192. package/dist/commerce/EventsWidget.d.ts.map +0 -1
  1193. package/dist/commerce/OfferingCard.d.ts.map +0 -1
  1194. package/dist/commerce/OfferingList.d.ts.map +0 -1
  1195. package/dist/commerce/ProductDetail.d.ts.map +0 -1
  1196. package/dist/commerce/ProductEmbed.d.ts.map +0 -1
  1197. package/dist/commerce/ProductGrid.d.ts.map +0 -1
  1198. package/dist/commerce/ProductPage.d.ts.map +0 -1
  1199. package/dist/commerce/RegistrationForm.d.ts.map +0 -1
  1200. package/dist/commerce/SizeChart.d.ts.map +0 -1
  1201. package/dist/commerce/UpcomingEvents.d.ts.map +0 -1
  1202. package/dist/commerce/api.d.ts.map +0 -1
  1203. package/dist/commerce/events-extras.d.ts.map +0 -1
  1204. package/dist/commerce/index.d.ts.map +0 -1
  1205. package/dist/commerce/index.js.map +0 -1
  1206. package/dist/commerce/index.mjs +0 -16
  1207. package/dist/commerce/index.mjs.map +0 -1
  1208. package/dist/commerce/server.d.ts.map +0 -1
  1209. package/dist/commerce/server.js.map +0 -1
  1210. package/dist/commerce/server.mjs +0 -237
  1211. package/dist/commerce/server.mjs.map +0 -1
  1212. package/dist/commerce/types.d.ts.map +0 -1
  1213. package/dist/commerce/useEventModal.d.ts.map +0 -1
  1214. package/dist/commerce/utils.d.ts.map +0 -1
  1215. package/dist/config/index.d.ts.map +0 -1
  1216. package/dist/config/index.js.map +0 -1
  1217. package/dist/config/index.mjs +0 -116
  1218. package/dist/config/index.mjs.map +0 -1
  1219. package/dist/cta-bar/CtaBar.d.ts.map +0 -1
  1220. package/dist/cta-bar/CtaBarBehavior.d.ts.map +0 -1
  1221. package/dist/cta-bar/client.d.ts.map +0 -1
  1222. package/dist/cta-bar/client.js.map +0 -1
  1223. package/dist/cta-bar/client.mjs +0 -6
  1224. package/dist/cta-bar/client.mjs.map +0 -1
  1225. package/dist/cta-bar/index.d.ts.map +0 -1
  1226. package/dist/cta-bar/index.js.map +0 -1
  1227. package/dist/cta-bar/index.mjs +0 -221
  1228. package/dist/cta-bar/index.mjs.map +0 -1
  1229. package/dist/cta-bar/styles.d.ts.map +0 -1
  1230. package/dist/discover-LPN55L5B.js +0 -21
  1231. package/dist/discover-LPN55L5B.js.map +0 -1
  1232. package/dist/discover-QGA6QFSR.mjs +0 -4
  1233. package/dist/discover-QGA6QFSR.mjs.map +0 -1
  1234. package/dist/engage/ChatWidget.d.ts.map +0 -1
  1235. package/dist/engage/DesignRenderer.d.ts.map +0 -1
  1236. package/dist/engage/EchoUiActions.d.ts.map +0 -1
  1237. package/dist/engage/EngageWidget.d.ts.map +0 -1
  1238. package/dist/engage/brand-color.d.ts.map +0 -1
  1239. package/dist/engage/chat-messages.d.ts.map +0 -1
  1240. package/dist/engage/echo-config.d.ts.map +0 -1
  1241. package/dist/engage/element-rules.d.ts.map +0 -1
  1242. package/dist/engage/index.d.ts.map +0 -1
  1243. package/dist/engage/index.js.map +0 -1
  1244. package/dist/engage/index.mjs +0 -51
  1245. package/dist/engage/index.mjs.map +0 -1
  1246. package/dist/engage/launcher-placement.d.ts.map +0 -1
  1247. package/dist/engage/socket-loader.d.ts.map +0 -1
  1248. package/dist/engage/types.d.ts.map +0 -1
  1249. package/dist/fleet/FleetHeartbeat.d.ts.map +0 -1
  1250. package/dist/fleet/contract.d.ts.map +0 -1
  1251. package/dist/fleet/contract.js.map +0 -1
  1252. package/dist/fleet/contract.mjs +0 -4
  1253. package/dist/fleet/contract.mjs.map +0 -1
  1254. package/dist/fleet/heartbeat.d.ts.map +0 -1
  1255. package/dist/fleet/index.d.ts.map +0 -1
  1256. package/dist/fleet/index.js.map +0 -1
  1257. package/dist/fleet/index.mjs +0 -12
  1258. package/dist/fleet/index.mjs.map +0 -1
  1259. package/dist/forms/DatePicker.d.ts.map +0 -1
  1260. package/dist/forms/FileField.d.ts.map +0 -1
  1261. package/dist/forms/FormCelebration.d.ts.map +0 -1
  1262. package/dist/forms/FormClient.d.ts.map +0 -1
  1263. package/dist/forms/FormEnhancer.d.ts.map +0 -1
  1264. package/dist/forms/FormField.d.ts.map +0 -1
  1265. package/dist/forms/FormSpotlight.d.ts.map +0 -1
  1266. package/dist/forms/FormStage.d.ts.map +0 -1
  1267. package/dist/forms/HoneypotField.d.ts.map +0 -1
  1268. package/dist/forms/ManagedForm.d.ts.map +0 -1
  1269. package/dist/forms/ServerForm.d.ts.map +0 -1
  1270. package/dist/forms/StaticForm.d.ts.map +0 -1
  1271. package/dist/forms/contract.d.ts.map +0 -1
  1272. package/dist/forms/contract.js.map +0 -1
  1273. package/dist/forms/contract.mjs +0 -4
  1274. package/dist/forms/contract.mjs.map +0 -1
  1275. package/dist/forms/defaultSuccessMessage.d.ts.map +0 -1
  1276. package/dist/forms/delight.d.ts.map +0 -1
  1277. package/dist/forms/experience-chrome.d.ts.map +0 -1
  1278. package/dist/forms/experience-plan.d.ts.map +0 -1
  1279. package/dist/forms/field-controls.d.ts.map +0 -1
  1280. package/dist/forms/field-interactions.d.ts.map +0 -1
  1281. package/dist/forms/field-rules.d.ts.map +0 -1
  1282. package/dist/forms/form-values.d.ts.map +0 -1
  1283. package/dist/forms/formsApi.d.ts.map +0 -1
  1284. package/dist/forms/ga4-identity.d.ts.map +0 -1
  1285. package/dist/forms/index.d.ts.map +0 -1
  1286. package/dist/forms/index.js.map +0 -1
  1287. package/dist/forms/index.mjs +0 -341
  1288. package/dist/forms/index.mjs.map +0 -1
  1289. package/dist/forms/normalize-config.d.ts.map +0 -1
  1290. package/dist/forms/recaptcha-warmup.d.ts.map +0 -1
  1291. package/dist/forms/recaptcha.d.ts.map +0 -1
  1292. package/dist/forms/server.d.ts.map +0 -1
  1293. package/dist/forms/server.js.map +0 -1
  1294. package/dist/forms/server.mjs +0 -61
  1295. package/dist/forms/server.mjs.map +0 -1
  1296. package/dist/forms/static.d.ts.map +0 -1
  1297. package/dist/forms/static.js.map +0 -1
  1298. package/dist/forms/static.mjs +0 -8
  1299. package/dist/forms/static.mjs.map +0 -1
  1300. package/dist/forms/submitForm.d.ts.map +0 -1
  1301. package/dist/forms/tracking-session.d.ts.map +0 -1
  1302. package/dist/forms/types.d.ts.map +0 -1
  1303. package/dist/forms/useForm.d.ts.map +0 -1
  1304. package/dist/forms/useFormTracking.d.ts.map +0 -1
  1305. package/dist/images/ManagedFavicon.d.ts.map +0 -1
  1306. package/dist/images/ManagedImage.d.ts.map +0 -1
  1307. package/dist/images/api.d.ts.map +0 -1
  1308. package/dist/images/index.d.ts.map +0 -1
  1309. package/dist/images/index.js.map +0 -1
  1310. package/dist/images/index.mjs +0 -8
  1311. package/dist/images/index.mjs.map +0 -1
  1312. package/dist/images/server.d.ts.map +0 -1
  1313. package/dist/images/server.js.map +0 -1
  1314. package/dist/images/server.mjs +0 -4
  1315. package/dist/images/server.mjs.map +0 -1
  1316. package/dist/index.d.ts.map +0 -1
  1317. package/dist/index.js.map +0 -1
  1318. package/dist/index.mjs +0 -173
  1319. package/dist/index.mjs.map +0 -1
  1320. package/dist/landing/LandingPage.d.ts.map +0 -1
  1321. package/dist/landing/contract.d.ts.map +0 -1
  1322. package/dist/landing/index.d.ts.map +0 -1
  1323. package/dist/landing/index.js.map +0 -1
  1324. package/dist/landing/index.mjs +0 -5
  1325. package/dist/landing/index.mjs.map +0 -1
  1326. package/dist/landing/metadata.d.ts.map +0 -1
  1327. package/dist/landing/server.d.ts.map +0 -1
  1328. package/dist/landing/server.js.map +0 -1
  1329. package/dist/landing/server.mjs +0 -4
  1330. package/dist/landing/server.mjs.map +0 -1
  1331. package/dist/layout/SiteKitClientProviders.d.ts.map +0 -1
  1332. package/dist/layout/SiteKitLayout.d.ts.map +0 -1
  1333. package/dist/layout/SpeculationRules.d.ts.map +0 -1
  1334. package/dist/layout/client.d.ts.map +0 -1
  1335. package/dist/layout/client.js.map +0 -1
  1336. package/dist/layout/client.mjs +0 -19
  1337. package/dist/layout/client.mjs.map +0 -1
  1338. package/dist/layout/index.d.ts.map +0 -1
  1339. package/dist/layout/index.js.map +0 -1
  1340. package/dist/layout/index.mjs +0 -106
  1341. package/dist/layout/index.mjs.map +0 -1
  1342. package/dist/layout/types.d.ts.map +0 -1
  1343. package/dist/lib-6HOOMENJ.js +0 -28
  1344. package/dist/lib-BGAWCSUH.js +0 -31
  1345. package/dist/lib-R7IQ4ZHE.mjs +0 -3
  1346. package/dist/lib-RSDMEKDQ.mjs +0 -4
  1347. package/dist/llms/AEOComponents.d.ts.map +0 -1
  1348. package/dist/llms/SpeakableSchema.d.ts.map +0 -1
  1349. package/dist/llms/aiRobots.d.ts.map +0 -1
  1350. package/dist/llms/api.d.ts.map +0 -1
  1351. package/dist/llms/client.d.ts.map +0 -1
  1352. package/dist/llms/client.js.map +0 -1
  1353. package/dist/llms/client.mjs +0 -5
  1354. package/dist/llms/client.mjs.map +0 -1
  1355. package/dist/llms/contract.d.ts.map +0 -1
  1356. package/dist/llms/contract.js.map +0 -1
  1357. package/dist/llms/contract.mjs +0 -4
  1358. package/dist/llms/contract.mjs.map +0 -1
  1359. package/dist/llms/discovery-headers.d.ts.map +0 -1
  1360. package/dist/llms/generateLLMsTxt.d.ts.map +0 -1
  1361. package/dist/llms/handlers.d.ts.map +0 -1
  1362. package/dist/llms/humanize-industry.d.ts.map +0 -1
  1363. package/dist/llms/index.d.ts.map +0 -1
  1364. package/dist/llms/index.js.map +0 -1
  1365. package/dist/llms/index.mjs +0 -286
  1366. package/dist/llms/index.mjs.map +0 -1
  1367. package/dist/llms/links.d.ts.map +0 -1
  1368. package/dist/llms/revalidate.d.ts.map +0 -1
  1369. package/dist/llms/seo-revalidate.d.ts.map +0 -1
  1370. package/dist/llms/sourcedFacts.d.ts.map +0 -1
  1371. package/dist/llms/types.d.ts.map +0 -1
  1372. package/dist/llms/wiring.d.ts +0 -103
  1373. package/dist/llms/wiring.d.ts.map +0 -1
  1374. package/dist/llms/writeLLMsTxt.d.ts.map +0 -1
  1375. package/dist/manifest/index.d.ts.map +0 -1
  1376. package/dist/manifest/index.js.map +0 -1
  1377. package/dist/manifest/index.mjs +0 -83
  1378. package/dist/manifest/index.mjs.map +0 -1
  1379. package/dist/maps/GoogleMap.d.ts.map +0 -1
  1380. package/dist/maps/NeighborhoodMap.d.ts.map +0 -1
  1381. package/dist/maps/api.d.ts.map +0 -1
  1382. package/dist/maps/index.d.ts.map +0 -1
  1383. package/dist/maps/index.js.map +0 -1
  1384. package/dist/maps/index.mjs +0 -361
  1385. package/dist/maps/index.mjs.map +0 -1
  1386. package/dist/maps/types.d.ts.map +0 -1
  1387. package/dist/mcp/WebMcpTools.d.ts.map +0 -1
  1388. package/dist/mcp/client.d.ts.map +0 -1
  1389. package/dist/mcp/client.js.map +0 -1
  1390. package/dist/mcp/client.mjs +0 -129
  1391. package/dist/mcp/client.mjs.map +0 -1
  1392. package/dist/mcp/declarative.d.ts.map +0 -1
  1393. package/dist/mcp/handlers.d.ts.map +0 -1
  1394. package/dist/mcp/index.d.ts.map +0 -1
  1395. package/dist/mcp/index.js.map +0 -1
  1396. package/dist/mcp/index.mjs +0 -509
  1397. package/dist/mcp/index.mjs.map +0 -1
  1398. package/dist/mcp/protocol.d.ts.map +0 -1
  1399. package/dist/mcp/serverCard.d.ts.map +0 -1
  1400. package/dist/mcp/transport.d.ts.map +0 -1
  1401. package/dist/mcp/transport.js.map +0 -1
  1402. package/dist/mcp/transport.mjs +0 -123
  1403. package/dist/mcp/transport.mjs.map +0 -1
  1404. package/dist/mcp/types.d.ts.map +0 -1
  1405. package/dist/motion/CountUp.d.ts.map +0 -1
  1406. package/dist/motion/Parallax.d.ts.map +0 -1
  1407. package/dist/motion/Reveal.d.ts.map +0 -1
  1408. package/dist/motion/ScrollScene.d.ts.map +0 -1
  1409. package/dist/motion/engine.d.ts.map +0 -1
  1410. package/dist/motion/failsafe.d.ts.map +0 -1
  1411. package/dist/motion/gsap.d.ts.map +0 -1
  1412. package/dist/motion/gsap.js.map +0 -1
  1413. package/dist/motion/gsap.mjs +0 -220
  1414. package/dist/motion/gsap.mjs.map +0 -1
  1415. package/dist/motion/index.d.ts.map +0 -1
  1416. package/dist/motion/index.js.map +0 -1
  1417. package/dist/motion/index.mjs +0 -209
  1418. package/dist/motion/index.mjs.map +0 -1
  1419. package/dist/motion/three.d.ts.map +0 -1
  1420. package/dist/motion/three.js.map +0 -1
  1421. package/dist/motion/three.mjs +0 -145
  1422. package/dist/motion/three.mjs.map +0 -1
  1423. package/dist/og/config.d.ts.map +0 -1
  1424. package/dist/og/contrast.d.ts.map +0 -1
  1425. package/dist/og/index.d.ts.map +0 -1
  1426. package/dist/og/index.js.map +0 -1
  1427. package/dist/og/index.mjs +0 -6
  1428. package/dist/og/index.mjs.map +0 -1
  1429. package/dist/og/pages.d.ts.map +0 -1
  1430. package/dist/og/route-copy.d.ts +0 -34
  1431. package/dist/og/route-copy.d.ts.map +0 -1
  1432. package/dist/og/route-fit.d.ts.map +0 -1
  1433. package/dist/og/route.d.ts.map +0 -1
  1434. package/dist/og/route.js.map +0 -1
  1435. package/dist/og/route.mjs +0 -239
  1436. package/dist/og/route.mjs.map +0 -1
  1437. package/dist/og/template.d.ts.map +0 -1
  1438. package/dist/og/wiring.d.ts +0 -100
  1439. package/dist/og/wiring.d.ts.map +0 -1
  1440. package/dist/portfolio/contract.d.ts.map +0 -1
  1441. package/dist/portfolio/contract.js.map +0 -1
  1442. package/dist/portfolio/contract.mjs +0 -115
  1443. package/dist/portfolio/contract.mjs.map +0 -1
  1444. package/dist/proxy/index.d.ts.map +0 -1
  1445. package/dist/proxy/index.js.map +0 -1
  1446. package/dist/proxy/index.mjs +0 -170
  1447. package/dist/proxy/index.mjs.map +0 -1
  1448. package/dist/proxy/securityHeaders.d.ts.map +0 -1
  1449. package/dist/proxy/segment.d.ts.map +0 -1
  1450. package/dist/redirects/index.d.ts.map +0 -1
  1451. package/dist/redirects/index.js.map +0 -1
  1452. package/dist/redirects/index.mjs +0 -8
  1453. package/dist/redirects/index.mjs.map +0 -1
  1454. package/dist/redirects/not-found.d.ts +0 -31
  1455. package/dist/redirects/not-found.d.ts.map +0 -1
  1456. package/dist/redirects/not-found.js +0 -47
  1457. package/dist/redirects/not-found.js.map +0 -1
  1458. package/dist/redirects/not-found.mjs +0 -45
  1459. package/dist/redirects/not-found.mjs.map +0 -1
  1460. package/dist/reputation/TestimonialSection.d.ts.map +0 -1
  1461. package/dist/reputation/api.d.ts.map +0 -1
  1462. package/dist/reputation/index.d.ts.map +0 -1
  1463. package/dist/reputation/index.js.map +0 -1
  1464. package/dist/reputation/index.mjs +0 -5
  1465. package/dist/reputation/index.mjs.map +0 -1
  1466. package/dist/reputation/server.d.ts.map +0 -1
  1467. package/dist/reputation/server.js.map +0 -1
  1468. package/dist/reputation/server.mjs +0 -4
  1469. package/dist/reputation/server.mjs.map +0 -1
  1470. package/dist/reputation/types.d.ts.map +0 -1
  1471. package/dist/robots/index.d.ts.map +0 -1
  1472. package/dist/robots/index.js.map +0 -1
  1473. package/dist/robots/index.mjs +0 -53
  1474. package/dist/robots/index.mjs.map +0 -1
  1475. package/dist/robots/indexnow.d.ts.map +0 -1
  1476. package/dist/robots/indexnow.js.map +0 -1
  1477. package/dist/robots/indexnow.mjs +0 -34
  1478. package/dist/robots/indexnow.mjs.map +0 -1
  1479. package/dist/robots/next-internals.d.ts.map +0 -1
  1480. package/dist/search/contract.d.ts +0 -62
  1481. package/dist/search/contract.d.ts.map +0 -1
  1482. package/dist/search/contract.js +0 -17
  1483. package/dist/search/contract.js.map +0 -1
  1484. package/dist/search/contract.mjs +0 -4
  1485. package/dist/search/contract.mjs.map +0 -1
  1486. package/dist/search/index.d.ts +0 -52
  1487. package/dist/search/index.d.ts.map +0 -1
  1488. package/dist/search/index.js +0 -105
  1489. package/dist/search/index.js.map +0 -1
  1490. package/dist/search/index.mjs +0 -99
  1491. package/dist/search/index.mjs.map +0 -1
  1492. package/dist/seo/LocationPageContent.d.ts +0 -64
  1493. package/dist/seo/LocationPageContent.d.ts.map +0 -1
  1494. package/dist/seo/ManagedContent.d.ts.map +0 -1
  1495. package/dist/seo/ManagedFAQ.d.ts.map +0 -1
  1496. package/dist/seo/ManagedInternalLinks.d.ts.map +0 -1
  1497. package/dist/seo/ManagedSchema.d.ts.map +0 -1
  1498. package/dist/seo/ManagedScripts.d.ts.map +0 -1
  1499. package/dist/seo/api.d.ts.map +0 -1
  1500. package/dist/seo/client.d.ts.map +0 -1
  1501. package/dist/seo/client.js.map +0 -1
  1502. package/dist/seo/client.mjs +0 -11
  1503. package/dist/seo/client.mjs.map +0 -1
  1504. package/dist/seo/getManagedMetadata.d.ts.map +0 -1
  1505. package/dist/seo/groundingSchema.d.ts.map +0 -1
  1506. package/dist/seo/index.d.ts.map +0 -1
  1507. package/dist/seo/index.js.map +0 -1
  1508. package/dist/seo/index.mjs +0 -702
  1509. package/dist/seo/index.mjs.map +0 -1
  1510. package/dist/seo/register-sitemap-cli-impl.d.ts.map +0 -1
  1511. package/dist/seo/register-sitemap-cli.d.ts.map +0 -1
  1512. package/dist/seo/register-sitemap-cli.mjs +0 -528
  1513. package/dist/seo/register-sitemap-request.d.ts.map +0 -1
  1514. package/dist/seo/routing.d.ts.map +0 -1
  1515. package/dist/seo/safeJsonLd.d.ts.map +0 -1
  1516. package/dist/seo/schema-filter.d.ts.map +0 -1
  1517. package/dist/seo/server-api.d.ts.map +0 -1
  1518. package/dist/seo/server.d.ts.map +0 -1
  1519. package/dist/seo/server.js.map +0 -1
  1520. package/dist/seo/server.mjs +0 -11
  1521. package/dist/seo/server.mjs.map +0 -1
  1522. package/dist/seo/types.d.ts.map +0 -1
  1523. package/dist/seo/withManagedMetadata.d.ts.map +0 -1
  1524. package/dist/seo-meta/contract.d.ts.map +0 -1
  1525. package/dist/seo-meta/contract.js.map +0 -1
  1526. package/dist/seo-meta/contract.mjs +0 -4
  1527. package/dist/seo-meta/contract.mjs.map +0 -1
  1528. package/dist/seo-pages/contract.d.ts.map +0 -1
  1529. package/dist/seo-pages/contract.js.map +0 -1
  1530. package/dist/seo-pages/contract.mjs +0 -45
  1531. package/dist/seo-pages/contract.mjs.map +0 -1
  1532. package/dist/server/index.d.ts.map +0 -1
  1533. package/dist/server/index.js.map +0 -1
  1534. package/dist/server/index.mjs +0 -7
  1535. package/dist/server/index.mjs.map +0 -1
  1536. package/dist/server/mint-site-token.d.ts.map +0 -1
  1537. package/dist/server/server-fetch.d.ts.map +0 -1
  1538. package/dist/server-api-7F5P6CSH.mjs +0 -9
  1539. package/dist/server-api-7F5P6CSH.mjs.map +0 -1
  1540. package/dist/server-api-OC5JNK6R.js +0 -86
  1541. package/dist/server-api-OC5JNK6R.js.map +0 -1
  1542. package/dist/setup/index.d.ts +0 -12
  1543. package/dist/setup/index.d.ts.map +0 -1
  1544. package/dist/setup/index.js +0 -4
  1545. package/dist/setup/index.js.map +0 -1
  1546. package/dist/setup/index.mjs +0 -3
  1547. package/dist/setup/index.mjs.map +0 -1
  1548. package/dist/shared/build-entries.d.ts.map +0 -1
  1549. package/dist/shared/color.d.ts.map +0 -1
  1550. package/dist/shared/defer.d.ts.map +0 -1
  1551. package/dist/shared/fetchWithRetry.d.ts.map +0 -1
  1552. package/dist/shared/frame.d.ts.map +0 -1
  1553. package/dist/shared/fresh-fetch.d.ts.map +0 -1
  1554. package/dist/shared/glass.d.ts.map +0 -1
  1555. package/dist/shared/identity.d.ts.map +0 -1
  1556. package/dist/shared/next-files.d.ts.map +0 -1
  1557. package/dist/shared/page-leave.d.ts.map +0 -1
  1558. package/dist/shared/publishCredential.d.ts.map +0 -1
  1559. package/dist/shared/reporting-gate.d.ts.map +0 -1
  1560. package/dist/shared/request-guards.d.ts.map +0 -1
  1561. package/dist/shared/siteToken.d.ts.map +0 -1
  1562. package/dist/shared/sonorFetch.d.ts.map +0 -1
  1563. package/dist/shared/source-graph.d.ts.map +0 -1
  1564. package/dist/shared/uuid.d.ts.map +0 -1
  1565. package/dist/shared/version.d.ts.map +0 -1
  1566. package/dist/shared/visual-viewport-gap.d.ts.map +0 -1
  1567. package/dist/signal/SignalBridge.d.ts.map +0 -1
  1568. package/dist/signal/SignalCore.d.ts.map +0 -1
  1569. package/dist/signal/SignalExperiment.d.ts.map +0 -1
  1570. package/dist/signal/index.d.ts.map +0 -1
  1571. package/dist/signal/index.js.map +0 -1
  1572. package/dist/signal/index.mjs +0 -6
  1573. package/dist/signal/index.mjs.map +0 -1
  1574. package/dist/signal/store.d.ts.map +0 -1
  1575. package/dist/signal/types.d.ts.map +0 -1
  1576. package/dist/site-config/index.d.ts.map +0 -1
  1577. package/dist/site-config/index.js.map +0 -1
  1578. package/dist/site-config/index.mjs +0 -4
  1579. package/dist/site-config/index.mjs.map +0 -1
  1580. package/dist/sitemap/discover.d.ts.map +0 -1
  1581. package/dist/sitemap/index.d.ts.map +0 -1
  1582. package/dist/sitemap/index.js.map +0 -1
  1583. package/dist/sitemap/index.mjs +0 -549
  1584. package/dist/sitemap/index.mjs.map +0 -1
  1585. package/dist/sitemap/shared.d.ts.map +0 -1
  1586. package/dist/sites/contract.d.ts.map +0 -1
  1587. package/dist/sites/contract.js.map +0 -1
  1588. package/dist/sites/contract.mjs +0 -5
  1589. package/dist/sites/contract.mjs.map +0 -1
  1590. package/dist/sites/normalize.d.ts.map +0 -1
  1591. package/dist/sites/resolve.d.ts.map +0 -1
  1592. package/dist/sites/site-param.d.ts.map +0 -1
  1593. package/dist/slots/ManagedSlot.d.ts.map +0 -1
  1594. package/dist/slots/contract.d.ts.map +0 -1
  1595. package/dist/slots/contract.js.map +0 -1
  1596. package/dist/slots/contract.mjs +0 -4
  1597. package/dist/slots/contract.mjs.map +0 -1
  1598. package/dist/slots/index.d.ts.map +0 -1
  1599. package/dist/slots/index.js.map +0 -1
  1600. package/dist/slots/index.mjs +0 -142
  1601. package/dist/slots/index.mjs.map +0 -1
  1602. package/dist/slots/revalidate.d.ts.map +0 -1
  1603. package/dist/slots/server-api.d.ts.map +0 -1
  1604. package/dist/socket-loader-2NYBMBFQ.js +0 -16
  1605. package/dist/socket-loader-2NYBMBFQ.js.map +0 -1
  1606. package/dist/socket-loader-JA2DI2RT.mjs +0 -14
  1607. package/dist/socket-loader-JA2DI2RT.mjs.map +0 -1
  1608. package/dist/sync/AddToCalendar.d.ts.map +0 -1
  1609. package/dist/sync/BookingWidget.d.ts.map +0 -1
  1610. package/dist/sync/MeetingFormatStep.d.ts.map +0 -1
  1611. package/dist/sync/api.d.ts.map +0 -1
  1612. package/dist/sync/booking-flow.d.ts.map +0 -1
  1613. package/dist/sync/index.d.ts.map +0 -1
  1614. package/dist/sync/index.js.map +0 -1
  1615. package/dist/sync/index.mjs +0 -7
  1616. package/dist/sync/index.mjs.map +0 -1
  1617. package/dist/sync/types.d.ts.map +0 -1
  1618. package/dist/types.d.ts.map +0 -1
  1619. package/dist/web-vitals.attribution-7LKLZ5GR.mjs +0 -524
  1620. package/dist/web-vitals.attribution-7LKLZ5GR.mjs.map +0 -1
  1621. package/dist/web-vitals.attribution-ONVYQNRB.js +0 -535
  1622. package/dist/web-vitals.attribution-ONVYQNRB.js.map +0 -1
  1623. package/dist/writeLLMsTxt-IYJILIU3.mjs +0 -11
  1624. package/dist/writeLLMsTxt-SQG4B63X.js +0 -20
  1625. package/scripts/postinstall.cjs +0 -67
@@ -1,326 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- var chunkRC4WWQXR_js = require('./chunk-RC4WWQXR.js');
5
- var chunkP4Y75QSU_js = require('./chunk-P4Y75QSU.js');
6
- require('./chunk-VJMPIRSD.js');
7
- var chunkIO65ROAO_js = require('./chunk-IO65ROAO.js');
8
- var chunkPIPGH7GA_js = require('./chunk-PIPGH7GA.js');
9
- require('./chunk-PURI56RE.js');
10
- require('./chunk-SNAQBZPT.js');
11
- var react = require('react');
12
-
13
- function getApiConfig() {
14
- const apiUrl = typeof window !== "undefined" ? window.__SITE_KIT_API_URL__ || "https://api.sonor.io" : "https://api.sonor.io";
15
- const apiKey = typeof window !== "undefined" ? window.__SITE_KIT_API_KEY__ : void 0;
16
- return { apiUrl, apiKey };
17
- }
18
- function isDebug() {
19
- return typeof window !== "undefined" && !!window.__SITE_KIT_DEBUG__;
20
- }
21
- function getDeviceType() {
22
- if (typeof window === "undefined") return "desktop";
23
- const ua = navigator.userAgent;
24
- if (/tablet|ipad|playbook|silk/i.test(ua)) return "tablet";
25
- if (/mobile|iphone|ipod|android|blackberry|opera mini|iemobile/i.test(ua)) return "mobile";
26
- return "desktop";
27
- }
28
- function getBrowser() {
29
- if (typeof window === "undefined") return "unknown";
30
- const ua = navigator.userAgent;
31
- if (ua.includes("Firefox")) return "Firefox";
32
- if (ua.includes("Edg")) return "Edge";
33
- if (ua.includes("Chrome")) return "Chrome";
34
- if (ua.includes("Safari")) return "Safari";
35
- return "Other";
36
- }
37
- function getOS() {
38
- if (typeof window === "undefined") return "unknown";
39
- const ua = navigator.userAgent;
40
- if (ua.includes("Windows")) return "Windows";
41
- if (ua.includes("Mac")) return "macOS";
42
- if (ua.includes("iPhone") || ua.includes("iPad")) return "iOS";
43
- if (ua.includes("Android")) return "Android";
44
- if (ua.includes("Linux")) return "Linux";
45
- return "Other";
46
- }
47
- function SignalCore({
48
- enabled,
49
- realtime,
50
- experiments,
51
- behaviorTracking,
52
- externalVisitorId,
53
- externalSessionId,
54
- pageMetadataRef,
55
- onRegister,
56
- onState
57
- }) {
58
- const [config, setConfig] = react.useState(null);
59
- const [loading, setLoading] = react.useState(true);
60
- const [error, setError] = react.useState(null);
61
- const eventSourceRef = react.useRef(null);
62
- const eventQueueRef = react.useRef([]);
63
- const flushTimeoutRef = react.useRef(null);
64
- const assignmentsRef = react.useRef(/* @__PURE__ */ new Map());
65
- const pageLoadTimeRef = react.useRef(Date.now());
66
- const scrollDepthRef = react.useRef(0);
67
- const clickCountRef = react.useRef(0);
68
- const { apiUrl, apiKey } = getApiConfig();
69
- const resolvedVisitorId = externalVisitorId || chunkRC4WWQXR_js.getOrCreateVisitorId();
70
- const resolvedSessionId = externalSessionId || chunkRC4WWQXR_js.getOrCreateSessionId();
71
- react.useEffect(() => {
72
- onState({ config, loading, error });
73
- }, [config, loading, error, onState]);
74
- const loadExperimentAssignment = react.useCallback(async (experimentId) => {
75
- const storageKey = `_signal_exp_${experimentId}`;
76
- const stored = localStorage.getItem(storageKey);
77
- if (stored) {
78
- try {
79
- const assignment = JSON.parse(stored);
80
- if (assignment.expires > Date.now()) {
81
- assignmentsRef.current.set(experimentId, assignment);
82
- return assignment;
83
- }
84
- } catch {
85
- }
86
- }
87
- try {
88
- const response = await chunkIO65ROAO_js.sonorFetch(
89
- `${apiUrl}/api/public/signal/experiment/${experimentId}`,
90
- {
91
- headers: {
92
- "x-visitor-id": resolvedVisitorId
93
- }
94
- },
95
- { apiKey }
96
- );
97
- if (!response.ok) return null;
98
- const assignment = await response.json();
99
- localStorage.setItem(storageKey, JSON.stringify(assignment));
100
- assignmentsRef.current.set(experimentId, assignment);
101
- return assignment;
102
- } catch (err) {
103
- if (isDebug()) console.error("[Signal] Experiment assignment error:", err);
104
- return null;
105
- }
106
- }, [apiUrl, apiKey]);
107
- const getExperiment = react.useCallback((experimentId) => {
108
- return assignmentsRef.current.get(experimentId) || null;
109
- }, []);
110
- const fetchConfig = react.useCallback(async () => {
111
- if (!apiKey || !enabled) {
112
- setLoading(false);
113
- return;
114
- }
115
- try {
116
- const response = await chunkIO65ROAO_js.sonorFetch(
117
- `${apiUrl}/api/public/signal/config`,
118
- {
119
- headers: {
120
- "x-visitor-id": resolvedVisitorId
121
- }
122
- },
123
- { apiKey }
124
- );
125
- if (!response.ok) {
126
- throw new Error(`Failed to fetch Signal config: ${response.statusText}`);
127
- }
128
- const data = await response.json();
129
- setConfig(data.config);
130
- setError(null);
131
- if (experiments && data.config?.experiments) {
132
- for (const exp of data.config.experiments) {
133
- if (exp.status === "running") {
134
- await loadExperimentAssignment(exp.id);
135
- }
136
- }
137
- }
138
- } catch (err) {
139
- if (isDebug()) console.error("[Signal] Config fetch error:", err);
140
- setError(err);
141
- } finally {
142
- setLoading(false);
143
- }
144
- }, [apiUrl, apiKey, enabled, experiments, resolvedVisitorId, loadExperimentAssignment]);
145
- const connectSSE = react.useCallback(() => {
146
- if (!apiKey || !enabled || !realtime) return;
147
- if (eventSourceRef.current) {
148
- eventSourceRef.current.close();
149
- eventSourceRef.current = null;
150
- }
151
- void (async () => {
152
- const credential = await chunkPIPGH7GA_js.getFreshCredential(apiKey);
153
- if (!credential || !chunkPIPGH7GA_js.isSiteToken(credential)) {
154
- if (isDebug()) {
155
- console.warn("[Signal] Realtime stream disabled: requires site-token mode (raw keys never go in URLs)");
156
- }
157
- return;
158
- }
159
- if (eventSourceRef.current) return;
160
- const url = `${apiUrl}/api/public/signal/stream?token=${encodeURIComponent(credential)}`;
161
- connectEventSource(url);
162
- })();
163
- function connectEventSource(url) {
164
- const eventSource = new EventSource(url);
165
- eventSource.addEventListener("config_update", (e) => {
166
- try {
167
- const { config: newConfig, version } = JSON.parse(e.data);
168
- setConfig((prev) => {
169
- if (prev?.version !== version) {
170
- if (isDebug()) console.log("[Signal] Config updated to version:", version);
171
- return newConfig;
172
- }
173
- return prev;
174
- });
175
- } catch (err) {
176
- if (isDebug()) console.error("[Signal] SSE parse error:", err);
177
- }
178
- });
179
- eventSource.addEventListener("experiment_update", (e) => {
180
- try {
181
- const { experiment_id, action } = JSON.parse(e.data);
182
- if (action === "started" || action === "updated") {
183
- loadExperimentAssignment(experiment_id);
184
- } else if (action === "stopped") {
185
- assignmentsRef.current.delete(experiment_id);
186
- }
187
- } catch (err) {
188
- if (isDebug()) console.error("[Signal] Experiment update error:", err);
189
- }
190
- });
191
- eventSource.onerror = () => {
192
- if (isDebug()) console.warn("[Signal] SSE connection error, reconnecting...");
193
- eventSource.close();
194
- if (eventSourceRef.current === eventSource) {
195
- eventSourceRef.current = null;
196
- }
197
- setTimeout(connectSSE, 5e3);
198
- };
199
- eventSourceRef.current = eventSource;
200
- }
201
- }, [apiUrl, apiKey, enabled, realtime, loadExperimentAssignment]);
202
- const flushEvents = react.useCallback(async () => {
203
- if (eventQueueRef.current.length === 0) return;
204
- const events = [...eventQueueRef.current];
205
- eventQueueRef.current = [];
206
- try {
207
- await chunkIO65ROAO_js.sonorFetch(
208
- `${apiUrl}/api/public/signal/events`,
209
- {
210
- method: "POST",
211
- headers: { "Content-Type": "application/json" },
212
- body: JSON.stringify({
213
- visitor_id: resolvedVisitorId,
214
- session_id: resolvedSessionId,
215
- events
216
- })
217
- },
218
- { apiKey, retries: 0 }
219
- );
220
- } catch (err) {
221
- eventQueueRef.current = [...events, ...eventQueueRef.current];
222
- if (isDebug()) console.error("[Signal] Event flush error:", err);
223
- }
224
- }, [apiUrl, apiKey]);
225
- const trackEvent = react.useCallback((event) => {
226
- if (!enabled || !apiKey) return;
227
- const enrichedEvent = {
228
- ...event,
229
- page_url: window.location.href,
230
- page_path: window.location.pathname,
231
- referrer: document.referrer,
232
- device_type: getDeviceType(),
233
- browser: getBrowser(),
234
- os: getOS(),
235
- viewport_width: window.innerWidth,
236
- viewport_height: window.innerHeight,
237
- time_on_page: Date.now() - pageLoadTimeRef.current,
238
- scroll_depth: scrollDepthRef.current,
239
- click_count: clickCountRef.current,
240
- experiments: Array.from(assignmentsRef.current.values()).map((a) => ({
241
- experiment_id: a.experiment_id,
242
- variant_key: a.variant_key
243
- })),
244
- // Merge page metadata from Analytics if available
245
- page_metadata: pageMetadataRef?.current ?? void 0,
246
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
247
- };
248
- eventQueueRef.current.push(enrichedEvent);
249
- if (flushTimeoutRef.current) {
250
- clearTimeout(flushTimeoutRef.current);
251
- }
252
- flushTimeoutRef.current = setTimeout(flushEvents, 1e3);
253
- }, [enabled, apiKey, flushEvents]);
254
- const trackOutcome = react.useCallback(async (outcome) => {
255
- if (!enabled || !apiKey) return;
256
- try {
257
- await chunkIO65ROAO_js.sonorFetch(
258
- `${apiUrl}/api/public/signal/outcome`,
259
- {
260
- method: "POST",
261
- headers: { "Content-Type": "application/json" },
262
- body: JSON.stringify({
263
- ...outcome,
264
- visitor_id: resolvedVisitorId,
265
- session_id: resolvedSessionId,
266
- experiments: Array.from(assignmentsRef.current.keys()),
267
- page_url: window.location.href,
268
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
269
- })
270
- },
271
- { apiKey, retries: 0 }
272
- );
273
- } catch (err) {
274
- if (isDebug()) console.error("[Signal] Outcome tracking error:", err);
275
- }
276
- }, [apiUrl, apiKey, enabled]);
277
- react.useEffect(() => {
278
- if (!behaviorTracking || typeof window === "undefined") return;
279
- const handleScroll = () => {
280
- const scrollTop = window.scrollY;
281
- const docHeight = document.documentElement.scrollHeight - window.innerHeight;
282
- const depth = docHeight > 0 ? Math.round(scrollTop / docHeight * 100) : 0;
283
- scrollDepthRef.current = Math.max(scrollDepthRef.current, depth);
284
- };
285
- const handleClick = () => {
286
- clickCountRef.current++;
287
- };
288
- window.addEventListener("scroll", handleScroll, { passive: true });
289
- window.addEventListener("click", handleClick);
290
- const stopLeaveListener = chunkP4Y75QSU_js.onPageLeave(flushEvents);
291
- return () => {
292
- window.removeEventListener("scroll", handleScroll);
293
- window.removeEventListener("click", handleClick);
294
- stopLeaveListener();
295
- };
296
- }, [behaviorTracking, flushEvents]);
297
- react.useEffect(() => {
298
- fetchConfig();
299
- }, [fetchConfig]);
300
- react.useEffect(() => {
301
- if (config && realtime) {
302
- connectSSE();
303
- }
304
- return () => {
305
- if (eventSourceRef.current) {
306
- eventSourceRef.current.close();
307
- }
308
- };
309
- }, [config, realtime, connectSSE]);
310
- react.useEffect(() => {
311
- onRegister({
312
- trackEvent,
313
- trackOutcome: (outcome) => {
314
- void trackOutcome(outcome);
315
- },
316
- getExperiment,
317
- refreshConfig: fetchConfig
318
- });
319
- return () => onRegister(null);
320
- }, [onRegister, trackEvent, trackOutcome, getExperiment, fetchConfig]);
321
- return null;
322
- }
323
-
324
- exports.SignalCore = SignalCore;
325
- //# sourceMappingURL=SignalCore-P2JUY2BO.js.map
326
- //# sourceMappingURL=SignalCore-P2JUY2BO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/signal/SignalCore.tsx"],"names":["useState","useRef","getOrCreateVisitorId","getOrCreateSessionId","useEffect","useCallback","sonorFetch","getFreshCredential","isSiteToken","onPageLeave"],"mappings":"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","file":"SignalCore-P2JUY2BO.js","sourcesContent":["/**\n * @sonordev/site-kit/signal - SignalCore\n *\n * The heavy half of SignalBridge: config fetching, SSE streaming, experiment\n * assignment, event queue/flush, and behavioral tracking. Mounted by the\n * SignalBridge shell as a CHILDLESS lazy sibling — it never wraps page\n * content, so the signal machinery stays out of the server-render path and\n * off the critical hydration chunk. It reports state up to the shell via\n * `onState` and registers its imperative API via `onRegister`.\n */\n\n'use client'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n// Single source of truth for visitor/session IDs (storage keys _sk_vid/_sk_sid)\n// — shared with Analytics and Engage. Do NOT re-fork ID logic into this module.\nimport { getOrCreateVisitorId, getOrCreateSessionId } from '../shared/identity'\n// Canonical client transport — the same wrapper Analytics/Forms/Engage route\n// through (see shared/sonorFetch header). It gives every request a per-attempt\n// AbortSignal timeout, so a hung API aborts cleanly instead of being left to log\n// net::ERR_TIMED_OUT — the console error that fails Lighthouse best-practices.\n// It also sets x-api-key from the `apiKey` option, so callers drop the header.\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { getFreshCredential, isSiteToken } from '../shared/siteToken'\nimport { onPageLeave } from '../shared/page-leave'\nimport type {\n SignalConfig,\n SignalEvent,\n SignalOutcome,\n ExperimentAssignment,\n} from './types'\n\n// ============================================\n// Shell ↔ core contract\n// ============================================\n\nexport interface SignalCoreApi {\n trackEvent: (event: Partial<SignalEvent>) => void\n trackOutcome: (outcome: SignalOutcome) => void\n getExperiment: (experimentId: string) => ExperimentAssignment | null\n refreshConfig: () => Promise<void>\n}\n\nexport interface SignalCoreState {\n config: SignalConfig | null\n loading: boolean\n error: Error | null\n}\n\nexport interface SignalCoreProps {\n enabled: boolean\n realtime: boolean\n experiments: boolean\n behaviorTracking: boolean\n externalVisitorId?: string\n externalSessionId?: string\n pageMetadataRef?: React.RefObject<Record<string, unknown> | null>\n /** Called with the imperative API on mount, and with null on unmount. */\n onRegister: (api: SignalCoreApi | null) => void\n /** Called whenever config/loading/error change, so the shell can re-render consumers. */\n onState: (state: SignalCoreState) => void\n}\n\n// ============================================\n// Utility Functions\n// ============================================\n\nfunction getApiConfig() {\n const apiUrl = typeof window !== 'undefined'\n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : 'https://api.sonor.io'\n const apiKey = typeof window !== 'undefined'\n ? (window as any).__SITE_KIT_API_KEY__\n : undefined\n return { apiUrl, apiKey }\n}\n\n// A visitor's console must stay clean (Lighthouse \"errors logged to the console\"\n// best-practice) — Signal's diagnostics only surface when the site opts into\n// debug via SiteKitClientProviders' __SITE_KIT_DEBUG__ global, mirroring how\n// AnalyticsProvider gates every one of its logs behind its `debug` prop.\nfunction isDebug(): boolean {\n return typeof window !== 'undefined' && !!(window as any).__SITE_KIT_DEBUG__\n}\n\nfunction getDeviceType(): 'desktop' | 'mobile' | 'tablet' {\n if (typeof window === 'undefined') return 'desktop'\n const ua = navigator.userAgent\n if (/tablet|ipad|playbook|silk/i.test(ua)) return 'tablet'\n if (/mobile|iphone|ipod|android|blackberry|opera mini|iemobile/i.test(ua)) return 'mobile'\n return 'desktop'\n}\n\nfunction getBrowser(): string {\n if (typeof window === 'undefined') return 'unknown'\n const ua = navigator.userAgent\n if (ua.includes('Firefox')) return 'Firefox'\n if (ua.includes('Edg')) return 'Edge'\n if (ua.includes('Chrome')) return 'Chrome'\n if (ua.includes('Safari')) return 'Safari'\n return 'Other'\n}\n\nfunction getOS(): string {\n if (typeof window === 'undefined') return 'unknown'\n const ua = navigator.userAgent\n if (ua.includes('Windows')) return 'Windows'\n if (ua.includes('Mac')) return 'macOS'\n if (ua.includes('iPhone') || ua.includes('iPad')) return 'iOS'\n if (ua.includes('Android')) return 'Android'\n if (ua.includes('Linux')) return 'Linux'\n return 'Other'\n}\n\n// ============================================\n// SignalCore Component (childless)\n// ============================================\n\nexport function SignalCore({\n enabled,\n realtime,\n experiments,\n behaviorTracking,\n externalVisitorId,\n externalSessionId,\n pageMetadataRef,\n onRegister,\n onState,\n}: SignalCoreProps) {\n const [config, setConfig] = useState<SignalConfig | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<Error | null>(null)\n\n // Refs for SSE and tracking\n const eventSourceRef = useRef<EventSource | null>(null)\n const eventQueueRef = useRef<Partial<SignalEvent>[]>([])\n const flushTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n const assignmentsRef = useRef<Map<string, ExperimentAssignment>>(new Map())\n\n // Behavioral tracking state\n const pageLoadTimeRef = useRef<number>(Date.now())\n const scrollDepthRef = useRef<number>(0)\n const clickCountRef = useRef<number>(0)\n\n const { apiUrl, apiKey } = getApiConfig()\n\n // Use external IDs from shared identity, fall back to the shared generators\n const resolvedVisitorId = externalVisitorId || getOrCreateVisitorId()\n const resolvedSessionId = externalSessionId || getOrCreateSessionId()\n\n // Mirror state up to the shell so context consumers re-render\n useEffect(() => {\n onState({ config, loading, error })\n }, [config, loading, error, onState])\n\n // ============================================\n // Experiment Assignment\n // ============================================\n\n const loadExperimentAssignment = useCallback(async (experimentId: string): Promise<ExperimentAssignment | null> => {\n // Check localStorage first\n const storageKey = `_signal_exp_${experimentId}`\n const stored = localStorage.getItem(storageKey)\n\n if (stored) {\n try {\n const assignment = JSON.parse(stored) as ExperimentAssignment\n if (assignment.expires > Date.now()) {\n assignmentsRef.current.set(experimentId, assignment)\n return assignment\n }\n } catch {\n // Invalid stored data, continue to fetch\n }\n }\n\n // Fetch from API — idempotent read, so the transport's default retries apply.\n try {\n const response = await sonorFetch(\n `${apiUrl}/api/public/signal/experiment/${experimentId}`,\n {\n headers: {\n 'x-visitor-id': resolvedVisitorId,\n },\n },\n { apiKey },\n )\n\n if (!response.ok) return null\n\n const assignment = await response.json() as ExperimentAssignment\n\n // Store assignment\n localStorage.setItem(storageKey, JSON.stringify(assignment))\n assignmentsRef.current.set(experimentId, assignment)\n\n return assignment\n } catch (err) {\n if (isDebug()) console.error('[Signal] Experiment assignment error:', err)\n return null\n }\n }, [apiUrl, apiKey])\n\n const getExperiment = useCallback((experimentId: string): ExperimentAssignment | null => {\n return assignmentsRef.current.get(experimentId) || null\n }, [])\n\n // ============================================\n // Config Fetching\n // ============================================\n\n const fetchConfig = useCallback(async () => {\n if (!apiKey || !enabled) {\n setLoading(false)\n return\n }\n\n try {\n const response = await sonorFetch(\n `${apiUrl}/api/public/signal/config`,\n {\n headers: {\n 'x-visitor-id': resolvedVisitorId,\n },\n },\n { apiKey },\n )\n\n if (!response.ok) {\n throw new Error(`Failed to fetch Signal config: ${response.statusText}`)\n }\n\n const data = await response.json()\n setConfig(data.config)\n setError(null)\n\n // Load experiment assignments\n if (experiments && data.config?.experiments) {\n for (const exp of data.config.experiments) {\n if (exp.status === 'running') {\n await loadExperimentAssignment(exp.id)\n }\n }\n }\n } catch (err) {\n if (isDebug()) console.error('[Signal] Config fetch error:', err)\n setError(err as Error)\n } finally {\n setLoading(false)\n }\n }, [apiUrl, apiKey, enabled, experiments, resolvedVisitorId, loadExperimentAssignment])\n\n // ============================================\n // SSE Real-time Updates\n // ============================================\n\n const connectSSE = useCallback(() => {\n if (!apiKey || !enabled || !realtime) return\n\n // Close existing connection\n if (eventSourceRef.current) {\n eventSourceRef.current.close()\n eventSourceRef.current = null\n }\n\n // EventSource cannot send headers, so the credential rides in the URL —\n // which server/CDN access logs capture. Per the transport contract in\n // sonorFetch.ts, the raw API key NEVER goes in a URL: only the\n // short-lived minted site token may (bounded exposure, unforgeable HMAC).\n // Raw-key mode (2.x layouts, mint-failure fallback) skips the stream —\n // config still loads via POST, only live push is lost.\n void (async () => {\n const credential = await getFreshCredential(apiKey)\n if (!credential || !isSiteToken(credential)) {\n if (isDebug()) {\n console.warn('[Signal] Realtime stream disabled: requires site-token mode (raw keys never go in URLs)')\n }\n return\n }\n if (eventSourceRef.current) return\n\n const url = `${apiUrl}/api/public/signal/stream?token=${encodeURIComponent(credential)}`\n connectEventSource(url)\n })()\n\n function connectEventSource(url: string) {\n const eventSource = new EventSource(url)\n\n eventSource.addEventListener('config_update', (e) => {\n try {\n const { config: newConfig, version } = JSON.parse(e.data)\n setConfig(prev => {\n if (prev?.version !== version) {\n if (isDebug()) console.log('[Signal] Config updated to version:', version)\n return newConfig\n }\n return prev\n })\n } catch (err) {\n if (isDebug()) console.error('[Signal] SSE parse error:', err)\n }\n })\n\n eventSource.addEventListener('experiment_update', (e) => {\n try {\n const { experiment_id, action } = JSON.parse(e.data)\n if (action === 'started' || action === 'updated') {\n loadExperimentAssignment(experiment_id)\n } else if (action === 'stopped') {\n assignmentsRef.current.delete(experiment_id)\n }\n } catch (err) {\n if (isDebug()) console.error('[Signal] Experiment update error:', err)\n }\n })\n\n eventSource.onerror = () => {\n if (isDebug()) console.warn('[Signal] SSE connection error, reconnecting...')\n eventSource.close()\n if (eventSourceRef.current === eventSource) {\n eventSourceRef.current = null\n }\n // Reconnect after 5 seconds (re-mints the token if it expired)\n setTimeout(connectSSE, 5000)\n }\n\n eventSourceRef.current = eventSource\n }\n }, [apiUrl, apiKey, enabled, realtime, loadExperimentAssignment])\n\n // ============================================\n // Event Tracking\n // ============================================\n\n const flushEvents = useCallback(async () => {\n if (eventQueueRef.current.length === 0) return\n\n const events = [...eventQueueRef.current]\n eventQueueRef.current = []\n\n try {\n // retries: 0 — fire-and-forget tracking; a retried flush after a lost\n // response would double-count events. The transport still aborts a hung\n // request at its timeout (no net::ERR_TIMED_OUT).\n await sonorFetch(\n `${apiUrl}/api/public/signal/events`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n visitor_id: resolvedVisitorId,\n session_id: resolvedSessionId,\n events,\n }),\n },\n { apiKey, retries: 0 },\n )\n } catch (err) {\n // Re-queue failed events\n eventQueueRef.current = [...events, ...eventQueueRef.current]\n if (isDebug()) console.error('[Signal] Event flush error:', err)\n }\n }, [apiUrl, apiKey])\n\n const trackEvent = useCallback((event: Partial<SignalEvent>) => {\n if (!enabled || !apiKey) return\n\n // Enrich event with context\n const enrichedEvent: Partial<SignalEvent> = {\n ...event,\n page_url: window.location.href,\n page_path: window.location.pathname,\n referrer: document.referrer,\n device_type: getDeviceType(),\n browser: getBrowser(),\n os: getOS(),\n viewport_width: window.innerWidth,\n viewport_height: window.innerHeight,\n time_on_page: Date.now() - pageLoadTimeRef.current,\n scroll_depth: scrollDepthRef.current,\n click_count: clickCountRef.current,\n experiments: Array.from(assignmentsRef.current.values()).map(a => ({\n experiment_id: a.experiment_id,\n variant_key: a.variant_key,\n })),\n // Merge page metadata from Analytics if available\n page_metadata: pageMetadataRef?.current ?? undefined,\n timestamp: new Date().toISOString(),\n }\n\n eventQueueRef.current.push(enrichedEvent)\n\n // Debounce flush\n if (flushTimeoutRef.current) {\n clearTimeout(flushTimeoutRef.current)\n }\n flushTimeoutRef.current = setTimeout(flushEvents, 1000)\n }, [enabled, apiKey, flushEvents])\n\n // ============================================\n // Outcome Tracking\n // ============================================\n\n const trackOutcome = useCallback(async (outcome: SignalOutcome) => {\n if (!enabled || !apiKey) return\n\n try {\n // retries: 0 — fire-and-forget conversion signal; never double-fire on a\n // lost response. Still aborts a hung request at the transport timeout.\n await sonorFetch(\n `${apiUrl}/api/public/signal/outcome`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n ...outcome,\n visitor_id: resolvedVisitorId,\n session_id: resolvedSessionId,\n experiments: Array.from(assignmentsRef.current.keys()),\n page_url: window.location.href,\n timestamp: new Date().toISOString(),\n }),\n },\n { apiKey, retries: 0 },\n )\n } catch (err) {\n if (isDebug()) console.error('[Signal] Outcome tracking error:', err)\n }\n }, [apiUrl, apiKey, enabled])\n\n // ============================================\n // Behavioral Tracking\n // ============================================\n\n useEffect(() => {\n if (!behaviorTracking || typeof window === 'undefined') return\n\n // Track scroll depth\n const handleScroll = () => {\n const scrollTop = window.scrollY\n const docHeight = document.documentElement.scrollHeight - window.innerHeight\n const depth = docHeight > 0 ? Math.round((scrollTop / docHeight) * 100) : 0\n scrollDepthRef.current = Math.max(scrollDepthRef.current, depth)\n }\n\n // Track clicks\n const handleClick = () => {\n clickCountRef.current++\n }\n\n window.addEventListener('scroll', handleScroll, { passive: true })\n window.addEventListener('click', handleClick)\n\n // Flush whenever the page is hidden or unloaded (shared/page-leave.ts).\n const stopLeaveListener = onPageLeave(flushEvents)\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('click', handleClick)\n stopLeaveListener()\n }\n }, [behaviorTracking, flushEvents])\n\n // ============================================\n // Initialization + shell registration\n // ============================================\n\n useEffect(() => {\n fetchConfig()\n }, [fetchConfig])\n\n useEffect(() => {\n if (config && realtime) {\n connectSSE()\n }\n\n return () => {\n if (eventSourceRef.current) {\n eventSourceRef.current.close()\n }\n }\n }, [config, realtime, connectSSE])\n\n // Hand the imperative API to the shell; buffered calls drain on register.\n useEffect(() => {\n onRegister({\n trackEvent,\n trackOutcome: (outcome: SignalOutcome) => { void trackOutcome(outcome) },\n getExperiment,\n refreshConfig: fetchConfig,\n })\n return () => onRegister(null)\n }, [onRegister, trackEvent, trackOutcome, getExperiment, fetchConfig])\n\n return null\n}\n"]}
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkSUGBIEYQ_js = require('./chunk-SUGBIEYQ.js');
4
- require('./chunk-JONWE26J.js');
5
- require('./chunk-NH2P27MA.js');
6
- require('./chunk-JCDX37BY.js');
7
- require('./chunk-IO65ROAO.js');
8
- require('./chunk-PIPGH7GA.js');
9
- require('./chunk-PURI56RE.js');
10
- require('./chunk-SNAQBZPT.js');
11
-
12
-
13
-
14
- Object.defineProperty(exports, "SitemapSync", {
15
- enumerable: true,
16
- get: function () { return chunkSUGBIEYQ_js.SitemapSync; }
17
- });
18
- //# sourceMappingURL=SitemapSync-KFY4PJ7G.js.map
19
- //# sourceMappingURL=SitemapSync-KFY4PJ7G.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-KFY4PJ7G.js"}
@@ -1,10 +0,0 @@
1
- export { SitemapSync } from './chunk-SVCKJ5KH.mjs';
2
- import './chunk-C2CTLLIO.mjs';
3
- import './chunk-CABEVWKJ.mjs';
4
- import './chunk-MXJOKOFK.mjs';
5
- import './chunk-3BLKKF67.mjs';
6
- import './chunk-PGYOBEPL.mjs';
7
- import './chunk-GIGUDKLS.mjs';
8
- import './chunk-BEXTDHO4.mjs';
9
- //# sourceMappingURL=SitemapSync-UYDL7T4M.mjs.map
10
- //# sourceMappingURL=SitemapSync-UYDL7T4M.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-UYDL7T4M.mjs"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SitemapSync.d.ts","sourceRoot":"","sources":["../src/SitemapSync.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAM3F,UAAU,gBAAiB,SAAQ,oBAAoB;IACrD,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc,CAAA;CACnC;AA8LD,wBAAgB,WAAW,CAAC,EAC1B,UAA2B,EAC3B,YAAiB,EACjB,KAAa,EACb,IAAiB,EACjB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,YAAoB,EACpB,cAAsB,GACvB,EAAE,gBAAgB,QAqElB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin-auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAE9E,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAS3D,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uBAAuB;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,mDAAmD;IACnD,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrD,CAAA;AAaD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc;oBAsEtB,WAAW,KAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;sBAiC/C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;iCAXhB,WAAW,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;4BAiDjD;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAQ,OAAO,CAAC,MAAM,CAAC;8BAuBlE,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC;4BA2D3C,WAAW,KAAG,YAAY;8BA9KxB,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAAM;gCAlChC,MAAM;;;;EAuO1C;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/admin-auth/session.ts","../../src/admin-auth/index.ts"],"names":["NextResponse"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Signed session cookie for Sonor SSO-gated site areas.\n *\n * Format: `<base64url(payload)>.<base64url(HMAC-SHA256(payloadB64))>`, payload\n * `{ email, contactId, iat, exp }` in Unix seconds. This is byte-compatible with\n * the hand-rolled Web Crypto sessions legacy-clay-classic and the CCG builder\n * shipped before this module existed, so a site that passes its old cookie name\n * and secret keeps every signed-in user signed in across the switch.\n *\n * Web Crypto only (never Node `crypto`): these helpers run in Edge middleware\n * and in Node route handlers alike.\n */\n\nexport interface SonorSession {\n email: string\n contactId: string\n /** Unix seconds */\n iat: number\n /** Unix seconds */\n exp: number\n}\n\nexport const MIN_SECRET_LENGTH = 32\n\nconst encoder = new TextEncoder()\nconst keyCache = new Map<string, Promise<CryptoKey>>()\n\nfunction hmacKey(secret: string): Promise<CryptoKey> {\n let key = keyCache.get(secret)\n if (!key) {\n key = crypto.subtle.importKey(\n 'raw',\n encoder.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify'],\n )\n keyCache.set(secret, key)\n }\n return key\n}\n\nfunction bytesToB64url(bytes: Uint8Array): string {\n let bin = ''\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i])\n return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\nfunction b64urlToBytes(s: string): Uint8Array<ArrayBuffer> | null {\n if (!/^[A-Za-z0-9_-]*$/.test(s)) return null\n try {\n const bin = atob(s.replace(/-/g, '+').replace(/_/g, '/') + '==='.slice((s.length + 3) % 4))\n const bytes = new Uint8Array(bin.length)\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i)\n return bytes\n } catch {\n return null\n }\n}\n\nfunction assertSecret(secret: string | undefined): string {\n if (!secret || secret.length < MIN_SECRET_LENGTH) {\n throw new Error(\n `@sonordev/site-kit/admin-auth: the session secret must be at least ${MIN_SECRET_LENGTH} characters (try \\`openssl rand -hex 32\\`)`,\n )\n }\n return secret\n}\n\nexport async function signSession(\n identity: { email: string; contactId: string },\n secret: string,\n lifetimeSeconds: number,\n now: number = Math.floor(Date.now() / 1000),\n): Promise<string> {\n const payload: SonorSession = {\n email: identity.email,\n contactId: identity.contactId,\n iat: now,\n exp: now + lifetimeSeconds,\n }\n const payloadB64 = bytesToB64url(encoder.encode(JSON.stringify(payload)))\n const key = await hmacKey(assertSecret(secret))\n const sig = new Uint8Array(await crypto.subtle.sign('HMAC', key, encoder.encode(payloadB64)))\n return `${payloadB64}.${bytesToB64url(sig)}`\n}\n\n/**\n * Returns the session, or null for anything short of a valid, unexpired,\n * correctly signed token — including a missing or short secret, so a\n * misconfigured deploy sends people to the login page instead of 500-ing.\n */\nexport async function verifySessionToken(\n token: string | null | undefined,\n secret: string | undefined,\n now: number = Math.floor(Date.now() / 1000),\n): Promise<SonorSession | null> {\n if (!token || typeof token !== 'string') return null\n const dot = token.indexOf('.')\n if (dot < 1 || dot !== token.lastIndexOf('.')) return null\n const payloadB64 = token.slice(0, dot)\n const sig = b64urlToBytes(token.slice(dot + 1))\n if (!sig) return null\n\n let key: CryptoKey\n try {\n key = await hmacKey(assertSecret(secret))\n } catch (err) {\n console.error(String(err instanceof Error ? err.message : err))\n return null\n }\n\n // subtle.verify is the constant-time comparison.\n const ok = await crypto.subtle.verify('HMAC', key, sig, encoder.encode(payloadB64))\n if (!ok) return null\n\n const raw = b64urlToBytes(payloadB64)\n if (!raw) return null\n try {\n const p = JSON.parse(new TextDecoder().decode(raw)) as Partial<SonorSession>\n if (\n typeof p.email !== 'string' ||\n typeof p.contactId !== 'string' ||\n typeof p.iat !== 'number' ||\n typeof p.exp !== 'number' ||\n p.exp < now\n ) {\n return null\n }\n return { email: p.email, contactId: p.contactId, iat: p.iat, exp: p.exp }\n } catch {\n return null\n }\n}\n","/**\n * @sonordev/site-kit/admin-auth — \"Sign in with Sonor\" for a site's own admin area\n *\n * SINGLE SOURCE OF TRUTH for the Sonor SSO handshake on client sites. Before\n * this module, 4m-lawn-care (/bid, /route), legacy-clay-classic (/admin) and the\n * CCG builder (/studio) each carried a hand-copied version, and the copies had\n * already drifted (Node vs Web Crypto, 7 vs 30 day sessions, roles in one only).\n * Do not re-fork it into a site.\n *\n * The handshake:\n * 1. `/admin/login` links to `app.sonor.io/sso/grant?project_id=…&return_to=<callback>`.\n * 2. Sonor checks the signed-in user can access the project (owner, member,\n * managing agency, or platform admin) and redirects to the callback with a\n * short-lived token.\n * 3. The callback posts the token to `/api/public/auth/verify-sso-token` with\n * the project API key; Sonor rejects tokens issued for any other project.\n * 4. The callback sets a signed, httpOnly session cookie (30 days default).\n *\n * Wiring (four files):\n *\n * // lib/sonor-sso.ts\n * export const sso = createSonorSso({ paths: '/admin' })\n *\n * // middleware.ts (or proxy.ts)\n * export default createProxy({ before: sso.gate, securityHeaders: true })\n *\n * // app/api/auth/callback/route.ts\n * export const GET = sso.handleCallback\n *\n * // app/api/auth/logout/route.ts\n * export const GET = sso.handleLogout\n * export const POST = sso.handleLogout\n *\n * Then `await sso.getLoginUrl()` in the login page, and `await sso.getSession()`\n * in every page, server action and API route that exposes admin data. The\n * middleware gate never sees `/api/*` (the standard matcher excludes it), so\n * API routes MUST check `getSession()` themselves.\n *\n * Env: SONOR_API_KEY (already set on every site), SONOR_SESSION_SECRET (>= 32\n * chars; rotating it signs everyone out), NEXT_PUBLIC_SITE_URL.\n */\n\nimport { NextResponse, type NextRequest } from 'next/server'\nimport { signSession, verifySessionToken, type SonorSession } from './session'\n\nexport type { SonorSession } from './session'\nexport { signSession, verifySessionToken } from './session'\n\nconst DEFAULT_APP_URL = 'https://app.sonor.io'\nconst DEFAULT_API_URL = 'https://api.sonor.io'\nconst DEFAULT_COOKIE_NAME = '__Host-sonor-session'\nconst DEFAULT_SECRET_ENV = 'SONOR_SESSION_SECRET'\nconst DEFAULT_CALLBACK_PATH = '/api/auth/callback'\nconst THIRTY_DAYS = 30 * 24 * 60 * 60\n\nexport interface SonorSsoConfig {\n /**\n * The gated area(s). Every path equal to or under one of these needs a\n * session. The first entry is where a sign-in lands by default.\n */\n paths: string | string[]\n /** Default `${paths[0]}/login`. Always reachable without a session. */\n loginPath?: string\n /** Other gated paths reachable without a session. */\n publicPaths?: string[]\n /**\n * Gated API prefixes (e.g. `/api/studio`). Without a session they answer\n * 401 JSON instead of redirecting to the login page. Only useful when the\n * middleware matcher includes them; handlers must still check the session\n * themselves.\n */\n apiPaths?: string[]\n /** Where the callback route lives. Default `/api/auth/callback`. */\n callbackPath?: string\n /** Default `__Host-sonor-session`. Keep a site's old name to keep its users signed in. */\n cookieName?: string\n /** Default 30 days. */\n sessionLifetimeSeconds?: number\n /** Env var holding the signing secret. Default `SONOR_SESSION_SECRET`. */\n secretEnv?: string\n /**\n * Emails that get `isAdmin: true` on their session identity (comma string or\n * list, case-insensitive). Computed on every read from the verified cookie,\n * never stored in it. Everyone Sonor lets in still gets in; this only marks\n * who is an admin within the area.\n */\n adminEmails?: string | string[]\n /**\n * Outside production the gate lets everyone through as this identity, so\n * local dev works without a round trip to production Sonor. `false` makes\n * dev enforce the gate too. Default email: `SONOR_SSO_DEV_EMAIL`, else\n * `dev@localhost`.\n */\n devBypass?: false | { email?: string }\n /** Public origin for the callback URL. Default `NEXT_PUBLIC_SITE_URL`. */\n siteUrl?: string\n /** Default `NEXT_PUBLIC_SONOR_APP_URL`, else https://app.sonor.io. */\n appUrl?: string\n /** Default `SONOR_API_URL`, else https://api.sonor.io. */\n apiUrl?: string\n}\n\nexport interface SonorIdentity extends SonorSession {\n isAdmin: boolean\n /** True only for the non-production dev bypass. */\n isDevBypass: boolean\n}\n\nexport const SSO_ERROR_MESSAGES: Record<string, string> = {\n missing_token: 'The sign-in link was incomplete. Try again.',\n invalid_token: 'The sign-in link was invalid or expired. Try again.',\n invalid_or_expired: 'The sign-in link expired before it was used. Try again.',\n project_mismatch: 'That sign-in link was for a different site. Try again from the button below.',\n verify_failed: 'Sonor could not verify the sign-in link.',\n sonor_unreachable: 'Could not reach Sonor to verify sign-in. Check your connection and try again.',\n server_config: 'This site is missing its Sonor sign-in configuration.',\n}\n\nconst projectIdCache = new Map<string, Promise<string>>()\n\nfunction trimSlash(url: string): string {\n return url.replace(/\\/+$/, '')\n}\n\nfunction normalizePath(p: string): string {\n const withSlash = p.startsWith('/') ? p : `/${p}`\n return withSlash.length > 1 ? withSlash.replace(/\\/+$/, '') : withSlash\n}\n\nexport function createSonorSso(config: SonorSsoConfig) {\n const paths = (Array.isArray(config.paths) ? config.paths : [config.paths]).map(normalizePath)\n if (!paths.length || paths.some((p) => p === '/')) {\n throw new Error('@sonordev/site-kit/admin-auth: `paths` must name at least one area below the site root')\n }\n const home = paths[0]\n const loginPath = normalizePath(config.loginPath ?? `${home}/login`)\n const publicPaths = [loginPath, ...(config.publicPaths ?? []).map(normalizePath)]\n const apiPaths = (config.apiPaths ?? []).map(normalizePath)\n const callbackPath = normalizePath(config.callbackPath ?? DEFAULT_CALLBACK_PATH)\n const cookieName = config.cookieName ?? DEFAULT_COOKIE_NAME\n const lifetime = config.sessionLifetimeSeconds ?? THIRTY_DAYS\n const secretEnv = config.secretEnv ?? DEFAULT_SECRET_ENV\n\n const under = (pathname: string, base: string) => pathname === base || pathname.startsWith(`${base}/`)\n const isProtectedPath = (pathname: string) => paths.some((p) => under(pathname, p))\n const isPublicPath = (pathname: string) => publicPaths.some((p) => under(pathname, p))\n const isApiPath = (pathname: string) => apiPaths.some((p) => under(pathname, p))\n\n const secret = () => process.env[secretEnv]\n const apiUrl = () => trimSlash(config.apiUrl || process.env.SONOR_API_URL || DEFAULT_API_URL)\n const appUrl = () => trimSlash(config.appUrl || process.env.NEXT_PUBLIC_SONOR_APP_URL || DEFAULT_APP_URL)\n const isProduction = () => process.env.NODE_ENV === 'production'\n const devBypassEmail = () =>\n config.devBypass === false\n ? null\n : config.devBypass?.email || process.env.SONOR_SSO_DEV_EMAIL || 'dev@localhost'\n\n const adminSet = (): Set<string> => {\n const raw = config.adminEmails\n const list = Array.isArray(raw) ? raw : (raw ?? '').split(',')\n return new Set(list.map((e) => e.trim().toLowerCase()).filter(Boolean))\n }\n const toIdentity = (s: SonorSession, isDevBypass = false): SonorIdentity => ({\n ...s,\n isAdmin: adminSet().has(s.email.trim().toLowerCase()),\n isDevBypass,\n })\n const devIdentity = (): SonorIdentity | null => {\n const email = !isProduction() ? devBypassEmail() : null\n return email ? toIdentity({ email, contactId: `dev-${email}`, iat: 0, exp: 0 }, true) : null\n }\n\n /**\n * A safe post-sign-in destination: a same-origin path inside a gated area.\n * Anything else (absolute URLs, `//host`, backslashes, paths outside the\n * area) falls back to the area's home, so the callback can't be used as an\n * open redirect.\n */\n function sanitizeReturnTo(value: string | null | undefined): string {\n if (!value || typeof value !== 'string') return home\n if (!value.startsWith('/') || value.startsWith('//') || /[\\\\\u0000-\u001f]/.test(value)) return home\n const pathname = value.split(/[?#]/, 1)[0]\n return isProtectedPath(pathname) && !under(pathname, loginPath) ? value : home\n }\n\n function passThrough(request: NextRequest): NextResponse {\n // x-next-pathname on the REQUEST lets an admin layout know where it is.\n const headers = new Headers(request.headers)\n headers.set('x-next-pathname', request.nextUrl.pathname)\n const res = NextResponse.next({ request: { headers } })\n res.headers.set('X-Robots-Tag', 'noindex, nofollow')\n return res\n }\n\n /**\n * Middleware gate — pass as `createProxy({ before: sso.gate })`. Returns\n * undefined outside the gated area so the rest of the proxy (redirects, AI\n * discovery headers) still runs for public pages.\n */\n async function gate(request: NextRequest): Promise<NextResponse | undefined> {\n const { pathname, search } = request.nextUrl\n if (isApiPath(pathname)) {\n if (devIdentity() || (await getRequestSession(request))) return NextResponse.next()\n return NextResponse.json({ error: 'unauthorized' }, { status: 401, headers: { 'Cache-Control': 'no-store' } })\n }\n if (!isProtectedPath(pathname) && !isPublicPath(pathname)) return undefined\n if (isPublicPath(pathname) || devIdentity()) return passThrough(request)\n\n if (await getRequestSession(request)) return passThrough(request)\n\n const login = new URL(loginPath, request.url)\n if (pathname !== home || search) login.searchParams.set('return_to', pathname + search)\n const res = NextResponse.redirect(login)\n res.headers.set('X-Robots-Tag', 'noindex, nofollow')\n return res\n }\n\n /**\n * The identity carried by a request's cookie, for code that has the request\n * in hand (middleware, route handlers). Includes the dev bypass.\n */\n async function getRequestSession(request: NextRequest): Promise<SonorIdentity | null> {\n const dev = devIdentity()\n if (dev) return dev\n const session = await verifySessionToken(request.cookies.get(cookieName)?.value, secret())\n return session ? toIdentity(session) : null\n }\n\n /**\n * The signed-in identity for this request, or null. Use it in every server\n * component, server action and API route that exposes gated data.\n */\n async function getSession(): Promise<SonorIdentity | null> {\n const dev = devIdentity()\n if (dev) return dev\n const { cookies } = await import('next/headers')\n const jar = await cookies()\n const session = await verifySessionToken(jar.get(cookieName)?.value, secret())\n return session ? toIdentity(session) : null\n }\n\n async function resolveProjectId(): Promise<string> {\n const apiKey = process.env.SONOR_API_KEY\n if (!apiKey) throw new Error('SONOR_API_KEY is not set')\n const cacheKey = `${apiUrl()}|${apiKey}`\n let pending = projectIdCache.get(cacheKey)\n if (!pending) {\n pending = (async () => {\n const res = await fetch(`${apiUrl()}/api/public/auth/verify`, {\n headers: { 'x-api-key': apiKey },\n cache: 'no-store',\n signal: AbortSignal.timeout(10_000),\n })\n if (!res.ok) throw new Error(`Sonor verify returned ${res.status}`)\n const data = (await res.json()) as { project_id?: string }\n if (!data.project_id) throw new Error('Sonor verify returned no project_id')\n return data.project_id\n })()\n projectIdCache.set(cacheKey, pending)\n pending.catch(() => projectIdCache.delete(cacheKey))\n }\n return pending\n }\n\n /**\n * The \"Sign in with Sonor\" URL for the login page. Pass the page's\n * `return_to` search param through; it's sanitized here. Throws when the\n * site can't identify its project (no API key, Sonor unreachable) — catch\n * it and show the error rather than a dead button.\n */\n async function getLoginUrl(options: { returnTo?: string | null; siteUrl?: string } = {}): Promise<string> {\n const site = options.siteUrl || config.siteUrl || process.env.NEXT_PUBLIC_SITE_URL\n if (!site) throw new Error('NEXT_PUBLIC_SITE_URL (or siteUrl) is required to build the Sonor sign-in link')\n const callback = new URL(callbackPath, site)\n if (options.returnTo) {\n const safe = sanitizeReturnTo(options.returnTo)\n if (safe !== home) callback.searchParams.set('return_to', safe)\n }\n const grant = new URL('/sso/grant', `${appUrl()}/`)\n grant.searchParams.set('project_id', await resolveProjectId())\n grant.searchParams.set('return_to', callback.toString())\n return grant.toString()\n }\n\n function loginRedirect(request: NextRequest, error?: string): NextResponse {\n const url = new URL(loginPath, request.url)\n if (error) url.searchParams.set('error', error)\n const res = NextResponse.redirect(url)\n res.headers.set('Cache-Control', 'no-store')\n return res\n }\n\n /** `export const GET = sso.handleCallback` in the callback route. */\n async function handleCallback(request: NextRequest): Promise<NextResponse> {\n const token = request.nextUrl.searchParams.get('token')\n if (!token) return loginRedirect(request, 'missing_token')\n\n const apiKey = process.env.SONOR_API_KEY\n if (!apiKey) {\n console.error('[sonor-sso] SONOR_API_KEY is not set; cannot verify the sign-in token')\n return loginRedirect(request, 'server_config')\n }\n\n let res: Response\n try {\n res = await fetch(`${apiUrl()}/api/public/auth/verify-sso-token`, {\n method: 'POST',\n headers: { 'content-type': 'application/json', 'x-api-key': apiKey },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n signal: AbortSignal.timeout(10_000),\n })\n } catch (err) {\n console.error('[sonor-sso] verify request failed:', err)\n return loginRedirect(request, 'sonor_unreachable')\n }\n if (!res.ok) {\n console.error(`[sonor-sso] verify returned ${res.status}`)\n return loginRedirect(request, 'verify_failed')\n }\n\n const data = (await res.json().catch(() => null)) as\n | { valid?: boolean; email?: string; contactId?: string; reason?: string }\n | null\n if (!data?.valid || !data.email || !data.contactId) {\n return loginRedirect(request, data?.reason || 'invalid_token')\n }\n\n let sessionToken: string\n try {\n sessionToken = await signSession({ email: data.email, contactId: data.contactId }, secret() ?? '', lifetime)\n } catch (err) {\n console.error(`[sonor-sso] could not sign the session (check ${secretEnv}):`, err)\n return loginRedirect(request, 'server_config')\n }\n\n const destination = sanitizeReturnTo(request.nextUrl.searchParams.get('return_to'))\n const out = NextResponse.redirect(new URL(destination, request.url))\n out.cookies.set(cookieName, sessionToken, {\n httpOnly: true,\n secure: true,\n sameSite: 'lax',\n path: '/',\n maxAge: lifetime,\n })\n // The token rode in on the URL: keep it out of Referer headers and caches.\n out.headers.set('Referrer-Policy', 'no-referrer')\n out.headers.set('Cache-Control', 'no-store')\n return out\n }\n\n /** `export const GET = sso.handleLogout` (and POST) in the logout route. */\n function handleLogout(request: NextRequest): NextResponse {\n const url = new URL(loginPath, request.url)\n url.searchParams.set('signed_out', '1')\n // 303 so a POST from a sign-out form lands as a GET on the login page.\n const res = NextResponse.redirect(url, 303)\n res.cookies.set(cookieName, '', { httpOnly: true, secure: true, sameSite: 'lax', path: '/', maxAge: 0 })\n res.headers.set('Cache-Control', 'no-store')\n return res\n }\n\n return {\n gate,\n getSession,\n getRequestSession,\n getLoginUrl,\n handleCallback,\n handleLogout,\n sanitizeReturnTo,\n isProtectedPath,\n cookieName,\n loginPath,\n homePath: home,\n }\n}\n\nexport type SonorSso = ReturnType<typeof createSonorSso>\n"]}
Binary file
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/admin-auth/session.ts","../../src/admin-auth/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Signed session cookie for Sonor SSO-gated site areas.\n *\n * Format: `<base64url(payload)>.<base64url(HMAC-SHA256(payloadB64))>`, payload\n * `{ email, contactId, iat, exp }` in Unix seconds. This is byte-compatible with\n * the hand-rolled Web Crypto sessions legacy-clay-classic and the CCG builder\n * shipped before this module existed, so a site that passes its old cookie name\n * and secret keeps every signed-in user signed in across the switch.\n *\n * Web Crypto only (never Node `crypto`): these helpers run in Edge middleware\n * and in Node route handlers alike.\n */\n\nexport interface SonorSession {\n email: string\n contactId: string\n /** Unix seconds */\n iat: number\n /** Unix seconds */\n exp: number\n}\n\nexport const MIN_SECRET_LENGTH = 32\n\nconst encoder = new TextEncoder()\nconst keyCache = new Map<string, Promise<CryptoKey>>()\n\nfunction hmacKey(secret: string): Promise<CryptoKey> {\n let key = keyCache.get(secret)\n if (!key) {\n key = crypto.subtle.importKey(\n 'raw',\n encoder.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify'],\n )\n keyCache.set(secret, key)\n }\n return key\n}\n\nfunction bytesToB64url(bytes: Uint8Array): string {\n let bin = ''\n for (let i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i])\n return btoa(bin).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\nfunction b64urlToBytes(s: string): Uint8Array<ArrayBuffer> | null {\n if (!/^[A-Za-z0-9_-]*$/.test(s)) return null\n try {\n const bin = atob(s.replace(/-/g, '+').replace(/_/g, '/') + '==='.slice((s.length + 3) % 4))\n const bytes = new Uint8Array(bin.length)\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i)\n return bytes\n } catch {\n return null\n }\n}\n\nfunction assertSecret(secret: string | undefined): string {\n if (!secret || secret.length < MIN_SECRET_LENGTH) {\n throw new Error(\n `@sonordev/site-kit/admin-auth: the session secret must be at least ${MIN_SECRET_LENGTH} characters (try \\`openssl rand -hex 32\\`)`,\n )\n }\n return secret\n}\n\nexport async function signSession(\n identity: { email: string; contactId: string },\n secret: string,\n lifetimeSeconds: number,\n now: number = Math.floor(Date.now() / 1000),\n): Promise<string> {\n const payload: SonorSession = {\n email: identity.email,\n contactId: identity.contactId,\n iat: now,\n exp: now + lifetimeSeconds,\n }\n const payloadB64 = bytesToB64url(encoder.encode(JSON.stringify(payload)))\n const key = await hmacKey(assertSecret(secret))\n const sig = new Uint8Array(await crypto.subtle.sign('HMAC', key, encoder.encode(payloadB64)))\n return `${payloadB64}.${bytesToB64url(sig)}`\n}\n\n/**\n * Returns the session, or null for anything short of a valid, unexpired,\n * correctly signed token — including a missing or short secret, so a\n * misconfigured deploy sends people to the login page instead of 500-ing.\n */\nexport async function verifySessionToken(\n token: string | null | undefined,\n secret: string | undefined,\n now: number = Math.floor(Date.now() / 1000),\n): Promise<SonorSession | null> {\n if (!token || typeof token !== 'string') return null\n const dot = token.indexOf('.')\n if (dot < 1 || dot !== token.lastIndexOf('.')) return null\n const payloadB64 = token.slice(0, dot)\n const sig = b64urlToBytes(token.slice(dot + 1))\n if (!sig) return null\n\n let key: CryptoKey\n try {\n key = await hmacKey(assertSecret(secret))\n } catch (err) {\n console.error(String(err instanceof Error ? err.message : err))\n return null\n }\n\n // subtle.verify is the constant-time comparison.\n const ok = await crypto.subtle.verify('HMAC', key, sig, encoder.encode(payloadB64))\n if (!ok) return null\n\n const raw = b64urlToBytes(payloadB64)\n if (!raw) return null\n try {\n const p = JSON.parse(new TextDecoder().decode(raw)) as Partial<SonorSession>\n if (\n typeof p.email !== 'string' ||\n typeof p.contactId !== 'string' ||\n typeof p.iat !== 'number' ||\n typeof p.exp !== 'number' ||\n p.exp < now\n ) {\n return null\n }\n return { email: p.email, contactId: p.contactId, iat: p.iat, exp: p.exp }\n } catch {\n return null\n }\n}\n","/**\n * @sonordev/site-kit/admin-auth — \"Sign in with Sonor\" for a site's own admin area\n *\n * SINGLE SOURCE OF TRUTH for the Sonor SSO handshake on client sites. Before\n * this module, 4m-lawn-care (/bid, /route), legacy-clay-classic (/admin) and the\n * CCG builder (/studio) each carried a hand-copied version, and the copies had\n * already drifted (Node vs Web Crypto, 7 vs 30 day sessions, roles in one only).\n * Do not re-fork it into a site.\n *\n * The handshake:\n * 1. `/admin/login` links to `app.sonor.io/sso/grant?project_id=…&return_to=<callback>`.\n * 2. Sonor checks the signed-in user can access the project (owner, member,\n * managing agency, or platform admin) and redirects to the callback with a\n * short-lived token.\n * 3. The callback posts the token to `/api/public/auth/verify-sso-token` with\n * the project API key; Sonor rejects tokens issued for any other project.\n * 4. The callback sets a signed, httpOnly session cookie (30 days default).\n *\n * Wiring (four files):\n *\n * // lib/sonor-sso.ts\n * export const sso = createSonorSso({ paths: '/admin' })\n *\n * // middleware.ts (or proxy.ts)\n * export default createProxy({ before: sso.gate, securityHeaders: true })\n *\n * // app/api/auth/callback/route.ts\n * export const GET = sso.handleCallback\n *\n * // app/api/auth/logout/route.ts\n * export const GET = sso.handleLogout\n * export const POST = sso.handleLogout\n *\n * Then `await sso.getLoginUrl()` in the login page, and `await sso.getSession()`\n * in every page, server action and API route that exposes admin data. The\n * middleware gate never sees `/api/*` (the standard matcher excludes it), so\n * API routes MUST check `getSession()` themselves.\n *\n * Env: SONOR_API_KEY (already set on every site), SONOR_SESSION_SECRET (>= 32\n * chars; rotating it signs everyone out), NEXT_PUBLIC_SITE_URL.\n */\n\nimport { NextResponse, type NextRequest } from 'next/server'\nimport { signSession, verifySessionToken, type SonorSession } from './session'\n\nexport type { SonorSession } from './session'\nexport { signSession, verifySessionToken } from './session'\n\nconst DEFAULT_APP_URL = 'https://app.sonor.io'\nconst DEFAULT_API_URL = 'https://api.sonor.io'\nconst DEFAULT_COOKIE_NAME = '__Host-sonor-session'\nconst DEFAULT_SECRET_ENV = 'SONOR_SESSION_SECRET'\nconst DEFAULT_CALLBACK_PATH = '/api/auth/callback'\nconst THIRTY_DAYS = 30 * 24 * 60 * 60\n\nexport interface SonorSsoConfig {\n /**\n * The gated area(s). Every path equal to or under one of these needs a\n * session. The first entry is where a sign-in lands by default.\n */\n paths: string | string[]\n /** Default `${paths[0]}/login`. Always reachable without a session. */\n loginPath?: string\n /** Other gated paths reachable without a session. */\n publicPaths?: string[]\n /**\n * Gated API prefixes (e.g. `/api/studio`). Without a session they answer\n * 401 JSON instead of redirecting to the login page. Only useful when the\n * middleware matcher includes them; handlers must still check the session\n * themselves.\n */\n apiPaths?: string[]\n /** Where the callback route lives. Default `/api/auth/callback`. */\n callbackPath?: string\n /** Default `__Host-sonor-session`. Keep a site's old name to keep its users signed in. */\n cookieName?: string\n /** Default 30 days. */\n sessionLifetimeSeconds?: number\n /** Env var holding the signing secret. Default `SONOR_SESSION_SECRET`. */\n secretEnv?: string\n /**\n * Emails that get `isAdmin: true` on their session identity (comma string or\n * list, case-insensitive). Computed on every read from the verified cookie,\n * never stored in it. Everyone Sonor lets in still gets in; this only marks\n * who is an admin within the area.\n */\n adminEmails?: string | string[]\n /**\n * Outside production the gate lets everyone through as this identity, so\n * local dev works without a round trip to production Sonor. `false` makes\n * dev enforce the gate too. Default email: `SONOR_SSO_DEV_EMAIL`, else\n * `dev@localhost`.\n */\n devBypass?: false | { email?: string }\n /** Public origin for the callback URL. Default `NEXT_PUBLIC_SITE_URL`. */\n siteUrl?: string\n /** Default `NEXT_PUBLIC_SONOR_APP_URL`, else https://app.sonor.io. */\n appUrl?: string\n /** Default `SONOR_API_URL`, else https://api.sonor.io. */\n apiUrl?: string\n}\n\nexport interface SonorIdentity extends SonorSession {\n isAdmin: boolean\n /** True only for the non-production dev bypass. */\n isDevBypass: boolean\n}\n\nexport const SSO_ERROR_MESSAGES: Record<string, string> = {\n missing_token: 'The sign-in link was incomplete. Try again.',\n invalid_token: 'The sign-in link was invalid or expired. Try again.',\n invalid_or_expired: 'The sign-in link expired before it was used. Try again.',\n project_mismatch: 'That sign-in link was for a different site. Try again from the button below.',\n verify_failed: 'Sonor could not verify the sign-in link.',\n sonor_unreachable: 'Could not reach Sonor to verify sign-in. Check your connection and try again.',\n server_config: 'This site is missing its Sonor sign-in configuration.',\n}\n\nconst projectIdCache = new Map<string, Promise<string>>()\n\nfunction trimSlash(url: string): string {\n return url.replace(/\\/+$/, '')\n}\n\nfunction normalizePath(p: string): string {\n const withSlash = p.startsWith('/') ? p : `/${p}`\n return withSlash.length > 1 ? withSlash.replace(/\\/+$/, '') : withSlash\n}\n\nexport function createSonorSso(config: SonorSsoConfig) {\n const paths = (Array.isArray(config.paths) ? config.paths : [config.paths]).map(normalizePath)\n if (!paths.length || paths.some((p) => p === '/')) {\n throw new Error('@sonordev/site-kit/admin-auth: `paths` must name at least one area below the site root')\n }\n const home = paths[0]\n const loginPath = normalizePath(config.loginPath ?? `${home}/login`)\n const publicPaths = [loginPath, ...(config.publicPaths ?? []).map(normalizePath)]\n const apiPaths = (config.apiPaths ?? []).map(normalizePath)\n const callbackPath = normalizePath(config.callbackPath ?? DEFAULT_CALLBACK_PATH)\n const cookieName = config.cookieName ?? DEFAULT_COOKIE_NAME\n const lifetime = config.sessionLifetimeSeconds ?? THIRTY_DAYS\n const secretEnv = config.secretEnv ?? DEFAULT_SECRET_ENV\n\n const under = (pathname: string, base: string) => pathname === base || pathname.startsWith(`${base}/`)\n const isProtectedPath = (pathname: string) => paths.some((p) => under(pathname, p))\n const isPublicPath = (pathname: string) => publicPaths.some((p) => under(pathname, p))\n const isApiPath = (pathname: string) => apiPaths.some((p) => under(pathname, p))\n\n const secret = () => process.env[secretEnv]\n const apiUrl = () => trimSlash(config.apiUrl || process.env.SONOR_API_URL || DEFAULT_API_URL)\n const appUrl = () => trimSlash(config.appUrl || process.env.NEXT_PUBLIC_SONOR_APP_URL || DEFAULT_APP_URL)\n const isProduction = () => process.env.NODE_ENV === 'production'\n const devBypassEmail = () =>\n config.devBypass === false\n ? null\n : config.devBypass?.email || process.env.SONOR_SSO_DEV_EMAIL || 'dev@localhost'\n\n const adminSet = (): Set<string> => {\n const raw = config.adminEmails\n const list = Array.isArray(raw) ? raw : (raw ?? '').split(',')\n return new Set(list.map((e) => e.trim().toLowerCase()).filter(Boolean))\n }\n const toIdentity = (s: SonorSession, isDevBypass = false): SonorIdentity => ({\n ...s,\n isAdmin: adminSet().has(s.email.trim().toLowerCase()),\n isDevBypass,\n })\n const devIdentity = (): SonorIdentity | null => {\n const email = !isProduction() ? devBypassEmail() : null\n return email ? toIdentity({ email, contactId: `dev-${email}`, iat: 0, exp: 0 }, true) : null\n }\n\n /**\n * A safe post-sign-in destination: a same-origin path inside a gated area.\n * Anything else (absolute URLs, `//host`, backslashes, paths outside the\n * area) falls back to the area's home, so the callback can't be used as an\n * open redirect.\n */\n function sanitizeReturnTo(value: string | null | undefined): string {\n if (!value || typeof value !== 'string') return home\n if (!value.startsWith('/') || value.startsWith('//') || /[\\\\\u0000-\u001f]/.test(value)) return home\n const pathname = value.split(/[?#]/, 1)[0]\n return isProtectedPath(pathname) && !under(pathname, loginPath) ? value : home\n }\n\n function passThrough(request: NextRequest): NextResponse {\n // x-next-pathname on the REQUEST lets an admin layout know where it is.\n const headers = new Headers(request.headers)\n headers.set('x-next-pathname', request.nextUrl.pathname)\n const res = NextResponse.next({ request: { headers } })\n res.headers.set('X-Robots-Tag', 'noindex, nofollow')\n return res\n }\n\n /**\n * Middleware gate — pass as `createProxy({ before: sso.gate })`. Returns\n * undefined outside the gated area so the rest of the proxy (redirects, AI\n * discovery headers) still runs for public pages.\n */\n async function gate(request: NextRequest): Promise<NextResponse | undefined> {\n const { pathname, search } = request.nextUrl\n if (isApiPath(pathname)) {\n if (devIdentity() || (await getRequestSession(request))) return NextResponse.next()\n return NextResponse.json({ error: 'unauthorized' }, { status: 401, headers: { 'Cache-Control': 'no-store' } })\n }\n if (!isProtectedPath(pathname) && !isPublicPath(pathname)) return undefined\n if (isPublicPath(pathname) || devIdentity()) return passThrough(request)\n\n if (await getRequestSession(request)) return passThrough(request)\n\n const login = new URL(loginPath, request.url)\n if (pathname !== home || search) login.searchParams.set('return_to', pathname + search)\n const res = NextResponse.redirect(login)\n res.headers.set('X-Robots-Tag', 'noindex, nofollow')\n return res\n }\n\n /**\n * The identity carried by a request's cookie, for code that has the request\n * in hand (middleware, route handlers). Includes the dev bypass.\n */\n async function getRequestSession(request: NextRequest): Promise<SonorIdentity | null> {\n const dev = devIdentity()\n if (dev) return dev\n const session = await verifySessionToken(request.cookies.get(cookieName)?.value, secret())\n return session ? toIdentity(session) : null\n }\n\n /**\n * The signed-in identity for this request, or null. Use it in every server\n * component, server action and API route that exposes gated data.\n */\n async function getSession(): Promise<SonorIdentity | null> {\n const dev = devIdentity()\n if (dev) return dev\n const { cookies } = await import('next/headers')\n const jar = await cookies()\n const session = await verifySessionToken(jar.get(cookieName)?.value, secret())\n return session ? toIdentity(session) : null\n }\n\n async function resolveProjectId(): Promise<string> {\n const apiKey = process.env.SONOR_API_KEY\n if (!apiKey) throw new Error('SONOR_API_KEY is not set')\n const cacheKey = `${apiUrl()}|${apiKey}`\n let pending = projectIdCache.get(cacheKey)\n if (!pending) {\n pending = (async () => {\n const res = await fetch(`${apiUrl()}/api/public/auth/verify`, {\n headers: { 'x-api-key': apiKey },\n cache: 'no-store',\n signal: AbortSignal.timeout(10_000),\n })\n if (!res.ok) throw new Error(`Sonor verify returned ${res.status}`)\n const data = (await res.json()) as { project_id?: string }\n if (!data.project_id) throw new Error('Sonor verify returned no project_id')\n return data.project_id\n })()\n projectIdCache.set(cacheKey, pending)\n pending.catch(() => projectIdCache.delete(cacheKey))\n }\n return pending\n }\n\n /**\n * The \"Sign in with Sonor\" URL for the login page. Pass the page's\n * `return_to` search param through; it's sanitized here. Throws when the\n * site can't identify its project (no API key, Sonor unreachable) — catch\n * it and show the error rather than a dead button.\n */\n async function getLoginUrl(options: { returnTo?: string | null; siteUrl?: string } = {}): Promise<string> {\n const site = options.siteUrl || config.siteUrl || process.env.NEXT_PUBLIC_SITE_URL\n if (!site) throw new Error('NEXT_PUBLIC_SITE_URL (or siteUrl) is required to build the Sonor sign-in link')\n const callback = new URL(callbackPath, site)\n if (options.returnTo) {\n const safe = sanitizeReturnTo(options.returnTo)\n if (safe !== home) callback.searchParams.set('return_to', safe)\n }\n const grant = new URL('/sso/grant', `${appUrl()}/`)\n grant.searchParams.set('project_id', await resolveProjectId())\n grant.searchParams.set('return_to', callback.toString())\n return grant.toString()\n }\n\n function loginRedirect(request: NextRequest, error?: string): NextResponse {\n const url = new URL(loginPath, request.url)\n if (error) url.searchParams.set('error', error)\n const res = NextResponse.redirect(url)\n res.headers.set('Cache-Control', 'no-store')\n return res\n }\n\n /** `export const GET = sso.handleCallback` in the callback route. */\n async function handleCallback(request: NextRequest): Promise<NextResponse> {\n const token = request.nextUrl.searchParams.get('token')\n if (!token) return loginRedirect(request, 'missing_token')\n\n const apiKey = process.env.SONOR_API_KEY\n if (!apiKey) {\n console.error('[sonor-sso] SONOR_API_KEY is not set; cannot verify the sign-in token')\n return loginRedirect(request, 'server_config')\n }\n\n let res: Response\n try {\n res = await fetch(`${apiUrl()}/api/public/auth/verify-sso-token`, {\n method: 'POST',\n headers: { 'content-type': 'application/json', 'x-api-key': apiKey },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n signal: AbortSignal.timeout(10_000),\n })\n } catch (err) {\n console.error('[sonor-sso] verify request failed:', err)\n return loginRedirect(request, 'sonor_unreachable')\n }\n if (!res.ok) {\n console.error(`[sonor-sso] verify returned ${res.status}`)\n return loginRedirect(request, 'verify_failed')\n }\n\n const data = (await res.json().catch(() => null)) as\n | { valid?: boolean; email?: string; contactId?: string; reason?: string }\n | null\n if (!data?.valid || !data.email || !data.contactId) {\n return loginRedirect(request, data?.reason || 'invalid_token')\n }\n\n let sessionToken: string\n try {\n sessionToken = await signSession({ email: data.email, contactId: data.contactId }, secret() ?? '', lifetime)\n } catch (err) {\n console.error(`[sonor-sso] could not sign the session (check ${secretEnv}):`, err)\n return loginRedirect(request, 'server_config')\n }\n\n const destination = sanitizeReturnTo(request.nextUrl.searchParams.get('return_to'))\n const out = NextResponse.redirect(new URL(destination, request.url))\n out.cookies.set(cookieName, sessionToken, {\n httpOnly: true,\n secure: true,\n sameSite: 'lax',\n path: '/',\n maxAge: lifetime,\n })\n // The token rode in on the URL: keep it out of Referer headers and caches.\n out.headers.set('Referrer-Policy', 'no-referrer')\n out.headers.set('Cache-Control', 'no-store')\n return out\n }\n\n /** `export const GET = sso.handleLogout` (and POST) in the logout route. */\n function handleLogout(request: NextRequest): NextResponse {\n const url = new URL(loginPath, request.url)\n url.searchParams.set('signed_out', '1')\n // 303 so a POST from a sign-out form lands as a GET on the login page.\n const res = NextResponse.redirect(url, 303)\n res.cookies.set(cookieName, '', { httpOnly: true, secure: true, sameSite: 'lax', path: '/', maxAge: 0 })\n res.headers.set('Cache-Control', 'no-store')\n return res\n }\n\n return {\n gate,\n getSession,\n getRequestSession,\n getLoginUrl,\n handleCallback,\n handleLogout,\n sanitizeReturnTo,\n isProtectedPath,\n cookieName,\n loginPath,\n homePath: home,\n }\n}\n\nexport type SonorSso = ReturnType<typeof createSonorSso>\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/admin-auth/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,iBAAiB,KAAK,CAAA;AA+CnC,wBAAsB,WAAW,CAC/B,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC9C,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,GAAG,GAAE,MAAsC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,GAAE,MAAsC,GAC1C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqC9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AffiliatesWidget.d.ts","sourceRoot":"","sources":["../../src/affiliates/AffiliatesWidget.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,SAAS,CAAA;AAMlE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,mBAAmB,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAA;IAChE,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAc,EACd,UAAU,EACV,UAAkB,GACnB,EAAE,kBAAkB,qBA4DpB;AAMD,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,mCAAmC;IACnC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,6BAA6B;IAC7B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gDAAgD;IAChD,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAA;IACrE,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAc,EACd,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,UAAkB,EAClB,eAAe,EACf,KAAK,GACN,EAAE,qBAAqB,oRA8BvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/affiliates/api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAa,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAoDrF;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG3E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/affiliates/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}