@sonordev/site-kit 1.2.7

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 (300) hide show
  1. package/README.md +376 -0
  2. package/dist/SetupWizard-Cki06kB0.d.mts +12 -0
  3. package/dist/SetupWizard-Cki06kB0.d.ts +12 -0
  4. package/dist/analytics/index.d.mts +93 -0
  5. package/dist/analytics/index.d.ts +93 -0
  6. package/dist/analytics/index.js +89 -0
  7. package/dist/analytics/index.js.map +1 -0
  8. package/dist/analytics/index.mjs +71 -0
  9. package/dist/analytics/index.mjs.map +1 -0
  10. package/dist/api-CWtoFJCO.d.mts +137 -0
  11. package/dist/api-CWtoFJCO.d.ts +137 -0
  12. package/dist/blog/index.d.mts +305 -0
  13. package/dist/blog/index.d.ts +305 -0
  14. package/dist/blog/index.js +1578 -0
  15. package/dist/blog/index.js.map +1 -0
  16. package/dist/blog/index.mjs +1562 -0
  17. package/dist/blog/index.mjs.map +1 -0
  18. package/dist/blog/server.d.mts +229 -0
  19. package/dist/blog/server.d.ts +229 -0
  20. package/dist/blog/server.js +692 -0
  21. package/dist/blog/server.js.map +1 -0
  22. package/dist/blog/server.mjs +666 -0
  23. package/dist/blog/server.mjs.map +1 -0
  24. package/dist/chunk-24277A3Q.mjs +968 -0
  25. package/dist/chunk-24277A3Q.mjs.map +1 -0
  26. package/dist/chunk-373TK6TZ.js +321 -0
  27. package/dist/chunk-373TK6TZ.js.map +1 -0
  28. package/dist/chunk-3MYZS6PD.js +30 -0
  29. package/dist/chunk-3MYZS6PD.js.map +1 -0
  30. package/dist/chunk-43GBM4SX.js +283 -0
  31. package/dist/chunk-43GBM4SX.js.map +1 -0
  32. package/dist/chunk-4XPGGLVP.mjs +53 -0
  33. package/dist/chunk-4XPGGLVP.mjs.map +1 -0
  34. package/dist/chunk-622GAQP5.js +2008 -0
  35. package/dist/chunk-622GAQP5.js.map +1 -0
  36. package/dist/chunk-6BIPAKL4.mjs +28 -0
  37. package/dist/chunk-6BIPAKL4.mjs.map +1 -0
  38. package/dist/chunk-6ZCISNAB.mjs +343 -0
  39. package/dist/chunk-6ZCISNAB.mjs.map +1 -0
  40. package/dist/chunk-72MQFHYJ.js +1429 -0
  41. package/dist/chunk-72MQFHYJ.js.map +1 -0
  42. package/dist/chunk-7557OTHW.js +62 -0
  43. package/dist/chunk-7557OTHW.js.map +1 -0
  44. package/dist/chunk-7FUV73JZ.js +981 -0
  45. package/dist/chunk-7FUV73JZ.js.map +1 -0
  46. package/dist/chunk-7RF6PVHA.mjs +324 -0
  47. package/dist/chunk-7RF6PVHA.mjs.map +1 -0
  48. package/dist/chunk-7RYCHO6D.mjs +134 -0
  49. package/dist/chunk-7RYCHO6D.mjs.map +1 -0
  50. package/dist/chunk-7UKPRW25.mjs +1999 -0
  51. package/dist/chunk-7UKPRW25.mjs.map +1 -0
  52. package/dist/chunk-7URAOG2M.js +14864 -0
  53. package/dist/chunk-7URAOG2M.js.map +1 -0
  54. package/dist/chunk-AFAO3TGS.mjs +810 -0
  55. package/dist/chunk-AFAO3TGS.mjs.map +1 -0
  56. package/dist/chunk-BYLIU6XG.js +343 -0
  57. package/dist/chunk-BYLIU6XG.js.map +1 -0
  58. package/dist/chunk-D63MUKZ6.mjs +4423 -0
  59. package/dist/chunk-D63MUKZ6.mjs.map +1 -0
  60. package/dist/chunk-DDKW2FNA.js +390 -0
  61. package/dist/chunk-DDKW2FNA.js.map +1 -0
  62. package/dist/chunk-DQYMKR27.mjs +341 -0
  63. package/dist/chunk-DQYMKR27.mjs.map +1 -0
  64. package/dist/chunk-DW5UJKHH.js +221 -0
  65. package/dist/chunk-DW5UJKHH.js.map +1 -0
  66. package/dist/chunk-EEZCR6E6.js +50 -0
  67. package/dist/chunk-EEZCR6E6.js.map +1 -0
  68. package/dist/chunk-GCJXQ4AG.mjs +59 -0
  69. package/dist/chunk-GCJXQ4AG.mjs.map +1 -0
  70. package/dist/chunk-JGNQK2G6.mjs +14845 -0
  71. package/dist/chunk-JGNQK2G6.mjs.map +1 -0
  72. package/dist/chunk-JTLOJLWQ.mjs +563 -0
  73. package/dist/chunk-JTLOJLWQ.mjs.map +1 -0
  74. package/dist/chunk-K23A4G76.mjs +202 -0
  75. package/dist/chunk-K23A4G76.mjs.map +1 -0
  76. package/dist/chunk-KKU3K7RG.js +336 -0
  77. package/dist/chunk-KKU3K7RG.js.map +1 -0
  78. package/dist/chunk-KUGMH4ZF.js +571 -0
  79. package/dist/chunk-KUGMH4ZF.js.map +1 -0
  80. package/dist/chunk-LBVWVP72.js +110 -0
  81. package/dist/chunk-LBVWVP72.js.map +1 -0
  82. package/dist/chunk-LIVWLY2P.js +138 -0
  83. package/dist/chunk-LIVWLY2P.js.map +1 -0
  84. package/dist/chunk-M2T6R7BA.mjs +1003 -0
  85. package/dist/chunk-M2T6R7BA.mjs.map +1 -0
  86. package/dist/chunk-MV3QN7PW.mjs +47 -0
  87. package/dist/chunk-MV3QN7PW.mjs.map +1 -0
  88. package/dist/chunk-OB7E654K.js +72 -0
  89. package/dist/chunk-OB7E654K.js.map +1 -0
  90. package/dist/chunk-OIIKTGRL.mjs +380 -0
  91. package/dist/chunk-OIIKTGRL.mjs.map +1 -0
  92. package/dist/chunk-P3UWIUJS.mjs +1427 -0
  93. package/dist/chunk-P3UWIUJS.mjs.map +1 -0
  94. package/dist/chunk-PKN27UMH.mjs +136 -0
  95. package/dist/chunk-PKN27UMH.mjs.map +1 -0
  96. package/dist/chunk-QXV4667R.mjs +105 -0
  97. package/dist/chunk-QXV4667R.mjs.map +1 -0
  98. package/dist/chunk-S7FRYNSU.mjs +315 -0
  99. package/dist/chunk-S7FRYNSU.mjs.map +1 -0
  100. package/dist/chunk-TFLQX7K7.mjs +68 -0
  101. package/dist/chunk-TFLQX7K7.mjs.map +1 -0
  102. package/dist/chunk-UWE5PCYJ.mjs +279 -0
  103. package/dist/chunk-UWE5PCYJ.mjs.map +1 -0
  104. package/dist/chunk-UYFDNX2F.js +4469 -0
  105. package/dist/chunk-UYFDNX2F.js.map +1 -0
  106. package/dist/chunk-W4PALSGM.js +350 -0
  107. package/dist/chunk-W4PALSGM.js.map +1 -0
  108. package/dist/chunk-WECQ6KOB.js +1008 -0
  109. package/dist/chunk-WECQ6KOB.js.map +1 -0
  110. package/dist/chunk-XQQWI6WB.js +814 -0
  111. package/dist/chunk-XQQWI6WB.js.map +1 -0
  112. package/dist/chunk-XZJOZJB6.js +140 -0
  113. package/dist/chunk-XZJOZJB6.js.map +1 -0
  114. package/dist/chunk-ZSMWDLMK.js +63 -0
  115. package/dist/chunk-ZSMWDLMK.js.map +1 -0
  116. package/dist/cli/index.js +37243 -0
  117. package/dist/cli/index.js.map +1 -0
  118. package/dist/cli/index.mjs +37209 -0
  119. package/dist/cli/index.mjs.map +1 -0
  120. package/dist/commerce/index.d.mts +170 -0
  121. package/dist/commerce/index.d.ts +170 -0
  122. package/dist/commerce/index.js +174 -0
  123. package/dist/commerce/index.js.map +1 -0
  124. package/dist/commerce/index.mjs +5 -0
  125. package/dist/commerce/index.mjs.map +1 -0
  126. package/dist/commerce/server.d.mts +107 -0
  127. package/dist/commerce/server.d.ts +107 -0
  128. package/dist/commerce/server.js +187 -0
  129. package/dist/commerce/server.js.map +1 -0
  130. package/dist/commerce/server.mjs +177 -0
  131. package/dist/commerce/server.mjs.map +1 -0
  132. package/dist/config/index.d.mts +43 -0
  133. package/dist/config/index.d.ts +43 -0
  134. package/dist/config/index.js +66 -0
  135. package/dist/config/index.js.map +1 -0
  136. package/dist/config/index.mjs +64 -0
  137. package/dist/config/index.mjs.map +1 -0
  138. package/dist/engage/index.d.mts +33 -0
  139. package/dist/engage/index.d.ts +33 -0
  140. package/dist/engage/index.js +22 -0
  141. package/dist/engage/index.js.map +1 -0
  142. package/dist/engage/index.mjs +5 -0
  143. package/dist/engage/index.mjs.map +1 -0
  144. package/dist/forms/index.d.mts +437 -0
  145. package/dist/forms/index.d.ts +437 -0
  146. package/dist/forms/index.js +1168 -0
  147. package/dist/forms/index.js.map +1 -0
  148. package/dist/forms/index.mjs +1142 -0
  149. package/dist/forms/index.mjs.map +1 -0
  150. package/dist/generators-2XKQMPKH.mjs +4 -0
  151. package/dist/generators-2XKQMPKH.mjs.map +1 -0
  152. package/dist/generators-DTMO36DV.js +33 -0
  153. package/dist/generators-DTMO36DV.js.map +1 -0
  154. package/dist/images/index.d.mts +4 -0
  155. package/dist/images/index.d.ts +4 -0
  156. package/dist/images/index.js +46 -0
  157. package/dist/images/index.js.map +1 -0
  158. package/dist/images/index.mjs +5 -0
  159. package/dist/images/index.mjs.map +1 -0
  160. package/dist/images/server.d.mts +69 -0
  161. package/dist/images/server.d.ts +69 -0
  162. package/dist/images/server.js +21 -0
  163. package/dist/images/server.js.map +1 -0
  164. package/dist/images/server.mjs +4 -0
  165. package/dist/images/server.mjs.map +1 -0
  166. package/dist/index.d.mts +846 -0
  167. package/dist/index.d.ts +846 -0
  168. package/dist/index.js +2623 -0
  169. package/dist/index.js.map +1 -0
  170. package/dist/index.mjs +2416 -0
  171. package/dist/index.mjs.map +1 -0
  172. package/dist/layout/index.d.mts +53 -0
  173. package/dist/layout/index.d.ts +53 -0
  174. package/dist/layout/index.js +187 -0
  175. package/dist/layout/index.js.map +1 -0
  176. package/dist/layout/index.mjs +185 -0
  177. package/dist/layout/index.mjs.map +1 -0
  178. package/dist/llms/index.d.mts +448 -0
  179. package/dist/llms/index.d.ts +448 -0
  180. package/dist/llms/index.js +581 -0
  181. package/dist/llms/index.js.map +1 -0
  182. package/dist/llms/index.mjs +529 -0
  183. package/dist/llms/index.mjs.map +1 -0
  184. package/dist/manifest/index.d.mts +62 -0
  185. package/dist/manifest/index.d.ts +62 -0
  186. package/dist/manifest/index.js +85 -0
  187. package/dist/manifest/index.js.map +1 -0
  188. package/dist/manifest/index.mjs +83 -0
  189. package/dist/manifest/index.mjs.map +1 -0
  190. package/dist/middleware/index.d.mts +63 -0
  191. package/dist/middleware/index.d.ts +63 -0
  192. package/dist/middleware/index.js +54 -0
  193. package/dist/middleware/index.js.map +1 -0
  194. package/dist/middleware/index.mjs +51 -0
  195. package/dist/middleware/index.mjs.map +1 -0
  196. package/dist/migrator-2MQHOFDQ.mjs +4 -0
  197. package/dist/migrator-2MQHOFDQ.mjs.map +1 -0
  198. package/dist/migrator-THJCF6MZ.js +37 -0
  199. package/dist/migrator-THJCF6MZ.js.map +1 -0
  200. package/dist/redirects/index.d.mts +78 -0
  201. package/dist/redirects/index.d.ts +78 -0
  202. package/dist/redirects/index.js +26 -0
  203. package/dist/redirects/index.js.map +1 -0
  204. package/dist/redirects/index.mjs +5 -0
  205. package/dist/redirects/index.mjs.map +1 -0
  206. package/dist/reputation/index.d.mts +57 -0
  207. package/dist/reputation/index.d.ts +57 -0
  208. package/dist/reputation/index.js +21 -0
  209. package/dist/reputation/index.js.map +1 -0
  210. package/dist/reputation/index.mjs +4 -0
  211. package/dist/reputation/index.mjs.map +1 -0
  212. package/dist/robots/index.d.mts +38 -0
  213. package/dist/robots/index.d.ts +38 -0
  214. package/dist/robots/index.js +52 -0
  215. package/dist/robots/index.js.map +1 -0
  216. package/dist/robots/index.mjs +50 -0
  217. package/dist/robots/index.mjs.map +1 -0
  218. package/dist/routing-B5XS-6_W.d.mts +118 -0
  219. package/dist/routing-DZYzyDHw.d.ts +118 -0
  220. package/dist/scanner-GAF5PO5F.js +53 -0
  221. package/dist/scanner-GAF5PO5F.js.map +1 -0
  222. package/dist/scanner-LKJKW7IT.mjs +4 -0
  223. package/dist/scanner-LKJKW7IT.mjs.map +1 -0
  224. package/dist/securityHeaders-nwZ6nP4g.d.mts +24 -0
  225. package/dist/securityHeaders-nwZ6nP4g.d.ts +24 -0
  226. package/dist/seo/index.d.mts +600 -0
  227. package/dist/seo/index.d.ts +600 -0
  228. package/dist/seo/index.js +883 -0
  229. package/dist/seo/index.js.map +1 -0
  230. package/dist/seo/index.mjs +773 -0
  231. package/dist/seo/index.mjs.map +1 -0
  232. package/dist/seo/register-sitemap-cli.js +151 -0
  233. package/dist/seo/register-sitemap-cli.js.map +1 -0
  234. package/dist/seo/register-sitemap-cli.mjs +144 -0
  235. package/dist/seo/register-sitemap-cli.mjs.map +1 -0
  236. package/dist/seo/server.d.mts +107 -0
  237. package/dist/seo/server.d.ts +107 -0
  238. package/dist/seo/server.js +207 -0
  239. package/dist/seo/server.js.map +1 -0
  240. package/dist/seo/server.mjs +186 -0
  241. package/dist/seo/server.mjs.map +1 -0
  242. package/dist/server-api-EWXKOQZA.mjs +4 -0
  243. package/dist/server-api-EWXKOQZA.mjs.map +1 -0
  244. package/dist/server-api-GJPNRYUP.js +81 -0
  245. package/dist/server-api-GJPNRYUP.js.map +1 -0
  246. package/dist/setup/client.d.mts +60 -0
  247. package/dist/setup/client.d.ts +60 -0
  248. package/dist/setup/client.js +31 -0
  249. package/dist/setup/client.js.map +1 -0
  250. package/dist/setup/client.mjs +6 -0
  251. package/dist/setup/client.mjs.map +1 -0
  252. package/dist/setup/index.d.mts +5 -0
  253. package/dist/setup/index.d.ts +5 -0
  254. package/dist/setup/index.js +35 -0
  255. package/dist/setup/index.js.map +1 -0
  256. package/dist/setup/index.mjs +6 -0
  257. package/dist/setup/index.mjs.map +1 -0
  258. package/dist/setup/server.d.mts +14 -0
  259. package/dist/setup/server.d.ts +14 -0
  260. package/dist/setup/server.js +13 -0
  261. package/dist/setup/server.js.map +1 -0
  262. package/dist/setup/server.mjs +4 -0
  263. package/dist/setup/server.mjs.map +1 -0
  264. package/dist/site-config/index.d.mts +24 -0
  265. package/dist/site-config/index.d.ts +24 -0
  266. package/dist/site-config/index.js +17 -0
  267. package/dist/site-config/index.js.map +1 -0
  268. package/dist/site-config/index.mjs +4 -0
  269. package/dist/site-config/index.mjs.map +1 -0
  270. package/dist/sitemap/index.d.mts +96 -0
  271. package/dist/sitemap/index.d.ts +96 -0
  272. package/dist/sitemap/index.js +288 -0
  273. package/dist/sitemap/index.js.map +1 -0
  274. package/dist/sitemap/index.mjs +285 -0
  275. package/dist/sitemap/index.mjs.map +1 -0
  276. package/dist/socket-loader-J26QHHOB.js +16 -0
  277. package/dist/socket-loader-J26QHHOB.js.map +1 -0
  278. package/dist/socket-loader-R7S2YJ2J.mjs +14 -0
  279. package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
  280. package/dist/types-0dmq3k20.d.mts +168 -0
  281. package/dist/types-0dmq3k20.d.ts +168 -0
  282. package/dist/types-Blb2QNkV.d.mts +263 -0
  283. package/dist/types-Blb2QNkV.d.ts +263 -0
  284. package/dist/types-BnCwwUX3.d.mts +250 -0
  285. package/dist/types-BnCwwUX3.d.ts +250 -0
  286. package/dist/types-CGlnp43R.d.mts +312 -0
  287. package/dist/types-CGlnp43R.d.ts +312 -0
  288. package/dist/types-D08004rU.d.mts +179 -0
  289. package/dist/types-D08004rU.d.ts +179 -0
  290. package/dist/types-DNSYU7qI.d.mts +127 -0
  291. package/dist/types-DNSYU7qI.d.ts +127 -0
  292. package/dist/types-KZP_VWZp.d.mts +266 -0
  293. package/dist/types-KZP_VWZp.d.ts +266 -0
  294. package/dist/useEventModal-BVTx69XE.d.mts +274 -0
  295. package/dist/useEventModal-Dx1dItTJ.d.ts +274 -0
  296. package/dist/web-vitals-444RLW3B.js +252 -0
  297. package/dist/web-vitals-444RLW3B.js.map +1 -0
  298. package/dist/web-vitals-KPICZIEF.mjs +241 -0
  299. package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
  300. package/package.json +192 -0
