@sonordev/site-kit 1.5.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/dist/AnalyticsProvider-J7UMCBCJ.mjs +4 -0
  2. package/dist/{AnalyticsProvider-BBLU4U2T.mjs.map → AnalyticsProvider-J7UMCBCJ.mjs.map} +1 -1
  3. package/dist/AnalyticsProvider-PPDJIGWY.js +25 -0
  4. package/dist/{AnalyticsProvider-EMDIAAWR.js.map → AnalyticsProvider-PPDJIGWY.js.map} +1 -1
  5. package/dist/EngageWidget-IDBEBGQR.js +13 -0
  6. package/dist/{EngageWidget-UHWXXCAX.js.map → EngageWidget-IDBEBGQR.js.map} +1 -1
  7. package/dist/EngageWidget-SRRI4W7U.mjs +4 -0
  8. package/dist/{EngageWidget-CVZMTSB6.mjs.map → EngageWidget-SRRI4W7U.mjs.map} +1 -1
  9. package/dist/SignalBridge-D6W6OLVG.mjs +4 -0
  10. package/dist/{SignalBridge-WGHMEILW.mjs.map → SignalBridge-D6W6OLVG.mjs.map} +1 -1
  11. package/dist/SignalBridge-THATXU2R.js +33 -0
  12. package/dist/{SignalBridge-6UYUZ2CN.js.map → SignalBridge-THATXU2R.js.map} +1 -1
  13. package/dist/analytics/index.js +9 -9
  14. package/dist/analytics/index.mjs +2 -2
  15. package/dist/blog/index.js +75 -75
  16. package/dist/blog/index.js.map +1 -1
  17. package/dist/blog/index.mjs +75 -75
  18. package/dist/blog/index.mjs.map +1 -1
  19. package/dist/blog/server.js +2 -2
  20. package/dist/blog/server.js.map +1 -1
  21. package/dist/blog/server.mjs +2 -2
  22. package/dist/blog/server.mjs.map +1 -1
  23. package/dist/brand.css +87 -0
  24. package/dist/{chunk-ZU6YPEAF.mjs → chunk-2OJCYWSQ.mjs} +85 -73
  25. package/dist/chunk-2OJCYWSQ.mjs.map +1 -0
  26. package/dist/{chunk-PM2KQ6YK.mjs → chunk-3CXAWGUP.mjs} +3 -3
  27. package/dist/{chunk-PM2KQ6YK.mjs.map → chunk-3CXAWGUP.mjs.map} +1 -1
  28. package/dist/{chunk-36Y7OWES.mjs → chunk-3YQCPLGP.mjs} +4 -4
  29. package/dist/chunk-3YQCPLGP.mjs.map +1 -0
  30. package/dist/{chunk-XWWBUC2I.js → chunk-6ZGM7S5O.js} +77 -61
  31. package/dist/chunk-6ZGM7S5O.js.map +1 -0
  32. package/dist/{chunk-XFOL6JDF.mjs → chunk-7LAOWIWE.mjs} +4 -4
  33. package/dist/chunk-7LAOWIWE.mjs.map +1 -0
  34. package/dist/{chunk-YBTYDBWY.js → chunk-7M3FNAS5.js} +6 -8
  35. package/dist/chunk-7M3FNAS5.js.map +1 -0
  36. package/dist/{chunk-4QHHFCAA.mjs → chunk-AOIG5PVY.mjs} +6 -8
  37. package/dist/chunk-AOIG5PVY.mjs.map +1 -0
  38. package/dist/{chunk-VZMDH3R4.mjs → chunk-B22WSN4L.mjs} +4 -4
  39. package/dist/chunk-B22WSN4L.mjs.map +1 -0
  40. package/dist/{chunk-ELDJDBQL.js → chunk-BVUOATPG.js} +7 -7
  41. package/dist/chunk-BVUOATPG.js.map +1 -0
  42. package/dist/{chunk-N24BPFF6.mjs → chunk-CU6OGBKK.mjs} +6 -6
  43. package/dist/chunk-CU6OGBKK.mjs.map +1 -0
  44. package/dist/{chunk-NRNK7LXK.mjs → chunk-DWI5ZKPM.mjs} +4 -4
  45. package/dist/chunk-DWI5ZKPM.mjs.map +1 -0
  46. package/dist/{chunk-KRPFLF62.mjs → chunk-F5NXD7VQ.mjs} +10 -12
  47. package/dist/{chunk-KRPFLF62.mjs.map → chunk-F5NXD7VQ.mjs.map} +1 -1
  48. package/dist/{chunk-PTTDKFL7.js → chunk-FCXQECM7.js} +6 -6
  49. package/dist/chunk-FCXQECM7.js.map +1 -0
  50. package/dist/{chunk-DY4K6X3A.js → chunk-GCPPXUAI.js} +6 -6
  51. package/dist/chunk-GCPPXUAI.js.map +1 -0
  52. package/dist/{chunk-KJN2C6YE.js → chunk-I34XL5VJ.js} +5 -5
  53. package/dist/chunk-I34XL5VJ.js.map +1 -0
  54. package/dist/{chunk-G6VGUAK2.js → chunk-IFVMZFNT.js} +4 -4
  55. package/dist/chunk-IFVMZFNT.js.map +1 -0
  56. package/dist/{chunk-FMB2RZDH.mjs → chunk-J4U3IEXL.mjs} +6 -6
  57. package/dist/chunk-J4U3IEXL.mjs.map +1 -0
  58. package/dist/{chunk-EUNL6GAL.js → chunk-JP5WGL75.js} +4 -4
  59. package/dist/chunk-JP5WGL75.js.map +1 -0
  60. package/dist/{chunk-MG23BS36.js → chunk-L3UB4B74.js} +5 -5
  61. package/dist/chunk-L3UB4B74.js.map +1 -0
  62. package/dist/{chunk-FVCQBTNK.mjs → chunk-MSRLAD7F.mjs} +77 -61
  63. package/dist/chunk-MSRLAD7F.mjs.map +1 -0
  64. package/dist/{chunk-M5FLRLHI.mjs → chunk-OM6R7CDP.mjs} +3 -3
  65. package/dist/chunk-OM6R7CDP.mjs.map +1 -0
  66. package/dist/{chunk-4X5TFGKD.mjs → chunk-P3POHQWW.mjs} +422 -426
  67. package/dist/chunk-P3POHQWW.mjs.map +1 -0
  68. package/dist/{chunk-GJD4CFHN.js → chunk-RLNG67S5.js} +7 -7
  69. package/dist/chunk-RLNG67S5.js.map +1 -0
  70. package/dist/{chunk-FTSXKDP3.js → chunk-RO6DHV6S.js} +10 -12
  71. package/dist/{chunk-FTSXKDP3.js.map → chunk-RO6DHV6S.js.map} +1 -1
  72. package/dist/{chunk-WW7UM7XY.js → chunk-TZAD7CZD.js} +424 -428
  73. package/dist/chunk-TZAD7CZD.js.map +1 -0
  74. package/dist/{chunk-TXZNP76P.js → chunk-UD5447TC.js} +13 -15
  75. package/dist/chunk-UD5447TC.js.map +1 -0
  76. package/dist/{chunk-TC6TOW2T.js → chunk-UJ757WGI.js} +4 -4
  77. package/dist/{chunk-TC6TOW2T.js.map → chunk-UJ757WGI.js.map} +1 -1
  78. package/dist/{chunk-C3A5HXHX.mjs → chunk-V6V6OXS2.mjs} +5 -5
  79. package/dist/chunk-V6V6OXS2.mjs.map +1 -0
  80. package/dist/{chunk-X4J33XQD.js → chunk-W6K7MQCC.js} +6 -6
  81. package/dist/chunk-W6K7MQCC.js.map +1 -0
  82. package/dist/{chunk-FI2ME55T.mjs → chunk-W7RZ3OTA.mjs} +7 -7
  83. package/dist/chunk-W7RZ3OTA.mjs.map +1 -0
  84. package/dist/{chunk-IJ2LWZID.js → chunk-WETCVFIK.js} +85 -73
  85. package/dist/chunk-WETCVFIK.js.map +1 -0
  86. package/dist/{chunk-VNAJQKYG.mjs → chunk-WN2PUL6B.mjs} +13 -15
  87. package/dist/chunk-WN2PUL6B.mjs.map +1 -0
  88. package/dist/cli/index.js +19339 -3461
  89. package/dist/cli/index.js.map +1 -1
  90. package/dist/cli/index.mjs +19331 -3452
  91. package/dist/cli/index.mjs.map +1 -1
  92. package/dist/cms/index.d.mts +1 -1
  93. package/dist/cms/index.d.ts +1 -1
  94. package/dist/cms/index.js +3 -3
  95. package/dist/cms/index.js.map +1 -1
  96. package/dist/cms/index.mjs +2 -2
  97. package/dist/cms/index.mjs.map +1 -1
  98. package/dist/cms/server.js +4 -4
  99. package/dist/cms/server.mjs +1 -1
  100. package/dist/commerce/index.js +47 -47
  101. package/dist/commerce/index.mjs +3 -3
  102. package/dist/engage/index.js +6 -6
  103. package/dist/engage/index.js.map +1 -1
  104. package/dist/engage/index.mjs +3 -3
  105. package/dist/engage/index.mjs.map +1 -1
  106. package/dist/forms/index.js +379 -84
  107. package/dist/forms/index.js.map +1 -1
  108. package/dist/forms/index.mjs +375 -65
  109. package/dist/forms/index.mjs.map +1 -1
  110. package/dist/forms/styles.css +312 -0
  111. package/dist/images/index.js +11 -11
  112. package/dist/images/index.mjs +2 -2
  113. package/dist/images/server.js +4 -4
  114. package/dist/images/server.mjs +1 -1
  115. package/dist/index.d.mts +4 -131
  116. package/dist/index.d.ts +4 -131
  117. package/dist/index.js +85 -1373
  118. package/dist/index.js.map +1 -1
  119. package/dist/index.mjs +13 -1294
  120. package/dist/index.mjs.map +1 -1
  121. package/dist/layout/client.js +2 -2
  122. package/dist/layout/client.mjs +1 -1
  123. package/dist/layout/index.js +21 -11
  124. package/dist/layout/index.js.map +1 -1
  125. package/dist/layout/index.mjs +17 -7
  126. package/dist/layout/index.mjs.map +1 -1
  127. package/dist/llms/index.d.mts +3 -3
  128. package/dist/llms/index.d.ts +3 -3
  129. package/dist/llms/index.js +12 -12
  130. package/dist/llms/index.js.map +1 -1
  131. package/dist/llms/index.mjs +2 -2
  132. package/dist/llms/index.mjs.map +1 -1
  133. package/dist/manifest/index.js +4 -4
  134. package/dist/manifest/index.js.map +1 -1
  135. package/dist/manifest/index.mjs +3 -3
  136. package/dist/manifest/index.mjs.map +1 -1
  137. package/dist/middleware/index.js +3 -3
  138. package/dist/middleware/index.mjs +2 -2
  139. package/dist/redirects/index.js +6 -6
  140. package/dist/redirects/index.mjs +2 -2
  141. package/dist/robots/index.js +3 -3
  142. package/dist/robots/index.js.map +1 -1
  143. package/dist/robots/index.mjs +2 -2
  144. package/dist/robots/index.mjs.map +1 -1
  145. package/dist/{routing-DZYzyDHw.d.ts → routing-DQ_Et-OP.d.mts} +4 -4
  146. package/dist/{routing-B5XS-6_W.d.mts → routing-IYiJNIIX.d.ts} +4 -4
  147. package/dist/seo/index.d.mts +3 -5
  148. package/dist/seo/index.d.ts +3 -5
  149. package/dist/seo/index.js +77 -76
  150. package/dist/seo/index.js.map +1 -1
  151. package/dist/seo/index.mjs +41 -40
  152. package/dist/seo/index.mjs.map +1 -1
  153. package/dist/seo/register-sitemap-cli.js +3 -3
  154. package/dist/seo/register-sitemap-cli.js.map +1 -1
  155. package/dist/seo/register-sitemap-cli.mjs +3 -3
  156. package/dist/seo/register-sitemap-cli.mjs.map +1 -1
  157. package/dist/seo/server.d.mts +3 -3
  158. package/dist/seo/server.d.ts +3 -3
  159. package/dist/seo/server.js +7 -7
  160. package/dist/seo/server.js.map +1 -1
  161. package/dist/seo/server.mjs +5 -5
  162. package/dist/seo/server.mjs.map +1 -1
  163. package/dist/{server-api-XGKRGUMG.js → server-api-36R24YWN.js} +21 -21
  164. package/dist/{server-api-XGKRGUMG.js.map → server-api-36R24YWN.js.map} +1 -1
  165. package/dist/{server-api-COVFLFZ2.mjs → server-api-UIZU4JM3.mjs} +3 -3
  166. package/dist/{server-api-COVFLFZ2.mjs.map → server-api-UIZU4JM3.mjs.map} +1 -1
  167. package/dist/setup/index.d.mts +2 -5
  168. package/dist/setup/index.d.ts +2 -5
  169. package/dist/setup/index.js +0 -31
  170. package/dist/setup/index.mjs +1 -4
  171. package/dist/site-config/index.js +3 -3
  172. package/dist/site-config/index.mjs +1 -1
  173. package/dist/sitemap/index.js +10 -9
  174. package/dist/sitemap/index.js.map +1 -1
  175. package/dist/sitemap/index.mjs +8 -7
  176. package/dist/sitemap/index.mjs.map +1 -1
  177. package/dist/sync/index.js +13 -13
  178. package/dist/sync/index.mjs +1 -1
  179. package/dist/{types-KZP_VWZp.d.mts → types-CGkyylOa.d.mts} +2 -2
  180. package/dist/{types-KZP_VWZp.d.ts → types-CGkyylOa.d.ts} +2 -2
  181. package/package.json +4 -12
  182. package/dist/AnalyticsProvider-BBLU4U2T.mjs +0 -4
  183. package/dist/AnalyticsProvider-EMDIAAWR.js +0 -25
  184. package/dist/EngageWidget-CVZMTSB6.mjs +0 -4
  185. package/dist/EngageWidget-UHWXXCAX.js +0 -13
  186. package/dist/SetupWizard-Cki06kB0.d.mts +0 -12
  187. package/dist/SetupWizard-Cki06kB0.d.ts +0 -12
  188. package/dist/SignalBridge-6UYUZ2CN.js +0 -33
  189. package/dist/SignalBridge-WGHMEILW.mjs +0 -4
  190. package/dist/chunk-36Y7OWES.mjs.map +0 -1
  191. package/dist/chunk-373TK6TZ.js +0 -321
  192. package/dist/chunk-373TK6TZ.js.map +0 -1
  193. package/dist/chunk-4MOJJSNA.js +0 -14867
  194. package/dist/chunk-4MOJJSNA.js.map +0 -1
  195. package/dist/chunk-4QHHFCAA.mjs.map +0 -1
  196. package/dist/chunk-4X5TFGKD.mjs.map +0 -1
  197. package/dist/chunk-5YDPPOUU.mjs +0 -810
  198. package/dist/chunk-5YDPPOUU.mjs.map +0 -1
  199. package/dist/chunk-7FKPJQVS.mjs +0 -289
  200. package/dist/chunk-7FKPJQVS.mjs.map +0 -1
  201. package/dist/chunk-C3A5HXHX.mjs.map +0 -1
  202. package/dist/chunk-DY4K6X3A.js.map +0 -1
  203. package/dist/chunk-ELDJDBQL.js.map +0 -1
  204. package/dist/chunk-EUNL6GAL.js.map +0 -1
  205. package/dist/chunk-FI2ME55T.mjs.map +0 -1
  206. package/dist/chunk-FMB2RZDH.mjs.map +0 -1
  207. package/dist/chunk-FVCQBTNK.mjs.map +0 -1
  208. package/dist/chunk-G6VGUAK2.js.map +0 -1
  209. package/dist/chunk-GJD4CFHN.js.map +0 -1
  210. package/dist/chunk-GVXZWXQ7.js +0 -814
  211. package/dist/chunk-GVXZWXQ7.js.map +0 -1
  212. package/dist/chunk-HF2FWDBJ.mjs +0 -968
  213. package/dist/chunk-HF2FWDBJ.mjs.map +0 -1
  214. package/dist/chunk-IFAW7JFO.js +0 -1429
  215. package/dist/chunk-IFAW7JFO.js.map +0 -1
  216. package/dist/chunk-IJ2LWZID.js.map +0 -1
  217. package/dist/chunk-IKIJEKU3.mjs +0 -1427
  218. package/dist/chunk-IKIJEKU3.mjs.map +0 -1
  219. package/dist/chunk-JFTGG6HK.mjs +0 -14848
  220. package/dist/chunk-JFTGG6HK.mjs.map +0 -1
  221. package/dist/chunk-JM3ZR6LB.js +0 -981
  222. package/dist/chunk-JM3ZR6LB.js.map +0 -1
  223. package/dist/chunk-KJN2C6YE.js.map +0 -1
  224. package/dist/chunk-M5FLRLHI.mjs.map +0 -1
  225. package/dist/chunk-MCGLYYAR.mjs +0 -341
  226. package/dist/chunk-MCGLYYAR.mjs.map +0 -1
  227. package/dist/chunk-MG23BS36.js.map +0 -1
  228. package/dist/chunk-N24BPFF6.mjs.map +0 -1
  229. package/dist/chunk-NRNK7LXK.mjs.map +0 -1
  230. package/dist/chunk-PTTDKFL7.js.map +0 -1
  231. package/dist/chunk-S7FRYNSU.mjs +0 -315
  232. package/dist/chunk-S7FRYNSU.mjs.map +0 -1
  233. package/dist/chunk-SLB5V4RT.js +0 -302
  234. package/dist/chunk-SLB5V4RT.js.map +0 -1
  235. package/dist/chunk-TXZNP76P.js.map +0 -1
  236. package/dist/chunk-VNAJQKYG.mjs.map +0 -1
  237. package/dist/chunk-VZMDH3R4.mjs.map +0 -1
  238. package/dist/chunk-WW7UM7XY.js.map +0 -1
  239. package/dist/chunk-X4J33XQD.js.map +0 -1
  240. package/dist/chunk-XFOL6JDF.mjs.map +0 -1
  241. package/dist/chunk-XWWBUC2I.js.map +0 -1
  242. package/dist/chunk-YBTYDBWY.js.map +0 -1
  243. package/dist/chunk-ZQO6FZZB.js +0 -343
  244. package/dist/chunk-ZQO6FZZB.js.map +0 -1
  245. package/dist/chunk-ZU6YPEAF.mjs.map +0 -1
  246. package/dist/generators-DOFWGRXS.js +0 -37
  247. package/dist/generators-DOFWGRXS.js.map +0 -1
  248. package/dist/generators-R62APO62.mjs +0 -4
  249. package/dist/generators-R62APO62.mjs.map +0 -1
  250. package/dist/migrator-3WQB3KQ2.mjs +0 -4
  251. package/dist/migrator-3WQB3KQ2.mjs.map +0 -1
  252. package/dist/migrator-HFVQYK5R.js +0 -37
  253. package/dist/migrator-HFVQYK5R.js.map +0 -1
  254. package/dist/scanner-AF7YUCFG.mjs +0 -4
  255. package/dist/scanner-AF7YUCFG.mjs.map +0 -1
  256. package/dist/scanner-DBD5K6F7.js +0 -53
  257. package/dist/scanner-DBD5K6F7.js.map +0 -1
  258. package/dist/setup/client.d.mts +0 -60
  259. package/dist/setup/client.d.ts +0 -60
  260. package/dist/setup/client.js +0 -31
  261. package/dist/setup/client.js.map +0 -1
  262. package/dist/setup/client.mjs +0 -6
  263. package/dist/setup/client.mjs.map +0 -1
  264. package/dist/setup/server.d.mts +0 -14
  265. package/dist/setup/server.d.ts +0 -14
  266. package/dist/setup/server.js +0 -13
  267. package/dist/setup/server.js.map +0 -1
  268. package/dist/setup/server.mjs +0 -4
  269. package/dist/setup/server.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { getSiteConfig } from '../chunk-VZMDH3R4.mjs';
