@actuate-media/cms-core 0.83.0 → 0.85.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 (814) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/api/route-helpers.d.ts +2 -0
  3. package/dist/api/route-helpers.d.ts.map +1 -1
  4. package/dist/api/route-helpers.js +119 -37
  5. package/dist/api/route-helpers.js.map +1 -1
  6. package/dist/config/types.d.ts +15 -0
  7. package/dist/config/types.d.ts.map +1 -1
  8. package/dist/content/structured-data.d.ts +1 -0
  9. package/dist/content/structured-data.d.ts.map +1 -1
  10. package/dist/content/structured-data.js +1 -1
  11. package/dist/content/structured-data.js.map +1 -1
  12. package/dist/forms/index.d.ts +3 -0
  13. package/dist/forms/index.d.ts.map +1 -1
  14. package/dist/forms/index.js +3 -0
  15. package/dist/forms/index.js.map +1 -1
  16. package/dist/forms/prefetch.d.ts +17 -0
  17. package/dist/forms/prefetch.d.ts.map +1 -0
  18. package/dist/forms/prefetch.js +36 -0
  19. package/dist/forms/prefetch.js.map +1 -0
  20. package/dist/forms/public-html.d.ts +22 -0
  21. package/dist/forms/public-html.d.ts.map +1 -0
  22. package/dist/forms/public-html.js +145 -0
  23. package/dist/forms/public-html.js.map +1 -0
  24. package/dist/forms/submission.d.ts +8 -0
  25. package/dist/forms/submission.d.ts.map +1 -1
  26. package/dist/forms/submission.js +3 -1
  27. package/dist/forms/submission.js.map +1 -1
  28. package/dist/forms/webmcp.d.ts +36 -0
  29. package/dist/forms/webmcp.d.ts.map +1 -0
  30. package/dist/forms/webmcp.js +67 -0
  31. package/dist/forms/webmcp.js.map +1 -0
  32. package/dist/index.d.ts +2 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/next-site.d.ts +29 -0
  37. package/dist/next-site.d.ts.map +1 -0
  38. package/dist/next-site.js +60 -0
  39. package/dist/next-site.js.map +1 -0
  40. package/dist/sections/index.d.ts +2 -0
  41. package/dist/sections/index.d.ts.map +1 -1
  42. package/dist/sections/index.js +1 -0
  43. package/dist/sections/index.js.map +1 -1
  44. package/dist/sections/registry.d.ts.map +1 -1
  45. package/dist/sections/registry.js +86 -0
  46. package/dist/sections/registry.js.map +1 -1
  47. package/dist/sections/types.d.ts +1 -1
  48. package/dist/sections/types.d.ts.map +1 -1
  49. package/dist/sections/validate.d.ts.map +1 -1
  50. package/dist/sections/validate.js +23 -0
  51. package/dist/sections/validate.js.map +1 -1
  52. package/dist/sections/widget-embed.d.ts +45 -0
  53. package/dist/sections/widget-embed.d.ts.map +1 -0
  54. package/dist/sections/widget-embed.js +129 -0
  55. package/dist/sections/widget-embed.js.map +1 -0
  56. package/dist/seo/page-meta.d.ts.map +1 -1
  57. package/dist/seo/page-meta.js +11 -0
  58. package/dist/seo/page-meta.js.map +1 -1
  59. package/dist/server-site.d.ts.map +1 -1
  60. package/dist/server-site.js +13 -0
  61. package/dist/server-site.js.map +1 -1
  62. package/dist/site.d.ts +6 -0
  63. package/dist/site.d.ts.map +1 -1
  64. package/dist/site.js +6 -0
  65. package/dist/site.js.map +1 -1
  66. package/package.json +26 -1
  67. package/dist/__tests__/actions/document-crud.test.d.ts +0 -2
  68. package/dist/__tests__/actions/document-crud.test.d.ts.map +0 -1
  69. package/dist/__tests__/actions/document-crud.test.js +0 -442
  70. package/dist/__tests__/actions/document-crud.test.js.map +0 -1
  71. package/dist/__tests__/actions/seo-fields-update.test.d.ts +0 -2
  72. package/dist/__tests__/actions/seo-fields-update.test.d.ts.map +0 -1
  73. package/dist/__tests__/actions/seo-fields-update.test.js +0 -93
  74. package/dist/__tests__/actions/seo-fields-update.test.js.map +0 -1
  75. package/dist/__tests__/ai/ai.test.d.ts +0 -2
  76. package/dist/__tests__/ai/ai.test.d.ts.map +0 -1
  77. package/dist/__tests__/ai/ai.test.js +0 -266
  78. package/dist/__tests__/ai/ai.test.js.map +0 -1
  79. package/dist/__tests__/ai/brand-voice-alignment.test.d.ts +0 -2
  80. package/dist/__tests__/ai/brand-voice-alignment.test.d.ts.map +0 -1
  81. package/dist/__tests__/ai/brand-voice-alignment.test.js +0 -38
  82. package/dist/__tests__/ai/brand-voice-alignment.test.js.map +0 -1
  83. package/dist/__tests__/ai/brand-voice-analyze.test.d.ts +0 -2
  84. package/dist/__tests__/ai/brand-voice-analyze.test.d.ts.map +0 -1
  85. package/dist/__tests__/ai/brand-voice-analyze.test.js +0 -117
  86. package/dist/__tests__/ai/brand-voice-analyze.test.js.map +0 -1
  87. package/dist/__tests__/ai/brand-voice-document.test.d.ts +0 -2
  88. package/dist/__tests__/ai/brand-voice-document.test.d.ts.map +0 -1
  89. package/dist/__tests__/ai/brand-voice-document.test.js +0 -74
  90. package/dist/__tests__/ai/brand-voice-document.test.js.map +0 -1
  91. package/dist/__tests__/ai/brand-voice-fix.test.d.ts +0 -2
  92. package/dist/__tests__/ai/brand-voice-fix.test.d.ts.map +0 -1
  93. package/dist/__tests__/ai/brand-voice-fix.test.js +0 -34
  94. package/dist/__tests__/ai/brand-voice-fix.test.js.map +0 -1
  95. package/dist/__tests__/ai/brand-voice-sources.test.d.ts +0 -2
  96. package/dist/__tests__/ai/brand-voice-sources.test.d.ts.map +0 -1
  97. package/dist/__tests__/ai/brand-voice-sources.test.js +0 -14
  98. package/dist/__tests__/ai/brand-voice-sources.test.js.map +0 -1
  99. package/dist/__tests__/ai/brand-voice-structured.test.d.ts +0 -2
  100. package/dist/__tests__/ai/brand-voice-structured.test.d.ts.map +0 -1
  101. package/dist/__tests__/ai/brand-voice-structured.test.js +0 -49
  102. package/dist/__tests__/ai/brand-voice-structured.test.js.map +0 -1
  103. package/dist/__tests__/ai/brand-voice.test.d.ts +0 -2
  104. package/dist/__tests__/ai/brand-voice.test.d.ts.map +0 -1
  105. package/dist/__tests__/ai/brand-voice.test.js +0 -82
  106. package/dist/__tests__/ai/brand-voice.test.js.map +0 -1
  107. package/dist/__tests__/ai/content-writing-generate.test.d.ts +0 -2
  108. package/dist/__tests__/ai/content-writing-generate.test.d.ts.map +0 -1
  109. package/dist/__tests__/ai/content-writing-generate.test.js +0 -38
  110. package/dist/__tests__/ai/content-writing-generate.test.js.map +0 -1
  111. package/dist/__tests__/ai/resolve.test.d.ts +0 -2
  112. package/dist/__tests__/ai/resolve.test.d.ts.map +0 -1
  113. package/dist/__tests__/ai/resolve.test.js +0 -164
  114. package/dist/__tests__/ai/resolve.test.js.map +0 -1
  115. package/dist/__tests__/ai/runtime.test.d.ts +0 -2
  116. package/dist/__tests__/ai/runtime.test.d.ts.map +0 -1
  117. package/dist/__tests__/ai/runtime.test.js +0 -392
  118. package/dist/__tests__/ai/runtime.test.js.map +0 -1
  119. package/dist/__tests__/ai/sampling.test.d.ts +0 -2
  120. package/dist/__tests__/ai/sampling.test.d.ts.map +0 -1
  121. package/dist/__tests__/ai/sampling.test.js +0 -25
  122. package/dist/__tests__/ai/sampling.test.js.map +0 -1
  123. package/dist/__tests__/api/admin-contracts.test.d.ts +0 -2
  124. package/dist/__tests__/api/admin-contracts.test.d.ts.map +0 -1
  125. package/dist/__tests__/api/admin-contracts.test.js +0 -186
  126. package/dist/__tests__/api/admin-contracts.test.js.map +0 -1
  127. package/dist/__tests__/api/ai-crawlers.test.d.ts +0 -2
  128. package/dist/__tests__/api/ai-crawlers.test.d.ts.map +0 -1
  129. package/dist/__tests__/api/ai-crawlers.test.js +0 -194
  130. package/dist/__tests__/api/ai-crawlers.test.js.map +0 -1
  131. package/dist/__tests__/api/ai-quality.test.d.ts +0 -2
  132. package/dist/__tests__/api/ai-quality.test.d.ts.map +0 -1
  133. package/dist/__tests__/api/ai-quality.test.js +0 -721
  134. package/dist/__tests__/api/ai-quality.test.js.map +0 -1
  135. package/dist/__tests__/api/ai-status.test.d.ts +0 -2
  136. package/dist/__tests__/api/ai-status.test.d.ts.map +0 -1
  137. package/dist/__tests__/api/ai-status.test.js +0 -110
  138. package/dist/__tests__/api/ai-status.test.js.map +0 -1
  139. package/dist/__tests__/api/api-key-auth.test.d.ts +0 -2
  140. package/dist/__tests__/api/api-key-auth.test.d.ts.map +0 -1
  141. package/dist/__tests__/api/api-key-auth.test.js +0 -254
  142. package/dist/__tests__/api/api-key-auth.test.js.map +0 -1
  143. package/dist/__tests__/api/appearance-routes.test.d.ts +0 -2
  144. package/dist/__tests__/api/appearance-routes.test.d.ts.map +0 -1
  145. package/dist/__tests__/api/appearance-routes.test.js +0 -134
  146. package/dist/__tests__/api/appearance-routes.test.js.map +0 -1
  147. package/dist/__tests__/api/cache-headers.test.d.ts +0 -2
  148. package/dist/__tests__/api/cache-headers.test.d.ts.map +0 -1
  149. package/dist/__tests__/api/cache-headers.test.js +0 -135
  150. package/dist/__tests__/api/cache-headers.test.js.map +0 -1
  151. package/dist/__tests__/api/collection-introspection.test.d.ts +0 -2
  152. package/dist/__tests__/api/collection-introspection.test.d.ts.map +0 -1
  153. package/dist/__tests__/api/collection-introspection.test.js +0 -129
  154. package/dist/__tests__/api/collection-introspection.test.js.map +0 -1
  155. package/dist/__tests__/api/collection-read-access.test.d.ts +0 -2
  156. package/dist/__tests__/api/collection-read-access.test.d.ts.map +0 -1
  157. package/dist/__tests__/api/collection-read-access.test.js +0 -140
  158. package/dist/__tests__/api/collection-read-access.test.js.map +0 -1
  159. package/dist/__tests__/api/collections-ai-create.test.d.ts +0 -2
  160. package/dist/__tests__/api/collections-ai-create.test.d.ts.map +0 -1
  161. package/dist/__tests__/api/collections-ai-create.test.js +0 -313
  162. package/dist/__tests__/api/collections-ai-create.test.js.map +0 -1
  163. package/dist/__tests__/api/collections-discovery.test.d.ts +0 -2
  164. package/dist/__tests__/api/collections-discovery.test.d.ts.map +0 -1
  165. package/dist/__tests__/api/collections-discovery.test.js +0 -348
  166. package/dist/__tests__/api/collections-discovery.test.js.map +0 -1
  167. package/dist/__tests__/api/comments-routes.test.d.ts +0 -2
  168. package/dist/__tests__/api/comments-routes.test.d.ts.map +0 -1
  169. package/dist/__tests__/api/comments-routes.test.js +0 -266
  170. package/dist/__tests__/api/comments-routes.test.js.map +0 -1
  171. package/dist/__tests__/api/cron-routes.test.d.ts +0 -2
  172. package/dist/__tests__/api/cron-routes.test.d.ts.map +0 -1
  173. package/dist/__tests__/api/cron-routes.test.js +0 -67
  174. package/dist/__tests__/api/cron-routes.test.js.map +0 -1
  175. package/dist/__tests__/api/data-filters-routes.test.d.ts +0 -2
  176. package/dist/__tests__/api/data-filters-routes.test.d.ts.map +0 -1
  177. package/dist/__tests__/api/data-filters-routes.test.js +0 -131
  178. package/dist/__tests__/api/data-filters-routes.test.js.map +0 -1
  179. package/dist/__tests__/api/email-settings-routes.test.d.ts +0 -2
  180. package/dist/__tests__/api/email-settings-routes.test.d.ts.map +0 -1
  181. package/dist/__tests__/api/email-settings-routes.test.js +0 -240
  182. package/dist/__tests__/api/email-settings-routes.test.js.map +0 -1
  183. package/dist/__tests__/api/field-values-routes.test.d.ts +0 -2
  184. package/dist/__tests__/api/field-values-routes.test.d.ts.map +0 -1
  185. package/dist/__tests__/api/field-values-routes.test.js +0 -147
  186. package/dist/__tests__/api/field-values-routes.test.js.map +0 -1
  187. package/dist/__tests__/api/form-webhooks.test.d.ts +0 -2
  188. package/dist/__tests__/api/form-webhooks.test.d.ts.map +0 -1
  189. package/dist/__tests__/api/form-webhooks.test.js +0 -162
  190. package/dist/__tests__/api/form-webhooks.test.js.map +0 -1
  191. package/dist/__tests__/api/globals-routes.test.d.ts +0 -2
  192. package/dist/__tests__/api/globals-routes.test.d.ts.map +0 -1
  193. package/dist/__tests__/api/globals-routes.test.js +0 -100
  194. package/dist/__tests__/api/globals-routes.test.js.map +0 -1
  195. package/dist/__tests__/api/health.test.d.ts +0 -2
  196. package/dist/__tests__/api/health.test.d.ts.map +0 -1
  197. package/dist/__tests__/api/health.test.js +0 -144
  198. package/dist/__tests__/api/health.test.js.map +0 -1
  199. package/dist/__tests__/api/llms-txt.test.d.ts +0 -2
  200. package/dist/__tests__/api/llms-txt.test.d.ts.map +0 -1
  201. package/dist/__tests__/api/llms-txt.test.js +0 -423
  202. package/dist/__tests__/api/llms-txt.test.js.map +0 -1
  203. package/dist/__tests__/api/md-route.test.d.ts +0 -2
  204. package/dist/__tests__/api/md-route.test.d.ts.map +0 -1
  205. package/dist/__tests__/api/md-route.test.js +0 -106
  206. package/dist/__tests__/api/md-route.test.js.map +0 -1
  207. package/dist/__tests__/api/media-upload-storage.test.d.ts +0 -2
  208. package/dist/__tests__/api/media-upload-storage.test.d.ts.map +0 -1
  209. package/dist/__tests__/api/media-upload-storage.test.js +0 -171
  210. package/dist/__tests__/api/media-upload-storage.test.js.map +0 -1
  211. package/dist/__tests__/api/notifications-routes.test.d.ts +0 -2
  212. package/dist/__tests__/api/notifications-routes.test.d.ts.map +0 -1
  213. package/dist/__tests__/api/notifications-routes.test.js +0 -270
  214. package/dist/__tests__/api/notifications-routes.test.js.map +0 -1
  215. package/dist/__tests__/api/page-sections-routes.test.d.ts +0 -2
  216. package/dist/__tests__/api/page-sections-routes.test.d.ts.map +0 -1
  217. package/dist/__tests__/api/page-sections-routes.test.js +0 -501
  218. package/dist/__tests__/api/page-sections-routes.test.js.map +0 -1
  219. package/dist/__tests__/api/preview-and-scheduling.test.d.ts +0 -2
  220. package/dist/__tests__/api/preview-and-scheduling.test.d.ts.map +0 -1
  221. package/dist/__tests__/api/preview-and-scheduling.test.js +0 -479
  222. package/dist/__tests__/api/preview-and-scheduling.test.js.map +0 -1
  223. package/dist/__tests__/api/public-forms.test.d.ts +0 -2
  224. package/dist/__tests__/api/public-forms.test.d.ts.map +0 -1
  225. package/dist/__tests__/api/public-forms.test.js +0 -125
  226. package/dist/__tests__/api/public-forms.test.js.map +0 -1
  227. package/dist/__tests__/api/public-globals.test.d.ts +0 -2
  228. package/dist/__tests__/api/public-globals.test.d.ts.map +0 -1
  229. package/dist/__tests__/api/public-globals.test.js +0 -96
  230. package/dist/__tests__/api/public-globals.test.js.map +0 -1
  231. package/dist/__tests__/api/public-navigations.test.d.ts +0 -2
  232. package/dist/__tests__/api/public-navigations.test.d.ts.map +0 -1
  233. package/dist/__tests__/api/public-navigations.test.js +0 -77
  234. package/dist/__tests__/api/public-navigations.test.js.map +0 -1
  235. package/dist/__tests__/api/public-seo.test.d.ts +0 -2
  236. package/dist/__tests__/api/public-seo.test.d.ts.map +0 -1
  237. package/dist/__tests__/api/public-seo.test.js +0 -834
  238. package/dist/__tests__/api/public-seo.test.js.map +0 -1
  239. package/dist/__tests__/api/resolve-layout-bridge.test.d.ts +0 -2
  240. package/dist/__tests__/api/resolve-layout-bridge.test.d.ts.map +0 -1
  241. package/dist/__tests__/api/resolve-layout-bridge.test.js +0 -165
  242. package/dist/__tests__/api/resolve-layout-bridge.test.js.map +0 -1
  243. package/dist/__tests__/api/route-contracts.test.d.ts +0 -2
  244. package/dist/__tests__/api/route-contracts.test.d.ts.map +0 -1
  245. package/dist/__tests__/api/route-contracts.test.js +0 -466
  246. package/dist/__tests__/api/route-contracts.test.js.map +0 -1
  247. package/dist/__tests__/api/security-routes.test.d.ts +0 -2
  248. package/dist/__tests__/api/security-routes.test.d.ts.map +0 -1
  249. package/dist/__tests__/api/security-routes.test.js +0 -212
  250. package/dist/__tests__/api/security-routes.test.js.map +0 -1
  251. package/dist/__tests__/api/seo-read-access.test.d.ts +0 -2
  252. package/dist/__tests__/api/seo-read-access.test.d.ts.map +0 -1
  253. package/dist/__tests__/api/seo-read-access.test.js +0 -101
  254. package/dist/__tests__/api/seo-read-access.test.js.map +0 -1
  255. package/dist/__tests__/api/seo-summary-ssrf.test.d.ts +0 -2
  256. package/dist/__tests__/api/seo-summary-ssrf.test.d.ts.map +0 -1
  257. package/dist/__tests__/api/seo-summary-ssrf.test.js +0 -80
  258. package/dist/__tests__/api/seo-summary-ssrf.test.js.map +0 -1
  259. package/dist/__tests__/api/sitemap-pagination.test.d.ts +0 -2
  260. package/dist/__tests__/api/sitemap-pagination.test.d.ts.map +0 -1
  261. package/dist/__tests__/api/sitemap-pagination.test.js +0 -100
  262. package/dist/__tests__/api/sitemap-pagination.test.js.map +0 -1
  263. package/dist/__tests__/api/stats-collection-filter.test.d.ts +0 -2
  264. package/dist/__tests__/api/stats-collection-filter.test.d.ts.map +0 -1
  265. package/dist/__tests__/api/stats-collection-filter.test.js +0 -190
  266. package/dist/__tests__/api/stats-collection-filter.test.js.map +0 -1
  267. package/dist/__tests__/api/stats-routes.test.d.ts +0 -2
  268. package/dist/__tests__/api/stats-routes.test.d.ts.map +0 -1
  269. package/dist/__tests__/api/stats-routes.test.js +0 -251
  270. package/dist/__tests__/api/stats-routes.test.js.map +0 -1
  271. package/dist/__tests__/api/stats-seo-cache.test.d.ts +0 -2
  272. package/dist/__tests__/api/stats-seo-cache.test.d.ts.map +0 -1
  273. package/dist/__tests__/api/stats-seo-cache.test.js +0 -96
  274. package/dist/__tests__/api/stats-seo-cache.test.js.map +0 -1
  275. package/dist/__tests__/api/totp-login.test.d.ts +0 -2
  276. package/dist/__tests__/api/totp-login.test.d.ts.map +0 -1
  277. package/dist/__tests__/api/totp-login.test.js +0 -115
  278. package/dist/__tests__/api/totp-login.test.js.map +0 -1
  279. package/dist/__tests__/api/updates-routes.test.d.ts +0 -2
  280. package/dist/__tests__/api/updates-routes.test.d.ts.map +0 -1
  281. package/dist/__tests__/api/updates-routes.test.js +0 -248
  282. package/dist/__tests__/api/updates-routes.test.js.map +0 -1
  283. package/dist/__tests__/api/users-detail.test.d.ts +0 -2
  284. package/dist/__tests__/api/users-detail.test.d.ts.map +0 -1
  285. package/dist/__tests__/api/users-detail.test.js +0 -401
  286. package/dist/__tests__/api/users-detail.test.js.map +0 -1
  287. package/dist/__tests__/api/users-invite.test.d.ts +0 -2
  288. package/dist/__tests__/api/users-invite.test.d.ts.map +0 -1
  289. package/dist/__tests__/api/users-invite.test.js +0 -221
  290. package/dist/__tests__/api/users-invite.test.js.map +0 -1
  291. package/dist/__tests__/api/users-search.test.d.ts +0 -2
  292. package/dist/__tests__/api/users-search.test.d.ts.map +0 -1
  293. package/dist/__tests__/api/users-search.test.js +0 -182
  294. package/dist/__tests__/api/users-search.test.js.map +0 -1
  295. package/dist/__tests__/appearance/appearance.test.d.ts +0 -2
  296. package/dist/__tests__/appearance/appearance.test.d.ts.map +0 -1
  297. package/dist/__tests__/appearance/appearance.test.js +0 -287
  298. package/dist/__tests__/appearance/appearance.test.js.map +0 -1
  299. package/dist/__tests__/appearance/favicon-icon.test.d.ts +0 -2
  300. package/dist/__tests__/appearance/favicon-icon.test.d.ts.map +0 -1
  301. package/dist/__tests__/appearance/favicon-icon.test.js +0 -12
  302. package/dist/__tests__/appearance/favicon-icon.test.js.map +0 -1
  303. package/dist/__tests__/auth/invites.test.d.ts +0 -2
  304. package/dist/__tests__/auth/invites.test.d.ts.map +0 -1
  305. package/dist/__tests__/auth/invites.test.js +0 -181
  306. package/dist/__tests__/auth/invites.test.js.map +0 -1
  307. package/dist/__tests__/auth/oauth.test.d.ts +0 -2
  308. package/dist/__tests__/auth/oauth.test.d.ts.map +0 -1
  309. package/dist/__tests__/auth/oauth.test.js +0 -408
  310. package/dist/__tests__/auth/oauth.test.js.map +0 -1
  311. package/dist/__tests__/auth/password.test.d.ts +0 -2
  312. package/dist/__tests__/auth/password.test.d.ts.map +0 -1
  313. package/dist/__tests__/auth/password.test.js +0 -226
  314. package/dist/__tests__/auth/password.test.js.map +0 -1
  315. package/dist/__tests__/auth/reset.test.d.ts +0 -2
  316. package/dist/__tests__/auth/reset.test.d.ts.map +0 -1
  317. package/dist/__tests__/auth/reset.test.js +0 -355
  318. package/dist/__tests__/auth/reset.test.js.map +0 -1
  319. package/dist/__tests__/auth/roles.test.d.ts +0 -2
  320. package/dist/__tests__/auth/roles.test.d.ts.map +0 -1
  321. package/dist/__tests__/auth/roles.test.js +0 -60
  322. package/dist/__tests__/auth/roles.test.js.map +0 -1
  323. package/dist/__tests__/auth/session.test.d.ts +0 -2
  324. package/dist/__tests__/auth/session.test.d.ts.map +0 -1
  325. package/dist/__tests__/auth/session.test.js +0 -119
  326. package/dist/__tests__/auth/session.test.js.map +0 -1
  327. package/dist/__tests__/auth/team.test.d.ts +0 -2
  328. package/dist/__tests__/auth/team.test.d.ts.map +0 -1
  329. package/dist/__tests__/auth/team.test.js +0 -154
  330. package/dist/__tests__/auth/team.test.js.map +0 -1
  331. package/dist/__tests__/auth/totp.test.d.ts +0 -2
  332. package/dist/__tests__/auth/totp.test.d.ts.map +0 -1
  333. package/dist/__tests__/auth/totp.test.js +0 -52
  334. package/dist/__tests__/auth/totp.test.js.map +0 -1
  335. package/dist/__tests__/auth/user-admin.test.d.ts +0 -2
  336. package/dist/__tests__/auth/user-admin.test.d.ts.map +0 -1
  337. package/dist/__tests__/auth/user-admin.test.js +0 -200
  338. package/dist/__tests__/auth/user-admin.test.js.map +0 -1
  339. package/dist/__tests__/billing/stripe-meter.test.d.ts +0 -2
  340. package/dist/__tests__/billing/stripe-meter.test.d.ts.map +0 -1
  341. package/dist/__tests__/billing/stripe-meter.test.js +0 -86
  342. package/dist/__tests__/billing/stripe-meter.test.js.map +0 -1
  343. package/dist/__tests__/codegen/generate-types.test.d.ts +0 -2
  344. package/dist/__tests__/codegen/generate-types.test.d.ts.map +0 -1
  345. package/dist/__tests__/codegen/generate-types.test.js +0 -173
  346. package/dist/__tests__/codegen/generate-types.test.js.map +0 -1
  347. package/dist/__tests__/collections/presets.test.d.ts +0 -2
  348. package/dist/__tests__/collections/presets.test.d.ts.map +0 -1
  349. package/dist/__tests__/collections/presets.test.js +0 -184
  350. package/dist/__tests__/collections/presets.test.js.map +0 -1
  351. package/dist/__tests__/config/runtime.test.d.ts +0 -2
  352. package/dist/__tests__/config/runtime.test.d.ts.map +0 -1
  353. package/dist/__tests__/config/runtime.test.js +0 -65
  354. package/dist/__tests__/config/runtime.test.js.map +0 -1
  355. package/dist/__tests__/content/slug.test.d.ts +0 -2
  356. package/dist/__tests__/content/slug.test.d.ts.map +0 -1
  357. package/dist/__tests__/content/slug.test.js +0 -68
  358. package/dist/__tests__/content/slug.test.js.map +0 -1
  359. package/dist/__tests__/content-health/scanner.test.d.ts +0 -2
  360. package/dist/__tests__/content-health/scanner.test.d.ts.map +0 -1
  361. package/dist/__tests__/content-health/scanner.test.js +0 -151
  362. package/dist/__tests__/content-health/scanner.test.js.map +0 -1
  363. package/dist/__tests__/cron/cron.test.d.ts +0 -2
  364. package/dist/__tests__/cron/cron.test.d.ts.map +0 -1
  365. package/dist/__tests__/cron/cron.test.js +0 -340
  366. package/dist/__tests__/cron/cron.test.js.map +0 -1
  367. package/dist/__tests__/db/model-types-freshness.test.d.ts +0 -2
  368. package/dist/__tests__/db/model-types-freshness.test.d.ts.map +0 -1
  369. package/dist/__tests__/db/model-types-freshness.test.js +0 -46
  370. package/dist/__tests__/db/model-types-freshness.test.js.map +0 -1
  371. package/dist/__tests__/diagnostics/api-metrics.test.d.ts +0 -2
  372. package/dist/__tests__/diagnostics/api-metrics.test.d.ts.map +0 -1
  373. package/dist/__tests__/diagnostics/api-metrics.test.js +0 -153
  374. package/dist/__tests__/diagnostics/api-metrics.test.js.map +0 -1
  375. package/dist/__tests__/diagnostics/env.test.d.ts +0 -2
  376. package/dist/__tests__/diagnostics/env.test.d.ts.map +0 -1
  377. package/dist/__tests__/diagnostics/env.test.js +0 -247
  378. package/dist/__tests__/diagnostics/env.test.js.map +0 -1
  379. package/dist/__tests__/diagnostics/logger.test.d.ts +0 -2
  380. package/dist/__tests__/diagnostics/logger.test.d.ts.map +0 -1
  381. package/dist/__tests__/diagnostics/logger.test.js +0 -111
  382. package/dist/__tests__/diagnostics/logger.test.js.map +0 -1
  383. package/dist/__tests__/diagnostics/sentry.test.d.ts +0 -2
  384. package/dist/__tests__/diagnostics/sentry.test.d.ts.map +0 -1
  385. package/dist/__tests__/diagnostics/sentry.test.js +0 -60
  386. package/dist/__tests__/diagnostics/sentry.test.js.map +0 -1
  387. package/dist/__tests__/email/resolve.test.d.ts +0 -2
  388. package/dist/__tests__/email/resolve.test.d.ts.map +0 -1
  389. package/dist/__tests__/email/resolve.test.js +0 -90
  390. package/dist/__tests__/email/resolve.test.js.map +0 -1
  391. package/dist/__tests__/email/sender.test.d.ts +0 -2
  392. package/dist/__tests__/email/sender.test.d.ts.map +0 -1
  393. package/dist/__tests__/email/sender.test.js +0 -33
  394. package/dist/__tests__/email/sender.test.js.map +0 -1
  395. package/dist/__tests__/email/settings-store.test.d.ts +0 -2
  396. package/dist/__tests__/email/settings-store.test.d.ts.map +0 -1
  397. package/dist/__tests__/email/settings-store.test.js +0 -149
  398. package/dist/__tests__/email/settings-store.test.js.map +0 -1
  399. package/dist/__tests__/fields/component-block.test.d.ts +0 -2
  400. package/dist/__tests__/fields/component-block.test.d.ts.map +0 -1
  401. package/dist/__tests__/fields/component-block.test.js +0 -129
  402. package/dist/__tests__/fields/component-block.test.js.map +0 -1
  403. package/dist/__tests__/fields/presets.test.d.ts +0 -2
  404. package/dist/__tests__/fields/presets.test.d.ts.map +0 -1
  405. package/dist/__tests__/fields/presets.test.js +0 -99
  406. package/dist/__tests__/fields/presets.test.js.map +0 -1
  407. package/dist/__tests__/fields/relations.test.d.ts +0 -2
  408. package/dist/__tests__/fields/relations.test.d.ts.map +0 -1
  409. package/dist/__tests__/fields/relations.test.js +0 -297
  410. package/dist/__tests__/fields/relations.test.js.map +0 -1
  411. package/dist/__tests__/forms/client-validation.test.d.ts +0 -2
  412. package/dist/__tests__/forms/client-validation.test.d.ts.map +0 -1
  413. package/dist/__tests__/forms/client-validation.test.js +0 -98
  414. package/dist/__tests__/forms/client-validation.test.js.map +0 -1
  415. package/dist/__tests__/forms/encryption.test.d.ts +0 -2
  416. package/dist/__tests__/forms/encryption.test.d.ts.map +0 -1
  417. package/dist/__tests__/forms/encryption.test.js +0 -84
  418. package/dist/__tests__/forms/encryption.test.js.map +0 -1
  419. package/dist/__tests__/forms/entries-export.test.d.ts +0 -2
  420. package/dist/__tests__/forms/entries-export.test.d.ts.map +0 -1
  421. package/dist/__tests__/forms/entries-export.test.js +0 -69
  422. package/dist/__tests__/forms/entries-export.test.js.map +0 -1
  423. package/dist/__tests__/forms/forms-service.test.d.ts +0 -2
  424. package/dist/__tests__/forms/forms-service.test.d.ts.map +0 -1
  425. package/dist/__tests__/forms/forms-service.test.js +0 -193
  426. package/dist/__tests__/forms/forms-service.test.js.map +0 -1
  427. package/dist/__tests__/forms/notify.test.d.ts +0 -2
  428. package/dist/__tests__/forms/notify.test.d.ts.map +0 -1
  429. package/dist/__tests__/forms/notify.test.js +0 -114
  430. package/dist/__tests__/forms/notify.test.js.map +0 -1
  431. package/dist/__tests__/forms/spam.test.d.ts +0 -2
  432. package/dist/__tests__/forms/spam.test.d.ts.map +0 -1
  433. package/dist/__tests__/forms/spam.test.js +0 -115
  434. package/dist/__tests__/forms/spam.test.js.map +0 -1
  435. package/dist/__tests__/forms/submission-files.test.d.ts +0 -2
  436. package/dist/__tests__/forms/submission-files.test.d.ts.map +0 -1
  437. package/dist/__tests__/forms/submission-files.test.js +0 -65
  438. package/dist/__tests__/forms/submission-files.test.js.map +0 -1
  439. package/dist/__tests__/forms/submission-pipeline.test.d.ts +0 -2
  440. package/dist/__tests__/forms/submission-pipeline.test.d.ts.map +0 -1
  441. package/dist/__tests__/forms/submission-pipeline.test.js +0 -131
  442. package/dist/__tests__/forms/submission-pipeline.test.js.map +0 -1
  443. package/dist/__tests__/forms/submission-validation.test.d.ts +0 -2
  444. package/dist/__tests__/forms/submission-validation.test.d.ts.map +0 -1
  445. package/dist/__tests__/forms/submission-validation.test.js +0 -108
  446. package/dist/__tests__/forms/submission-validation.test.js.map +0 -1
  447. package/dist/__tests__/forms/webhooks.test.d.ts +0 -2
  448. package/dist/__tests__/forms/webhooks.test.d.ts.map +0 -1
  449. package/dist/__tests__/forms/webhooks.test.js +0 -203
  450. package/dist/__tests__/forms/webhooks.test.js.map +0 -1
  451. package/dist/__tests__/media/seo.test.d.ts +0 -2
  452. package/dist/__tests__/media/seo.test.d.ts.map +0 -1
  453. package/dist/__tests__/media/seo.test.js +0 -186
  454. package/dist/__tests__/media/seo.test.js.map +0 -1
  455. package/dist/__tests__/middleware.test.d.ts +0 -2
  456. package/dist/__tests__/middleware.test.d.ts.map +0 -1
  457. package/dist/__tests__/middleware.test.js +0 -127
  458. package/dist/__tests__/middleware.test.js.map +0 -1
  459. package/dist/__tests__/next.test.d.ts +0 -2
  460. package/dist/__tests__/next.test.d.ts.map +0 -1
  461. package/dist/__tests__/next.test.js +0 -118
  462. package/dist/__tests__/next.test.js.map +0 -1
  463. package/dist/__tests__/plan/features.test.d.ts +0 -2
  464. package/dist/__tests__/plan/features.test.d.ts.map +0 -1
  465. package/dist/__tests__/plan/features.test.js +0 -35
  466. package/dist/__tests__/plan/features.test.js.map +0 -1
  467. package/dist/__tests__/preview-event-bus.test.d.ts +0 -2
  468. package/dist/__tests__/preview-event-bus.test.d.ts.map +0 -1
  469. package/dist/__tests__/preview-event-bus.test.js +0 -89
  470. package/dist/__tests__/preview-event-bus.test.js.map +0 -1
  471. package/dist/__tests__/preview-sse-stream.test.d.ts +0 -2
  472. package/dist/__tests__/preview-sse-stream.test.d.ts.map +0 -1
  473. package/dist/__tests__/preview-sse-stream.test.js +0 -117
  474. package/dist/__tests__/preview-sse-stream.test.js.map +0 -1
  475. package/dist/__tests__/preview.test.d.ts +0 -2
  476. package/dist/__tests__/preview.test.d.ts.map +0 -1
  477. package/dist/__tests__/preview.test.js +0 -71
  478. package/dist/__tests__/preview.test.js.map +0 -1
  479. package/dist/__tests__/realtime/comments.test.d.ts +0 -2
  480. package/dist/__tests__/realtime/comments.test.d.ts.map +0 -1
  481. package/dist/__tests__/realtime/comments.test.js +0 -508
  482. package/dist/__tests__/realtime/comments.test.js.map +0 -1
  483. package/dist/__tests__/realtime/gateway-ws-integration.test.d.ts +0 -2
  484. package/dist/__tests__/realtime/gateway-ws-integration.test.d.ts.map +0 -1
  485. package/dist/__tests__/realtime/gateway-ws-integration.test.js +0 -170
  486. package/dist/__tests__/realtime/gateway-ws-integration.test.js.map +0 -1
  487. package/dist/__tests__/realtime/gateway.test.d.ts +0 -2
  488. package/dist/__tests__/realtime/gateway.test.d.ts.map +0 -1
  489. package/dist/__tests__/realtime/gateway.test.js +0 -402
  490. package/dist/__tests__/realtime/gateway.test.js.map +0 -1
  491. package/dist/__tests__/realtime/notification-bus.test.d.ts +0 -2
  492. package/dist/__tests__/realtime/notification-bus.test.d.ts.map +0 -1
  493. package/dist/__tests__/realtime/notification-bus.test.js +0 -79
  494. package/dist/__tests__/realtime/notification-bus.test.js.map +0 -1
  495. package/dist/__tests__/realtime/notification-stream.test.d.ts +0 -2
  496. package/dist/__tests__/realtime/notification-stream.test.d.ts.map +0 -1
  497. package/dist/__tests__/realtime/notification-stream.test.js +0 -157
  498. package/dist/__tests__/realtime/notification-stream.test.js.map +0 -1
  499. package/dist/__tests__/realtime/notifications.test.d.ts +0 -2
  500. package/dist/__tests__/realtime/notifications.test.d.ts.map +0 -1
  501. package/dist/__tests__/realtime/notifications.test.js +0 -330
  502. package/dist/__tests__/realtime/notifications.test.js.map +0 -1
  503. package/dist/__tests__/realtime/persistence.test.d.ts +0 -2
  504. package/dist/__tests__/realtime/persistence.test.d.ts.map +0 -1
  505. package/dist/__tests__/realtime/persistence.test.js +0 -124
  506. package/dist/__tests__/realtime/persistence.test.js.map +0 -1
  507. package/dist/__tests__/redirects/auto-301.test.d.ts +0 -2
  508. package/dist/__tests__/redirects/auto-301.test.d.ts.map +0 -1
  509. package/dist/__tests__/redirects/auto-301.test.js +0 -172
  510. package/dist/__tests__/redirects/auto-301.test.js.map +0 -1
  511. package/dist/__tests__/redirects/graph.test.d.ts +0 -2
  512. package/dist/__tests__/redirects/graph.test.d.ts.map +0 -1
  513. package/dist/__tests__/redirects/graph.test.js +0 -104
  514. package/dist/__tests__/redirects/graph.test.js.map +0 -1
  515. package/dist/__tests__/redirects/suggest.test.d.ts +0 -2
  516. package/dist/__tests__/redirects/suggest.test.d.ts.map +0 -1
  517. package/dist/__tests__/redirects/suggest.test.js +0 -28
  518. package/dist/__tests__/redirects/suggest.test.js.map +0 -1
  519. package/dist/__tests__/scheduling/scheduling.test.d.ts +0 -2
  520. package/dist/__tests__/scheduling/scheduling.test.d.ts.map +0 -1
  521. package/dist/__tests__/scheduling/scheduling.test.js +0 -110
  522. package/dist/__tests__/scheduling/scheduling.test.js.map +0 -1
  523. package/dist/__tests__/schema-preview-features.test.d.ts +0 -2
  524. package/dist/__tests__/schema-preview-features.test.d.ts.map +0 -1
  525. package/dist/__tests__/schema-preview-features.test.js +0 -42
  526. package/dist/__tests__/schema-preview-features.test.js.map +0 -1
  527. package/dist/__tests__/sections/sections-migrate.test.d.ts +0 -2
  528. package/dist/__tests__/sections/sections-migrate.test.d.ts.map +0 -1
  529. package/dist/__tests__/sections/sections-migrate.test.js +0 -145
  530. package/dist/__tests__/sections/sections-migrate.test.js.map +0 -1
  531. package/dist/__tests__/security/access.test.d.ts +0 -2
  532. package/dist/__tests__/security/access.test.d.ts.map +0 -1
  533. package/dist/__tests__/security/access.test.js +0 -181
  534. package/dist/__tests__/security/access.test.js.map +0 -1
  535. package/dist/__tests__/security/api-key-enhanced.test.d.ts +0 -2
  536. package/dist/__tests__/security/api-key-enhanced.test.d.ts.map +0 -1
  537. package/dist/__tests__/security/api-key-enhanced.test.js +0 -110
  538. package/dist/__tests__/security/api-key-enhanced.test.js.map +0 -1
  539. package/dist/__tests__/security/audit.test.d.ts +0 -2
  540. package/dist/__tests__/security/audit.test.d.ts.map +0 -1
  541. package/dist/__tests__/security/audit.test.js +0 -50
  542. package/dist/__tests__/security/audit.test.js.map +0 -1
  543. package/dist/__tests__/security/center.test.d.ts +0 -2
  544. package/dist/__tests__/security/center.test.d.ts.map +0 -1
  545. package/dist/__tests__/security/center.test.js +0 -226
  546. package/dist/__tests__/security/center.test.js.map +0 -1
  547. package/dist/__tests__/security/client-ip.test.d.ts +0 -2
  548. package/dist/__tests__/security/client-ip.test.d.ts.map +0 -1
  549. package/dist/__tests__/security/client-ip.test.js +0 -37
  550. package/dist/__tests__/security/client-ip.test.js.map +0 -1
  551. package/dist/__tests__/security/csrf.test.d.ts +0 -2
  552. package/dist/__tests__/security/csrf.test.d.ts.map +0 -1
  553. package/dist/__tests__/security/csrf.test.js +0 -40
  554. package/dist/__tests__/security/csrf.test.js.map +0 -1
  555. package/dist/__tests__/security/encrypted-fields.test.d.ts +0 -2
  556. package/dist/__tests__/security/encrypted-fields.test.d.ts.map +0 -1
  557. package/dist/__tests__/security/encrypted-fields.test.js +0 -60
  558. package/dist/__tests__/security/encrypted-fields.test.js.map +0 -1
  559. package/dist/__tests__/security/ip-allowlist.test.d.ts +0 -2
  560. package/dist/__tests__/security/ip-allowlist.test.d.ts.map +0 -1
  561. package/dist/__tests__/security/ip-allowlist.test.js +0 -40
  562. package/dist/__tests__/security/ip-allowlist.test.js.map +0 -1
  563. package/dist/__tests__/security/rate-limit.test.d.ts +0 -2
  564. package/dist/__tests__/security/rate-limit.test.d.ts.map +0 -1
  565. package/dist/__tests__/security/rate-limit.test.js +0 -199
  566. package/dist/__tests__/security/rate-limit.test.js.map +0 -1
  567. package/dist/__tests__/security/reauth.test.d.ts +0 -2
  568. package/dist/__tests__/security/reauth.test.d.ts.map +0 -1
  569. package/dist/__tests__/security/reauth.test.js +0 -30
  570. package/dist/__tests__/security/reauth.test.js.map +0 -1
  571. package/dist/__tests__/security/redact.test.d.ts +0 -2
  572. package/dist/__tests__/security/redact.test.d.ts.map +0 -1
  573. package/dist/__tests__/security/redact.test.js +0 -31
  574. package/dist/__tests__/security/redact.test.js.map +0 -1
  575. package/dist/__tests__/security/safe-fetch.test.d.ts +0 -2
  576. package/dist/__tests__/security/safe-fetch.test.d.ts.map +0 -1
  577. package/dist/__tests__/security/safe-fetch.test.js +0 -97
  578. package/dist/__tests__/security/safe-fetch.test.js.map +0 -1
  579. package/dist/__tests__/security/sanitize-document.test.d.ts +0 -2
  580. package/dist/__tests__/security/sanitize-document.test.d.ts.map +0 -1
  581. package/dist/__tests__/security/sanitize-document.test.js +0 -146
  582. package/dist/__tests__/security/sanitize-document.test.js.map +0 -1
  583. package/dist/__tests__/security/sanitize.test.d.ts +0 -2
  584. package/dist/__tests__/security/sanitize.test.d.ts.map +0 -1
  585. package/dist/__tests__/security/sanitize.test.js +0 -75
  586. package/dist/__tests__/security/sanitize.test.js.map +0 -1
  587. package/dist/__tests__/security/secret-storage.test.d.ts +0 -2
  588. package/dist/__tests__/security/secret-storage.test.d.ts.map +0 -1
  589. package/dist/__tests__/security/secret-storage.test.js +0 -42
  590. package/dist/__tests__/security/secret-storage.test.js.map +0 -1
  591. package/dist/__tests__/security/ssrf.test.d.ts +0 -2
  592. package/dist/__tests__/security/ssrf.test.d.ts.map +0 -1
  593. package/dist/__tests__/security/ssrf.test.js +0 -209
  594. package/dist/__tests__/security/ssrf.test.js.map +0 -1
  595. package/dist/__tests__/security/upload-magic.test.d.ts +0 -2
  596. package/dist/__tests__/security/upload-magic.test.d.ts.map +0 -1
  597. package/dist/__tests__/security/upload-magic.test.js +0 -55
  598. package/dist/__tests__/security/upload-magic.test.js.map +0 -1
  599. package/dist/__tests__/seo/ai-bots.test.d.ts +0 -2
  600. package/dist/__tests__/seo/ai-bots.test.d.ts.map +0 -1
  601. package/dist/__tests__/seo/ai-bots.test.js +0 -92
  602. package/dist/__tests__/seo/ai-bots.test.js.map +0 -1
  603. package/dist/__tests__/seo/alt-text.test.d.ts +0 -2
  604. package/dist/__tests__/seo/alt-text.test.d.ts.map +0 -1
  605. package/dist/__tests__/seo/alt-text.test.js +0 -47
  606. package/dist/__tests__/seo/alt-text.test.js.map +0 -1
  607. package/dist/__tests__/seo/analysis-markdown.test.d.ts +0 -2
  608. package/dist/__tests__/seo/analysis-markdown.test.d.ts.map +0 -1
  609. package/dist/__tests__/seo/analysis-markdown.test.js +0 -57
  610. package/dist/__tests__/seo/analysis-markdown.test.js.map +0 -1
  611. package/dist/__tests__/seo/audit-engine.test.d.ts +0 -2
  612. package/dist/__tests__/seo/audit-engine.test.d.ts.map +0 -1
  613. package/dist/__tests__/seo/audit-engine.test.js +0 -181
  614. package/dist/__tests__/seo/audit-engine.test.js.map +0 -1
  615. package/dist/__tests__/seo/audit-runner.test.d.ts +0 -2
  616. package/dist/__tests__/seo/audit-runner.test.d.ts.map +0 -1
  617. package/dist/__tests__/seo/audit-runner.test.js +0 -204
  618. package/dist/__tests__/seo/audit-runner.test.js.map +0 -1
  619. package/dist/__tests__/seo/audit-signals.test.d.ts +0 -2
  620. package/dist/__tests__/seo/audit-signals.test.d.ts.map +0 -1
  621. package/dist/__tests__/seo/audit-signals.test.js +0 -30
  622. package/dist/__tests__/seo/audit-signals.test.js.map +0 -1
  623. package/dist/__tests__/seo/config-store.test.d.ts +0 -2
  624. package/dist/__tests__/seo/config-store.test.d.ts.map +0 -1
  625. package/dist/__tests__/seo/config-store.test.js +0 -31
  626. package/dist/__tests__/seo/config-store.test.js.map +0 -1
  627. package/dist/__tests__/seo/content-markdown.test.d.ts +0 -2
  628. package/dist/__tests__/seo/content-markdown.test.d.ts.map +0 -1
  629. package/dist/__tests__/seo/content-markdown.test.js +0 -124
  630. package/dist/__tests__/seo/content-markdown.test.js.map +0 -1
  631. package/dist/__tests__/seo/effective-meta.test.d.ts +0 -2
  632. package/dist/__tests__/seo/effective-meta.test.d.ts.map +0 -1
  633. package/dist/__tests__/seo/effective-meta.test.js +0 -58
  634. package/dist/__tests__/seo/effective-meta.test.js.map +0 -1
  635. package/dist/__tests__/seo/feeds.test.d.ts +0 -2
  636. package/dist/__tests__/seo/feeds.test.d.ts.map +0 -1
  637. package/dist/__tests__/seo/feeds.test.js +0 -61
  638. package/dist/__tests__/seo/feeds.test.js.map +0 -1
  639. package/dist/__tests__/seo/fix-brief-export.test.d.ts +0 -2
  640. package/dist/__tests__/seo/fix-brief-export.test.d.ts.map +0 -1
  641. package/dist/__tests__/seo/fix-brief-export.test.js +0 -153
  642. package/dist/__tests__/seo/fix-brief-export.test.js.map +0 -1
  643. package/dist/__tests__/seo/freshness.test.d.ts +0 -2
  644. package/dist/__tests__/seo/freshness.test.d.ts.map +0 -1
  645. package/dist/__tests__/seo/freshness.test.js +0 -89
  646. package/dist/__tests__/seo/freshness.test.js.map +0 -1
  647. package/dist/__tests__/seo/index-status.test.d.ts +0 -2
  648. package/dist/__tests__/seo/index-status.test.d.ts.map +0 -1
  649. package/dist/__tests__/seo/index-status.test.js +0 -140
  650. package/dist/__tests__/seo/index-status.test.js.map +0 -1
  651. package/dist/__tests__/seo/internal-collections.test.d.ts +0 -2
  652. package/dist/__tests__/seo/internal-collections.test.d.ts.map +0 -1
  653. package/dist/__tests__/seo/internal-collections.test.js +0 -27
  654. package/dist/__tests__/seo/internal-collections.test.js.map +0 -1
  655. package/dist/__tests__/seo/issue-batch-briefs.test.d.ts +0 -2
  656. package/dist/__tests__/seo/issue-batch-briefs.test.d.ts.map +0 -1
  657. package/dist/__tests__/seo/issue-batch-briefs.test.js +0 -64
  658. package/dist/__tests__/seo/issue-batch-briefs.test.js.map +0 -1
  659. package/dist/__tests__/seo/issue-content-brief.test.d.ts +0 -2
  660. package/dist/__tests__/seo/issue-content-brief.test.d.ts.map +0 -1
  661. package/dist/__tests__/seo/issue-content-brief.test.js +0 -107
  662. package/dist/__tests__/seo/issue-content-brief.test.js.map +0 -1
  663. package/dist/__tests__/seo/issue-content-research.test.d.ts +0 -2
  664. package/dist/__tests__/seo/issue-content-research.test.d.ts.map +0 -1
  665. package/dist/__tests__/seo/issue-content-research.test.js +0 -114
  666. package/dist/__tests__/seo/issue-content-research.test.js.map +0 -1
  667. package/dist/__tests__/seo/issue-fix-ai.test.d.ts +0 -2
  668. package/dist/__tests__/seo/issue-fix-ai.test.d.ts.map +0 -1
  669. package/dist/__tests__/seo/issue-fix-ai.test.js +0 -96
  670. package/dist/__tests__/seo/issue-fix-ai.test.js.map +0 -1
  671. package/dist/__tests__/seo/issue-fix-orchestrator.test.d.ts +0 -2
  672. package/dist/__tests__/seo/issue-fix-orchestrator.test.d.ts.map +0 -1
  673. package/dist/__tests__/seo/issue-fix-orchestrator.test.js +0 -48
  674. package/dist/__tests__/seo/issue-fix-orchestrator.test.js.map +0 -1
  675. package/dist/__tests__/seo/issue-fix.test.d.ts +0 -2
  676. package/dist/__tests__/seo/issue-fix.test.d.ts.map +0 -1
  677. package/dist/__tests__/seo/issue-fix.test.js +0 -98
  678. package/dist/__tests__/seo/issue-fix.test.js.map +0 -1
  679. package/dist/__tests__/seo/llms-sanitize.test.d.ts +0 -2
  680. package/dist/__tests__/seo/llms-sanitize.test.d.ts.map +0 -1
  681. package/dist/__tests__/seo/llms-sanitize.test.js +0 -74
  682. package/dist/__tests__/seo/llms-sanitize.test.js.map +0 -1
  683. package/dist/__tests__/seo/meta-tags-alternates.test.d.ts +0 -2
  684. package/dist/__tests__/seo/meta-tags-alternates.test.d.ts.map +0 -1
  685. package/dist/__tests__/seo/meta-tags-alternates.test.js +0 -52
  686. package/dist/__tests__/seo/meta-tags-alternates.test.js.map +0 -1
  687. package/dist/__tests__/seo/migrate-meta.test.d.ts +0 -2
  688. package/dist/__tests__/seo/migrate-meta.test.d.ts.map +0 -1
  689. package/dist/__tests__/seo/migrate-meta.test.js +0 -75
  690. package/dist/__tests__/seo/migrate-meta.test.js.map +0 -1
  691. package/dist/__tests__/seo/migrate-schema.test.d.ts +0 -2
  692. package/dist/__tests__/seo/migrate-schema.test.d.ts.map +0 -1
  693. package/dist/__tests__/seo/migrate-schema.test.js +0 -97
  694. package/dist/__tests__/seo/migrate-schema.test.js.map +0 -1
  695. package/dist/__tests__/seo/page-meta.test.d.ts +0 -2
  696. package/dist/__tests__/seo/page-meta.test.d.ts.map +0 -1
  697. package/dist/__tests__/seo/page-meta.test.js +0 -452
  698. package/dist/__tests__/seo/page-meta.test.js.map +0 -1
  699. package/dist/__tests__/seo/resolve-path.test.d.ts +0 -2
  700. package/dist/__tests__/seo/resolve-path.test.d.ts.map +0 -1
  701. package/dist/__tests__/seo/resolve-path.test.js +0 -46
  702. package/dist/__tests__/seo/resolve-path.test.js.map +0 -1
  703. package/dist/__tests__/seo/robots.test.d.ts +0 -2
  704. package/dist/__tests__/seo/robots.test.d.ts.map +0 -1
  705. package/dist/__tests__/seo/robots.test.js +0 -72
  706. package/dist/__tests__/seo/robots.test.js.map +0 -1
  707. package/dist/__tests__/seo/schema-sync.test.d.ts +0 -2
  708. package/dist/__tests__/seo/schema-sync.test.d.ts.map +0 -1
  709. package/dist/__tests__/seo/schema-sync.test.js +0 -59
  710. package/dist/__tests__/seo/schema-sync.test.js.map +0 -1
  711. package/dist/__tests__/seo/score.test.d.ts +0 -2
  712. package/dist/__tests__/seo/score.test.d.ts.map +0 -1
  713. package/dist/__tests__/seo/score.test.js +0 -152
  714. package/dist/__tests__/seo/score.test.js.map +0 -1
  715. package/dist/__tests__/seo/settings-defaults.test.d.ts +0 -2
  716. package/dist/__tests__/seo/settings-defaults.test.d.ts.map +0 -1
  717. package/dist/__tests__/seo/settings-defaults.test.js +0 -189
  718. package/dist/__tests__/seo/settings-defaults.test.js.map +0 -1
  719. package/dist/__tests__/seo/sitemap-notify.test.d.ts +0 -2
  720. package/dist/__tests__/seo/sitemap-notify.test.d.ts.map +0 -1
  721. package/dist/__tests__/seo/sitemap-notify.test.js +0 -267
  722. package/dist/__tests__/seo/sitemap-notify.test.js.map +0 -1
  723. package/dist/__tests__/seo/sitemap-public.test.d.ts +0 -2
  724. package/dist/__tests__/seo/sitemap-public.test.d.ts.map +0 -1
  725. package/dist/__tests__/seo/sitemap-public.test.js +0 -52
  726. package/dist/__tests__/seo/sitemap-public.test.js.map +0 -1
  727. package/dist/__tests__/server-site.test.d.ts +0 -2
  728. package/dist/__tests__/server-site.test.d.ts.map +0 -1
  729. package/dist/__tests__/server-site.test.js +0 -173
  730. package/dist/__tests__/server-site.test.js.map +0 -1
  731. package/dist/__tests__/setup/index.test.d.ts +0 -2
  732. package/dist/__tests__/setup/index.test.d.ts.map +0 -1
  733. package/dist/__tests__/setup/index.test.js +0 -128
  734. package/dist/__tests__/setup/index.test.js.map +0 -1
  735. package/dist/__tests__/site.test.d.ts +0 -2
  736. package/dist/__tests__/site.test.d.ts.map +0 -1
  737. package/dist/__tests__/site.test.js +0 -81
  738. package/dist/__tests__/site.test.js.map +0 -1
  739. package/dist/__tests__/storage/auto-wire.test.d.ts +0 -2
  740. package/dist/__tests__/storage/auto-wire.test.d.ts.map +0 -1
  741. package/dist/__tests__/storage/auto-wire.test.js +0 -73
  742. package/dist/__tests__/storage/auto-wire.test.js.map +0 -1
  743. package/dist/__tests__/upgrade/version-check.test.d.ts +0 -2
  744. package/dist/__tests__/upgrade/version-check.test.d.ts.map +0 -1
  745. package/dist/__tests__/upgrade/version-check.test.js +0 -98
  746. package/dist/__tests__/upgrade/version-check.test.js.map +0 -1
  747. package/dist/__tests__/validation/publish.test.d.ts +0 -2
  748. package/dist/__tests__/validation/publish.test.d.ts.map +0 -1
  749. package/dist/__tests__/validation/publish.test.js +0 -164
  750. package/dist/__tests__/validation/publish.test.js.map +0 -1
  751. package/dist/__tests__/webhooks/webhooks.test.d.ts +0 -2
  752. package/dist/__tests__/webhooks/webhooks.test.d.ts.map +0 -1
  753. package/dist/__tests__/webhooks/webhooks.test.js +0 -96
  754. package/dist/__tests__/webhooks/webhooks.test.js.map +0 -1
  755. package/dist/cache/__tests__/http.test.d.ts +0 -2
  756. package/dist/cache/__tests__/http.test.d.ts.map +0 -1
  757. package/dist/cache/__tests__/http.test.js +0 -285
  758. package/dist/cache/__tests__/http.test.js.map +0 -1
  759. package/dist/db/__tests__/find-in-batches.test.d.ts +0 -2
  760. package/dist/db/__tests__/find-in-batches.test.d.ts.map +0 -1
  761. package/dist/db/__tests__/find-in-batches.test.js +0 -26
  762. package/dist/db/__tests__/find-in-batches.test.js.map +0 -1
  763. package/dist/fields/__tests__/presets.test.d.ts +0 -2
  764. package/dist/fields/__tests__/presets.test.d.ts.map +0 -1
  765. package/dist/fields/__tests__/presets.test.js +0 -29
  766. package/dist/fields/__tests__/presets.test.js.map +0 -1
  767. package/dist/page-builder/__tests__/a11y-fix.test.d.ts +0 -2
  768. package/dist/page-builder/__tests__/a11y-fix.test.d.ts.map +0 -1
  769. package/dist/page-builder/__tests__/a11y-fix.test.js +0 -242
  770. package/dist/page-builder/__tests__/a11y-fix.test.js.map +0 -1
  771. package/dist/page-builder/__tests__/blocks.test.d.ts +0 -2
  772. package/dist/page-builder/__tests__/blocks.test.d.ts.map +0 -1
  773. package/dist/page-builder/__tests__/blocks.test.js +0 -194
  774. package/dist/page-builder/__tests__/blocks.test.js.map +0 -1
  775. package/dist/page-builder/__tests__/design-scorer.test.d.ts +0 -2
  776. package/dist/page-builder/__tests__/design-scorer.test.d.ts.map +0 -1
  777. package/dist/page-builder/__tests__/design-scorer.test.js +0 -301
  778. package/dist/page-builder/__tests__/design-scorer.test.js.map +0 -1
  779. package/dist/page-builder/__tests__/schema.test.d.ts +0 -2
  780. package/dist/page-builder/__tests__/schema.test.d.ts.map +0 -1
  781. package/dist/page-builder/__tests__/schema.test.js +0 -191
  782. package/dist/page-builder/__tests__/schema.test.js.map +0 -1
  783. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts +0 -2
  784. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts.map +0 -1
  785. package/dist/page-builder/__tests__/seo-analyzer.test.js +0 -346
  786. package/dist/page-builder/__tests__/seo-analyzer.test.js.map +0 -1
  787. package/dist/page-builder/__tests__/tree.test.d.ts +0 -2
  788. package/dist/page-builder/__tests__/tree.test.d.ts.map +0 -1
  789. package/dist/page-builder/__tests__/tree.test.js +0 -257
  790. package/dist/page-builder/__tests__/tree.test.js.map +0 -1
  791. package/dist/posts/__tests__/query.test.d.ts +0 -2
  792. package/dist/posts/__tests__/query.test.d.ts.map +0 -1
  793. package/dist/posts/__tests__/query.test.js +0 -70
  794. package/dist/posts/__tests__/query.test.js.map +0 -1
  795. package/dist/sections/__tests__/bridge.test.d.ts +0 -2
  796. package/dist/sections/__tests__/bridge.test.d.ts.map +0 -1
  797. package/dist/sections/__tests__/bridge.test.js +0 -171
  798. package/dist/sections/__tests__/bridge.test.js.map +0 -1
  799. package/dist/sections/__tests__/define.test.d.ts +0 -2
  800. package/dist/sections/__tests__/define.test.d.ts.map +0 -1
  801. package/dist/sections/__tests__/define.test.js +0 -132
  802. package/dist/sections/__tests__/define.test.js.map +0 -1
  803. package/dist/sections/__tests__/embed.test.d.ts +0 -2
  804. package/dist/sections/__tests__/embed.test.d.ts.map +0 -1
  805. package/dist/sections/__tests__/embed.test.js +0 -54
  806. package/dist/sections/__tests__/embed.test.js.map +0 -1
  807. package/dist/sections/__tests__/media-enrich.test.d.ts +0 -2
  808. package/dist/sections/__tests__/media-enrich.test.d.ts.map +0 -1
  809. package/dist/sections/__tests__/media-enrich.test.js +0 -97
  810. package/dist/sections/__tests__/media-enrich.test.js.map +0 -1
  811. package/dist/sections/__tests__/sections.test.d.ts +0 -2
  812. package/dist/sections/__tests__/sections.test.d.ts.map +0 -1
  813. package/dist/sections/__tests__/sections.test.js +0 -453
  814. package/dist/sections/__tests__/sections.test.js.map +0 -1
