@sonordev/site-kit 6.5.0 → 7.0.1

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-EMM2TKRE.js +11 -0
  5. package/dist/ArticleFaqSection-3Q26DP7P.js +9 -0
  6. package/dist/ArticleViewTracker-RA64BGL6.js +49 -0
  7. package/dist/BlocksPopup-D25RFNOV.js +43 -0
  8. package/dist/ChatWidget-RYI7BMJJ.js +15 -0
  9. package/dist/DatePicker-JEBV6WYJ.js +2 -0
  10. package/dist/EngageWidget-UKFCN33M.js +11 -0
  11. package/dist/FileField-MUHA7LZR.js +83 -0
  12. package/dist/FormCelebration-OVGAGBKF.js +2 -0
  13. package/dist/FormSpotlight-TCLPWPLL.js +754 -0
  14. package/dist/FormStage-CNYLP6I6.js +418 -0
  15. package/dist/ManagedForm-7ZL5SKTO.js +14 -0
  16. package/dist/ManagedNewsletterForm-33B4JLX7.js +62 -0
  17. package/dist/SignalCore-L5FVDHFE.js +322 -0
  18. package/dist/SiteDesignReporter-4JOFL4FP.js +11 -0
  19. package/dist/SitemapSync-7WKY4HXI.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-3KUUH2YP.js +148 -0
  88. package/dist/chunk-43OCZ3JA.js +67 -0
  89. package/dist/chunk-4IQ52CXL.js +1803 -0
  90. package/dist/chunk-4KZ6W3ZH.js +8 -0
  91. package/dist/chunk-4RMVXRBO.js +478 -0
  92. package/dist/chunk-4Y5FWDPM.js +97 -0
  93. package/dist/chunk-5SEM2V4A.js +837 -0
  94. package/dist/chunk-5SQK3D53.js +24 -0
  95. package/dist/chunk-6HDT4G4A.js +253 -0
  96. package/dist/chunk-6T6CQVNL.js +37 -0
  97. package/dist/chunk-7KJGO77W.js +1 -0
  98. package/dist/chunk-7L5AARVY.js +68 -0
  99. package/dist/chunk-7ZWO5HDQ.js +1 -0
  100. package/dist/chunk-A4CC4ZG3.js +15 -0
  101. package/dist/chunk-AQSNPZY4.js +92 -0
  102. package/dist/chunk-BMO3VGMR.js +184 -0
  103. package/dist/chunk-BQR4IPBW.js +146 -0
  104. package/dist/chunk-BR4ZKUHH.js +227 -0
  105. package/dist/chunk-BU66S5B7.js +1 -0
  106. package/dist/chunk-C4G3NW2E.js +25 -0
  107. package/dist/chunk-CVTVNC2U.js +99 -0
  108. package/dist/chunk-D7SLSJS4.js +1 -0
  109. package/dist/chunk-DIKNRN34.js +28 -0
  110. package/dist/chunk-DXO6SBMD.js +43 -0
  111. package/dist/chunk-EDYHROQ7.js +77 -0
  112. package/dist/chunk-EGOD74PP.js +129 -0
  113. package/dist/chunk-EKBEOXTH.js +114 -0
  114. package/dist/chunk-FESKKJAS.js +19 -0
  115. package/dist/chunk-FL4EPUWA.js +407 -0
  116. package/dist/chunk-FV2VD7WM.js +347 -0
  117. package/dist/chunk-FYAB6CXS.js +265 -0
  118. package/dist/chunk-FYBZ5SNP.js +1241 -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-GYESATRY.js +19 -0
  125. package/dist/chunk-GYF2ULVO.js +14 -0
  126. package/dist/chunk-HGCK465A.js +1071 -0
  127. package/dist/chunk-HXJ54KAM.js +122 -0
  128. package/dist/chunk-IHG36STL.js +286 -0
  129. package/dist/chunk-J4FSB4OG.js +200 -0
  130. package/dist/chunk-JE4A5S4F.js +48 -0
  131. package/dist/chunk-JJ4JS3LD.js +26 -0
  132. package/dist/chunk-JSZN6LDZ.js +338 -0
  133. package/dist/chunk-KPAZG65P.js +138 -0
  134. package/dist/chunk-KV4LOKOU.js +154 -0
  135. package/dist/chunk-KXPBMCFL.js +39 -0
  136. package/dist/chunk-L2V5PUFN.js +15 -0
  137. package/dist/chunk-L3AQCDCY.js +386 -0
  138. package/dist/chunk-L5UOHS6E.js +45 -0
  139. package/dist/chunk-LCDVPAMR.js +24 -0
  140. package/dist/chunk-LE7ZOTHB.js +43 -0
  141. package/dist/chunk-LNSNA3W4.js +217 -0
  142. package/dist/chunk-LQJC5S2M.js +236 -0
  143. package/dist/chunk-LVESVYCE.js +270 -0
  144. package/dist/chunk-MH2DSGC6.js +10 -0
  145. package/dist/chunk-MJP63SSS.js +14 -0
  146. package/dist/chunk-MV2MBTC3.js +177 -0
  147. package/dist/chunk-MVLMXC44.js +9 -0
  148. package/dist/chunk-N2UVOR3X.js +238 -0
  149. package/dist/chunk-NDF4A5JM.js +37 -0
  150. package/dist/chunk-NJCTQH2P.js +62 -0
  151. package/dist/chunk-NZOJHERI.js +32 -0
  152. package/dist/chunk-OFOAHPUV.js +127 -0
  153. package/dist/chunk-OPRBF7VE.js +41 -0
  154. package/dist/chunk-OSYCOC3K.js +21 -0
  155. package/dist/chunk-P4GRY6QP.js +54 -0
  156. package/dist/chunk-P5GB6NEO.js +66 -0
  157. package/dist/chunk-P5J7VMQ3.js +523 -0
  158. package/dist/chunk-PKBMQBKP.js +5 -0
  159. package/dist/chunk-PO2TRJPY.js +40 -0
  160. package/dist/chunk-PSAG45YF.js +451 -0
  161. package/dist/chunk-PXKIGZ2F.js +31 -0
  162. package/dist/chunk-QANVUXKH.js +100 -0
  163. package/dist/chunk-QGHSMJKW.js +4 -0
  164. package/dist/chunk-QLTDFUJ7.js +94 -0
  165. package/dist/chunk-QPEEKFCA.js +533 -0
  166. package/dist/chunk-QXMIKDOL.js +125 -0
  167. package/dist/chunk-QZZIKMAT.js +163 -0
  168. package/dist/chunk-S22FSH7C.js +94 -0
  169. package/dist/chunk-SC4MZGWZ.js +63 -0
  170. package/dist/chunk-SOD2F6C2.js +281 -0
  171. package/dist/chunk-SS636UDN.js +35 -0
  172. package/dist/chunk-SSUQKA7L.js +746 -0
  173. package/dist/chunk-SWKE6FWH.js +47 -0
  174. package/dist/chunk-T22VK4NJ.js +49 -0
  175. package/dist/chunk-T3MC4HOD.js +130 -0
  176. package/dist/chunk-TT63HHIT.js +543 -0
  177. package/dist/chunk-TXBAOEKG.js +1084 -0
  178. package/dist/chunk-UPFU63L4.js +126 -0
  179. package/dist/chunk-UVPGW4R7.js +222 -0
  180. package/dist/chunk-UZN4ZYR2.js +937 -0
  181. package/dist/chunk-V6LSQRTH.js +52 -0
  182. package/dist/chunk-VX5CMNMM.js +26 -0
  183. package/dist/chunk-WATH55UY.js +191 -0
  184. package/dist/chunk-WMVK77ND.js +53 -0
  185. package/dist/chunk-X6F6SO4S.js +135 -0
  186. package/dist/chunk-XTRZGXB2.js +34 -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 +484 -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 +0,0 @@
