@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,42 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { fileURLToPath } from 'node:url';
3
- import { dirname, resolve } from 'node:path';
4
- import { describe, expect, it } from 'vitest';
5
- /**
6
- * Guard against the Phase 5.5 regression where `relationLoadStrategy:
7
- * 'join'` was added to the dashboard / versions / bench queries
8
- * without the `relationJoins` Preview-feature flag in the schema.
9
- * Prisma silently rejects the option as an "Unknown argument" when
10
- * the flag is missing — for `safeFindMany` callers that surfaces as
11
- * an empty result and for the versions endpoint as a 500 to the
12
- * client. Either failure mode is hard to spot without a deliberate
13
- * bench run, so pin the schema's preview-feature set with a tiny
14
- * test rather than a code-review-only convention.
15
- *
16
- * If the preview-feature set legitimately needs to change, update
17
- * the assertion below in the same commit — that way the rationale
18
- * surfaces in the diff.
19
- */
20
- describe('Prisma schema preview features', () => {
21
- const here = dirname(fileURLToPath(import.meta.url));
22
- const schemaPath = resolve(here, '..', '..', 'prisma', 'schema.prisma');
23
- const schema = readFileSync(schemaPath, 'utf8');
24
- it('declares relationJoins so `relationLoadStrategy: "join"` is honoured', () => {
25
- const match = schema.match(/previewFeatures\s*=\s*\[([^\]]*)\]/);
26
- expect(match, 'schema.prisma must declare a previewFeatures array').not.toBeNull();
27
- const features = (match[1] ?? '')
28
- .split(',')
29
- .map((s) => s.trim().replace(/^"|"$/g, ''))
30
- .filter(Boolean);
31
- expect(features).toContain('relationJoins');
32
- });
33
- it('still declares fullTextSearchPostgres (search uses it)', () => {
34
- const match = schema.match(/previewFeatures\s*=\s*\[([^\]]*)\]/);
35
- const features = (match[1] ?? '')
36
- .split(',')
37
- .map((s) => s.trim().replace(/^"|"$/g, ''))
38
- .filter(Boolean);
39
- expect(features).toContain('fullTextSearchPostgres');
40
- });
41
- });
42
- //# sourceMappingURL=schema-preview-features.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-preview-features.test.js","sourceRoot":"","sources":["../../src/__tests__/schema-preview-features.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C;;;;;;;;;;;;;;GAcG;AACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAE/C,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QAClF,MAAM,QAAQ,GAAG,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAC1C,MAAM,CAAC,OAAO,CAAC,CAAA;QAClB,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAChE,MAAM,QAAQ,GAAG,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAC1C,MAAM,CAAC,OAAO,CAAC,CAAA;QAClB,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sections-migrate.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sections-migrate.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/sections/sections-migrate.test.ts"],"names":[],"mappings":""}
@@ -1,145 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { migratePageBuilderSections } from '../../sections/migrate.js';
3
- /**
4
- * Mock Prisma supporting the keyset scan used by the migration plus the
5
- * read/transaction surface `updateDocument` needs.
6
- */
7
- function createMockDB() {
8
- const docs = new Map();
9
- const versions = [];
10
- function sortedNonDeleted() {
11
- return [...docs.values()]
12
- .filter((d) => d.deletedAt === null)
13
- .sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
14
- }
15
- const txClient = {
16
- document: {
17
- update: vi.fn(async ({ where, data: updateData }) => {
18
- const doc = docs.get(where.id);
19
- if (!doc)
20
- throw new Error('Not found');
21
- Object.assign(doc, updateData);
22
- return doc;
23
- }),
24
- },
25
- version: {
26
- create: vi.fn(async ({ data }) => {
27
- const v = { id: `ver-${versions.length}`, ...data, createdAt: new Date() };
28
- versions.push(v);
29
- return v;
30
- }),
31
- },
32
- };
33
- return {
34
- document: {
35
- findMany: vi.fn(async ({ take, skip, cursor, select } = {}) => {
36
- let arr = sortedNonDeleted();
37
- if (cursor?.id) {
38
- const idx = arr.findIndex((d) => d.id === cursor.id);
39
- if (idx >= 0)
40
- arr = arr.slice(idx + (skip ?? 0));
41
- }
42
- if (typeof take === 'number')
43
- arr = arr.slice(0, take);
44
- if (select) {
45
- arr = arr.map((d) => {
46
- const picked = {};
47
- for (const k of Object.keys(select))
48
- picked[k] = d[k];
49
- return picked;
50
- });
51
- }
52
- return arr;
53
- }),
54
- findFirst: vi.fn(async ({ where }) => {
55
- for (const doc of docs.values()) {
56
- if (where.id && doc.id !== where.id)
57
- continue;
58
- if (where.collection && doc.collection !== where.collection)
59
- continue;
60
- if (where.deletedAt === null && doc.deletedAt !== null)
61
- continue;
62
- return doc;
63
- }
64
- return null;
65
- }),
66
- },
67
- version: txClient.version,
68
- $transaction: vi.fn(async (fn) => fn(txClient)),
69
- _docs: docs,
70
- _versions: versions,
71
- };
72
- }
73
- function ctxFor(db) {
74
- return { userId: 'admin-1', role: 'ADMIN', db };
75
- }
76
- const HERO_LAYOUT = {
77
- type: 'page',
78
- children: [
79
- {
80
- type: 'section',
81
- settings: { htmlId: 'top' },
82
- children: [
83
- { type: 'block', settings: { blockType: 'hero' }, data: { title: 'Hi', subtitle: 'Yo' } },
84
- ],
85
- },
86
- ],
87
- };
88
- function seedDoc(db, id, data) {
89
- db._docs.set(id, { id, collection: 'pages', status: 'PUBLISHED', data, deletedAt: null });
90
- }
91
- describe('migratePageBuilderSections (ADR 0002 backfill)', () => {
92
- let db;
93
- beforeEach(() => {
94
- db = createMockDB();
95
- });
96
- it('backfills sections for a legacy _layout-only document', async () => {
97
- seedDoc(db, 'doc-1', { title: 'Legacy', _layout: HERO_LAYOUT });
98
- const result = await migratePageBuilderSections(ctxFor(db));
99
- expect(result.scanned).toBe(1);
100
- expect(result.migrated).toBe(1);
101
- expect(result.migratedIds).toEqual(['doc-1']);
102
- const sections = db._docs.get('doc-1').data.sections;
103
- expect(sections[0].sectionType).toBe('hero');
104
- expect(sections[0].content.heading).toBe('Hi');
105
- });
106
- it('is idempotent — a second run migrates nothing', async () => {
107
- seedDoc(db, 'doc-1', { title: 'Legacy', _layout: HERO_LAYOUT });
108
- await migratePageBuilderSections(ctxFor(db));
109
- const second = await migratePageBuilderSections(ctxFor(db));
110
- expect(second.migrated).toBe(0);
111
- expect(second.skipped).toBe(1);
112
- });
113
- it('skips documents that already have sections, and those with no _layout', async () => {
114
- seedDoc(db, 'doc-1', { title: 'Already', _layout: HERO_LAYOUT, sections: [{ id: 'x' }] });
115
- seedDoc(db, 'doc-2', { title: 'Flat', sections: [{ id: 'y' }] });
116
- seedDoc(db, 'doc-3', { title: 'Bare' });
117
- const result = await migratePageBuilderSections(ctxFor(db));
118
- expect(result.scanned).toBe(3);
119
- expect(result.migrated).toBe(0);
120
- expect(result.skipped).toBe(3);
121
- });
122
- it('skips a layout that compiles to nothing (leaves it for the read-time bridge)', async () => {
123
- seedDoc(db, 'doc-1', { title: 'Empty', _layout: { type: 'page', children: [] } });
124
- const result = await migratePageBuilderSections(ctxFor(db));
125
- expect(result.migrated).toBe(0);
126
- expect(result.skipped).toBe(1);
127
- expect(db._docs.get('doc-1').data.sections).toBeUndefined();
128
- });
129
- it('dryRun reports counts without writing', async () => {
130
- seedDoc(db, 'doc-1', { title: 'Legacy', _layout: HERO_LAYOUT });
131
- const result = await migratePageBuilderSections(ctxFor(db), { dryRun: true });
132
- expect(result.migrated).toBe(1);
133
- expect(db._docs.get('doc-1').data.sections).toBeUndefined();
134
- });
135
- it('pages through batches (batchSize smaller than the doc count)', async () => {
136
- seedDoc(db, 'doc-1', { title: 'A', _layout: HERO_LAYOUT });
137
- seedDoc(db, 'doc-2', { title: 'B', _layout: HERO_LAYOUT });
138
- seedDoc(db, 'doc-3', { title: 'C', _layout: HERO_LAYOUT });
139
- const result = await migratePageBuilderSections(ctxFor(db), { batchSize: 1 });
140
- expect(result.scanned).toBe(3);
141
- expect(result.migrated).toBe(3);
142
- expect(result.migratedIds.sort()).toEqual(['doc-1', 'doc-2', 'doc-3']);
143
- });
144
- });
145
- //# sourceMappingURL=sections-migrate.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sections-migrate.test.js","sourceRoot":"","sources":["../../../src/__tests__/sections/sections-migrate.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=access.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"access.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/security/access.test.ts"],"names":[],"mappings":""}
@@ -1,181 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { checkAccess, getPermissionsForRole, filterFieldsByRole, applyFieldAccess, } from '../../security/access.js';
3
- describe('checkAccess', () => {
4
- it('ADMIN can access everything', () => {
5
- expect(checkAccess('ADMIN', 'ADMIN')).toBe(true);
6
- expect(checkAccess('ADMIN', 'EDITOR')).toBe(true);
7
- expect(checkAccess('ADMIN', 'AUTHOR')).toBe(true);
8
- expect(checkAccess('ADMIN', 'CLIENT')).toBe(true);
9
- });
10
- it('EDITOR can access AUTHOR level', () => {
11
- expect(checkAccess('EDITOR', 'AUTHOR')).toBe(true);
12
- expect(checkAccess('EDITOR', 'CLIENT')).toBe(true);
13
- expect(checkAccess('EDITOR', 'EDITOR')).toBe(true);
14
- });
15
- it('EDITOR cannot access ADMIN level', () => {
16
- expect(checkAccess('EDITOR', 'ADMIN')).toBe(false);
17
- });
18
- it('AUTHOR cannot access EDITOR level', () => {
19
- expect(checkAccess('AUTHOR', 'EDITOR')).toBe(false);
20
- expect(checkAccess('AUTHOR', 'ADMIN')).toBe(false);
21
- });
22
- it('AUTHOR can access AUTHOR and CLIENT levels', () => {
23
- expect(checkAccess('AUTHOR', 'AUTHOR')).toBe(true);
24
- expect(checkAccess('AUTHOR', 'CLIENT')).toBe(true);
25
- });
26
- it('CLIENT cannot access AUTHOR level', () => {
27
- expect(checkAccess('CLIENT', 'AUTHOR')).toBe(false);
28
- expect(checkAccess('CLIENT', 'EDITOR')).toBe(false);
29
- expect(checkAccess('CLIENT', 'ADMIN')).toBe(false);
30
- });
31
- it('CLIENT can access CLIENT level', () => {
32
- expect(checkAccess('CLIENT', 'CLIENT')).toBe(true);
33
- });
34
- });
35
- describe('getPermissionsForRole', () => {
36
- it('ADMIN gets delete permission', () => {
37
- const perms = getPermissionsForRole('ADMIN');
38
- const actions = perms.map((p) => p.action);
39
- expect(actions).toContain('delete');
40
- expect(actions).toContain('create');
41
- expect(actions).toContain('read');
42
- expect(actions).toContain('update');
43
- expect(actions).toContain('publish');
44
- });
45
- it('EDITOR gets publish but not delete', () => {
46
- const perms = getPermissionsForRole('EDITOR');
47
- const actions = perms.map((p) => p.action);
48
- expect(actions).toContain('publish');
49
- expect(actions).toContain('read');
50
- expect(actions).toContain('create');
51
- expect(actions).not.toContain('delete');
52
- });
53
- it('AUTHOR gets create but not delete', () => {
54
- const perms = getPermissionsForRole('AUTHOR');
55
- const actions = perms.map((p) => p.action);
56
- expect(actions).toContain('read');
57
- expect(actions).toContain('create');
58
- expect(actions).not.toContain('delete');
59
- expect(actions).not.toContain('publish');
60
- });
61
- it('CLIENT only gets read permission', () => {
62
- const perms = getPermissionsForRole('CLIENT');
63
- const actions = perms.map((p) => p.action);
64
- expect(actions).toEqual(['read']);
65
- });
66
- it('AUTHOR has "update own" but not "update *"', () => {
67
- const perms = getPermissionsForRole('AUTHOR');
68
- const updatePerms = perms.filter((p) => p.action === 'update');
69
- expect(updatePerms).toHaveLength(1);
70
- expect(updatePerms[0].resource).toBe('own');
71
- });
72
- it('EDITOR has "update *" (all resources)', () => {
73
- const perms = getPermissionsForRole('EDITOR');
74
- const updatePerms = perms.filter((p) => p.action === 'update');
75
- const resources = updatePerms.map((p) => p.resource);
76
- expect(resources).toContain('*');
77
- });
78
- });
79
- describe('filterFieldsByRole', () => {
80
- const adminUser = { id: 'admin-1', role: 'ADMIN' };
81
- const clientUser = { id: 'client-1', role: 'CLIENT' };
82
- it('returns all fields when no access control is defined', async () => {
83
- const fields = {
84
- title: { type: 'text', label: 'Title', required: true },
85
- body: { type: 'richText', label: 'Body' },
86
- };
87
- const filtered = await filterFieldsByRole(fields, clientUser);
88
- expect(Object.keys(filtered)).toEqual(['title', 'body']);
89
- });
90
- it('returns a shallow copy, not the same reference', async () => {
91
- const fields = {
92
- name: { type: 'text', label: 'Name' },
93
- };
94
- const filtered = await filterFieldsByRole(fields, adminUser);
95
- expect(filtered).not.toBe(fields);
96
- expect(filtered).toEqual(fields);
97
- });
98
- it('filters out fields the user cannot read', async () => {
99
- const fields = {
100
- title: { type: 'text', label: 'Title' },
101
- secret: {
102
- type: 'text',
103
- label: 'Secret',
104
- access: {
105
- read: async ({ user }) => user?.role === 'ADMIN',
106
- },
107
- },
108
- };
109
- const clientFiltered = await filterFieldsByRole(fields, clientUser);
110
- expect(Object.keys(clientFiltered)).toEqual(['title']);
111
- const adminFiltered = await filterFieldsByRole(fields, adminUser);
112
- expect(Object.keys(adminFiltered)).toEqual(['title', 'secret']);
113
- });
114
- });
115
- describe('applyFieldAccess', () => {
116
- const adminUser = { id: 'admin-1', role: 'ADMIN' };
117
- const clientUser = { id: 'client-1', role: 'CLIENT' };
118
- it('read mode: strips fields the user cannot read', async () => {
119
- const fields = {
120
- title: { type: 'text', label: 'Title' },
121
- internal: {
122
- type: 'text',
123
- label: 'Internal',
124
- access: {
125
- read: async ({ user }) => user?.role === 'ADMIN',
126
- },
127
- },
128
- };
129
- const data = { title: 'Hello', internal: 'secret-value', extra: 'kept' };
130
- const clientResult = await applyFieldAccess('read', fields, data, clientUser);
131
- expect(clientResult).toEqual({ title: 'Hello', extra: 'kept' });
132
- const adminResult = await applyFieldAccess('read', fields, data, adminUser);
133
- expect(adminResult).toEqual({ title: 'Hello', internal: 'secret-value', extra: 'kept' });
134
- });
135
- it('write mode: strips fields the user cannot update', async () => {
136
- const fields = {
137
- title: { type: 'text', label: 'Title' },
138
- locked: {
139
- type: 'text',
140
- label: 'Locked',
141
- access: {
142
- update: async ({ user }) => user?.role === 'ADMIN',
143
- },
144
- },
145
- };
146
- const data = { title: 'New Title', locked: 'overwrite-attempt' };
147
- const clientResult = await applyFieldAccess('write', fields, data, clientUser);
148
- expect(clientResult).toEqual({ title: 'New Title' });
149
- const adminResult = await applyFieldAccess('write', fields, data, adminUser);
150
- expect(adminResult).toEqual({ title: 'New Title', locked: 'overwrite-attempt' });
151
- });
152
- it('passes through unknown keys on read', async () => {
153
- const fields = {
154
- title: { type: 'text', label: 'Title' },
155
- };
156
- const data = { title: 'Hello', unknownField: 'value' };
157
- const result = await applyFieldAccess('read', fields, data, clientUser);
158
- expect(result).toEqual({ title: 'Hello', unknownField: 'value' });
159
- });
160
- it('strips unknown keys on write (mass assignment prevention)', async () => {
161
- const fields = {
162
- title: { type: 'text', label: 'Title' },
163
- };
164
- const data = { title: 'Hello', isAdmin: true, role: 'ADMIN' };
165
- const result = await applyFieldAccess('write', fields, data, clientUser);
166
- expect(result).toEqual({ title: 'Hello' });
167
- expect(result).not.toHaveProperty('isAdmin');
168
- expect(result).not.toHaveProperty('role');
169
- });
170
- it('allows system keys on write', async () => {
171
- const fields = {
172
- body: { type: 'richText', label: 'Body' },
173
- };
174
- const data = { body: '<p>Hi</p>', title: 'My Page', slug: 'my-page', status: 'PUBLISHED' };
175
- const result = await applyFieldAccess('write', fields, data, clientUser);
176
- expect(result).toHaveProperty('title');
177
- expect(result).toHaveProperty('slug');
178
- expect(result).toHaveProperty('status');
179
- });
180
- });
181
- //# sourceMappingURL=access.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"access.test.js","sourceRoot":"","sources":["../../../src/__tests__/security/access.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api-key-enhanced.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key-enhanced.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/security/api-key-enhanced.test.ts"],"names":[],"mappings":""}
@@ -1,110 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { generateApiKey, hashApiKey, looksLikeApiKey, validateApiKeyScope, validateApiKeyGlobalScope, validateApiKeyMediaScope, validateApiKeyPageBuilderScope, validateApiKeyIp, } from '../../security/api-key-enhanced.js';
3
- describe('generateApiKey', () => {
4
- it('returns a key, hash, and prefix with the expected shape', async () => {
5
- const { key, keyHash, keyPrefix } = await generateApiKey({
6
- prefix: 'act_sk',
7
- scopes: { admin: true },
8
- });
9
- expect(key).toMatch(/^act_sk_[a-f0-9]{64}$/);
10
- expect(keyHash).toMatch(/^[a-f0-9]{64}$/);
11
- expect(keyPrefix.startsWith('act_sk_')).toBe(true);
12
- expect(keyPrefix.length).toBe(15);
13
- });
14
- it('produces unique keys on each call', async () => {
15
- const a = await generateApiKey({ prefix: 'act_sk', scopes: { admin: true } });
16
- const b = await generateApiKey({ prefix: 'act_sk', scopes: { admin: true } });
17
- expect(a.key).not.toBe(b.key);
18
- expect(a.keyHash).not.toBe(b.keyHash);
19
- });
20
- it('hashApiKey is deterministic for the same input', async () => {
21
- const { key } = await generateApiKey({ prefix: 'act_sk', scopes: { admin: true } });
22
- const h1 = await hashApiKey(key);
23
- const h2 = await hashApiKey(key);
24
- expect(h1).toBe(h2);
25
- });
26
- });
27
- describe('looksLikeApiKey', () => {
28
- it('matches valid act_sk_ tokens', () => {
29
- expect(looksLikeApiKey('act_sk_' + 'a'.repeat(64))).toBe(true);
30
- expect(looksLikeApiKey('act_sk_' + '0'.repeat(40))).toBe(true);
31
- });
32
- it('rejects non-API-key tokens', () => {
33
- expect(looksLikeApiKey('not_a_key')).toBe(false);
34
- expect(looksLikeApiKey('act_sk_short')).toBe(false);
35
- expect(looksLikeApiKey('eyJhbGciOiJIUzI1NiJ9.foo.bar')).toBe(false);
36
- });
37
- });
38
- describe('validateApiKeyScope', () => {
39
- it('admin scope always passes', () => {
40
- expect(validateApiKeyScope({ admin: true }, 'anything', 'delete')).toBe(true);
41
- });
42
- it('denies when no collections are configured', () => {
43
- expect(validateApiKeyScope({}, 'posts', 'read')).toBe(false);
44
- });
45
- it('denies when action is not in the actions list', () => {
46
- expect(validateApiKeyScope({ collections: ['posts'], actions: ['read'] }, 'posts', 'delete')).toBe(false);
47
- });
48
- it('allows when collection and action match', () => {
49
- expect(validateApiKeyScope({ collections: ['posts'], actions: ['read', 'create'] }, 'posts', 'create')).toBe(true);
50
- });
51
- it('wildcard collection matches anything', () => {
52
- expect(validateApiKeyScope({ collections: ['*'], actions: ['read'] }, 'random', 'read')).toBe(true);
53
- });
54
- it('does not match a different collection without wildcard', () => {
55
- expect(validateApiKeyScope({ collections: ['posts'], actions: ['read'] }, 'pages', 'read')).toBe(false);
56
- });
57
- });
58
- describe('validateApiKeyGlobalScope', () => {
59
- it('admin passes globals check', () => {
60
- expect(validateApiKeyGlobalScope({ admin: true }, 'site-settings')).toBe(true);
61
- });
62
- it('denies when no globals scope is granted', () => {
63
- expect(validateApiKeyGlobalScope({}, 'site-settings')).toBe(false);
64
- });
65
- it('matches explicit slug', () => {
66
- expect(validateApiKeyGlobalScope({ globals: ['site-settings'] }, 'site-settings')).toBe(true);
67
- });
68
- it('matches wildcard', () => {
69
- expect(validateApiKeyGlobalScope({ globals: ['*'] }, 'anything')).toBe(true);
70
- });
71
- });
72
- describe('validateApiKeyMediaScope', () => {
73
- it('admin passes', () => {
74
- expect(validateApiKeyMediaScope({ admin: true })).toBe(true);
75
- });
76
- it('media flag passes', () => {
77
- expect(validateApiKeyMediaScope({ media: true })).toBe(true);
78
- });
79
- it('without flag fails', () => {
80
- expect(validateApiKeyMediaScope({})).toBe(false);
81
- });
82
- });
83
- describe('validateApiKeyPageBuilderScope', () => {
84
- it('admin passes', () => {
85
- expect(validateApiKeyPageBuilderScope({ admin: true })).toBe(true);
86
- });
87
- it('pageBuilder flag passes', () => {
88
- expect(validateApiKeyPageBuilderScope({ pageBuilder: true })).toBe(true);
89
- });
90
- it('without flag fails', () => {
91
- expect(validateApiKeyPageBuilderScope({})).toBe(false);
92
- });
93
- });
94
- describe('validateApiKeyIp', () => {
95
- it('allows when no restrictions set', () => {
96
- expect(validateApiKeyIp(null, '1.2.3.4')).toBe(true);
97
- expect(validateApiKeyIp([], '1.2.3.4')).toBe(true);
98
- expect(validateApiKeyIp(undefined, '1.2.3.4')).toBe(true);
99
- });
100
- it('allows when IP is in the allowlist', () => {
101
- expect(validateApiKeyIp(['1.2.3.4', '5.6.7.8'], '5.6.7.8')).toBe(true);
102
- });
103
- it('denies when IP is not in the allowlist', () => {
104
- expect(validateApiKeyIp(['1.2.3.4'], '5.6.7.8')).toBe(false);
105
- });
106
- it('denies when client IP is unknown but restrictions are set', () => {
107
- expect(validateApiKeyIp(['1.2.3.4'], 'unknown')).toBe(false);
108
- });
109
- });
110
- //# sourceMappingURL=api-key-enhanced.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key-enhanced.test.js","sourceRoot":"","sources":["../../../src/__tests__/security/api-key-enhanced.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=audit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/security/audit.test.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { initDB } from '../../db.js';
3
- import { logEvent, getAuditLog } from '../../security/audit.js';
4
- function createMockDB() {
5
- const records = [];
6
- return {
7
- auditLog: {
8
- create: async ({ data }) => {
9
- const row = { ...data, id: `log-${records.length + 1}`, timestamp: new Date() };
10
- records.push(row);
11
- return row;
12
- },
13
- findMany: async ({ where, orderBy, skip, take }) => {
14
- let filtered = records;
15
- if (where?.event)
16
- filtered = filtered.filter((r) => r.event === where.event);
17
- if (orderBy?.timestamp === 'desc') {
18
- filtered = [...filtered].sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
19
- }
20
- return filtered.slice(skip ?? 0, (skip ?? 0) + (take ?? filtered.length));
21
- },
22
- count: async ({ where }) => {
23
- if (!where?.event)
24
- return records.length;
25
- return records.filter((r) => r.event === where.event).length;
26
- },
27
- },
28
- };
29
- }
30
- describe('audit log', () => {
31
- it('logEvent stores an entry and getAuditLog reads it back', async () => {
32
- const db = createMockDB();
33
- initDB(db);
34
- await logEvent({ event: 'login_success', userId: 'u1', ipAddress: '203.0.113.5' });
35
- const result = await getAuditLog({ event: 'login_success' });
36
- expect(result.total).toBe(1);
37
- expect(result.entries[0]).toMatchObject({ event: 'login_success', userId: 'u1' });
38
- });
39
- it('getAuditLog orders by timestamp (regression: previously used non-existent createdAt column)', async () => {
40
- const db = createMockDB();
41
- initDB(db);
42
- await logEvent({ event: 'a' });
43
- await new Promise((r) => setTimeout(r, 5));
44
- await logEvent({ event: 'b' });
45
- const result = await getAuditLog({});
46
- expect(result.entries[0]?.event).toBe('b');
47
- expect(result.entries[1]?.event).toBe('a');
48
- });
49
- });
50
- //# sourceMappingURL=audit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.test.js","sourceRoot":"","sources":["../../../src/__tests__/security/audit.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=center.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"center.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/security/center.test.ts"],"names":[],"mappings":""}