@@ -0,0 +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,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,KAAQ,OAAA,CAAQ,GAAA,CAAI,2BAAA,IAA+B,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAA,CAAA;AAC1I,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.NEXT_PUBLIC_UPTRADE_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.NEXT_PUBLIC_UPTRADE_API_KEY || process.env.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"]}
@@ -0,0 +1,118 @@
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';
2
+
3
+ /**
4
+ * Get redirect for a path if one exists
5
+ *
6
+ * Use in Next.js middleware to handle managed redirects
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * // middleware.ts
11
+ * import { getRedirect } from '@sonordev/seo'
12
+ *
13
+ * export async function middleware(request) {
14
+ * const redirect = await getRedirect({
15
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
16
+ * path: request.nextUrl.pathname
17
+ * })
18
+ *
19
+ * if (redirect) {
20
+ * return NextResponse.redirect(redirect.destination, redirect.statusCode)
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ declare function getRedirect(options: GetRedirectOptions): Promise<RedirectResult | null>;
26
+ /**
27
+ * Get robots directive for a page
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * const robots = await getRobotsDirective({
32
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
33
+ * path: '/private-page'
34
+ * })
35
+ *
36
+ * if (!robots.index) {
37
+ * // Page should not be indexed
38
+ * }
39
+ * ```
40
+ */
41
+ declare function getRobotsDirective(options: GetRobotsOptions): Promise<RobotsDirective>;
42
+ /**
43
+ * Get sitemap entries for a project
44
+ *
45
+ * Use in sitemap.ts to generate dynamic sitemap
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * // app/sitemap.ts
50
+ * import { generateSitemap } from '@sonordev/seo'
51
+ *
52
+ * export default async function sitemap() {
53
+ * return generateSitemap({
54
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
55
+ * baseUrl: 'https://example.com',
56
+ * publishedOnly: true
57
+ * })
58
+ * }
59
+ * ```
60
+ */
61
+ declare function generateSitemap(options: GetSitemapEntriesOptions): Promise<SitemapEntry[]>;
62
+ /**
63
+ * Register local sitemap entries with Sonor
64
+ *
65
+ * Call this at build time to sync your local routes to seo_pages.
66
+ * This ensures analytics only tracks real pages.
67
+ *
68
+ * After registration, Signal AI will generate optimized meta titles
69
+ * and descriptions for pages that don't have managed meta yet.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * // scripts/register-sitemap.ts
74
+ * import { registerLocalSitemap } from '@sonordev/seo'
75
+ *
76
+ * // Option 1: Provide entries directly
77
+ * await registerLocalSitemap({
78
+ * entries: [
79
+ * { path: '/', title: 'Home', priority: 1.0 },
80
+ * { path: '/about', title: 'About Us', priority: 0.8 },
81
+ * ]
82
+ * })
83
+ *
84
+ * // Option 2: Auto-discover from Next.js app directory
85
+ * await registerLocalSitemap({ autoDiscover: true })
86
+ *
87
+ * // Option 3: Skip Signal AI meta optimization
88
+ * await registerLocalSitemap({ autoDiscover: true, optimize_meta: false })
89
+ * ```
90
+ */
91
+ declare function registerLocalSitemap(options: {
92
+ entries?: Array<{
93
+ path: string;
94
+ title?: string;
95
+ priority?: number;
96
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
97
+ }>;
98
+ autoDiscover?: boolean;
99
+ /** Trigger Signal AI to generate optimized meta titles/descriptions (default: true) */
100
+ optimize_meta?: boolean;
101
+ }): Promise<{
102
+ success: boolean;
103
+ created: number;
104
+ updated: number;
105
+ removed?: number;
106
+ meta_optimization?: {
107
+ triggered: boolean;
108
+ pages_queued: number;
109
+ } | null;
110
+ }>;
111
+ /**
112
+ * Check if a path should be indexed
113
+ *
114
+ * Quick helper to check indexability without full directive parsing
115
+ */
116
+ declare function isIndexable(projectId: string, path: string): Promise<boolean>;
117
+
118
+ export { getRedirect as a, getRobotsDirective as b, generateSitemap as g, isIndexable as i, registerLocalSitemap as r };
@@ -0,0 +1,118 @@
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';
2
+
3
+ /**
4
+ * Get redirect for a path if one exists
5
+ *
6
+ * Use in Next.js middleware to handle managed redirects
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * // middleware.ts
11
+ * import { getRedirect } from '@sonordev/seo'
12
+ *
13
+ * export async function middleware(request) {
14
+ * const redirect = await getRedirect({
15
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
16
+ * path: request.nextUrl.pathname
17
+ * })
18
+ *
19
+ * if (redirect) {
20
+ * return NextResponse.redirect(redirect.destination, redirect.statusCode)
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ declare function getRedirect(options: GetRedirectOptions): Promise<RedirectResult | null>;
26
+ /**
27
+ * Get robots directive for a page
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * const robots = await getRobotsDirective({
32
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
33
+ * path: '/private-page'
34
+ * })
35
+ *
36
+ * if (!robots.index) {
37
+ * // Page should not be indexed
38
+ * }
39
+ * ```
40
+ */
41
+ declare function getRobotsDirective(options: GetRobotsOptions): Promise<RobotsDirective>;
42
+ /**
43
+ * Get sitemap entries for a project
44
+ *
45
+ * Use in sitemap.ts to generate dynamic sitemap
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * // app/sitemap.ts
50
+ * import { generateSitemap } from '@sonordev/seo'
51
+ *
52
+ * export default async function sitemap() {
53
+ * return generateSitemap({
54
+ * projectId: process.env.UPTRADE_PROJECT_ID!,
55
+ * baseUrl: 'https://example.com',
56
+ * publishedOnly: true
57
+ * })
58
+ * }
59
+ * ```
60
+ */
61
+ declare function generateSitemap(options: GetSitemapEntriesOptions): Promise<SitemapEntry[]>;
62
+ /**
63
+ * Register local sitemap entries with Sonor
64
+ *
65
+ * Call this at build time to sync your local routes to seo_pages.
66
+ * This ensures analytics only tracks real pages.
67
+ *
68
+ * After registration, Signal AI will generate optimized meta titles
69
+ * and descriptions for pages that don't have managed meta yet.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * // scripts/register-sitemap.ts
74
+ * import { registerLocalSitemap } from '@sonordev/seo'
75
+ *
76
+ * // Option 1: Provide entries directly
77
+ * await registerLocalSitemap({
78
+ * entries: [
79
+ * { path: '/', title: 'Home', priority: 1.0 },
80
+ * { path: '/about', title: 'About Us', priority: 0.8 },
81
+ * ]
82
+ * })
83
+ *
84
+ * // Option 2: Auto-discover from Next.js app directory
85
+ * await registerLocalSitemap({ autoDiscover: true })
86
+ *
87
+ * // Option 3: Skip Signal AI meta optimization
88
+ * await registerLocalSitemap({ autoDiscover: true, optimize_meta: false })
89
+ * ```
90
+ */
91
+ declare function registerLocalSitemap(options: {
92
+ entries?: Array<{
93
+ path: string;
94
+ title?: string;
95
+ priority?: number;
96
+ changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
97
+ }>;
98
+ autoDiscover?: boolean;
99
+ /** Trigger Signal AI to generate optimized meta titles/descriptions (default: true) */
100
+ optimize_meta?: boolean;
101
+ }): Promise<{
102
+ success: boolean;
103
+ created: number;
104
+ updated: number;
105
+ removed?: number;
106
+ meta_optimization?: {
107
+ triggered: boolean;
108
+ pages_queued: number;
109
+ } | null;
110
+ }>;
111
+ /**
112
+ * Check if a path should be indexed
113
+ *
114
+ * Quick helper to check indexability without full directive parsing
115
+ */
116
+ declare function isIndexable(projectId: string, path: string): Promise<boolean>;
117
+
118
+ export { getRedirect as a, getRobotsDirective as b, generateSitemap as g, isIndexable as i, registerLocalSitemap as r };
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var chunk7URAOG2M_js = require('./chunk-7URAOG2M.js');
4
+ require('./chunk-ZSMWDLMK.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "scanCodebase", {
9
+ enumerable: true,
10
+ get: function () { return chunk7URAOG2M_js.scanCodebase; }
11
+ });
12
+ Object.defineProperty(exports, "scanForAnalytics", {
13
+ enumerable: true,
14
+ get: function () { return chunk7URAOG2M_js.scanForAnalytics; }
15
+ });
16
+ Object.defineProperty(exports, "scanForFAQs", {
17
+ enumerable: true,
18
+ get: function () { return chunk7URAOG2M_js.scanForFAQs; }
19
+ });
20
+ Object.defineProperty(exports, "scanForForms", {
21
+ enumerable: true,
22
+ get: function () { return chunk7URAOG2M_js.scanForForms; }
23
+ });
24
+ Object.defineProperty(exports, "scanForImages", {
25
+ enumerable: true,
26
+ get: function () { return chunk7URAOG2M_js.scanForImages; }
27
+ });
28
+ Object.defineProperty(exports, "scanForManagedFAQPaths", {
29
+ enumerable: true,
30
+ get: function () { return chunk7URAOG2M_js.scanForManagedFAQPaths; }
31
+ });
32
+ Object.defineProperty(exports, "scanForMetadata", {
33
+ enumerable: true,
34
+ get: function () { return chunk7URAOG2M_js.scanForMetadata; }
35
+ });
36
+ Object.defineProperty(exports, "scanForSchemas", {
37
+ enumerable: true,
38
+ get: function () { return chunk7URAOG2M_js.scanForSchemas; }
39
+ });
40
+ Object.defineProperty(exports, "scanForSitemapFiles", {
41
+ enumerable: true,
42
+ get: function () { return chunk7URAOG2M_js.scanForSitemapFiles; }
43
+ });
44
+ Object.defineProperty(exports, "scanForSitemaps", {
45
+ enumerable: true,
46
+ get: function () { return chunk7URAOG2M_js.scanForSitemaps; }
47
+ });
48
+ Object.defineProperty(exports, "scanForWidgets", {
49
+ enumerable: true,
50
+ get: function () { return chunk7URAOG2M_js.scanForWidgets; }
51
+ });
52
+ //# sourceMappingURL=scanner-GAF5PO5F.js.map
53
+ //# sourceMappingURL=scanner-GAF5PO5F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"scanner-GAF5PO5F.js"}
@@ -0,0 +1,4 @@
1
+ export { scanCodebase, scanForAnalytics, scanForFAQs, scanForForms, scanForImages, scanForManagedFAQPaths, scanForMetadata, scanForSchemas, scanForSitemapFiles, scanForSitemaps, scanForWidgets } from './chunk-JGNQK2G6.mjs';
2
+ import './chunk-4XPGGLVP.mjs';
3
+ //# sourceMappingURL=scanner-LKJKW7IT.mjs.map
4
+ //# sourceMappingURL=scanner-LKJKW7IT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"scanner-LKJKW7IT.mjs"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Default security headers applied by site-kit middleware.
3
+ *
4
+ * These match industry best practices and are the same headers
5
+ * recommended by Next.js documentation. All are opt-out.
6
+ */
7
+ interface SecurityHeadersConfig {
8
+ /** X-Frame-Options value. false to disable. Default: 'DENY' */
9
+ frameOptions?: 'DENY' | 'SAMEORIGIN' | false;
10
+ /** X-Content-Type-Options: nosniff. Default: true */
11
+ contentTypeOptions?: boolean;
12
+ /** X-XSS-Protection header. Default: true */
13
+ xssProtection?: boolean;
14
+ /** Referrer-Policy value. Default: 'strict-origin-when-cross-origin' */
15
+ referrerPolicy?: string;
16
+ /** Permissions-Policy value. Default restricts camera, microphone, geolocation */
17
+ permissionsPolicy?: string;
18
+ /** X-DNS-Prefetch-Control. Default: true (on) */
19
+ dnsPrefetchControl?: boolean;
20
+ /** Additional custom headers */
21
+ customHeaders?: Record<string, string>;
22
+ }
23
+
24
+ export type { SecurityHeadersConfig as S };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Default security headers applied by site-kit middleware.
3
+ *
4
+ * These match industry best practices and are the same headers
5
+ * recommended by Next.js documentation. All are opt-out.
6
+ */
7
+ interface SecurityHeadersConfig {
8
+ /** X-Frame-Options value. false to disable. Default: 'DENY' */
9
+ frameOptions?: 'DENY' | 'SAMEORIGIN' | false;
10
+ /** X-Content-Type-Options: nosniff. Default: true */
11
+ contentTypeOptions?: boolean;
12
+ /** X-XSS-Protection header. Default: true */
13
+ xssProtection?: boolean;
14
+ /** Referrer-Policy value. Default: 'strict-origin-when-cross-origin' */
15
+ referrerPolicy?: string;
16
+ /** Permissions-Policy value. Default restricts camera, microphone, geolocation */
17
+ permissionsPolicy?: string;
18
+ /** X-DNS-Prefetch-Control. Default: true (on) */
19
+ dnsPrefetchControl?: boolean;
20
+ /** Additional custom headers */
21
+ customHeaders?: Record<string, string>;
22
+ }
23
+
24
+ export type { SecurityHeadersConfig as S };