@actuate-media/cms-core 0.82.0 → 0.84.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 (780) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/api/routes/seo-public.d.ts.map +1 -1
  3. package/dist/api/routes/seo-public.js +45 -12
  4. package/dist/api/routes/seo-public.js.map +1 -1
  5. package/dist/content/structured-data.d.ts +1 -0
  6. package/dist/content/structured-data.d.ts.map +1 -1
  7. package/dist/content/structured-data.js +1 -1
  8. package/dist/content/structured-data.js.map +1 -1
  9. package/dist/next-site.d.ts +28 -0
  10. package/dist/next-site.d.ts.map +1 -0
  11. package/dist/next-site.js +58 -0
  12. package/dist/next-site.js.map +1 -0
  13. package/dist/sections/index.d.ts +2 -0
  14. package/dist/sections/index.d.ts.map +1 -1
  15. package/dist/sections/index.js +1 -0
  16. package/dist/sections/index.js.map +1 -1
  17. package/dist/sections/registry.d.ts.map +1 -1
  18. package/dist/sections/registry.js +86 -0
  19. package/dist/sections/registry.js.map +1 -1
  20. package/dist/sections/types.d.ts +1 -1
  21. package/dist/sections/types.d.ts.map +1 -1
  22. package/dist/sections/validate.d.ts.map +1 -1
  23. package/dist/sections/validate.js +23 -0
  24. package/dist/sections/validate.js.map +1 -1
  25. package/dist/sections/widget-embed.d.ts +45 -0
  26. package/dist/sections/widget-embed.d.ts.map +1 -0
  27. package/dist/sections/widget-embed.js +129 -0
  28. package/dist/sections/widget-embed.js.map +1 -0
  29. package/dist/seo/page-meta.d.ts.map +1 -1
  30. package/dist/seo/page-meta.js +11 -0
  31. package/dist/seo/page-meta.js.map +1 -1
  32. package/dist/seo/sitemap-public.d.ts +43 -0
  33. package/dist/seo/sitemap-public.d.ts.map +1 -0
  34. package/dist/seo/sitemap-public.js +213 -0
  35. package/dist/seo/sitemap-public.js.map +1 -0
  36. package/package.json +21 -1
  37. package/dist/__tests__/actions/document-crud.test.d.ts +0 -2
  38. package/dist/__tests__/actions/document-crud.test.d.ts.map +0 -1
  39. package/dist/__tests__/actions/document-crud.test.js +0 -442
  40. package/dist/__tests__/actions/document-crud.test.js.map +0 -1
  41. package/dist/__tests__/actions/seo-fields-update.test.d.ts +0 -2
  42. package/dist/__tests__/actions/seo-fields-update.test.d.ts.map +0 -1
  43. package/dist/__tests__/actions/seo-fields-update.test.js +0 -93
  44. package/dist/__tests__/actions/seo-fields-update.test.js.map +0 -1
  45. package/dist/__tests__/ai/ai.test.d.ts +0 -2
  46. package/dist/__tests__/ai/ai.test.d.ts.map +0 -1
  47. package/dist/__tests__/ai/ai.test.js +0 -266
  48. package/dist/__tests__/ai/ai.test.js.map +0 -1
  49. package/dist/__tests__/ai/brand-voice-alignment.test.d.ts +0 -2
  50. package/dist/__tests__/ai/brand-voice-alignment.test.d.ts.map +0 -1
  51. package/dist/__tests__/ai/brand-voice-alignment.test.js +0 -38
  52. package/dist/__tests__/ai/brand-voice-alignment.test.js.map +0 -1
  53. package/dist/__tests__/ai/brand-voice-analyze.test.d.ts +0 -2
  54. package/dist/__tests__/ai/brand-voice-analyze.test.d.ts.map +0 -1
  55. package/dist/__tests__/ai/brand-voice-analyze.test.js +0 -117
  56. package/dist/__tests__/ai/brand-voice-analyze.test.js.map +0 -1
  57. package/dist/__tests__/ai/brand-voice-document.test.d.ts +0 -2
  58. package/dist/__tests__/ai/brand-voice-document.test.d.ts.map +0 -1
  59. package/dist/__tests__/ai/brand-voice-document.test.js +0 -74
  60. package/dist/__tests__/ai/brand-voice-document.test.js.map +0 -1
  61. package/dist/__tests__/ai/brand-voice-fix.test.d.ts +0 -2
  62. package/dist/__tests__/ai/brand-voice-fix.test.d.ts.map +0 -1
  63. package/dist/__tests__/ai/brand-voice-fix.test.js +0 -34
  64. package/dist/__tests__/ai/brand-voice-fix.test.js.map +0 -1
  65. package/dist/__tests__/ai/brand-voice-sources.test.d.ts +0 -2
  66. package/dist/__tests__/ai/brand-voice-sources.test.d.ts.map +0 -1
  67. package/dist/__tests__/ai/brand-voice-sources.test.js +0 -14
  68. package/dist/__tests__/ai/brand-voice-sources.test.js.map +0 -1
  69. package/dist/__tests__/ai/brand-voice-structured.test.d.ts +0 -2
  70. package/dist/__tests__/ai/brand-voice-structured.test.d.ts.map +0 -1
  71. package/dist/__tests__/ai/brand-voice-structured.test.js +0 -49
  72. package/dist/__tests__/ai/brand-voice-structured.test.js.map +0 -1
  73. package/dist/__tests__/ai/brand-voice.test.d.ts +0 -2
  74. package/dist/__tests__/ai/brand-voice.test.d.ts.map +0 -1
  75. package/dist/__tests__/ai/brand-voice.test.js +0 -82
  76. package/dist/__tests__/ai/brand-voice.test.js.map +0 -1
  77. package/dist/__tests__/ai/content-writing-generate.test.d.ts +0 -2
  78. package/dist/__tests__/ai/content-writing-generate.test.d.ts.map +0 -1
  79. package/dist/__tests__/ai/content-writing-generate.test.js +0 -38
  80. package/dist/__tests__/ai/content-writing-generate.test.js.map +0 -1
  81. package/dist/__tests__/ai/resolve.test.d.ts +0 -2
  82. package/dist/__tests__/ai/resolve.test.d.ts.map +0 -1
  83. package/dist/__tests__/ai/resolve.test.js +0 -164
  84. package/dist/__tests__/ai/resolve.test.js.map +0 -1
  85. package/dist/__tests__/ai/runtime.test.d.ts +0 -2
  86. package/dist/__tests__/ai/runtime.test.d.ts.map +0 -1
  87. package/dist/__tests__/ai/runtime.test.js +0 -392
  88. package/dist/__tests__/ai/runtime.test.js.map +0 -1
  89. package/dist/__tests__/ai/sampling.test.d.ts +0 -2
  90. package/dist/__tests__/ai/sampling.test.d.ts.map +0 -1
  91. package/dist/__tests__/ai/sampling.test.js +0 -25
  92. package/dist/__tests__/ai/sampling.test.js.map +0 -1
  93. package/dist/__tests__/api/admin-contracts.test.d.ts +0 -2
  94. package/dist/__tests__/api/admin-contracts.test.d.ts.map +0 -1
  95. package/dist/__tests__/api/admin-contracts.test.js +0 -186
  96. package/dist/__tests__/api/admin-contracts.test.js.map +0 -1
  97. package/dist/__tests__/api/ai-crawlers.test.d.ts +0 -2
  98. package/dist/__tests__/api/ai-crawlers.test.d.ts.map +0 -1
  99. package/dist/__tests__/api/ai-crawlers.test.js +0 -194
  100. package/dist/__tests__/api/ai-crawlers.test.js.map +0 -1
  101. package/dist/__tests__/api/ai-quality.test.d.ts +0 -2
  102. package/dist/__tests__/api/ai-quality.test.d.ts.map +0 -1
  103. package/dist/__tests__/api/ai-quality.test.js +0 -721
  104. package/dist/__tests__/api/ai-quality.test.js.map +0 -1
  105. package/dist/__tests__/api/ai-status.test.d.ts +0 -2
  106. package/dist/__tests__/api/ai-status.test.d.ts.map +0 -1
  107. package/dist/__tests__/api/ai-status.test.js +0 -110
  108. package/dist/__tests__/api/ai-status.test.js.map +0 -1
  109. package/dist/__tests__/api/api-key-auth.test.d.ts +0 -2
  110. package/dist/__tests__/api/api-key-auth.test.d.ts.map +0 -1
  111. package/dist/__tests__/api/api-key-auth.test.js +0 -254
  112. package/dist/__tests__/api/api-key-auth.test.js.map +0 -1
  113. package/dist/__tests__/api/appearance-routes.test.d.ts +0 -2
  114. package/dist/__tests__/api/appearance-routes.test.d.ts.map +0 -1
  115. package/dist/__tests__/api/appearance-routes.test.js +0 -134
  116. package/dist/__tests__/api/appearance-routes.test.js.map +0 -1
  117. package/dist/__tests__/api/cache-headers.test.d.ts +0 -2
  118. package/dist/__tests__/api/cache-headers.test.d.ts.map +0 -1
  119. package/dist/__tests__/api/cache-headers.test.js +0 -135
  120. package/dist/__tests__/api/cache-headers.test.js.map +0 -1
  121. package/dist/__tests__/api/collection-introspection.test.d.ts +0 -2
  122. package/dist/__tests__/api/collection-introspection.test.d.ts.map +0 -1
  123. package/dist/__tests__/api/collection-introspection.test.js +0 -129
  124. package/dist/__tests__/api/collection-introspection.test.js.map +0 -1
  125. package/dist/__tests__/api/collection-read-access.test.d.ts +0 -2
  126. package/dist/__tests__/api/collection-read-access.test.d.ts.map +0 -1
  127. package/dist/__tests__/api/collection-read-access.test.js +0 -140
  128. package/dist/__tests__/api/collection-read-access.test.js.map +0 -1
  129. package/dist/__tests__/api/collections-ai-create.test.d.ts +0 -2
  130. package/dist/__tests__/api/collections-ai-create.test.d.ts.map +0 -1
  131. package/dist/__tests__/api/collections-ai-create.test.js +0 -313
  132. package/dist/__tests__/api/collections-ai-create.test.js.map +0 -1
  133. package/dist/__tests__/api/collections-discovery.test.d.ts +0 -2
  134. package/dist/__tests__/api/collections-discovery.test.d.ts.map +0 -1
  135. package/dist/__tests__/api/collections-discovery.test.js +0 -348
  136. package/dist/__tests__/api/collections-discovery.test.js.map +0 -1
  137. package/dist/__tests__/api/comments-routes.test.d.ts +0 -2
  138. package/dist/__tests__/api/comments-routes.test.d.ts.map +0 -1
  139. package/dist/__tests__/api/comments-routes.test.js +0 -266
  140. package/dist/__tests__/api/comments-routes.test.js.map +0 -1
  141. package/dist/__tests__/api/cron-routes.test.d.ts +0 -2
  142. package/dist/__tests__/api/cron-routes.test.d.ts.map +0 -1
  143. package/dist/__tests__/api/cron-routes.test.js +0 -67
  144. package/dist/__tests__/api/cron-routes.test.js.map +0 -1
  145. package/dist/__tests__/api/data-filters-routes.test.d.ts +0 -2
  146. package/dist/__tests__/api/data-filters-routes.test.d.ts.map +0 -1
  147. package/dist/__tests__/api/data-filters-routes.test.js +0 -131
  148. package/dist/__tests__/api/data-filters-routes.test.js.map +0 -1
  149. package/dist/__tests__/api/email-settings-routes.test.d.ts +0 -2
  150. package/dist/__tests__/api/email-settings-routes.test.d.ts.map +0 -1
  151. package/dist/__tests__/api/email-settings-routes.test.js +0 -240
  152. package/dist/__tests__/api/email-settings-routes.test.js.map +0 -1
  153. package/dist/__tests__/api/field-values-routes.test.d.ts +0 -2
  154. package/dist/__tests__/api/field-values-routes.test.d.ts.map +0 -1
  155. package/dist/__tests__/api/field-values-routes.test.js +0 -147
  156. package/dist/__tests__/api/field-values-routes.test.js.map +0 -1
  157. package/dist/__tests__/api/form-webhooks.test.d.ts +0 -2
  158. package/dist/__tests__/api/form-webhooks.test.d.ts.map +0 -1
  159. package/dist/__tests__/api/form-webhooks.test.js +0 -162
  160. package/dist/__tests__/api/form-webhooks.test.js.map +0 -1
  161. package/dist/__tests__/api/globals-routes.test.d.ts +0 -2
  162. package/dist/__tests__/api/globals-routes.test.d.ts.map +0 -1
  163. package/dist/__tests__/api/globals-routes.test.js +0 -100
  164. package/dist/__tests__/api/globals-routes.test.js.map +0 -1
  165. package/dist/__tests__/api/health.test.d.ts +0 -2
  166. package/dist/__tests__/api/health.test.d.ts.map +0 -1
  167. package/dist/__tests__/api/health.test.js +0 -144
  168. package/dist/__tests__/api/health.test.js.map +0 -1
  169. package/dist/__tests__/api/llms-txt.test.d.ts +0 -2
  170. package/dist/__tests__/api/llms-txt.test.d.ts.map +0 -1
  171. package/dist/__tests__/api/llms-txt.test.js +0 -423
  172. package/dist/__tests__/api/llms-txt.test.js.map +0 -1
  173. package/dist/__tests__/api/md-route.test.d.ts +0 -2
  174. package/dist/__tests__/api/md-route.test.d.ts.map +0 -1
  175. package/dist/__tests__/api/md-route.test.js +0 -106
  176. package/dist/__tests__/api/md-route.test.js.map +0 -1
  177. package/dist/__tests__/api/media-upload-storage.test.d.ts +0 -2
  178. package/dist/__tests__/api/media-upload-storage.test.d.ts.map +0 -1
  179. package/dist/__tests__/api/media-upload-storage.test.js +0 -171
  180. package/dist/__tests__/api/media-upload-storage.test.js.map +0 -1
  181. package/dist/__tests__/api/notifications-routes.test.d.ts +0 -2
  182. package/dist/__tests__/api/notifications-routes.test.d.ts.map +0 -1
  183. package/dist/__tests__/api/notifications-routes.test.js +0 -270
  184. package/dist/__tests__/api/notifications-routes.test.js.map +0 -1
  185. package/dist/__tests__/api/page-sections-routes.test.d.ts +0 -2
  186. package/dist/__tests__/api/page-sections-routes.test.d.ts.map +0 -1
  187. package/dist/__tests__/api/page-sections-routes.test.js +0 -501
  188. package/dist/__tests__/api/page-sections-routes.test.js.map +0 -1
  189. package/dist/__tests__/api/preview-and-scheduling.test.d.ts +0 -2
  190. package/dist/__tests__/api/preview-and-scheduling.test.d.ts.map +0 -1
  191. package/dist/__tests__/api/preview-and-scheduling.test.js +0 -479
  192. package/dist/__tests__/api/preview-and-scheduling.test.js.map +0 -1
  193. package/dist/__tests__/api/public-forms.test.d.ts +0 -2
  194. package/dist/__tests__/api/public-forms.test.d.ts.map +0 -1
  195. package/dist/__tests__/api/public-forms.test.js +0 -125
  196. package/dist/__tests__/api/public-forms.test.js.map +0 -1
  197. package/dist/__tests__/api/public-globals.test.d.ts +0 -2
  198. package/dist/__tests__/api/public-globals.test.d.ts.map +0 -1
  199. package/dist/__tests__/api/public-globals.test.js +0 -96
  200. package/dist/__tests__/api/public-globals.test.js.map +0 -1
  201. package/dist/__tests__/api/public-navigations.test.d.ts +0 -2
  202. package/dist/__tests__/api/public-navigations.test.d.ts.map +0 -1
  203. package/dist/__tests__/api/public-navigations.test.js +0 -77
  204. package/dist/__tests__/api/public-navigations.test.js.map +0 -1
  205. package/dist/__tests__/api/public-seo.test.d.ts +0 -2
  206. package/dist/__tests__/api/public-seo.test.d.ts.map +0 -1
  207. package/dist/__tests__/api/public-seo.test.js +0 -833
  208. package/dist/__tests__/api/public-seo.test.js.map +0 -1
  209. package/dist/__tests__/api/resolve-layout-bridge.test.d.ts +0 -2
  210. package/dist/__tests__/api/resolve-layout-bridge.test.d.ts.map +0 -1
  211. package/dist/__tests__/api/resolve-layout-bridge.test.js +0 -165
  212. package/dist/__tests__/api/resolve-layout-bridge.test.js.map +0 -1
  213. package/dist/__tests__/api/route-contracts.test.d.ts +0 -2
  214. package/dist/__tests__/api/route-contracts.test.d.ts.map +0 -1
  215. package/dist/__tests__/api/route-contracts.test.js +0 -462
  216. package/dist/__tests__/api/route-contracts.test.js.map +0 -1
  217. package/dist/__tests__/api/security-routes.test.d.ts +0 -2
  218. package/dist/__tests__/api/security-routes.test.d.ts.map +0 -1
  219. package/dist/__tests__/api/security-routes.test.js +0 -212
  220. package/dist/__tests__/api/security-routes.test.js.map +0 -1
  221. package/dist/__tests__/api/seo-read-access.test.d.ts +0 -2
  222. package/dist/__tests__/api/seo-read-access.test.d.ts.map +0 -1
  223. package/dist/__tests__/api/seo-read-access.test.js +0 -101
  224. package/dist/__tests__/api/seo-read-access.test.js.map +0 -1
  225. package/dist/__tests__/api/seo-summary-ssrf.test.d.ts +0 -2
  226. package/dist/__tests__/api/seo-summary-ssrf.test.d.ts.map +0 -1
  227. package/dist/__tests__/api/seo-summary-ssrf.test.js +0 -80
  228. package/dist/__tests__/api/seo-summary-ssrf.test.js.map +0 -1
  229. package/dist/__tests__/api/sitemap-pagination.test.d.ts +0 -2
  230. package/dist/__tests__/api/sitemap-pagination.test.d.ts.map +0 -1
  231. package/dist/__tests__/api/sitemap-pagination.test.js +0 -100
  232. package/dist/__tests__/api/sitemap-pagination.test.js.map +0 -1
  233. package/dist/__tests__/api/stats-collection-filter.test.d.ts +0 -2
  234. package/dist/__tests__/api/stats-collection-filter.test.d.ts.map +0 -1
  235. package/dist/__tests__/api/stats-collection-filter.test.js +0 -190
  236. package/dist/__tests__/api/stats-collection-filter.test.js.map +0 -1
  237. package/dist/__tests__/api/stats-routes.test.d.ts +0 -2
  238. package/dist/__tests__/api/stats-routes.test.d.ts.map +0 -1
  239. package/dist/__tests__/api/stats-routes.test.js +0 -251
  240. package/dist/__tests__/api/stats-routes.test.js.map +0 -1
  241. package/dist/__tests__/api/stats-seo-cache.test.d.ts +0 -2
  242. package/dist/__tests__/api/stats-seo-cache.test.d.ts.map +0 -1
  243. package/dist/__tests__/api/stats-seo-cache.test.js +0 -96
  244. package/dist/__tests__/api/stats-seo-cache.test.js.map +0 -1
  245. package/dist/__tests__/api/totp-login.test.d.ts +0 -2
  246. package/dist/__tests__/api/totp-login.test.d.ts.map +0 -1
  247. package/dist/__tests__/api/totp-login.test.js +0 -115
  248. package/dist/__tests__/api/totp-login.test.js.map +0 -1
  249. package/dist/__tests__/api/updates-routes.test.d.ts +0 -2
  250. package/dist/__tests__/api/updates-routes.test.d.ts.map +0 -1
  251. package/dist/__tests__/api/updates-routes.test.js +0 -248
  252. package/dist/__tests__/api/updates-routes.test.js.map +0 -1
  253. package/dist/__tests__/api/users-detail.test.d.ts +0 -2
  254. package/dist/__tests__/api/users-detail.test.d.ts.map +0 -1
  255. package/dist/__tests__/api/users-detail.test.js +0 -401
  256. package/dist/__tests__/api/users-detail.test.js.map +0 -1
  257. package/dist/__tests__/api/users-invite.test.d.ts +0 -2
  258. package/dist/__tests__/api/users-invite.test.d.ts.map +0 -1
  259. package/dist/__tests__/api/users-invite.test.js +0 -221
  260. package/dist/__tests__/api/users-invite.test.js.map +0 -1
  261. package/dist/__tests__/api/users-search.test.d.ts +0 -2
  262. package/dist/__tests__/api/users-search.test.d.ts.map +0 -1
  263. package/dist/__tests__/api/users-search.test.js +0 -182
  264. package/dist/__tests__/api/users-search.test.js.map +0 -1
  265. package/dist/__tests__/appearance/appearance.test.d.ts +0 -2
  266. package/dist/__tests__/appearance/appearance.test.d.ts.map +0 -1
  267. package/dist/__tests__/appearance/appearance.test.js +0 -287
  268. package/dist/__tests__/appearance/appearance.test.js.map +0 -1
  269. package/dist/__tests__/appearance/favicon-icon.test.d.ts +0 -2
  270. package/dist/__tests__/appearance/favicon-icon.test.d.ts.map +0 -1
  271. package/dist/__tests__/appearance/favicon-icon.test.js +0 -12
  272. package/dist/__tests__/appearance/favicon-icon.test.js.map +0 -1
  273. package/dist/__tests__/auth/invites.test.d.ts +0 -2
  274. package/dist/__tests__/auth/invites.test.d.ts.map +0 -1
  275. package/dist/__tests__/auth/invites.test.js +0 -181
  276. package/dist/__tests__/auth/invites.test.js.map +0 -1
  277. package/dist/__tests__/auth/oauth.test.d.ts +0 -2
  278. package/dist/__tests__/auth/oauth.test.d.ts.map +0 -1
  279. package/dist/__tests__/auth/oauth.test.js +0 -408
  280. package/dist/__tests__/auth/oauth.test.js.map +0 -1
  281. package/dist/__tests__/auth/password.test.d.ts +0 -2
  282. package/dist/__tests__/auth/password.test.d.ts.map +0 -1
  283. package/dist/__tests__/auth/password.test.js +0 -226
  284. package/dist/__tests__/auth/password.test.js.map +0 -1
  285. package/dist/__tests__/auth/reset.test.d.ts +0 -2
  286. package/dist/__tests__/auth/reset.test.d.ts.map +0 -1
  287. package/dist/__tests__/auth/reset.test.js +0 -355
  288. package/dist/__tests__/auth/reset.test.js.map +0 -1
  289. package/dist/__tests__/auth/roles.test.d.ts +0 -2
  290. package/dist/__tests__/auth/roles.test.d.ts.map +0 -1
  291. package/dist/__tests__/auth/roles.test.js +0 -60
  292. package/dist/__tests__/auth/roles.test.js.map +0 -1
  293. package/dist/__tests__/auth/session.test.d.ts +0 -2
  294. package/dist/__tests__/auth/session.test.d.ts.map +0 -1
  295. package/dist/__tests__/auth/session.test.js +0 -119
  296. package/dist/__tests__/auth/session.test.js.map +0 -1
  297. package/dist/__tests__/auth/team.test.d.ts +0 -2
  298. package/dist/__tests__/auth/team.test.d.ts.map +0 -1
  299. package/dist/__tests__/auth/team.test.js +0 -154
  300. package/dist/__tests__/auth/team.test.js.map +0 -1
  301. package/dist/__tests__/auth/totp.test.d.ts +0 -2
  302. package/dist/__tests__/auth/totp.test.d.ts.map +0 -1
  303. package/dist/__tests__/auth/totp.test.js +0 -52
  304. package/dist/__tests__/auth/totp.test.js.map +0 -1
  305. package/dist/__tests__/auth/user-admin.test.d.ts +0 -2
  306. package/dist/__tests__/auth/user-admin.test.d.ts.map +0 -1
  307. package/dist/__tests__/auth/user-admin.test.js +0 -200
  308. package/dist/__tests__/auth/user-admin.test.js.map +0 -1
  309. package/dist/__tests__/billing/stripe-meter.test.d.ts +0 -2
  310. package/dist/__tests__/billing/stripe-meter.test.d.ts.map +0 -1
  311. package/dist/__tests__/billing/stripe-meter.test.js +0 -86
  312. package/dist/__tests__/billing/stripe-meter.test.js.map +0 -1
  313. package/dist/__tests__/codegen/generate-types.test.d.ts +0 -2
  314. package/dist/__tests__/codegen/generate-types.test.d.ts.map +0 -1
  315. package/dist/__tests__/codegen/generate-types.test.js +0 -173
  316. package/dist/__tests__/codegen/generate-types.test.js.map +0 -1
  317. package/dist/__tests__/collections/presets.test.d.ts +0 -2
  318. package/dist/__tests__/collections/presets.test.d.ts.map +0 -1
  319. package/dist/__tests__/collections/presets.test.js +0 -184
  320. package/dist/__tests__/collections/presets.test.js.map +0 -1
  321. package/dist/__tests__/config/runtime.test.d.ts +0 -2
  322. package/dist/__tests__/config/runtime.test.d.ts.map +0 -1
  323. package/dist/__tests__/config/runtime.test.js +0 -65
  324. package/dist/__tests__/config/runtime.test.js.map +0 -1
  325. package/dist/__tests__/content/slug.test.d.ts +0 -2
  326. package/dist/__tests__/content/slug.test.d.ts.map +0 -1
  327. package/dist/__tests__/content/slug.test.js +0 -68
  328. package/dist/__tests__/content/slug.test.js.map +0 -1
  329. package/dist/__tests__/content-health/scanner.test.d.ts +0 -2
  330. package/dist/__tests__/content-health/scanner.test.d.ts.map +0 -1
  331. package/dist/__tests__/content-health/scanner.test.js +0 -151
  332. package/dist/__tests__/content-health/scanner.test.js.map +0 -1
  333. package/dist/__tests__/cron/cron.test.d.ts +0 -2
  334. package/dist/__tests__/cron/cron.test.d.ts.map +0 -1
  335. package/dist/__tests__/cron/cron.test.js +0 -340
  336. package/dist/__tests__/cron/cron.test.js.map +0 -1
  337. package/dist/__tests__/db/model-types-freshness.test.d.ts +0 -2
  338. package/dist/__tests__/db/model-types-freshness.test.d.ts.map +0 -1
  339. package/dist/__tests__/db/model-types-freshness.test.js +0 -46
  340. package/dist/__tests__/db/model-types-freshness.test.js.map +0 -1
  341. package/dist/__tests__/diagnostics/api-metrics.test.d.ts +0 -2
  342. package/dist/__tests__/diagnostics/api-metrics.test.d.ts.map +0 -1
  343. package/dist/__tests__/diagnostics/api-metrics.test.js +0 -153
  344. package/dist/__tests__/diagnostics/api-metrics.test.js.map +0 -1
  345. package/dist/__tests__/diagnostics/env.test.d.ts +0 -2
  346. package/dist/__tests__/diagnostics/env.test.d.ts.map +0 -1
  347. package/dist/__tests__/diagnostics/env.test.js +0 -247
  348. package/dist/__tests__/diagnostics/env.test.js.map +0 -1
  349. package/dist/__tests__/diagnostics/logger.test.d.ts +0 -2
  350. package/dist/__tests__/diagnostics/logger.test.d.ts.map +0 -1
  351. package/dist/__tests__/diagnostics/logger.test.js +0 -111
  352. package/dist/__tests__/diagnostics/logger.test.js.map +0 -1
  353. package/dist/__tests__/diagnostics/sentry.test.d.ts +0 -2
  354. package/dist/__tests__/diagnostics/sentry.test.d.ts.map +0 -1
  355. package/dist/__tests__/diagnostics/sentry.test.js +0 -60
  356. package/dist/__tests__/diagnostics/sentry.test.js.map +0 -1
  357. package/dist/__tests__/email/resolve.test.d.ts +0 -2
  358. package/dist/__tests__/email/resolve.test.d.ts.map +0 -1
  359. package/dist/__tests__/email/resolve.test.js +0 -90
  360. package/dist/__tests__/email/resolve.test.js.map +0 -1
  361. package/dist/__tests__/email/sender.test.d.ts +0 -2
  362. package/dist/__tests__/email/sender.test.d.ts.map +0 -1
  363. package/dist/__tests__/email/sender.test.js +0 -33
  364. package/dist/__tests__/email/sender.test.js.map +0 -1
  365. package/dist/__tests__/email/settings-store.test.d.ts +0 -2
  366. package/dist/__tests__/email/settings-store.test.d.ts.map +0 -1
  367. package/dist/__tests__/email/settings-store.test.js +0 -149
  368. package/dist/__tests__/email/settings-store.test.js.map +0 -1
  369. package/dist/__tests__/fields/component-block.test.d.ts +0 -2
  370. package/dist/__tests__/fields/component-block.test.d.ts.map +0 -1
  371. package/dist/__tests__/fields/component-block.test.js +0 -129
  372. package/dist/__tests__/fields/component-block.test.js.map +0 -1
  373. package/dist/__tests__/fields/presets.test.d.ts +0 -2
  374. package/dist/__tests__/fields/presets.test.d.ts.map +0 -1
  375. package/dist/__tests__/fields/presets.test.js +0 -99
  376. package/dist/__tests__/fields/presets.test.js.map +0 -1
  377. package/dist/__tests__/fields/relations.test.d.ts +0 -2
  378. package/dist/__tests__/fields/relations.test.d.ts.map +0 -1
  379. package/dist/__tests__/fields/relations.test.js +0 -297
  380. package/dist/__tests__/fields/relations.test.js.map +0 -1
  381. package/dist/__tests__/forms/client-validation.test.d.ts +0 -2
  382. package/dist/__tests__/forms/client-validation.test.d.ts.map +0 -1
  383. package/dist/__tests__/forms/client-validation.test.js +0 -98
  384. package/dist/__tests__/forms/client-validation.test.js.map +0 -1
  385. package/dist/__tests__/forms/encryption.test.d.ts +0 -2
  386. package/dist/__tests__/forms/encryption.test.d.ts.map +0 -1
  387. package/dist/__tests__/forms/encryption.test.js +0 -84
  388. package/dist/__tests__/forms/encryption.test.js.map +0 -1
  389. package/dist/__tests__/forms/entries-export.test.d.ts +0 -2
  390. package/dist/__tests__/forms/entries-export.test.d.ts.map +0 -1
  391. package/dist/__tests__/forms/entries-export.test.js +0 -69
  392. package/dist/__tests__/forms/entries-export.test.js.map +0 -1
  393. package/dist/__tests__/forms/forms-service.test.d.ts +0 -2
  394. package/dist/__tests__/forms/forms-service.test.d.ts.map +0 -1
  395. package/dist/__tests__/forms/forms-service.test.js +0 -193
  396. package/dist/__tests__/forms/forms-service.test.js.map +0 -1
  397. package/dist/__tests__/forms/notify.test.d.ts +0 -2
  398. package/dist/__tests__/forms/notify.test.d.ts.map +0 -1
  399. package/dist/__tests__/forms/notify.test.js +0 -114
  400. package/dist/__tests__/forms/notify.test.js.map +0 -1
  401. package/dist/__tests__/forms/spam.test.d.ts +0 -2
  402. package/dist/__tests__/forms/spam.test.d.ts.map +0 -1
  403. package/dist/__tests__/forms/spam.test.js +0 -115
  404. package/dist/__tests__/forms/spam.test.js.map +0 -1
  405. package/dist/__tests__/forms/submission-files.test.d.ts +0 -2
  406. package/dist/__tests__/forms/submission-files.test.d.ts.map +0 -1
  407. package/dist/__tests__/forms/submission-files.test.js +0 -65
  408. package/dist/__tests__/forms/submission-files.test.js.map +0 -1
  409. package/dist/__tests__/forms/submission-pipeline.test.d.ts +0 -2
  410. package/dist/__tests__/forms/submission-pipeline.test.d.ts.map +0 -1
  411. package/dist/__tests__/forms/submission-pipeline.test.js +0 -131
  412. package/dist/__tests__/forms/submission-pipeline.test.js.map +0 -1
  413. package/dist/__tests__/forms/submission-validation.test.d.ts +0 -2
  414. package/dist/__tests__/forms/submission-validation.test.d.ts.map +0 -1
  415. package/dist/__tests__/forms/submission-validation.test.js +0 -108
  416. package/dist/__tests__/forms/submission-validation.test.js.map +0 -1
  417. package/dist/__tests__/forms/webhooks.test.d.ts +0 -2
  418. package/dist/__tests__/forms/webhooks.test.d.ts.map +0 -1
  419. package/dist/__tests__/forms/webhooks.test.js +0 -203
  420. package/dist/__tests__/forms/webhooks.test.js.map +0 -1
  421. package/dist/__tests__/media/seo.test.d.ts +0 -2
  422. package/dist/__tests__/media/seo.test.d.ts.map +0 -1
  423. package/dist/__tests__/media/seo.test.js +0 -186
  424. package/dist/__tests__/media/seo.test.js.map +0 -1
  425. package/dist/__tests__/middleware.test.d.ts +0 -2
  426. package/dist/__tests__/middleware.test.d.ts.map +0 -1
  427. package/dist/__tests__/middleware.test.js +0 -127
  428. package/dist/__tests__/middleware.test.js.map +0 -1
  429. package/dist/__tests__/next.test.d.ts +0 -2
  430. package/dist/__tests__/next.test.d.ts.map +0 -1
  431. package/dist/__tests__/next.test.js +0 -118
  432. package/dist/__tests__/next.test.js.map +0 -1
  433. package/dist/__tests__/plan/features.test.d.ts +0 -2
  434. package/dist/__tests__/plan/features.test.d.ts.map +0 -1
  435. package/dist/__tests__/plan/features.test.js +0 -35
  436. package/dist/__tests__/plan/features.test.js.map +0 -1
  437. package/dist/__tests__/preview-event-bus.test.d.ts +0 -2
  438. package/dist/__tests__/preview-event-bus.test.d.ts.map +0 -1
  439. package/dist/__tests__/preview-event-bus.test.js +0 -89
  440. package/dist/__tests__/preview-event-bus.test.js.map +0 -1
  441. package/dist/__tests__/preview-sse-stream.test.d.ts +0 -2
  442. package/dist/__tests__/preview-sse-stream.test.d.ts.map +0 -1
  443. package/dist/__tests__/preview-sse-stream.test.js +0 -117
  444. package/dist/__tests__/preview-sse-stream.test.js.map +0 -1
  445. package/dist/__tests__/preview.test.d.ts +0 -2
  446. package/dist/__tests__/preview.test.d.ts.map +0 -1
  447. package/dist/__tests__/preview.test.js +0 -71
  448. package/dist/__tests__/preview.test.js.map +0 -1
  449. package/dist/__tests__/realtime/comments.test.d.ts +0 -2
  450. package/dist/__tests__/realtime/comments.test.d.ts.map +0 -1
  451. package/dist/__tests__/realtime/comments.test.js +0 -508
  452. package/dist/__tests__/realtime/comments.test.js.map +0 -1
  453. package/dist/__tests__/realtime/gateway-ws-integration.test.d.ts +0 -2
  454. package/dist/__tests__/realtime/gateway-ws-integration.test.d.ts.map +0 -1
  455. package/dist/__tests__/realtime/gateway-ws-integration.test.js +0 -170
  456. package/dist/__tests__/realtime/gateway-ws-integration.test.js.map +0 -1
  457. package/dist/__tests__/realtime/gateway.test.d.ts +0 -2
  458. package/dist/__tests__/realtime/gateway.test.d.ts.map +0 -1
  459. package/dist/__tests__/realtime/gateway.test.js +0 -402
  460. package/dist/__tests__/realtime/gateway.test.js.map +0 -1
  461. package/dist/__tests__/realtime/notification-bus.test.d.ts +0 -2
  462. package/dist/__tests__/realtime/notification-bus.test.d.ts.map +0 -1
  463. package/dist/__tests__/realtime/notification-bus.test.js +0 -79
  464. package/dist/__tests__/realtime/notification-bus.test.js.map +0 -1
  465. package/dist/__tests__/realtime/notification-stream.test.d.ts +0 -2
  466. package/dist/__tests__/realtime/notification-stream.test.d.ts.map +0 -1
  467. package/dist/__tests__/realtime/notification-stream.test.js +0 -157
  468. package/dist/__tests__/realtime/notification-stream.test.js.map +0 -1
  469. package/dist/__tests__/realtime/notifications.test.d.ts +0 -2
  470. package/dist/__tests__/realtime/notifications.test.d.ts.map +0 -1
  471. package/dist/__tests__/realtime/notifications.test.js +0 -330
  472. package/dist/__tests__/realtime/notifications.test.js.map +0 -1
  473. package/dist/__tests__/realtime/persistence.test.d.ts +0 -2
  474. package/dist/__tests__/realtime/persistence.test.d.ts.map +0 -1
  475. package/dist/__tests__/realtime/persistence.test.js +0 -124
  476. package/dist/__tests__/realtime/persistence.test.js.map +0 -1
  477. package/dist/__tests__/redirects/auto-301.test.d.ts +0 -2
  478. package/dist/__tests__/redirects/auto-301.test.d.ts.map +0 -1
  479. package/dist/__tests__/redirects/auto-301.test.js +0 -172
  480. package/dist/__tests__/redirects/auto-301.test.js.map +0 -1
  481. package/dist/__tests__/redirects/graph.test.d.ts +0 -2
  482. package/dist/__tests__/redirects/graph.test.d.ts.map +0 -1
  483. package/dist/__tests__/redirects/graph.test.js +0 -104
  484. package/dist/__tests__/redirects/graph.test.js.map +0 -1
  485. package/dist/__tests__/redirects/suggest.test.d.ts +0 -2
  486. package/dist/__tests__/redirects/suggest.test.d.ts.map +0 -1
  487. package/dist/__tests__/redirects/suggest.test.js +0 -28
  488. package/dist/__tests__/redirects/suggest.test.js.map +0 -1
  489. package/dist/__tests__/scheduling/scheduling.test.d.ts +0 -2
  490. package/dist/__tests__/scheduling/scheduling.test.d.ts.map +0 -1
  491. package/dist/__tests__/scheduling/scheduling.test.js +0 -110
  492. package/dist/__tests__/scheduling/scheduling.test.js.map +0 -1
  493. package/dist/__tests__/schema-preview-features.test.d.ts +0 -2
  494. package/dist/__tests__/schema-preview-features.test.d.ts.map +0 -1
  495. package/dist/__tests__/schema-preview-features.test.js +0 -42
  496. package/dist/__tests__/schema-preview-features.test.js.map +0 -1
  497. package/dist/__tests__/sections/sections-migrate.test.d.ts +0 -2
  498. package/dist/__tests__/sections/sections-migrate.test.d.ts.map +0 -1
  499. package/dist/__tests__/sections/sections-migrate.test.js +0 -145
  500. package/dist/__tests__/sections/sections-migrate.test.js.map +0 -1
  501. package/dist/__tests__/security/access.test.d.ts +0 -2
  502. package/dist/__tests__/security/access.test.d.ts.map +0 -1
  503. package/dist/__tests__/security/access.test.js +0 -181
  504. package/dist/__tests__/security/access.test.js.map +0 -1
  505. package/dist/__tests__/security/api-key-enhanced.test.d.ts +0 -2
  506. package/dist/__tests__/security/api-key-enhanced.test.d.ts.map +0 -1
  507. package/dist/__tests__/security/api-key-enhanced.test.js +0 -110
  508. package/dist/__tests__/security/api-key-enhanced.test.js.map +0 -1
  509. package/dist/__tests__/security/audit.test.d.ts +0 -2
  510. package/dist/__tests__/security/audit.test.d.ts.map +0 -1
  511. package/dist/__tests__/security/audit.test.js +0 -50
  512. package/dist/__tests__/security/audit.test.js.map +0 -1
  513. package/dist/__tests__/security/center.test.d.ts +0 -2
  514. package/dist/__tests__/security/center.test.d.ts.map +0 -1
  515. package/dist/__tests__/security/center.test.js +0 -226
  516. package/dist/__tests__/security/center.test.js.map +0 -1
  517. package/dist/__tests__/security/client-ip.test.d.ts +0 -2
  518. package/dist/__tests__/security/client-ip.test.d.ts.map +0 -1
  519. package/dist/__tests__/security/client-ip.test.js +0 -37
  520. package/dist/__tests__/security/client-ip.test.js.map +0 -1
  521. package/dist/__tests__/security/csrf.test.d.ts +0 -2
  522. package/dist/__tests__/security/csrf.test.d.ts.map +0 -1
  523. package/dist/__tests__/security/csrf.test.js +0 -40
  524. package/dist/__tests__/security/csrf.test.js.map +0 -1
  525. package/dist/__tests__/security/encrypted-fields.test.d.ts +0 -2
  526. package/dist/__tests__/security/encrypted-fields.test.d.ts.map +0 -1
  527. package/dist/__tests__/security/encrypted-fields.test.js +0 -60
  528. package/dist/__tests__/security/encrypted-fields.test.js.map +0 -1
  529. package/dist/__tests__/security/ip-allowlist.test.d.ts +0 -2
  530. package/dist/__tests__/security/ip-allowlist.test.d.ts.map +0 -1
  531. package/dist/__tests__/security/ip-allowlist.test.js +0 -40
  532. package/dist/__tests__/security/ip-allowlist.test.js.map +0 -1
  533. package/dist/__tests__/security/rate-limit.test.d.ts +0 -2
  534. package/dist/__tests__/security/rate-limit.test.d.ts.map +0 -1
  535. package/dist/__tests__/security/rate-limit.test.js +0 -199
  536. package/dist/__tests__/security/rate-limit.test.js.map +0 -1
  537. package/dist/__tests__/security/reauth.test.d.ts +0 -2
  538. package/dist/__tests__/security/reauth.test.d.ts.map +0 -1
  539. package/dist/__tests__/security/reauth.test.js +0 -30
  540. package/dist/__tests__/security/reauth.test.js.map +0 -1
  541. package/dist/__tests__/security/redact.test.d.ts +0 -2
  542. package/dist/__tests__/security/redact.test.d.ts.map +0 -1
  543. package/dist/__tests__/security/redact.test.js +0 -31
  544. package/dist/__tests__/security/redact.test.js.map +0 -1
  545. package/dist/__tests__/security/safe-fetch.test.d.ts +0 -2
  546. package/dist/__tests__/security/safe-fetch.test.d.ts.map +0 -1
  547. package/dist/__tests__/security/safe-fetch.test.js +0 -97
  548. package/dist/__tests__/security/safe-fetch.test.js.map +0 -1
  549. package/dist/__tests__/security/sanitize-document.test.d.ts +0 -2
  550. package/dist/__tests__/security/sanitize-document.test.d.ts.map +0 -1
  551. package/dist/__tests__/security/sanitize-document.test.js +0 -146
  552. package/dist/__tests__/security/sanitize-document.test.js.map +0 -1
  553. package/dist/__tests__/security/sanitize.test.d.ts +0 -2
  554. package/dist/__tests__/security/sanitize.test.d.ts.map +0 -1
  555. package/dist/__tests__/security/sanitize.test.js +0 -75
  556. package/dist/__tests__/security/sanitize.test.js.map +0 -1
  557. package/dist/__tests__/security/secret-storage.test.d.ts +0 -2
  558. package/dist/__tests__/security/secret-storage.test.d.ts.map +0 -1
  559. package/dist/__tests__/security/secret-storage.test.js +0 -42
  560. package/dist/__tests__/security/secret-storage.test.js.map +0 -1
  561. package/dist/__tests__/security/ssrf.test.d.ts +0 -2
  562. package/dist/__tests__/security/ssrf.test.d.ts.map +0 -1
  563. package/dist/__tests__/security/ssrf.test.js +0 -209
  564. package/dist/__tests__/security/ssrf.test.js.map +0 -1
  565. package/dist/__tests__/security/upload-magic.test.d.ts +0 -2
  566. package/dist/__tests__/security/upload-magic.test.d.ts.map +0 -1
  567. package/dist/__tests__/security/upload-magic.test.js +0 -55
  568. package/dist/__tests__/security/upload-magic.test.js.map +0 -1
  569. package/dist/__tests__/seo/ai-bots.test.d.ts +0 -2
  570. package/dist/__tests__/seo/ai-bots.test.d.ts.map +0 -1
  571. package/dist/__tests__/seo/ai-bots.test.js +0 -92
  572. package/dist/__tests__/seo/ai-bots.test.js.map +0 -1
  573. package/dist/__tests__/seo/alt-text.test.d.ts +0 -2
  574. package/dist/__tests__/seo/alt-text.test.d.ts.map +0 -1
  575. package/dist/__tests__/seo/alt-text.test.js +0 -47
  576. package/dist/__tests__/seo/alt-text.test.js.map +0 -1
  577. package/dist/__tests__/seo/analysis-markdown.test.d.ts +0 -2
  578. package/dist/__tests__/seo/analysis-markdown.test.d.ts.map +0 -1
  579. package/dist/__tests__/seo/analysis-markdown.test.js +0 -57
  580. package/dist/__tests__/seo/analysis-markdown.test.js.map +0 -1
  581. package/dist/__tests__/seo/audit-engine.test.d.ts +0 -2
  582. package/dist/__tests__/seo/audit-engine.test.d.ts.map +0 -1
  583. package/dist/__tests__/seo/audit-engine.test.js +0 -181
  584. package/dist/__tests__/seo/audit-engine.test.js.map +0 -1
  585. package/dist/__tests__/seo/audit-runner.test.d.ts +0 -2
  586. package/dist/__tests__/seo/audit-runner.test.d.ts.map +0 -1
  587. package/dist/__tests__/seo/audit-runner.test.js +0 -204
  588. package/dist/__tests__/seo/audit-runner.test.js.map +0 -1
  589. package/dist/__tests__/seo/audit-signals.test.d.ts +0 -2
  590. package/dist/__tests__/seo/audit-signals.test.d.ts.map +0 -1
  591. package/dist/__tests__/seo/audit-signals.test.js +0 -30
  592. package/dist/__tests__/seo/audit-signals.test.js.map +0 -1
  593. package/dist/__tests__/seo/config-store.test.d.ts +0 -2
  594. package/dist/__tests__/seo/config-store.test.d.ts.map +0 -1
  595. package/dist/__tests__/seo/config-store.test.js +0 -31
  596. package/dist/__tests__/seo/config-store.test.js.map +0 -1
  597. package/dist/__tests__/seo/content-markdown.test.d.ts +0 -2
  598. package/dist/__tests__/seo/content-markdown.test.d.ts.map +0 -1
  599. package/dist/__tests__/seo/content-markdown.test.js +0 -124
  600. package/dist/__tests__/seo/content-markdown.test.js.map +0 -1
  601. package/dist/__tests__/seo/effective-meta.test.d.ts +0 -2
  602. package/dist/__tests__/seo/effective-meta.test.d.ts.map +0 -1
  603. package/dist/__tests__/seo/effective-meta.test.js +0 -58
  604. package/dist/__tests__/seo/effective-meta.test.js.map +0 -1
  605. package/dist/__tests__/seo/feeds.test.d.ts +0 -2
  606. package/dist/__tests__/seo/feeds.test.d.ts.map +0 -1
  607. package/dist/__tests__/seo/feeds.test.js +0 -61
  608. package/dist/__tests__/seo/feeds.test.js.map +0 -1
  609. package/dist/__tests__/seo/fix-brief-export.test.d.ts +0 -2
  610. package/dist/__tests__/seo/fix-brief-export.test.d.ts.map +0 -1
  611. package/dist/__tests__/seo/fix-brief-export.test.js +0 -153
  612. package/dist/__tests__/seo/fix-brief-export.test.js.map +0 -1
  613. package/dist/__tests__/seo/freshness.test.d.ts +0 -2
  614. package/dist/__tests__/seo/freshness.test.d.ts.map +0 -1
  615. package/dist/__tests__/seo/freshness.test.js +0 -89
  616. package/dist/__tests__/seo/freshness.test.js.map +0 -1
  617. package/dist/__tests__/seo/index-status.test.d.ts +0 -2
  618. package/dist/__tests__/seo/index-status.test.d.ts.map +0 -1
  619. package/dist/__tests__/seo/index-status.test.js +0 -140
  620. package/dist/__tests__/seo/index-status.test.js.map +0 -1
  621. package/dist/__tests__/seo/internal-collections.test.d.ts +0 -2
  622. package/dist/__tests__/seo/internal-collections.test.d.ts.map +0 -1
  623. package/dist/__tests__/seo/internal-collections.test.js +0 -27
  624. package/dist/__tests__/seo/internal-collections.test.js.map +0 -1
  625. package/dist/__tests__/seo/issue-batch-briefs.test.d.ts +0 -2
  626. package/dist/__tests__/seo/issue-batch-briefs.test.d.ts.map +0 -1
  627. package/dist/__tests__/seo/issue-batch-briefs.test.js +0 -64
  628. package/dist/__tests__/seo/issue-batch-briefs.test.js.map +0 -1
  629. package/dist/__tests__/seo/issue-content-brief.test.d.ts +0 -2
  630. package/dist/__tests__/seo/issue-content-brief.test.d.ts.map +0 -1
  631. package/dist/__tests__/seo/issue-content-brief.test.js +0 -107
  632. package/dist/__tests__/seo/issue-content-brief.test.js.map +0 -1
  633. package/dist/__tests__/seo/issue-content-research.test.d.ts +0 -2
  634. package/dist/__tests__/seo/issue-content-research.test.d.ts.map +0 -1
  635. package/dist/__tests__/seo/issue-content-research.test.js +0 -114
  636. package/dist/__tests__/seo/issue-content-research.test.js.map +0 -1
  637. package/dist/__tests__/seo/issue-fix-ai.test.d.ts +0 -2
  638. package/dist/__tests__/seo/issue-fix-ai.test.d.ts.map +0 -1
  639. package/dist/__tests__/seo/issue-fix-ai.test.js +0 -96
  640. package/dist/__tests__/seo/issue-fix-ai.test.js.map +0 -1
  641. package/dist/__tests__/seo/issue-fix-orchestrator.test.d.ts +0 -2
  642. package/dist/__tests__/seo/issue-fix-orchestrator.test.d.ts.map +0 -1
  643. package/dist/__tests__/seo/issue-fix-orchestrator.test.js +0 -48
  644. package/dist/__tests__/seo/issue-fix-orchestrator.test.js.map +0 -1
  645. package/dist/__tests__/seo/issue-fix.test.d.ts +0 -2
  646. package/dist/__tests__/seo/issue-fix.test.d.ts.map +0 -1
  647. package/dist/__tests__/seo/issue-fix.test.js +0 -98
  648. package/dist/__tests__/seo/issue-fix.test.js.map +0 -1
  649. package/dist/__tests__/seo/llms-sanitize.test.d.ts +0 -2
  650. package/dist/__tests__/seo/llms-sanitize.test.d.ts.map +0 -1
  651. package/dist/__tests__/seo/llms-sanitize.test.js +0 -74
  652. package/dist/__tests__/seo/llms-sanitize.test.js.map +0 -1
  653. package/dist/__tests__/seo/meta-tags-alternates.test.d.ts +0 -2
  654. package/dist/__tests__/seo/meta-tags-alternates.test.d.ts.map +0 -1
  655. package/dist/__tests__/seo/meta-tags-alternates.test.js +0 -52
  656. package/dist/__tests__/seo/meta-tags-alternates.test.js.map +0 -1
  657. package/dist/__tests__/seo/migrate-meta.test.d.ts +0 -2
  658. package/dist/__tests__/seo/migrate-meta.test.d.ts.map +0 -1
  659. package/dist/__tests__/seo/migrate-meta.test.js +0 -75
  660. package/dist/__tests__/seo/migrate-meta.test.js.map +0 -1
  661. package/dist/__tests__/seo/migrate-schema.test.d.ts +0 -2
  662. package/dist/__tests__/seo/migrate-schema.test.d.ts.map +0 -1
  663. package/dist/__tests__/seo/migrate-schema.test.js +0 -97
  664. package/dist/__tests__/seo/migrate-schema.test.js.map +0 -1
  665. package/dist/__tests__/seo/page-meta.test.d.ts +0 -2
  666. package/dist/__tests__/seo/page-meta.test.d.ts.map +0 -1
  667. package/dist/__tests__/seo/page-meta.test.js +0 -452
  668. package/dist/__tests__/seo/page-meta.test.js.map +0 -1
  669. package/dist/__tests__/seo/resolve-path.test.d.ts +0 -2
  670. package/dist/__tests__/seo/resolve-path.test.d.ts.map +0 -1
  671. package/dist/__tests__/seo/resolve-path.test.js +0 -46
  672. package/dist/__tests__/seo/resolve-path.test.js.map +0 -1
  673. package/dist/__tests__/seo/robots.test.d.ts +0 -2
  674. package/dist/__tests__/seo/robots.test.d.ts.map +0 -1
  675. package/dist/__tests__/seo/robots.test.js +0 -72
  676. package/dist/__tests__/seo/robots.test.js.map +0 -1
  677. package/dist/__tests__/seo/schema-sync.test.d.ts +0 -2
  678. package/dist/__tests__/seo/schema-sync.test.d.ts.map +0 -1
  679. package/dist/__tests__/seo/schema-sync.test.js +0 -59
  680. package/dist/__tests__/seo/schema-sync.test.js.map +0 -1
  681. package/dist/__tests__/seo/score.test.d.ts +0 -2
  682. package/dist/__tests__/seo/score.test.d.ts.map +0 -1
  683. package/dist/__tests__/seo/score.test.js +0 -152
  684. package/dist/__tests__/seo/score.test.js.map +0 -1
  685. package/dist/__tests__/seo/settings-defaults.test.d.ts +0 -2
  686. package/dist/__tests__/seo/settings-defaults.test.d.ts.map +0 -1
  687. package/dist/__tests__/seo/settings-defaults.test.js +0 -189
  688. package/dist/__tests__/seo/settings-defaults.test.js.map +0 -1
  689. package/dist/__tests__/seo/sitemap-notify.test.d.ts +0 -2
  690. package/dist/__tests__/seo/sitemap-notify.test.d.ts.map +0 -1
  691. package/dist/__tests__/seo/sitemap-notify.test.js +0 -267
  692. package/dist/__tests__/seo/sitemap-notify.test.js.map +0 -1
  693. package/dist/__tests__/server-site.test.d.ts +0 -2
  694. package/dist/__tests__/server-site.test.d.ts.map +0 -1
  695. package/dist/__tests__/server-site.test.js +0 -173
  696. package/dist/__tests__/server-site.test.js.map +0 -1
  697. package/dist/__tests__/setup/index.test.d.ts +0 -2
  698. package/dist/__tests__/setup/index.test.d.ts.map +0 -1
  699. package/dist/__tests__/setup/index.test.js +0 -128
  700. package/dist/__tests__/setup/index.test.js.map +0 -1
  701. package/dist/__tests__/site.test.d.ts +0 -2
  702. package/dist/__tests__/site.test.d.ts.map +0 -1
  703. package/dist/__tests__/site.test.js +0 -81
  704. package/dist/__tests__/site.test.js.map +0 -1
  705. package/dist/__tests__/storage/auto-wire.test.d.ts +0 -2
  706. package/dist/__tests__/storage/auto-wire.test.d.ts.map +0 -1
  707. package/dist/__tests__/storage/auto-wire.test.js +0 -73
  708. package/dist/__tests__/storage/auto-wire.test.js.map +0 -1
  709. package/dist/__tests__/upgrade/version-check.test.d.ts +0 -2
  710. package/dist/__tests__/upgrade/version-check.test.d.ts.map +0 -1
  711. package/dist/__tests__/upgrade/version-check.test.js +0 -98
  712. package/dist/__tests__/upgrade/version-check.test.js.map +0 -1
  713. package/dist/__tests__/validation/publish.test.d.ts +0 -2
  714. package/dist/__tests__/validation/publish.test.d.ts.map +0 -1
  715. package/dist/__tests__/validation/publish.test.js +0 -164
  716. package/dist/__tests__/validation/publish.test.js.map +0 -1
  717. package/dist/__tests__/webhooks/webhooks.test.d.ts +0 -2
  718. package/dist/__tests__/webhooks/webhooks.test.d.ts.map +0 -1
  719. package/dist/__tests__/webhooks/webhooks.test.js +0 -96
  720. package/dist/__tests__/webhooks/webhooks.test.js.map +0 -1
  721. package/dist/cache/__tests__/http.test.d.ts +0 -2
  722. package/dist/cache/__tests__/http.test.d.ts.map +0 -1
  723. package/dist/cache/__tests__/http.test.js +0 -285
  724. package/dist/cache/__tests__/http.test.js.map +0 -1
  725. package/dist/db/__tests__/find-in-batches.test.d.ts +0 -2
  726. package/dist/db/__tests__/find-in-batches.test.d.ts.map +0 -1
  727. package/dist/db/__tests__/find-in-batches.test.js +0 -26
  728. package/dist/db/__tests__/find-in-batches.test.js.map +0 -1
  729. package/dist/fields/__tests__/presets.test.d.ts +0 -2
  730. package/dist/fields/__tests__/presets.test.d.ts.map +0 -1
  731. package/dist/fields/__tests__/presets.test.js +0 -29
  732. package/dist/fields/__tests__/presets.test.js.map +0 -1
  733. package/dist/page-builder/__tests__/a11y-fix.test.d.ts +0 -2
  734. package/dist/page-builder/__tests__/a11y-fix.test.d.ts.map +0 -1
  735. package/dist/page-builder/__tests__/a11y-fix.test.js +0 -242
  736. package/dist/page-builder/__tests__/a11y-fix.test.js.map +0 -1
  737. package/dist/page-builder/__tests__/blocks.test.d.ts +0 -2
  738. package/dist/page-builder/__tests__/blocks.test.d.ts.map +0 -1
  739. package/dist/page-builder/__tests__/blocks.test.js +0 -194
  740. package/dist/page-builder/__tests__/blocks.test.js.map +0 -1
  741. package/dist/page-builder/__tests__/design-scorer.test.d.ts +0 -2
  742. package/dist/page-builder/__tests__/design-scorer.test.d.ts.map +0 -1
  743. package/dist/page-builder/__tests__/design-scorer.test.js +0 -301
  744. package/dist/page-builder/__tests__/design-scorer.test.js.map +0 -1
  745. package/dist/page-builder/__tests__/schema.test.d.ts +0 -2
  746. package/dist/page-builder/__tests__/schema.test.d.ts.map +0 -1
  747. package/dist/page-builder/__tests__/schema.test.js +0 -191
  748. package/dist/page-builder/__tests__/schema.test.js.map +0 -1
  749. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts +0 -2
  750. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts.map +0 -1
  751. package/dist/page-builder/__tests__/seo-analyzer.test.js +0 -346
  752. package/dist/page-builder/__tests__/seo-analyzer.test.js.map +0 -1
  753. package/dist/page-builder/__tests__/tree.test.d.ts +0 -2
  754. package/dist/page-builder/__tests__/tree.test.d.ts.map +0 -1
  755. package/dist/page-builder/__tests__/tree.test.js +0 -257
  756. package/dist/page-builder/__tests__/tree.test.js.map +0 -1
  757. package/dist/posts/__tests__/query.test.d.ts +0 -2
  758. package/dist/posts/__tests__/query.test.d.ts.map +0 -1
  759. package/dist/posts/__tests__/query.test.js +0 -70
  760. package/dist/posts/__tests__/query.test.js.map +0 -1
  761. package/dist/sections/__tests__/bridge.test.d.ts +0 -2
  762. package/dist/sections/__tests__/bridge.test.d.ts.map +0 -1
  763. package/dist/sections/__tests__/bridge.test.js +0 -171
  764. package/dist/sections/__tests__/bridge.test.js.map +0 -1
  765. package/dist/sections/__tests__/define.test.d.ts +0 -2
  766. package/dist/sections/__tests__/define.test.d.ts.map +0 -1
  767. package/dist/sections/__tests__/define.test.js +0 -132
  768. package/dist/sections/__tests__/define.test.js.map +0 -1
  769. package/dist/sections/__tests__/embed.test.d.ts +0 -2
  770. package/dist/sections/__tests__/embed.test.d.ts.map +0 -1
  771. package/dist/sections/__tests__/embed.test.js +0 -54
  772. package/dist/sections/__tests__/embed.test.js.map +0 -1
  773. package/dist/sections/__tests__/media-enrich.test.d.ts +0 -2
  774. package/dist/sections/__tests__/media-enrich.test.d.ts.map +0 -1
  775. package/dist/sections/__tests__/media-enrich.test.js +0 -97
  776. package/dist/sections/__tests__/media-enrich.test.js.map +0 -1
  777. package/dist/sections/__tests__/sections.test.d.ts +0 -2
  778. package/dist/sections/__tests__/sections.test.d.ts.map +0 -1
  779. package/dist/sections/__tests__/sections.test.js +0 -453
  780. package/dist/sections/__tests__/sections.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-fix-ai.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/issue-fix-ai.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=issue-fix-orchestrator.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-fix-orchestrator.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/issue-fix-orchestrator.test.ts"],"names":[],"mappings":""}
