dineway 0.1.9 → 0.1.11

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 (689) hide show
  1. package/README.md +63 -17
  2. package/dist/activity-events-BsMaXdJa.mjs +540 -0
  3. package/dist/allowed-origins-DG86sH8U.mjs +68 -0
  4. package/dist/api/route-utils.d.mts +41 -0
  5. package/dist/api/route-utils.mjs +26 -0
  6. package/dist/api/schemas/index.d.mts +3 -0
  7. package/dist/api/schemas/index.mjs +6 -0
  8. package/dist/api/schemas/setup.d.mts +42 -0
  9. package/dist/api/schemas/setup.mjs +39 -0
  10. package/dist/api-Cmy8Rjk5.mjs +2704 -0
  11. package/dist/api-tokens-Bu3ez1MO.mjs +153 -0
  12. package/dist/api-tokens-DzloJxuh.mjs +3 -0
  13. package/dist/{apply-iVSqz2qs.mjs → apply-Co5imxxT.mjs} +15 -689
  14. package/dist/astro/index.d.mts +10 -6
  15. package/dist/astro/index.mjs +86 -11
  16. package/dist/astro/middleware/auth.d.mts +10 -7
  17. package/dist/astro/middleware/auth.mjs +19 -104
  18. package/dist/astro/middleware/redirect.mjs +24 -14
  19. package/dist/astro/middleware/request-context.mjs +9 -6
  20. package/dist/astro/middleware/setup.mjs +1 -1
  21. package/dist/astro/middleware.mjs +86 -145
  22. package/dist/astro/routes/PluginRegistry.d.mts +14 -0
  23. package/dist/astro/routes/PluginRegistry.mjs +24 -0
  24. package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts +14 -0
  25. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +65 -0
  26. package/dist/astro/routes/api/admin/allowed-domains/index.d.mts +14 -0
  27. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +65 -0
  28. package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts +10 -0
  29. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +33 -0
  30. package/dist/astro/routes/api/admin/api-tokens/index.d.mts +16 -0
  31. package/dist/astro/routes/api/admin/api-tokens/index.mjs +59 -0
  32. package/dist/astro/routes/api/admin/briefing.d.mts +7 -0
  33. package/dist/astro/routes/api/admin/briefing.mjs +71 -0
  34. package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts +9 -0
  35. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +74 -0
  36. package/dist/astro/routes/api/admin/bylines/index.d.mts +8 -0
  37. package/dist/astro/routes/api/admin/bylines/index.mjs +61 -0
  38. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts +7 -0
  39. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +80 -0
  40. package/dist/astro/routes/api/admin/comments/_id_.d.mts +14 -0
  41. package/dist/astro/routes/api/admin/comments/_id_.mjs +46 -0
  42. package/dist/astro/routes/api/admin/comments/bulk.d.mts +7 -0
  43. package/dist/astro/routes/api/admin/comments/bulk.mjs +36 -0
  44. package/dist/astro/routes/api/admin/comments/counts.d.mts +7 -0
  45. package/dist/astro/routes/api/admin/comments/counts.mjs +24 -0
  46. package/dist/astro/routes/api/admin/comments/index.d.mts +10 -0
  47. package/dist/astro/routes/api/admin/comments/index.mjs +40 -0
  48. package/dist/astro/routes/api/admin/context/_id_/history.d.mts +7 -0
  49. package/dist/astro/routes/api/admin/context/_id_/history.mjs +45 -0
  50. package/dist/astro/routes/api/admin/context/_id_/index.d.mts +7 -0
  51. package/dist/astro/routes/api/admin/context/_id_/index.mjs +45 -0
  52. package/dist/astro/routes/api/admin/context/_id_/review.d.mts +7 -0
  53. package/dist/astro/routes/api/admin/context/_id_/review.mjs +60 -0
  54. package/dist/astro/routes/api/admin/context/_id_/supersede.d.mts +7 -0
  55. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +63 -0
  56. package/dist/astro/routes/api/admin/context/diff.d.mts +7 -0
  57. package/dist/astro/routes/api/admin/context/diff.mjs +49 -0
  58. package/dist/astro/routes/api/admin/context/index.d.mts +8 -0
  59. package/dist/astro/routes/api/admin/context/index.mjs +71 -0
  60. package/dist/astro/routes/api/admin/context/stale.d.mts +7 -0
  61. package/dist/astro/routes/api/admin/context/stale.mjs +49 -0
  62. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.d.mts +7 -0
  63. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +51 -0
  64. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.d.mts +7 -0
  65. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +67 -0
  66. package/dist/astro/routes/api/admin/hitl-requests/index.d.mts +7 -0
  67. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +55 -0
  68. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +7 -0
  69. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +98 -0
  70. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts +7 -0
  71. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +33 -0
  72. package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts +18 -0
  73. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +79 -0
  74. package/dist/astro/routes/api/admin/oauth-clients/index.d.mts +14 -0
  75. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +58 -0
  76. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts +7 -0
  77. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +89 -0
  78. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +7 -0
  79. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +89 -0
  80. package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +7 -0
  81. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +54 -0
  82. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +7 -0
  83. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +98 -0
  84. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +7 -0
  85. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +131 -0
  86. package/dist/astro/routes/api/admin/plugins/index.d.mts +7 -0
  87. package/dist/astro/routes/api/admin/plugins/index.mjs +52 -0
  88. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts +7 -0
  89. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +36 -0
  90. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts +7 -0
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +54 -0
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts +7 -0
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +128 -0
  94. package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +7 -0
  95. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +61 -0
  96. package/dist/astro/routes/api/admin/plugins/updates.d.mts +7 -0
  97. package/dist/astro/routes/api/admin/plugins/updates.mjs +52 -0
  98. package/dist/astro/routes/api/admin/review-requests/_id_/index.d.mts +7 -0
  99. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +26 -0
  100. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.d.mts +7 -0
  101. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +97 -0
  102. package/dist/astro/routes/api/admin/review-requests/index.d.mts +7 -0
  103. package/dist/astro/routes/api/admin/review-requests/index.mjs +31 -0
  104. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts +7 -0
  105. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +54 -0
  106. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts +7 -0
  107. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +36 -0
  108. package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts +7 -0
  109. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +70 -0
  110. package/dist/astro/routes/api/admin/users/_id_/disable.d.mts +7 -0
  111. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +38 -0
  112. package/dist/astro/routes/api/admin/users/_id_/enable.d.mts +7 -0
  113. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +29 -0
  114. package/dist/astro/routes/api/admin/users/_id_/index.d.mts +8 -0
  115. package/dist/astro/routes/api/admin/users/_id_/index.mjs +104 -0
  116. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts +7 -0
  117. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +43 -0
  118. package/dist/astro/routes/api/admin/users/index.d.mts +7 -0
  119. package/dist/astro/routes/api/admin/users/index.mjs +54 -0
  120. package/dist/astro/routes/api/auth/dev-bypass.d.mts +8 -0
  121. package/dist/astro/routes/api/auth/dev-bypass.mjs +81 -0
  122. package/dist/astro/routes/api/auth/invite/accept.d.mts +7 -0
  123. package/dist/astro/routes/api/auth/invite/accept.mjs +31 -0
  124. package/dist/astro/routes/api/auth/invite/complete.d.mts +7 -0
  125. package/dist/astro/routes/api/auth/invite/complete.mjs +54 -0
  126. package/dist/astro/routes/api/auth/invite/index.d.mts +7 -0
  127. package/dist/astro/routes/api/auth/invite/index.mjs +51 -0
  128. package/dist/astro/routes/api/auth/invite/register-options.d.mts +7 -0
  129. package/dist/astro/routes/api/auth/invite/register-options.mjs +44 -0
  130. package/dist/astro/routes/api/auth/logout.d.mts +7 -0
  131. package/dist/astro/routes/api/auth/logout.mjs +24 -0
  132. package/dist/astro/routes/api/auth/magic-link/send.d.mts +7 -0
  133. package/dist/astro/routes/api/auth/magic-link/send.mjs +48 -0
  134. package/dist/astro/routes/api/auth/magic-link/verify.d.mts +7 -0
  135. package/dist/astro/routes/api/auth/magic-link/verify.mjs +32 -0
  136. package/dist/astro/routes/api/auth/me.d.mts +13 -0
  137. package/dist/astro/routes/api/auth/me.mjs +41 -0
  138. package/dist/astro/routes/api/auth/mode.d.mts +7 -0
  139. package/dist/astro/routes/api/auth/mode.mjs +28 -0
  140. package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts +7 -0
  141. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +114 -0
  142. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts +7 -0
  143. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +58 -0
  144. package/dist/astro/routes/api/auth/passkey/_id_.d.mts +14 -0
  145. package/dist/astro/routes/api/auth/passkey/_id_.mjs +62 -0
  146. package/dist/astro/routes/api/auth/passkey/index.d.mts +7 -0
  147. package/dist/astro/routes/api/auth/passkey/index.mjs +25 -0
  148. package/dist/astro/routes/api/auth/passkey/options.d.mts +7 -0
  149. package/dist/astro/routes/api/auth/passkey/options.mjs +46 -0
  150. package/dist/astro/routes/api/auth/passkey/register/options.d.mts +7 -0
  151. package/dist/astro/routes/api/auth/passkey/register/options.mjs +44 -0
  152. package/dist/astro/routes/api/auth/passkey/register/verify.d.mts +7 -0
  153. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +59 -0
  154. package/dist/astro/routes/api/auth/passkey/verify.d.mts +7 -0
  155. package/dist/astro/routes/api/auth/passkey/verify.mjs +47 -0
  156. package/dist/astro/routes/api/auth/signup/complete.d.mts +7 -0
  157. package/dist/astro/routes/api/auth/signup/complete.mjs +55 -0
  158. package/dist/astro/routes/api/auth/signup/request.d.mts +7 -0
  159. package/dist/astro/routes/api/auth/signup/request.mjs +44 -0
  160. package/dist/astro/routes/api/auth/signup/verify.d.mts +7 -0
  161. package/dist/astro/routes/api/auth/signup/verify.mjs +32 -0
  162. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +14 -0
  163. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +193 -0
  164. package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts +7 -0
  165. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +17 -0
  166. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts +7 -0
  167. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +36 -0
  168. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts +7 -0
  169. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +39 -0
  170. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts +7 -0
  171. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +31 -0
  172. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts +7 -0
  173. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +78 -0
  174. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +7 -0
  175. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +92 -0
  176. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts +7 -0
  177. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +36 -0
  178. package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts +7 -0
  179. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +19 -0
  180. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts +8 -0
  181. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +75 -0
  182. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts +14 -0
  183. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +85 -0
  184. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts +7 -0
  185. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +40 -0
  186. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts +7 -0
  187. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +36 -0
  188. package/dist/astro/routes/api/content/_collection_/_id_.d.mts +9 -0
  189. package/dist/astro/routes/api/content/_collection_/_id_.mjs +114 -0
  190. package/dist/astro/routes/api/content/_collection_/index.d.mts +8 -0
  191. package/dist/astro/routes/api/content/_collection_/index.mjs +74 -0
  192. package/dist/astro/routes/api/content/_collection_/trash.d.mts +7 -0
  193. package/dist/astro/routes/api/content/_collection_/trash.mjs +23 -0
  194. package/dist/astro/routes/api/dashboard.d.mts +7 -0
  195. package/dist/astro/routes/api/dashboard.mjs +26 -0
  196. package/dist/astro/routes/api/dev/emails.d.mts +8 -0
  197. package/dist/astro/routes/api/dev/emails.mjs +17 -0
  198. package/dist/astro/routes/api/health.d.mts +7 -0
  199. package/dist/astro/routes/api/health.mjs +34 -0
  200. package/dist/astro/routes/api/import/probe.d.mts +17 -0
  201. package/dist/astro/routes/api/import/probe.mjs +33 -0
  202. package/dist/astro/routes/api/import/wordpress/analyze.d.mts +87 -0
  203. package/dist/astro/routes/api/import/wordpress/analyze.mjs +305 -0
  204. package/dist/astro/routes/api/import/wordpress/execute.d.mts +37 -0
  205. package/dist/astro/routes/api/import/wordpress/execute.mjs +197 -0
  206. package/dist/astro/routes/api/import/wordpress/media.d.mts +35 -0
  207. package/dist/astro/routes/api/import/wordpress/media.mjs +222 -0
  208. package/dist/astro/routes/api/import/wordpress/prepare.d.mts +19 -0
  209. package/dist/astro/routes/api/import/wordpress/prepare.mjs +155 -0
  210. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +21 -0
  211. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +289 -0
  212. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +15 -0
  213. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +69 -0
  214. package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts +7 -0
  215. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +28 -0
  216. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +19 -0
  217. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +268 -0
  218. package/dist/astro/routes/api/manifest.d.mts +7 -0
  219. package/dist/astro/routes/api/manifest.mjs +50 -0
  220. package/dist/astro/routes/api/mcp.d.mts +15 -0
  221. package/dist/astro/routes/api/mcp.mjs +2700 -0
  222. package/dist/astro/routes/api/media/_id_/confirm.d.mts +10 -0
  223. package/dist/astro/routes/api/media/_id_/confirm.mjs +59 -0
  224. package/dist/astro/routes/api/media/_id_.d.mts +22 -0
  225. package/dist/astro/routes/api/media/_id_.mjs +81 -0
  226. package/dist/astro/routes/api/media/file/_...key_.d.mts +7 -0
  227. package/dist/astro/routes/api/media/file/_...key_.mjs +49 -0
  228. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts +14 -0
  229. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +49 -0
  230. package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts +14 -0
  231. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +72 -0
  232. package/dist/astro/routes/api/media/providers/index.d.mts +10 -0
  233. package/dist/astro/routes/api/media/providers/index.mjs +18 -0
  234. package/dist/astro/routes/api/media/upload-url.d.mts +10 -0
  235. package/dist/astro/routes/api/media/upload-url.mjs +82 -0
  236. package/dist/astro/routes/api/media.d.mts +16 -0
  237. package/dist/astro/routes/api/media.mjs +137 -0
  238. package/dist/astro/routes/api/menus/_name_/items.d.mts +9 -0
  239. package/{src/astro/routes/api/menus/[name]/items.ts → dist/astro/routes/api/menus/_name_/items.mjs} +63 -105
  240. package/dist/astro/routes/api/menus/_name_/reorder.d.mts +7 -0
  241. package/dist/astro/routes/api/menus/_name_/reorder.mjs +77 -0
  242. package/dist/astro/routes/api/menus/_name_.d.mts +9 -0
  243. package/dist/astro/routes/api/menus/_name_.mjs +123 -0
  244. package/dist/astro/routes/api/menus/index.d.mts +8 -0
  245. package/dist/astro/routes/api/menus/index.mjs +84 -0
  246. package/dist/astro/routes/api/oauth/authorize.d.mts +8 -0
  247. package/dist/astro/routes/api/oauth/authorize.mjs +265 -0
  248. package/dist/astro/routes/api/oauth/device/authorize.d.mts +7 -0
  249. package/dist/astro/routes/api/oauth/device/authorize.mjs +30 -0
  250. package/dist/astro/routes/api/oauth/device/code.d.mts +7 -0
  251. package/dist/astro/routes/api/oauth/device/code.mjs +34 -0
  252. package/dist/astro/routes/api/oauth/device/token.d.mts +7 -0
  253. package/dist/astro/routes/api/oauth/device/token.mjs +45 -0
  254. package/dist/astro/routes/api/oauth/register.d.mts +8 -0
  255. package/dist/astro/routes/api/oauth/register.mjs +115 -0
  256. package/dist/astro/routes/api/oauth/token/refresh.d.mts +7 -0
  257. package/dist/astro/routes/api/oauth/token/refresh.mjs +28 -0
  258. package/dist/astro/routes/api/oauth/token/revoke.d.mts +7 -0
  259. package/dist/astro/routes/api/oauth/token/revoke.mjs +25 -0
  260. package/dist/astro/routes/api/oauth/token.d.mts +8 -0
  261. package/dist/astro/routes/api/oauth/token.mjs +138 -0
  262. package/dist/astro/routes/api/openapi.json.d.mts +7 -0
  263. package/dist/astro/routes/api/openapi.json.mjs +2638 -0
  264. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +11 -0
  265. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +77 -0
  266. package/dist/astro/routes/api/redirects/404s/index.d.mts +9 -0
  267. package/dist/astro/routes/api/redirects/404s/index.mjs +62 -0
  268. package/dist/astro/routes/api/redirects/404s/summary.d.mts +7 -0
  269. package/dist/astro/routes/api/redirects/404s/summary.mjs +34 -0
  270. package/dist/astro/routes/api/redirects/_id_.d.mts +9 -0
  271. package/dist/astro/routes/api/redirects/_id_.mjs +152 -0
  272. package/dist/astro/routes/api/redirects/index.d.mts +8 -0
  273. package/dist/astro/routes/api/redirects/index.mjs +97 -0
  274. package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts +7 -0
  275. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +16 -0
  276. package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts +7 -0
  277. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +23 -0
  278. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts +9 -0
  279. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +98 -0
  280. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts +8 -0
  281. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +80 -0
  282. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts +7 -0
  283. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +67 -0
  284. package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +9 -0
  285. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +97 -0
  286. package/dist/astro/routes/api/schema/collections/index.d.mts +8 -0
  287. package/dist/astro/routes/api/schema/collections/index.mjs +77 -0
  288. package/dist/astro/routes/api/schema/index.d.mts +7 -0
  289. package/dist/astro/routes/api/schema/index.mjs +79 -0
  290. package/dist/astro/routes/api/schema/orphans/_slug_.d.mts +7 -0
  291. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +58 -0
  292. package/dist/astro/routes/api/schema/orphans/index.d.mts +7 -0
  293. package/dist/astro/routes/api/schema/orphans/index.mjs +53 -0
  294. package/dist/astro/routes/api/search/enable.d.mts +15 -0
  295. package/dist/astro/routes/api/search/enable.mjs +55 -0
  296. package/dist/astro/routes/api/search/index.d.mts +16 -0
  297. package/dist/astro/routes/api/search/index.mjs +52 -0
  298. package/dist/astro/routes/api/search/rebuild.d.mts +13 -0
  299. package/dist/astro/routes/api/search/rebuild.mjs +48 -0
  300. package/dist/astro/routes/api/search/stats.d.mts +10 -0
  301. package/dist/astro/routes/api/search/stats.mjs +28 -0
  302. package/dist/astro/routes/api/search/suggest.d.mts +15 -0
  303. package/dist/astro/routes/api/search/suggest.mjs +43 -0
  304. package/dist/astro/routes/api/sections/_slug_.d.mts +9 -0
  305. package/dist/astro/routes/api/sections/_slug_.mjs +156 -0
  306. package/dist/astro/routes/api/sections/index.d.mts +8 -0
  307. package/dist/astro/routes/api/sections/index.mjs +99 -0
  308. package/dist/astro/routes/api/settings/email.d.mts +17 -0
  309. package/dist/astro/routes/api/settings/email.mjs +102 -0
  310. package/dist/astro/routes/api/settings.d.mts +20 -0
  311. package/dist/astro/routes/api/settings.mjs +101 -0
  312. package/dist/astro/routes/api/setup/admin-verify.d.mts +7 -0
  313. package/dist/astro/routes/api/setup/admin-verify.mjs +67 -0
  314. package/dist/astro/routes/api/setup/admin.d.mts +7 -0
  315. package/dist/astro/routes/api/setup/admin.mjs +68 -0
  316. package/dist/astro/routes/api/setup/dev-bypass.d.mts +8 -0
  317. package/dist/astro/routes/api/setup/dev-bypass.mjs +137 -0
  318. package/dist/astro/routes/api/setup/dev-reset.d.mts +7 -0
  319. package/dist/astro/routes/api/setup/dev-reset.mjs +22 -0
  320. package/dist/astro/routes/api/setup/index.d.mts +7 -0
  321. package/dist/astro/routes/api/setup/index.mjs +93 -0
  322. package/dist/astro/routes/api/setup/status.d.mts +7 -0
  323. package/dist/astro/routes/api/setup/status.mjs +57 -0
  324. package/dist/astro/routes/api/snapshot.d.mts +7 -0
  325. package/dist/astro/routes/api/snapshot.mjs +227 -0
  326. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts +18 -0
  327. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +189 -0
  328. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +14 -0
  329. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +113 -0
  330. package/dist/astro/routes/api/taxonomies/index.d.mts +14 -0
  331. package/dist/astro/routes/api/taxonomies/index.mjs +103 -0
  332. package/dist/astro/routes/api/themes/preview.d.mts +7 -0
  333. package/dist/astro/routes/api/themes/preview.mjs +47 -0
  334. package/dist/astro/routes/api/typegen.d.mts +17 -0
  335. package/dist/astro/routes/api/typegen.mjs +75 -0
  336. package/dist/astro/routes/api/well-known/auth.d.mts +7 -0
  337. package/dist/astro/routes/api/well-known/auth.mjs +42 -0
  338. package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts +7 -0
  339. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +33 -0
  340. package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts +7 -0
  341. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +21 -0
  342. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts +7 -0
  343. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +88 -0
  344. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts +8 -0
  345. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +158 -0
  346. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +7 -0
  347. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +104 -0
  348. package/dist/astro/routes/api/widget-areas/_name_.d.mts +8 -0
  349. package/dist/astro/routes/api/widget-areas/_name_.mjs +99 -0
  350. package/dist/astro/routes/api/widget-areas/index.d.mts +8 -0
  351. package/dist/astro/routes/api/widget-areas/index.mjs +108 -0
  352. package/dist/astro/routes/api/widget-components.d.mts +7 -0
  353. package/dist/astro/routes/api/widget-components.mjs +15 -0
  354. package/dist/astro/routes/robots.txt.d.mts +7 -0
  355. package/dist/astro/routes/robots.txt.mjs +60 -0
  356. package/dist/astro/routes/sitemap-_collection_.xml.d.mts +7 -0
  357. package/dist/astro/routes/sitemap-_collection_.xml.mjs +70 -0
  358. package/dist/astro/routes/sitemap.xml.d.mts +7 -0
  359. package/dist/astro/routes/sitemap.xml.mjs +63 -0
  360. package/dist/astro/types.d.mts +41 -9
  361. package/dist/auth/providers/github-admin.d.mts +9 -0
  362. package/dist/auth/providers/github-admin.mjs +27 -0
  363. package/dist/auth/providers/github.d.mts +12 -0
  364. package/dist/auth/providers/github.mjs +17 -0
  365. package/dist/auth/providers/google-admin.d.mts +9 -0
  366. package/dist/auth/providers/google-admin.mjs +43 -0
  367. package/dist/auth/providers/google.d.mts +12 -0
  368. package/dist/auth/providers/google.mjs +17 -0
  369. package/dist/auth-control-guard-DKUe_1oa.mjs +13 -0
  370. package/dist/authorize-BBj8C6Y8.mjs +36 -0
  371. package/dist/briefing-BrXCuMEE.mjs +1294 -0
  372. package/dist/briefing-ClWw4mc9.mjs +29 -0
  373. package/dist/{byline-OhH2dlRu.mjs → byline-naZxOPSa.mjs} +3 -3
  374. package/dist/{bylines-BGpD9_hy.mjs → bylines-BcOPh6Ej.mjs} +20 -53
  375. package/dist/bylines-HfUKum_j.d.mts +2023 -0
  376. package/dist/{cache-BdSY-gQN.mjs → cache-DEbQ13c9.mjs} +21 -11
  377. package/dist/challenge-store-DHMgBGOq.mjs +48 -0
  378. package/dist/cli/index.mjs +142 -22
  379. package/dist/client/external-auth-headers.d.mts +1 -1
  380. package/dist/client/index.d.mts +1 -1
  381. package/dist/client/index.mjs +3 -3
  382. package/dist/comment-DFO-gWDH.mjs +246 -0
  383. package/dist/comments-Gy3zLBaP.mjs +186 -0
  384. package/dist/components-DND2rd3D.mjs +107 -0
  385. package/dist/{content-DWi4d0rT.mjs → content-CyLkb-qH.mjs} +33 -44
  386. package/dist/context-bE5Kyvcj.mjs +184 -0
  387. package/dist/context-nxMyOe3p.mjs +849 -0
  388. package/dist/context-route-helpers-D-6uCQ0S.mjs +45 -0
  389. package/dist/context-types-C-LwdAxx.mjs +23 -0
  390. package/dist/cron-DGzVTtJp.mjs +263 -0
  391. package/dist/dashboard-DqnYU8EU.mjs +120 -0
  392. package/dist/db/index.d.mts +3 -3
  393. package/dist/db/libsql.d.mts +1 -1
  394. package/dist/db/libsql.mjs +3 -3
  395. package/dist/db/postgres.d.mts +1 -1
  396. package/dist/db/sqlite.d.mts +1 -1
  397. package/dist/db/sqlite.mjs +1 -2
  398. package/dist/device-flow-7AhWNwCK.mjs +487 -0
  399. package/dist/email-console-CgLVZbcn.mjs +36 -0
  400. package/dist/entity-aliases-C0v-yNET.mjs +51 -0
  401. package/dist/error-DEGjx2Xw.mjs +435 -0
  402. package/dist/escape-mNZr4t2A.mjs +8 -0
  403. package/dist/experimental-workflows-DldxJlqV.mjs +38 -0
  404. package/dist/fts-manager-B1pTNEG_.mjs +297 -0
  405. package/dist/hash-CDX7M0ze.mjs +32 -0
  406. package/dist/hitl-requests-Bx3Bkk9l.mjs +118 -0
  407. package/dist/hitl-route-helpers-DMmJRS7B.mjs +96 -0
  408. package/dist/import-DD3f2jkc.mjs +243 -0
  409. package/dist/import-DVZcYlDp.mjs +1323 -0
  410. package/dist/index-CkljPf5F.d.mts +227 -0
  411. package/dist/index.d.mts +15 -11
  412. package/dist/index.mjs +60 -22
  413. package/dist/{loader-sMG4TZ-u.mjs → loader-PZnPxFLc.mjs} +42 -5
  414. package/dist/{manifest-schema-D1MSVnoI.mjs → manifest-schema-DYoCQ5np.mjs} +22 -10
  415. package/dist/media/index.d.mts +1 -1
  416. package/dist/media/index.mjs +2 -1
  417. package/dist/media/local-runtime.d.mts +11 -7
  418. package/dist/media/local-runtime.mjs +3 -3
  419. package/dist/{media-DMTr80Gv.mjs → media-_7Fxdu45.mjs} +1 -1
  420. package/dist/menus-BacxVCCo.mjs +312 -0
  421. package/dist/menus-CrzHokKj.mjs +3502 -0
  422. package/dist/normalize-C49G_o1k.mjs +126 -0
  423. package/dist/oauth-authorization-C1qiw4hd.mjs +283 -0
  424. package/dist/oauth-clients-CvWatf5p.mjs +298 -0
  425. package/dist/oauth-state-store-hSdzxsEe.mjs +48 -0
  426. package/dist/oauth-user-lookup-B4OcmsLV.mjs +25 -0
  427. package/dist/options-z8VVg1Ll.mjs +114 -0
  428. package/dist/page/index.d.mts +2 -2
  429. package/dist/parse-BeQXIt1U.mjs +88 -0
  430. package/dist/passkey-config-Daqs5fjq.mjs +42 -0
  431. package/dist/{patterns-CrCYkMBb.mjs → patterns-K0DLqWir.mjs} +53 -1
  432. package/dist/{placeholder-Cp8g5Emj.mjs → placeholder-C2P5fKa4.mjs} +1 -126
  433. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -5
  434. package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
  435. package/dist/preview-C_4DyVox.mjs +788 -0
  436. package/dist/public-url-BB_umF5G.mjs +71 -0
  437. package/dist/{query-kDmwCsHh.mjs → query-RiobVwB5.mjs} +93 -19
  438. package/dist/rate-limit-CbJoj_fT.mjs +112 -0
  439. package/dist/{redirect-DnEWAkVg.mjs → redirect-CGl64yOX.mjs} +9 -5
  440. package/dist/redirect-ClSmMOtC.mjs +16 -0
  441. package/dist/redirects-B69T59hK.mjs +499 -0
  442. package/dist/redirects-CqaxraTO.mjs +1070 -0
  443. package/dist/{registry-C0zjeB9P.mjs → registry-C-_hxLqa.mjs} +26 -294
  444. package/dist/request-meta-Bd0mQfiS.mjs +130 -0
  445. package/dist/review-requests-C2DIHwlJ.mjs +148 -0
  446. package/dist/review-requests-DIyjw-K_.mjs +79 -0
  447. package/dist/{runner-CFI6B6J2.d.mts → runner-9eIQXuc2.d.mts} +1 -1
  448. package/dist/{index-yvc6E_17.d.mts → runtime-C4-7y7xK.d.mts} +1539 -2007
  449. package/dist/runtime.d.mts +10 -6
  450. package/dist/runtime.mjs +3 -3
  451. package/dist/schema-BNpI53of.mjs +40 -0
  452. package/dist/search-DM6CVti3.mjs +337 -0
  453. package/dist/secrets-dI8zzTV7.mjs +160 -0
  454. package/dist/sections-DZFyAQXd.mjs +338 -0
  455. package/dist/seed/index.d.mts +2 -2
  456. package/dist/seed/index.mjs +18 -13
  457. package/dist/seo/index.d.mts +1 -1
  458. package/dist/seo-BBgTCOYU.mjs +85 -0
  459. package/dist/seo-CUQctrog.mjs +129 -0
  460. package/dist/service-CSfcQguB.mjs +194 -0
  461. package/dist/settings-4XnpVMOS.mjs +223 -0
  462. package/dist/settings-Bw93cLfe.mjs +50 -0
  463. package/dist/setup-complete-DidsDQ1e.mjs +21 -0
  464. package/dist/setup-nonce-pml1PMKo.mjs +17 -0
  465. package/dist/sidecar-client-vzwV98K4.mjs +66 -0
  466. package/dist/site-activity-B8FjLIVh.mjs +104 -0
  467. package/dist/site-context-Bpu_Paur.mjs +4122 -0
  468. package/dist/site-url-CYIcO0Tj.mjs +12 -0
  469. package/dist/slugify-PDTDtMXp.mjs +30 -0
  470. package/dist/ssrf-CmM76lLV.mjs +248 -0
  471. package/dist/storage/local.d.mts +1 -1
  472. package/dist/storage/local.mjs +1 -1
  473. package/dist/storage/s3.d.mts +1 -1
  474. package/dist/storage/s3.mjs +2 -2
  475. package/dist/{taxonomies-1s5PaS_8.mjs → taxonomies-BvBgfzn3.mjs} +11 -7
  476. package/dist/taxonomies-CpqGcIJD.mjs +355 -0
  477. package/dist/taxonomy-D5cbhc8u.mjs +165 -0
  478. package/dist/{tokens-CJz9ubV6.mjs → tokens-DLTo4dO2.mjs} +1 -1
  479. package/dist/{transport-DB5eDN4x.mjs → transport-C9e_h-BF.mjs} +5 -4
  480. package/dist/trusted-proxy-Bi0Cuk5n.mjs +30 -0
  481. package/dist/{types-BawVha09.mjs → types-Bs6lTBBW.mjs} +1 -1
  482. package/dist/types-C982qI5I.d.mts +344 -0
  483. package/dist/types-D4XVOt01.d.mts +165 -0
  484. package/dist/{types-Cj0KMIZV.d.mts → types-DgfUZqcd.d.mts} +54 -16
  485. package/dist/{types-BuMDPy5C.d.mts → types-IPACEM14.d.mts} +6 -0
  486. package/dist/user-CcXq-zoL.mjs +154 -0
  487. package/dist/utils-D2in-zwy.mjs +285 -0
  488. package/dist/{validate-BZ5wnLLp.mjs → validate-BJgA6TW_.mjs} +1 -1
  489. package/dist/{validate-IPf8n4Fj.d.mts → validate-JCZihRIa.d.mts} +3 -3
  490. package/dist/version-DH53KCQd.mjs +6 -0
  491. package/dist/widgets-B7Q_7bxN.mjs +104 -0
  492. package/dist/wordpress-slugs-BevajWrC.mjs +14 -0
  493. package/dist/zod-generator-DBVP8D0P.mjs +132 -0
  494. package/locals.d.ts +1 -6
  495. package/package.json +67 -11
  496. package/src/components/DinewayHead.astro +8 -4
  497. package/src/components/DinewayImage.astro +7 -5
  498. package/src/components/DinewayMedia.astro +9 -3
  499. package/src/components/Gallery.astro +5 -3
  500. package/src/components/Image.astro +5 -1
  501. package/src/components/InlinePortableTextEditor.tsx +68 -19
  502. package/dist/error-BmL6QipT.mjs +0 -30
  503. package/dist/search-DxopAWxs.mjs +0 -11200
  504. package/dist/version-BPz1imu2.mjs +0 -6
  505. package/src/astro/routes/PluginRegistry.tsx +0 -21
  506. package/src/astro/routes/api/admin/allowed-domains/[domain].ts +0 -112
  507. package/src/astro/routes/api/admin/allowed-domains/index.ts +0 -108
  508. package/src/astro/routes/api/admin/api-tokens/[id].ts +0 -44
  509. package/src/astro/routes/api/admin/api-tokens/index.ts +0 -90
  510. package/src/astro/routes/api/admin/briefing.ts +0 -76
  511. package/src/astro/routes/api/admin/bylines/[id]/index.ts +0 -90
  512. package/src/astro/routes/api/admin/bylines/index.ts +0 -74
  513. package/src/astro/routes/api/admin/comments/[id]/status.ts +0 -120
  514. package/src/astro/routes/api/admin/comments/[id].ts +0 -64
  515. package/src/astro/routes/api/admin/comments/bulk.ts +0 -42
  516. package/src/astro/routes/api/admin/comments/counts.ts +0 -30
  517. package/src/astro/routes/api/admin/comments/index.ts +0 -46
  518. package/src/astro/routes/api/admin/context/[id]/history.ts +0 -35
  519. package/src/astro/routes/api/admin/context/[id]/index.ts +0 -35
  520. package/src/astro/routes/api/admin/context/[id]/review.ts +0 -57
  521. package/src/astro/routes/api/admin/context/[id]/supersede.ts +0 -58
  522. package/src/astro/routes/api/admin/context/diff.ts +0 -35
  523. package/src/astro/routes/api/admin/context/index.ts +0 -69
  524. package/src/astro/routes/api/admin/context/stale.ts +0 -35
  525. package/src/astro/routes/api/admin/hitl-requests/[id]/index.ts +0 -38
  526. package/src/astro/routes/api/admin/hitl-requests/[id]/resolve.ts +0 -54
  527. package/src/astro/routes/api/admin/hitl-requests/index.ts +0 -38
  528. package/src/astro/routes/api/admin/hooks/exclusive/[hookName].ts +0 -132
  529. package/src/astro/routes/api/admin/hooks/exclusive/index.ts +0 -51
  530. package/src/astro/routes/api/admin/oauth-clients/[id].ts +0 -137
  531. package/src/astro/routes/api/admin/oauth-clients/index.ts +0 -95
  532. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +0 -91
  533. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +0 -91
  534. package/src/astro/routes/api/admin/plugins/[id]/index.ts +0 -38
  535. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +0 -98
  536. package/src/astro/routes/api/admin/plugins/[id]/update.ts +0 -154
  537. package/src/astro/routes/api/admin/plugins/index.ts +0 -32
  538. package/src/astro/routes/api/admin/plugins/marketplace/[id]/icon.ts +0 -62
  539. package/src/astro/routes/api/admin/plugins/marketplace/[id]/index.ts +0 -33
  540. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +0 -135
  541. package/src/astro/routes/api/admin/plugins/marketplace/index.ts +0 -38
  542. package/src/astro/routes/api/admin/plugins/updates.ts +0 -28
  543. package/src/astro/routes/api/admin/review-requests/[id]/index.ts +0 -35
  544. package/src/astro/routes/api/admin/review-requests/[id]/resolve.ts +0 -52
  545. package/src/astro/routes/api/admin/review-requests/index.ts +0 -35
  546. package/src/astro/routes/api/admin/themes/marketplace/[id]/index.ts +0 -33
  547. package/src/astro/routes/api/admin/themes/marketplace/[id]/thumbnail.ts +0 -62
  548. package/src/astro/routes/api/admin/themes/marketplace/index.ts +0 -45
  549. package/src/astro/routes/api/admin/users/[id]/disable.ts +0 -72
  550. package/src/astro/routes/api/admin/users/[id]/enable.ts +0 -48
  551. package/src/astro/routes/api/admin/users/[id]/index.ts +0 -166
  552. package/src/astro/routes/api/admin/users/[id]/send-recovery.ts +0 -72
  553. package/src/astro/routes/api/admin/users/index.ts +0 -66
  554. package/src/astro/routes/api/auth/dev-bypass.ts +0 -139
  555. package/src/astro/routes/api/auth/invite/accept.ts +0 -52
  556. package/src/astro/routes/api/auth/invite/complete.ts +0 -86
  557. package/src/astro/routes/api/auth/invite/index.ts +0 -99
  558. package/src/astro/routes/api/auth/invite/register-options.ts +0 -73
  559. package/src/astro/routes/api/auth/logout.ts +0 -40
  560. package/src/astro/routes/api/auth/magic-link/send.ts +0 -90
  561. package/src/astro/routes/api/auth/magic-link/verify.ts +0 -71
  562. package/src/astro/routes/api/auth/me.ts +0 -60
  563. package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +0 -221
  564. package/src/astro/routes/api/auth/oauth/[provider].ts +0 -120
  565. package/src/astro/routes/api/auth/passkey/[id].ts +0 -124
  566. package/src/astro/routes/api/auth/passkey/index.ts +0 -54
  567. package/src/astro/routes/api/auth/passkey/options.ts +0 -85
  568. package/src/astro/routes/api/auth/passkey/register/options.ts +0 -88
  569. package/src/astro/routes/api/auth/passkey/register/verify.ts +0 -119
  570. package/src/astro/routes/api/auth/passkey/verify.ts +0 -72
  571. package/src/astro/routes/api/auth/signup/complete.ts +0 -87
  572. package/src/astro/routes/api/auth/signup/request.ts +0 -89
  573. package/src/astro/routes/api/auth/signup/verify.ts +0 -53
  574. package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +0 -310
  575. package/src/astro/routes/api/content/[collection]/[id]/compare.ts +0 -28
  576. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +0 -68
  577. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +0 -77
  578. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +0 -42
  579. package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +0 -107
  580. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +0 -100
  581. package/src/astro/routes/api/content/[collection]/[id]/restore.ts +0 -64
  582. package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +0 -31
  583. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +0 -129
  584. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +0 -143
  585. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +0 -50
  586. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +0 -69
  587. package/src/astro/routes/api/content/[collection]/[id].ts +0 -173
  588. package/src/astro/routes/api/content/[collection]/index.ts +0 -103
  589. package/src/astro/routes/api/content/[collection]/trash.ts +0 -33
  590. package/src/astro/routes/api/dashboard.ts +0 -32
  591. package/src/astro/routes/api/dev/emails.ts +0 -36
  592. package/src/astro/routes/api/health.ts +0 -54
  593. package/src/astro/routes/api/import/probe.ts +0 -47
  594. package/src/astro/routes/api/import/wordpress/analyze.ts +0 -523
  595. package/src/astro/routes/api/import/wordpress/execute.ts +0 -330
  596. package/src/astro/routes/api/import/wordpress/media.ts +0 -338
  597. package/src/astro/routes/api/import/wordpress/prepare.ts +0 -212
  598. package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +0 -425
  599. package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +0 -111
  600. package/src/astro/routes/api/import/wordpress-plugin/callback.ts +0 -58
  601. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +0 -399
  602. package/src/astro/routes/api/manifest.ts +0 -75
  603. package/src/astro/routes/api/mcp.ts +0 -125
  604. package/src/astro/routes/api/media/[id]/confirm.ts +0 -93
  605. package/src/astro/routes/api/media/[id].ts +0 -145
  606. package/src/astro/routes/api/media/file/[...key].ts +0 -79
  607. package/src/astro/routes/api/media/providers/[providerId]/[itemId].ts +0 -91
  608. package/src/astro/routes/api/media/providers/[providerId]/index.ts +0 -111
  609. package/src/astro/routes/api/media/providers/index.ts +0 -30
  610. package/src/astro/routes/api/media/upload-url.ts +0 -146
  611. package/src/astro/routes/api/media.ts +0 -204
  612. package/src/astro/routes/api/menus/[name]/reorder.ts +0 -79
  613. package/src/astro/routes/api/menus/[name].ts +0 -145
  614. package/src/astro/routes/api/menus/index.ts +0 -91
  615. package/src/astro/routes/api/oauth/authorize.ts +0 -430
  616. package/src/astro/routes/api/oauth/device/authorize.ts +0 -45
  617. package/src/astro/routes/api/oauth/device/code.ts +0 -56
  618. package/src/astro/routes/api/oauth/device/token.ts +0 -70
  619. package/src/astro/routes/api/oauth/register.ts +0 -182
  620. package/src/astro/routes/api/oauth/token/refresh.ts +0 -38
  621. package/src/astro/routes/api/oauth/token/revoke.ts +0 -38
  622. package/src/astro/routes/api/oauth/token.ts +0 -195
  623. package/src/astro/routes/api/openapi.json.ts +0 -33
  624. package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +0 -109
  625. package/src/astro/routes/api/redirects/404s/index.ts +0 -72
  626. package/src/astro/routes/api/redirects/404s/summary.ts +0 -33
  627. package/src/astro/routes/api/redirects/[id].ts +0 -183
  628. package/src/astro/routes/api/redirects/index.ts +0 -100
  629. package/src/astro/routes/api/revisions/[revisionId]/index.ts +0 -29
  630. package/src/astro/routes/api/revisions/[revisionId]/restore.ts +0 -62
  631. package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +0 -104
  632. package/src/astro/routes/api/schema/collections/[slug]/fields/index.ts +0 -67
  633. package/src/astro/routes/api/schema/collections/[slug]/fields/reorder.ts +0 -45
  634. package/src/astro/routes/api/schema/collections/[slug]/index.ts +0 -107
  635. package/src/astro/routes/api/schema/collections/index.ts +0 -61
  636. package/src/astro/routes/api/schema/index.ts +0 -109
  637. package/src/astro/routes/api/schema/orphans/[slug].ts +0 -36
  638. package/src/astro/routes/api/schema/orphans/index.ts +0 -26
  639. package/src/astro/routes/api/search/enable.ts +0 -64
  640. package/src/astro/routes/api/search/index.ts +0 -52
  641. package/src/astro/routes/api/search/rebuild.ts +0 -72
  642. package/src/astro/routes/api/search/stats.ts +0 -35
  643. package/src/astro/routes/api/search/suggest.ts +0 -50
  644. package/src/astro/routes/api/sections/[slug].ts +0 -203
  645. package/src/astro/routes/api/sections/index.ts +0 -107
  646. package/src/astro/routes/api/settings/email.ts +0 -150
  647. package/src/astro/routes/api/settings.ts +0 -116
  648. package/src/astro/routes/api/setup/admin-verify.ts +0 -122
  649. package/src/astro/routes/api/setup/admin.ts +0 -104
  650. package/src/astro/routes/api/setup/dev-bypass.ts +0 -200
  651. package/src/astro/routes/api/setup/dev-reset.ts +0 -40
  652. package/src/astro/routes/api/setup/index.ts +0 -128
  653. package/src/astro/routes/api/setup/status.ts +0 -122
  654. package/src/astro/routes/api/snapshot.ts +0 -76
  655. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +0 -232
  656. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +0 -131
  657. package/src/astro/routes/api/taxonomies/index.ts +0 -114
  658. package/src/astro/routes/api/themes/preview.ts +0 -78
  659. package/src/astro/routes/api/typegen.ts +0 -114
  660. package/src/astro/routes/api/well-known/auth.ts +0 -71
  661. package/src/astro/routes/api/well-known/oauth-authorization-server.ts +0 -48
  662. package/src/astro/routes/api/well-known/oauth-protected-resource.ts +0 -39
  663. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +0 -114
  664. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +0 -213
  665. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +0 -126
  666. package/src/astro/routes/api/widget-areas/[name].ts +0 -135
  667. package/src/astro/routes/api/widget-areas/index.ts +0 -149
  668. package/src/astro/routes/api/widget-components.ts +0 -22
  669. package/src/astro/routes/robots.txt.ts +0 -81
  670. package/src/astro/routes/sitemap-[collection].xml.ts +0 -104
  671. package/src/astro/routes/sitemap.xml.ts +0 -92
  672. /package/dist/{adapters-C2ypTrZZ.d.mts → adapters-BLDldpJg.d.mts} +0 -0
  673. /package/{src → dist}/astro/routes/admin.astro +0 -0
  674. /package/dist/{base64-F8-DUraK.mjs → base64-Cz-aU0X1.mjs} +0 -0
  675. /package/dist/{chunks--4F8ddV4.mjs → chunks-D_jVet6z.mjs} +0 -0
  676. /package/dist/{config-BXwuX8Bx.mjs → config-CAMFxGaV.mjs} +0 -0
  677. /package/dist/{db-errors-CEqD7qH9.mjs → db-errors-DKUg_NgF.mjs} +0 -0
  678. /package/dist/{default-VjJyuuG9.mjs → default-C3PZN-bz.mjs} +0 -0
  679. /package/dist/{load-Coc9HpHH.mjs → load-D-9NhLmF.mjs} +0 -0
  680. /package/dist/{mode-47goXBBK.mjs → mode-C80mAZQv.mjs} +0 -0
  681. /package/dist/{placeholder--wOi4TbO.d.mts → placeholder-CHkLckzK.d.mts} +0 -0
  682. /package/dist/{request-cache-Dk5qPSOx.mjs → request-cache-DHMRr2Lf.mjs} +0 -0
  683. /package/dist/{transaction-Cn2rjY78.mjs → transaction-x2tJQ-A1.mjs} +0 -0
  684. /package/dist/{transport-Wge_IzKl.d.mts → transport-6RefuBdV.d.mts} +0 -0
  685. /package/dist/{types-griIBQOQ.mjs → types-B9gKVOHk.mjs} +0 -0
  686. /package/dist/{types-CWbdtiux.d.mts → types-B9qVtiHb.d.mts} +0 -0
  687. /package/dist/{types-COeOq9nK.mjs → types-DL7Y8D_t.mjs} +0 -0
  688. /package/dist/{types-BzcUjoqg.d.mts → types-Djdp0cZO.d.mts} +0 -0
  689. /package/dist/{types-DOrVigru.d.mts → types-Du8jreyC.d.mts} +0 -0
