dineway 0.1.8 → 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 (690) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +63 -17
  3. package/dist/activity-events-BsMaXdJa.mjs +540 -0
  4. package/dist/allowed-origins-DG86sH8U.mjs +68 -0
  5. package/dist/api/route-utils.d.mts +41 -0
  6. package/dist/api/route-utils.mjs +26 -0
  7. package/dist/api/schemas/index.d.mts +3 -0
  8. package/dist/api/schemas/index.mjs +6 -0
  9. package/dist/api/schemas/setup.d.mts +42 -0
  10. package/dist/api/schemas/setup.mjs +39 -0
  11. package/dist/api-Cmy8Rjk5.mjs +2704 -0
  12. package/dist/api-tokens-Bu3ez1MO.mjs +153 -0
  13. package/dist/api-tokens-DzloJxuh.mjs +3 -0
  14. package/dist/{apply-iVSqz2qs.mjs → apply-Co5imxxT.mjs} +15 -689
  15. package/dist/astro/index.d.mts +10 -6
  16. package/dist/astro/index.mjs +86 -11
  17. package/dist/astro/middleware/auth.d.mts +10 -7
  18. package/dist/astro/middleware/auth.mjs +19 -104
  19. package/dist/astro/middleware/redirect.mjs +24 -14
  20. package/dist/astro/middleware/request-context.mjs +9 -6
  21. package/dist/astro/middleware/setup.mjs +1 -1
  22. package/dist/astro/middleware.mjs +86 -145
  23. package/dist/astro/routes/PluginRegistry.d.mts +14 -0
  24. package/dist/astro/routes/PluginRegistry.mjs +24 -0
  25. package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts +14 -0
  26. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +65 -0
  27. package/dist/astro/routes/api/admin/allowed-domains/index.d.mts +14 -0
  28. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +65 -0
  29. package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts +10 -0
  30. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +33 -0
  31. package/dist/astro/routes/api/admin/api-tokens/index.d.mts +16 -0
  32. package/dist/astro/routes/api/admin/api-tokens/index.mjs +59 -0
  33. package/dist/astro/routes/api/admin/briefing.d.mts +7 -0
  34. package/dist/astro/routes/api/admin/briefing.mjs +71 -0
  35. package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts +9 -0
  36. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +74 -0
  37. package/dist/astro/routes/api/admin/bylines/index.d.mts +8 -0
  38. package/dist/astro/routes/api/admin/bylines/index.mjs +61 -0
  39. package/dist/astro/routes/api/admin/comments/_id_/status.d.mts +7 -0
  40. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +80 -0
  41. package/dist/astro/routes/api/admin/comments/_id_.d.mts +14 -0
  42. package/dist/astro/routes/api/admin/comments/_id_.mjs +46 -0
  43. package/dist/astro/routes/api/admin/comments/bulk.d.mts +7 -0
  44. package/dist/astro/routes/api/admin/comments/bulk.mjs +36 -0
  45. package/dist/astro/routes/api/admin/comments/counts.d.mts +7 -0
  46. package/dist/astro/routes/api/admin/comments/counts.mjs +24 -0
  47. package/dist/astro/routes/api/admin/comments/index.d.mts +10 -0
  48. package/dist/astro/routes/api/admin/comments/index.mjs +40 -0
  49. package/dist/astro/routes/api/admin/context/_id_/history.d.mts +7 -0
  50. package/dist/astro/routes/api/admin/context/_id_/history.mjs +45 -0
  51. package/dist/astro/routes/api/admin/context/_id_/index.d.mts +7 -0
  52. package/dist/astro/routes/api/admin/context/_id_/index.mjs +45 -0
  53. package/dist/astro/routes/api/admin/context/_id_/review.d.mts +7 -0
  54. package/dist/astro/routes/api/admin/context/_id_/review.mjs +60 -0
  55. package/dist/astro/routes/api/admin/context/_id_/supersede.d.mts +7 -0
  56. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +63 -0
  57. package/dist/astro/routes/api/admin/context/diff.d.mts +7 -0
  58. package/dist/astro/routes/api/admin/context/diff.mjs +49 -0
  59. package/dist/astro/routes/api/admin/context/index.d.mts +8 -0
  60. package/dist/astro/routes/api/admin/context/index.mjs +71 -0
  61. package/dist/astro/routes/api/admin/context/stale.d.mts +7 -0
  62. package/dist/astro/routes/api/admin/context/stale.mjs +49 -0
  63. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.d.mts +7 -0
  64. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +51 -0
  65. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.d.mts +7 -0
  66. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +67 -0
  67. package/dist/astro/routes/api/admin/hitl-requests/index.d.mts +7 -0
  68. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +55 -0
  69. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +7 -0
  70. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +98 -0
  71. package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts +7 -0
  72. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +33 -0
  73. package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts +18 -0
  74. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +79 -0
  75. package/dist/astro/routes/api/admin/oauth-clients/index.d.mts +14 -0
  76. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +58 -0
  77. package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts +7 -0
  78. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +89 -0
  79. package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +7 -0
  80. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +89 -0
  81. package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +7 -0
  82. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +54 -0
  83. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +7 -0
  84. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +98 -0
  85. package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +7 -0
  86. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +131 -0
  87. package/dist/astro/routes/api/admin/plugins/index.d.mts +7 -0
  88. package/dist/astro/routes/api/admin/plugins/index.mjs +52 -0
  89. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts +7 -0
  90. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +36 -0
  91. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts +7 -0
  92. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +54 -0
  93. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts +7 -0
  94. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +128 -0
  95. package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +7 -0
  96. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +61 -0
  97. package/dist/astro/routes/api/admin/plugins/updates.d.mts +7 -0
  98. package/dist/astro/routes/api/admin/plugins/updates.mjs +52 -0
  99. package/dist/astro/routes/api/admin/review-requests/_id_/index.d.mts +7 -0
  100. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +26 -0
  101. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.d.mts +7 -0
  102. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +97 -0
  103. package/dist/astro/routes/api/admin/review-requests/index.d.mts +7 -0
  104. package/dist/astro/routes/api/admin/review-requests/index.mjs +31 -0
  105. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts +7 -0
  106. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +54 -0
  107. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts +7 -0
  108. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +36 -0
  109. package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts +7 -0
  110. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +70 -0
  111. package/dist/astro/routes/api/admin/users/_id_/disable.d.mts +7 -0
  112. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +38 -0
  113. package/dist/astro/routes/api/admin/users/_id_/enable.d.mts +7 -0
  114. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +29 -0
  115. package/dist/astro/routes/api/admin/users/_id_/index.d.mts +8 -0
  116. package/dist/astro/routes/api/admin/users/_id_/index.mjs +104 -0
  117. package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts +7 -0
  118. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +43 -0
  119. package/dist/astro/routes/api/admin/users/index.d.mts +7 -0
  120. package/dist/astro/routes/api/admin/users/index.mjs +54 -0
  121. package/dist/astro/routes/api/auth/dev-bypass.d.mts +8 -0
  122. package/dist/astro/routes/api/auth/dev-bypass.mjs +81 -0
  123. package/dist/astro/routes/api/auth/invite/accept.d.mts +7 -0
  124. package/dist/astro/routes/api/auth/invite/accept.mjs +31 -0
  125. package/dist/astro/routes/api/auth/invite/complete.d.mts +7 -0
  126. package/dist/astro/routes/api/auth/invite/complete.mjs +54 -0
  127. package/dist/astro/routes/api/auth/invite/index.d.mts +7 -0
  128. package/dist/astro/routes/api/auth/invite/index.mjs +51 -0
  129. package/dist/astro/routes/api/auth/invite/register-options.d.mts +7 -0
  130. package/dist/astro/routes/api/auth/invite/register-options.mjs +44 -0
  131. package/dist/astro/routes/api/auth/logout.d.mts +7 -0
  132. package/dist/astro/routes/api/auth/logout.mjs +24 -0
  133. package/dist/astro/routes/api/auth/magic-link/send.d.mts +7 -0
  134. package/dist/astro/routes/api/auth/magic-link/send.mjs +48 -0
  135. package/dist/astro/routes/api/auth/magic-link/verify.d.mts +7 -0
  136. package/dist/astro/routes/api/auth/magic-link/verify.mjs +32 -0
  137. package/dist/astro/routes/api/auth/me.d.mts +13 -0
  138. package/dist/astro/routes/api/auth/me.mjs +41 -0
  139. package/dist/astro/routes/api/auth/mode.d.mts +7 -0
  140. package/dist/astro/routes/api/auth/mode.mjs +28 -0
  141. package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts +7 -0
  142. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +114 -0
  143. package/dist/astro/routes/api/auth/oauth/_provider_.d.mts +7 -0
  144. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +58 -0
  145. package/dist/astro/routes/api/auth/passkey/_id_.d.mts +14 -0
  146. package/dist/astro/routes/api/auth/passkey/_id_.mjs +62 -0
  147. package/dist/astro/routes/api/auth/passkey/index.d.mts +7 -0
  148. package/dist/astro/routes/api/auth/passkey/index.mjs +25 -0
  149. package/dist/astro/routes/api/auth/passkey/options.d.mts +7 -0
  150. package/dist/astro/routes/api/auth/passkey/options.mjs +46 -0
  151. package/dist/astro/routes/api/auth/passkey/register/options.d.mts +7 -0
  152. package/dist/astro/routes/api/auth/passkey/register/options.mjs +44 -0
  153. package/dist/astro/routes/api/auth/passkey/register/verify.d.mts +7 -0
  154. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +59 -0
  155. package/dist/astro/routes/api/auth/passkey/verify.d.mts +7 -0
  156. package/dist/astro/routes/api/auth/passkey/verify.mjs +47 -0
  157. package/dist/astro/routes/api/auth/signup/complete.d.mts +7 -0
  158. package/dist/astro/routes/api/auth/signup/complete.mjs +55 -0
  159. package/dist/astro/routes/api/auth/signup/request.d.mts +7 -0
  160. package/dist/astro/routes/api/auth/signup/request.mjs +44 -0
  161. package/dist/astro/routes/api/auth/signup/verify.d.mts +7 -0
  162. package/dist/astro/routes/api/auth/signup/verify.mjs +32 -0
  163. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +14 -0
  164. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +193 -0
  165. package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts +7 -0
  166. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +17 -0
  167. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts +7 -0
  168. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +36 -0
  169. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts +7 -0
  170. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +39 -0
  171. package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts +7 -0
  172. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +31 -0
  173. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts +7 -0
  174. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +78 -0
  175. package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +7 -0
  176. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +92 -0
  177. package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts +7 -0
  178. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +36 -0
  179. package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts +7 -0
  180. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +19 -0
  181. package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts +8 -0
  182. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +75 -0
  183. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts +14 -0
  184. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +85 -0
  185. package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts +7 -0
  186. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +40 -0
  187. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts +7 -0
  188. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +36 -0
  189. package/dist/astro/routes/api/content/_collection_/_id_.d.mts +9 -0
  190. package/dist/astro/routes/api/content/_collection_/_id_.mjs +114 -0
  191. package/dist/astro/routes/api/content/_collection_/index.d.mts +8 -0
  192. package/dist/astro/routes/api/content/_collection_/index.mjs +74 -0
  193. package/dist/astro/routes/api/content/_collection_/trash.d.mts +7 -0
  194. package/dist/astro/routes/api/content/_collection_/trash.mjs +23 -0
  195. package/dist/astro/routes/api/dashboard.d.mts +7 -0
  196. package/dist/astro/routes/api/dashboard.mjs +26 -0
  197. package/dist/astro/routes/api/dev/emails.d.mts +8 -0
  198. package/dist/astro/routes/api/dev/emails.mjs +17 -0
  199. package/dist/astro/routes/api/health.d.mts +7 -0
  200. package/dist/astro/routes/api/health.mjs +34 -0
  201. package/dist/astro/routes/api/import/probe.d.mts +17 -0
  202. package/dist/astro/routes/api/import/probe.mjs +33 -0
  203. package/dist/astro/routes/api/import/wordpress/analyze.d.mts +87 -0
  204. package/dist/astro/routes/api/import/wordpress/analyze.mjs +305 -0
  205. package/dist/astro/routes/api/import/wordpress/execute.d.mts +37 -0
  206. package/dist/astro/routes/api/import/wordpress/execute.mjs +197 -0
  207. package/dist/astro/routes/api/import/wordpress/media.d.mts +35 -0
  208. package/dist/astro/routes/api/import/wordpress/media.mjs +222 -0
  209. package/dist/astro/routes/api/import/wordpress/prepare.d.mts +19 -0
  210. package/dist/astro/routes/api/import/wordpress/prepare.mjs +155 -0
  211. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +21 -0
  212. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +289 -0
  213. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +15 -0
  214. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +69 -0
  215. package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts +7 -0
  216. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +28 -0
  217. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +19 -0
  218. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +268 -0
  219. package/dist/astro/routes/api/manifest.d.mts +7 -0
  220. package/dist/astro/routes/api/manifest.mjs +50 -0
  221. package/dist/astro/routes/api/mcp.d.mts +15 -0
  222. package/dist/astro/routes/api/mcp.mjs +2700 -0
  223. package/dist/astro/routes/api/media/_id_/confirm.d.mts +10 -0
  224. package/dist/astro/routes/api/media/_id_/confirm.mjs +59 -0
  225. package/dist/astro/routes/api/media/_id_.d.mts +22 -0
  226. package/dist/astro/routes/api/media/_id_.mjs +81 -0
  227. package/dist/astro/routes/api/media/file/_...key_.d.mts +7 -0
  228. package/dist/astro/routes/api/media/file/_...key_.mjs +49 -0
  229. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts +14 -0
  230. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +49 -0
  231. package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts +14 -0
  232. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +72 -0
  233. package/dist/astro/routes/api/media/providers/index.d.mts +10 -0
  234. package/dist/astro/routes/api/media/providers/index.mjs +18 -0
  235. package/dist/astro/routes/api/media/upload-url.d.mts +10 -0
  236. package/dist/astro/routes/api/media/upload-url.mjs +82 -0
  237. package/dist/astro/routes/api/media.d.mts +16 -0
  238. package/dist/astro/routes/api/media.mjs +137 -0
  239. package/dist/astro/routes/api/menus/_name_/items.d.mts +9 -0
  240. package/{src/astro/routes/api/menus/[name]/items.ts → dist/astro/routes/api/menus/_name_/items.mjs} +63 -105
  241. package/dist/astro/routes/api/menus/_name_/reorder.d.mts +7 -0
  242. package/dist/astro/routes/api/menus/_name_/reorder.mjs +77 -0
  243. package/dist/astro/routes/api/menus/_name_.d.mts +9 -0
  244. package/dist/astro/routes/api/menus/_name_.mjs +123 -0
  245. package/dist/astro/routes/api/menus/index.d.mts +8 -0
  246. package/dist/astro/routes/api/menus/index.mjs +84 -0
  247. package/dist/astro/routes/api/oauth/authorize.d.mts +8 -0
  248. package/dist/astro/routes/api/oauth/authorize.mjs +265 -0
  249. package/dist/astro/routes/api/oauth/device/authorize.d.mts +7 -0
  250. package/dist/astro/routes/api/oauth/device/authorize.mjs +30 -0
  251. package/dist/astro/routes/api/oauth/device/code.d.mts +7 -0
  252. package/dist/astro/routes/api/oauth/device/code.mjs +34 -0
  253. package/dist/astro/routes/api/oauth/device/token.d.mts +7 -0
  254. package/dist/astro/routes/api/oauth/device/token.mjs +45 -0
  255. package/dist/astro/routes/api/oauth/register.d.mts +8 -0
  256. package/dist/astro/routes/api/oauth/register.mjs +115 -0
  257. package/dist/astro/routes/api/oauth/token/refresh.d.mts +7 -0
  258. package/dist/astro/routes/api/oauth/token/refresh.mjs +28 -0
  259. package/dist/astro/routes/api/oauth/token/revoke.d.mts +7 -0
  260. package/dist/astro/routes/api/oauth/token/revoke.mjs +25 -0
  261. package/dist/astro/routes/api/oauth/token.d.mts +8 -0
  262. package/dist/astro/routes/api/oauth/token.mjs +138 -0
  263. package/dist/astro/routes/api/openapi.json.d.mts +7 -0
  264. package/dist/astro/routes/api/openapi.json.mjs +2638 -0
  265. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +11 -0
  266. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +77 -0
  267. package/dist/astro/routes/api/redirects/404s/index.d.mts +9 -0
  268. package/dist/astro/routes/api/redirects/404s/index.mjs +62 -0
  269. package/dist/astro/routes/api/redirects/404s/summary.d.mts +7 -0
  270. package/dist/astro/routes/api/redirects/404s/summary.mjs +34 -0
  271. package/dist/astro/routes/api/redirects/_id_.d.mts +9 -0
  272. package/dist/astro/routes/api/redirects/_id_.mjs +152 -0
  273. package/dist/astro/routes/api/redirects/index.d.mts +8 -0
  274. package/dist/astro/routes/api/redirects/index.mjs +97 -0
  275. package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts +7 -0
  276. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +16 -0
  277. package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts +7 -0
  278. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +23 -0
  279. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts +9 -0
  280. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +98 -0
  281. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts +8 -0
  282. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +80 -0
  283. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts +7 -0
  284. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +67 -0
  285. package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +9 -0
  286. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +97 -0
  287. package/dist/astro/routes/api/schema/collections/index.d.mts +8 -0
  288. package/dist/astro/routes/api/schema/collections/index.mjs +77 -0
  289. package/dist/astro/routes/api/schema/index.d.mts +7 -0
  290. package/dist/astro/routes/api/schema/index.mjs +79 -0
  291. package/dist/astro/routes/api/schema/orphans/_slug_.d.mts +7 -0
  292. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +58 -0
  293. package/dist/astro/routes/api/schema/orphans/index.d.mts +7 -0
  294. package/dist/astro/routes/api/schema/orphans/index.mjs +53 -0
  295. package/dist/astro/routes/api/search/enable.d.mts +15 -0
  296. package/dist/astro/routes/api/search/enable.mjs +55 -0
  297. package/dist/astro/routes/api/search/index.d.mts +16 -0
  298. package/dist/astro/routes/api/search/index.mjs +52 -0
  299. package/dist/astro/routes/api/search/rebuild.d.mts +13 -0
  300. package/dist/astro/routes/api/search/rebuild.mjs +48 -0
  301. package/dist/astro/routes/api/search/stats.d.mts +10 -0
  302. package/dist/astro/routes/api/search/stats.mjs +28 -0
  303. package/dist/astro/routes/api/search/suggest.d.mts +15 -0
  304. package/dist/astro/routes/api/search/suggest.mjs +43 -0
  305. package/dist/astro/routes/api/sections/_slug_.d.mts +9 -0
  306. package/dist/astro/routes/api/sections/_slug_.mjs +156 -0
  307. package/dist/astro/routes/api/sections/index.d.mts +8 -0
  308. package/dist/astro/routes/api/sections/index.mjs +99 -0
  309. package/dist/astro/routes/api/settings/email.d.mts +17 -0
  310. package/dist/astro/routes/api/settings/email.mjs +102 -0
  311. package/dist/astro/routes/api/settings.d.mts +20 -0
  312. package/dist/astro/routes/api/settings.mjs +101 -0
  313. package/dist/astro/routes/api/setup/admin-verify.d.mts +7 -0
  314. package/dist/astro/routes/api/setup/admin-verify.mjs +67 -0
  315. package/dist/astro/routes/api/setup/admin.d.mts +7 -0
  316. package/dist/astro/routes/api/setup/admin.mjs +68 -0
  317. package/dist/astro/routes/api/setup/dev-bypass.d.mts +8 -0
  318. package/dist/astro/routes/api/setup/dev-bypass.mjs +137 -0
  319. package/dist/astro/routes/api/setup/dev-reset.d.mts +7 -0
  320. package/dist/astro/routes/api/setup/dev-reset.mjs +22 -0
  321. package/dist/astro/routes/api/setup/index.d.mts +7 -0
  322. package/dist/astro/routes/api/setup/index.mjs +93 -0
  323. package/dist/astro/routes/api/setup/status.d.mts +7 -0
  324. package/dist/astro/routes/api/setup/status.mjs +57 -0
  325. package/dist/astro/routes/api/snapshot.d.mts +7 -0
  326. package/dist/astro/routes/api/snapshot.mjs +227 -0
  327. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts +18 -0
  328. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +189 -0
  329. package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +14 -0
  330. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +113 -0
  331. package/dist/astro/routes/api/taxonomies/index.d.mts +14 -0
  332. package/dist/astro/routes/api/taxonomies/index.mjs +103 -0
  333. package/dist/astro/routes/api/themes/preview.d.mts +7 -0
  334. package/dist/astro/routes/api/themes/preview.mjs +47 -0
  335. package/dist/astro/routes/api/typegen.d.mts +17 -0
  336. package/dist/astro/routes/api/typegen.mjs +75 -0
  337. package/dist/astro/routes/api/well-known/auth.d.mts +7 -0
  338. package/dist/astro/routes/api/well-known/auth.mjs +42 -0
  339. package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts +7 -0
  340. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +33 -0
  341. package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts +7 -0
  342. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +21 -0
  343. package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts +7 -0
  344. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +88 -0
  345. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts +8 -0
  346. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +158 -0
  347. package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +7 -0
  348. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +104 -0
  349. package/dist/astro/routes/api/widget-areas/_name_.d.mts +8 -0
  350. package/dist/astro/routes/api/widget-areas/_name_.mjs +99 -0
  351. package/dist/astro/routes/api/widget-areas/index.d.mts +8 -0
  352. package/dist/astro/routes/api/widget-areas/index.mjs +108 -0
  353. package/dist/astro/routes/api/widget-components.d.mts +7 -0
  354. package/dist/astro/routes/api/widget-components.mjs +15 -0
  355. package/dist/astro/routes/robots.txt.d.mts +7 -0
  356. package/dist/astro/routes/robots.txt.mjs +60 -0
  357. package/dist/astro/routes/sitemap-_collection_.xml.d.mts +7 -0
  358. package/dist/astro/routes/sitemap-_collection_.xml.mjs +70 -0
  359. package/dist/astro/routes/sitemap.xml.d.mts +7 -0
  360. package/dist/astro/routes/sitemap.xml.mjs +63 -0
  361. package/dist/astro/types.d.mts +41 -9
  362. package/dist/auth/providers/github-admin.d.mts +9 -0
  363. package/dist/auth/providers/github-admin.mjs +27 -0
  364. package/dist/auth/providers/github.d.mts +12 -0
  365. package/dist/auth/providers/github.mjs +17 -0
  366. package/dist/auth/providers/google-admin.d.mts +9 -0
  367. package/dist/auth/providers/google-admin.mjs +43 -0
  368. package/dist/auth/providers/google.d.mts +12 -0
  369. package/dist/auth/providers/google.mjs +17 -0
  370. package/dist/auth-control-guard-DKUe_1oa.mjs +13 -0
  371. package/dist/authorize-BBj8C6Y8.mjs +36 -0
  372. package/dist/briefing-BrXCuMEE.mjs +1294 -0
  373. package/dist/briefing-ClWw4mc9.mjs +29 -0
  374. package/dist/{byline-OhH2dlRu.mjs → byline-naZxOPSa.mjs} +3 -3
  375. package/dist/{bylines-BGpD9_hy.mjs → bylines-BcOPh6Ej.mjs} +20 -53
  376. package/dist/bylines-HfUKum_j.d.mts +2023 -0
  377. package/dist/{cache-BdSY-gQN.mjs → cache-DEbQ13c9.mjs} +21 -11
  378. package/dist/challenge-store-DHMgBGOq.mjs +48 -0
  379. package/dist/cli/index.mjs +142 -22
  380. package/dist/client/external-auth-headers.d.mts +1 -1
  381. package/dist/client/index.d.mts +1 -1
  382. package/dist/client/index.mjs +3 -3
  383. package/dist/comment-DFO-gWDH.mjs +246 -0
  384. package/dist/comments-Gy3zLBaP.mjs +186 -0
  385. package/dist/components-DND2rd3D.mjs +107 -0
  386. package/dist/{content-DWi4d0rT.mjs → content-CyLkb-qH.mjs} +33 -44
  387. package/dist/context-bE5Kyvcj.mjs +184 -0
  388. package/dist/context-nxMyOe3p.mjs +849 -0
  389. package/dist/context-route-helpers-D-6uCQ0S.mjs +45 -0
  390. package/dist/context-types-C-LwdAxx.mjs +23 -0
  391. package/dist/cron-DGzVTtJp.mjs +263 -0
  392. package/dist/dashboard-DqnYU8EU.mjs +120 -0
  393. package/dist/db/index.d.mts +3 -3
  394. package/dist/db/libsql.d.mts +1 -1
  395. package/dist/db/libsql.mjs +3 -3
  396. package/dist/db/postgres.d.mts +1 -1
  397. package/dist/db/sqlite.d.mts +1 -1
  398. package/dist/db/sqlite.mjs +1 -2
  399. package/dist/device-flow-7AhWNwCK.mjs +487 -0
  400. package/dist/email-console-CgLVZbcn.mjs +36 -0
  401. package/dist/entity-aliases-C0v-yNET.mjs +51 -0
  402. package/dist/error-DEGjx2Xw.mjs +435 -0
  403. package/dist/escape-mNZr4t2A.mjs +8 -0
  404. package/dist/experimental-workflows-DldxJlqV.mjs +38 -0
  405. package/dist/fts-manager-B1pTNEG_.mjs +297 -0
  406. package/dist/hash-CDX7M0ze.mjs +32 -0
  407. package/dist/hitl-requests-Bx3Bkk9l.mjs +118 -0
  408. package/dist/hitl-route-helpers-DMmJRS7B.mjs +96 -0
  409. package/dist/import-DD3f2jkc.mjs +243 -0
  410. package/dist/import-DVZcYlDp.mjs +1323 -0
  411. package/dist/index-CkljPf5F.d.mts +227 -0
  412. package/dist/index.d.mts +15 -11
  413. package/dist/index.mjs +60 -22
  414. package/dist/{loader-sMG4TZ-u.mjs → loader-PZnPxFLc.mjs} +42 -5
  415. package/dist/{manifest-schema-D1MSVnoI.mjs → manifest-schema-DYoCQ5np.mjs} +22 -10
  416. package/dist/media/index.d.mts +1 -1
  417. package/dist/media/index.mjs +2 -1
  418. package/dist/media/local-runtime.d.mts +11 -7
  419. package/dist/media/local-runtime.mjs +3 -3
  420. package/dist/{media-DMTr80Gv.mjs → media-_7Fxdu45.mjs} +1 -1
  421. package/dist/menus-BacxVCCo.mjs +312 -0
  422. package/dist/menus-CrzHokKj.mjs +3502 -0
  423. package/dist/normalize-C49G_o1k.mjs +126 -0
  424. package/dist/oauth-authorization-C1qiw4hd.mjs +283 -0
  425. package/dist/oauth-clients-CvWatf5p.mjs +298 -0
  426. package/dist/oauth-state-store-hSdzxsEe.mjs +48 -0
  427. package/dist/oauth-user-lookup-B4OcmsLV.mjs +25 -0
  428. package/dist/options-z8VVg1Ll.mjs +114 -0
  429. package/dist/page/index.d.mts +2 -2
  430. package/dist/parse-BeQXIt1U.mjs +88 -0
  431. package/dist/passkey-config-Daqs5fjq.mjs +42 -0
  432. package/dist/{patterns-CrCYkMBb.mjs → patterns-K0DLqWir.mjs} +53 -1
  433. package/dist/{placeholder-Cp8g5Emj.mjs → placeholder-C2P5fKa4.mjs} +1 -126
  434. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -5
  435. package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
  436. package/dist/preview-C_4DyVox.mjs +788 -0
  437. package/dist/public-url-BB_umF5G.mjs +71 -0
  438. package/dist/{query-kDmwCsHh.mjs → query-RiobVwB5.mjs} +93 -19
  439. package/dist/rate-limit-CbJoj_fT.mjs +112 -0
  440. package/dist/{redirect-DnEWAkVg.mjs → redirect-CGl64yOX.mjs} +9 -5
  441. package/dist/redirect-ClSmMOtC.mjs +16 -0
  442. package/dist/redirects-B69T59hK.mjs +499 -0
  443. package/dist/redirects-CqaxraTO.mjs +1070 -0
  444. package/dist/{registry-C0zjeB9P.mjs → registry-C-_hxLqa.mjs} +26 -294
  445. package/dist/request-meta-Bd0mQfiS.mjs +130 -0
  446. package/dist/review-requests-C2DIHwlJ.mjs +148 -0
  447. package/dist/review-requests-DIyjw-K_.mjs +79 -0
  448. package/dist/{runner-CFI6B6J2.d.mts → runner-9eIQXuc2.d.mts} +1 -1
  449. package/dist/{index-yvc6E_17.d.mts → runtime-C4-7y7xK.d.mts} +1539 -2007
  450. package/dist/runtime.d.mts +10 -6
  451. package/dist/runtime.mjs +3 -3
  452. package/dist/schema-BNpI53of.mjs +40 -0
  453. package/dist/search-DM6CVti3.mjs +337 -0
  454. package/dist/secrets-dI8zzTV7.mjs +160 -0
  455. package/dist/sections-DZFyAQXd.mjs +338 -0
  456. package/dist/seed/index.d.mts +2 -2
  457. package/dist/seed/index.mjs +18 -13
  458. package/dist/seo/index.d.mts +1 -1
  459. package/dist/seo-BBgTCOYU.mjs +85 -0
  460. package/dist/seo-CUQctrog.mjs +129 -0
  461. package/dist/service-CSfcQguB.mjs +194 -0
  462. package/dist/settings-4XnpVMOS.mjs +223 -0
  463. package/dist/settings-Bw93cLfe.mjs +50 -0
  464. package/dist/setup-complete-DidsDQ1e.mjs +21 -0
  465. package/dist/setup-nonce-pml1PMKo.mjs +17 -0
  466. package/dist/sidecar-client-vzwV98K4.mjs +66 -0
  467. package/dist/site-activity-B8FjLIVh.mjs +104 -0
  468. package/dist/site-context-Bpu_Paur.mjs +4122 -0
  469. package/dist/site-url-CYIcO0Tj.mjs +12 -0
  470. package/dist/slugify-PDTDtMXp.mjs +30 -0
  471. package/dist/ssrf-CmM76lLV.mjs +248 -0
  472. package/dist/storage/local.d.mts +1 -1
  473. package/dist/storage/local.mjs +1 -1
  474. package/dist/storage/s3.d.mts +1 -1
  475. package/dist/storage/s3.mjs +2 -2
  476. package/dist/{taxonomies-1s5PaS_8.mjs → taxonomies-BvBgfzn3.mjs} +11 -7
  477. package/dist/taxonomies-CpqGcIJD.mjs +355 -0
  478. package/dist/taxonomy-D5cbhc8u.mjs +165 -0
  479. package/dist/{tokens-CJz9ubV6.mjs → tokens-DLTo4dO2.mjs} +1 -1
  480. package/dist/{transport-DB5eDN4x.mjs → transport-C9e_h-BF.mjs} +5 -4
  481. package/dist/trusted-proxy-Bi0Cuk5n.mjs +30 -0
  482. package/dist/{types-BawVha09.mjs → types-Bs6lTBBW.mjs} +1 -1
  483. package/dist/types-C982qI5I.d.mts +344 -0
  484. package/dist/types-D4XVOt01.d.mts +165 -0
  485. package/dist/{types-Cj0KMIZV.d.mts → types-DgfUZqcd.d.mts} +54 -16
  486. package/dist/{types-BuMDPy5C.d.mts → types-IPACEM14.d.mts} +6 -0
  487. package/dist/user-CcXq-zoL.mjs +154 -0
  488. package/dist/utils-D2in-zwy.mjs +285 -0
  489. package/dist/{validate-BZ5wnLLp.mjs → validate-BJgA6TW_.mjs} +1 -1
  490. package/dist/{validate-IPf8n4Fj.d.mts → validate-JCZihRIa.d.mts} +3 -3
  491. package/dist/version-DH53KCQd.mjs +6 -0
  492. package/dist/widgets-B7Q_7bxN.mjs +104 -0
  493. package/dist/wordpress-slugs-BevajWrC.mjs +14 -0
  494. package/dist/zod-generator-DBVP8D0P.mjs +132 -0
  495. package/locals.d.ts +1 -6
  496. package/package.json +96 -41
  497. package/src/components/DinewayHead.astro +8 -4
  498. package/src/components/DinewayImage.astro +7 -5
  499. package/src/components/DinewayMedia.astro +9 -3
  500. package/src/components/Gallery.astro +5 -3
  501. package/src/components/Image.astro +5 -1
  502. package/src/components/InlinePortableTextEditor.tsx +68 -19
  503. package/dist/error-BmL6QipT.mjs +0 -30
  504. package/dist/search-Hlm6g8Td.mjs +0 -11200
  505. package/dist/version-DxxaFHZ_.mjs +0 -6
  506. package/src/astro/routes/PluginRegistry.tsx +0 -21
  507. package/src/astro/routes/api/admin/allowed-domains/[domain].ts +0 -112
  508. package/src/astro/routes/api/admin/allowed-domains/index.ts +0 -108
  509. package/src/astro/routes/api/admin/api-tokens/[id].ts +0 -44
  510. package/src/astro/routes/api/admin/api-tokens/index.ts +0 -90
  511. package/src/astro/routes/api/admin/briefing.ts +0 -76
  512. package/src/astro/routes/api/admin/bylines/[id]/index.ts +0 -90
  513. package/src/astro/routes/api/admin/bylines/index.ts +0 -74
  514. package/src/astro/routes/api/admin/comments/[id]/status.ts +0 -120
  515. package/src/astro/routes/api/admin/comments/[id].ts +0 -64
  516. package/src/astro/routes/api/admin/comments/bulk.ts +0 -42
  517. package/src/astro/routes/api/admin/comments/counts.ts +0 -30
  518. package/src/astro/routes/api/admin/comments/index.ts +0 -46
  519. package/src/astro/routes/api/admin/context/[id]/history.ts +0 -35
  520. package/src/astro/routes/api/admin/context/[id]/index.ts +0 -35
  521. package/src/astro/routes/api/admin/context/[id]/review.ts +0 -57
  522. package/src/astro/routes/api/admin/context/[id]/supersede.ts +0 -58
  523. package/src/astro/routes/api/admin/context/diff.ts +0 -35
  524. package/src/astro/routes/api/admin/context/index.ts +0 -69
  525. package/src/astro/routes/api/admin/context/stale.ts +0 -35
  526. package/src/astro/routes/api/admin/hitl-requests/[id]/index.ts +0 -38
  527. package/src/astro/routes/api/admin/hitl-requests/[id]/resolve.ts +0 -54
  528. package/src/astro/routes/api/admin/hitl-requests/index.ts +0 -38
  529. package/src/astro/routes/api/admin/hooks/exclusive/[hookName].ts +0 -132
  530. package/src/astro/routes/api/admin/hooks/exclusive/index.ts +0 -51
  531. package/src/astro/routes/api/admin/oauth-clients/[id].ts +0 -137
  532. package/src/astro/routes/api/admin/oauth-clients/index.ts +0 -95
  533. package/src/astro/routes/api/admin/plugins/[id]/disable.ts +0 -91
  534. package/src/astro/routes/api/admin/plugins/[id]/enable.ts +0 -91
  535. package/src/astro/routes/api/admin/plugins/[id]/index.ts +0 -38
  536. package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +0 -98
  537. package/src/astro/routes/api/admin/plugins/[id]/update.ts +0 -154
  538. package/src/astro/routes/api/admin/plugins/index.ts +0 -32
  539. package/src/astro/routes/api/admin/plugins/marketplace/[id]/icon.ts +0 -62
  540. package/src/astro/routes/api/admin/plugins/marketplace/[id]/index.ts +0 -33
  541. package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +0 -135
  542. package/src/astro/routes/api/admin/plugins/marketplace/index.ts +0 -38
  543. package/src/astro/routes/api/admin/plugins/updates.ts +0 -28
  544. package/src/astro/routes/api/admin/review-requests/[id]/index.ts +0 -35
  545. package/src/astro/routes/api/admin/review-requests/[id]/resolve.ts +0 -52
  546. package/src/astro/routes/api/admin/review-requests/index.ts +0 -35
  547. package/src/astro/routes/api/admin/themes/marketplace/[id]/index.ts +0 -33
  548. package/src/astro/routes/api/admin/themes/marketplace/[id]/thumbnail.ts +0 -62
  549. package/src/astro/routes/api/admin/themes/marketplace/index.ts +0 -45
  550. package/src/astro/routes/api/admin/users/[id]/disable.ts +0 -72
  551. package/src/astro/routes/api/admin/users/[id]/enable.ts +0 -48
  552. package/src/astro/routes/api/admin/users/[id]/index.ts +0 -166
  553. package/src/astro/routes/api/admin/users/[id]/send-recovery.ts +0 -72
  554. package/src/astro/routes/api/admin/users/index.ts +0 -66
  555. package/src/astro/routes/api/auth/dev-bypass.ts +0 -139
  556. package/src/astro/routes/api/auth/invite/accept.ts +0 -52
  557. package/src/astro/routes/api/auth/invite/complete.ts +0 -86
  558. package/src/astro/routes/api/auth/invite/index.ts +0 -99
  559. package/src/astro/routes/api/auth/invite/register-options.ts +0 -73
  560. package/src/astro/routes/api/auth/logout.ts +0 -40
  561. package/src/astro/routes/api/auth/magic-link/send.ts +0 -90
  562. package/src/astro/routes/api/auth/magic-link/verify.ts +0 -71
  563. package/src/astro/routes/api/auth/me.ts +0 -60
  564. package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +0 -221
  565. package/src/astro/routes/api/auth/oauth/[provider].ts +0 -120
  566. package/src/astro/routes/api/auth/passkey/[id].ts +0 -124
  567. package/src/astro/routes/api/auth/passkey/index.ts +0 -54
  568. package/src/astro/routes/api/auth/passkey/options.ts +0 -85
  569. package/src/astro/routes/api/auth/passkey/register/options.ts +0 -88
  570. package/src/astro/routes/api/auth/passkey/register/verify.ts +0 -119
  571. package/src/astro/routes/api/auth/passkey/verify.ts +0 -72
  572. package/src/astro/routes/api/auth/signup/complete.ts +0 -87
  573. package/src/astro/routes/api/auth/signup/request.ts +0 -89
  574. package/src/astro/routes/api/auth/signup/verify.ts +0 -53
  575. package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +0 -310
  576. package/src/astro/routes/api/content/[collection]/[id]/compare.ts +0 -28
  577. package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +0 -68
  578. package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +0 -77
  579. package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +0 -42
  580. package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +0 -107
  581. package/src/astro/routes/api/content/[collection]/[id]/publish.ts +0 -100
  582. package/src/astro/routes/api/content/[collection]/[id]/restore.ts +0 -64
  583. package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +0 -31
  584. package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +0 -129
  585. package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +0 -143
  586. package/src/astro/routes/api/content/[collection]/[id]/translations.ts +0 -50
  587. package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +0 -69
  588. package/src/astro/routes/api/content/[collection]/[id].ts +0 -173
  589. package/src/astro/routes/api/content/[collection]/index.ts +0 -103
  590. package/src/astro/routes/api/content/[collection]/trash.ts +0 -33
  591. package/src/astro/routes/api/dashboard.ts +0 -32
  592. package/src/astro/routes/api/dev/emails.ts +0 -36
  593. package/src/astro/routes/api/health.ts +0 -54
  594. package/src/astro/routes/api/import/probe.ts +0 -47
  595. package/src/astro/routes/api/import/wordpress/analyze.ts +0 -523
  596. package/src/astro/routes/api/import/wordpress/execute.ts +0 -330
  597. package/src/astro/routes/api/import/wordpress/media.ts +0 -338
  598. package/src/astro/routes/api/import/wordpress/prepare.ts +0 -212
  599. package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +0 -425
  600. package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +0 -111
  601. package/src/astro/routes/api/import/wordpress-plugin/callback.ts +0 -58
  602. package/src/astro/routes/api/import/wordpress-plugin/execute.ts +0 -399
  603. package/src/astro/routes/api/manifest.ts +0 -75
  604. package/src/astro/routes/api/mcp.ts +0 -125
  605. package/src/astro/routes/api/media/[id]/confirm.ts +0 -93
  606. package/src/astro/routes/api/media/[id].ts +0 -145
  607. package/src/astro/routes/api/media/file/[...key].ts +0 -79
  608. package/src/astro/routes/api/media/providers/[providerId]/[itemId].ts +0 -91
  609. package/src/astro/routes/api/media/providers/[providerId]/index.ts +0 -111
  610. package/src/astro/routes/api/media/providers/index.ts +0 -30
  611. package/src/astro/routes/api/media/upload-url.ts +0 -146
  612. package/src/astro/routes/api/media.ts +0 -204
  613. package/src/astro/routes/api/menus/[name]/reorder.ts +0 -79
  614. package/src/astro/routes/api/menus/[name].ts +0 -145
  615. package/src/astro/routes/api/menus/index.ts +0 -91
  616. package/src/astro/routes/api/oauth/authorize.ts +0 -430
  617. package/src/astro/routes/api/oauth/device/authorize.ts +0 -45
  618. package/src/astro/routes/api/oauth/device/code.ts +0 -56
  619. package/src/astro/routes/api/oauth/device/token.ts +0 -70
  620. package/src/astro/routes/api/oauth/register.ts +0 -182
  621. package/src/astro/routes/api/oauth/token/refresh.ts +0 -38
  622. package/src/astro/routes/api/oauth/token/revoke.ts +0 -38
  623. package/src/astro/routes/api/oauth/token.ts +0 -195
  624. package/src/astro/routes/api/openapi.json.ts +0 -33
  625. package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +0 -109
  626. package/src/astro/routes/api/redirects/404s/index.ts +0 -72
  627. package/src/astro/routes/api/redirects/404s/summary.ts +0 -33
  628. package/src/astro/routes/api/redirects/[id].ts +0 -183
  629. package/src/astro/routes/api/redirects/index.ts +0 -100
  630. package/src/astro/routes/api/revisions/[revisionId]/index.ts +0 -29
  631. package/src/astro/routes/api/revisions/[revisionId]/restore.ts +0 -62
  632. package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +0 -104
  633. package/src/astro/routes/api/schema/collections/[slug]/fields/index.ts +0 -67
  634. package/src/astro/routes/api/schema/collections/[slug]/fields/reorder.ts +0 -45
  635. package/src/astro/routes/api/schema/collections/[slug]/index.ts +0 -107
  636. package/src/astro/routes/api/schema/collections/index.ts +0 -61
  637. package/src/astro/routes/api/schema/index.ts +0 -109
  638. package/src/astro/routes/api/schema/orphans/[slug].ts +0 -36
  639. package/src/astro/routes/api/schema/orphans/index.ts +0 -26
  640. package/src/astro/routes/api/search/enable.ts +0 -64
  641. package/src/astro/routes/api/search/index.ts +0 -52
  642. package/src/astro/routes/api/search/rebuild.ts +0 -72
  643. package/src/astro/routes/api/search/stats.ts +0 -35
  644. package/src/astro/routes/api/search/suggest.ts +0 -50
  645. package/src/astro/routes/api/sections/[slug].ts +0 -203
  646. package/src/astro/routes/api/sections/index.ts +0 -107
  647. package/src/astro/routes/api/settings/email.ts +0 -150
  648. package/src/astro/routes/api/settings.ts +0 -116
  649. package/src/astro/routes/api/setup/admin-verify.ts +0 -122
  650. package/src/astro/routes/api/setup/admin.ts +0 -104
  651. package/src/astro/routes/api/setup/dev-bypass.ts +0 -200
  652. package/src/astro/routes/api/setup/dev-reset.ts +0 -40
  653. package/src/astro/routes/api/setup/index.ts +0 -128
  654. package/src/astro/routes/api/setup/status.ts +0 -122
  655. package/src/astro/routes/api/snapshot.ts +0 -76
  656. package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +0 -232
  657. package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +0 -131
  658. package/src/astro/routes/api/taxonomies/index.ts +0 -114
  659. package/src/astro/routes/api/themes/preview.ts +0 -78
  660. package/src/astro/routes/api/typegen.ts +0 -114
  661. package/src/astro/routes/api/well-known/auth.ts +0 -71
  662. package/src/astro/routes/api/well-known/oauth-authorization-server.ts +0 -48
  663. package/src/astro/routes/api/well-known/oauth-protected-resource.ts +0 -39
  664. package/src/astro/routes/api/widget-areas/[name]/reorder.ts +0 -114
  665. package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +0 -213
  666. package/src/astro/routes/api/widget-areas/[name]/widgets.ts +0 -126
  667. package/src/astro/routes/api/widget-areas/[name].ts +0 -135
  668. package/src/astro/routes/api/widget-areas/index.ts +0 -149
  669. package/src/astro/routes/api/widget-components.ts +0 -22
  670. package/src/astro/routes/robots.txt.ts +0 -81
  671. package/src/astro/routes/sitemap-[collection].xml.ts +0 -104
  672. package/src/astro/routes/sitemap.xml.ts +0 -92
  673. /package/dist/{adapters-C2ypTrZZ.d.mts → adapters-BLDldpJg.d.mts} +0 -0
  674. /package/{src → dist}/astro/routes/admin.astro +0 -0
  675. /package/dist/{base64-F8-DUraK.mjs → base64-Cz-aU0X1.mjs} +0 -0
  676. /package/dist/{chunks--4F8ddV4.mjs → chunks-D_jVet6z.mjs} +0 -0
  677. /package/dist/{config-BXwuX8Bx.mjs → config-CAMFxGaV.mjs} +0 -0
  678. /package/dist/{db-errors-CEqD7qH9.mjs → db-errors-DKUg_NgF.mjs} +0 -0
  679. /package/dist/{default-VjJyuuG9.mjs → default-C3PZN-bz.mjs} +0 -0
  680. /package/dist/{load-Coc9HpHH.mjs → load-D-9NhLmF.mjs} +0 -0
  681. /package/dist/{mode-47goXBBK.mjs → mode-C80mAZQv.mjs} +0 -0
  682. /package/dist/{placeholder--wOi4TbO.d.mts → placeholder-CHkLckzK.d.mts} +0 -0
  683. /package/dist/{request-cache-Dk5qPSOx.mjs → request-cache-DHMRr2Lf.mjs} +0 -0
  684. /package/dist/{transaction-Cn2rjY78.mjs → transaction-x2tJQ-A1.mjs} +0 -0
  685. /package/dist/{transport-Wge_IzKl.d.mts → transport-6RefuBdV.d.mts} +0 -0
  686. /package/dist/{types-griIBQOQ.mjs → types-B9gKVOHk.mjs} +0 -0
  687. /package/dist/{types-CWbdtiux.d.mts → types-B9qVtiHb.d.mts} +0 -0
  688. /package/dist/{types-COeOq9nK.mjs → types-DL7Y8D_t.mjs} +0 -0
  689. /package/dist/{types-BzcUjoqg.d.mts → types-Djdp0cZO.d.mts} +0 -0
  690. /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 };