@@ -1,170 +0,0 @@
1
- /**
2
- * Integration test against the real `ws` library — confirms the duck-typed
3
- * `WebSocketLike` interface works against a production-grade WebSocket
4
- * server, including binary frame handling (ws emits Node `Buffer`s, which
5
- * extend `Uint8Array`).
6
- *
7
- * This is the canary that catches "works in mocks, breaks on real ws"
8
- * regressions — for example if we accidentally start requiring methods
9
- * that ws.WebSocket doesn't expose.
10
- */
11
- import { createServer } from 'node:http';
12
- import { WebSocketServer, WebSocket } from 'ws';
13
- import { encodeSyncStep1, encodeUpdateMessage, readMessage, Awareness, } from '@actuate-media/realtime';
14
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
15
- import * as Y from 'yjs';
16
- import { createRealtimeGateway, } from '../../realtime/gateway.js';
17
- /**
18
- * Adapt `ws.WebSocket` to the `WebSocketLike` shape. Real consumers paste
19
- * this snippet (or one like it) into their upgrade handler.
20
- */
21
- function adaptWsSocket(ws) {
22
- return {
23
- send: (data) => ws.send(data),
24
- close: (code, reason) => ws.close(code, reason),
25
- on: (event, handler) => {
26
- if (event === 'message') {
27
- ws.on('message', (data) => handler(toUint8(data)));
28
- }
29
- else if (event === 'close') {
30
- ws.on('close', () => handler());
31
- }
32
- else if (event === 'error') {
33
- ws.on('error', (err) => handler(err));
34
- }
35
- },
36
- };
37
- }
38
- function toUint8(data) {
39
- if (Buffer.isBuffer(data))
40
- return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
41
- if (data instanceof ArrayBuffer)
42
- return new Uint8Array(data);
43
- // Buffer[] — concatenate.
44
- return new Uint8Array(Buffer.concat(data));
45
- }
46
- async function startHarness(opts) {
47
- const server = createServer();
48
- const wss = new WebSocketServer({ noServer: true });
49
- let connSeq = 0;
50
- const gateway = createRealtimeGateway({
51
- authenticate: opts.authenticate ??
52
- (async () => ({ documentId: opts.documentId, connectionId: `conn-${++connSeq}` })),
53
- });
54
- server.on('upgrade', (req, socket, head) => {
55
- wss.handleUpgrade(req, socket, head, (ws) => {
56
- const reqInfo = {
57
- url: req.url ?? '/',
58
- headers: req.headers,
59
- };
60
- void gateway.handleConnection(adaptWsSocket(ws), reqInfo);
61
- });
62
- });
63
- await new Promise((resolve) => server.listen(0, resolve));
64
- const port = server.address().port;
65
- return { server, wss, gateway, port };
66
- }
67
- async function stopHarness(h) {
68
- await h.gateway.shutdown();
69
- h.wss.close();
70
- await new Promise((resolve) => h.server.close(() => resolve()));
71
- }
72
- /**
73
- * Open a ws client AND register the message listener inline before waiting
74
- * for the open event. This avoids a race where the server's immediate
75
- * SyncStep1 fires before the test code attaches its `on('message')` handler.
76
- */
77
- async function openClient(port, documentId) {
78
- const ws = new WebSocket(`ws://localhost:${port}/api/cms/realtime/sync?documentId=${documentId}`);
79
- ws.binaryType = 'nodebuffer';
80
- const inbox = [];
81
- ws.on('message', (data) => inbox.push(new Uint8Array(data)));
82
- await new Promise((resolve, reject) => {
83
- ws.once('open', () => resolve());
84
- ws.once('error', (err) => reject(err));
85
- });
86
- return { ws, inbox };
87
- }
88
- /** Wait until the predicate returns truthy or the timeout fires. */
89
- async function waitFor(predicate, timeoutMs = 1_000) {
90
- const start = Date.now();
91
- while (Date.now() - start < timeoutMs) {
92
- if (predicate())
93
- return;
94
- await new Promise((r) => setTimeout(r, 5));
95
- }
96
- throw new Error(`waitFor: predicate did not become truthy within ${timeoutMs}ms`);
97
- }
98
- describe('realtime gateway over real ws sockets', () => {
99
- let harness;
100
- beforeEach(async () => {
101
- harness = await startHarness({ documentId: 'doc-1' });
102
- });
103
- afterEach(async () => {
104
- await stopHarness(harness);
105
- });
106
- it('completes a SyncStep1 handshake with a real ws client', async () => {
107
- const { ws, inbox } = await openClient(harness.port, 'doc-1');
108
- await waitFor(() => inbox.length >= 1);
109
- expect(inbox[0][0]).toBe(0 /* MESSAGE_SYNC */);
110
- expect(inbox[0][1]).toBe(0 /* SyncStep1 */);
111
- ws.close();
112
- });
113
- it('relays an update from one client to another', async () => {
114
- const { ws: wsA, inbox: inboxA } = await openClient(harness.port, 'doc-1');
115
- const { ws: wsB, inbox: inboxB } = await openClient(harness.port, 'doc-1');
116
- // Drain initial SyncStep1 from both clients.
117
- await waitFor(() => inboxA.length >= 1 && inboxB.length >= 1);
118
- inboxA.length = 0;
119
- inboxB.length = 0;
120
- // A pushes an update.
121
- const probe = new Y.Doc();
122
- probe.getText('t').insert(0, 'real-ws-edit');
123
- wsA.send(encodeUpdateMessage(Y.encodeStateAsUpdate(probe)));
124
- await waitFor(() => inboxB.length > 0);
125
- const docB = new Y.Doc();
126
- const awB = new Awareness(docB);
127
- for (const m of inboxB)
128
- readMessage(m, docB, awB, 'test');
129
- expect(docB.getText('t').toString()).toBe('real-ws-edit');
130
- wsA.close();
131
- wsB.close();
132
- });
133
- it('closes connections cleanly on gateway shutdown', async () => {
134
- const { ws } = await openClient(harness.port, 'doc-1');
135
- const closed = new Promise((resolve) => ws.once('close', () => resolve()));
136
- await harness.gateway.shutdown();
137
- await closed;
138
- // After shutdown the gateway should refuse new business.
139
- expect(harness.gateway.roomCount).toBe(0);
140
- expect(harness.gateway.connectionCount).toBe(0);
141
- });
142
- it('returns 4401 to clients whose auth check fails', async () => {
143
- await stopHarness(harness);
144
- harness = await startHarness({
145
- documentId: 'doc-1',
146
- authenticate: async () => null,
147
- });
148
- const ws = new WebSocket(`ws://localhost:${harness.port}/api/cms/realtime/sync?documentId=doc-1`);
149
- const closeInfo = await new Promise((resolve) => {
150
- ws.once('close', (code) => resolve({ code }));
151
- });
152
- expect(closeInfo.code).toBe(4401);
153
- });
154
- it('replies to a client-initiated SyncStep1 with the persisted state', async () => {
155
- // Round-trip a fresh client sending its own SyncStep1: the gateway should
156
- // reply with the current state (initially empty, but the sync step 2
157
- // envelope is still returned).
158
- const { ws, inbox } = await openClient(harness.port, 'doc-1');
159
- await waitFor(() => inbox.length >= 1);
160
- inbox.length = 0;
161
- const clientDoc = new Y.Doc();
162
- ws.send(encodeSyncStep1(clientDoc));
163
- await waitFor(() => inbox.length >= 1);
164
- expect(inbox[0][0]).toBe(0 /* MESSAGE_SYNC */);
165
- // SyncStep2 sub-type = 1.
166
- expect(inbox[0][1]).toBe(1);
167
- ws.close();
168
- });
169
- });
170
- //# sourceMappingURL=gateway-ws-integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway-ws-integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/realtime/gateway-ws-integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=gateway.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/realtime/gateway.test.ts"],"names":[],"mappings":""}
@@ -1,402 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import * as Y from 'yjs';
3
- import { createMemoryPersistence, encodeAwarenessUpdate, encodeUpdateMessage, Awareness, MESSAGE_SYNC, readMessage, } from '@actuate-media/realtime';
4
- import { createRealtimeGateway, } from '../../realtime/gateway.js';
5
- function makeFakeSocket() {
6
- const handlers = {
7
- message: new Set(),
8
- close: new Set(),
9
- error: new Set(),
10
- };
11
- const sock = {
12
- sent: [],
13
- closed: false,
14
- send(data) {
15
- if (this.closed)
16
- return;
17
- this.sent.push(data);
18
- },
19
- close(code, reason) {
20
- if (this.closed)
21
- return;
22
- this.closed = true;
23
- this.closeCode = code;
24
- this.closeReason = reason;
25
- for (const h of handlers.close)
26
- h();
27
- },
28
- on(event, handler) {
29
- // Using `as never` for parameter erasure — handlers.message etc. carry the
30
- // right shape and a runtime branch picks the right set.
31
- const bucket = handlers[event];
32
- bucket?.add(handler);
33
- },
34
- dispatch(event, payload) {
35
- if (event === 'message') {
36
- for (const h of handlers.message)
37
- h(payload);
38
- }
39
- else if (event === 'close') {
40
- if (!this.closed) {
41
- this.closed = true;
42
- for (const h of handlers.close)
43
- h();
44
- }
45
- }
46
- else if (event === 'error') {
47
- for (const h of handlers.error)
48
- h(payload);
49
- }
50
- },
51
- };
52
- return sock;
53
- }
54
- function req(documentId, headers = {}) {
55
- return {
56
- url: `/api/cms/realtime/sync?documentId=${encodeURIComponent(documentId)}`,
57
- headers,
58
- };
59
- }
60
- /** Build an authenticator that maps documentId → fixed connection id (with optional reject). */
61
- function staticAuth(decisions) {
62
- return async (r) => {
63
- const url = new URL(`http://x${r.url}`);
64
- const documentId = url.searchParams.get('documentId');
65
- if (!documentId)
66
- return null;
67
- return decisions[documentId] ?? null;
68
- };
69
- }
70
- describe('createRealtimeGateway — auth gating', () => {
71
- let gateway;
72
- beforeEach(() => {
73
- gateway = createRealtimeGateway({
74
- authenticate: staticAuth({
75
- 'doc-ok': { documentId: 'doc-ok', connectionId: 'c1' },
76
- }),
77
- });
78
- });
79
- it('closes the socket with 4401 when authenticate returns null', async () => {
80
- const socket = makeFakeSocket();
81
- await gateway.handleConnection(socket, req('doc-denied'));
82
- expect(socket.closed).toBe(true);
83
- expect(socket.closeCode).toBe(4401);
84
- expect(gateway.connectionCount).toBe(0);
85
- expect(gateway.roomCount).toBe(0);
86
- });
87
- it('closes with 4401 when authenticate throws', async () => {
88
- const g = createRealtimeGateway({
89
- authenticate: async () => {
90
- throw new Error('boom');
91
- },
92
- });
93
- const socket = makeFakeSocket();
94
- await g.handleConnection(socket, req('doc-1'));
95
- expect(socket.closed).toBe(true);
96
- expect(socket.closeCode).toBe(4401);
97
- });
98
- it('rejects duplicate connection ids with 4409', async () => {
99
- const g = createRealtimeGateway({
100
- authenticate: staticAuth({
101
- 'doc-1': { documentId: 'doc-1', connectionId: 'shared' },
102
- }),
103
- });
104
- const a = makeFakeSocket();
105
- const b = makeFakeSocket();
106
- await g.handleConnection(a, req('doc-1'));
107
- expect(a.closed).toBe(false);
108
- await g.handleConnection(b, req('doc-1'));
109
- expect(b.closed).toBe(true);
110
- expect(b.closeCode).toBe(4409);
111
- });
112
- it('does not create a room when auth fails', async () => {
113
- const socket = makeFakeSocket();
114
- await gateway.handleConnection(socket, req('doc-denied'));
115
- expect(gateway.roomCount).toBe(0);
116
- });
117
- });
118
- describe('createRealtimeGateway — sync handshake', () => {
119
- it('sends SyncStep1 immediately after accepting a connection', async () => {
120
- const gateway = createRealtimeGateway({
121
- authenticate: staticAuth({
122
- 'doc-1': { documentId: 'doc-1', connectionId: 'c1' },
123
- }),
124
- });
125
- const socket = makeFakeSocket();
126
- await gateway.handleConnection(socket, req('doc-1'));
127
- expect(socket.sent.length).toBeGreaterThanOrEqual(1);
128
- expect(socket.sent[0][0]).toBe(MESSAGE_SYNC);
129
- });
130
- it('relays a client update to a second connection in the same room', async () => {
131
- const gateway = createRealtimeGateway({
132
- authenticate: staticAuth({
133
- 'doc-1': { documentId: 'doc-1', connectionId: '' },
134
- }),
135
- });
136
- const socketA = makeFakeSocket();
137
- const socketB = makeFakeSocket();
138
- // staticAuth shares a single connectionId — patch the auth to vary per-call.
139
- const idMap = new Map();
140
- const g2 = createRealtimeGateway({
141
- authenticate: async (r) => {
142
- const id = idMap.get(r) ?? 'unknown';
143
- return { documentId: 'doc-1', connectionId: id };
144
- },
145
- });
146
- const reqA = req('doc-1');
147
- const reqB = req('doc-1');
148
- idMap.set(reqA, 'A');
149
- idMap.set(reqB, 'B');
150
- await g2.handleConnection(socketA, reqA);
151
- await g2.handleConnection(socketB, reqB);
152
- // Drop SyncStep1 messages from the inboxes.
153
- socketA.sent.length = 0;
154
- socketB.sent.length = 0;
155
- // A pushes an update; B should receive it.
156
- const probe = new Y.Doc();
157
- probe.getText('t').insert(0, 'from A');
158
- socketA.dispatch('message', encodeUpdateMessage(Y.encodeStateAsUpdate(probe)));
159
- expect(socketB.sent.length).toBeGreaterThan(0);
160
- // The forwarded message should also be a SYNC envelope.
161
- expect(socketB.sent[0][0]).toBe(MESSAGE_SYNC);
162
- // Decode B's inbox into a fresh client doc and confirm content.
163
- const clientB = new Y.Doc();
164
- const awarenessB = new Awareness(clientB);
165
- for (const message of socketB.sent) {
166
- readMessage(message, clientB, awarenessB, 'test');
167
- }
168
- expect(clientB.getText('t').toString()).toBe('from A');
169
- gateway.shutdown();
170
- await g2.shutdown();
171
- });
172
- });
173
- describe('createRealtimeGateway — persistence wiring', () => {
174
- it('loads initial state from persistence on first connection', async () => {
175
- const persistence = createMemoryPersistence();
176
- // Seed persistence with a doc that already has content.
177
- const seed = new Y.Doc();
178
- seed.getText('t').insert(0, 'persisted content');
179
- await persistence.save('doc-1', Y.encodeStateAsUpdate(seed));
180
- seed.destroy();
181
- const gateway = createRealtimeGateway({
182
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'c1' } }),
183
- persistence,
184
- });
185
- const socket = makeFakeSocket();
186
- await gateway.handleConnection(socket, req('doc-1'));
187
- // The server's SyncStep1 carries the state vector, but to confirm content
188
- // we read the initial messages into a client doc, then send a SyncStep1
189
- // from the client and read its reply.
190
- const client = new Y.Doc();
191
- const awareness = new Awareness(client);
192
- // Process server's SyncStep1: produces a reply (SyncStep2) the gateway
193
- // will send back, but since we're driving the client manually, we
194
- // simulate the round-trip by handling the message and then sending a
195
- // fresh SyncStep1 from the client to ask for the server's content.
196
- for (const m of socket.sent)
197
- readMessage(m, client, awareness, 'test');
198
- // Client sends SyncStep1; gateway should reply with SyncStep2 carrying
199
- // the persisted content.
200
- socket.sent.length = 0;
201
- const { encodeSyncStep1 } = await import('@actuate-media/realtime');
202
- socket.dispatch('message', encodeSyncStep1(client));
203
- // The gateway's reply lands in socket.sent. Feed everything into the
204
- // client and assert content.
205
- for (const m of socket.sent)
206
- readMessage(m, client, awareness, 'test');
207
- expect(client.getText('t').toString()).toBe('persisted content');
208
- await gateway.shutdown();
209
- });
210
- it('flushes pending writes on shutdown', async () => {
211
- const save = vi.fn(async (_id, _state) => { });
212
- const persistence = {
213
- async load() {
214
- return null;
215
- },
216
- save,
217
- };
218
- const gateway = createRealtimeGateway({
219
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'c1' } }),
220
- persistence,
221
- persistenceDebounceMs: 10_000, // long debounce so no auto-flush
222
- });
223
- const socket = makeFakeSocket();
224
- await gateway.handleConnection(socket, req('doc-1'));
225
- const probe = new Y.Doc();
226
- probe.getText('t').insert(0, 'unsaved edit');
227
- socket.dispatch('message', encodeUpdateMessage(Y.encodeStateAsUpdate(probe)));
228
- expect(save).not.toHaveBeenCalled();
229
- await gateway.shutdown();
230
- expect(save).toHaveBeenCalledTimes(1);
231
- expect(save.mock.calls[0][0]).toBe('doc-1');
232
- });
233
- it('uses a noop persistence by default (no persistence option)', async () => {
234
- const gateway = createRealtimeGateway({
235
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'c1' } }),
236
- });
237
- const socket = makeFakeSocket();
238
- await gateway.handleConnection(socket, req('doc-1'));
239
- // Edits should not throw; the doc just doesn't survive a restart.
240
- const probe = new Y.Doc();
241
- probe.getText('t').insert(0, 'x');
242
- socket.dispatch('message', encodeUpdateMessage(Y.encodeStateAsUpdate(probe)));
243
- await gateway.shutdown();
244
- });
245
- });
246
- describe('createRealtimeGateway — room lifecycle', () => {
247
- it('increments roomCount on first connection per documentId', async () => {
248
- const gateway = createRealtimeGateway({
249
- authenticate: staticAuth({
250
- 'doc-1': { documentId: 'doc-1', connectionId: 'A' },
251
- 'doc-2': { documentId: 'doc-2', connectionId: 'B' },
252
- }),
253
- });
254
- await gateway.handleConnection(makeFakeSocket(), req('doc-1'));
255
- expect(gateway.roomCount).toBe(1);
256
- expect(gateway.connectionCount).toBe(1);
257
- await gateway.handleConnection(makeFakeSocket(), req('doc-2'));
258
- expect(gateway.roomCount).toBe(2);
259
- expect(gateway.connectionCount).toBe(2);
260
- await gateway.shutdown();
261
- });
262
- it('reaps an idle room after idleTimeoutMs', async () => {
263
- const onClose = vi.fn();
264
- vi.useFakeTimers();
265
- try {
266
- const gateway = createRealtimeGateway({
267
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'A' } }),
268
- idleTimeoutMs: 1_000,
269
- onRoomClose: onClose,
270
- });
271
- const socket = makeFakeSocket();
272
- await gateway.handleConnection(socket, req('doc-1'));
273
- expect(gateway.roomCount).toBe(1);
274
- socket.dispatch('close');
275
- expect(gateway.connectionCount).toBe(0);
276
- // Room is still alive until the reap timer fires.
277
- expect(gateway.roomCount).toBe(1);
278
- await vi.advanceTimersByTimeAsync(1_000);
279
- // Allow the reap's async chain (flush -> unbind -> destroy) to settle.
280
- await vi.runAllTimersAsync();
281
- expect(gateway.roomCount).toBe(0);
282
- expect(onClose).toHaveBeenCalledWith('doc-1');
283
- }
284
- finally {
285
- vi.useRealTimers();
286
- }
287
- });
288
- it('cancels a pending reap when a new connection arrives', async () => {
289
- vi.useFakeTimers();
290
- try {
291
- const gateway = createRealtimeGateway({
292
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'A' } }),
293
- idleTimeoutMs: 1_000,
294
- });
295
- const socket = makeFakeSocket();
296
- await gateway.handleConnection(socket, req('doc-1'));
297
- socket.dispatch('close');
298
- // Almost-but-not-quite the reap horizon.
299
- await vi.advanceTimersByTimeAsync(900);
300
- // A new connection should cancel the reap.
301
- const reauth = createRealtimeGateway({
302
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'A2' } }),
303
- idleTimeoutMs: 1_000,
304
- });
305
- // Use the same gateway; just authenticate as a new connection id.
306
- // For that we need a fresh gateway-like shape, but the simpler test is
307
- // to demonstrate that re-using the doc resets the timer.
308
- await reauth.handleConnection(makeFakeSocket(), req('doc-1'));
309
- await vi.advanceTimersByTimeAsync(500);
310
- // The second gateway's room should still be alive.
311
- expect(reauth.roomCount).toBe(1);
312
- await reauth.shutdown();
313
- await gateway.shutdown();
314
- }
315
- finally {
316
- vi.useRealTimers();
317
- }
318
- });
319
- it('fires onRoomOpen / onRoomClose hooks', async () => {
320
- const onOpen = vi.fn();
321
- const onClose = vi.fn();
322
- const gateway = createRealtimeGateway({
323
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'A' } }),
324
- onRoomOpen: onOpen,
325
- onRoomClose: onClose,
326
- });
327
- const socket = makeFakeSocket();
328
- await gateway.handleConnection(socket, req('doc-1'));
329
- expect(onOpen).toHaveBeenCalledWith('doc-1');
330
- await gateway.shutdown();
331
- expect(onClose).toHaveBeenCalledWith('doc-1');
332
- });
333
- });
334
- describe('createRealtimeGateway — shutdown', () => {
335
- it('closes existing sockets and rejects new ones', async () => {
336
- const gateway = createRealtimeGateway({
337
- authenticate: staticAuth({ 'doc-1': { documentId: 'doc-1', connectionId: 'A' } }),
338
- });
339
- const socket = makeFakeSocket();
340
- await gateway.handleConnection(socket, req('doc-1'));
341
- await gateway.shutdown();
342
- expect(socket.closed).toBe(true);
343
- expect(gateway.roomCount).toBe(0);
344
- expect(gateway.connectionCount).toBe(0);
345
- const second = makeFakeSocket();
346
- await gateway.handleConnection(second, req('doc-1'));
347
- expect(second.closed).toBe(true);
348
- expect(second.closeCode).toBe(1001);
349
- });
350
- });
351
- describe('createRealtimeGateway — malformed frames', () => {
352
- it('closes the offending socket without affecting others', async () => {
353
- const gateway = createRealtimeGateway({
354
- authenticate: async (r) => {
355
- const url = new URL(`http://x${r.url}`);
356
- const documentId = url.searchParams.get('documentId');
357
- return { documentId, connectionId: r.headers['x-test-id'] };
358
- },
359
- });
360
- const socketA = makeFakeSocket();
361
- const socketB = makeFakeSocket();
362
- await gateway.handleConnection(socketA, { ...req('doc-1'), headers: { 'x-test-id': 'A' } });
363
- await gateway.handleConnection(socketB, { ...req('doc-1'), headers: { 'x-test-id': 'B' } });
364
- socketA.sent.length = 0;
365
- socketB.sent.length = 0;
366
- // Empty frame triggers `readMessage` to throw.
367
- socketA.dispatch('message', new Uint8Array(0));
368
- expect(socketA.closed).toBe(true);
369
- expect(socketA.closeCode).toBe(1003);
370
- expect(socketB.closed).toBe(false);
371
- await gateway.shutdown();
372
- });
373
- });
374
- describe('createRealtimeGateway — awareness broadcast', () => {
375
- it('forwards awareness state from one client to another', async () => {
376
- const gateway = createRealtimeGateway({
377
- authenticate: async (r) => {
378
- const url = new URL(`http://x${r.url}`);
379
- return { documentId: url.searchParams.get('documentId'), connectionId: r.headers['x-id'] };
380
- },
381
- });
382
- const socketA = makeFakeSocket();
383
- const socketB = makeFakeSocket();
384
- await gateway.handleConnection(socketA, { ...req('doc-1'), headers: { 'x-id': 'A' } });
385
- await gateway.handleConnection(socketB, { ...req('doc-1'), headers: { 'x-id': 'B' } });
386
- socketA.sent.length = 0;
387
- socketB.sent.length = 0;
388
- const clientDoc = new Y.Doc();
389
- const clientAw = new Awareness(clientDoc);
390
- clientAw.setLocalState({ user: 'alice' });
391
- socketA.dispatch('message', encodeAwarenessUpdate(clientAw, [clientAw.clientID]));
392
- // B should receive an awareness message.
393
- expect(socketB.sent.length).toBeGreaterThan(0);
394
- const docB = new Y.Doc();
395
- const awB = new Awareness(docB);
396
- for (const m of socketB.sent)
397
- readMessage(m, docB, awB, 'test');
398
- expect(awB.getStates().get(clientAw.clientID)).toEqual({ user: 'alice' });
399
- await gateway.shutdown();
400
- });
401
- });
402
- //# sourceMappingURL=gateway.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway.test.js","sourceRoot":"","sources":["../../../src/__tests__/realtime/gateway.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=notification-bus.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-bus.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/realtime/notification-bus.test.ts"],"names":[],"mappings":""}