dineway 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -17
- package/dist/activity-events-BsMaXdJa.mjs +540 -0
- package/dist/allowed-origins-DG86sH8U.mjs +68 -0
- package/dist/api/route-utils.d.mts +41 -0
- package/dist/api/route-utils.mjs +26 -0
- package/dist/api/schemas/index.d.mts +3 -0
- package/dist/api/schemas/index.mjs +6 -0
- package/dist/api/schemas/setup.d.mts +42 -0
- package/dist/api/schemas/setup.mjs +39 -0
- package/dist/api-Cmy8Rjk5.mjs +2704 -0
- package/dist/api-tokens-Bu3ez1MO.mjs +153 -0
- package/dist/api-tokens-DzloJxuh.mjs +3 -0
- package/dist/{apply-iVSqz2qs.mjs → apply-Co5imxxT.mjs} +15 -689
- package/dist/astro/index.d.mts +10 -6
- package/dist/astro/index.mjs +86 -11
- package/dist/astro/middleware/auth.d.mts +10 -7
- package/dist/astro/middleware/auth.mjs +19 -104
- package/dist/astro/middleware/redirect.mjs +24 -14
- package/dist/astro/middleware/request-context.mjs +9 -6
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.mjs +86 -145
- package/dist/astro/routes/PluginRegistry.d.mts +14 -0
- package/dist/astro/routes/PluginRegistry.mjs +24 -0
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts +14 -0
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +65 -0
- package/dist/astro/routes/api/admin/allowed-domains/index.d.mts +14 -0
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +65 -0
- package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts +10 -0
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +33 -0
- package/dist/astro/routes/api/admin/api-tokens/index.d.mts +16 -0
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +59 -0
- package/dist/astro/routes/api/admin/briefing.d.mts +7 -0
- package/dist/astro/routes/api/admin/briefing.mjs +71 -0
- package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts +9 -0
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +74 -0
- package/dist/astro/routes/api/admin/bylines/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/bylines/index.mjs +61 -0
- package/dist/astro/routes/api/admin/comments/_id_/status.d.mts +7 -0
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +80 -0
- package/dist/astro/routes/api/admin/comments/_id_.d.mts +14 -0
- package/dist/astro/routes/api/admin/comments/_id_.mjs +46 -0
- package/dist/astro/routes/api/admin/comments/bulk.d.mts +7 -0
- package/dist/astro/routes/api/admin/comments/bulk.mjs +36 -0
- package/dist/astro/routes/api/admin/comments/counts.d.mts +7 -0
- package/dist/astro/routes/api/admin/comments/counts.mjs +24 -0
- package/dist/astro/routes/api/admin/comments/index.d.mts +10 -0
- package/dist/astro/routes/api/admin/comments/index.mjs +40 -0
- package/dist/astro/routes/api/admin/context/_id_/history.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/history.mjs +45 -0
- package/dist/astro/routes/api/admin/context/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +45 -0
- package/dist/astro/routes/api/admin/context/_id_/review.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +60 -0
- package/dist/astro/routes/api/admin/context/_id_/supersede.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +63 -0
- package/dist/astro/routes/api/admin/context/diff.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/diff.mjs +49 -0
- package/dist/astro/routes/api/admin/context/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/context/index.mjs +71 -0
- package/dist/astro/routes/api/admin/context/stale.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/stale.mjs +49 -0
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +51 -0
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.d.mts +7 -0
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +67 -0
- package/dist/astro/routes/api/admin/hitl-requests/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +55 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +7 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +98 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +33 -0
- package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts +18 -0
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +79 -0
- package/dist/astro/routes/api/admin/oauth-clients/index.d.mts +14 -0
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +58 -0
- package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +89 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +89 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +54 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +98 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +131 -0
- package/dist/astro/routes/api/admin/plugins/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/index.mjs +52 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +36 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +54 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +128 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +61 -0
- package/dist/astro/routes/api/admin/plugins/updates.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/updates.mjs +52 -0
- package/dist/astro/routes/api/admin/review-requests/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +26 -0
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.d.mts +7 -0
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +97 -0
- package/dist/astro/routes/api/admin/review-requests/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/review-requests/index.mjs +31 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +54 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts +7 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +36 -0
- package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +70 -0
- package/dist/astro/routes/api/admin/users/_id_/disable.d.mts +7 -0
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +38 -0
- package/dist/astro/routes/api/admin/users/_id_/enable.d.mts +7 -0
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +29 -0
- package/dist/astro/routes/api/admin/users/_id_/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +104 -0
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts +7 -0
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +43 -0
- package/dist/astro/routes/api/admin/users/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/users/index.mjs +54 -0
- package/dist/astro/routes/api/auth/dev-bypass.d.mts +8 -0
- package/dist/astro/routes/api/auth/dev-bypass.mjs +81 -0
- package/dist/astro/routes/api/auth/invite/accept.d.mts +7 -0
- package/dist/astro/routes/api/auth/invite/accept.mjs +31 -0
- package/dist/astro/routes/api/auth/invite/complete.d.mts +7 -0
- package/dist/astro/routes/api/auth/invite/complete.mjs +54 -0
- package/dist/astro/routes/api/auth/invite/index.d.mts +7 -0
- package/dist/astro/routes/api/auth/invite/index.mjs +51 -0
- package/dist/astro/routes/api/auth/invite/register-options.d.mts +7 -0
- package/dist/astro/routes/api/auth/invite/register-options.mjs +44 -0
- package/dist/astro/routes/api/auth/logout.d.mts +7 -0
- package/dist/astro/routes/api/auth/logout.mjs +24 -0
- package/dist/astro/routes/api/auth/magic-link/send.d.mts +7 -0
- package/dist/astro/routes/api/auth/magic-link/send.mjs +48 -0
- package/dist/astro/routes/api/auth/magic-link/verify.d.mts +7 -0
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +32 -0
- package/dist/astro/routes/api/auth/me.d.mts +13 -0
- package/dist/astro/routes/api/auth/me.mjs +41 -0
- package/dist/astro/routes/api/auth/mode.d.mts +7 -0
- package/dist/astro/routes/api/auth/mode.mjs +28 -0
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts +7 -0
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +114 -0
- package/dist/astro/routes/api/auth/oauth/_provider_.d.mts +7 -0
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +58 -0
- package/dist/astro/routes/api/auth/passkey/_id_.d.mts +14 -0
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +62 -0
- package/dist/astro/routes/api/auth/passkey/index.d.mts +7 -0
- package/dist/astro/routes/api/auth/passkey/index.mjs +25 -0
- package/dist/astro/routes/api/auth/passkey/options.d.mts +7 -0
- package/dist/astro/routes/api/auth/passkey/options.mjs +46 -0
- package/dist/astro/routes/api/auth/passkey/register/options.d.mts +7 -0
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +44 -0
- package/dist/astro/routes/api/auth/passkey/register/verify.d.mts +7 -0
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +59 -0
- package/dist/astro/routes/api/auth/passkey/verify.d.mts +7 -0
- package/dist/astro/routes/api/auth/passkey/verify.mjs +47 -0
- package/dist/astro/routes/api/auth/signup/complete.d.mts +7 -0
- package/dist/astro/routes/api/auth/signup/complete.mjs +55 -0
- package/dist/astro/routes/api/auth/signup/request.d.mts +7 -0
- package/dist/astro/routes/api/auth/signup/request.mjs +44 -0
- package/dist/astro/routes/api/auth/signup/verify.d.mts +7 -0
- package/dist/astro/routes/api/auth/signup/verify.mjs +32 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +14 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +193 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +17 -0
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +36 -0
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +39 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +31 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +78 -0
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +92 -0
- package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +36 -0
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +19 -0
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +75 -0
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts +14 -0
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +85 -0
- package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +40 -0
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +36 -0
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts +9 -0
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +114 -0
- package/dist/astro/routes/api/content/_collection_/index.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/index.mjs +74 -0
- package/dist/astro/routes/api/content/_collection_/trash.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/trash.mjs +23 -0
- package/dist/astro/routes/api/dashboard.d.mts +7 -0
- package/dist/astro/routes/api/dashboard.mjs +26 -0
- package/dist/astro/routes/api/dev/emails.d.mts +8 -0
- package/dist/astro/routes/api/dev/emails.mjs +17 -0
- package/dist/astro/routes/api/health.d.mts +7 -0
- package/dist/astro/routes/api/health.mjs +34 -0
- package/dist/astro/routes/api/import/probe.d.mts +17 -0
- package/dist/astro/routes/api/import/probe.mjs +33 -0
- package/dist/astro/routes/api/import/wordpress/analyze.d.mts +87 -0
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +305 -0
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +37 -0
- package/dist/astro/routes/api/import/wordpress/execute.mjs +197 -0
- package/dist/astro/routes/api/import/wordpress/media.d.mts +35 -0
- package/dist/astro/routes/api/import/wordpress/media.mjs +222 -0
- package/dist/astro/routes/api/import/wordpress/prepare.d.mts +19 -0
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +155 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +21 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +289 -0
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +15 -0
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +69 -0
- package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts +7 -0
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +28 -0
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +19 -0
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +268 -0
- package/dist/astro/routes/api/manifest.d.mts +7 -0
- package/dist/astro/routes/api/manifest.mjs +50 -0
- package/dist/astro/routes/api/mcp.d.mts +15 -0
- package/dist/astro/routes/api/mcp.mjs +2700 -0
- package/dist/astro/routes/api/media/_id_/confirm.d.mts +10 -0
- package/dist/astro/routes/api/media/_id_/confirm.mjs +59 -0
- package/dist/astro/routes/api/media/_id_.d.mts +22 -0
- package/dist/astro/routes/api/media/_id_.mjs +81 -0
- package/dist/astro/routes/api/media/file/_...key_.d.mts +7 -0
- package/dist/astro/routes/api/media/file/_...key_.mjs +49 -0
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts +14 -0
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +49 -0
- package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts +14 -0
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +72 -0
- package/dist/astro/routes/api/media/providers/index.d.mts +10 -0
- package/dist/astro/routes/api/media/providers/index.mjs +18 -0
- package/dist/astro/routes/api/media/upload-url.d.mts +10 -0
- package/dist/astro/routes/api/media/upload-url.mjs +82 -0
- package/dist/astro/routes/api/media.d.mts +16 -0
- package/dist/astro/routes/api/media.mjs +137 -0
- package/dist/astro/routes/api/menus/_name_/items.d.mts +9 -0
- package/{src/astro/routes/api/menus/[name]/items.ts → dist/astro/routes/api/menus/_name_/items.mjs} +63 -105
- package/dist/astro/routes/api/menus/_name_/reorder.d.mts +7 -0
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +77 -0
- package/dist/astro/routes/api/menus/_name_.d.mts +9 -0
- package/dist/astro/routes/api/menus/_name_.mjs +123 -0
- package/dist/astro/routes/api/menus/index.d.mts +8 -0
- package/dist/astro/routes/api/menus/index.mjs +84 -0
- package/dist/astro/routes/api/oauth/authorize.d.mts +8 -0
- package/dist/astro/routes/api/oauth/authorize.mjs +265 -0
- package/dist/astro/routes/api/oauth/device/authorize.d.mts +7 -0
- package/dist/astro/routes/api/oauth/device/authorize.mjs +30 -0
- package/dist/astro/routes/api/oauth/device/code.d.mts +7 -0
- package/dist/astro/routes/api/oauth/device/code.mjs +34 -0
- package/dist/astro/routes/api/oauth/device/token.d.mts +7 -0
- package/dist/astro/routes/api/oauth/device/token.mjs +45 -0
- package/dist/astro/routes/api/oauth/register.d.mts +8 -0
- package/dist/astro/routes/api/oauth/register.mjs +115 -0
- package/dist/astro/routes/api/oauth/token/refresh.d.mts +7 -0
- package/dist/astro/routes/api/oauth/token/refresh.mjs +28 -0
- package/dist/astro/routes/api/oauth/token/revoke.d.mts +7 -0
- package/dist/astro/routes/api/oauth/token/revoke.mjs +25 -0
- package/dist/astro/routes/api/oauth/token.d.mts +8 -0
- package/dist/astro/routes/api/oauth/token.mjs +138 -0
- package/dist/astro/routes/api/openapi.json.d.mts +7 -0
- package/dist/astro/routes/api/openapi.json.mjs +2638 -0
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +11 -0
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +77 -0
- package/dist/astro/routes/api/redirects/404s/index.d.mts +9 -0
- package/dist/astro/routes/api/redirects/404s/index.mjs +62 -0
- package/dist/astro/routes/api/redirects/404s/summary.d.mts +7 -0
- package/dist/astro/routes/api/redirects/404s/summary.mjs +34 -0
- package/dist/astro/routes/api/redirects/_id_.d.mts +9 -0
- package/dist/astro/routes/api/redirects/_id_.mjs +152 -0
- package/dist/astro/routes/api/redirects/index.d.mts +8 -0
- package/dist/astro/routes/api/redirects/index.mjs +97 -0
- package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts +7 -0
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +16 -0
- package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts +7 -0
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +23 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts +9 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +98 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts +8 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +80 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts +7 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +67 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +9 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +97 -0
- package/dist/astro/routes/api/schema/collections/index.d.mts +8 -0
- package/dist/astro/routes/api/schema/collections/index.mjs +77 -0
- package/dist/astro/routes/api/schema/index.d.mts +7 -0
- package/dist/astro/routes/api/schema/index.mjs +79 -0
- package/dist/astro/routes/api/schema/orphans/_slug_.d.mts +7 -0
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +58 -0
- package/dist/astro/routes/api/schema/orphans/index.d.mts +7 -0
- package/dist/astro/routes/api/schema/orphans/index.mjs +53 -0
- package/dist/astro/routes/api/search/enable.d.mts +15 -0
- package/dist/astro/routes/api/search/enable.mjs +55 -0
- package/dist/astro/routes/api/search/index.d.mts +16 -0
- package/dist/astro/routes/api/search/index.mjs +52 -0
- package/dist/astro/routes/api/search/rebuild.d.mts +13 -0
- package/dist/astro/routes/api/search/rebuild.mjs +48 -0
- package/dist/astro/routes/api/search/stats.d.mts +10 -0
- package/dist/astro/routes/api/search/stats.mjs +28 -0
- package/dist/astro/routes/api/search/suggest.d.mts +15 -0
- package/dist/astro/routes/api/search/suggest.mjs +43 -0
- package/dist/astro/routes/api/sections/_slug_.d.mts +9 -0
- package/dist/astro/routes/api/sections/_slug_.mjs +156 -0
- package/dist/astro/routes/api/sections/index.d.mts +8 -0
- package/dist/astro/routes/api/sections/index.mjs +99 -0
- package/dist/astro/routes/api/settings/email.d.mts +17 -0
- package/dist/astro/routes/api/settings/email.mjs +102 -0
- package/dist/astro/routes/api/settings.d.mts +20 -0
- package/dist/astro/routes/api/settings.mjs +101 -0
- package/dist/astro/routes/api/setup/admin-verify.d.mts +7 -0
- package/dist/astro/routes/api/setup/admin-verify.mjs +67 -0
- package/dist/astro/routes/api/setup/admin.d.mts +7 -0
- package/dist/astro/routes/api/setup/admin.mjs +68 -0
- package/dist/astro/routes/api/setup/dev-bypass.d.mts +8 -0
- package/dist/astro/routes/api/setup/dev-bypass.mjs +137 -0
- package/dist/astro/routes/api/setup/dev-reset.d.mts +7 -0
- package/dist/astro/routes/api/setup/dev-reset.mjs +22 -0
- package/dist/astro/routes/api/setup/index.d.mts +7 -0
- package/dist/astro/routes/api/setup/index.mjs +93 -0
- package/dist/astro/routes/api/setup/status.d.mts +7 -0
- package/dist/astro/routes/api/setup/status.mjs +57 -0
- package/dist/astro/routes/api/snapshot.d.mts +7 -0
- package/dist/astro/routes/api/snapshot.mjs +227 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts +18 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +189 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +14 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +113 -0
- package/dist/astro/routes/api/taxonomies/index.d.mts +14 -0
- package/dist/astro/routes/api/taxonomies/index.mjs +103 -0
- package/dist/astro/routes/api/themes/preview.d.mts +7 -0
- package/dist/astro/routes/api/themes/preview.mjs +47 -0
- package/dist/astro/routes/api/typegen.d.mts +17 -0
- package/dist/astro/routes/api/typegen.mjs +75 -0
- package/dist/astro/routes/api/well-known/auth.d.mts +7 -0
- package/dist/astro/routes/api/well-known/auth.mjs +42 -0
- package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts +7 -0
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +33 -0
- package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts +7 -0
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +21 -0
- package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts +7 -0
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +88 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +158 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +7 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +104 -0
- package/dist/astro/routes/api/widget-areas/_name_.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/_name_.mjs +99 -0
- package/dist/astro/routes/api/widget-areas/index.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/index.mjs +108 -0
- package/dist/astro/routes/api/widget-components.d.mts +7 -0
- package/dist/astro/routes/api/widget-components.mjs +15 -0
- package/dist/astro/routes/robots.txt.d.mts +7 -0
- package/dist/astro/routes/robots.txt.mjs +60 -0
- package/dist/astro/routes/sitemap-_collection_.xml.d.mts +7 -0
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +70 -0
- package/dist/astro/routes/sitemap.xml.d.mts +7 -0
- package/dist/astro/routes/sitemap.xml.mjs +63 -0
- package/dist/astro/types.d.mts +41 -9
- package/dist/auth/providers/github-admin.d.mts +9 -0
- package/dist/auth/providers/github-admin.mjs +27 -0
- package/dist/auth/providers/github.d.mts +12 -0
- package/dist/auth/providers/github.mjs +17 -0
- package/dist/auth/providers/google-admin.d.mts +9 -0
- package/dist/auth/providers/google-admin.mjs +43 -0
- package/dist/auth/providers/google.d.mts +12 -0
- package/dist/auth/providers/google.mjs +17 -0
- package/dist/auth-control-guard-DKUe_1oa.mjs +13 -0
- package/dist/authorize-BBj8C6Y8.mjs +36 -0
- package/dist/briefing-BrXCuMEE.mjs +1294 -0
- package/dist/briefing-ClWw4mc9.mjs +29 -0
- package/dist/{byline-OhH2dlRu.mjs → byline-naZxOPSa.mjs} +3 -3
- package/dist/{bylines-BGpD9_hy.mjs → bylines-BcOPh6Ej.mjs} +20 -53
- package/dist/bylines-HfUKum_j.d.mts +2023 -0
- package/dist/{cache-BdSY-gQN.mjs → cache-DEbQ13c9.mjs} +21 -11
- package/dist/challenge-store-DHMgBGOq.mjs +48 -0
- package/dist/cli/index.mjs +142 -22
- package/dist/client/external-auth-headers.d.mts +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +3 -3
- package/dist/comment-DFO-gWDH.mjs +246 -0
- package/dist/comments-Gy3zLBaP.mjs +186 -0
- package/dist/components-DND2rd3D.mjs +107 -0
- package/dist/{content-DWi4d0rT.mjs → content-CyLkb-qH.mjs} +33 -44
- package/dist/context-bE5Kyvcj.mjs +184 -0
- package/dist/context-nxMyOe3p.mjs +849 -0
- package/dist/context-route-helpers-D-6uCQ0S.mjs +45 -0
- package/dist/context-types-C-LwdAxx.mjs +23 -0
- package/dist/cron-DGzVTtJp.mjs +263 -0
- package/dist/dashboard-DqnYU8EU.mjs +120 -0
- package/dist/db/index.d.mts +3 -3
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/libsql.mjs +3 -3
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/db/sqlite.mjs +1 -2
- package/dist/device-flow-7AhWNwCK.mjs +487 -0
- package/dist/email-console-CgLVZbcn.mjs +36 -0
- package/dist/entity-aliases-C0v-yNET.mjs +51 -0
- package/dist/error-DEGjx2Xw.mjs +435 -0
- package/dist/escape-mNZr4t2A.mjs +8 -0
- package/dist/experimental-workflows-DldxJlqV.mjs +38 -0
- package/dist/fts-manager-B1pTNEG_.mjs +297 -0
- package/dist/hash-CDX7M0ze.mjs +32 -0
- package/dist/hitl-requests-Bx3Bkk9l.mjs +118 -0
- package/dist/hitl-route-helpers-DMmJRS7B.mjs +96 -0
- package/dist/import-DD3f2jkc.mjs +243 -0
- package/dist/import-DVZcYlDp.mjs +1323 -0
- package/dist/index-CkljPf5F.d.mts +227 -0
- package/dist/index.d.mts +15 -11
- package/dist/index.mjs +60 -22
- package/dist/{loader-sMG4TZ-u.mjs → loader-PZnPxFLc.mjs} +42 -5
- package/dist/{manifest-schema-D1MSVnoI.mjs → manifest-schema-DYoCQ5np.mjs} +22 -10
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +2 -1
- package/dist/media/local-runtime.d.mts +11 -7
- package/dist/media/local-runtime.mjs +3 -3
- package/dist/{media-DMTr80Gv.mjs → media-_7Fxdu45.mjs} +1 -1
- package/dist/menus-BacxVCCo.mjs +312 -0
- package/dist/menus-CrzHokKj.mjs +3502 -0
- package/dist/normalize-C49G_o1k.mjs +126 -0
- package/dist/oauth-authorization-C1qiw4hd.mjs +283 -0
- package/dist/oauth-clients-CvWatf5p.mjs +298 -0
- package/dist/oauth-state-store-hSdzxsEe.mjs +48 -0
- package/dist/oauth-user-lookup-B4OcmsLV.mjs +25 -0
- package/dist/options-z8VVg1Ll.mjs +114 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/parse-BeQXIt1U.mjs +88 -0
- package/dist/passkey-config-Daqs5fjq.mjs +42 -0
- package/dist/{patterns-CrCYkMBb.mjs → patterns-K0DLqWir.mjs} +53 -1
- package/dist/{placeholder-Cp8g5Emj.mjs → placeholder-C2P5fKa4.mjs} +1 -126
- package/dist/plugins/adapt-sandbox-entry.d.mts +9 -5
- package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
- package/dist/preview-C_4DyVox.mjs +788 -0
- package/dist/public-url-BB_umF5G.mjs +71 -0
- package/dist/{query-kDmwCsHh.mjs → query-RiobVwB5.mjs} +93 -19
- package/dist/rate-limit-CbJoj_fT.mjs +112 -0
- package/dist/{redirect-DnEWAkVg.mjs → redirect-CGl64yOX.mjs} +9 -5
- package/dist/redirect-ClSmMOtC.mjs +16 -0
- package/dist/redirects-B69T59hK.mjs +499 -0
- package/dist/redirects-CqaxraTO.mjs +1070 -0
- package/dist/{registry-C0zjeB9P.mjs → registry-C-_hxLqa.mjs} +26 -294
- package/dist/request-meta-Bd0mQfiS.mjs +130 -0
- package/dist/review-requests-C2DIHwlJ.mjs +148 -0
- package/dist/review-requests-DIyjw-K_.mjs +79 -0
- package/dist/{runner-CFI6B6J2.d.mts → runner-9eIQXuc2.d.mts} +1 -1
- package/dist/{index-yvc6E_17.d.mts → runtime-C4-7y7xK.d.mts} +1539 -2007
- package/dist/runtime.d.mts +10 -6
- package/dist/runtime.mjs +3 -3
- package/dist/schema-BNpI53of.mjs +40 -0
- package/dist/search-DM6CVti3.mjs +337 -0
- package/dist/secrets-dI8zzTV7.mjs +160 -0
- package/dist/sections-DZFyAQXd.mjs +338 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +18 -13
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo-BBgTCOYU.mjs +85 -0
- package/dist/seo-CUQctrog.mjs +129 -0
- package/dist/service-CSfcQguB.mjs +194 -0
- package/dist/settings-4XnpVMOS.mjs +223 -0
- package/dist/settings-Bw93cLfe.mjs +50 -0
- package/dist/setup-complete-DidsDQ1e.mjs +21 -0
- package/dist/setup-nonce-pml1PMKo.mjs +17 -0
- package/dist/sidecar-client-vzwV98K4.mjs +66 -0
- package/dist/site-activity-B8FjLIVh.mjs +104 -0
- package/dist/site-context-Bpu_Paur.mjs +4122 -0
- package/dist/site-url-CYIcO0Tj.mjs +12 -0
- package/dist/slugify-PDTDtMXp.mjs +30 -0
- package/dist/ssrf-CmM76lLV.mjs +248 -0
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +2 -2
- package/dist/{taxonomies-1s5PaS_8.mjs → taxonomies-BvBgfzn3.mjs} +11 -7
- package/dist/taxonomies-CpqGcIJD.mjs +355 -0
- package/dist/taxonomy-D5cbhc8u.mjs +165 -0
- package/dist/{tokens-CJz9ubV6.mjs → tokens-DLTo4dO2.mjs} +1 -1
- package/dist/{transport-DB5eDN4x.mjs → transport-C9e_h-BF.mjs} +5 -4
- package/dist/trusted-proxy-Bi0Cuk5n.mjs +30 -0
- package/dist/{types-BawVha09.mjs → types-Bs6lTBBW.mjs} +1 -1
- package/dist/types-C982qI5I.d.mts +344 -0
- package/dist/types-D4XVOt01.d.mts +165 -0
- package/dist/{types-Cj0KMIZV.d.mts → types-DgfUZqcd.d.mts} +54 -16
- package/dist/{types-BuMDPy5C.d.mts → types-IPACEM14.d.mts} +6 -0
- package/dist/user-CcXq-zoL.mjs +154 -0
- package/dist/utils-D2in-zwy.mjs +285 -0
- package/dist/{validate-BZ5wnLLp.mjs → validate-BJgA6TW_.mjs} +1 -1
- package/dist/{validate-IPf8n4Fj.d.mts → validate-JCZihRIa.d.mts} +3 -3
- package/dist/version-DH53KCQd.mjs +6 -0
- package/dist/widgets-B7Q_7bxN.mjs +104 -0
- package/dist/wordpress-slugs-BevajWrC.mjs +14 -0
- package/dist/zod-generator-DBVP8D0P.mjs +132 -0
- package/locals.d.ts +1 -6
- package/package.json +67 -11
- package/src/components/DinewayHead.astro +8 -4
- package/src/components/DinewayImage.astro +7 -5
- package/src/components/DinewayMedia.astro +9 -3
- package/src/components/Gallery.astro +5 -3
- package/src/components/Image.astro +5 -1
- package/src/components/InlinePortableTextEditor.tsx +68 -19
- package/dist/error-BmL6QipT.mjs +0 -30
- package/dist/search-DxopAWxs.mjs +0 -11200
- package/dist/version-BPz1imu2.mjs +0 -6
- package/src/astro/routes/PluginRegistry.tsx +0 -21
- package/src/astro/routes/api/admin/allowed-domains/[domain].ts +0 -112
- package/src/astro/routes/api/admin/allowed-domains/index.ts +0 -108
- package/src/astro/routes/api/admin/api-tokens/[id].ts +0 -44
- package/src/astro/routes/api/admin/api-tokens/index.ts +0 -90
- package/src/astro/routes/api/admin/briefing.ts +0 -76
- package/src/astro/routes/api/admin/bylines/[id]/index.ts +0 -90
- package/src/astro/routes/api/admin/bylines/index.ts +0 -74
- package/src/astro/routes/api/admin/comments/[id]/status.ts +0 -120
- package/src/astro/routes/api/admin/comments/[id].ts +0 -64
- package/src/astro/routes/api/admin/comments/bulk.ts +0 -42
- package/src/astro/routes/api/admin/comments/counts.ts +0 -30
- package/src/astro/routes/api/admin/comments/index.ts +0 -46
- package/src/astro/routes/api/admin/context/[id]/history.ts +0 -35
- package/src/astro/routes/api/admin/context/[id]/index.ts +0 -35
- package/src/astro/routes/api/admin/context/[id]/review.ts +0 -57
- package/src/astro/routes/api/admin/context/[id]/supersede.ts +0 -58
- package/src/astro/routes/api/admin/context/diff.ts +0 -35
- package/src/astro/routes/api/admin/context/index.ts +0 -69
- package/src/astro/routes/api/admin/context/stale.ts +0 -35
- package/src/astro/routes/api/admin/hitl-requests/[id]/index.ts +0 -38
- package/src/astro/routes/api/admin/hitl-requests/[id]/resolve.ts +0 -54
- package/src/astro/routes/api/admin/hitl-requests/index.ts +0 -38
- package/src/astro/routes/api/admin/hooks/exclusive/[hookName].ts +0 -132
- package/src/astro/routes/api/admin/hooks/exclusive/index.ts +0 -51
- package/src/astro/routes/api/admin/oauth-clients/[id].ts +0 -137
- package/src/astro/routes/api/admin/oauth-clients/index.ts +0 -95
- package/src/astro/routes/api/admin/plugins/[id]/disable.ts +0 -91
- package/src/astro/routes/api/admin/plugins/[id]/enable.ts +0 -91
- package/src/astro/routes/api/admin/plugins/[id]/index.ts +0 -38
- package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +0 -98
- package/src/astro/routes/api/admin/plugins/[id]/update.ts +0 -154
- package/src/astro/routes/api/admin/plugins/index.ts +0 -32
- package/src/astro/routes/api/admin/plugins/marketplace/[id]/icon.ts +0 -62
- package/src/astro/routes/api/admin/plugins/marketplace/[id]/index.ts +0 -33
- package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +0 -135
- package/src/astro/routes/api/admin/plugins/marketplace/index.ts +0 -38
- package/src/astro/routes/api/admin/plugins/updates.ts +0 -28
- package/src/astro/routes/api/admin/review-requests/[id]/index.ts +0 -35
- package/src/astro/routes/api/admin/review-requests/[id]/resolve.ts +0 -52
- package/src/astro/routes/api/admin/review-requests/index.ts +0 -35
- package/src/astro/routes/api/admin/themes/marketplace/[id]/index.ts +0 -33
- package/src/astro/routes/api/admin/themes/marketplace/[id]/thumbnail.ts +0 -62
- package/src/astro/routes/api/admin/themes/marketplace/index.ts +0 -45
- package/src/astro/routes/api/admin/users/[id]/disable.ts +0 -72
- package/src/astro/routes/api/admin/users/[id]/enable.ts +0 -48
- package/src/astro/routes/api/admin/users/[id]/index.ts +0 -166
- package/src/astro/routes/api/admin/users/[id]/send-recovery.ts +0 -72
- package/src/astro/routes/api/admin/users/index.ts +0 -66
- package/src/astro/routes/api/auth/dev-bypass.ts +0 -139
- package/src/astro/routes/api/auth/invite/accept.ts +0 -52
- package/src/astro/routes/api/auth/invite/complete.ts +0 -86
- package/src/astro/routes/api/auth/invite/index.ts +0 -99
- package/src/astro/routes/api/auth/invite/register-options.ts +0 -73
- package/src/astro/routes/api/auth/logout.ts +0 -40
- package/src/astro/routes/api/auth/magic-link/send.ts +0 -90
- package/src/astro/routes/api/auth/magic-link/verify.ts +0 -71
- package/src/astro/routes/api/auth/me.ts +0 -60
- package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +0 -221
- package/src/astro/routes/api/auth/oauth/[provider].ts +0 -120
- package/src/astro/routes/api/auth/passkey/[id].ts +0 -124
- package/src/astro/routes/api/auth/passkey/index.ts +0 -54
- package/src/astro/routes/api/auth/passkey/options.ts +0 -85
- package/src/astro/routes/api/auth/passkey/register/options.ts +0 -88
- package/src/astro/routes/api/auth/passkey/register/verify.ts +0 -119
- package/src/astro/routes/api/auth/passkey/verify.ts +0 -72
- package/src/astro/routes/api/auth/signup/complete.ts +0 -87
- package/src/astro/routes/api/auth/signup/request.ts +0 -89
- package/src/astro/routes/api/auth/signup/verify.ts +0 -53
- package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +0 -310
- package/src/astro/routes/api/content/[collection]/[id]/compare.ts +0 -28
- package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +0 -68
- package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +0 -77
- package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +0 -42
- package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +0 -107
- package/src/astro/routes/api/content/[collection]/[id]/publish.ts +0 -100
- package/src/astro/routes/api/content/[collection]/[id]/restore.ts +0 -64
- package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +0 -31
- package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +0 -129
- package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +0 -143
- package/src/astro/routes/api/content/[collection]/[id]/translations.ts +0 -50
- package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +0 -69
- package/src/astro/routes/api/content/[collection]/[id].ts +0 -173
- package/src/astro/routes/api/content/[collection]/index.ts +0 -103
- package/src/astro/routes/api/content/[collection]/trash.ts +0 -33
- package/src/astro/routes/api/dashboard.ts +0 -32
- package/src/astro/routes/api/dev/emails.ts +0 -36
- package/src/astro/routes/api/health.ts +0 -54
- package/src/astro/routes/api/import/probe.ts +0 -47
- package/src/astro/routes/api/import/wordpress/analyze.ts +0 -523
- package/src/astro/routes/api/import/wordpress/execute.ts +0 -330
- package/src/astro/routes/api/import/wordpress/media.ts +0 -338
- package/src/astro/routes/api/import/wordpress/prepare.ts +0 -212
- package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +0 -425
- package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +0 -111
- package/src/astro/routes/api/import/wordpress-plugin/callback.ts +0 -58
- package/src/astro/routes/api/import/wordpress-plugin/execute.ts +0 -399
- package/src/astro/routes/api/manifest.ts +0 -75
- package/src/astro/routes/api/mcp.ts +0 -125
- package/src/astro/routes/api/media/[id]/confirm.ts +0 -93
- package/src/astro/routes/api/media/[id].ts +0 -145
- package/src/astro/routes/api/media/file/[...key].ts +0 -79
- package/src/astro/routes/api/media/providers/[providerId]/[itemId].ts +0 -91
- package/src/astro/routes/api/media/providers/[providerId]/index.ts +0 -111
- package/src/astro/routes/api/media/providers/index.ts +0 -30
- package/src/astro/routes/api/media/upload-url.ts +0 -146
- package/src/astro/routes/api/media.ts +0 -204
- package/src/astro/routes/api/menus/[name]/reorder.ts +0 -79
- package/src/astro/routes/api/menus/[name].ts +0 -145
- package/src/astro/routes/api/menus/index.ts +0 -91
- package/src/astro/routes/api/oauth/authorize.ts +0 -430
- package/src/astro/routes/api/oauth/device/authorize.ts +0 -45
- package/src/astro/routes/api/oauth/device/code.ts +0 -56
- package/src/astro/routes/api/oauth/device/token.ts +0 -70
- package/src/astro/routes/api/oauth/register.ts +0 -182
- package/src/astro/routes/api/oauth/token/refresh.ts +0 -38
- package/src/astro/routes/api/oauth/token/revoke.ts +0 -38
- package/src/astro/routes/api/oauth/token.ts +0 -195
- package/src/astro/routes/api/openapi.json.ts +0 -33
- package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +0 -109
- package/src/astro/routes/api/redirects/404s/index.ts +0 -72
- package/src/astro/routes/api/redirects/404s/summary.ts +0 -33
- package/src/astro/routes/api/redirects/[id].ts +0 -183
- package/src/astro/routes/api/redirects/index.ts +0 -100
- package/src/astro/routes/api/revisions/[revisionId]/index.ts +0 -29
- package/src/astro/routes/api/revisions/[revisionId]/restore.ts +0 -62
- package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +0 -104
- package/src/astro/routes/api/schema/collections/[slug]/fields/index.ts +0 -67
- package/src/astro/routes/api/schema/collections/[slug]/fields/reorder.ts +0 -45
- package/src/astro/routes/api/schema/collections/[slug]/index.ts +0 -107
- package/src/astro/routes/api/schema/collections/index.ts +0 -61
- package/src/astro/routes/api/schema/index.ts +0 -109
- package/src/astro/routes/api/schema/orphans/[slug].ts +0 -36
- package/src/astro/routes/api/schema/orphans/index.ts +0 -26
- package/src/astro/routes/api/search/enable.ts +0 -64
- package/src/astro/routes/api/search/index.ts +0 -52
- package/src/astro/routes/api/search/rebuild.ts +0 -72
- package/src/astro/routes/api/search/stats.ts +0 -35
- package/src/astro/routes/api/search/suggest.ts +0 -50
- package/src/astro/routes/api/sections/[slug].ts +0 -203
- package/src/astro/routes/api/sections/index.ts +0 -107
- package/src/astro/routes/api/settings/email.ts +0 -150
- package/src/astro/routes/api/settings.ts +0 -116
- package/src/astro/routes/api/setup/admin-verify.ts +0 -122
- package/src/astro/routes/api/setup/admin.ts +0 -104
- package/src/astro/routes/api/setup/dev-bypass.ts +0 -200
- package/src/astro/routes/api/setup/dev-reset.ts +0 -40
- package/src/astro/routes/api/setup/index.ts +0 -128
- package/src/astro/routes/api/setup/status.ts +0 -122
- package/src/astro/routes/api/snapshot.ts +0 -76
- package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +0 -232
- package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +0 -131
- package/src/astro/routes/api/taxonomies/index.ts +0 -114
- package/src/astro/routes/api/themes/preview.ts +0 -78
- package/src/astro/routes/api/typegen.ts +0 -114
- package/src/astro/routes/api/well-known/auth.ts +0 -71
- package/src/astro/routes/api/well-known/oauth-authorization-server.ts +0 -48
- package/src/astro/routes/api/well-known/oauth-protected-resource.ts +0 -39
- package/src/astro/routes/api/widget-areas/[name]/reorder.ts +0 -114
- package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +0 -213
- package/src/astro/routes/api/widget-areas/[name]/widgets.ts +0 -126
- package/src/astro/routes/api/widget-areas/[name].ts +0 -135
- package/src/astro/routes/api/widget-areas/index.ts +0 -149
- package/src/astro/routes/api/widget-components.ts +0 -22
- package/src/astro/routes/robots.txt.ts +0 -81
- package/src/astro/routes/sitemap-[collection].xml.ts +0 -104
- package/src/astro/routes/sitemap.xml.ts +0 -92
- /package/dist/{adapters-C2ypTrZZ.d.mts → adapters-BLDldpJg.d.mts} +0 -0
- /package/{src → dist}/astro/routes/admin.astro +0 -0
- /package/dist/{base64-F8-DUraK.mjs → base64-Cz-aU0X1.mjs} +0 -0
- /package/dist/{chunks--4F8ddV4.mjs → chunks-D_jVet6z.mjs} +0 -0
- /package/dist/{config-BXwuX8Bx.mjs → config-CAMFxGaV.mjs} +0 -0
- /package/dist/{db-errors-CEqD7qH9.mjs → db-errors-DKUg_NgF.mjs} +0 -0
- /package/dist/{default-VjJyuuG9.mjs → default-C3PZN-bz.mjs} +0 -0
- /package/dist/{load-Coc9HpHH.mjs → load-D-9NhLmF.mjs} +0 -0
- /package/dist/{mode-47goXBBK.mjs → mode-C80mAZQv.mjs} +0 -0
- /package/dist/{placeholder--wOi4TbO.d.mts → placeholder-CHkLckzK.d.mts} +0 -0
- /package/dist/{request-cache-Dk5qPSOx.mjs → request-cache-DHMRr2Lf.mjs} +0 -0
- /package/dist/{transaction-Cn2rjY78.mjs → transaction-x2tJQ-A1.mjs} +0 -0
- /package/dist/{transport-Wge_IzKl.d.mts → transport-6RefuBdV.d.mts} +0 -0
- /package/dist/{types-griIBQOQ.mjs → types-B9gKVOHk.mjs} +0 -0
- /package/dist/{types-CWbdtiux.d.mts → types-B9qVtiHb.d.mts} +0 -0
- /package/dist/{types-COeOq9nK.mjs → types-DL7Y8D_t.mjs} +0 -0
- /package/dist/{types-BzcUjoqg.d.mts → types-Djdp0cZO.d.mts} +0 -0
- /package/dist/{types-DOrVigru.d.mts → types-Du8jreyC.d.mts} +0 -0
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /_dineway/api/oauth/register
|
|
3
|
-
*
|
|
4
|
-
* RFC 7591 Dynamic Client Registration. Public, unauthenticated.
|
|
5
|
-
* MCP clients call this to register before starting the OAuth flow.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { APIRoute } from "astro";
|
|
9
|
-
|
|
10
|
-
import { apiError, handleError } from "#api/error.js";
|
|
11
|
-
import { handleOAuthClientCreate } from "#api/handlers/oauth-clients.js";
|
|
12
|
-
import {
|
|
13
|
-
disabledExperimentalSiteContextWorkflowScopes,
|
|
14
|
-
getExperimentalSiteContextWorkflowScopesDisabledMessage,
|
|
15
|
-
} from "#site-context/experimental-workflows.js";
|
|
16
|
-
|
|
17
|
-
export const prerender = false;
|
|
18
|
-
|
|
19
|
-
const OAUTH_REGISTRATION_HEADERS: HeadersInit = {
|
|
20
|
-
"Cache-Control": "no-store",
|
|
21
|
-
Pragma: "no-cache",
|
|
22
|
-
"Access-Control-Allow-Origin": "*",
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const OAUTH_PREFLIGHT_HEADERS: HeadersInit = {
|
|
26
|
-
"Access-Control-Allow-Origin": "*",
|
|
27
|
-
"Access-Control-Allow-Methods": "POST, OPTIONS",
|
|
28
|
-
"Access-Control-Allow-Headers": "Content-Type",
|
|
29
|
-
"Access-Control-Max-Age": "86400",
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const SUPPORTED_GRANT_TYPES = new Set([
|
|
33
|
-
"authorization_code",
|
|
34
|
-
"refresh_token",
|
|
35
|
-
"urn:ietf:params:oauth:grant-type:device_code",
|
|
36
|
-
]);
|
|
37
|
-
const SUPPORTED_RESPONSE_TYPES = new Set(["code"]);
|
|
38
|
-
|
|
39
|
-
function registrationError(description: string, status = 400): Response {
|
|
40
|
-
return Response.json(
|
|
41
|
-
{
|
|
42
|
-
error: "invalid_client_metadata",
|
|
43
|
-
error_description: description,
|
|
44
|
-
},
|
|
45
|
-
{ status, headers: OAUTH_REGISTRATION_HEADERS },
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
50
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function isStringArray(value: unknown): value is string[] {
|
|
54
|
-
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function parseScope(value: unknown): string[] | Response | undefined {
|
|
58
|
-
if (value === undefined) return undefined;
|
|
59
|
-
if (typeof value === "string") {
|
|
60
|
-
const scopes = value.split(" ").filter(Boolean);
|
|
61
|
-
return scopes.length > 0 ? scopes : undefined;
|
|
62
|
-
}
|
|
63
|
-
if (isStringArray(value)) {
|
|
64
|
-
const scopes = value.filter(Boolean);
|
|
65
|
-
return scopes.length > 0 ? scopes : undefined;
|
|
66
|
-
}
|
|
67
|
-
return registrationError("scope must be a string or array of strings");
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function parseSupportedStringArray(
|
|
71
|
-
value: unknown,
|
|
72
|
-
field: string,
|
|
73
|
-
supported: ReadonlySet<string>,
|
|
74
|
-
): string[] | Response | undefined {
|
|
75
|
-
if (value === undefined) return undefined;
|
|
76
|
-
if (!isStringArray(value)) {
|
|
77
|
-
return registrationError(`${field} must be an array of strings`);
|
|
78
|
-
}
|
|
79
|
-
const invalidValue = value.find((item) => !supported.has(item));
|
|
80
|
-
if (invalidValue) {
|
|
81
|
-
return registrationError(`${field} contains unsupported value: ${invalidValue}`);
|
|
82
|
-
}
|
|
83
|
-
return value;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export const OPTIONS: APIRoute = () => {
|
|
87
|
-
return new Response(null, { status: 204, headers: OAUTH_PREFLIGHT_HEADERS });
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
export const POST: APIRoute = async ({ request, locals }) => {
|
|
91
|
-
const { dineway } = locals;
|
|
92
|
-
|
|
93
|
-
if (!dineway?.db) {
|
|
94
|
-
return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
try {
|
|
98
|
-
let body: unknown;
|
|
99
|
-
try {
|
|
100
|
-
body = await request.json();
|
|
101
|
-
} catch {
|
|
102
|
-
return registrationError("Request body must be valid JSON");
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (!isRecord(body)) {
|
|
106
|
-
return registrationError("Request body must be a JSON object");
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (!isStringArray(body.redirect_uris) || body.redirect_uris.length === 0) {
|
|
110
|
-
return registrationError("redirect_uris must be a non-empty array of strings");
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
body.token_endpoint_auth_method !== undefined &&
|
|
115
|
-
body.token_endpoint_auth_method !== "none"
|
|
116
|
-
) {
|
|
117
|
-
return registrationError("Only token_endpoint_auth_method=none is supported");
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const grantTypes = parseSupportedStringArray(
|
|
121
|
-
body.grant_types,
|
|
122
|
-
"grant_types",
|
|
123
|
-
SUPPORTED_GRANT_TYPES,
|
|
124
|
-
);
|
|
125
|
-
if (grantTypes instanceof Response) {
|
|
126
|
-
return grantTypes;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const responseTypes = parseSupportedStringArray(
|
|
130
|
-
body.response_types,
|
|
131
|
-
"response_types",
|
|
132
|
-
SUPPORTED_RESPONSE_TYPES,
|
|
133
|
-
);
|
|
134
|
-
if (responseTypes instanceof Response) {
|
|
135
|
-
return responseTypes;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const scopes = parseScope(body.scope);
|
|
139
|
-
if (scopes instanceof Response) {
|
|
140
|
-
return scopes;
|
|
141
|
-
}
|
|
142
|
-
if (scopes) {
|
|
143
|
-
const disabledWorkflowScopes = disabledExperimentalSiteContextWorkflowScopes(scopes);
|
|
144
|
-
if (disabledWorkflowScopes.length > 0) {
|
|
145
|
-
return registrationError(getExperimentalSiteContextWorkflowScopesDisabledMessage());
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const clientId = crypto.randomUUID();
|
|
150
|
-
const clientName =
|
|
151
|
-
typeof body.client_name === "string" && body.client_name
|
|
152
|
-
? body.client_name
|
|
153
|
-
: `dynamic-${clientId.slice(0, 8)}`;
|
|
154
|
-
|
|
155
|
-
const result = await handleOAuthClientCreate(dineway.db, {
|
|
156
|
-
id: clientId,
|
|
157
|
-
name: clientName,
|
|
158
|
-
redirectUris: body.redirect_uris,
|
|
159
|
-
scopes,
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
if (!result.success) {
|
|
163
|
-
return registrationError(result.error.message);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return Response.json(
|
|
167
|
-
{
|
|
168
|
-
client_id: result.data.id,
|
|
169
|
-
client_id_issued_at: Math.floor(new Date(result.data.createdAt).getTime() / 1000),
|
|
170
|
-
redirect_uris: result.data.redirectUris,
|
|
171
|
-
client_name: result.data.name,
|
|
172
|
-
grant_types: grantTypes ?? ["authorization_code", "refresh_token"],
|
|
173
|
-
response_types: responseTypes ?? ["code"],
|
|
174
|
-
token_endpoint_auth_method: "none",
|
|
175
|
-
scope: result.data.scopes ? result.data.scopes.join(" ") : undefined,
|
|
176
|
-
},
|
|
177
|
-
{ status: 201, headers: OAUTH_REGISTRATION_HEADERS },
|
|
178
|
-
);
|
|
179
|
-
} catch (error) {
|
|
180
|
-
return handleError(error, "Failed to register OAuth client", "CLIENT_REGISTER_ERROR");
|
|
181
|
-
}
|
|
182
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /_dineway/api/oauth/token/refresh
|
|
3
|
-
*
|
|
4
|
-
* Exchange a refresh token for a new access token.
|
|
5
|
-
* This is an unauthenticated endpoint (the caller presents the refresh token).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { APIRoute } from "astro";
|
|
9
|
-
import { z } from "zod";
|
|
10
|
-
|
|
11
|
-
import { apiError, handleError, unwrapResult } from "#api/error.js";
|
|
12
|
-
import { handleTokenRefresh } from "#api/handlers/device-flow.js";
|
|
13
|
-
import { isParseError, parseBody } from "#api/parse.js";
|
|
14
|
-
|
|
15
|
-
export const prerender = false;
|
|
16
|
-
|
|
17
|
-
const refreshSchema = z.object({
|
|
18
|
-
refresh_token: z.string().min(1),
|
|
19
|
-
grant_type: z.string().min(1),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export const POST: APIRoute = async ({ request, locals }) => {
|
|
23
|
-
const { dineway } = locals;
|
|
24
|
-
|
|
25
|
-
if (!dineway?.db) {
|
|
26
|
-
return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
const body = await parseBody(request, refreshSchema);
|
|
31
|
-
if (isParseError(body)) return body;
|
|
32
|
-
|
|
33
|
-
const result = await handleTokenRefresh(dineway.db, body);
|
|
34
|
-
return unwrapResult(result);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return handleError(error, "Failed to refresh token", "TOKEN_REFRESH_ERROR");
|
|
37
|
-
}
|
|
38
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /_dineway/api/oauth/token/revoke
|
|
3
|
-
*
|
|
4
|
-
* Revoke an access or refresh token (RFC 7009).
|
|
5
|
-
* Always returns 200, even for invalid tokens.
|
|
6
|
-
* This is an unauthenticated endpoint (the caller presents the token to revoke).
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { APIRoute } from "astro";
|
|
10
|
-
import { z } from "zod";
|
|
11
|
-
|
|
12
|
-
import { apiError, handleError, unwrapResult } from "#api/error.js";
|
|
13
|
-
import { handleTokenRevoke } from "#api/handlers/device-flow.js";
|
|
14
|
-
import { isParseError, parseBody } from "#api/parse.js";
|
|
15
|
-
|
|
16
|
-
export const prerender = false;
|
|
17
|
-
|
|
18
|
-
const revokeSchema = z.object({
|
|
19
|
-
token: z.string().min(1),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export const POST: APIRoute = async ({ request, locals }) => {
|
|
23
|
-
const { dineway } = locals;
|
|
24
|
-
|
|
25
|
-
if (!dineway?.db) {
|
|
26
|
-
return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
const body = await parseBody(request, revokeSchema);
|
|
31
|
-
if (isParseError(body)) return body;
|
|
32
|
-
|
|
33
|
-
const result = await handleTokenRevoke(dineway.db, body);
|
|
34
|
-
return unwrapResult(result);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return handleError(error, "Failed to revoke token", "TOKEN_REVOKE_ERROR");
|
|
37
|
-
}
|
|
38
|
-
};
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* POST /_dineway/api/oauth/token
|
|
3
|
-
*
|
|
4
|
-
* Unified token endpoint per OAuth 2.1. Routes by `grant_type`:
|
|
5
|
-
* - authorization_code: Authorization Code + PKCE exchange
|
|
6
|
-
* - urn:ietf:params:oauth:grant-type:device_code: Device Flow
|
|
7
|
-
* - refresh_token: Token refresh
|
|
8
|
-
*
|
|
9
|
-
* Accepts both application/x-www-form-urlencoded (spec-standard) and
|
|
10
|
-
* application/json (for backwards compatibility with existing clients).
|
|
11
|
-
*
|
|
12
|
-
* This is an unauthenticated endpoint — callers present tokens/codes
|
|
13
|
-
* instead of session cookies.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import type { APIRoute } from "astro";
|
|
17
|
-
import { z } from "zod";
|
|
18
|
-
|
|
19
|
-
import { apiError, handleError } from "#api/error.js";
|
|
20
|
-
import { handleDeviceTokenExchange, handleTokenRefresh } from "#api/handlers/device-flow.js";
|
|
21
|
-
import { handleAuthorizationCodeExchange } from "#api/handlers/oauth-authorization.js";
|
|
22
|
-
|
|
23
|
-
export const prerender = false;
|
|
24
|
-
|
|
25
|
-
const OAUTH_TOKEN_HEADERS: HeadersInit = {
|
|
26
|
-
"Content-Type": "application/json",
|
|
27
|
-
"Cache-Control": "no-store",
|
|
28
|
-
Pragma: "no-cache",
|
|
29
|
-
"Access-Control-Allow-Origin": "*",
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const OAUTH_PREFLIGHT_HEADERS: HeadersInit = {
|
|
33
|
-
"Access-Control-Allow-Origin": "*",
|
|
34
|
-
"Access-Control-Allow-Methods": "POST, OPTIONS",
|
|
35
|
-
"Access-Control-Allow-Headers": "Content-Type",
|
|
36
|
-
"Access-Control-Max-Age": "86400",
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Parse helpers
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Parse the request body from either form-encoded or JSON.
|
|
45
|
-
* OAuth 2.1 mandates form-encoded, but we accept both.
|
|
46
|
-
*/
|
|
47
|
-
async function parseTokenBody(request: Request): Promise<Record<string, string>> {
|
|
48
|
-
const contentType = request.headers.get("content-type") ?? "";
|
|
49
|
-
|
|
50
|
-
if (contentType.includes("application/x-www-form-urlencoded")) {
|
|
51
|
-
const text = await request.text();
|
|
52
|
-
const params = new URLSearchParams(text);
|
|
53
|
-
const result: Record<string, string> = {};
|
|
54
|
-
for (const [key, value] of params) {
|
|
55
|
-
result[key] = value;
|
|
56
|
-
}
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Fallback: try JSON
|
|
61
|
-
try {
|
|
62
|
-
const json = Object(await request.json()) as Record<string, unknown>;
|
|
63
|
-
const result: Record<string, string> = {};
|
|
64
|
-
for (const [key, value] of Object.entries(json)) {
|
|
65
|
-
if (typeof value === "string") {
|
|
66
|
-
result[key] = value;
|
|
67
|
-
} else if (typeof value === "number") {
|
|
68
|
-
result[key] = String(value);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return result;
|
|
72
|
-
} catch {
|
|
73
|
-
return {};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// ---------------------------------------------------------------------------
|
|
78
|
-
// Schemas
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
|
-
|
|
81
|
-
const authCodeSchema = z.object({
|
|
82
|
-
grant_type: z.literal("authorization_code"),
|
|
83
|
-
code: z.string().min(1),
|
|
84
|
-
redirect_uri: z.string().min(1),
|
|
85
|
-
client_id: z.string().min(1),
|
|
86
|
-
code_verifier: z.string().min(43).max(128),
|
|
87
|
-
resource: z.string().optional(),
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
const deviceCodeSchema = z.object({
|
|
91
|
-
grant_type: z.literal("urn:ietf:params:oauth:grant-type:device_code"),
|
|
92
|
-
device_code: z.string().min(1),
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const refreshSchema = z.object({
|
|
96
|
-
grant_type: z.literal("refresh_token"),
|
|
97
|
-
refresh_token: z.string().min(1),
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
// Handler
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
103
|
-
|
|
104
|
-
export const OPTIONS: APIRoute = () => {
|
|
105
|
-
return new Response(null, { status: 204, headers: OAUTH_PREFLIGHT_HEADERS });
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
export const POST: APIRoute = async ({ request, locals }) => {
|
|
109
|
-
const { dineway } = locals;
|
|
110
|
-
|
|
111
|
-
if (!dineway?.db) {
|
|
112
|
-
return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
try {
|
|
116
|
-
const body = await parseTokenBody(request);
|
|
117
|
-
const grantType = body.grant_type;
|
|
118
|
-
|
|
119
|
-
if (!grantType) {
|
|
120
|
-
return oauthError("invalid_request", "grant_type is required", 400);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
switch (grantType) {
|
|
124
|
-
case "authorization_code": {
|
|
125
|
-
const parsed = authCodeSchema.safeParse(body);
|
|
126
|
-
if (!parsed.success) {
|
|
127
|
-
return oauthError("invalid_request", formatZodError(parsed.error), 400);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const result = await handleAuthorizationCodeExchange(dineway.db, parsed.data);
|
|
131
|
-
if (!result.success) {
|
|
132
|
-
const err = result.error ?? { code: "unknown", message: "Unknown error" };
|
|
133
|
-
return oauthError(err.code, err.message, 400);
|
|
134
|
-
}
|
|
135
|
-
return oauthSuccess(result.data);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
case "urn:ietf:params:oauth:grant-type:device_code": {
|
|
139
|
-
const parsed = deviceCodeSchema.safeParse(body);
|
|
140
|
-
if (!parsed.success) {
|
|
141
|
-
return oauthError("invalid_request", formatZodError(parsed.error), 400);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const result = await handleDeviceTokenExchange(dineway.db, parsed.data);
|
|
145
|
-
if (!result.success) {
|
|
146
|
-
const err = result.error ?? { code: "unknown", message: "Unknown error" };
|
|
147
|
-
// RFC 8628 requires specific error format
|
|
148
|
-
if (result.deviceFlowError) {
|
|
149
|
-
return oauthError(result.deviceFlowError, err.message, 400);
|
|
150
|
-
}
|
|
151
|
-
return oauthError(err.code, err.message, 400);
|
|
152
|
-
}
|
|
153
|
-
return oauthSuccess(result.data);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
case "refresh_token": {
|
|
157
|
-
const parsed = refreshSchema.safeParse(body);
|
|
158
|
-
if (!parsed.success) {
|
|
159
|
-
return oauthError("invalid_request", formatZodError(parsed.error), 400);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const result = await handleTokenRefresh(dineway.db, parsed.data);
|
|
163
|
-
if (!result.success) {
|
|
164
|
-
const err = result.error ?? { code: "unknown", message: "Unknown error" };
|
|
165
|
-
return oauthError(err.code, err.message, 400);
|
|
166
|
-
}
|
|
167
|
-
return oauthSuccess(result.data);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
default:
|
|
171
|
-
return oauthError("unsupported_grant_type", `Unsupported grant_type: ${grantType}`, 400);
|
|
172
|
-
}
|
|
173
|
-
} catch (error) {
|
|
174
|
-
return handleError(error, "Failed to process token request", "TOKEN_ERROR");
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
// ---------------------------------------------------------------------------
|
|
179
|
-
// OAuth response helpers (RFC 6749 §5.1 / §5.2)
|
|
180
|
-
// ---------------------------------------------------------------------------
|
|
181
|
-
|
|
182
|
-
function oauthSuccess(data: unknown): Response {
|
|
183
|
-
return Response.json(data, { headers: OAUTH_TOKEN_HEADERS });
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
function oauthError(error: string, description: string, status: number): Response {
|
|
187
|
-
return Response.json(
|
|
188
|
-
{ error, error_description: description },
|
|
189
|
-
{ status, headers: OAUTH_TOKEN_HEADERS },
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
function formatZodError(error: z.ZodError): string {
|
|
194
|
-
return error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
|
|
195
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAPI spec endpoint
|
|
3
|
-
*
|
|
4
|
-
* GET /_dineway/api/openapi.json
|
|
5
|
-
*
|
|
6
|
-
* Returns the generated OpenAPI 3.1 document. The spec is generated once
|
|
7
|
-
* and cached for the lifetime of the process.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { APIRoute } from "astro";
|
|
11
|
-
|
|
12
|
-
import { generateOpenApiDocument } from "../../../api/openapi/index.js";
|
|
13
|
-
|
|
14
|
-
export const prerender = false;
|
|
15
|
-
|
|
16
|
-
let cachedSpec: string | null = null;
|
|
17
|
-
|
|
18
|
-
export const GET: APIRoute = async ({ locals }) => {
|
|
19
|
-
if (!cachedSpec) {
|
|
20
|
-
const maxUploadSize = locals.dineway?.config.maxUploadSize;
|
|
21
|
-
const doc = generateOpenApiDocument({ maxUploadSize });
|
|
22
|
-
cachedSpec = JSON.stringify(doc);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return new Response(cachedSpec, {
|
|
26
|
-
status: 200,
|
|
27
|
-
headers: {
|
|
28
|
-
"Content-Type": "application/json",
|
|
29
|
-
"Cache-Control": "public, max-age=3600",
|
|
30
|
-
"Access-Control-Allow-Origin": "*",
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
};
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin API routes - dynamic handler for plugin-defined endpoints
|
|
3
|
-
*
|
|
4
|
-
* Routes are mounted at /_dineway/api/plugins/{pluginId}/*
|
|
5
|
-
* Plugins register routes like "POST /do-something" which becomes
|
|
6
|
-
* POST /_dineway/api/plugins/{pluginId}/do-something
|
|
7
|
-
*
|
|
8
|
-
* Routes marked as `public: true` skip authentication and CSRF checks.
|
|
9
|
-
* Private routes (the default) require authentication and appropriate permissions.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import type { APIRoute } from "astro";
|
|
13
|
-
|
|
14
|
-
import { requirePerm } from "#api/authorize.js";
|
|
15
|
-
import { apiError, apiSuccess } from "#api/error.js";
|
|
16
|
-
import { requireScope } from "#auth/scopes.js";
|
|
17
|
-
|
|
18
|
-
export const prerender = false;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Handle all methods by matching against plugin-defined routes
|
|
22
|
-
*/
|
|
23
|
-
const handleRequest: APIRoute = async ({ params, request, locals }) => {
|
|
24
|
-
const { dineway, user } = locals;
|
|
25
|
-
const pluginId = params.pluginId!;
|
|
26
|
-
const path = params.path || "";
|
|
27
|
-
const method = request.method.toUpperCase();
|
|
28
|
-
|
|
29
|
-
if (!dineway?.handlePluginApiRoute) {
|
|
30
|
-
return apiError("NOT_CONFIGURED", "Dineway is not configured", 500);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Resolve route metadata to decide auth before dispatch
|
|
34
|
-
const routeMeta = dineway.getPluginRouteMeta(pluginId, `/${path}`);
|
|
35
|
-
|
|
36
|
-
if (!routeMeta) {
|
|
37
|
-
return apiError("NOT_FOUND", "Plugin route not found", 404);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Public routes skip auth, CSRF, and scope checks entirely
|
|
41
|
-
if (!routeMeta.public) {
|
|
42
|
-
const isStateChangingMethod = !["GET", "HEAD", "OPTIONS"].includes(method);
|
|
43
|
-
|
|
44
|
-
// Private routes require authentication and permission checks
|
|
45
|
-
const permission = isStateChangingMethod ? "plugins:manage" : "plugins:read";
|
|
46
|
-
const denied = requirePerm(user, permission);
|
|
47
|
-
if (denied) return denied;
|
|
48
|
-
|
|
49
|
-
// Token scope enforcement — plugin routes require "admin" scope.
|
|
50
|
-
// Session auth is implicitly full-access (requireScope returns null).
|
|
51
|
-
const scopeError = requireScope(locals, "admin");
|
|
52
|
-
if (scopeError) return scopeError;
|
|
53
|
-
|
|
54
|
-
// Generic private plugin routes can carry arbitrary plugin-defined payloads,
|
|
55
|
-
// including secret-bearing config. Until route metadata can describe a
|
|
56
|
-
// redacted review payload plus immutable reviewed target, API-token writes
|
|
57
|
-
// stay blocked instead of being routed through generic HITL.
|
|
58
|
-
if (isStateChangingMethod && locals.authToken?.type === "api_token") {
|
|
59
|
-
return apiError(
|
|
60
|
-
"HITL_UNSUPPORTED",
|
|
61
|
-
"Private plugin routes do not yet support API-token writes without a reviewed redaction contract",
|
|
62
|
-
409,
|
|
63
|
-
{
|
|
64
|
-
reason: "review_contract_missing",
|
|
65
|
-
pluginId,
|
|
66
|
-
path: `/${path}`,
|
|
67
|
-
},
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// CSRF protection for state-changing requests on private routes.
|
|
72
|
-
// Plugin routes use soft auth in the middleware (user resolved but not required),
|
|
73
|
-
// so the middleware's CSRF check doesn't run. We enforce it here for private routes.
|
|
74
|
-
// Token-authed requests (which set tokenScopes) are exempt — tokens aren't
|
|
75
|
-
// ambient credentials like cookies.
|
|
76
|
-
if (
|
|
77
|
-
isStateChangingMethod &&
|
|
78
|
-
!locals.tokenScopes &&
|
|
79
|
-
request.headers.get("X-Dineway-Request") !== "1"
|
|
80
|
-
) {
|
|
81
|
-
return apiError("CSRF_REJECTED", "Missing required header", 403);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const result = await dineway.handlePluginApiRoute(pluginId, method, `/${path}`, request);
|
|
86
|
-
|
|
87
|
-
if (!result.success) {
|
|
88
|
-
const code = result.error?.code ?? "PLUGIN_ERROR";
|
|
89
|
-
// Pass through messages from known plugin errors (PluginRouteError),
|
|
90
|
-
// but mask internal errors (unhandled exceptions) to avoid leaking
|
|
91
|
-
// database errors, file paths, etc. from sandboxed plugins.
|
|
92
|
-
const message =
|
|
93
|
-
code === "INTERNAL_ERROR"
|
|
94
|
-
? "Plugin route error"
|
|
95
|
-
: (result.error?.message ?? "Plugin route error");
|
|
96
|
-
// PluginRouteError status is returned at the top level of the result
|
|
97
|
-
const status = (result as { status?: number }).status ?? (code === "NOT_FOUND" ? 404 : 400);
|
|
98
|
-
return apiError(code, message, status);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return apiSuccess(result.data);
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
// Export handlers for all HTTP methods
|
|
105
|
-
export const GET = handleRequest;
|
|
106
|
-
export const POST = handleRequest;
|
|
107
|
-
export const PUT = handleRequest;
|
|
108
|
-
export const PATCH = handleRequest;
|
|
109
|
-
export const DELETE = handleRequest;
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 404 log list and management endpoints
|
|
3
|
-
*
|
|
4
|
-
* GET /_dineway/api/redirects/404s - List 404 log entries
|
|
5
|
-
* DELETE /_dineway/api/redirects/404s - Clear all 404 log entries
|
|
6
|
-
* POST /_dineway/api/redirects/404s - Prune 404 log entries older than date
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { APIRoute } from "astro";
|
|
10
|
-
|
|
11
|
-
import { requirePerm } from "#api/authorize.js";
|
|
12
|
-
import { handleError, unwrapResult } from "#api/error.js";
|
|
13
|
-
import {
|
|
14
|
-
handleNotFoundClear,
|
|
15
|
-
handleNotFoundList,
|
|
16
|
-
handleNotFoundPrune,
|
|
17
|
-
} from "#api/handlers/redirects.js";
|
|
18
|
-
import { isParseError, parseBody, parseQuery } from "#api/parse.js";
|
|
19
|
-
import { notFoundListQuery, notFoundPruneBody } from "#api/schemas.js";
|
|
20
|
-
|
|
21
|
-
export const prerender = false;
|
|
22
|
-
|
|
23
|
-
export const GET: APIRoute = async ({ url, locals }) => {
|
|
24
|
-
const { dineway, user } = locals;
|
|
25
|
-
const db = dineway.db;
|
|
26
|
-
|
|
27
|
-
const denied = requirePerm(user, "redirects:read");
|
|
28
|
-
if (denied) return denied;
|
|
29
|
-
|
|
30
|
-
try {
|
|
31
|
-
const query = parseQuery(url, notFoundListQuery);
|
|
32
|
-
if (isParseError(query)) return query;
|
|
33
|
-
|
|
34
|
-
const result = await handleNotFoundList(db, query);
|
|
35
|
-
return unwrapResult(result);
|
|
36
|
-
} catch (error) {
|
|
37
|
-
return handleError(error, "Failed to fetch 404 log", "NOT_FOUND_LIST_ERROR");
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export const DELETE: APIRoute = async ({ locals }) => {
|
|
42
|
-
const { dineway, user } = locals;
|
|
43
|
-
const db = dineway.db;
|
|
44
|
-
|
|
45
|
-
const denied = requirePerm(user, "redirects:manage");
|
|
46
|
-
if (denied) return denied;
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
const result = await handleNotFoundClear(db);
|
|
50
|
-
return unwrapResult(result);
|
|
51
|
-
} catch (error) {
|
|
52
|
-
return handleError(error, "Failed to clear 404 log", "NOT_FOUND_CLEAR_ERROR");
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
export const POST: APIRoute = async ({ request, locals }) => {
|
|
57
|
-
const { dineway, user } = locals;
|
|
58
|
-
const db = dineway.db;
|
|
59
|
-
|
|
60
|
-
const denied = requirePerm(user, "redirects:manage");
|
|
61
|
-
if (denied) return denied;
|
|
62
|
-
|
|
63
|
-
try {
|
|
64
|
-
const body = await parseBody(request, notFoundPruneBody);
|
|
65
|
-
if (isParseError(body)) return body;
|
|
66
|
-
|
|
67
|
-
const result = await handleNotFoundPrune(db, body.olderThan);
|
|
68
|
-
return unwrapResult(result);
|
|
69
|
-
} catch (error) {
|
|
70
|
-
return handleError(error, "Failed to prune 404 log", "NOT_FOUND_PRUNE_ERROR");
|
|
71
|
-
}
|
|
72
|
-
};
|