@@ -1,301 +1,13 @@
1
1
  import { t as __exportAll } from "./chunk-ClPoSABd.mjs";
2
2
  import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
3
- import { a as isSqlite, c as tableExists, n as currentTimestamp, s as listTablesLike } from "./dialect-helpers-DhTzaUxP.mjs";
4
- import { t as withTransaction } from "./transaction-Cn2rjY78.mjs";
5
- import { i as RESERVED_FIELD_SLUGS, n as FIELD_TYPE_TO_COLUMN, r as RESERVED_COLLECTION_SLUGS } from "./types-COeOq9nK.mjs";
3
+ import { c as tableExists, n as currentTimestamp, s as listTablesLike } from "./dialect-helpers-DhTzaUxP.mjs";
4
+ import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-D_jVet6z.mjs";
5
+ import { t as withTransaction } from "./transaction-x2tJQ-A1.mjs";
6
+ import { t as FTSManager } from "./fts-manager-B1pTNEG_.mjs";
7
+ import { i as RESERVED_FIELD_SLUGS, n as FIELD_TYPE_TO_COLUMN, r as RESERVED_COLLECTION_SLUGS } from "./types-DL7Y8D_t.mjs";
6
8
  import { sql } from "kysely";
7
9
  import { ulid } from "ulidx";