@@ -1,48 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { suggestIssueFix } from '../../seo/issue-fix.js';
3
- const suggestAiFixMock = vi.fn();
4
- vi.mock('../../seo/issue-fix-ai.js', () => ({
5
- AI_FIX_TYPES: new Set(['duplicate-meta-title', 'missing-structured-data']),
6
- suggestAiFix: (...args) => suggestAiFixMock(...args),
7
- }));
8
- const entity = {
9
- entityType: 'page',
10
- entityId: 'doc-1',
11
- title: 'About',
12
- url: '/about',
13
- content: '<p>About us content here with enough words for SEO testing purposes.</p>',
14
- metaTitle: 'Shared Title',
15
- metaDescription: null,
16
- canonicalUrl: 'https://example.com/about',
17
- noindex: false,
18
- };
19
- describe('suggestIssueFix', () => {
20
- beforeEach(() => {
21
- suggestAiFixMock.mockReset();
22
- });
23
- it('returns deterministic fix without calling AI when available', async () => {
24
- const result = await suggestIssueFix({ type: 'accidental-noindex', title: 'Noindex', entityType: 'page', entityId: 'doc-1' }, { entity: { ...entity, noindex: true }, updatedAt: '2024-01-01T00:00:00.000Z' });
25
- expect(result.cacheForApply).toBe(false);
26
- expect(result.suggestion.source).toBe('deterministic');
27
- expect(result.suggestion.autoFixable).toBe(true);
28
- expect(suggestAiFixMock).not.toHaveBeenCalled();
29
- });
30
- it('falls back to AI for duplicate-meta-title', async () => {
31
- suggestAiFixMock.mockResolvedValue({
32
- ok: true,
33
- suggestion: {
34
- autoFixable: true,
35
- source: 'ai',
36
- fingerprint: 'doc-1:1:duplicate-meta-title',
37
- patch: { metaTitle: 'Unique About Page Title' },
38
- changes: [],
39
- justification: 'AI title',
40
- },
41
- });
42
- const result = await suggestIssueFix({ type: 'duplicate-meta-title', title: 'Dup', entityType: 'page', entityId: 'doc-1' }, { entity, updatedAt: '2024-01-01T00:00:00.000Z' }, { db: {}, userId: 'u1', collection: 'pages' });
43
- expect(suggestAiFixMock).toHaveBeenCalled();
44
- expect(result.cacheForApply).toBe(true);
45
- expect(result.suggestion.source).toBe('ai');
46
- });
47
- });
48
- //# sourceMappingURL=issue-fix-orchestrator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-fix-orchestrator.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/issue-fix-orchestrator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=issue-fix.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-fix.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/issue-fix.test.ts"],"names":[],"mappings":""}
@@ -1,98 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { suggestDeterministicFix, truncateAtWordBoundary, excerptForMetaDescription, buildFixFingerprint, META_TITLE_MAX, META_DESC_MAX, } from '../../seo/issue-fix.js';
3
- const baseEntity = {
4
- entityType: 'page',
5
- entityId: 'doc-1',
6
- title: 'How to Contact UpChat Support',
7
- url: '/support',
8
- content: '<p>Reach our team by email or chat. We respond within one business day and offer priority support on paid plans.</p>' +
9
- ' '.repeat(50),
10
- metaTitle: null,
11
- metaDescription: null,
12
- canonicalUrl: null,
13
- noindex: false,
14
- };
15
- const siteSeo = {
16
- siteName: 'UpChat',
17
- siteUrl: 'https://upchat.example',
18
- titleTemplate: '%page% — %site%',
19
- };
20
- describe('truncateAtWordBoundary', () => {
21
- it('returns short text unchanged', () => {
22
- expect(truncateAtWordBoundary('Hello world', 60)).toBe('Hello world');
23
- });
24
- it('truncates long text at a word boundary', () => {
25
- const long = 'word '.repeat(30).trim();
26
- const out = truncateAtWordBoundary(long, 40);
27
- expect(out.length).toBeLessThanOrEqual(40);
28
- expect(out.endsWith('word')).toBe(true);
29
- });
30
- });
31
- describe('excerptForMetaDescription', () => {
32
- it('strips HTML and caps length', () => {
33
- const out = excerptForMetaDescription(baseEntity.content ?? '', META_DESC_MAX);
34
- expect(out).not.toContain('<');
35
- expect(out.length).toBeLessThanOrEqual(META_DESC_MAX);
36
- expect(out.length).toBeGreaterThan(20);
37
- });
38
- });
39
- describe('suggestDeterministicFix', () => {
40
- const ctx = { entity: baseEntity, siteSeo, updatedAt: '2024-06-27T10:00:00.000Z' };
41
- it('suggests a meta title for missing-meta-title', () => {
42
- const s = suggestDeterministicFix({ type: 'missing-meta-title', title: 'Missing', entityId: 'doc-1', entityType: 'page' }, ctx);
43
- expect(s.autoFixable).toBe(true);
44
- expect(s.patch.metaTitle).toBe('How to Contact UpChat Support — UpChat');
45
- expect(s.changes[0]?.field).toBe('metaTitle');
46
- });
47
- it('truncates an over-long meta title', () => {
48
- const longTitle = 'A'.repeat(80);
49
- const s = suggestDeterministicFix({ type: 'meta-title-length', title: 'Too long', entityType: 'page', entityId: 'doc-1' }, {
50
- ...ctx,
51
- entity: { ...baseEntity, metaTitle: longTitle },
52
- });
53
- expect(s.autoFixable).toBe(true);
54
- expect(String(s.patch.metaTitle).length).toBeLessThanOrEqual(META_TITLE_MAX);
55
- });
56
- it('clears accidental noindex', () => {
57
- const s = suggestDeterministicFix({ type: 'accidental-noindex', title: 'Noindex', entityType: 'page', entityId: 'doc-1' }, { ...ctx, entity: { ...baseEntity, noindex: true } });
58
- expect(s.autoFixable).toBe(true);
59
- expect(s.patch).toEqual({ noindex: false });
60
- });
61
- it('drafts meta description from content when missing', () => {
62
- const s = suggestDeterministicFix({
63
- type: 'missing-meta-description',
64
- title: 'Missing desc',
65
- entityType: 'page',
66
- entityId: 'doc-1',
67
- }, ctx);
68
- expect(s.autoFixable).toBe(true);
69
- expect(String(s.patch.metaDescription).length).toBeGreaterThan(0);
70
- });
71
- it('truncates an over-long meta description', () => {
72
- const long = 'x'.repeat(200);
73
- const s = suggestDeterministicFix({
74
- type: 'meta-description-length',
75
- title: 'Long desc',
76
- entityType: 'page',
77
- entityId: 'doc-1',
78
- }, { ...ctx, entity: { ...baseEntity, metaDescription: long } });
79
- expect(s.autoFixable).toBe(true);
80
- expect(String(s.patch.metaDescription).length).toBeLessThanOrEqual(META_DESC_MAX);
81
- });
82
- it('sets canonical when site URL is configured', () => {
83
- const s = suggestDeterministicFix({ type: 'missing-canonical', title: 'Canonical', entityType: 'page', entityId: 'doc-1' }, ctx);
84
- expect(s.autoFixable).toBe(true);
85
- expect(s.patch.canonical).toBe('https://upchat.example/support');
86
- });
87
- it('returns manual-only for unsupported issue types', () => {
88
- const s = suggestDeterministicFix({ type: 'thin-content', title: 'Thin', entityType: 'page', entityId: 'doc-1' }, ctx);
89
- expect(s.autoFixable).toBe(false);
90
- expect(Object.keys(s.patch)).toHaveLength(0);
91
- });
92
- it('buildFixFingerprint changes when document updates', () => {
93
- const a = buildFixFingerprint('doc-1', 'missing-meta-title', '2024-01-01T00:00:00.000Z');
94
- const b = buildFixFingerprint('doc-1', 'missing-meta-title', '2024-06-01T00:00:00.000Z');
95
- expect(a).not.toBe(b);
96
- });
97
- });
98
- //# sourceMappingURL=issue-fix.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-fix.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/issue-fix.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,wBAAwB,CAAA;AAG/B,MAAM,UAAU,GAAqB;IACnC,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,+BAA+B;IACtC,GAAG,EAAE,UAAU;IACf,OAAO,EACL,sHAAsH;QACtH,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAChB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,KAAK;CACf,CAAA;AAED,MAAM,OAAO,GAAG;IACd,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,wBAAwB;IACjC,aAAa,EAAE,iBAAiB;CACjC,CAAA;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,sBAAsB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACtC,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,yBAAyB,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,aAAa,CAAC,CAAA;QAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAA;IAElF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,GAAG,uBAAuB,CAC/B,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EACvF,GAAG,CACJ,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACxE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,CAAC,GAAG,uBAAuB,CAC/B,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EACvF;YACE,GAAG,GAAG;YACN,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE;SAChD,CACF,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,GAAG,uBAAuB,CAC/B,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EACvF,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CACrD,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,GAAG,uBAAuB,CAC/B;YACE,IAAI,EAAE,0BAA0B;YAChC,KAAK,EAAE,cAAc;YACrB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,OAAO;SAClB,EACD,GAAG,CACJ,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,uBAAuB,CAC/B;YACE,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,OAAO;SAClB,EACD,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAC7D,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,GAAG,uBAAuB,CAC/B,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EACxF,GAAG,CACJ,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,GAAG,uBAAuB,CAC/B,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC9E,GAAG,CACJ,CAAA;QACD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CAAA;QACxF,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CAAA;QACxF,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=llms-sanitize.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llms-sanitize.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/llms-sanitize.test.ts"],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { generateLlmsTxt, sanitizeLlmsText } from '../../seo/llms-txt.js';
3
- describe('sanitizeLlmsText', () => {
4
- it('collapses newlines and whitespace into single spaces', () => {
5
- expect(sanitizeLlmsText('a\n\nb\t c d', 200)).toBe('a b c d');
6
- });
7
- it('strips markdown link-breaking characters', () => {
8
- expect(sanitizeLlmsText('foo [bar] (baz)', 200)).toBe('foo bar baz');
9
- });
10
- it('removes control and zero-width characters', () => {
11
- expect(sanitizeLlmsText('clean\u0000\u200btext', 200)).toBe('clean text');
12
- });
13
- it('caps length on a word boundary', () => {
14
- const out = sanitizeLlmsText('alpha beta gamma delta', 12);
15
- expect(out.length).toBeLessThanOrEqual(12);
16
- expect(out).toBe('alpha beta');
17
- });
18
- it('returns empty string for nullish input', () => {
19
- expect(sanitizeLlmsText(undefined, 200)).toBe('');
20
- expect(sanitizeLlmsText(null, 200)).toBe('');
21
- });
22
- });
23
- describe('generateLlmsTxt per-section cap', () => {
24
- it('limits entries per section to maxPerSection', () => {
25
- const pages = Array.from({ length: 6 }, (_, i) => ({
26
- title: `Page ${i}`,
27
- url: `https://acme.test/p${i}`,
28
- collection: 'pages',
29
- }));
30
- const out = generateLlmsTxt({ siteName: 'Acme', siteUrl: 'https://acme.test', maxPerSection: 3 }, pages);
31
- const items = (out.match(/^- \[Page /gm) ?? []).length;
32
- expect(items).toBe(3);
33
- });
34
- it('sanitizes the site summary into a single-line blockquote', () => {
35
- const out = generateLlmsTxt({ siteName: 'Acme', siteUrl: 'https://acme.test', siteDescription: 'Multi\nline\nsummary' }, []);
36
- expect(out).toContain('> Multi line summary');
37
- });
38
- });
39
- describe('generateLlmsTxt curation (Phase 1)', () => {
40
- const base = { siteName: 'Acme', siteUrl: 'https://acme.test' };
41
- it('routes optional entries into a reserved ## Optional section', () => {
42
- const out = generateLlmsTxt(base, [
43
- { title: 'Main', url: 'https://acme.test/main', collection: 'pages' },
44
- { title: 'Side', url: 'https://acme.test/side', collection: 'pages', optional: true },
45
- ]);
46
- const optionalIdx = out.indexOf('## Optional');
47
- expect(optionalIdx).toBeGreaterThan(-1);
48
- // The optional item appears under ## Optional, not the main Pages section.
49
- expect(out.indexOf('Side')).toBeGreaterThan(optionalIdx);
50
- expect(out.indexOf('Main')).toBeLessThan(optionalIdx);
51
- });
52
- it('honors an explicit section override', () => {
53
- const out = generateLlmsTxt(base, [
54
- { title: 'A Guide', url: 'https://acme.test/g', collection: 'pages', section: 'Guides' },
55
- ]);
56
- expect(out).toContain('## Guides');
57
- expect(out).not.toContain('## Pages');
58
- });
59
- it('sorts within a section by priority (higher first)', () => {
60
- const out = generateLlmsTxt(base, [
61
- { title: 'Low', url: 'https://acme.test/low', collection: 'pages', priority: 1 },
62
- { title: 'High', url: 'https://acme.test/high', collection: 'pages', priority: 10 },
63
- ]);
64
- expect(out.indexOf('High')).toBeLessThan(out.indexOf('Low'));
65
- });
66
- it('emits an intro block after the summary and drops stray headings', () => {
67
- const out = generateLlmsTxt({ ...base, siteDescription: 'Summary', intro: 'Context line.\n# Not a heading\nMore.' }, []);
68
- expect(out).toContain('> Summary');
69
- expect(out).toContain('Context line.');
70
- expect(out).toContain('More.');
71
- expect(out).not.toContain('# Not a heading');
72
- });
73
- });
74
- //# sourceMappingURL=llms-sanitize.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llms-sanitize.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/llms-sanitize.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=meta-tags-alternates.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta-tags-alternates.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/meta-tags-alternates.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { generateNextMetadata, renderMetaTagsHtml } from '../../seo/meta-tags.js';
3
- const BASE = {
4
- title: 'Hello',
5
- description: 'A page',
6
- url: 'https://example.com/hello',
7
- siteName: 'Acme',
8
- canonical: 'https://example.com/hello',
9
- };
10
- describe('meta-tags: metadataBase + hreflang alternates', () => {
11
- it('sets metadataBase as a URL in the Next metadata object', () => {
12
- const meta = generateNextMetadata({ ...BASE, metadataBase: 'https://example.com' });
13
- expect(meta.metadataBase).toBeInstanceOf(URL);
14
- expect(meta.metadataBase.href).toBe('https://example.com/');
15
- });
16
- it('ignores an unparseable metadataBase without throwing', () => {
17
- const meta = generateNextMetadata({ ...BASE, metadataBase: 'not a url' });
18
- expect(meta.metadataBase).toBeUndefined();
19
- });
20
- it('maps hreflang alternates to alternates.languages alongside canonical', () => {
21
- const meta = generateNextMetadata({
22
- ...BASE,
23
- alternates: [
24
- { hreflang: 'en', href: 'https://example.com/hello' },
25
- { hreflang: 'fr', href: 'https://example.com/fr/bonjour' },
26
- { hreflang: 'x-default', href: 'https://example.com/hello' },
27
- ],
28
- });
29
- expect(meta.alternates?.canonical).toBe('https://example.com/hello');
30
- expect(meta.alternates?.languages).toEqual({
31
- en: 'https://example.com/hello',
32
- fr: 'https://example.com/fr/bonjour',
33
- 'x-default': 'https://example.com/hello',
34
- });
35
- });
36
- it('renders <link rel="alternate" hreflang> tags in HTML output', () => {
37
- const html = renderMetaTagsHtml({
38
- ...BASE,
39
- alternates: [
40
- { hreflang: 'en', href: 'https://example.com/hello' },
41
- { hreflang: 'fr', href: 'https://example.com/fr/bonjour' },
42
- ],
43
- });
44
- expect(html).toContain('<link rel="alternate" hreflang="en" href="https://example.com/hello" />');
45
- expect(html).toContain('<link rel="alternate" hreflang="fr" href="https://example.com/fr/bonjour" />');
46
- });
47
- it('emits no alternates block when none are supplied and no canonical', () => {
48
- const meta = generateNextMetadata({ ...BASE, canonical: undefined });
49
- expect(meta.alternates).toBeUndefined();
50
- });
51
- });
52
- //# sourceMappingURL=meta-tags-alternates.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta-tags-alternates.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/meta-tags-alternates.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAqB,MAAM,wBAAwB,CAAA;AAEpG,MAAM,IAAI,GAAiB;IACzB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,QAAQ;IACrB,GAAG,EAAE,2BAA2B;IAChC,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,2BAA2B;CACvC,CAAA;AAED,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAGjF,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,CAAE,IAAI,CAAC,YAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAGvE,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,aAAa,EAAE,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,oBAAoB,CAAC;YAChC,GAAG,IAAI;YACP,UAAU,EAAE;gBACV,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,2BAA2B,EAAE;gBACrD,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE;gBAC1D,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,2BAA2B,EAAE;aAC7D;SACF,CAAgF,CAAA;QAEjF,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACpE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC;YACzC,EAAE,EAAE,2BAA2B;YAC/B,EAAE,EAAE,gCAAgC;YACpC,WAAW,EAAE,2BAA2B;SACzC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,IAAI,GAAG,kBAAkB,CAAC;YAC9B,GAAG,IAAI;YACP,UAAU,EAAE;gBACV,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,2BAA2B,EAAE;gBACrD,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE;aAC3D;SACF,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CACpB,yEAAyE,CAC1E,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CACpB,8EAA8E,CAC/E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAA4B,CAAA;QAC/F,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=migrate-meta.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-meta.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/migrate-meta.test.ts"],"names":[],"mappings":""}
@@ -1,75 +0,0 @@
1
- import { describe, expect, it, vi, beforeEach } from 'vitest';
2
- import { setActuateConfig } from '../../config/runtime.js';
3
- import { migrateMetaFields } from '../../seo/migrate-meta.js';
4
- const { updateDocumentSeoFieldsMock } = vi.hoisted(() => ({
5
- updateDocumentSeoFieldsMock: vi.fn(async () => ({})),
6
- }));
7
- vi.mock('../../actions.js', async (importOriginal) => {
8
- const actual = await importOriginal();
9
- return {
10
- ...actual,
11
- updateDocumentSeoFields: updateDocumentSeoFieldsMock,
12
- };
13
- });
14
- function ctxFor(db) {
15
- return { userId: 'admin-1', role: 'ADMIN', db, locale: 'en' };
16
- }
17
- describe('migrateMetaFields', () => {
18
- beforeEach(() => {
19
- updateDocumentSeoFieldsMock.mockClear();
20
- setActuateConfig({
21
- seo: {
22
- siteName: 'Acme',
23
- siteUrl: 'https://acme.com',
24
- titleTemplate: '%page% | %site%',
25
- },
26
- collections: {
27
- pages: { slug: 'pages', type: 'page', fields: [] },
28
- },
29
- });
30
- });
31
- it('stamps metaTitle from title template when missing', async () => {
32
- const db = {
33
- document: {
34
- findMany: vi
35
- .fn()
36
- .mockResolvedValueOnce([
37
- {
38
- id: 'p1',
39
- collection: 'pages',
40
- title: 'About',
41
- slug: 'about',
42
- status: 'PUBLISHED',
43
- data: { title: 'About', slug: 'about' },
44
- publishedAt: new Date(),
45
- },
46
- ])
47
- .mockResolvedValueOnce([]),
48
- },
49
- };
50
- const result = await migrateMetaFields(ctxFor(db), { batchSize: 10 });
51
- expect(result.migrated).toBe(1);
52
- expect(updateDocumentSeoFieldsMock).toHaveBeenCalledWith('pages', 'p1', expect.objectContaining({ metaTitle: 'About | Acme' }), expect.any(Object));
53
- });
54
- it('dry run reports without writing', async () => {
55
- const db = {
56
- document: {
57
- findMany: vi.fn().mockResolvedValueOnce([
58
- {
59
- id: 'p1',
60
- collection: 'pages',
61
- title: 'About',
62
- slug: 'about',
63
- status: 'PUBLISHED',
64
- data: { title: 'About' },
65
- publishedAt: new Date(),
66
- },
67
- ]),
68
- },
69
- };
70
- const result = await migrateMetaFields(ctxFor(db), { dryRun: true });
71
- expect(result.migrated).toBe(1);
72
- expect(updateDocumentSeoFieldsMock).not.toHaveBeenCalled();
73
- });
74
- });
75
- //# sourceMappingURL=migrate-meta.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-meta.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/migrate-meta.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=migrate-schema.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-schema.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/migrate-schema.test.ts"],"names":[],"mappings":""}
@@ -1,97 +0,0 @@
1
- import { describe, expect, it, vi, beforeEach } from 'vitest';
2
- import { setActuateConfig } from '../../config/runtime.js';
3
- import { migrateStructuredDataFields } from '../../seo/migrate-schema.js';
4
- const { updateDocumentSeoFieldsMock } = vi.hoisted(() => ({
5
- updateDocumentSeoFieldsMock: vi.fn(async () => ({})),
6
- }));
7
- vi.mock('../../actions.js', async (importOriginal) => {
8
- const actual = await importOriginal();
9
- return {
10
- ...actual,
11
- updateDocumentSeoFields: updateDocumentSeoFieldsMock,
12
- };
13
- });
14
- function ctxFor(db) {
15
- return { userId: 'admin-1', role: 'ADMIN', db, locale: 'en' };
16
- }
17
- describe('migrateStructuredDataFields', () => {
18
- beforeEach(() => {
19
- updateDocumentSeoFieldsMock.mockClear();
20
- setActuateConfig({
21
- collections: {
22
- pages: { slug: 'pages', type: 'page', fields: [] },
23
- },
24
- });
25
- });
26
- it('stamps schema types on published pages missing structuredDataType', async () => {
27
- const update = vi.fn(async () => ({}));
28
- const db = {
29
- document: {
30
- findMany: vi
31
- .fn()
32
- .mockResolvedValueOnce([
33
- {
34
- id: 'p1',
35
- collection: 'pages',
36
- slug: 'home',
37
- status: 'PUBLISHED',
38
- data: { title: 'Home', slug: 'home' },
39
- structuredData: null,
40
- publishedAt: new Date(),
41
- updatedAt: new Date(),
42
- },
43
- ])
44
- .mockResolvedValueOnce([]),
45
- update,
46
- },
47
- };
48
- const result = await migrateStructuredDataFields(ctxFor(db), { batchSize: 10 });
49
- expect(result.scanned).toBe(1);
50
- expect(result.migrated).toBe(1);
51
- expect(updateDocumentSeoFieldsMock).toHaveBeenCalledWith('pages', 'p1', expect.objectContaining({ structuredDataType: 'WebPage', schemaType: 'WebPage' }), expect.any(Object));
52
- });
53
- it('skips documents that already have schema type and JSON-LD', async () => {
54
- const db = {
55
- document: {
56
- findMany: vi.fn().mockResolvedValueOnce([
57
- {
58
- id: 'p1',
59
- collection: 'pages',
60
- slug: 'home',
61
- status: 'PUBLISHED',
62
- data: { title: 'Home', structuredDataType: 'WebPage', schemaType: 'WebPage' },
63
- structuredData: { '@context': 'https://schema.org', '@type': 'WebPage' },
64
- publishedAt: new Date(),
65
- updatedAt: new Date(),
66
- },
67
- ]),
68
- },
69
- };
70
- const result = await migrateStructuredDataFields(ctxFor(db));
71
- expect(result.migrated).toBe(0);
72
- expect(result.skipped).toBe(1);
73
- expect(updateDocumentSeoFieldsMock).not.toHaveBeenCalled();
74
- });
75
- it('dry run reports without writing', async () => {
76
- const db = {
77
- document: {
78
- findMany: vi.fn().mockResolvedValueOnce([
79
- {
80
- id: 'p1',
81
- collection: 'pages',
82
- slug: 'home',
83
- status: 'DRAFT',
84
- data: { title: 'Draft' },
85
- structuredData: null,
86
- publishedAt: null,
87
- updatedAt: new Date(),
88
- },
89
- ]),
90
- },
91
- };
92
- const result = await migrateStructuredDataFields(ctxFor(db), { dryRun: true });
93
- expect(result.migrated).toBe(1);
94
- expect(updateDocumentSeoFieldsMock).not.toHaveBeenCalled();
95
- });
96
- });
97
- //# sourceMappingURL=migrate-schema.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate-schema.test.js","sourceRoot":"","sources":["../../../src/__tests__/seo/migrate-schema.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=page-meta.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-meta.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/seo/page-meta.test.ts"],"names":[],"mappings":""}