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,212 +0,0 @@
1
- /**
2
- * WordPress import prepare endpoint
3
- *
4
- * POST /_dineway/api/import/wordpress/prepare
5
- *
6
- * Creates collections and fields needed for import.
7
- * This is called after analyze, before execute.
8
- */
9
-
10
- import type { APIRoute } from "astro";
11
- import { z } from "zod";
12
-
13
- import { requirePerm } from "#api/authorize.js";
14
- import { apiError, apiSuccess, handleError } from "#api/error.js";
15
- import {
16
- ensureWorkflowHitlRouteRequest,
17
- hitlRequiredRouteError,
18
- resolveHitlRouteActor,
19
- } from "#api/hitl-route-helpers.js";
20
- import { isParseError, parseBody } from "#api/parse.js";
21
- import { wpPrepareBody } from "#api/schemas.js";
22
- import { sanitizeWordPressImportSlug } from "#import/wordpress-slugs.js";
23
- import { FIELD_TYPES, type FieldType } from "#schema/types.js";
24
- import { RiskPolicyEvaluator, WordPressImportHitlPayloadBuilder } from "#site-context/index.js";
25
- import type { DinewayHandlers } from "#types";
26
-
27
- import { capitalize, singularize, type ImportFieldDef } from "./analyze.js";
28
-
29
- /** Validate that a string is a known FieldType, returning undefined if not */
30
- function asFieldType(value: string): FieldType | undefined {
31
- // eslint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- validated by includes check
32
- return (FIELD_TYPES as readonly string[]).includes(value) ? (value as FieldType) : undefined;
33
- }
34
-
35
- export const prerender = false;
36
-
37
- const prepareBodySchema = wpPrepareBody.extend({
38
- hitlRequestId: z.string().min(1).optional(),
39
- });
40
-
41
- interface PrepareRequest {
42
- postTypes: Array<{
43
- name: string;
44
- collection: string;
45
- fields: ImportFieldDef[];
46
- }>;
47
- }
48
-
49
- export interface PrepareResult {
50
- success: boolean;
51
- collectionsCreated: string[];
52
- fieldsCreated: Array<{ collection: string; field: string }>;
53
- errors: Array<{ collection: string; error: string }>;
54
- }
55
-
56
- export const POST: APIRoute = async ({ request, locals }) => {
57
- const { dineway, user } = locals;
58
-
59
- if (!dineway?.db) {
60
- return apiError("NOT_CONFIGURED", "Dineway is not configured", 500);
61
- }
62
-
63
- const denied = requirePerm(user, "import:execute");
64
- if (denied) return denied;
65
-
66
- try {
67
- const body = await parseBody(request, prepareBodySchema);
68
- if (isParseError(body)) return body;
69
-
70
- const actor = resolveHitlRouteActor(locals);
71
- const evaluator = new RiskPolicyEvaluator({
72
- db: dineway.db,
73
- handlers: dineway,
74
- });
75
- const action = await new WordPressImportHitlPayloadBuilder().buildPrepareRequest({
76
- postTypes: body.postTypes,
77
- });
78
- const decision = await evaluator.evaluateWorkflowHitl({
79
- actor: actor.identity,
80
- hitlRequestId: body.hitlRequestId,
81
- action,
82
- });
83
- if (!decision.allowed) {
84
- const ensured = await ensureWorkflowHitlRouteRequest(dineway.db, locals, decision.action);
85
- return hitlRequiredRouteError(decision, ensured);
86
- }
87
-
88
- const result = await prepareImport(dineway.db, {
89
- postTypes: body.postTypes,
90
- });
91
-
92
- return apiSuccess(result, result.success ? 200 : 400);
93
- } catch (error) {
94
- return handleError(error, "Failed to prepare import", "WXR_PREPARE_ERROR");
95
- }
96
- };
97
-
98
- async function prepareImport(
99
- db: NonNullable<DinewayHandlers["db"]>,
100
- request: PrepareRequest,
101
- ): Promise<PrepareResult> {
102
- const { SchemaRegistry } = await import("#schema/registry.js");
103
- const registry = new SchemaRegistry(db);
104
-
105
- const result: PrepareResult = {
106
- success: true,
107
- collectionsCreated: [],
108
- fieldsCreated: [],
109
- errors: [],
110
- };
111
-
112
- for (const postType of request.postTypes) {
113
- const collectionSlug = sanitizeWordPressImportSlug(postType.collection);
114
-
115
- try {
116
- // Check if collection exists
117
- let collection = await registry.getCollection(collectionSlug);
118
-
119
- if (!collection) {
120
- // Create the collection
121
- const label = capitalize(collectionSlug);
122
- const labelSingular = capitalize(singularize(collectionSlug));
123
-
124
- // Enable search by default for posts and pages
125
- const isSearchable = ["posts", "pages", "post", "page"].includes(collectionSlug);
126
- const supports: ("revisions" | "drafts" | "search")[] = ["revisions", "drafts"];
127
- if (isSearchable) {
128
- supports.push("search");
129
- }
130
-
131
- // Default URL patterns for known post types
132
- const urlPattern =
133
- collectionSlug === "pages"
134
- ? "/{slug}"
135
- : collectionSlug === "posts"
136
- ? "/blog/{slug}"
137
- : undefined;
138
-
139
- collection = await registry.createCollection({
140
- slug: collectionSlug,
141
- label,
142
- labelSingular,
143
- description: `Imported from WordPress post type: ${postType.name}`,
144
- supports,
145
- urlPattern,
146
- });
147
-
148
- result.collectionsCreated.push(collectionSlug);
149
- }
150
-
151
- // Create missing fields
152
- const existingFields = await registry.listFields(collection.id);
153
- const existingFieldSlugs = new Set(existingFields.map((f) => f.slug));
154
-
155
- for (const field of postType.fields) {
156
- if (existingFieldSlugs.has(field.slug)) {
157
- // Field already exists - skip
158
- continue;
159
- }
160
-
161
- const fieldType = asFieldType(field.type);
162
- if (!fieldType) {
163
- result.errors.push({
164
- collection: collectionSlug,
165
- error: `Unknown field type "${field.type}" for field "${field.slug}"`,
166
- });
167
- continue;
168
- }
169
-
170
- await registry.createField(collectionSlug, {
171
- slug: field.slug,
172
- label: field.label,
173
- type: fieldType,
174
- required: field.required,
175
- unique: false,
176
- searchable: field.searchable ?? false,
177
- sortOrder: existingFields.length + result.fieldsCreated.length,
178
- });
179
-
180
- result.fieldsCreated.push({
181
- collection: collectionSlug,
182
- field: field.slug,
183
- });
184
- }
185
-
186
- // Enable search if collection supports it and has searchable fields
187
- const isSearchable = ["posts", "pages", "post", "page"].includes(collectionSlug);
188
- if (isSearchable) {
189
- const { FTSManager } = await import("#search/fts-manager.js");
190
- const ftsManager = new FTSManager(db);
191
-
192
- const searchableFields = await ftsManager.getSearchableFields(collectionSlug);
193
- if (searchableFields.length > 0) {
194
- try {
195
- await ftsManager.enableSearch(collectionSlug);
196
- } catch {
197
- // Ignore - search can be enabled manually later
198
- }
199
- }
200
- }
201
- } catch (error) {
202
- console.error(`Prepare error for collection "${collectionSlug}":`, error);
203
- result.success = false;
204
- result.errors.push({
205
- collection: collectionSlug,
206
- error: "Failed to prepare collection",
207
- });
208
- }
209
- }
210
-
211
- return result;
212
- }
@@ -1,425 +0,0 @@
1
- /**
2
- * WordPress URL rewrite endpoint
3
- *
4
- * POST /_dineway/api/import/wordpress/rewrite-urls
5
- *
6
- * Rewrites old WordPress media URLs in Portable Text content
7
- * to point to newly imported Dineway media URLs.
8
- *
9
- * Handles URL variants (e.g., image.jpg vs image.jpg?w=200) by matching
10
- * on the base URL path without query parameters.
11
- */
12
-
13
- import type { APIRoute } from "astro";
14
- import { sql } from "kysely";
15
- import { z } from "zod";
16
-
17
- import { requirePerm } from "#api/authorize.js";
18
- import { apiError, apiSuccess, handleError } from "#api/error.js";
19
- import {
20
- ensureWorkflowHitlRouteRequest,
21
- hitlRequiredRouteError,
22
- resolveHitlRouteActor,
23
- } from "#api/hitl-route-helpers.js";
24
- import { isParseError, parseBody } from "#api/parse.js";
25
- import { wpRewriteUrlsBody } from "#api/schemas.js";
26
- import { validateIdentifier } from "#db/validate.js";
27
- import { normalizeMediaValue } from "#media/normalize.js";
28
- import type { MediaProvider } from "#media/types.js";
29
- import { RiskPolicyEvaluator, WordPressImportHitlPayloadBuilder } from "#site-context/index.js";
30
- import type { DinewayHandlers } from "#types";
31
-
32
- export const prerender = false;
33
-
34
- const rewriteUrlsBodySchema = wpRewriteUrlsBody.extend({
35
- hitlRequestId: z.string().min(1).optional(),
36
- });
37
-
38
- const REGEX_SPECIAL_CHARS = /[.*+?^${}()|[\]\\]/g;
39
-
40
- export interface RewriteUrlsResult {
41
- /** Total items updated */
42
- updated: number;
43
- /** Updates by collection */
44
- byCollection: Record<string, number>;
45
- /** URLs that were rewritten */
46
- urlsRewritten: number;
47
- /** Any errors encountered */
48
- errors: Array<{ collection: string; id: string; error: string }>;
49
- }
50
-
51
- export const POST: APIRoute = async ({ request, locals }) => {
52
- const { dineway, user } = locals;
53
-
54
- if (!dineway?.db) {
55
- return apiError("NO_DB", "Database not initialized", 500);
56
- }
57
-
58
- const denied = requirePerm(user, "import:execute");
59
- if (denied) return denied;
60
-
61
- try {
62
- const body = await parseBody(request, rewriteUrlsBodySchema);
63
- if (isParseError(body)) return body;
64
-
65
- const urlEntries = Object.entries(body.urlMap);
66
- if (urlEntries.length === 0) {
67
- return apiSuccess({
68
- updated: 0,
69
- byCollection: {},
70
- urlsRewritten: 0,
71
- errors: [],
72
- });
73
- }
74
-
75
- const actor = resolveHitlRouteActor(locals);
76
- const evaluator = new RiskPolicyEvaluator({
77
- db: dineway.db,
78
- handlers: dineway,
79
- });
80
- const action = await new WordPressImportHitlPayloadBuilder().buildRewriteUrlsRequest({
81
- urlMap: body.urlMap,
82
- collections: body.collections,
83
- });
84
- const decision = await evaluator.evaluateWorkflowHitl({
85
- actor: actor.identity,
86
- hitlRequestId: body.hitlRequestId,
87
- action,
88
- });
89
- if (!decision.allowed) {
90
- const ensured = await ensureWorkflowHitlRouteRequest(dineway.db, locals, decision.action);
91
- return hitlRequiredRouteError(decision, ensured);
92
- }
93
-
94
- const getProvider = (id: string) => dineway.getMediaProvider(id);
95
- const result = await rewriteUrls(dineway.db, body.urlMap, getProvider, body.collections);
96
-
97
- return apiSuccess(result);
98
- } catch (error) {
99
- return handleError(error, "Failed to rewrite URLs", "REWRITE_ERROR");
100
- }
101
- };
102
-
103
- /**
104
- * Strip query parameters from a URL for base matching
105
- */
106
- function getBaseUrl(url: string): string {
107
- try {
108
- const parsed = new URL(url);
109
- return `${parsed.origin}${parsed.pathname}`;
110
- } catch {
111
- // If URL parsing fails, try simple string split
112
- return url.split("?")[0] || url;
113
- }
114
- }
115
-
116
- /**
117
- * Build a map of base URLs to new URLs for flexible matching
118
- */
119
- function buildBaseUrlMap(urlMap: Record<string, string>): Map<string, string> {
120
- const baseMap = new Map<string, string>();
121
- for (const [oldUrl, newUrl] of Object.entries(urlMap)) {
122
- const baseUrl = getBaseUrl(oldUrl);
123
- baseMap.set(baseUrl, newUrl);
124
- }
125
- return baseMap;
126
- }
127
-
128
- /**
129
- * Find matching new URL for a given URL, checking both exact and base matches
130
- */
131
- function findMatchingUrl(
132
- url: string,
133
- exactMap: Record<string, string>,
134
- baseMap: Map<string, string>,
135
- ): string | null {
136
- // Try exact match first
137
- if (exactMap[url]) {
138
- return exactMap[url];
139
- }
140
-
141
- // Try base URL match (ignoring query params)
142
- const baseUrl = getBaseUrl(url);
143
- const baseMatch = baseMap.get(baseUrl);
144
- if (baseMatch) {
145
- return baseMatch;
146
- }
147
-
148
- return null;
149
- }
150
-
151
- /**
152
- * Portable Text block type (simplified for URL rewriting)
153
- */
154
- interface PortableTextBlock {
155
- _type: string;
156
- _key?: string;
157
- asset?: {
158
- _type?: string;
159
- _ref?: string;
160
- url?: string;
161
- };
162
- link?: string;
163
- // For nested content like galleries
164
- images?: PortableTextBlock[];
165
- columns?: Array<{ content?: PortableTextBlock[] }>;
166
- [key: string]: unknown;
167
- }
168
-
169
- /**
170
- * Rewrite URLs in a Portable Text array, returning whether any changes were made
171
- */
172
- function rewritePortableTextUrls(
173
- blocks: PortableTextBlock[],
174
- exactMap: Record<string, string>,
175
- baseMap: Map<string, string>,
176
- ): { changed: boolean; urlsRewritten: number } {
177
- let changed = false;
178
- let urlsRewritten = 0;
179
-
180
- for (const block of blocks) {
181
- // Handle image blocks
182
- if (block._type === "image" && block.asset?.url) {
183
- const newUrl = findMatchingUrl(block.asset.url, exactMap, baseMap);
184
- if (newUrl) {
185
- block.asset.url = newUrl;
186
- block.asset._ref = newUrl; // Also update the reference
187
- changed = true;
188
- urlsRewritten++;
189
- }
190
- }
191
-
192
- // Handle image link URLs (for linked images)
193
- if (block._type === "image" && block.link) {
194
- const newUrl = findMatchingUrl(block.link, exactMap, baseMap);
195
- if (newUrl) {
196
- block.link = newUrl;
197
- changed = true;
198
- urlsRewritten++;
199
- }
200
- }
201
-
202
- // Handle gallery blocks with nested images
203
- if (block._type === "gallery" && Array.isArray(block.images)) {
204
- const result = rewritePortableTextUrls(block.images, exactMap, baseMap);
205
- if (result.changed) {
206
- changed = true;
207
- urlsRewritten += result.urlsRewritten;
208
- }
209
- }
210
-
211
- // Handle columns blocks with nested content
212
- if (block._type === "columns" && Array.isArray(block.columns)) {
213
- for (const column of block.columns) {
214
- if (Array.isArray(column.content)) {
215
- const result = rewritePortableTextUrls(column.content, exactMap, baseMap);
216
- if (result.changed) {
217
- changed = true;
218
- urlsRewritten += result.urlsRewritten;
219
- }
220
- }
221
- }
222
- }
223
- }
224
-
225
- return { changed, urlsRewritten };
226
- }
227
-
228
- /**
229
- * Rewrite URLs in a string field using simple string replacement
230
- */
231
- function rewriteStringUrls(
232
- value: string,
233
- exactMap: Record<string, string>,
234
- baseMap: Map<string, string>,
235
- ): { newValue: string; changed: boolean; urlsRewritten: number } {
236
- let newValue = value;
237
- let changed = false;
238
- let urlsRewritten = 0;
239
-
240
- // Try exact matches first
241
- for (const [oldUrl, newUrl] of Object.entries(exactMap)) {
242
- if (newValue.includes(oldUrl)) {
243
- newValue = newValue.split(oldUrl).join(newUrl);
244
- changed = true;
245
- urlsRewritten++;
246
- }
247
- }
248
-
249
- // For base URL matching in strings, we need to be more careful
250
- // Only match if we find a URL that starts with the base
251
- for (const [baseUrl, newUrl] of baseMap.entries()) {
252
- // Look for the base URL followed by optional query string or end
253
- const regex = new RegExp(escapeRegExp(baseUrl) + "(\\?[^\"'\\s]*)?", "g");
254
- const matches = newValue.match(regex);
255
- if (matches) {
256
- for (const match of matches) {
257
- // Don't replace if we already have an exact match in the map
258
- if (!exactMap[match]) {
259
- newValue = newValue.split(match).join(newUrl);
260
- changed = true;
261
- urlsRewritten++;
262
- }
263
- }
264
- }
265
- }
266
-
267
- return { newValue, changed, urlsRewritten };
268
- }
269
-
270
- /**
271
- * Escape special regex characters in a string
272
- */
273
- function escapeRegExp(string: string): string {
274
- return string.replace(REGEX_SPECIAL_CHARS, "\\$&");
275
- }
276
-
277
- async function rewriteUrls(
278
- db: NonNullable<DinewayHandlers["db"]>,
279
- urlMap: Record<string, string>,
280
- getProvider: (id: string) => MediaProvider | undefined,
281
- collections?: string[],
282
- ): Promise<RewriteUrlsResult> {
283
- const { SchemaRegistry } = await import("#schema/registry.js");
284
- const registry = new SchemaRegistry(db);
285
-
286
- const result: RewriteUrlsResult = {
287
- updated: 0,
288
- byCollection: {},
289
- urlsRewritten: 0,
290
- errors: [],
291
- };
292
-
293
- // Build base URL map for flexible matching
294
- const baseMap = buildBaseUrlMap(urlMap);
295
-
296
- // Get all collections or filter to specified ones
297
- const allCollections = await registry.listCollections();
298
- const targetCollections = collections?.length
299
- ? allCollections.filter((c) => collections.includes(c.slug))
300
- : allCollections;
301
-
302
- for (const collection of targetCollections) {
303
- // Get fields that might contain URLs
304
- const fields = await registry.listFields(collection.id);
305
- const portableTextFields = fields.filter((f) => f.type === "portableText");
306
- const stringFields = fields.filter((f) => ["text", "string"].includes(f.type));
307
- // Image and file fields store URLs directly as TEXT
308
- const mediaFields = fields.filter((f) => ["image", "file"].includes(f.type));
309
-
310
- if (portableTextFields.length === 0 && stringFields.length === 0 && mediaFields.length === 0)
311
- continue;
312
-
313
- // Get table name
314
- validateIdentifier(collection.slug, "collection slug");
315
- const tableName = `ec_${collection.slug}`;
316
-
317
- try {
318
- // Query all rows
319
- const rows = await sql<{ id: string; [key: string]: unknown }>`
320
- SELECT * FROM ${sql.ref(tableName)}
321
- WHERE deleted_at IS NULL
322
- `.execute(db);
323
-
324
- for (const row of rows.rows) {
325
- let rowUpdated = false;
326
- const updates: Record<string, unknown> = {};
327
- let rowUrlsRewritten = 0;
328
-
329
- // Handle Portable Text fields - parse JSON and rewrite URLs in blocks
330
- for (const field of portableTextFields) {
331
- const value = row[field.slug];
332
- if (!value || typeof value !== "string") continue;
333
-
334
- try {
335
- // eslint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- JSON.parse returns unknown; validated by Array.isArray below
336
- const blocks = JSON.parse(value) as PortableTextBlock[];
337
- if (!Array.isArray(blocks)) continue;
338
-
339
- const rewriteResult = rewritePortableTextUrls(blocks, urlMap, baseMap);
340
-
341
- if (rewriteResult.changed) {
342
- updates[field.slug] = JSON.stringify(blocks);
343
- rowUpdated = true;
344
- rowUrlsRewritten += rewriteResult.urlsRewritten;
345
- }
346
- } catch {
347
- // Not valid JSON, try string replacement as fallback
348
- const stringResult = rewriteStringUrls(value, urlMap, baseMap);
349
- if (stringResult.changed) {
350
- updates[field.slug] = stringResult.newValue;
351
- rowUpdated = true;
352
- rowUrlsRewritten += stringResult.urlsRewritten;
353
- }
354
- }
355
- }
356
-
357
- // Handle string/text fields - simple string replacement
358
- for (const field of stringFields) {
359
- const value = row[field.slug];
360
- if (!value || typeof value !== "string") continue;
361
-
362
- const stringResult = rewriteStringUrls(value, urlMap, baseMap);
363
- if (stringResult.changed) {
364
- updates[field.slug] = stringResult.newValue;
365
- rowUpdated = true;
366
- rowUrlsRewritten += stringResult.urlsRewritten;
367
- }
368
- }
369
-
370
- // Handle image/file fields - normalize to MediaValue objects
371
- for (const field of mediaFields) {
372
- const value = row[field.slug];
373
- if (!value || typeof value !== "string") continue;
374
-
375
- // Try to find a matching rewritten URL
376
- const newUrl = findMatchingUrl(value, urlMap, baseMap);
377
- if (newUrl) {
378
- // Normalize into a proper MediaValue instead of storing a bare URL
379
- try {
380
- const normalized = await normalizeMediaValue(newUrl, getProvider);
381
- updates[field.slug] = normalized ? JSON.stringify(normalized) : newUrl;
382
- } catch {
383
- updates[field.slug] = newUrl;
384
- }
385
- rowUpdated = true;
386
- rowUrlsRewritten++;
387
- }
388
- }
389
-
390
- if (rowUpdated) {
391
- try {
392
- // Build update query dynamically
393
- // eslint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- Kysely dynamic table requires type assertion
394
- let query = db.updateTable(tableName as any).where("id", "=", row.id);
395
-
396
- for (const [key, value] of Object.entries(updates)) {
397
- // eslint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- Kysely dynamic column update requires type assertion
398
- query = query.set({ [key]: value } as any);
399
- }
400
-
401
- await query.execute();
402
-
403
- result.updated++;
404
- result.urlsRewritten += rowUrlsRewritten;
405
- result.byCollection[collection.slug] = (result.byCollection[collection.slug] || 0) + 1;
406
- } catch (updateError) {
407
- result.errors.push({
408
- collection: collection.slug,
409
- id: row.id,
410
- error: updateError instanceof Error ? updateError.message : "Update failed",
411
- });
412
- }
413
- }
414
- }
415
- } catch (queryError) {
416
- result.errors.push({
417
- collection: collection.slug,
418
- id: "*",
419
- error: queryError instanceof Error ? queryError.message : "Query failed for collection",
420
- });
421
- }
422
- }
423
-
424
- return result;
425
- }