8
10
 
9
- //#region src/search/fts-manager.ts
10
- /**
11
- * FTS5 Manager
12
- *
13
- * Handles creation, deletion, and management of FTS5 virtual tables
14
- * for full-text search on content collections.
15
- */
16
- var FTSManager = class {
17
- constructor(db) {
18
- this.db = db;
19
- }
20
- /**
21
- * Validate a collection slug and its searchable field names.
22
- * Must be called before any raw SQL interpolation.
23
- */
24
- validateInputs(collectionSlug, searchableFields) {
25
- validateIdentifier(collectionSlug, "collection slug");
26
- if (searchableFields) for (const field of searchableFields) validateIdentifier(field, "searchable field name");
27
- }
28
- /**
29
- * Get the FTS table name for a collection
30
- * Uses _dineway_ prefix to clearly mark as internal/system table
31
- */
32
- getFtsTableName(collectionSlug) {
33
- validateIdentifier(collectionSlug, "collection slug");
34
- return `_dineway_fts_${collectionSlug}`;
35
- }
36
- /**
37
- * Get the content table name for a collection
38
- */
39
- getContentTableName(collectionSlug) {
40
- validateIdentifier(collectionSlug, "collection slug");
41
- return `ec_${collectionSlug}`;
42
- }
43
- /**
44
- * Check if an FTS table exists for a collection
45
- */
46
- async ftsTableExists(collectionSlug) {
47
- const ftsTable = this.getFtsTableName(collectionSlug);
48
- return tableExists(this.db, ftsTable);
49
- }
50
- /**
51
- * Create an FTS5 virtual table for a collection.
52
- * FTS5 is SQLite-only; on other dialects this is a no-op.
53
- *
54
- * @param collectionSlug - The collection slug
55
- * @param searchableFields - Array of field names to index
56
- * @param weights - Optional field weights for ranking
57
- */
58
- async createFtsTable(collectionSlug, searchableFields, _weights) {
59
- if (!isSqlite(this.db)) return;
60
- this.validateInputs(collectionSlug, searchableFields);
61
- const ftsTable = this.getFtsTableName(collectionSlug);
62
- const contentTable = this.getContentTableName(collectionSlug);
63
- const columns = [
64
- "id UNINDEXED",
65
- "locale UNINDEXED",
66
- ...searchableFields
67
- ].join(", ");
68
- await sql.raw(`
69
- CREATE VIRTUAL TABLE IF NOT EXISTS "${ftsTable}" USING fts5(
70
- ${columns},
71
- content='${contentTable}',
72
- content_rowid='rowid',
73
- tokenize='porter unicode61'
74
- )
75
- `).execute(this.db);
76
- await this.createTriggers(collectionSlug, searchableFields);
77
- }
78
- /**
79
- * Create triggers to keep FTS table in sync with content table.
80
- *
81
- * Insert and update triggers only add rows to the FTS index when
82
- * `deleted_at IS NULL`. This keeps soft-deleted content out of the
83
- * index and keeps repair counts aligned with searchable content.
84
- */
85
- async createTriggers(collectionSlug, searchableFields) {
86
- this.validateInputs(collectionSlug, searchableFields);
87
- const ftsTable = this.getFtsTableName(collectionSlug);
88
- const contentTable = this.getContentTableName(collectionSlug);
89
- const fieldList = searchableFields.join(", ");
90
- const newFieldList = searchableFields.map((f) => `NEW.${f}`).join(", ");
91
- await sql.raw(`
92
- CREATE TRIGGER IF NOT EXISTS "${ftsTable}_insert"
93
- AFTER INSERT ON "${contentTable}"
94
- WHEN NEW.deleted_at IS NULL
95
- BEGIN
96
- INSERT INTO "${ftsTable}"(rowid, id, locale, ${fieldList})
97
- VALUES (NEW.rowid, NEW.id, NEW.locale, ${newFieldList});
98
- END
99
- `).execute(this.db);
100
- await sql.raw(`
101
- CREATE TRIGGER IF NOT EXISTS "${ftsTable}_update"
102
- AFTER UPDATE ON "${contentTable}"
103
- BEGIN
104
- DELETE FROM "${ftsTable}" WHERE rowid = OLD.rowid;
105
- INSERT INTO "${ftsTable}"(rowid, id, locale, ${fieldList})
106
- SELECT NEW.rowid, NEW.id, NEW.locale, ${newFieldList}
107
- WHERE NEW.deleted_at IS NULL;
108
- END
109
- `).execute(this.db);
110
- await sql.raw(`
111
- CREATE TRIGGER IF NOT EXISTS "${ftsTable}_delete"
112
- AFTER DELETE ON "${contentTable}"
113
- BEGIN
114
- DELETE FROM "${ftsTable}" WHERE rowid = OLD.rowid;
115
- END
116
- `).execute(this.db);
117
- }
118
- /**
119
- * Drop triggers for a collection
120
- */
121
- async dropTriggers(collectionSlug) {
122
- this.validateInputs(collectionSlug);
123
- const ftsTable = this.getFtsTableName(collectionSlug);
124
- await sql.raw(`DROP TRIGGER IF EXISTS "${ftsTable}_insert"`).execute(this.db);
125
- await sql.raw(`DROP TRIGGER IF EXISTS "${ftsTable}_update"`).execute(this.db);
126
- await sql.raw(`DROP TRIGGER IF EXISTS "${ftsTable}_delete"`).execute(this.db);
127
- }
128
- /**
129
- * Drop the FTS table and triggers for a collection
130
- */
131
- async dropFtsTable(collectionSlug) {
132
- if (!isSqlite(this.db)) return;
133
- this.validateInputs(collectionSlug);
134
- const ftsTable = this.getFtsTableName(collectionSlug);
135
- await this.dropTriggers(collectionSlug);
136
- await sql.raw(`DROP TABLE IF EXISTS "${ftsTable}"`).execute(this.db);
137
- }
138
- /**
139
- * Rebuild the FTS index for a collection
140
- *
141
- * This is useful after bulk imports or if the index gets out of sync.
142
- */
143
- async rebuildIndex(collectionSlug, searchableFields, weights) {
144
- if (!isSqlite(this.db)) return;
145
- await this.dropFtsTable(collectionSlug);
146
- await this.createFtsTable(collectionSlug, searchableFields, weights);
147
- await this.populateFromContent(collectionSlug, searchableFields);
148
- }
149
- /**
150
- * Populate the FTS table from existing content
151
- */
152
- async populateFromContent(collectionSlug, searchableFields) {
153
- if (!isSqlite(this.db)) return;
154
- this.validateInputs(collectionSlug, searchableFields);
155
- const ftsTable = this.getFtsTableName(collectionSlug);
156
- const contentTable = this.getContentTableName(collectionSlug);
157
- const fieldList = searchableFields.join(", ");
158
- await sql.raw(`
159
- INSERT INTO "${ftsTable}"(rowid, id, locale, ${fieldList})
160
- SELECT rowid, id, locale, ${fieldList} FROM "${contentTable}"
161
- WHERE deleted_at IS NULL
162
- `).execute(this.db);
163
- }
164
- /**
165
- * Get the search configuration for a collection
166
- */
167
- async getSearchConfig(collectionSlug) {
168
- const result = await this.db.selectFrom("_dineway_collections").select("search_config").where("slug", "=", collectionSlug).executeTakeFirst();
169
- if (!result?.search_config) return null;
170
- try {
171
- const parsed = JSON.parse(result.search_config);
172
- if (typeof parsed !== "object" || parsed === null || !("enabled" in parsed) || typeof parsed.enabled !== "boolean") return null;
173
- const config = { enabled: parsed.enabled };
174
- if ("weights" in parsed && typeof parsed.weights === "object" && parsed.weights !== null) {
175
- const weights = {};
176
- for (const [k, v] of Object.entries(parsed.weights)) if (typeof v === "number") weights[k] = v;
177
- config.weights = weights;
178
- }
179
- return config;
180
- } catch {
181
- return null;
182
- }
183
- }
184
- /**
185
- * Update the search configuration for a collection
186
- */
187
- async setSearchConfig(collectionSlug, config) {
188
- await this.db.updateTable("_dineway_collections").set({ search_config: JSON.stringify(config) }).where("slug", "=", collectionSlug).execute();
189
- }
190
- /**
191
- * Get searchable fields for a collection
192
- */
193
- async getSearchableFields(collectionSlug) {
194
- const collection = await this.db.selectFrom("_dineway_collections").select("id").where("slug", "=", collectionSlug).executeTakeFirst();
195
- if (!collection) return [];
196
- return (await this.db.selectFrom("_dineway_fields").select("slug").where("collection_id", "=", collection.id).where("searchable", "=", 1).execute()).map((f) => f.slug);
197
- }
198
- /**
199
- * Enable search for a collection.
200
- *
201
- * Rebuilds from scratch to ensure stale tables or triggers do not survive
202
- * repeated enablement.
203
- */
204
- async enableSearch(collectionSlug, options) {
205
- if (!isSqlite(this.db)) throw new Error("Full-text search is only available with SQLite databases");
206
- const searchableFields = await this.getSearchableFields(collectionSlug);
207
- if (searchableFields.length === 0) throw new Error(`No searchable fields defined for collection "${collectionSlug}". Mark at least one field as searchable before enabling search.`);
208
- await this.rebuildIndex(collectionSlug, searchableFields, options?.weights);
209
- await this.setSearchConfig(collectionSlug, {
210
- enabled: true,
211
- weights: options?.weights
212
- });
213
- }
214
- /**
215
- * Disable search for a collection
216
- *
217
- * Drops the FTS table and triggers.
218
- */
219
- async disableSearch(collectionSlug) {
220
- if (!isSqlite(this.db)) return;
221
- const existing = await this.getSearchConfig(collectionSlug);
222
- await this.dropFtsTable(collectionSlug);
223
- await this.setSearchConfig(collectionSlug, {
224
- enabled: false,
225
- weights: existing?.weights
226
- });
227
- }
228
- /**
229
- * Get index statistics for a collection
230
- */
231
- async getIndexStats(collectionSlug) {
232
- if (!isSqlite(this.db)) return null;
233
- this.validateInputs(collectionSlug);
234
- const ftsDocsizeTable = `${this.getFtsTableName(collectionSlug)}_docsize`;
235
- if (!await this.ftsTableExists(collectionSlug)) return null;
236
- return { indexed: (await sql`
237
- SELECT COUNT(*) as count FROM "${sql.raw(ftsDocsizeTable)}"
238
- `.execute(this.db)).rows[0]?.count ?? 0 };
239
- }
240
- /**
241
- * Verify FTS index integrity and rebuild if corrupted.
242
- *
243
- * Checks for row count mismatch between content table and FTS table.
244
- *
245
- * Returns true if the index was rebuilt, false if it was healthy.
246
- */
247
- async verifyAndRepairIndex(collectionSlug) {
248
- if (!isSqlite(this.db)) return false;
249
- this.validateInputs(collectionSlug);
250
- const ftsDocsizeTable = `${this.getFtsTableName(collectionSlug)}_docsize`;
251
- const contentTable = this.getContentTableName(collectionSlug);
252
- const fields = await this.getSearchableFields(collectionSlug);
253
- const config = await this.getSearchConfig(collectionSlug);
254
- if (!await this.ftsTableExists(collectionSlug)) {
255
- if (!config?.enabled || fields.length === 0) return false;
256
- console.warn(`FTS index for "${collectionSlug}" is missing. Rebuilding.`);
257
- await this.rebuildIndex(collectionSlug, fields, config.weights);
258
- return true;
259
- }
260
- const contentCount = await sql`
261
- SELECT COUNT(*) as count FROM ${sql.ref(contentTable)}
262
- WHERE deleted_at IS NULL
263
- `.execute(this.db);
264
- const ftsCount = await sql`
265
- SELECT COUNT(*) as count FROM "${sql.raw(ftsDocsizeTable)}"
266
- `.execute(this.db);
267
- const contentRows = contentCount.rows[0]?.count ?? 0;
268
- const ftsRows = ftsCount.rows[0]?.count ?? 0;
269
- if (contentRows !== ftsRows) {
270
- console.warn(`FTS index for "${collectionSlug}" has ${ftsRows} rows but content table has ${contentRows}. Rebuilding.`);
271
- if (fields.length > 0) await this.rebuildIndex(collectionSlug, fields, config?.weights);
272
- return true;
273
- }
274
- return false;
275
- }
276
- /**
277
- * Verify and repair FTS indexes for all search-enabled collections.
278
- *
279
- * Intended to run at startup to auto-heal any corruption from
280
- * previous process crashes.
281
- */
282
- async verifyAndRepairAll() {
283
- if (!isSqlite(this.db)) return 0;
284
- const collections = await this.db.selectFrom("_dineway_collections").select("slug").where("search_config", "is not", null).execute();
285
- let repaired = 0;
286
- for (const { slug } of collections) {
287
- if (!(await this.getSearchConfig(slug))?.enabled) continue;
288
- try {
289
- if (await this.verifyAndRepairIndex(slug)) repaired++;
290
- } catch (error) {
291
- console.error(`Failed to verify/repair FTS index for "${slug}":`, error);
292
- }
293
- }
294
- return repaired;
295
- }
296
- };
297
-
298
- //#endregion
299
11
  //#region src/schema/registry.ts