1
+ import { getSiteConfig } from '../chunk-B22WSN4L.mjs';
2
2
  import '../chunk-4XPGGLVP.mjs';
3
3
 
4
4
  // src/manifest/index.ts
@@ -23,8 +23,8 @@ async function fetchProjectInfo(apiKey, apiUrl) {
23
23
  }
24
24
  function createManifest(config) {
25
25
  return async function GET() {
26
- const apiKey = config?.apiKey ?? process.env.SONOR_API_KEY ?? process.env.UPTRADE_API_KEY ?? process.env.NEXT_PUBLIC_UPTRADE_API_KEY ?? "";
27
- const apiUrl = config?.apiUrl ?? process.env.SONOR_API_URL ?? process.env.UPTRADE_API_URL ?? process.env.NEXT_PUBLIC_UPTRADE_API_URL ?? "https://api.sonor.io";
26
+ const apiKey = config?.apiKey ?? process.env.SONOR_API_KEY ?? "";
27
+ const apiUrl = config?.apiUrl ?? process.env.SONOR_API_URL ?? "https://api.sonor.io";
28
28
  let project = null;
29
29
  if (apiKey) {
30
30
  project = await fetchProjectInfo(apiKey, apiUrl);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/manifest/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/manifest\n *\n * PWA manifest generator. Fetches project name, description, brand colors,\n * and logo from Portal to generate a compliant Web App Manifest.\n *\n * @example\n * ```ts\n * // app/manifest.webmanifest/route.ts\n * import { createManifest } from '@sonordev/site-kit/manifest'\n * export const GET = createManifest()\n * ```\n *\n * @example With overrides:\n * ```ts\n * export const GET = createManifest({\n * display: 'fullscreen',\n * themeColor: '#1a1a2e',\n * categories: ['business', 'productivity'],\n * })\n * ```\n */\n\nimport { getSiteConfig } from '../site-config'\n\nexport interface ManifestConfig {\n /** App name. Defaults to Portal project name. */\n name?: string\n /** Short name for home screen. Defaults to first word of name. */\n shortName?: string\n /** App description. Defaults to Portal project description. */\n description?: string\n /** Theme color for browser chrome. Defaults to Portal brand color or #4bbf39. */\n themeColor?: string\n /** Background color for splash screen. Default: '#ffffff' */\n backgroundColor?: string\n /** Display mode. Default: 'standalone' */\n display?: 'standalone' | 'fullscreen' | 'minimal-ui' | 'browser'\n /** Orientation preference. Default: 'any' */\n orientation?: 'portrait-primary' | 'landscape-primary' | 'any'\n /** Start URL. Default: '/' */\n startUrl?: string\n /** Scope. Default: '/' */\n scope?: string\n /** App categories */\n categories?: string[]\n /** Custom icons. If not provided, derived from Portal logo. */\n icons?: Array<{\n src: string\n sizes: string\n type: string\n purpose?: string\n }>\n /** Portal API key. Defaults from env. */\n apiKey?: string\n /** Portal API URL. Defaults from env. */\n apiUrl?: string\n}\n\ninterface ProjectInfo {\n site_url?: string\n domain?: string\n name?: string\n description?: string\n logo_url?: string\n brand_primary?: string\n}\n\nasync function fetchProjectInfo(\n apiKey: string,\n apiUrl: string,\n): Promise<ProjectInfo | null> {\n try {\n const fetchOptions: RequestInit & Record<string, unknown> = {\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n }\n // Next.js fetch extension for ISR caching\n ;(fetchOptions as any).next = { revalidate: 3600 }\n const res = await fetch(\n `${apiUrl}/api/public/seo/project-info`,\n fetchOptions,\n )\n if (!res.ok) return null\n return await res.json()\n } catch {\n return null\n }\n}\n\n/**\n * Create a route handler that serves the PWA manifest.\n * Fetches project data from Portal and merges with config overrides.\n */\nexport function createManifest(\n config?: ManifestConfig,\n): () => Promise<Response> {\n return async function GET(): Promise<Response> {\n const apiKey =\n config?.apiKey ??\n process.env.SONOR_API_KEY ??\n process.env.UPTRADE_API_KEY ??\n process.env.NEXT_PUBLIC_UPTRADE_API_KEY ??\n ''\n const apiUrl =\n config?.apiUrl ??\n process.env.SONOR_API_URL ??\n process.env.UPTRADE_API_URL ??\n process.env.NEXT_PUBLIC_UPTRADE_API_URL ??\n 'https://api.sonor.io'\n\n // Fetch project info for defaults\n let project: ProjectInfo | null = null\n if (apiKey) {\n project = await fetchProjectInfo(apiKey, apiUrl)\n }\n\n // Also try getSiteConfig for site_url\n const siteConfig = apiKey\n ? await getSiteConfig({ apiKey, apiUrl }).catch(() => null)\n : null\n\n const name = config?.name ?? project?.name ?? 'My Site'\n const shortName =\n config?.shortName ?? name.split(/\\s+/)[0] ?? name\n const description =\n config?.description ?? project?.description ?? ''\n const themeColor =\n config?.themeColor ?? project?.brand_primary ?? '#4bbf39'\n const backgroundColor = config?.backgroundColor ?? '#ffffff'\n const startUrl = config?.startUrl ?? '/'\n\n // Build icons array\n const logoUrl = project?.logo_url\n const icons =\n config?.icons ??\n (logoUrl\n ? [\n {\n src: logoUrl,\n sizes: '192x192',\n type: 'image/png',\n },\n {\n src: logoUrl,\n sizes: '512x512',\n type: 'image/png',\n },\n {\n src: logoUrl,\n sizes: '512x512',\n type: 'image/png',\n purpose: 'maskable',\n },\n ]\n : [])\n\n const manifest = {\n name,\n short_name: shortName,\n description,\n start_url: startUrl,\n scope: config?.scope ?? '/',\n display: config?.display ?? 'standalone',\n orientation: config?.orientation ?? 'any',\n theme_color: themeColor,\n background_color: backgroundColor,\n icons,\n ...(config?.categories?.length\n ? { categories: config.categories }\n : {}),\n }\n\n return new Response(JSON.stringify(manifest, null, 2), {\n status: 200,\n headers: {\n 'Content-Type': 'application/manifest+json',\n 'Cache-Control':\n 'public, max-age=86400, s-maxage=86400',\n },\n })\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/manifest/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/manifest\n *\n * PWA manifest generator. Fetches project name, description, brand colors,\n * and logo from Portal to generate a compliant Web App Manifest.\n *\n * @example\n * ```ts\n * // app/manifest.webmanifest/route.ts\n * import { createManifest } from '@sonordev/site-kit/manifest'\n * export const GET = createManifest()\n * ```\n *\n * @example With overrides:\n * ```ts\n * export const GET = createManifest({\n * display: 'fullscreen',\n * themeColor: '#1a1a2e',\n * categories: ['business', 'productivity'],\n * })\n * ```\n */\n\nimport { getSiteConfig } from '../site-config'\n\nexport interface ManifestConfig {\n /** App name. Defaults to Portal project name. */\n name?: string\n /** Short name for home screen. Defaults to first word of name. */\n shortName?: string\n /** App description. Defaults to Portal project description. */\n description?: string\n /** Theme color for browser chrome. Defaults to Portal brand color or #4bbf39. */\n themeColor?: string\n /** Background color for splash screen. Default: '#ffffff' */\n backgroundColor?: string\n /** Display mode. Default: 'standalone' */\n display?: 'standalone' | 'fullscreen' | 'minimal-ui' | 'browser'\n /** Orientation preference. Default: 'any' */\n orientation?: 'portrait-primary' | 'landscape-primary' | 'any'\n /** Start URL. Default: '/' */\n startUrl?: string\n /** Scope. Default: '/' */\n scope?: string\n /** App categories */\n categories?: string[]\n /** Custom icons. If not provided, derived from Portal logo. */\n icons?: Array<{\n src: string\n sizes: string\n type: string\n purpose?: string\n }>\n /** Portal API key. Defaults from env. */\n apiKey?: string\n /** Portal API URL. Defaults from env. */\n apiUrl?: string\n}\n\ninterface ProjectInfo {\n site_url?: string\n domain?: string\n name?: string\n description?: string\n logo_url?: string\n brand_primary?: string\n}\n\nasync function fetchProjectInfo(\n apiKey: string,\n apiUrl: string,\n): Promise<ProjectInfo | null> {\n try {\n const fetchOptions: RequestInit & Record<string, unknown> = {\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n }\n // Next.js fetch extension for ISR caching\n ;(fetchOptions as any).next = { revalidate: 3600 }\n const res = await fetch(\n `${apiUrl}/api/public/seo/project-info`,\n fetchOptions,\n )\n if (!res.ok) return null\n return await res.json()\n } catch {\n return null\n }\n}\n\n/**\n * Create a route handler that serves the PWA manifest.\n * Fetches project data from Portal and merges with config overrides.\n */\nexport function createManifest(\n config?: ManifestConfig,\n): () => Promise<Response> {\n return async function GET(): Promise<Response> {\n const apiKey =\n config?.apiKey ??\n process.env.SONOR_API_KEY ??\n ''\n const apiUrl =\n config?.apiUrl ??\n process.env.SONOR_API_URL ??\n 'https://api.sonor.io'\n\n // Fetch project info for defaults\n let project: ProjectInfo | null = null\n if (apiKey) {\n project = await fetchProjectInfo(apiKey, apiUrl)\n }\n\n // Also try getSiteConfig for site_url\n const siteConfig = apiKey\n ? await getSiteConfig({ apiKey, apiUrl }).catch(() => null)\n : null\n\n const name = config?.name ?? project?.name ?? 'My Site'\n const shortName =\n config?.shortName ?? name.split(/\\s+/)[0] ?? name\n const description =\n config?.description ?? project?.description ?? ''\n const themeColor =\n config?.themeColor ?? project?.brand_primary ?? '#4bbf39'\n const backgroundColor = config?.backgroundColor ?? '#ffffff'\n const startUrl = config?.startUrl ?? '/'\n\n // Build icons array\n const logoUrl = project?.logo_url\n const icons =\n config?.icons ??\n (logoUrl\n ? [\n {\n src: logoUrl,\n sizes: '192x192',\n type: 'image/png',\n },\n {\n src: logoUrl,\n sizes: '512x512',\n type: 'image/png',\n },\n {\n src: logoUrl,\n sizes: '512x512',\n type: 'image/png',\n purpose: 'maskable',\n },\n ]\n : [])\n\n const manifest = {\n name,\n short_name: shortName,\n description,\n start_url: startUrl,\n scope: config?.scope ?? '/',\n display: config?.display ?? 'standalone',\n orientation: config?.orientation ?? 'any',\n theme_color: themeColor,\n background_color: backgroundColor,\n icons,\n ...(config?.categories?.length\n ? { categories: config.categories }\n : {}),\n }\n\n return new Response(JSON.stringify(manifest, null, 2), {\n status: 200,\n headers: {\n 'Content-Type': 'application/manifest+json',\n 'Cache-Control':\n 'public, max-age=86400, s-maxage=86400',\n },\n })\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3MYZS6PD_js = require('../chunk-3MYZS6PD.js');
4
- var chunkX4J33XQD_js = require('../chunk-X4J33XQD.js');
5
- require('../chunk-EUNL6GAL.js');
4
+ var chunkW6K7MQCC_js = require('../chunk-W6K7MQCC.js');
5
+ require('../chunk-JP5WGL75.js');
6
6
  require('../chunk-ZSMWDLMK.js');
7
7
  var server = require('next/server');
8
8
 
@@ -20,7 +20,7 @@ function createMiddleware(config) {
20
20
  }
21
21
  if (config?.redirects !== false) {
22
22
  const redirectConfig = typeof config?.redirects === "object" ? config.redirects : {};
23
- const redirect = await chunkX4J33XQD_js.handleManagedRedirects(
23
+ const redirect = await chunkW6K7MQCC_js.handleManagedRedirects(
24
24
  request,
25
25
  redirectConfig
26
26
  );
@@ -1,6 +1,6 @@
1
1
  import { buildSecurityHeaders } from '../chunk-6BIPAKL4.mjs';
2
- import { handleManagedRedirects } from '../chunk-XFOL6JDF.mjs';
3
- import '../chunk-VZMDH3R4.mjs';
2
+ import { handleManagedRedirects } from '../chunk-7LAOWIWE.mjs';
3
+ import '../chunk-B22WSN4L.mjs';
4
4
  import '../chunk-4XPGGLVP.mjs';
5
5
  import { NextResponse } from 'next/server';
6
6
 
@@ -1,26 +1,26 @@
1
1
  'use strict';
2
2
 
3
- var chunkX4J33XQD_js = require('../chunk-X4J33XQD.js');
4
- require('../chunk-EUNL6GAL.js');
3
+ var chunkW6K7MQCC_js = require('../chunk-W6K7MQCC.js');
4
+ require('../chunk-JP5WGL75.js');
5
5
  require('../chunk-ZSMWDLMK.js');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "clearRedirectCache", {
10
10
  enumerable: true,
11
- get: function () { return chunkX4J33XQD_js.clearRedirectCache; }
11
+ get: function () { return chunkW6K7MQCC_js.clearRedirectCache; }
12
12
  });
13
13
  Object.defineProperty(exports, "fetchRedirectRules", {
14
14
  enumerable: true,
15
- get: function () { return chunkX4J33XQD_js.fetchRedirectRules; }
15
+ get: function () { return chunkW6K7MQCC_js.fetchRedirectRules; }
16
16
  });
17
17
  Object.defineProperty(exports, "generateNextRedirects", {
18
18
  enumerable: true,
19
- get: function () { return chunkX4J33XQD_js.generateNextRedirects; }
19
+ get: function () { return chunkW6K7MQCC_js.generateNextRedirects; }
20
20
  });
21
21
  Object.defineProperty(exports, "handleManagedRedirects", {
22
22
  enumerable: true,
23
- get: function () { return chunkX4J33XQD_js.handleManagedRedirects; }
23
+ get: function () { return chunkW6K7MQCC_js.handleManagedRedirects; }
24
24
  });
25
25
  //# sourceMappingURL=index.js.map
26
26
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- export { clearRedirectCache, fetchRedirectRules, generateNextRedirects, handleManagedRedirects } from '../chunk-XFOL6JDF.mjs';
2
- import '../chunk-VZMDH3R4.mjs';
1
+ export { clearRedirectCache, fetchRedirectRules, generateNextRedirects, handleManagedRedirects } from '../chunk-7LAOWIWE.mjs';
2
+ import '../chunk-B22WSN4L.mjs';
3
3
  import '../chunk-4XPGGLVP.mjs';
4
4
  //# sourceMappingURL=index.mjs.map
5
5
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkEUNL6GAL_js = require('../chunk-EUNL6GAL.js');
3
+ var chunkJP5WGL75_js = require('../chunk-JP5WGL75.js');
4
4
  require('../chunk-ZSMWDLMK.js');
5
5
 
6
6
  // src/robots/index.ts
@@ -33,14 +33,14 @@ function createRobots(config) {
33
33
  if (baseUrl) {
34
34
  return buildRobotsResponse(baseUrl, config);
35
35
  }
36
- const apiKey = config.apiKey ?? (typeof process !== "undefined" && process.env && (process.env.SONOR_API_KEY || process.env.UPTRADE_API_KEY || process.env.NEXT_PUBLIC_UPTRADE_API_KEY));
36
+ const apiKey = config.apiKey ?? (typeof process !== "undefined" && process.env && process.env.SONOR_API_KEY);
37
37
  if (!apiKey) {
38
38
  return new Response("User-agent: *\nDisallow: /", {
39
39
  status: 200,
40
40
  headers: { "Content-Type": "text/plain; charset=utf-8" }
41
41
  });
42
42
  }
43
- return chunkEUNL6GAL_js.getSiteConfig({ apiKey, apiUrl: config.apiUrl }).then((site) => {
43
+ return chunkJP5WGL75_js.getSiteConfig({ apiKey, apiUrl: config.apiUrl }).then((site) => {
44
44
  const url = site?.site_url ?? "https://example.com";
45
45
  return buildRobotsResponse(url, config);
46
46
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/robots/index.ts"],"names":["getSiteConfig"],"mappings":";;;;;;AAmCA,SAAS,mBAAA,CAAoB,SAAiB,MAAA,EAAgC;AAC5E,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,IAAI,MAAA,CAAO,aAAA,EAAe,IAAA,EAAK,EAAG;AAChC,IAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc,IAAA,EAAM,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,IAAA,KAAA,CAAM,KAAK,UAAU,CAAA;AACrB,IAAA,KAAA,MAAW,CAAA,IAAK,MAAA,CAAO,QAAA,IAAY,EAAC,EAAG;AACrC,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,UAAA,EAAa,CAAC,CAAA,CAAE,CAAA;AAAA,IAC7B;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACtC,EAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,cAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,IAAI,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,GAAG,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA;AACjF,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAEnC,EAAA,OAAO,IAAI,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAG;AAAA,IACpC,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,2BAAA;AAAA,MAChB,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AACH;AAMO,SAAS,aAAa,MAAA,EAA0D;AACrF,EAAA,OAAO,SAAS,MAAA,GAAuC;AACrD,IAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,mBAAA,CAAoB,SAAS,MAAM,CAAA;AAAA,IAC5C;AACA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,KAAW,OAAO,YAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,KAAQ,OAAA,CAAQ,IAAI,aAAA,IAAiB,OAAA,CAAQ,GAAA,CAAI,eAAA,IAAmB,QAAQ,GAAA,CAAI,2BAAA,CAAA,CAAA;AAC3J,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAI,SAAS,4BAAA,EAA8B;AAAA,QAChD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,2BAAA;AAA4B,OACxD,CAAA;AAAA,IACH;AACA,IAAA,OAAOA,8BAAA,CAAc,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,KAAS;AACrE,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,IAAY,qBAAA;AAC9B,MAAA,OAAO,mBAAA,CAAoB,KAAK,MAAM,CAAA;AAAA,IACxC,CAAC,CAAA;AAAA,EACH,CAAA;AACF","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/robots - robots.txt Generator\n *\n * Generates robots.txt with Sitemap directive.\n * baseUrl can be omitted when apiKey is set (resolved from Portal project-info).\n *\n * @example\n * // app/robots.txt/route.ts (API key only)\n * import { createRobots } from '@sonordev/site-kit/robots'\n * export const GET = createRobots({ apiKey: process.env.SONOR_API_KEY })\n *\n * @example\n * // With explicit baseUrl\n * export const GET = createRobots({\n * baseUrl: process.env.NEXT_PUBLIC_SITE_URL || 'https://example.com',\n * disallow: ['/admin'],\n * })\n */\n\nimport { getSiteConfig } from '../site-config'\n\nexport interface RobotsConfig {\n /** Base URL of the site (optional when apiKey is set; then resolved from Portal) */\n baseUrl?: string\n /** Project API key; when set and baseUrl is not, baseUrl is resolved from Portal */\n apiKey?: string\n apiUrl?: string\n /** Path to sitemap (default: /sitemap.xml) */\n sitemapPath?: string\n /** Pre-built robots content from Portal (overrides default when provided) */\n managedRobots?: string | null\n /** Paths to disallow (e.g. ['/admin', '/api']) */\n disallow?: string[]\n}\n\nfunction buildRobotsResponse(baseUrl: string, config: RobotsConfig): Response {\n const lines: string[] = []\n\n if (config.managedRobots?.trim()) {\n lines.push(config.managedRobots.trim())\n } else {\n lines.push('User-agent: *')\n lines.push('Allow: /')\n for (const p of config.disallow ?? []) {\n lines.push(`Disallow: ${p}`)\n }\n }\n\n const base = baseUrl.replace(/\\/$/, '')\n const sitemapPath = config.sitemapPath ?? '/sitemap.xml'\n const sitemapUrl = `${base}${sitemapPath.startsWith('/') ? '' : '/'}${sitemapPath}`\n lines.push(`Sitemap: ${sitemapUrl}`)\n\n return new Response(lines.join('\\n'), {\n status: 200,\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Cache-Control': 'public, max-age=86400, s-maxage=86400',\n },\n })\n}\n\n/**\n * Create a robots.txt handler that returns a Response or Promise<Response>.\n * Use as GET handler for app/robots.txt/route.ts. When baseUrl is omitted, pass apiKey to resolve from Portal.\n */\nexport function createRobots(config: RobotsConfig): () => Response | Promise<Response> {\n return function robots(): Response | Promise<Response> {\n const baseUrl = config.baseUrl\n if (baseUrl) {\n return buildRobotsResponse(baseUrl, config)\n }\n const apiKey = config.apiKey ?? (typeof process !== 'undefined' && process.env && (process.env.SONOR_API_KEY || process.env.UPTRADE_API_KEY || process.env.NEXT_PUBLIC_UPTRADE_API_KEY))\n if (!apiKey) {\n return new Response('User-agent: *\\nDisallow: /', {\n status: 200,\n headers: { 'Content-Type': 'text/plain; charset=utf-8' },\n })\n }\n return getSiteConfig({ apiKey, apiUrl: config.apiUrl }).then((site) => {\n const url = site?.site_url ?? 'https://example.com'\n return buildRobotsResponse(url, config)\n })\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/robots/index.ts"],"names":["getSiteConfig"],"mappings":";;;;;;AAmCA,SAAS,mBAAA,CAAoB,SAAiB,MAAA,EAAgC;AAC5E,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,IAAI,MAAA,CAAO,aAAA,EAAe,IAAA,EAAK,EAAG;AAChC,IAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc,IAAA,EAAM,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,IAAA,KAAA,CAAM,KAAK,UAAU,CAAA;AACrB,IAAA,KAAA,MAAW,CAAA,IAAK,MAAA,CAAO,QAAA,IAAY,EAAC,EAAG;AACrC,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,UAAA,EAAa,CAAC,CAAA,CAAE,CAAA;AAAA,IAC7B;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACtC,EAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,cAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,IAAI,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,GAAG,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA;AACjF,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAEnC,EAAA,OAAO,IAAI,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAG;AAAA,IACpC,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,2BAAA;AAAA,MAChB,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AACH;AAMO,SAAS,aAAa,MAAA,EAA0D;AACrF,EAAA,OAAO,SAAS,MAAA,GAAuC;AACrD,IAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,mBAAA,CAAoB,SAAS,MAAM,CAAA;AAAA,IAC5C;AACA,IAAA,MAAM,MAAA,GAAS,OAAO,MAAA,KAAW,OAAO,YAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,GAAA,CAAI,aAAA,CAAA;AAC9F,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAI,SAAS,4BAAA,EAA8B;AAAA,QAChD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,2BAAA;AAA4B,OACxD,CAAA;AAAA,IACH;AACA,IAAA,OAAOA,8BAAA,CAAc,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,KAAS;AACrE,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,IAAY,qBAAA;AAC9B,MAAA,OAAO,mBAAA,CAAoB,KAAK,MAAM,CAAA;AAAA,IACxC,CAAC,CAAA;AAAA,EACH,CAAA;AACF","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/robots - robots.txt Generator\n *\n * Generates robots.txt with Sitemap directive.\n * baseUrl can be omitted when apiKey is set (resolved from Portal project-info).\n *\n * @example\n * // app/robots.txt/route.ts (API key only)\n * import { createRobots } from '@sonordev/site-kit/robots'\n * export const GET = createRobots({ apiKey: process.env.SONOR_API_KEY })\n *\n * @example\n * // With explicit baseUrl\n * export const GET = createRobots({\n * baseUrl: process.env.NEXT_PUBLIC_SITE_URL || 'https://example.com',\n * disallow: ['/admin'],\n * })\n */\n\nimport { getSiteConfig } from '../site-config'\n\nexport interface RobotsConfig {\n /** Base URL of the site (optional when apiKey is set; then resolved from Portal) */\n baseUrl?: string\n /** Project API key; when set and baseUrl is not, baseUrl is resolved from Portal */\n apiKey?: string\n apiUrl?: string\n /** Path to sitemap (default: /sitemap.xml) */\n sitemapPath?: string\n /** Pre-built robots content from Portal (overrides default when provided) */\n managedRobots?: string | null\n /** Paths to disallow (e.g. ['/admin', '/api']) */\n disallow?: string[]\n}\n\nfunction buildRobotsResponse(baseUrl: string, config: RobotsConfig): Response {\n const lines: string[] = []\n\n if (config.managedRobots?.trim()) {\n lines.push(config.managedRobots.trim())\n } else {\n lines.push('User-agent: *')\n lines.push('Allow: /')\n for (const p of config.disallow ?? []) {\n lines.push(`Disallow: ${p}`)\n }\n }\n\n const base = baseUrl.replace(/\\/$/, '')\n const sitemapPath = config.sitemapPath ?? '/sitemap.xml'\n const sitemapUrl = `${base}${sitemapPath.startsWith('/') ? '' : '/'}${sitemapPath}`\n lines.push(`Sitemap: ${sitemapUrl}`)\n\n return new Response(lines.join('\\n'), {\n status: 200,\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Cache-Control': 'public, max-age=86400, s-maxage=86400',\n },\n })\n}\n\n/**\n * Create a robots.txt handler that returns a Response or Promise<Response>.\n * Use as GET handler for app/robots.txt/route.ts. When baseUrl is omitted, pass apiKey to resolve from Portal.\n */\nexport function createRobots(config: RobotsConfig): () => Response | Promise<Response> {\n return function robots(): Response | Promise<Response> {\n const baseUrl = config.baseUrl\n if (baseUrl) {\n return buildRobotsResponse(baseUrl, config)\n }\n const apiKey = config.apiKey ?? (typeof process !== 'undefined' && process.env && process.env.SONOR_API_KEY)\n if (!apiKey) {\n return new Response('User-agent: *\\nDisallow: /', {\n status: 200,\n headers: { 'Content-Type': 'text/plain; charset=utf-8' },\n })\n }\n return getSiteConfig({ apiKey, apiUrl: config.apiUrl }).then((site) => {\n const url = site?.site_url ?? 'https://example.com'\n return buildRobotsResponse(url, config)\n })\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { getSiteConfig } from '../chunk-VZMDH3R4.mjs';
1
+ import { getSiteConfig } from '../chunk-B22WSN4L.mjs';
2
2
  import '../chunk-4XPGGLVP.mjs';
3
3
 
4
4
  // src/robots/index.ts
@@ -31,7 +31,7 @@ function createRobots(config) {
31
31
  if (baseUrl) {
32
32
  return buildRobotsResponse(baseUrl, config);
33
33
  }
34
- const apiKey = config.apiKey ?? (typeof process !== "undefined" && process.env && (process.env.SONOR_API_KEY || process.env.UPTRADE_API_KEY || process.env.NEXT_PUBLIC_UPTRADE_API_KEY));
34
+ const apiKey = config.apiKey ?? (typeof process !== "undefined" && process.env && process.env.SONOR_API_KEY);
35
35
  if (!apiKey) {
36
36
  return new Response("User-agent: *\nDisallow: /", {
37
37
  status: 200,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/robots/index.ts"],"names":[],"mappings":";;;;AAmCA,SAAS,mBAAA,CAAoB,SAAiB,MAAA,EAAgC;AAC5E,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,IAAI,MAAA,CAAO,aAAA,EAAe,IAAA,EAAK,EAAG;AAChC,IAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc,IAAA,EAAM,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,IAAA,KAAA,CAAM,KAAK,UAAU,CAAA;AACrB,IAAA,KAAA,MAAW,CAAA,IAAK,MAAA,CAAO,QAAA,IAAY,EAAC,EAAG;AACrC,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,UAAA,EAAa,CAAC,CAAA,CAAE,CAAA;AAAA,IAC7B;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACtC,EAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,cAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,IAAI,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,GAAG,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA;AACjF,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAEnC,EAAA,OAAO,IAAI,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAG;AAAA,IACpC,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,2BAAA;AAAA,MAChB,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AACH;AAMO,SAAS,aAAa,MAAA,EAA0D;AACrF,EAAA,OAAO,SAAS,MAAA,GAAuC;AACrD,IAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,mBAAA,CAAoB,SAAS,MAAM,CAAA;AAAA,IAC5C;AACA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,KAAW,OAAO,YAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,KAAQ,OAAA,CAAQ,IAAI,aAAA,IAAiB,OAAA,CAAQ,GAAA,CAAI,eAAA,IAAmB,QAAQ,GAAA,CAAI,2BAAA,CAAA,CAAA;AAC3J,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAI,SAAS,4BAAA,EAA8B;AAAA,QAChD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,2BAAA;AAA4B,OACxD,CAAA;AAAA,IACH;AACA,IAAA,OAAO,aAAA,CAAc,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,KAAS;AACrE,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,IAAY,qBAAA;AAC9B,MAAA,OAAO,mBAAA,CAAoB,KAAK,MAAM,CAAA;AAAA,IACxC,CAAC,CAAA;AAAA,EACH,CAAA;AACF","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/robots - robots.txt Generator\n *\n * Generates robots.txt with Sitemap directive.\n * baseUrl can be omitted when apiKey is set (resolved from Portal project-info).\n *\n * @example\n * // app/robots.txt/route.ts (API key only)\n * import { createRobots } from '@sonordev/site-kit/robots'\n * export const GET = createRobots({ apiKey: process.env.SONOR_API_KEY })\n *\n * @example\n * // With explicit baseUrl\n * export const GET = createRobots({\n * baseUrl: process.env.NEXT_PUBLIC_SITE_URL || 'https://example.com',\n * disallow: ['/admin'],\n * })\n */\n\nimport { getSiteConfig } from '../site-config'\n\nexport interface RobotsConfig {\n /** Base URL of the site (optional when apiKey is set; then resolved from Portal) */\n baseUrl?: string\n /** Project API key; when set and baseUrl is not, baseUrl is resolved from Portal */\n apiKey?: string\n apiUrl?: string\n /** Path to sitemap (default: /sitemap.xml) */\n sitemapPath?: string\n /** Pre-built robots content from Portal (overrides default when provided) */\n managedRobots?: string | null\n /** Paths to disallow (e.g. ['/admin', '/api']) */\n disallow?: string[]\n}\n\nfunction buildRobotsResponse(baseUrl: string, config: RobotsConfig): Response {\n const lines: string[] = []\n\n if (config.managedRobots?.trim()) {\n lines.push(config.managedRobots.trim())\n } else {\n lines.push('User-agent: *')\n lines.push('Allow: /')\n for (const p of config.disallow ?? []) {\n lines.push(`Disallow: ${p}`)\n }\n }\n\n const base = baseUrl.replace(/\\/$/, '')\n const sitemapPath = config.sitemapPath ?? '/sitemap.xml'\n const sitemapUrl = `${base}${sitemapPath.startsWith('/') ? '' : '/'}${sitemapPath}`\n lines.push(`Sitemap: ${sitemapUrl}`)\n\n return new Response(lines.join('\\n'), {\n status: 200,\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Cache-Control': 'public, max-age=86400, s-maxage=86400',\n },\n })\n}\n\n/**\n * Create a robots.txt handler that returns a Response or Promise<Response>.\n * Use as GET handler for app/robots.txt/route.ts. When baseUrl is omitted, pass apiKey to resolve from Portal.\n */\nexport function createRobots(config: RobotsConfig): () => Response | Promise<Response> {\n return function robots(): Response | Promise<Response> {\n const baseUrl = config.baseUrl\n if (baseUrl) {\n return buildRobotsResponse(baseUrl, config)\n }\n const apiKey = config.apiKey ?? (typeof process !== 'undefined' && process.env && (process.env.SONOR_API_KEY || process.env.UPTRADE_API_KEY || process.env.NEXT_PUBLIC_UPTRADE_API_KEY))\n if (!apiKey) {\n return new Response('User-agent: *\\nDisallow: /', {\n status: 200,\n headers: { 'Content-Type': 'text/plain; charset=utf-8' },\n })\n }\n return getSiteConfig({ apiKey, apiUrl: config.apiUrl }).then((site) => {\n const url = site?.site_url ?? 'https://example.com'\n return buildRobotsResponse(url, config)\n })\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/robots/index.ts"],"names":[],"mappings":";;;;AAmCA,SAAS,mBAAA,CAAoB,SAAiB,MAAA,EAAgC;AAC5E,EAAA,MAAM,QAAkB,EAAC;AAEzB,EAAA,IAAI,MAAA,CAAO,aAAA,EAAe,IAAA,EAAK,EAAG;AAChC,IAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,aAAA,CAAc,IAAA,EAAM,CAAA;AAAA,EACxC,CAAA,MAAO;AACL,IAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,IAAA,KAAA,CAAM,KAAK,UAAU,CAAA;AACrB,IAAA,KAAA,MAAW,CAAA,IAAK,MAAA,CAAO,QAAA,IAAY,EAAC,EAAG;AACrC,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,UAAA,EAAa,CAAC,CAAA,CAAE,CAAA;AAAA,IAC7B;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACtC,EAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,cAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,CAAA,EAAG,IAAI,CAAA,EAAG,WAAA,CAAY,UAAA,CAAW,GAAG,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA;AACjF,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAEnC,EAAA,OAAO,IAAI,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,EAAG;AAAA,IACpC,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,2BAAA;AAAA,MAChB,eAAA,EAAiB;AAAA;AACnB,GACD,CAAA;AACH;AAMO,SAAS,aAAa,MAAA,EAA0D;AACrF,EAAA,OAAO,SAAS,MAAA,GAAuC;AACrD,IAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,mBAAA,CAAoB,SAAS,MAAM,CAAA;AAAA,IAC5C;AACA,IAAA,MAAM,MAAA,GAAS,OAAO,MAAA,KAAW,OAAO,YAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,GAAA,CAAI,aAAA,CAAA;AAC9F,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAI,SAAS,4BAAA,EAA8B;AAAA,QAChD,MAAA,EAAQ,GAAA;AAAA,QACR,OAAA,EAAS,EAAE,cAAA,EAAgB,2BAAA;AAA4B,OACxD,CAAA;AAAA,IACH;AACA,IAAA,OAAO,aAAA,CAAc,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,KAAS;AACrE,MAAA,MAAM,GAAA,GAAM,MAAM,QAAA,IAAY,qBAAA;AAC9B,MAAA,OAAO,mBAAA,CAAoB,KAAK,MAAM,CAAA;AAAA,IACxC,CAAC,CAAA;AAAA,EACH,CAAA;AACF","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/robots - robots.txt Generator\n *\n * Generates robots.txt with Sitemap directive.\n * baseUrl can be omitted when apiKey is set (resolved from Portal project-info).\n *\n * @example\n * // app/robots.txt/route.ts (API key only)\n * import { createRobots } from '@sonordev/site-kit/robots'\n * export const GET = createRobots({ apiKey: process.env.SONOR_API_KEY })\n *\n * @example\n * // With explicit baseUrl\n * export const GET = createRobots({\n * baseUrl: process.env.NEXT_PUBLIC_SITE_URL || 'https://example.com',\n * disallow: ['/admin'],\n * })\n */\n\nimport { getSiteConfig } from '../site-config'\n\nexport interface RobotsConfig {\n /** Base URL of the site (optional when apiKey is set; then resolved from Portal) */\n baseUrl?: string\n /** Project API key; when set and baseUrl is not, baseUrl is resolved from Portal */\n apiKey?: string\n apiUrl?: string\n /** Path to sitemap (default: /sitemap.xml) */\n sitemapPath?: string\n /** Pre-built robots content from Portal (overrides default when provided) */\n managedRobots?: string | null\n /** Paths to disallow (e.g. ['/admin', '/api']) */\n disallow?: string[]\n}\n\nfunction buildRobotsResponse(baseUrl: string, config: RobotsConfig): Response {\n const lines: string[] = []\n\n if (config.managedRobots?.trim()) {\n lines.push(config.managedRobots.trim())\n } else {\n lines.push('User-agent: *')\n lines.push('Allow: /')\n for (const p of config.disallow ?? []) {\n lines.push(`Disallow: ${p}`)\n }\n }\n\n const base = baseUrl.replace(/\\/$/, '')\n const sitemapPath = config.sitemapPath ?? '/sitemap.xml'\n const sitemapUrl = `${base}${sitemapPath.startsWith('/') ? '' : '/'}${sitemapPath}`\n lines.push(`Sitemap: ${sitemapUrl}`)\n\n return new Response(lines.join('\\n'), {\n status: 200,\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Cache-Control': 'public, max-age=86400, s-maxage=86400',\n },\n })\n}\n\n/**\n * Create a robots.txt handler that returns a Response or Promise<Response>.\n * Use as GET handler for app/robots.txt/route.ts. When baseUrl is omitted, pass apiKey to resolve from Portal.\n */\nexport function createRobots(config: RobotsConfig): () => Response | Promise<Response> {\n return function robots(): Response | Promise<Response> {\n const baseUrl = config.baseUrl\n if (baseUrl) {\n return buildRobotsResponse(baseUrl, config)\n }\n const apiKey = config.apiKey ?? (typeof process !== 'undefined' && process.env && process.env.SONOR_API_KEY)\n if (!apiKey) {\n return new Response('User-agent: *\\nDisallow: /', {\n status: 200,\n headers: { 'Content-Type': 'text/plain; charset=utf-8' },\n })\n }\n return getSiteConfig({ apiKey, apiUrl: config.apiUrl }).then((site) => {\n const url = site?.site_url ?? 'https://example.com'\n return buildRobotsResponse(url, config)\n })\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { m as GetRedirectOptions, R as RedirectResult, q as GetRobotsOptions, p as RobotsDirective, s as GetSitemapEntriesOptions, r as SitemapEntry } from './types-KZP_VWZp.js';
1
+ import { n as GetRedirectOptions, R as RedirectResult, r as GetRobotsOptions, q as RobotsDirective, t as GetSitemapEntriesOptions, s as SitemapEntry } from './types-CGkyylOa.mjs';
2
2
 
3
3
  /**
4
4
  * Get redirect for a path if one exists
@@ -12,7 +12,7 @@ import { m as GetRedirectOptions, R as RedirectResult, q as GetRobotsOptions, p
12
12
  *
13
13
  * export async function middleware(request) {
14
14
  * const redirect = await getRedirect({
15
- * projectId: process.env.UPTRADE_PROJECT_ID!,
15
+ * projectId: process.env.SONOR_PROJECT_ID!,
16
16
  * path: request.nextUrl.pathname
17
17
  * })
18
18
  *
@@ -29,7 +29,7 @@ declare function getRedirect(options: GetRedirectOptions): Promise<RedirectResul
29
29
  * @example
30
30
  * ```tsx
31
31
  * const robots = await getRobotsDirective({
32
- * projectId: process.env.UPTRADE_PROJECT_ID!,
32
+ * projectId: process.env.SONOR_PROJECT_ID!,
33
33
  * path: '/private-page'
34
34
  * })
35
35
  *
@@ -51,7 +51,7 @@ declare function getRobotsDirective(options: GetRobotsOptions): Promise<RobotsDi
51
51
  *
52
52
  * export default async function sitemap() {
53
53
  * return generateSitemap({
54
- * projectId: process.env.UPTRADE_PROJECT_ID!,
54
+ * projectId: process.env.SONOR_PROJECT_ID!,
55
55
  * baseUrl: 'https://example.com',
56
56
  * publishedOnly: true
57
57
  * })
@@ -1,4 +1,4 @@
1
- import { m as GetRedirectOptions, R as RedirectResult, q as GetRobotsOptions, p as RobotsDirective, s as GetSitemapEntriesOptions, r as SitemapEntry } from './types-KZP_VWZp.mjs';
1
+ import { n as GetRedirectOptions, R as RedirectResult, r as GetRobotsOptions, q as RobotsDirective, t as GetSitemapEntriesOptions, s as SitemapEntry } from './types-CGkyylOa.js';
2
2
 
3
3
  /**
4
4
  * Get redirect for a path if one exists
@@ -12,7 +12,7 @@ import { m as GetRedirectOptions, R as RedirectResult, q as GetRobotsOptions, p
12
12
  *
13
13
  * export async function middleware(request) {
14
14
  * const redirect = await getRedirect({
15
- * projectId: process.env.UPTRADE_PROJECT_ID!,
15
+ * projectId: process.env.SONOR_PROJECT_ID!,
16
16
  * path: request.nextUrl.pathname
17
17
  * })
18
18
  *
@@ -29,7 +29,7 @@ declare function getRedirect(options: GetRedirectOptions): Promise<RedirectResul
29
29
  * @example
30
30
  * ```tsx
31
31
  * const robots = await getRobotsDirective({
32
- * projectId: process.env.UPTRADE_PROJECT_ID!,
32
+ * projectId: process.env.SONOR_PROJECT_ID!,
33
33
  * path: '/private-page'
34
34
  * })
35
35
  *
@@ -51,7 +51,7 @@ declare function getRobotsDirective(options: GetRobotsOptions): Promise<RobotsDi
51
51
  *
52
52
  * export default async function sitemap() {
53
53
  * return generateSitemap({
54
- * projectId: process.env.UPTRADE_PROJECT_ID!,
54
+ * projectId: process.env.SONOR_PROJECT_ID!,
55
55
  * baseUrl: 'https://example.com',
56
56
  * publishedOnly: true
57
57
  * })
@@ -1,7 +1,7 @@
1
- import { G as GetManagedMetadataOptions, M as ManagedMetadataResult, k as GetABVariantOptions, j as ABTestResult, b as ManagedSchemaProps, d as ManagedFAQProps, f as ManagedInternalLinksProps, h as ManagedContentProps, g as ManagedContentBlock, o as ManagedScriptsProps } from '../types-KZP_VWZp.mjs';
2
- export { A as ABTest, F as FAQItem, m as GetRedirectOptions, q as GetRobotsOptions, s as GetSitemapEntriesOptions, c as ManagedFAQData, e as ManagedLink, l as ManagedRedirect, n as ManagedScript, R as RedirectResult, p as RobotsDirective, S as SEOPageData, a as SchemaMarkup, r as SitemapEntry, U as UptradeSEOConfig } from '../types-KZP_VWZp.mjs';
1
+ import { G as GetManagedMetadataOptions, M as ManagedMetadataResult, l as GetABVariantOptions, k as ABTestResult, c as ManagedSchemaProps, e as ManagedFAQProps, g as ManagedInternalLinksProps, i as ManagedContentProps, h as ManagedContentBlock, p as ManagedScriptsProps } from '../types-CGkyylOa.mjs';
2
+ export { A as ABTest, F as FAQItem, n as GetRedirectOptions, r as GetRobotsOptions, t as GetSitemapEntriesOptions, d as ManagedFAQData, f as ManagedLink, m as ManagedRedirect, o as ManagedScript, R as RedirectResult, q as RobotsDirective, a as SEOPageData, b as SchemaMarkup, s as SitemapEntry, S as SonorSEOConfig } from '../types-CGkyylOa.mjs';
3
3
  import { ResolvingMetadata, Metadata } from 'next';
4
- export { g as generateSitemap, a as getRedirect, b as getRobotsDirective, i as isIndexable } from '../routing-B5XS-6_W.mjs';
4
+ export { g as generateSitemap, a as getRedirect, b as getRobotsDirective, i as isIndexable } from '../routing-DQ_Et-OP.mjs';
5
5
  import * as React from 'react';
6
6
  export { SitemapSync } from './client.mjs';
7
7
 
@@ -205,7 +205,6 @@ declare const getVisibilitySummary: () => Promise<{
205
205
  * ```tsx
206
206
  * export async function generateMetadata({ params }) {
207
207
  * return getManagedMetadata({
208
- * projectId: process.env.UPTRADE_PROJECT_ID!,
209
208
  * path: `/services/${params.slug}`,
210
209
  * fallback: {
211
210
  * title: 'Our Services',
@@ -222,7 +221,6 @@ declare function getManagedMetadata(options: GetManagedMetadataOptions): Promise
222
221
  * @example
223
222
  * ```tsx
224
223
  * const variant = await getABVariant({
225
- * projectId: process.env.UPTRADE_PROJECT_ID!,
226
224
  * path: '/pricing',
227
225
  * field: 'title',
228
226
  * sessionId: cookies().get('session_id')?.value
@@ -1,7 +1,7 @@
1
- import { G as GetManagedMetadataOptions, M as ManagedMetadataResult, k as GetABVariantOptions, j as ABTestResult, b as ManagedSchemaProps, d as ManagedFAQProps, f as ManagedInternalLinksProps, h as ManagedContentProps, g as ManagedContentBlock, o as ManagedScriptsProps } from '../types-KZP_VWZp.js';
2
- export { A as ABTest, F as FAQItem, m as GetRedirectOptions, q as GetRobotsOptions, s as GetSitemapEntriesOptions, c as ManagedFAQData, e as ManagedLink, l as ManagedRedirect, n as ManagedScript, R as RedirectResult, p as RobotsDirective, S as SEOPageData, a as SchemaMarkup, r as SitemapEntry, U as UptradeSEOConfig } from '../types-KZP_VWZp.js';
1
+ import { G as GetManagedMetadataOptions, M as ManagedMetadataResult, l as GetABVariantOptions, k as ABTestResult, c as ManagedSchemaProps, e as ManagedFAQProps, g as ManagedInternalLinksProps, i as ManagedContentProps, h as ManagedContentBlock, p as ManagedScriptsProps } from '../types-CGkyylOa.js';
2
+ export { A as ABTest, F as FAQItem, n as GetRedirectOptions, r as GetRobotsOptions, t as GetSitemapEntriesOptions, d as ManagedFAQData, f as ManagedLink, m as ManagedRedirect, o as ManagedScript, R as RedirectResult, q as RobotsDirective, a as SEOPageData, b as SchemaMarkup, s as SitemapEntry, S as SonorSEOConfig } from '../types-CGkyylOa.js';
3
3
  import { ResolvingMetadata, Metadata } from 'next';
4
- export { g as generateSitemap, a as getRedirect, b as getRobotsDirective, i as isIndexable } from '../routing-DZYzyDHw.js';
4
+ export { g as generateSitemap, a as getRedirect, b as getRobotsDirective, i as isIndexable } from '../routing-IYiJNIIX.js';
5
5
  import * as React from 'react';
6
6
  export { SitemapSync } from './client.js';
7
7
 
@@ -205,7 +205,6 @@ declare const getVisibilitySummary: () => Promise<{
205
205
  * ```tsx
206
206
  * export async function generateMetadata({ params }) {
207
207
  * return getManagedMetadata({
208
- * projectId: process.env.UPTRADE_PROJECT_ID!,
209
208
  * path: `/services/${params.slug}`,
210
209
  * fallback: {
211
210
  * title: 'Our Services',
@@ -222,7 +221,6 @@ declare function getManagedMetadata(options: GetManagedMetadataOptions): Promise
222
221
  * @example
223
222
  * ```tsx
224
223
  * const variant = await getABVariant({
225
- * projectId: process.env.UPTRADE_PROJECT_ID!,
226
224
  * path: '/pricing',
227
225
  * field: 'title',
228
226
  * sessionId: cookies().get('session_id')?.value