1
- {"version":3,"sources":["../src/articles/public-reads.ts","../src/articles/excerpt.ts","../src/articles/news-sitemap.ts","../src/articles/server-core.ts"],"names":["withSiteParam","withSiteBody","resolveArticleUrl","resolveServerApiConfig","notFound","createPublicationRoutes","resolvePublicationUrl","articleCategorySlug","generateArticleAuthorNode","resolveArticleArtwork","description","withArticleAuthorIdentity"],"mappings":"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","file":"chunk-RQROZLH3.js","sourcesContent":["/**\n * @sonordev/site-kit/articles — shared public article reads (leaf module)\n *\n * SINGLE SOURCE OF TRUTH for the three article reads that both `server-core`\n * (credentials from resolveServerApiConfig) and the server-ui components\n * (credentials from their `apiUrl` / `apiKey` props) make:\n *\n * - post by slug — getArticle, <Article>\n * - categories — getArticleCategories, <ArticleList>, <PublicationSidebar>\n * - related posts — getRelatedInsights, <Article>, <RelatedPosts>\n *\n * Each used to be copied into every caller, which is how one copy of the\n * related read kept a camelCase body and a wrong path long after the others\n * were fixed (see the notes in RelatedPosts). Adding the multi-site `site`\n * dimension would have meant a fourth edit to each copy, so they live here now.\n *\n * A leaf on purpose: it takes credentials as arguments and imports no\n * `server-only` code, because the client-stamped `articles` barrel reaches it\n * through ArticleList / Article / PublicationSidebar. Callers resolve credentials; this\n * module only talks to the API.\n */\nimport { withSiteBody, withSiteParam } from '../sites/site-param'\nimport type { ArticleCategory, Article } from './types'\n\nexport interface ArticleReadConfig {\n apiUrl: string\n apiKey: string\n /** Sub-site host override. Omit to resolve from NEXT_PUBLIC_SITE_URL. */\n site?: string\n}\n\n/** GET /public/articles/posts/:slug — null when missing or on any failure. */\nexport async function fetchArticleBySlug(\n { apiUrl, apiKey, site }: ArticleReadConfig,\n slug: string\n): Promise<Article | null> {\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/posts/${slug}`, site), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 60 },\n })\n if (!response.ok) {\n if (response.status !== 404) console.error('[Articles] Failed to fetch post:', response.statusText)\n return null\n }\n const data = await response.json()\n return data.post || null\n } catch (error) {\n console.error('[Articles] Error fetching post:', error)\n return null\n }\n}\n\n/** GET /public/articles/categories — [] on any failure. */\nexport async function fetchArticleCategories({ apiUrl, apiKey, site }: ArticleReadConfig): Promise<ArticleCategory[]> {\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/categories`, site), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n })\n if (!response.ok) return []\n const data = await response.json()\n return data.categories || []\n } catch (error) {\n console.error('[Articles] Error fetching categories:', error)\n return []\n }\n}\n\n/**\n * POST /public/articles/related — [] on any failure.\n *\n * `/public/articles/*`, not `/api/public/articles/*`: public-article.controller is one of\n * only two public controllers whose @Controller() omits the `api/` segment.\n * The body is snake_case `current_post_id` (the controller looks the post up\n * by id — there is no slug path), and `site` rides in the body because this is\n * the one article read that isn't a GET.\n *\n * `revalidate` is optional so <RelatedPosts>, which never set a fetch cache\n * lifetime, keeps rendering exactly as it did.\n */\nexport async function fetchRelatedArticles(\n { apiUrl, apiKey, site }: ArticleReadConfig,\n currentPostId: string,\n limit: number,\n cache: { revalidate?: number } = {}\n): Promise<Article[]> {\n try {\n const response = await fetch(`${apiUrl}/public/articles/related`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'x-api-key': apiKey },\n body: JSON.stringify(withSiteBody({ current_post_id: currentPostId, limit }, site)),\n ...(cache.revalidate !== undefined ? { next: { revalidate: cache.revalidate } } : {}),\n })\n if (!response.ok) {\n console.error('[Articles] Failed to fetch related posts:', response.statusText)\n return []\n }\n const data = await response.json()\n return data.posts || []\n } catch (error) {\n console.error('[Articles] Error fetching related posts:', error)\n return []\n }\n}\n","/**\n * Excerpt sanitizing for article metadata, schema and feeds.\n *\n * Pure (no `server-only` chain) so it is unit-testable and safe to reuse.\n * Source of truth for turning a stored excerpt into display-safe prose.\n */\n\n/**\n * Turn a stored excerpt into something safe to put in a meta description,\n * a schema `description`, or an RSS `<description>`.\n *\n * The AI article pipeline stores content as JSON sections\n * (`{\"heading\": \"## ...\", \"content\": \"## ...\\n\\nIf you're asking **how**...\"}`)\n * and that value has been shipping verbatim into <meta name=\"description\">.\n * nkylawfirm.com had three live articles whose SERP snippet was raw JSON with\n * markdown asterisks and literal \\n. Parse the sections out, strip markdown,\n * and cap at a sentence boundary.\n */\nexport function sanitizeExcerpt(raw: string | undefined | null, maxLength = 160): string {\n if (!raw) return ''\n let text = String(raw).trim()\n\n // JSON section(s) — take the prose, not the heading, and never the braces.\n if (text.startsWith('{') || text.startsWith('[')) {\n const fromSections = (value: unknown): string => {\n const list = Array.isArray(value) ? value : [value]\n return list\n .map((s) => (s && typeof s === 'object' ? (s as any).content || (s as any).heading || '' : ''))\n .filter(Boolean)\n .join(' ')\n }\n let parsed: unknown\n try {\n parsed = JSON.parse(text)\n } catch {\n // Concatenated objects: \"{...}\\n\\n{...}\" — take the first.\n const first = text.split(/\\}\\s*[\\r\\n]+\\s*\\{/)[0]\n try {\n parsed = JSON.parse(first.endsWith('}') ? first : `${first}}`)\n } catch {\n parsed = null\n }\n }\n text = parsed ? fromSections(parsed) : text.replace(/[{}\"[\\]]/g, ' ')\n }\n\n const plain = text\n .replace(/```[\\s\\S]*?```/g, ' ') // fenced code\n .replace(/!\\[[^\\]]*\\]\\([^)]*\\)/g, ' ') // images\n .replace(/\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1') // links -> text\n .replace(/^#{1,6}\\s+/gm, '') // headings\n .replace(/[*_~`>]/g, '') // emphasis / quotes / code\n .replace(/\\\\n/g, ' ') // literal escaped newlines\n .replace(/\\s+/g, ' ')\n .trim()\n\n if (plain.length <= maxLength) return plain\n\n // Prefer a sentence boundary, then a word boundary.\n const window = plain.slice(0, maxLength + 1)\n const lastStop = Math.max(window.lastIndexOf('. '), window.lastIndexOf('? '), window.lastIndexOf('! '))\n if (lastStop > maxLength * 0.5) return window.slice(0, lastStop + 1).trim()\n\n const cut = plain.slice(0, maxLength)\n const lastSpace = cut.lastIndexOf(' ')\n return `${(lastSpace > maxLength * 0.6 ? cut.slice(0, lastSpace) : cut).replace(/[\\s,;:—–-]+$/, '')}…`\n}\n","/**\n * Google News sitemap and feed-size helpers. Pure, environment-free: the\n * server helpers in server-core fetch the posts and hand them here, so the XML\n * rules can be tested without a network.\n *\n * News sitemap rules (https://developers.google.com/search/docs/crawling-indexing/sitemaps/news-sitemap):\n * only articles published in the last two days, at most 1,000 URLs, each with\n * a publication name, language and publication date. Older articles belong in\n * the ordinary sitemap, which already lists them.\n */\nimport { resolveArticleUrl, type PublicationRoutingOptions, type ArticleRoutePost } from './routes'\n\n/** Google only reads articles from the last two days in a News sitemap. */\nexport const NEWS_SITEMAP_WINDOW_MS = 2 * 24 * 60 * 60 * 1000\n/** Google's cap per News sitemap. */\nexport const NEWS_SITEMAP_MAX_URLS = 1000\n\n/**\n * Items a feed carries by default. Feeds hold each post's full HTML, so a\n * 100-post feed ran past half a megabyte, which is where some readers and\n * aggregators stop fetching. Readers poll often; 20 recent items is the\n * common convention, and older posts stay in the sitemap.\n */\nexport const FEED_DEFAULT_ITEMS = 20\n\nexport interface NewsSitemapPost extends ArticleRoutePost {\n title: string\n published_at?: string | null\n}\n\nexport interface NewsSitemapOptions extends PublicationRoutingOptions {\n siteUrl: string\n /** The publication name, exactly as it appears on the articles (e.g. \"The Forge by Upforge\"). */\n publicationName: string\n /** ISO 639 language code. Defaults to \"en\". */\n language?: string\n}\n\nexport function escapeXml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&apos;')\n}\n\n/**\n * Wrap HTML in CDATA. A literal `]]>` inside the post would close the section\n * early and break the whole feed, so it's split across two sections.\n */\nexport function cdata(html: string): string {\n return `<![CDATA[${html.replace(/]]>/g, ']]]]><![CDATA[>')}]]>`\n}\n\n/** The posts a News sitemap may list: published in the window, newest first. */\nexport function recentNewsPosts<T extends NewsSitemapPost>(posts: T[], now: Date = new Date()): T[] {\n const cutoff = now.getTime() - NEWS_SITEMAP_WINDOW_MS\n return posts\n .filter((post) => {\n const published = post.published_at ? Date.parse(post.published_at) : NaN\n return Number.isFinite(published) && published >= cutoff && published <= now.getTime()\n })\n .sort((a, b) => Date.parse(b.published_at!) - Date.parse(a.published_at!))\n .slice(0, NEWS_SITEMAP_MAX_URLS)\n}\n\n/**\n * Build a Google News sitemap. With no post in the window it's a valid, empty\n * urlset, which Google accepts; it fills again on the next publish.\n */\nexport function buildNewsSitemapXml(\n posts: NewsSitemapPost[],\n options: NewsSitemapOptions,\n now: Date = new Date(),\n): string {\n const language = options.language || 'en'\n const items = recentNewsPosts(posts, now).map((post) => {\n const url = resolveArticleUrl(post, { ...options, siteUrl: options.siteUrl })\n return ` <url>\n <loc>${escapeXml(url)}</loc>\n <news:news>\n <news:publication>\n <news:name>${escapeXml(options.publicationName)}</news:name>\n <news:language>${escapeXml(language)}</news:language>\n </news:publication>\n <news:publication_date>${new Date(post.published_at!).toISOString()}</news:publication_date>\n <news:title>${escapeXml(post.title)}</news:title>\n </news:news>\n </url>`\n })\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:news=\"http://www.google.com/schemas/sitemap-news/0.9\">\n${items.join('\\n')}${items.length ? '\\n' : ''}</urlset>`\n}\n","/**\n * @sonordev/site-kit/articles/server\n *\n * Data and metadata helpers only (no React components). For `Article` / `ArticleList`\n * in the App Router, import from `@sonordev/site-kit/articles/server-ui` so Next never\n * treats `getAllArticleSlugs` / `generateArticleStaticParams` as client code.\n */\n\nimport type { Metadata } from 'next'\nimport { notFound } from 'next/navigation'\nimport type { Article as ArticleRecord, ArticleAuthor, TocItem, TopicCluster, ClusterNavigation } from './types'\n\n/**\n * Server key/URL resolution — SINGLE SOURCE OF TRUTH.\n *\n * Every fetcher below resolves its API config through `resolveServerApiConfig`.\n * Do NOT re-fork a local `getConfig()` here: this file used to carry a drifted\n * copy of that helper, and the copy grew a `process.env.NEXT_PUBLIC_SONOR_API_KEY`\n * fallback the canonical one never had. Because Next inlines `NEXT_PUBLIC_*` into\n * every bundle a module lands in, and this module was reachable from the\n * client-stamped `@sonordev/site-kit/articles` barrel, that fallback published the\n * site's raw `sonor_` project key to the browser. One diverging copy, one leaked\n * credential.\n *\n * This import also carries `server-only` transitively, which is the point: if a\n * client component ever reaches this module again, the consumer's build fails\n * loudly instead of silently shipping an `x-api-key` fetch to visitors.\n */\nimport { resolveServerApiConfig } from '../server/server-fetch'\nimport { withSiteParam } from '../sites/site-param'\nimport { fetchArticleCategories, fetchArticleBySlug, fetchRelatedArticles } from './public-reads'\nimport { sanitizeExcerpt } from './excerpt'\nimport { resolveArticleArtwork } from './artwork'\nimport { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl, type PublicationRoutingOptions, type ArticleRoutePost } from './routes'\nimport { FEED_DEFAULT_ITEMS, buildNewsSitemapXml, cdata, escapeXml, type NewsSitemapOptions } from './news-sitemap'\nimport { generateArticleAuthorNode, withArticleAuthorIdentity } from './author-schema'\n\nexport { sanitizeExcerpt }\n\n// ============================================================================\n// SEO VALIDATION UTILITIES\n// ============================================================================\n\nexport const SEO_LIMITS = {\n title: { min: 30, max: 60, recommended: 55 },\n metaDescription: { min: 120, max: 160, recommended: 155 },\n excerpt: { min: 100, max: 300, recommended: 200 },\n slug: { max: 75 },\n focusKeyphrase: { min: 2, max: 4, words: true }, // 2-4 words\n} as const\n\nexport interface SeoValidationResult {\n field: string\n value: string\n length: number\n limit: { min?: number; max: number; recommended?: number }\n status: 'good' | 'warning' | 'error'\n message: string\n}\n\n/**\n * Validate SEO title (60 chars max, keyword-first recommended)\n */\nexport function validateSeoTitle(title: string, focusKeyphrase?: string): SeoValidationResult {\n const length = title.length\n let status: SeoValidationResult['status'] = 'good'\n let message = 'Title length is optimal'\n\n if (length > SEO_LIMITS.title.max) {\n status = 'error'\n message = `Title is ${length - SEO_LIMITS.title.max} characters too long (max ${SEO_LIMITS.title.max})`\n } else if (length < SEO_LIMITS.title.min) {\n status = 'warning'\n message = `Title is short (${length}/${SEO_LIMITS.title.min} min)`\n } else if (focusKeyphrase && !title.toLowerCase().includes(focusKeyphrase.toLowerCase())) {\n status = 'warning'\n message = 'Focus keyphrase not found in title'\n } else if (focusKeyphrase && !title.toLowerCase().startsWith(focusKeyphrase.toLowerCase())) {\n status = 'warning'\n message = 'Title should start with focus keyphrase for best results'\n }\n\n return { field: 'title', value: title, length, limit: SEO_LIMITS.title, status, message }\n}\n\n/**\n * Validate meta description (150-160 chars, benefit-driven)\n */\nexport function validateMetaDescription(description: string, focusKeyphrase?: string): SeoValidationResult {\n const length = description.length\n let status: SeoValidationResult['status'] = 'good'\n let message = 'Meta description is optimal'\n\n if (length > SEO_LIMITS.metaDescription.max) {\n status = 'error'\n message = `Description will be truncated (${length}/${SEO_LIMITS.metaDescription.max})`\n } else if (length < SEO_LIMITS.metaDescription.min) {\n status = 'warning'\n message = `Description is short (${length}/${SEO_LIMITS.metaDescription.min} min)`\n } else if (focusKeyphrase && !description.toLowerCase().includes(focusKeyphrase.toLowerCase())) {\n status = 'warning'\n message = 'Focus keyphrase not found in description'\n }\n\n return { field: 'meta_description', value: description, length, limit: SEO_LIMITS.metaDescription, status, message }\n}\n\n/**\n * Full SEO validation for an article\n */\nexport function validateArticleSeo(post: Partial<ArticleRecord>): SeoValidationResult[] {\n const results: SeoValidationResult[] = []\n const focusKeyphrase = post.focus_keyphrase\n\n if (post.meta_title || post.title) {\n results.push(validateSeoTitle(post.meta_title || post.title || '', focusKeyphrase))\n }\n\n if (post.meta_description) {\n results.push(validateMetaDescription(post.meta_description, focusKeyphrase))\n }\n\n // Check H1 alignment (title should match keyword)\n if (post.title && focusKeyphrase) {\n const titleLower = post.title.toLowerCase()\n const keyLower = focusKeyphrase.toLowerCase()\n if (!titleLower.includes(keyLower)) {\n results.push({\n field: 'h1_alignment',\n value: post.title,\n length: post.title.length,\n limit: { max: 100 },\n status: 'warning',\n message: 'H1 (title) should include the focus keyphrase',\n })\n }\n }\n\n // Check word count (1200-2500 recommended for long-form)\n if (post.word_count !== undefined) {\n let wordStatus: SeoValidationResult['status'] = 'good'\n let wordMessage = 'Content length is optimal for SEO'\n \n if (post.word_count < 600) {\n wordStatus = 'error'\n wordMessage = `Content is thin (${post.word_count} words). Aim for 1200+ words.`\n } else if (post.word_count < 1200) {\n wordStatus = 'warning'\n wordMessage = `Content is short (${post.word_count} words). Long-form (1200-2500) ranks better.`\n } else if (post.word_count > 2500) {\n wordMessage = `Comprehensive content (${post.word_count} words). Consider splitting into a topic cluster.`\n }\n\n results.push({\n field: 'word_count',\n value: String(post.word_count),\n length: post.word_count,\n limit: { min: 1200, max: 2500, recommended: 1800 },\n status: wordStatus,\n message: wordMessage,\n })\n }\n\n return results\n}\n\n// ============================================================================\n// DATA FETCHING\n// ============================================================================\n//\n// Every article read below tells the API which sub-site is asking: the URL (or,\n// for POST related, the body) carries `site=<host>` via `sites/site-param`.\n// On a multi-site project a post with no site is project-wide and a post\n// tagged `bd-charlotte.com` shows only on that host, so a read without `site`\n// would hand one microsite its siblings' posts. The host resolves from\n// NEXT_PUBLIC_SITE_URL, which every microsite already sets; fetchers that take\n// arguments also accept an explicit `{ site }` override. `getAllArticleSlugs` and\n// `getAllAuthorSlugs` stay zero-arg so they remain assignable to Next's\n// `generateStaticParams` (see 5.7.0), so they resolve from the env only.\n\n/**\n * Fetch an article by slug (server-side)\n *\n * @param options.site - Sub-site host override. Omit to resolve from\n * NEXT_PUBLIC_SITE_URL.\n */\nexport async function getArticle(\n slug: string,\n options?: { site?: string }\n): Promise<ArticleRecord | null> {\n const config = resolveServerApiConfig()\n if (!config) {\n console.warn('[Articles] No API key configured')\n return null\n }\n return fetchArticleBySlug({ ...config, site: options?.site }, slug)\n}\n\n/**\n * Fetch an article by slug, or answer 404 when there isn't one.\n *\n * `getArticle` returns null for a mistyped or deleted slug, and the page\n * used to carry on rendering a \"not found\" message with HTTP 200 and an\n * indexable title: a soft 404 on every bad post URL (vsf-consulting-nextjs\n * /insights, found 2026-09-15). This calls Next's `notFound()` instead, so the\n * route answers 404 with `noindex`.\n *\n * Call it from `generateMetadata` (or the page) before rendering `Article`:\n * metadata resolves before anything streams, so the status is a real 404.\n * The fetch is the same one `Article` and `generateArticleMetadata` make,\n * and Next dedupes it within the render.\n *\n * @example\n * ```tsx\n * export async function generateMetadata({ params }) {\n * const { slug } = await params\n * await requireArticle(slug)\n * return generateArticleMetadata(slug, { siteName: 'Acme' })\n * }\n * ```\n */\nexport async function requireArticle(\n slug: string,\n options?: { site?: string }\n): Promise<ArticleRecord> {\n const post = await getArticle(slug, options)\n if (!post) notFound()\n return post\n}\n\n/**\n * Fetch all article slugs for static generation\n */\nexport async function getAllArticleSlugs(): Promise<\n { slug: string; id?: string; last_modified?: string; article_type?: string }[]\n> {\n const config = resolveServerApiConfig()\n if (!config) {\n console.warn('[Articles] No API key configured')\n return []\n }\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/slugs`), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n })\n\n if (!response.ok) return []\n\n const data = await response.json()\n return data.slugs || []\n } catch (error) {\n console.error('[Articles] Error fetching slugs:', error)\n return []\n }\n}\n\n/**\n * Fetch article categories\n */\nexport async function getArticleCategories(\n options?: { site?: string }\n): Promise<{ name: string; slug: string; post_count: number }[]> {\n const config = resolveServerApiConfig()\n if (!config) return []\n // The public endpoint always returns post_count; ArticleCategory types it\n // optional because the dashboard shape omits it.\n return (await fetchArticleCategories({ ...config, site: options?.site })) as {\n name: string\n slug: string\n post_count: number\n }[]\n}\n\n// ============================================================================\n// METADATA GENERATION\n// ============================================================================\n\nexport interface PublicationMetadataOptions extends PublicationRoutingOptions {\n /** Site name for og:site_name */\n siteName?: string\n /** Base URL of the site */\n siteUrl?: string\n /** URL path prefix for publication index and posts (default `/article`, e.g. `/insights`) */\n /** Default OG image */\n defaultImage?: string\n /** Twitter handle */\n twitterHandle?: string\n}\n\nexport interface ArticleMetadataOptions extends PublicationMetadataOptions {\n /**\n * Declare the featured image (or `defaultImage`) as `openGraph.images` and\n * `twitter.images`. Default true.\n *\n * Pass false when the post route has its own card, an\n * `opengraph-image.tsx` beside the page. Next lets declared images beat\n * that file, so leaving them in silently swaps the post's card for the raw\n * photo. With false the `images` keys are left out entirely, not set to\n * undefined: Next checks `hasOwnProperty('images')`, so even an undefined\n * value hides the card.\n */\n images?: boolean\n /**\n * What to do when the post doesn't exist. Default true: call Next's\n * `notFound()`, so the route answers 404. False returns placeholder\n * metadata marked `noindex` instead, for a page that renders its own\n * missing-post state.\n */\n notFound?: boolean\n}\n\n/**\n * Generate metadata for an article page\n */\nexport async function generateArticleMetadata(\n slug: string,\n options: ArticleMetadataOptions = {}\n): Promise<Metadata> {\n const post = await getArticle(slug)\n const { siteName, siteUrl = '', defaultImage, twitterHandle } = options\n if (!post) {\n // A missing post used to get an indexable \"Post Not Found\" title with a\n // 200, which is a soft 404 on every mistyped or deleted post URL.\n if (options.notFound !== false) notFound()\n return {\n title: 'Post Not Found',\n description: 'The requested article could not be found.',\n robots: { index: false, follow: true },\n }\n }\n\n const title = post.meta_title || post.title\n const description = sanitizeExcerpt(post.meta_description || post.excerpt)\n // og_image / featured_image_width / featured_image_height never existed in\n // blog_posts (verified against the live schema) — reading them always\n // produced undefined. Resolution goes straight to featured_image.\n const image = options.images === false ? undefined : post.featured_image || defaultImage\n const url = resolveArticleUrl(post, options)\n\n return {\n title,\n description,\n openGraph: {\n title: post.og_title || title,\n description: post.og_description || description,\n url,\n siteName,\n type: 'article',\n publishedTime: post.published_at,\n authors: post.author ? [typeof post.author === 'string' ? post.author : post.author.name] : undefined,\n ...(image && {\n images: [\n {\n url: image,\n width: 1200,\n height: 630,\n alt: post.featured_image_alt || post.title,\n },\n ],\n }),\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n ...(image && { images: [image] }),\n creator: twitterHandle,\n },\n alternates: {\n canonical: url,\n },\n other: {\n 'article:published_time': post.published_at || '',\n 'article:section': typeof post.category === 'string' ? post.category : (post.category?.name || ''),\n },\n }\n}\n\n/**\n * Generate metadata for the publication index page\n */\nexport function generatePublicationMetadata(options: PublicationMetadataOptions & {\n title?: string\n description?: string\n}): Metadata {\n const {\n title = 'Blog',\n description = 'Read our latest articles and insights.',\n siteName,\n siteUrl = '',\n defaultImage,\n twitterHandle,\n } = options\n const base = createPublicationRoutes(options).index\n\n return {\n title,\n description,\n openGraph: {\n title,\n description,\n url: resolvePublicationUrl(base, siteUrl),\n siteName,\n type: 'website',\n ...(defaultImage && { images: [{ url: defaultImage }] }),\n },\n twitter: {\n card: 'summary_large_image',\n title,\n description,\n ...(defaultImage && { images: [defaultImage] }),\n creator: twitterHandle,\n },\n }\n}\n\n/**\n * Generate metadata for a category page\n */\nexport function generateArticleCategoryMetadata(\n categoryName: string,\n options: PublicationMetadataOptions & { categorySlug?: string } = {}\n): Metadata {\n const { siteName, siteUrl = '', defaultImage } = options\n const title = `${categoryName} - Articles`\n const description = `Browse all posts in ${categoryName}.`\n // The URL wants the route slug, not the display name: lowercasing \"Case\n // Studies\" produced /article/category/case%20studies against a real route of\n // /article/category/case-studies. Callers that have the slug pass it; the\n // fallback slugifies the name the same way the dashboard does.\n const slug =\n options.categorySlug ??\n categoryName\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n\n return {\n title,\n description,\n openGraph: {\n title,\n description,\n url: resolvePublicationUrl(createPublicationRoutes(options).category(slug), siteUrl),\n siteName,\n type: 'website',\n ...(defaultImage && { images: [{ url: defaultImage }] }),\n },\n }\n}\n\n// ============================================================================\n// STATIC PARAMS GENERATION\n// ============================================================================\n\n/**\n * What Next passes to a route's `generateStaticParams`: the parent segments'\n * params. The publication helpers ignore it; it's typed so they can be exported\n * directly as `generateStaticParams`.\n */\nexport interface NextStaticParamsProps {\n params: unknown\n}\n\nfunction isNextStaticParamsProps(value: PublicationRoutingOptions | NextStaticParamsProps): value is NextStaticParamsProps {\n return 'params' in value\n}\n\n/**\n * Generate static params for article pages.\n *\n * Export it directly for the default `/article/[slug]` routes:\n *\n * export const generateStaticParams = generateArticleStaticParams\n *\n * With routing options, wrap it:\n *\n * export function generateStaticParams() {\n * return generateArticleStaticParams(routing)\n * }\n */\nexport function generateArticleStaticParams(options?: PublicationRoutingOptions): Promise<{ slug: string; category?: string }[]>\n// Next's props overload must stay LAST. Next 16 checks the export two ways:\n// `.next/types/validator.ts` needs it assignable to `(props: { params }) => …`,\n// and on webpack builds `NextTypesPlugin` infers the first argument (from the\n// last overload) and requires it to be `{ params }`. A single optional\n// `PublicationRoutingOptions` parameter fails both (site-kit 5.4.0–5.6.1).\nexport function generateArticleStaticParams(props: NextStaticParamsProps): Promise<{ slug: string; category?: string }[]>\nexport async function generateArticleStaticParams(\n arg: PublicationRoutingOptions | NextStaticParamsProps = {},\n): Promise<{ slug: string; category?: string }[]> {\n // Called by Next as `generateStaticParams({ params })`: use the defaults.\n const options: PublicationRoutingOptions = isNextStaticParamsProps(arg) ? {} : arg\n const posts = await getArticleRouteEntries(options)\n return posts.map(post => {\n const category = articleCategorySlug(post.category || options.category)\n return { slug: post.slug, ...(options.includeCategoryInPath && category ? { category } : {}) }\n })\n}\n\n/**\n * Generate static params for category pages. Takes no arguments, so it can be\n * exported directly:\n *\n * export const generateStaticParams = generateCategoryStaticParams\n */\nexport async function generateCategoryStaticParams(): Promise<{ category: string }[]> {\n const categories = await getArticleCategories()\n return categories.map((c) => ({ category: c.slug }))\n}\n\n// ============================================================================\n// SITEMAP GENERATION\n// ============================================================================\n\ninterface SitemapEntry {\n url: string\n lastModified?: Date\n changeFrequency?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n /** Image sitemap entries; Next's MetadataRoute.Sitemap renders them as <image:image>. */\n images?: string[]\n}\n\n/** A post's featured image as an absolute URL, for image sitemaps. */\nfunction absoluteImage(image: string | undefined | null, siteUrl: string): string | null {\n const value = image?.trim()\n if (!value) return null\n try {\n return new URL(value, siteUrl.endsWith('/') ? siteUrl : `${siteUrl}/`).toString()\n } catch {\n return null\n }\n}\n\n/**\n * Generate sitemap entries for articles\n */\nexport interface ArticleSitemapOptions extends PublicationRoutingOptions {\n includeCategories?: boolean\n includeClusters?: boolean\n}\n\n/** Sitemaps need canonicals; nested/custom static params also need full route records. */\nasync function getArticleRouteEntries(options: PublicationRoutingOptions, withCanonicals = false): Promise<Array<ArticleRoutePost & { last_modified?: string; article_type?: string; featured_image?: string }>> {\n if (withCanonicals || options.includeCategoryInPath || options.postPath) {\n return (await getAllArticles({ maxPosts: Infinity })).map(post => ({ ...post, last_modified: post.updated_at }))\n }\n return getAllArticleSlugs()\n}\n\nexport async function generateArticleSitemap(\n siteUrl: string,\n options: ArticleSitemapOptions = {},\n): Promise<SitemapEntry[]> {\n const slugs = await getArticleRouteEntries(options, true)\n const categories = options.includeCategories === false ? [] : await getArticleCategories()\n const clusters = options.includeClusters === false ? [] : await getTopicClusters()\n\n const entries: SitemapEntry[] = [\n // Publication index\n {\n url: resolvePublicationUrl(createPublicationRoutes(options).index, siteUrl),\n changeFrequency: 'daily',\n priority: 0.8,\n },\n ]\n\n // Cluster landing pages\n clusters.forEach((cluster) => {\n entries.push({\n url: resolvePublicationUrl(createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),\n changeFrequency: 'weekly',\n priority: 0.8,\n })\n })\n\n // Category pages\n categories.forEach((cat) => {\n entries.push({\n url: resolvePublicationUrl(createPublicationRoutes(options).category(cat.slug), siteUrl),\n changeFrequency: 'weekly',\n priority: 0.6,\n })\n })\n\n // Individual posts — pillar posts get higher priority (0.9 vs 0.7)\n slugs.forEach((post) => {\n const isPillar = (post as any).article_type === 'pillar'\n const image = absoluteImage(post.featured_image, siteUrl)\n entries.push({\n url: resolveArticleUrl(post, { ...options, siteUrl }),\n lastModified: post.last_modified ? new Date(post.last_modified) : undefined,\n changeFrequency: isPillar ? 'weekly' : 'monthly',\n priority: isPillar ? 0.9 : 0.7,\n ...(image ? { images: [image] } : {}),\n })\n })\n\n return entries\n}\n\n/**\n * Google News sitemap XML for posts published in the last two days. Serve it\n * from a route (app/news-sitemap.xml/route.ts) and list it in robots.txt.\n */\nexport async function generateNewsSitemap(options: NewsSitemapOptions & { site?: string }): Promise<string> {\n // A window of two days never needs more than the newest page of posts.\n const posts = await getAllArticles({ maxPosts: 50, site: options.site })\n return buildNewsSitemapXml(posts, options)\n}\n\n// ============================================================================\n// JSON-LD SCHEMA GENERATION\n// ============================================================================\n\n/**\n * Generate JSON-LD schema for an article\n */\nexport function generateArticleSchema(\n post: ArticleRecord,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string; logoUrl?: string } = {}\n): object {\n const { siteUrl = '', siteName, logoUrl } = options\n\n const schema: any = {\n '@context': 'https://schema.org',\n '@type': 'BlogPosting',\n headline: post.title,\n description: sanitizeExcerpt(post.excerpt || post.meta_description),\n url: resolveArticleUrl(post, { ...options, siteUrl }),\n datePublished: post.published_at,\n dateModified: post.updated_at,\n }\n\n const author = generateArticleAuthorNode(post.author, options)\n if (author) schema.author = author\n\n const articleImage = resolveArticleArtwork(post, 'article').src\n if (articleImage) schema.image = articleImage\n\n if (siteName || logoUrl) {\n schema.publisher = {\n '@type': 'Organization',\n name: siteName,\n logo: logoUrl\n ? {\n '@type': 'ImageObject',\n url: logoUrl,\n }\n : undefined,\n }\n }\n\n // Add FAQ schema if present\n if (post.faq_items && Array.isArray(post.faq_items) && post.faq_items.length > 0) {\n schema.mainEntity = {\n '@type': 'FAQPage',\n mainEntity: post.faq_items.map((faq: { question: string; answer: string }) => ({\n '@type': 'Question',\n name: faq.question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: faq.answer,\n },\n })),\n }\n }\n\n return schema\n}\n\n/**\n * Generate JSON-LD schema for publication index/listing page\n */\nexport function generateArticleListSchema(\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string; description?: string } = {}\n): object {\n const { siteUrl = '', siteName, description } = options\n\n return {\n '@context': 'https://schema.org',\n '@type': 'Blog',\n name: siteName ? `${siteName} Blog` : 'Blog',\n description: description || 'Our latest articles and insights.',\n url: resolvePublicationUrl(createPublicationRoutes(options).index, siteUrl),\n }\n}\n\n// ============================================================================\n// FAQ SCHEMA (for PAA rankings)\n// ============================================================================\n\n/**\n * Generate standalone FAQ schema (great for PAA inclusion)\n */\nexport function generateFaqSchema(\n faqItems: { question: string; answer: string }[]\n): object | null {\n if (!faqItems || faqItems.length === 0) return null\n\n return {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n mainEntity: faqItems.map((faq) => ({\n '@type': 'Question',\n name: faq.question,\n acceptedAnswer: {\n '@type': 'Answer',\n text: faq.answer,\n },\n })),\n }\n}\n\n// ============================================================================\n// HOWTO SCHEMA (for step-by-step posts)\n// ============================================================================\n\nexport interface HowToStep {\n name: string\n text: string\n image?: string\n url?: string\n}\n\n/**\n * Generate HowTo schema for step-by-step posts\n */\nexport function generateHowToSchema(\n post: ArticleRecord,\n steps: HowToStep[],\n options: PublicationRoutingOptions & { siteUrl?: string } = {}\n): object {\n const { siteUrl = '' } = options\n\n return {\n '@context': 'https://schema.org',\n '@type': 'HowTo',\n name: post.title,\n description: sanitizeExcerpt(post.excerpt || post.meta_description),\n image: resolveArticleArtwork(post, 'article').src,\n totalTime: post.reading_time ? `PT${post.reading_time}M` : undefined,\n step: steps.map((step, index) => ({\n '@type': 'HowToStep',\n position: index + 1,\n name: step.name,\n text: step.text,\n image: step.image,\n url: step.url || `${resolveArticleUrl(post, { ...options, siteUrl }).split(\"#\")[0]}#step-${index + 1}`,\n })),\n }\n}\n\n// ============================================================================\n// RSS FEED GENERATION\n// ============================================================================\n\nexport interface RssFeedOptions extends PublicationRoutingOptions {\n siteUrl: string\n siteName: string\n description?: string\n language?: string\n copyright?: string\n managingEditor?: string\n webMaster?: string\n ttl?: number // Time to live in minutes\n imageUrl?: string\n /** Most recent posts to include. Defaults to FEED_DEFAULT_ITEMS (20); older posts stay in the sitemap. */\n maxItems?: number\n}\n\n/**\n * Maximum posts a feed will accumulate. Preserves the historical intent of the\n * old `?limit=100` request (which the API silently ignored — it only reads\n * `per_page`, capped at 50, so feeds were stuck at the 12-post default).\n */\nconst FEED_MAX_POSTS = 100\n\n/**\n * Fetch all published articles for RSS feed.\n *\n * Paginates with `per_page`/`page` — the only pagination params the deployed\n * controller reads — accumulating up to FEED_MAX_POSTS. A mid-loop failure\n * returns what was accumulated so far: a partial feed beats an empty one.\n */\nexport async function getAllArticles(\n options: { maxPosts?: number; /** Sub-site host override (see getArticle). */ site?: string } = {}\n): Promise<ArticleRecord[]> {\n const maxPosts = options.maxPosts ?? FEED_MAX_POSTS\n if (!(maxPosts > 0)) return []\n const config = resolveServerApiConfig()\n if (!config) {\n console.warn('[Articles] No API key configured')\n return []\n }\n const { apiUrl, apiKey } = config\n\n const posts: ArticleRecord[] = []\n let page = 1\n try {\n while (posts.length < maxPosts) {\n const response = await fetch(\n withSiteParam(`${apiUrl}/public/articles/posts?per_page=50&page=${page}`, options.site),\n {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n }\n )\n\n if (!response.ok) break\n\n const data = await response.json()\n const batch = data.posts || []\n posts.push(...batch)\n if (!batch.length || !data.pagination?.has_next) break\n page += 1\n }\n } catch (error) {\n console.error('[Articles] Error fetching posts for RSS:', error)\n }\n return posts.slice(0, maxPosts)\n}\n\n\n/**\n * Strip HTML tags for RSS descriptions\n */\nfunction stripHtml(html: string): string {\n return html.replace(/<[^>]*>/g, '').trim()\n}\n\n/**\n * Generate RSS 2.0 feed XML\n */\nexport async function generateRssFeed(options: RssFeedOptions): Promise<string> {\n const {\n siteUrl,\n siteName,\n description = 'Latest articles and insights',\n language = 'en-us',\n copyright,\n managingEditor,\n webMaster,\n ttl = 60,\n imageUrl,\n } = options\n\n const posts = await getAllArticles({ maxPosts: options.maxItems ?? FEED_DEFAULT_ITEMS })\n const now = new Date().toUTCString()\n\n let rss = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">\n <channel>\n <title>${escapeXml(siteName)}</title>\n <link>${siteUrl}</link>\n <description>${escapeXml(description)}</description>\n <language>${language}</language>\n <lastBuildDate>${now}</lastBuildDate>\n <pubDate>${now}</pubDate>\n <ttl>${ttl}</ttl>\n <atom:link href=\"${escapeXml(resolvePublicationUrl(createPublicationRoutes(options).rss, siteUrl))}\" rel=\"self\" type=\"application/rss+xml\"/>\n`\n\n if (copyright) {\n rss += ` <copyright>${escapeXml(copyright)}</copyright>\\n`\n }\n\n if (managingEditor) {\n rss += ` <managingEditor>${escapeXml(managingEditor)}</managingEditor>\\n`\n }\n\n if (webMaster) {\n rss += ` <webMaster>${escapeXml(webMaster)}</webMaster>\\n`\n }\n\n if (imageUrl) {\n rss += ` <image>\n <url>${imageUrl}</url>\n <title>${escapeXml(siteName)}</title>\n <link>${siteUrl}</link>\n </image>\\n`\n }\n\n // Add each post as an item with FULL content (not excerpts)\n for (const post of posts) {\n const postUrl = resolveArticleUrl(post, { ...options, siteUrl })\n const pubDate = post.published_at ? new Date(post.published_at).toUTCString() : now\n const author = typeof post.author === 'string' ? post.author : post.author?.name || 'Unknown'\n \n // Use full content_html if available, otherwise content\n const fullContent = post.content_html || post.content || ''\n const description = sanitizeExcerpt(post.excerpt, 300) || stripHtml(fullContent).substring(0, 300) + '...'\n\n rss += ` <item>\n <title>${escapeXml(post.title)}</title>\n <link>${escapeXml(postUrl)}</link>\n <guid isPermaLink=\"true\">${escapeXml(postUrl)}</guid>\n <description>${escapeXml(description)}</description>\n <content:encoded>${cdata(fullContent)}</content:encoded>\n <pubDate>${pubDate}</pubDate>\n <author>${escapeXml(author)}</author>\n`\n\n if (post.category) {\n const categoryName = typeof post.category === 'string' ? post.category : post.category.name\n rss += ` <category>${escapeXml(categoryName)}</category>\\n`\n }\n\n if (post.tags && Array.isArray(post.tags)) {\n for (const tag of post.tags) {\n const tagName = typeof tag === 'string' ? tag : tag.name\n rss += ` <category>${escapeXml(tagName)}</category>\\n`\n }\n }\n\n if (post.featured_image) {\n rss += ` <enclosure url=\"${post.featured_image}\" type=\"image/jpeg\"/>\\n`\n }\n\n rss += ` </item>\\n`\n }\n\n rss += ` </channel>\n</rss>`\n\n return rss\n}\n\n/**\n * Generate Atom feed XML\n */\nexport async function generateAtomFeed(options: RssFeedOptions): Promise<string> {\n const {\n siteUrl,\n siteName,\n description = 'Latest articles and insights',\n managingEditor,\n } = options\n\n const posts = await getAllArticles({ maxPosts: options.maxItems ?? FEED_DEFAULT_ITEMS })\n const now = new Date().toISOString()\n\n let atom = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\">\n <title>${escapeXml(siteName)}</title>\n <subtitle>${escapeXml(description)}</subtitle>\n <link href=\"${escapeXml(resolvePublicationUrl(createPublicationRoutes(options).atom, siteUrl))}\" rel=\"self\"/>\n <link href=\"${siteUrl}\"/>\n <id>${escapeXml(resolvePublicationUrl(createPublicationRoutes(options).index, siteUrl))}</id>\n <updated>${now}</updated>\n`\n\n if (managingEditor) {\n atom += ` <author>\n <name>${escapeXml(managingEditor)}</name>\n </author>\\n`\n }\n\n for (const post of posts) {\n const postUrl = resolveArticleUrl(post, { ...options, siteUrl })\n const updated = post.updated_at || post.published_at || now\n const published = post.published_at || now\n const author = typeof post.author === 'string' ? post.author : post.author?.name || 'Unknown'\n const fullContent = post.content_html || post.content || ''\n\n atom += ` <entry>\n <title>${escapeXml(post.title)}</title>\n <link href=\"${escapeXml(postUrl)}\"/>\n <id>${escapeXml(postUrl)}</id>\n <updated>${new Date(updated).toISOString()}</updated>\n <published>${new Date(published).toISOString()}</published>\n <author>\n <name>${escapeXml(author)}</name>\n </author>\n <summary>${escapeXml(sanitizeExcerpt(post.excerpt, 300) || stripHtml(fullContent).substring(0, 300))}</summary>\n <content type=\"html\">${cdata(fullContent)}</content>\n </entry>\\n`\n }\n\n atom += `</feed>`\n\n return atom\n}\n\n// ============================================================================\n// TOPIC CLUSTER SUPPORT\n// ============================================================================\n\n/**\n * Fetch all active topic clusters for the project.\n * Uses the real cluster data from Portal API (not heuristic-based).\n */\nexport async function getTopicClusters(options?: { site?: string }): Promise<TopicCluster[]> {\n const config = resolveServerApiConfig()\n if (!config) return []\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/clusters`, options?.site), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n })\n if (!response.ok) return []\n const data = await response.json()\n\n return (data.clusters || []).map((c: any) => ({\n id: c.id,\n cluster_name: c.cluster_name,\n cluster_slug: c.cluster_slug,\n core_topic: c.core_topic,\n primary_entity: c.primary_entity,\n industry: c.industry,\n geo_target: c.geo_target,\n commercial_goal: c.commercial_goal,\n pillar_post_id: c.pillar_post_id,\n target_service_page: c.target_service_page,\n article_count: c.article_count,\n created_at: c.created_at,\n pillar: null,\n supports: [],\n interlink_map: [],\n }))\n } catch (error) {\n console.error('[Articles] Error fetching topic clusters:', error)\n return []\n }\n}\n\n/**\n * Fetch a single topic cluster with its pillar and support articles.\n */\nexport async function getTopicCluster(\n slug: string,\n options?: { site?: string }\n): Promise<TopicCluster | null> {\n const config = resolveServerApiConfig()\n if (!config) return null\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/clusters/${slug}`, options?.site), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n })\n if (!response.ok) return null\n const data = await response.json()\n\n return {\n id: data.id,\n cluster_name: data.cluster_name,\n cluster_slug: data.cluster_slug,\n core_topic: data.core_topic,\n primary_entity: data.primary_entity,\n industry: data.industry,\n geo_target: data.geo_target,\n commercial_goal: data.commercial_goal,\n // Authoritative column once the API's detail response ships it;\n // derived from the embedded (published) pillar until then.\n pillar_post_id: data.pillar_post_id ?? data.pillar?.id,\n target_service_page: data.target_service_page,\n article_count: data.article_count,\n created_at: data.created_at,\n pillar: data.pillar || null,\n supports: data.supports || [],\n interlink_map: data.interlink_map || [],\n }\n } catch (error) {\n console.error('[Articles] Error fetching topic cluster:', error)\n return null\n }\n}\n\n/**\n * Get cluster navigation context for an article.\n * Returns the cluster name, pillar link, and sibling articles.\n */\nexport function getClusterNavigation(post: ArticleRecord): ClusterNavigation | null {\n if (!post.cluster_id && !post.cluster_slug) return null\n\n const isPillar = post.article_type === 'pillar'\n\n // Mirrored copy: Article.tsx has an identical builder. Keep the two in\n // sync — they CANNOT be consolidated because articles/index is a CLIENT_ENTRY\n // that must never import articles/server-core (see build-entries.ts and\n // client-entry-boundary.test.ts).\n return {\n cluster_name: post.cluster_name || '',\n cluster_slug: post.cluster_slug || '',\n pillar: isPillar\n ? null\n : post.parent_pillar_slug\n ? {\n slug: post.parent_pillar_slug,\n title: post.parent_pillar_title || '',\n category: post.parent_pillar_category || undefined,\n }\n : null,\n siblings: post.sibling_articles || [],\n is_pillar: isPillar,\n }\n}\n\n/**\n * @deprecated Use getTopicCluster(slug) instead. This naive heuristic picks\n * the longest post as pillar. Real cluster data is now managed in the Sonor dashboard.\n */\nexport async function identifyTopicClusters(categorySlug: string): Promise<{\n pillar: ArticleRecord\n supportingPosts: ArticleRecord[]\n internalLinks: Array<{ from: string; to: string; anchor: string }>\n} | null> {\n console.warn(\n '[Articles] identifyTopicClusters() is deprecated. Use getTopicCluster(slug) for real cluster data managed in the Sonor dashboard.'\n )\n const posts = await getPostsByCategory(categorySlug)\n if (posts.length < 3) return null\n\n const sortedByLength = [...posts].sort((a, b) => (b.word_count || 0) - (a.word_count || 0))\n const pillar = sortedByLength[0]\n const supportingPosts = sortedByLength.slice(1)\n\n const internalLinks: Array<{ from: string; to: string; anchor: string }> = []\n for (const support of supportingPosts) {\n internalLinks.push({ from: pillar.slug, to: support.slug, anchor: support.title })\n internalLinks.push({ from: support.slug, to: pillar.slug, anchor: pillar.title })\n }\n\n return { pillar, supportingPosts, internalLinks }\n}\n\n/**\n * Fetch posts by category for topic cluster organization\n */\nexport async function getPostsByCategory(\n categorySlug: string,\n options?: { site?: string }\n): Promise<ArticleRecord[]> {\n const config = resolveServerApiConfig()\n if (!config) return []\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/posts?category=${encodeURIComponent(categorySlug)}&per_page=50`, options?.site), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n })\n if (!response.ok) return []\n const data = await response.json()\n return data.posts || []\n } catch (error) {\n console.error('[Articles] Error fetching category posts:', error)\n return []\n }\n}\n\n// ============================================================================\n// CLUSTER SCHEMA GENERATION\n// ============================================================================\n\n/**\n * Generate ItemList schema for a cluster's pillar page.\n * Wraps supporting posts as a structured list Google can parse.\n */\nexport function generateClusterItemListSchema(\n cluster: TopicCluster,\n options: PublicationRoutingOptions & { siteUrl?: string } = {}\n): object {\n const { siteUrl = '' } = options\n\n return {\n '@context': 'https://schema.org',\n '@type': 'ItemList',\n name: cluster.cluster_name,\n description: `Articles about ${cluster.core_topic}`,\n numberOfItems: cluster.supports.length,\n itemListElement: cluster.supports.map((post, i) => ({\n '@type': 'ListItem',\n position: i + 1,\n name: post.title,\n url: resolveArticleUrl(post, { ...options, siteUrl }),\n })),\n }\n}\n\n/**\n * Generate Article schema with cluster relationship (isPartOf / hasPart).\n * - Support articles get `isPartOf` pointing to the pillar.\n * - Pillar articles get `hasPart` listing all supports.\n */\nexport function generateClusterArticleSchema(\n post: ArticleRecord,\n cluster: TopicCluster,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string; logoUrl?: string } = {}\n): object {\n const { siteUrl = '', siteName, logoUrl } = options\n const isPillar = post.article_type === 'pillar'\n\n const schema: any = {\n '@context': 'https://schema.org',\n '@type': 'Article',\n headline: post.title,\n description: sanitizeExcerpt(post.excerpt || post.meta_description),\n url: resolveArticleUrl(post, { ...options, siteUrl }),\n datePublished: post.published_at,\n dateModified: post.updated_at,\n keywords: post.focus_keyphrase || post.keywords,\n }\n\n const author = generateArticleAuthorNode(post.author, options)\n if (author) schema.author = author\n\n const articleImage = resolveArticleArtwork(post, 'article').src\n if (articleImage) schema.image = articleImage\n\n if (siteName || logoUrl) {\n schema.publisher = {\n '@type': 'Organization',\n name: siteName,\n ...(logoUrl && { logo: { '@type': 'ImageObject', url: logoUrl } }),\n }\n }\n\n // Cluster relationships\n if (isPillar && cluster.supports.length > 0) {\n schema.hasPart = cluster.supports.map((s) => ({\n '@type': 'Article',\n headline: s.title,\n url: resolveArticleUrl(s, { ...options, siteUrl }),\n }))\n } else if (!isPillar && cluster.pillar) {\n schema.isPartOf = {\n '@type': 'Article',\n headline: cluster.pillar.title,\n url: resolveArticleUrl(cluster.pillar, { ...options, siteUrl }),\n }\n }\n\n // Geo targeting\n if (cluster.geo_target) {\n schema.spatialCoverage = {\n '@type': 'Place',\n name: cluster.geo_target,\n }\n }\n\n return schema\n}\n\n/**\n * Generate BreadcrumbList schema for a cluster-linked post.\n * Path: Home > Article > Cluster > Article\n */\nexport function generateClusterBreadcrumbSchema(\n post: ArticleRecord,\n cluster: TopicCluster,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string } = {}\n): object {\n const { siteUrl = '', siteName = 'Home' } = options\n\n const items: any[] = [\n { '@type': 'ListItem', position: 1, name: siteName, item: siteUrl },\n { '@type': 'ListItem', position: 2, name: 'Blog', item: resolvePublicationUrl(createPublicationRoutes(options).index, siteUrl) },\n {\n '@type': 'ListItem',\n position: 3,\n name: cluster.cluster_name,\n item: resolvePublicationUrl(createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),\n },\n {\n '@type': 'ListItem',\n position: 4,\n name: post.title,\n item: resolveArticleUrl(post, { ...options, siteUrl }),\n },\n ]\n\n return {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: items,\n }\n}\n\n/**\n * Generate CollectionPage schema for a cluster landing page.\n */\nexport function generateClusterLandingSchema(\n cluster: TopicCluster,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string } = {}\n): object {\n const { siteUrl = '', siteName } = options\n\n return {\n '@context': 'https://schema.org',\n '@type': 'CollectionPage',\n name: cluster.cluster_name,\n description: `Comprehensive guide to ${cluster.core_topic}`,\n url: resolvePublicationUrl(createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),\n ...(siteName && {\n isPartOf: { '@type': 'WebSite', name: siteName, url: siteUrl },\n }),\n mainEntity: cluster.pillar\n ? {\n '@type': 'Article',\n headline: cluster.pillar.title,\n url: resolveArticleUrl(cluster.pillar, { ...options, siteUrl }),\n }\n : undefined,\n hasPart: cluster.supports.map((s) => ({\n '@type': 'Article',\n headline: s.title,\n url: resolveArticleUrl(s, { ...options, siteUrl }),\n })),\n }\n}\n\n/**\n * Generate metadata for a cluster landing page (Next.js generateMetadata).\n */\nexport async function generateClusterPageMetadata(\n clusterSlug: string,\n options: PublicationRoutingOptions & { siteName?: string; siteUrl?: string } = {}\n) {\n const cluster = await getTopicCluster(clusterSlug)\n if (!cluster) return {}\n\n const { siteName = '', siteUrl = '' } = options\n const title = `${cluster.cluster_name}${siteName ? ` | ${siteName}` : ''}`\n const description = `Comprehensive guide to ${cluster.core_topic}. ${cluster.article_count} articles covering everything you need to know.`\n\n return {\n title,\n description,\n openGraph: {\n title,\n description,\n url: resolvePublicationUrl(createPublicationRoutes(options).cluster(cluster.cluster_slug), siteUrl),\n type: 'website',\n },\n }\n}\n\n/**\n * Generate \"Related Insights\" section data\n */\nexport async function getRelatedInsights(\n currentSlug: string,\n options: { limit?: number; category?: string; /** Sub-site host override (see getArticle). */ site?: string } = {}\n): Promise<ArticleRecord[]> {\n const config = resolveServerApiConfig()\n if (!config) return []\n const { limit = 3, site } = options\n // options.category is accepted for compatibility, but the endpoint derives\n // relatedness from the current post's own category server-side; a category\n // field in the body has always been ignored.\n\n // The endpoint takes `current_post_id` and looks the post up by id — it has\n // no slug path. Sending `slug` meant the lookup matched nothing and this\n // returned [] on every call since it shipped. Resolve the slug first (60s\n // cache via getArticle), then ask with the id.\n const current = await getArticle(currentSlug, { site })\n if (!current?.id) return []\n\n return fetchRelatedArticles({ ...config, site }, current.id, limit, { revalidate: 300 })\n}\n\n// ============================================================================\n// BREADCRUMB SCHEMA\n// ============================================================================\n\n/**\n * Generate BreadcrumbList schema for article navigation\n */\nexport function generateBreadcrumbSchema(\n post: ArticleRecord,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string } = {}\n): object {\n const { siteUrl = '', siteName = 'Home' } = options\n\n const items = [\n {\n '@type': 'ListItem',\n position: 1,\n name: siteName,\n item: siteUrl,\n },\n {\n '@type': 'ListItem',\n position: 2,\n name: 'Blog',\n item: resolvePublicationUrl(createPublicationRoutes(options).index, siteUrl),\n },\n ]\n\n if (post.category) {\n const categoryName = typeof post.category === 'string' ? post.category : post.category.name\n const categorySlug = typeof post.category === 'string' \n ? post.category.toLowerCase().replace(/\\s+/g, '-')\n : post.category.slug\n\n items.push({\n '@type': 'ListItem',\n position: 3,\n name: categoryName,\n item: resolvePublicationUrl(createPublicationRoutes(options).category(categorySlug), siteUrl),\n })\n\n items.push({\n '@type': 'ListItem',\n position: 4,\n name: post.title,\n item: resolveArticleUrl(post, { ...options, siteUrl }),\n })\n } else {\n items.push({\n '@type': 'ListItem',\n position: 3,\n name: post.title,\n item: resolveArticleUrl(post, { ...options, siteUrl }),\n })\n }\n\n return {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: items,\n }\n}\n\n// ============================================================================\n// COMBINED SCHEMA (Article + FAQ + Breadcrumb)\n// ============================================================================\n\n/**\n * Generate all relevant schemas for an article in a single array\n * This is the recommended way to include multiple schemas.\n * When post has E-E-A-T schema (post.schema), use it instead of generating Article/FAQ.\n */\nexport function generateAllArticleSchemas(\n post: ArticleRecord,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string; logoUrl?: string } = {}\n): object[] {\n const schemas: object[] = []\n\n // E-E-A-T: use pre-built schema from Signal when present. Single source of\n // truth for E-E-A-T schema resolution: the DB column is schema_json, which\n // the public API passes through raw today; `schema` is the mapped name the\n // dashboard serializer (and a future public mapping) uses. Do NOT also\n // normalize in getArticle — that would re-fork this rule.\n const eeatSchema = post.schema ?? post.schema_json\n if (eeatSchema) {\n const arr = Array.isArray(eeatSchema) ? eeatSchema : [eeatSchema]\n // Stored bylines were frozen at publish time; attach the author's current\n // identity (@id, author page) at render time without rewriting the row.\n schemas.push(...(arr.map((node) => withArticleAuthorIdentity(node, post.author, options)) as object[]))\n } else {\n // 1. Article/BlogPosting schema (always)\n schemas.push(generateArticleSchema(post, options))\n\n // 3. FAQ schema (if FAQs present)\n const faqItems = post.faq_items ?? (post as any).faqItems\n if (faqItems && faqItems.length > 0) {\n const faqSchema = generateFaqSchema(faqItems)\n if (faqSchema) schemas.push(faqSchema)\n }\n }\n\n // 2. Breadcrumb schema (always)\n schemas.push(generateBreadcrumbSchema(post, options))\n\n return schemas\n}\n\n// ============================================================================\n// AUTHOR PAGE DATA FETCHING\n// ============================================================================\n\n/**\n * Fetch a single author by slug\n */\nexport async function getAuthorBySlug(\n slug: string,\n options?: { site?: string }\n): Promise<ArticleAuthor | null> {\n const config = resolveServerApiConfig()\n if (!config) {\n console.warn('[Articles] No API key configured')\n return null\n }\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/authors/${slug}`, options?.site), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 60 },\n })\n\n if (!response.ok) return null\n\n const data = await response.json()\n return data.author || null\n } catch (error) {\n console.error('[Articles] Error fetching author:', error)\n return null\n }\n}\n\n/**\n * Fetch an author's posts by slug.\n *\n * `offset` pages through the controller's existing offset support. Older API\n * versions return a stripped `{name, slug}` author on this endpoint; when\n * that shape is detected the full author row is hydrated via getAuthorBySlug\n * (both fetches revalidate:60, so the extra hop is cached and disappears once\n * the API returns the full row itself).\n */\nexport async function getAuthorPosts(\n slug: string,\n limit = 20,\n offset = 0,\n options?: { site?: string }\n): Promise<{ author: ArticleAuthor | null; posts: ArticleRecord[]; total: number }> {\n const config = resolveServerApiConfig()\n if (!config) {\n console.warn('[Articles] No API key configured')\n return { author: null, posts: [], total: 0 }\n }\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(\n withSiteParam(`${apiUrl}/public/articles/authors/${slug}/posts?limit=${limit}&offset=${offset}`, options?.site),\n {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 60 },\n }\n )\n\n if (!response.ok) return { author: null, posts: [], total: 0 }\n\n const data = await response.json()\n let author: ArticleAuthor | null = data.author || null\n if (author && author.id === undefined) {\n try {\n const full = await getAuthorBySlug(slug, options)\n if (full) author = full\n } catch {\n // keep the stripped {name, slug} object\n }\n }\n return {\n author,\n posts: data.posts || [],\n total: data.total || 0,\n }\n } catch (error) {\n console.error('[Articles] Error fetching author posts:', error)\n return { author: null, posts: [], total: 0 }\n }\n}\n\n/**\n * Fetch all author slugs for static generation\n */\nexport async function getAllAuthorSlugs(): Promise<{ slug: string }[]> {\n const config = resolveServerApiConfig()\n if (!config) {\n console.warn('[Articles] No API key configured')\n return []\n }\n const { apiUrl, apiKey } = config\n\n try {\n const response = await fetch(withSiteParam(`${apiUrl}/public/articles/authors`), {\n headers: { 'x-api-key': apiKey },\n next: { revalidate: 300 },\n })\n\n if (!response.ok) return []\n\n const data = await response.json()\n const authors: ArticleAuthor[] = data.authors || []\n return authors.map((a) => ({ slug: a.slug }))\n } catch (error) {\n console.error('[Articles] Error fetching author slugs:', error)\n return []\n }\n}\n\n/**\n * Generate static params for author pages. Takes no arguments, so it can be\n * exported directly:\n *\n * export const generateStaticParams = generateAuthorStaticParams\n */\nexport async function generateAuthorStaticParams(): Promise<{ slug: string }[]> {\n return getAllAuthorSlugs()\n}\n\n// ============================================================================\n// AUTHOR METADATA & SCHEMA\n// ============================================================================\n\n/**\n * Generate Next.js Metadata for an author page\n */\nexport function generateAuthorPageMetadata(\n author: ArticleAuthor,\n options: PublicationRoutingOptions & { siteUrl?: string; siteName?: string } = {}\n): Metadata {\n const { siteUrl = '', siteName } = options\n const title = `${author.name}${author.title ? ` - ${author.title}` : ''}`\n const description = author.short_bio || author.bio || `Articles by ${author.name}`\n const url = resolvePublicationUrl(createPublicationRoutes(options).author(author.slug), siteUrl)\n\n return {\n title,\n description,\n openGraph: {\n title,\n description,\n url,\n siteName,\n type: 'profile',\n ...(author.avatar_url && { images: [{ url: author.avatar_url }] }),\n },\n twitter: {\n card: 'summary',\n title,\n description,\n ...(author.avatar_url && { images: [author.avatar_url] }),\n },\n alternates: {\n canonical: author.author_page_url || url,\n },\n }\n}\n\n/**\n * Author JSON-LD: `generateAuthorSchema` (the author page's ProfilePage with\n * the Person as mainEntity), `generateAuthorPersonSchema` (the bare Person for\n * embedding), `generateArticleAuthorNode` (an article byline) and\n * `authorEntityId` (the Person @id rule).\n *\n * The implementation lives in `./author-schema` because it is pure, and\n * `AuthorPage` — which is exported from the client-stamped `articles` barrel —\n * needs it. Importing it from here instead would drag this entire server module\n * into the browser bundle. Re-exported so `@sonordev/site-kit/articles/server`\n * keeps its existing public API.\n */\nexport {\n authorEntityId,\n generateArticleAuthorNode,\n generateAuthorPersonSchema,\n generateAuthorSchema,\n withArticleAuthorIdentity,\n type AuthorSchemaOptions,\n} from './author-schema'\n\n// -----------------------------------------------------------------------------\n// Article UI (Article, ArticleList) lives in `@sonordev/site-kit/articles/server-ui`.\n// This entry must stay free of React components so Next never marks server\n// helpers (e.g. getAllArticleSlugs) as client — see tsup onSuccess \"use client\".\n// -----------------------------------------------------------------------------\n\n/** Portal article document shape (alias of `Article` from `./types`) */\nexport type { Article as ArticleRecord } from './types'\n\nexport { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from './routes'\nexport type { ArticleRoutePost, PublicationRoutingOptions } from './routes'\nexport { resolveArticleArtwork } from './artwork'\nexport { wrapArticleTables, articleTableCss } from './article-tables'\nexport { FEED_DEFAULT_ITEMS, NEWS_SITEMAP_MAX_URLS, NEWS_SITEMAP_WINDOW_MS, buildNewsSitemapXml, cdata, recentNewsPosts } from './news-sitemap'\nexport type { NewsSitemapOptions, NewsSitemapPost } from './news-sitemap'\n"]}
@@ -1,49 +0,0 @@
1
- import { serverApiFetch } from './chunk-6XNEGG5B.mjs';
2
- import { cache } from 'react';
3
- import 'server-only';
4
-
5
- var CMS_LOG_PREFIX = "@sonordev/site-kit/cms";
6
- function secureApiPost(endpoint, body = {}) {
7
- return serverApiFetch(endpoint, {
8
- method: "POST",
9
- body,
10
- revalidate: 60,
11
- requireKey: true,
12
- retry: true,
13
- logPrefix: CMS_LOG_PREFIX
14
- });
15
- }
16
- var getCmsPage = cache(
17
- async (path) => {
18
- const result = await secureApiPost("/api/public/cms/page", { path });
19
- if (!result?.found || !result.page) return null;
20
- return result.page;
21
- }
22
- );
23
- var getCmsSection = cache(
24
- async (sectionId) => {
25
- const result = await secureApiPost("/api/public/cms/section", { sectionId });
26
- if (!result?.found || !result.section) return null;
27
- return result.section;
28
- }
29
- );
30
- var getCmsPageMetadata = cache(
31
- async (path) => {
32
- const page = await getCmsPage(path);
33
- if (!page) return null;
34
- const seo = page.seo || {};
35
- return {
36
- title: seo.title || page.title,
37
- description: seo.description,
38
- robots: seo.noindex ? { index: false } : void 0,
39
- openGraph: {
40
- title: seo.title || page.title,
41
- description: seo.description
42
- }
43
- };
44
- }
45
- );
46
-
47
- export { getCmsPage, getCmsPageMetadata, getCmsSection };
48
- //# sourceMappingURL=chunk-SFMNUVDN.mjs.map
49
- //# sourceMappingURL=chunk-SFMNUVDN.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cms/server-api.ts"],"names":[],"mappings":";;;;AAyBA,IAAM,cAAA,GAAiB,wBAAA;AAQvB,SAAS,aAAA,CACP,QAAA,EACA,IAAA,GAAgC,EAAC,EACd;AACnB,EAAA,OAAO,eAAkB,QAAA,EAAU;AAAA,IACjC,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA;AAAA,IACA,UAAA,EAAY,EAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACZ,CAAA;AACH;AAWO,IAAM,UAAA,GAAa,KAAA;AAAA,EACxB,OAAO,IAAA,KAA8C;AACnD,IAAA,MAAM,SAAS,MAAM,aAAA,CAGlB,sBAAA,EAAwB,EAAE,MAAM,CAAA;AAEnC,IAAA,IAAI,CAAC,MAAA,EAAQ,KAAA,IAAS,CAAC,MAAA,CAAO,MAAM,OAAO,IAAA;AAC3C,IAAA,OAAO,MAAA,CAAO,IAAA;AAAA,EAChB;AACF;AAMO,IAAM,aAAA,GAAgB,KAAA;AAAA,EAC3B,OAAO,SAAA,KAAsD;AAC3D,IAAA,MAAM,SAAS,MAAM,aAAA,CAGlB,yBAAA,EAA2B,EAAE,WAAW,CAAA;AAE3C,IAAA,IAAI,CAAC,MAAA,EAAQ,KAAA,IAAS,CAAC,MAAA,CAAO,SAAS,OAAO,IAAA;AAC9C,IAAA,OAAO,MAAA,CAAO,OAAA;AAAA,EAChB;AACF;AAgBO,IAAM,kBAAA,GAAqB,KAAA;AAAA,EAChC,OACE,IAAA,KAMW;AACX,IAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAW,IAAI,CAAA;AAClC,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,IAAA,MAAM,GAAA,GAAkB,IAAA,CAAK,GAAA,IAAO,EAAC;AAErC,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,GAAA,CAAI,KAAA,IAAS,IAAA,CAAK,KAAA;AAAA,MACzB,aAAa,GAAA,CAAI,WAAA;AAAA,MACjB,QAAQ,GAAA,CAAI,OAAA,GAAU,EAAE,KAAA,EAAO,OAAM,GAAI,MAAA;AAAA,MACzC,SAAA,EAAW;AAAA,QACT,KAAA,EAAO,GAAA,CAAI,KAAA,IAAS,IAAA,CAAK,KAAA;AAAA,QACzB,aAAa,GAAA,CAAI;AAAA;AACnB,KACF;AAAA,EACF;AACF","file":"chunk-SFMNUVDN.mjs","sourcesContent":["/**\n * @sonordev/site-kit/cms - Server-Only API Functions\n *\n * Fetches CMS page/section data from Portal API.\n * Uses the same secure API pattern as seo/server-api.ts — both delegate config\n * resolution + fetch/retry to the shared server-fetch primitive (single source\n * of truth — see ../server/server-fetch).\n */\n\n// React.cache is available in React 19+ / Next.js RSC.\n//\n// This MUST be a static ESM import, matching seo/api.ts, seo/server-api.ts,\n// llms/api.ts and slots/server-api.ts. A `require('react')` here compiled to\n// tsup's `__require` interop shim in the .mjs build, and Turbopack rejects that\n// at module evaluation with \"dynamic usage of require is not supported\" —\n// which broke the build of every site importing `@sonordev/site-kit/cms`.\nimport { cache } from 'react'\nimport 'server-only'\nimport { serverApiFetch } from '../server/server-fetch'\nimport type { CmsPageData, CmsSectionData, CmsPageSeo } from './types'\n\n// ============================================\n// Server-Only API\n// ============================================\n\nconst CMS_LOG_PREFIX = '@sonordev/site-kit/cms'\n\n/**\n * POST to the Portal public CMS API. Thin wrapper over the shared `serverApiFetch`\n * so config resolution (via requireServerApiConfig — throws if no API key is set)\n * and retry/backoff live in one place (see ../server/server-fetch). 60s revalidate:\n * CMS content changes more often than the 24h-default SEO metadata.\n */\nfunction secureApiPost<T>(\n endpoint: string,\n body: Record<string, unknown> = {},\n): Promise<T | null> {\n return serverApiFetch<T>(endpoint, {\n method: 'POST',\n body,\n revalidate: 60,\n requireKey: true,\n retry: true,\n logPrefix: CMS_LOG_PREFIX,\n })\n}\n\n// ============================================\n// Cached Data Fetchers\n// ============================================\n\n/**\n * Fetch a published CMS page by path — cached per request.\n * Returns the full page with all sections and their Portable Text content.\n * @server-only\n */\nexport const getCmsPage = cache(\n async (path: string): Promise<CmsPageData | null> => {\n const result = await secureApiPost<{\n found: boolean\n page: CmsPageData | null\n }>('/api/public/cms/page', { path })\n\n if (!result?.found || !result.page) return null\n return result.page\n },\n)\n\n/**\n * Fetch a single published CMS section by ID — cached per request.\n * @server-only\n */\nexport const getCmsSection = cache(\n async (sectionId: string): Promise<CmsSectionData | null> => {\n const result = await secureApiPost<{\n found: boolean\n section: CmsSectionData | null\n }>('/api/public/cms/section', { sectionId })\n\n if (!result?.found || !result.section) return null\n return result.section\n },\n)\n\n/**\n * Fetch CMS page and return Next.js Metadata object.\n * Use in generateMetadata() for CMS-managed pages.\n *\n * @example\n * ```ts\n * import { getCmsPageMetadata } from '@sonordev/site-kit/cms/server'\n *\n * export async function generateMetadata({ params }) {\n * return getCmsPageMetadata(`/${params.slug}`)\n * }\n * ```\n * @server-only\n */\nexport const getCmsPageMetadata = cache(\n async (\n path: string,\n ): Promise<{\n title?: string\n description?: string\n robots?: { index: boolean }\n openGraph?: { title?: string; description?: string }\n } | null> => {\n const page = await getCmsPage(path)\n if (!page) return null\n\n const seo: CmsPageSeo = page.seo || {}\n\n return {\n title: seo.title || page.title,\n description: seo.description,\n robots: seo.noindex ? { index: false } : undefined,\n openGraph: {\n title: seo.title || page.title,\n description: seo.description,\n },\n }\n },\n)\n"]}
@@ -1,138 +0,0 @@
1
- 'use strict';
2
-
3
- // src/articles/article-tables.ts
4
- var tableScrollClass = "sk-article-table-scroll";
5
- var legacyTableScrollClass = "sk-blog-table-scroll";
6
- var voidElements = /* @__PURE__ */ new Set([
7
- "area",
8
- "base",
9
- "br",
10
- "col",
11
- "embed",
12
- "hr",
13
- "img",
14
- "input",
15
- "link",
16
- "meta",
17
- "param",
18
- "source",
19
- "track",
20
- "wbr"
21
- ]);
22
- var preservedElements = /* @__PURE__ */ new Set(["pre", "code", "script", "style", "textarea", "xmp", "template"]);
23
- function htmlTags() {
24
- return /<!--[\s\S]*?(?:-->|$)|<\/?[a-z][\w:-]*(?=[\s/>])(?:[^"'<>]|"[^"]*"|'[^']*')*>/gi;
25
- }
26
- function hasScrollClass(tag) {
27
- const attributes = tag.replace(/^<[\w:-]+/, "").replace(/\/?>$/, "");
28
- const pattern = /([^\s=/>]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g;
29
- for (const attribute of attributes.matchAll(pattern)) {
30
- if (attribute[1].toLowerCase() !== "class") continue;
31
- return (attribute[2] ?? attribute[3] ?? attribute[4] ?? "").split(/\s+/).some((name) => name === tableScrollClass || name === legacyTableScrollClass);
32
- }
33
- return false;
34
- }
35
- function labelText(html) {
36
- return html.replace(/<!--[\s\S]*?(?:-->|$)/g, "").replace(htmlTags(), " ").replace(/\s+/g, " ").trim();
37
- }
38
- function escapeLabel(text) {
39
- return text.replace(/&(?!(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);)/gi, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
40
- }
41
- function tableLabel(table, number) {
42
- const caption = table.match(/<caption\b(?:[^"'<>]|"[^"]*"|'[^']*')*>([\s\S]*?)<\/caption\s*>/i)?.[1];
43
- const headers = [...table.matchAll(/<th\b(?:[^"'<>]|"[^"]*"|'[^']*')*>([\s\S]*?)<\/th\s*>/gi)].slice(0, 4).map((match) => labelText(match[1])).filter(Boolean).join(", ");
44
- const summary = labelText(caption || headers).slice(0, 180);
45
- return escapeLabel(`Table ${number}${summary ? `: ${summary}` : ""}`);
46
- }
47
- function wrapArticleTables(html) {
48
- const tags = htmlTags();
49
- const stack = [];
50
- const tables = [];
51
- let tableNumber = 0;
52
- let token;
53
- while (token = tags.exec(html)) {
54
- const tag = token[0];
55
- if (tag.startsWith("<!--")) continue;
56
- const tagName = /^<\/?([\w:-]+)/.exec(tag)[1].toLowerCase();
57
- if (tag.startsWith("</")) {
58
- const index = stack.map((frame3) => frame3.tag).lastIndexOf(tagName);
59
- if (index < 0) continue;
60
- const frame2 = stack[index];
61
- if (frame2.table) tables.push({ ...frame2.table, end: tags.lastIndex });
62
- stack.length = index;
63
- continue;
64
- }
65
- if (preservedElements.has(tagName)) {
66
- const closingTag = new RegExp(`</${tagName}\\s*>`, "gi");
67
- closingTag.lastIndex = tags.lastIndex;
68
- if (!closingTag.exec(html)) break;
69
- tags.lastIndex = closingTag.lastIndex;
70
- continue;
71
- }
72
- if (voidElements.has(tagName) || /\/\s*>$/.test(tag)) continue;
73
- const frame = { tag: tagName, scrollRegion: hasScrollClass(tag) };
74
- if (tagName === "table" && !stack.some((ancestor) => ancestor.tag === "table")) {
75
- tableNumber += 1;
76
- if (!stack.some((ancestor) => ancestor.scrollRegion)) {
77
- frame.table = { start: token.index, number: tableNumber };
78
- }
79
- }
80
- stack.push(frame);
81
- }
82
- let output = "";
83
- let cursor = 0;
84
- for (const { start, end, number } of tables) {
85
- const table = html.slice(start, end);
86
- output += `${html.slice(cursor, start)}<div class="${tableScrollClass}" role="region" tabindex="0" aria-label="${tableLabel(table, number)}">${table}</div>`;
87
- cursor = end;
88
- }
89
- return output + html.slice(cursor);
90
- }
91
- var articleTableCss = (
92
- /* css */
93
- `
94
- .sk-article-content .sk-article-table-scroll {
95
- box-sizing: border-box;
96
- min-width: 0;
97
- max-width: 100%;
98
- overflow-x: auto;
99
- margin: 1.5em 0;
100
- border: 1px solid var(--sk-surface-border, #e2e8f0);
101
- border-radius: var(--sk-radius, 0.5rem);
102
- background: var(--sk-bg-elevated, #f8fafc);
103
- scrollbar-width: thin;
104
- scrollbar-color: var(--sk-primary, #2563eb) var(--sk-bg-elevated, #f8fafc);
105
- overscroll-behavior-x: contain;
106
- }
107
- .sk-article-content .sk-article-table-scroll:focus-visible {
108
- outline: 2px solid var(--sk-border-focus, var(--sk-primary, #2563eb));
109
- outline-offset: 3px;
110
- }
111
- .sk-article-content .sk-article-table-scroll::-webkit-scrollbar { height: 10px; }
112
- .sk-article-content .sk-article-table-scroll::-webkit-scrollbar-track {
113
- background: var(--sk-bg-elevated, #f8fafc);
114
- border-radius: var(--sk-radius, 0.5rem);
115
- }
116
- .sk-article-content .sk-article-table-scroll::-webkit-scrollbar-thumb {
117
- background: var(--sk-primary, #2563eb);
118
- background-clip: padding-box;
119
- border: 2px solid var(--sk-bg-elevated, #f8fafc);
120
- border-radius: var(--sk-radius, 0.5rem);
121
- }
122
- .sk-article-content .sk-article-table-scroll > table {
123
- display: table;
124
- margin: 0;
125
- overflow: visible;
126
- }
127
- .sk-article-content .sk-article-table-scroll caption {
128
- padding: 0.625rem 0.875rem;
129
- text-align: start;
130
- color: var(--sk-text-secondary, #475569);
131
- }
132
- `.trim()
133
- );
134
-
135
- exports.articleTableCss = articleTableCss;
136
- exports.wrapArticleTables = wrapArticleTables;
137
- //# sourceMappingURL=chunk-SG7CWD2R.js.map
138
- //# sourceMappingURL=chunk-SG7CWD2R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/articles/article-tables.ts"],"names":["frame"],"mappings":"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","file":"chunk-SG7CWD2R.js","sourcesContent":["/**\n * Server-rendered table scrolling. Keep the author's table markup intact so\n * captions, header associations, links and table semantics survive unchanged.\n */\n\nconst tableScrollClass = 'sk-article-table-scroll'\n/** The pre-6.0 name, still recognized in stored HTML so an already-wrapped table isn't wrapped twice. */\nconst legacyTableScrollClass = 'sk-blog-table-scroll'\nconst voidElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta',\n 'param', 'source', 'track', 'wbr',\n])\nconst preservedElements = new Set(['pre', 'code', 'script', 'style', 'textarea', 'xmp', 'template'])\n\n/** Match complete tags, including quoted `>` characters, without reserializing HTML. */\nfunction htmlTags(): RegExp {\n return /<!--[\\s\\S]*?(?:-->|$)|<\\/?[a-z][\\w:-]*(?=[\\s/>])(?:[^\"'<>]|\"[^\"]*\"|'[^']*')*>/gi\n}\n\nfunction hasScrollClass(tag: string): boolean {\n const attributes = tag.replace(/^<[\\w:-]+/, '').replace(/\\/?>$/, '')\n const pattern = /([^\\s=/>]+)(?:\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\\s\"'=<>`]+)))?/g\n for (const attribute of attributes.matchAll(pattern)) {\n if (attribute[1].toLowerCase() !== 'class') continue\n return (attribute[2] ?? attribute[3] ?? attribute[4] ?? '').split(/\\s+/).some((name) => name === tableScrollClass || name === legacyTableScrollClass)\n }\n return false\n}\n\nfunction labelText(html: string): string {\n // Preserve existing character references in the eventual attribute. Escaping\n // them a second time would announce \"amp\" instead of the author's text.\n return html\n .replace(/<!--[\\s\\S]*?(?:-->|$)/g, '')\n .replace(htmlTags(), ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n}\n\nfunction escapeLabel(text: string): string {\n return text\n .replace(/&(?!(?:#\\d+|#x[\\da-f]+|[a-z][\\da-z]+);)/gi, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n}\n\nfunction tableLabel(table: string, number: number): string {\n const caption = table.match(/<caption\\b(?:[^\"'<>]|\"[^\"]*\"|'[^']*')*>([\\s\\S]*?)<\\/caption\\s*>/i)?.[1]\n const headers = [...table.matchAll(/<th\\b(?:[^\"'<>]|\"[^\"]*\"|'[^']*')*>([\\s\\S]*?)<\\/th\\s*>/gi)]\n .slice(0, 4)\n .map((match) => labelText(match[1]))\n .filter(Boolean)\n .join(', ')\n const summary = labelText(caption || headers).slice(0, 180)\n return escapeLabel(`Table ${number}${summary ? `: ${summary}` : ''}`)\n}\n\ninterface ElementFrame {\n tag: string\n scrollRegion: boolean\n table?: { start: number; number: number }\n}\n\n/**\n * Single source of truth for default article table wrappers. Safe to call twice;\n * already wrapped tables and HTML examples are left alone. This is a layout\n * transform, not an HTML sanitizer: content still follows the host's trust policy.\n */\nexport function wrapArticleTables(html: string): string {\n const tags = htmlTags()\n const stack: ElementFrame[] = []\n const tables: Array<{ start: number; end: number; number: number }> = []\n let tableNumber = 0\n let token: RegExpExecArray | null\n\n while ((token = tags.exec(html))) {\n const tag = token[0]\n if (tag.startsWith('<!--')) continue\n const tagName = /^<\\/?([\\w:-]+)/.exec(tag)![1].toLowerCase()\n\n if (tag.startsWith('</')) {\n const index = stack.map((frame) => frame.tag).lastIndexOf(tagName)\n if (index < 0) continue\n const frame = stack[index]\n if (frame.table) tables.push({ ...frame.table, end: tags.lastIndex })\n stack.length = index\n continue\n }\n\n if (preservedElements.has(tagName)) {\n // Code examples and raw text can contain literal HTML. Skip to the end\n // without interpreting any of those tags as article content.\n const closingTag = new RegExp(`</${tagName}\\\\s*>`, 'gi')\n closingTag.lastIndex = tags.lastIndex\n if (!closingTag.exec(html)) break\n tags.lastIndex = closingTag.lastIndex\n continue\n }\n\n if (voidElements.has(tagName) || /\\/\\s*>$/.test(tag)) continue\n const frame: ElementFrame = { tag: tagName, scrollRegion: hasScrollClass(tag) }\n if (tagName === 'table' && !stack.some((ancestor) => ancestor.tag === 'table')) {\n tableNumber += 1\n if (!stack.some((ancestor) => ancestor.scrollRegion)) {\n frame.table = { start: token.index, number: tableNumber }\n }\n }\n stack.push(frame)\n }\n\n let output = ''\n let cursor = 0\n for (const { start, end, number } of tables) {\n const table = html.slice(start, end)\n output += `${html.slice(cursor, start)}<div class=\"${tableScrollClass}\" role=\"region\" tabindex=\"0\" aria-label=\"${tableLabel(table, number)}\">${table}</div>`\n cursor = end\n }\n return output + html.slice(cursor)\n}\n\n/** Native overflow only when content needs it; small tables retain their layout. */\nexport const articleTableCss = /* css */ `\n.sk-article-content .sk-article-table-scroll {\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n overflow-x: auto;\n margin: 1.5em 0;\n border: 1px solid var(--sk-surface-border, #e2e8f0);\n border-radius: var(--sk-radius, 0.5rem);\n background: var(--sk-bg-elevated, #f8fafc);\n scrollbar-width: thin;\n scrollbar-color: var(--sk-primary, #2563eb) var(--sk-bg-elevated, #f8fafc);\n overscroll-behavior-x: contain;\n}\n.sk-article-content .sk-article-table-scroll:focus-visible {\n outline: 2px solid var(--sk-border-focus, var(--sk-primary, #2563eb));\n outline-offset: 3px;\n}\n.sk-article-content .sk-article-table-scroll::-webkit-scrollbar { height: 10px; }\n.sk-article-content .sk-article-table-scroll::-webkit-scrollbar-track {\n background: var(--sk-bg-elevated, #f8fafc);\n border-radius: var(--sk-radius, 0.5rem);\n}\n.sk-article-content .sk-article-table-scroll::-webkit-scrollbar-thumb {\n background: var(--sk-primary, #2563eb);\n background-clip: padding-box;\n border: 2px solid var(--sk-bg-elevated, #f8fafc);\n border-radius: var(--sk-radius, 0.5rem);\n}\n.sk-article-content .sk-article-table-scroll > table {\n display: table;\n margin: 0;\n overflow: visible;\n}\n.sk-article-content .sk-article-table-scroll caption {\n padding: 0.625rem 0.875rem;\n text-align: start;\n color: var(--sk-text-secondary, #475569);\n}\n`.trim()\n"]}
@@ -1,26 +0,0 @@
1
- // src/analytics/dispatch.ts
2
- var MAX_QUEUE = 50;
3
- var dispatcher = null;
4
- var queue = [];
5
- function registerAnalyticsDispatcher(next) {
6
- dispatcher = next;
7
- if (!next) return;
8
- const pending = queue;
9
- queue = [];
10
- for (const call of pending) {
11
- if (call.kind === "event") next.trackEvent(call.options);
12
- else next.trackConversion(call.options);
13
- }
14
- }
15
- function trackEvent(options) {
16
- if (dispatcher) dispatcher.trackEvent(options);
17
- else if (queue.length < MAX_QUEUE) queue.push({ kind: "event", options });
18
- }
19
- function trackConversion(options) {
20
- if (dispatcher) dispatcher.trackConversion(options);
21
- else if (queue.length < MAX_QUEUE) queue.push({ kind: "conversion", options });
22
- }
23
-
24
- export { registerAnalyticsDispatcher, trackConversion, trackEvent };
25
- //# sourceMappingURL=chunk-SHLWA6JY.mjs.map
26
- //# sourceMappingURL=chunk-SHLWA6JY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/analytics/dispatch.ts"],"names":[],"mappings":";AA4BA,IAAM,SAAA,GAAY,EAAA;AAElB,IAAI,UAAA,GAAyC,IAAA;AAC7C,IAAI,QAAsB,EAAC;AAMpB,SAAS,4BAA4B,IAAA,EAAwC;AAClF,EAAA,UAAA,GAAa,IAAA;AACb,EAAA,IAAI,CAAC,IAAA,EAAM;AACX,EAAA,MAAM,OAAA,GAAU,KAAA;AAChB,EAAA,KAAA,GAAQ,EAAC;AACT,EAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,IAAA,IAAI,KAAK,IAAA,KAAS,OAAA,EAAS,IAAA,CAAK,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,SAClD,IAAA,CAAK,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA;AAAA,EACxC;AACF;AAOO,SAAS,WAAW,OAAA,EAAkC;AAC3D,EAAA,IAAI,UAAA,EAAY,UAAA,CAAW,UAAA,CAAW,OAAO,CAAA;AAAA,OAAA,IACpC,KAAA,CAAM,SAAS,SAAA,EAAW,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,CAAA;AAC1E;AAGO,SAAS,gBAAgB,OAAA,EAAuC;AACrE,EAAA,IAAI,UAAA,EAAY,UAAA,CAAW,eAAA,CAAgB,OAAO,CAAA;AAAA,OAAA,IACzC,KAAA,CAAM,SAAS,SAAA,EAAW,KAAA,CAAM,KAAK,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,CAAA;AAC/E","file":"chunk-SHLWA6JY.mjs","sourcesContent":["/**\n * @sonordev/site-kit — standalone analytics dispatch bridge\n *\n * The analytics API is hook-based (useAnalytics), which requires living\n * inside <AnalyticsProvider>. But SiteKitLayout mounts the provider as a\n * childless deferred SIBLING of the page tree (see SiteKitClientProviders),\n * so page components — and sibling packages like @sonordev/agency-site-kit —\n * can never reach the context.\n *\n * This module is the bridge: AnalyticsProvider registers its trackEvent /\n * trackConversion here on mount (single source of payload construction — do\n * NOT re-implement the POST anywhere else), and the standalone functions\n * below queue until it does. If the provider never mounts, calls no-op after\n * the queue cap — tracking must never break a page.\n */\n\nimport type { TrackEventOptions, TrackConversionOptions } from './types'\n\ninterface AnalyticsDispatcher {\n trackEvent: (options: TrackEventOptions) => void\n trackConversion: (options: TrackConversionOptions) => void\n}\n\ntype QueuedCall =\n | { kind: 'event'; options: TrackEventOptions }\n | { kind: 'conversion'; options: TrackConversionOptions }\n\n/** Pre-mount buffer — bounded so a page without analytics can't grow it forever. */\nconst MAX_QUEUE = 50\n\nlet dispatcher: AnalyticsDispatcher | null = null\nlet queue: QueuedCall[] = []\n\n/**\n * Called by AnalyticsProvider on mount/unmount. Flushes anything queued\n * before the (idle-deferred) provider arrived.\n */\nexport function registerAnalyticsDispatcher(next: AnalyticsDispatcher | null): void {\n dispatcher = next\n if (!next) return\n const pending = queue\n queue = []\n for (const call of pending) {\n if (call.kind === 'event') next.trackEvent(call.options)\n else next.trackConversion(call.options)\n }\n}\n\n/**\n * Track a custom analytics event from anywhere client-side — no provider\n * context needed. Queues until AnalyticsProvider mounts; no-ops (bounded)\n * if it never does.\n */\nexport function trackEvent(options: TrackEventOptions): void {\n if (dispatcher) dispatcher.trackEvent(options)\n else if (queue.length < MAX_QUEUE) queue.push({ kind: 'event', options })\n}\n\n/** Conversion twin of {@link trackEvent}. */\nexport function trackConversion(options: TrackConversionOptions): void {\n if (dispatcher) dispatcher.trackConversion(options)\n else if (queue.length < MAX_QUEUE) queue.push({ kind: 'conversion', options })\n}\n"]}
@@ -1,68 +0,0 @@
1
- 'use strict';
2
-
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __typeError = (msg) => {
10
- throw TypeError(msg);
11
- };
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
14
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
15
- }) : x)(function(x) {
16
- if (typeof require !== "undefined") return require.apply(this, arguments);
17
- throw Error('Dynamic require of "' + x + '" is not supported');
18
- });
19
- var __commonJS = (cb, mod) => function __require2() {
20
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
21
- };
22
- var __export = (target, all) => {
23
- for (var name in all)
24
- __defProp(target, name, { get: all[name], enumerable: true });
25
- };
26
- var __copyProps = (to, from, except, desc) => {
27
- if (from && typeof from === "object" || typeof from === "function") {
28
- for (let key of __getOwnPropNames(from))
29
- if (!__hasOwnProp.call(to, key) && key !== except)
30
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
- }
32
- return to;
33
- };
34
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
- // If the importer is in node compatibility mode or this is not an ESM
36
- // file that has been converted to a CommonJS file using a Babel-
37
- // compatible transform (i.e. "__esModule" has not been set), then set
38
- // "default" to the CommonJS "module.exports" for node compatibility.
39
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
- mod
41
- ));
42
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
43
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
44
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
45
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
46
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
47
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
48
- var __privateWrapper = (obj, member, setter, getter) => ({
49
- set _(value) {
50
- __privateSet(obj, member, value, setter);
51
- },
52
- get _() {
53
- return __privateGet(obj, member, getter);
54
- }
55
- });
56
-
57
- exports.__commonJS = __commonJS;
58
- exports.__export = __export;
59
- exports.__privateAdd = __privateAdd;
60
- exports.__privateGet = __privateGet;
61
- exports.__privateMethod = __privateMethod;
62
- exports.__privateSet = __privateSet;
63
- exports.__privateWrapper = __privateWrapper;
64
- exports.__publicField = __publicField;
65
- exports.__require = __require;
66
- exports.__toESM = __toESM;
67
- //# sourceMappingURL=chunk-SNAQBZPT.js.map
68
- //# sourceMappingURL=chunk-SNAQBZPT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-SNAQBZPT.js"}