300
12
  var registry_exports = /* @__PURE__ */ __exportAll({
301
13
  SchemaError: () => SchemaError,
@@ -366,6 +78,26 @@ var SchemaRegistry = class {
366
78
  return (await this.db.selectFrom("_dineway_collections").selectAll().orderBy("slug", "asc").execute()).map(this.mapCollectionRow);
367
79
  }
368
80
  /**
81
+ * List all collections with their fields using bounded query shapes.
82
+ */
83
+ async listCollectionsWithFields() {
84
+ const collections = (await this.db.selectFrom("_dineway_collections").selectAll().orderBy("slug", "asc").execute()).map(this.mapCollectionRow);
85
+ if (collections.length === 0) return [];
86
+ const fieldsByCollectionId = /* @__PURE__ */ new Map();
87
+ for (const collectionIdChunk of chunks(collections.map((collection) => collection.id), SQL_BATCH_SIZE)) {
88
+ const fieldRows = await this.db.selectFrom("_dineway_fields").selectAll().where("collection_id", "in", collectionIdChunk).orderBy("collection_id", "asc").orderBy("sort_order", "asc").orderBy("created_at", "asc").execute();
89
+ for (const field of fieldRows.map(this.mapFieldRow)) {
90
+ const existing = fieldsByCollectionId.get(field.collectionId);
91
+ if (existing) existing.push(field);
92
+ else fieldsByCollectionId.set(field.collectionId, [field]);
93
+ }
94
+ }
95
+ return collections.map((collection) => ({
96
+ ...collection,
97
+ fields: fieldsByCollectionId.get(collection.id) ?? []
98
+ }));
99
+ }
100
+ /**
369
101
  * Get a collection by slug
370
102
  */
371
103
  async getCollection(slug) {
@@ -916,4 +648,4 @@ var SchemaRegistry = class {
916
648
  };
917
649
 
918
650
  //#endregion
919
- export { FTSManager as i, SchemaRegistry as n, registry_exports as r, SchemaError as t };
651
+ export { SchemaRegistry as n, registry_exports as r, SchemaError as t };
@@ -0,0 +1,130 @@
1
+ import { n as normalizeTrustedHeaders, t as getTrustedProxyHeaders } from "./trusted-proxy-Bi0Cuk5n.mjs";
2
+
3
+ //#region src/plugins/request-meta.ts
4
+ /**
5
+ * Loose validation for IPv4 and IPv6 addresses.
6
+ * Accepts digits, hex chars, dots, and colons — rejects anything else
7
+ * (e.g. HTML tags, scripts, or other non-IP garbage in spoofed headers).
8
+ */
9
+ const IP_PATTERN = /^[\da-fA-F.:]+$/;
10
+ /**
11
+ * Extract the first IP from an X-Forwarded-For header value.
12
+ * The header may contain a comma-separated list of IPs; the first
13
+ * entry is the original client IP.
14
+ *
15
+ * Returns null if the extracted value doesn't look like an IP address.
16
+ */
17
+ function parseFirstForwardedIp(header) {
18
+ const trimmed = header.split(",")[0]?.trim();
19
+ if (!trimmed) return null;
20
+ return IP_PATTERN.test(trimmed) ? trimmed : null;
21
+ }
22
+ /**
23
+ * Read an IP from an operator-declared trusted header. Forwarded-for style
24
+ * headers are parsed as comma-separated lists and the first entry is used.
25
+ */
26
+ function readIpFromHeader(headers, name) {
27
+ const value = headers.get(name);
28
+ if (!value) return null;
29
+ if (name.endsWith("forwarded-for")) return parseFirstForwardedIp(value);
30
+ const trimmed = value.trim();
31
+ if (!trimmed) return null;
32
+ return IP_PATTERN.test(trimmed) ? trimmed : null;
33
+ }
34
+ /**
35
+ * Get the runtime-provided `cf` object from the request, if present.
36
+ */
37
+ function getCfObject(request) {
38
+ return request.cf;
39
+ }
40
+ /**
41
+ * Extract geographic information from the runtime-provided `cf` object
42
+ * attached to the request.
43
+ */
44
+ function extractGeo(cf) {
45
+ if (!cf) return null;
46
+ const country = cf.country ?? null;
47
+ const region = cf.region ?? null;
48
+ const city = cf.city ?? null;
49
+ if (country === null && region === null && city === null) return null;
50
+ return {
51
+ country,
52
+ region,
53
+ city
54
+ };
55
+ }
56
+ /**
57
+ * Extract normalized request metadata from a Request object.
58
+ *
59
+ * IP resolution order:
60
+ * 1. `CF-Connecting-IP` header — only trusted when a `cf` object is
61
+ * present on the request (proving the request came through a trusted
62
+ * edge/runtime that strips or overwrites client-supplied values).
63
+ * 2. `X-Forwarded-For` header (first entry) — trusted only with runtime
64
+ * edge metadata.
65
+ * 3. Operator-declared trusted proxy headers, tried in order.
66
+ * 4. `null`
67
+ */
68
+ function extractRequestMeta(request, configOrTrustedHeaders) {
69
+ const headers = request.headers;
70
+ const cf = getCfObject(request);
71
+ const trustedHeaders = resolveTrustedHeaders(configOrTrustedHeaders);
72
+ let ip = null;
73
+ if (cf) {
74
+ const cfIp = headers.get("cf-connecting-ip")?.trim();
75
+ if (cfIp && IP_PATTERN.test(cfIp)) ip = cfIp;
76
+ }
77
+ if (!ip && cf) {
78
+ const xff = headers.get("x-forwarded-for");
79
+ ip = xff ? parseFirstForwardedIp(xff) : null;
80
+ }
81
+ if (!ip) for (const name of trustedHeaders) {
82
+ const value = readIpFromHeader(headers, name);
83
+ if (value) {
84
+ ip = value;
85
+ break;
86
+ }
87
+ }
88
+ const userAgent = headers.get("user-agent")?.trim() || null;
89
+ const referer = headers.get("referer")?.trim() || null;
90
+ const geo = extractGeo(cf);
91
+ return {
92
+ ip,
93
+ userAgent,
94
+ referer,
95
+ geo
96
+ };
97
+ }
98
+ function resolveTrustedHeaders(value) {
99
+ if (Array.isArray(value)) return normalizeTrustedHeaders(value);
100
+ return getTrustedProxyHeaders(value);
101
+ }
102
+ /**
103
+ * Headers that must never cross the RPC boundary to sandboxed plugins.
104
+ * Session tokens, auth credentials, and infrastructure headers are stripped
105
+ * to prevent malicious plugins from exfiltrating sensitive data.
106
+ */
107
+ const SANDBOX_STRIPPED_HEADERS = new Set([
108
+ "cookie",
109
+ "set-cookie",
110
+ "authorization",
111
+ "proxy-authorization",
112
+ "cf-access-jwt-assertion",
113
+ "cf-access-client-id",
114
+ "cf-access-client-secret",
115
+ "x-dineway-request"
116
+ ]);
117
+ /**
118
+ * Copy request headers into a plain object, stripping sensitive headers
119
+ * that must not be exposed to sandboxed plugin code.
120
+ */
121
+ function sanitizeHeadersForSandbox(headers) {
122
+ const safe = {};
123
+ headers.forEach((value, key) => {
124
+ if (!SANDBOX_STRIPPED_HEADERS.has(key)) safe[key] = value;
125
+ });
126
+ return safe;
127
+ }
128
+
129
+ //#endregion
130
+ export { sanitizeHeadersForSandbox as n, extractRequestMeta as t };
@@ -0,0 +1,148 @@
1
+ import { n as decodeCursor, r as encodeCursor } from "./types-Bs6lTBBW.mjs";
2
+ import { ulid } from "ulidx";
3
+
4
+ //#region src/database/repositories/review-requests.ts
5
+ var ReviewRequestRepository = class {
6
+ constructor(db) {
7
+ this.db = db;
8
+ }
9
+ async create(input) {
10
+ const id = ulid();
11
+ const now = (/* @__PURE__ */ new Date()).toISOString();
12
+ await this.db.insertInto("_dineway_review_requests").values(toInsertableReviewRequest(id, input, now)).execute();
13
+ const request = await this.findById(id);
14
+ if (!request) throw new Error("Failed to create review request");
15
+ return request;
16
+ }
17
+ async findById(id) {
18
+ const row = await this.db.selectFrom("_dineway_review_requests").selectAll().where("id", "=", id).executeTakeFirst();
19
+ return row ? rowToReviewRequest(row) : null;
20
+ }
21
+ async list(query = {}) {
22
+ const limit = clampLimit(query.limit);
23
+ const rows = await this.queryRows(query).execute();
24
+ const items = rows.slice(0, limit).map(rowToReviewRequest);
25
+ const result = { items };
26
+ if (rows.length > limit && items.length > 0) {
27
+ const last = items.at(-1);
28
+ result.nextCursor = encodeCursor(last.createdAt, last.id);
29
+ }
30
+ return result;
31
+ }
32
+ async countPending(scope) {
33
+ let query = this.db.selectFrom("_dineway_review_requests").select((eb) => eb.fn.count("id").as("count")).where("status", "=", "pending");
34
+ if (scope) query = query.where("scope", "=", scope);
35
+ const result = await query.executeTakeFirst();
36
+ return Number(result?.count ?? 0);
37
+ }
38
+ async resolve(id, input) {
39
+ const resolvedAt = input.resolvedAt ?? (/* @__PURE__ */ new Date()).toISOString();
40
+ const result = await this.db.updateTable("_dineway_review_requests").set({
41
+ status: input.decision,
42
+ resolved_by_actor_type: input.resolvedByActorType,
43
+ resolved_by_actor_id: input.resolvedByActorId,
44
+ resolved_auth_metadata: jsonOrNull(input.resolvedAuthMetadata),
45
+ review_note: input.reviewNote ?? null,
46
+ resolved_at: resolvedAt,
47
+ updated_at: resolvedAt
48
+ }).where("id", "=", id).where("status", "=", "pending").executeTakeFirst();
49
+ if (Number(result.numUpdatedRows ?? 0) === 0) return null;
50
+ return this.findById(id);
51
+ }
52
+ async findApprovedForTarget(target) {
53
+ let query = this.db.selectFrom("_dineway_review_requests").selectAll().where("status", "=", "approved").where("collection", "=", target.collection).where("entry_id", "=", target.entryId).where("reviewed_rev", "=", target.reviewedRev).where("action_type", "=", target.actionType).where("action_hash", "=", target.actionHash).orderBy("resolved_at", "desc").orderBy("created_at", "desc").orderBy("id", "desc");
54
+ query = target.liveRevisionId === null ? query.where("live_revision_id", "is", null) : query.where("live_revision_id", "=", target.liveRevisionId);
55
+ query = target.draftRevisionId === null ? query.where("draft_revision_id", "is", null) : query.where("draft_revision_id", "=", target.draftRevisionId);
56
+ const row = await query.executeTakeFirst();
57
+ return row ? rowToReviewRequest(row) : null;
58
+ }
59
+ queryRows(query) {
60
+ const limit = clampLimit(query.limit);
61
+ let q = this.db.selectFrom("_dineway_review_requests").selectAll().orderBy("created_at", "desc").orderBy("id", "desc").limit(limit + 1);
62
+ if (query.status) q = q.where("status", "=", query.status);
63
+ if (query.collection) q = q.where("collection", "=", query.collection);
64
+ if (query.entryId) q = q.where("entry_id", "=", query.entryId);
65
+ if (query.scope) q = q.where("scope", "=", query.scope);
66
+ if (query.scopes && query.scopes.length > 0) q = q.where("scope", "in", query.scopes);
67
+ if (query.actionType) q = q.where("action_type", "=", query.actionType);
68
+ if (query.since) q = q.where("updated_at", ">=", query.since);
69
+ if (query.cursor) {
70
+ const decoded = decodeCursor(query.cursor);
71
+ if (decoded) q = q.where((eb) => eb.or([eb("created_at", "<", decoded.orderValue), eb.and([eb("created_at", "=", decoded.orderValue), eb("id", "<", decoded.id)])]));
72
+ }
73
+ return q;
74
+ }
75
+ };
76
+ function toInsertableReviewRequest(id, input, now) {
77
+ return {
78
+ id,
79
+ status: "pending",
80
+ collection: input.collection,
81
+ entry_id: input.entryId,
82
+ scope: input.scope ?? `content:${input.collection}:${input.entryId}`,
83
+ live_revision_id: input.liveRevisionId ?? null,
84
+ draft_revision_id: input.draftRevisionId ?? null,
85
+ reviewed_rev: input.reviewedRev,
86
+ action_type: input.actionType,
87
+ action_hash: input.actionHash,
88
+ risk_reason: input.riskReason ?? null,
89
+ review_payload: JSON.stringify(input.reviewPayload),
90
+ requested_by_actor_type: input.requestedByActorType,
91
+ requested_by_actor_id: input.requestedByActorId,
92
+ requested_auth_metadata: jsonOrNull(input.requestedAuthMetadata),
93
+ resolved_by_actor_type: null,
94
+ resolved_by_actor_id: null,
95
+ resolved_auth_metadata: null,
96
+ review_note: null,
97
+ created_at: input.createdAt ?? now,
98
+ updated_at: input.createdAt ?? now,
99
+ resolved_at: null
100
+ };
101
+ }
102
+ function rowToReviewRequest(row) {
103
+ return {
104
+ id: row.id,
105
+ status: row.status,
106
+ collection: row.collection,
107
+ entryId: row.entry_id,
108
+ scope: row.scope,
109
+ liveRevisionId: row.live_revision_id,
110
+ draftRevisionId: row.draft_revision_id,
111
+ reviewedRev: row.reviewed_rev,
112
+ actionType: row.action_type,
113
+ actionHash: row.action_hash,
114
+ riskReason: row.risk_reason,
115
+ reviewPayload: parseRecord(row.review_payload) ?? {},
116
+ requestedByActorType: row.requested_by_actor_type,
117
+ requestedByActorId: row.requested_by_actor_id,
118
+ requestedAuthMetadata: parseRecord(row.requested_auth_metadata),
119
+ resolvedByActorType: row.resolved_by_actor_type,
120
+ resolvedByActorId: row.resolved_by_actor_id,
121
+ resolvedAuthMetadata: parseRecord(row.resolved_auth_metadata),
122
+ reviewNote: row.review_note,
123
+ createdAt: row.created_at,
124
+ updatedAt: row.updated_at,
125
+ resolvedAt: row.resolved_at
126
+ };
127
+ }
128
+ function jsonOrNull(value) {
129
+ return value ? JSON.stringify(value) : null;
130
+ }
131
+ function parseRecord(value) {
132
+ if (!value) return null;
133
+ try {
134
+ const parsed = JSON.parse(value);
135
+ return isRecord(parsed) ? parsed : null;
136
+ } catch {
137
+ return null;
138
+ }
139
+ }
140
+ function isRecord(value) {
141
+ return typeof value === "object" && value !== null && !Array.isArray(value);
142
+ }
143
+ function clampLimit(value) {
144
+ return Math.min(Math.max(1, value ?? 50), 100);
145
+ }
146
+
147
+ //#endregion
148
+ export { ReviewRequestRepository as t };
@@ -0,0 +1,79 @@
1
+ import { t as ReviewRequestRepository } from "./review-requests-C2DIHwlJ.mjs";
2
+
3
+ //#region src/api/handlers/review-requests.ts
4
+ async function handleReviewRequestList(db, query) {
5
+ try {
6
+ return {
7
+ success: true,
8
+ data: await new ReviewRequestRepository(db).list(query)
9
+ };
10
+ } catch (error) {
11
+ console.error("Review request list error:", error);
12
+ return {
13
+ success: false,
14
+ error: {
15
+ code: "REVIEW_REQUEST_LIST_ERROR",
16
+ message: "Failed to list review requests"
17
+ }
18
+ };
19
+ }
20
+ }
21
+ async function handleReviewRequestGet(db, id) {
22
+ try {
23
+ const item = await new ReviewRequestRepository(db).findById(id);
24
+ if (!item) return {
25
+ success: false,
26
+ error: {
27
+ code: "NOT_FOUND",
28
+ message: "Review request not found"
29
+ }
30
+ };
31
+ return {
32
+ success: true,
33
+ data: { item }
34
+ };
35
+ } catch (error) {
36
+ console.error("Review request get error:", error);
37
+ return {
38
+ success: false,
39
+ error: {
40
+ code: "REVIEW_REQUEST_GET_ERROR",
41
+ message: "Failed to fetch review request"
42
+ }
43
+ };
44
+ }
45
+ }
46
+ async function handleReviewRequestResolve(db, id, input) {
47
+ try {
48
+ const item = await new ReviewRequestRepository(db).resolve(id, {
49
+ decision: input.decision,
50
+ reviewNote: input.reviewNote,
51
+ resolvedByActorType: input.actor.actorType,
52
+ resolvedByActorId: input.actor.actorId,
53
+ resolvedAuthMetadata: input.actor.authMetadata
54
+ });
55
+ if (!item) return {
56
+ success: false,
57
+ error: {
58
+ code: "NOT_FOUND",
59
+ message: "Review request not found or already resolved"
60
+ }
61
+ };
62
+ return {
63
+ success: true,
64
+ data: { item }
65
+ };
66
+ } catch (error) {
67
+ console.error("Review request resolve error:", error);
68
+ return {
69
+ success: false,
70
+ error: {
71
+ code: "REVIEW_REQUEST_RESOLVE_ERROR",
72
+ message: "Failed to resolve review request"
73
+ }
74
+ };
75
+ }
76
+ }
77
+
78
+ //#endregion
79
+ export { handleReviewRequestList as n, handleReviewRequestResolve as r, handleReviewRequestGet as t };