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.
- package/LICENSE +9 -0
- 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 +96 -41
- 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-Hlm6g8Td.mjs +0 -11200
- package/dist/version-DxxaFHZ_.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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import "../../../../../context-types-C-LwdAxx.mjs";
|
|
2
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-DEGjx2Xw.mjs";
|
|
3
|
+
import { r as parseOptionalBody, t as isParseError } from "../../../../../parse-BeQXIt1U.mjs";
|
|
4
|
+
import { zt as mediaConfirmBody } from "../../../../../redirects-CqaxraTO.mjs";
|
|
5
|
+
import "../../../../../import-DD3f2jkc.mjs";
|
|
6
|
+
import "../../../../../api/schemas/index.mjs";
|
|
7
|
+
import { n as requirePerm, t as requireOwnerPerm } from "../../../../../authorize-BBj8C6Y8.mjs";
|
|
8
|
+
import { MediaRepository } from "dineway";
|
|
9
|
+
|
|
10
|
+
//#region src/astro/routes/api/media/[id]/confirm.ts
|
|
11
|
+
const prerender = false;
|
|
12
|
+
/**
|
|
13
|
+
* Add URL to media item (relative URL for portability)
|
|
14
|
+
*/
|
|
15
|
+
function addUrlToMedia(item) {
|
|
16
|
+
return {
|
|
17
|
+
...item,
|
|
18
|
+
url: `/_dineway/api/media/file/${item.storageKey}`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Confirm upload completion
|
|
23
|
+
*/
|
|
24
|
+
const POST = async ({ params, request, locals }) => {
|
|
25
|
+
const { dineway, user } = locals;
|
|
26
|
+
const { id } = params;
|
|
27
|
+
const denied = requirePerm(user, "media:upload");
|
|
28
|
+
if (denied) return denied;
|
|
29
|
+
if (!id) return apiError("INVALID_REQUEST", "Media ID is required", 400);
|
|
30
|
+
if (!dineway?.db) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
31
|
+
try {
|
|
32
|
+
const body = await parseOptionalBody(request, mediaConfirmBody, {});
|
|
33
|
+
if (isParseError(body)) return body;
|
|
34
|
+
const repo = new MediaRepository(dineway.db);
|
|
35
|
+
const existing = await repo.findById(id);
|
|
36
|
+
if (!existing) return apiError("NOT_FOUND", `Media item not found: ${id}`, 404);
|
|
37
|
+
if (existing.status !== "pending") return apiError("INVALID_STATE", `Media item is not pending: ${existing.status}`, 400);
|
|
38
|
+
const ownerDenied = requireOwnerPerm(user, existing.authorId ?? "", "media:edit_own", "media:edit_any");
|
|
39
|
+
if (ownerDenied) return ownerDenied;
|
|
40
|
+
if (dineway.storage) {
|
|
41
|
+
if (!await dineway.storage.exists(existing.storageKey)) {
|
|
42
|
+
await repo.markFailed(id);
|
|
43
|
+
return apiError("FILE_NOT_FOUND", "File was not uploaded to storage", 400);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const item = await repo.confirmUpload(id, {
|
|
47
|
+
size: body.size,
|
|
48
|
+
width: body.width,
|
|
49
|
+
height: body.height
|
|
50
|
+
});
|
|
51
|
+
if (!item) return apiError("CONFIRM_FAILED", "Failed to confirm upload", 500);
|
|
52
|
+
return apiSuccess({ item: addUrlToMedia(item) });
|
|
53
|
+
} catch (error) {
|
|
54
|
+
return handleError(error, "Failed to confirm upload", "CONFIRM_ERROR");
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
export { POST, prerender };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { APIRoute } from "astro";
|
|
2
|
+
|
|
3
|
+
//#region src/astro/routes/api/media/[id].d.ts
|
|
4
|
+
declare const prerender = false;
|
|
5
|
+
/**
|
|
6
|
+
* Get media item
|
|
7
|
+
*/
|
|
8
|
+
declare const GET: APIRoute;
|
|
9
|
+
/**
|
|
10
|
+
* Update media metadata
|
|
11
|
+
*
|
|
12
|
+
* Authors can edit their own media; editors+ can edit any.
|
|
13
|
+
*/
|
|
14
|
+
declare const PUT: APIRoute;
|
|
15
|
+
/**
|
|
16
|
+
* Delete media item
|
|
17
|
+
*
|
|
18
|
+
* Authors can delete their own media; editors+ can delete any.
|
|
19
|
+
*/
|
|
20
|
+
declare const DELETE: APIRoute;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { DELETE, GET, PUT, prerender };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import "../../../../context-types-C-LwdAxx.mjs";
|
|
2
|
+
import { a as unwrapResult, r as handleError, t as apiError } from "../../../../error-DEGjx2Xw.mjs";
|
|
3
|
+
import { n as parseBody, t as isParseError } from "../../../../parse-BeQXIt1U.mjs";
|
|
4
|
+
import { qt as mediaUpdateBody } from "../../../../redirects-CqaxraTO.mjs";
|
|
5
|
+
import "../../../../import-DD3f2jkc.mjs";
|
|
6
|
+
import "../../../../api/schemas/index.mjs";
|
|
7
|
+
import { n as requirePerm, t as requireOwnerPerm } from "../../../../authorize-BBj8C6Y8.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/astro/routes/api/media/[id].ts
|
|
10
|
+
const prerender = false;
|
|
11
|
+
/**
|
|
12
|
+
* Get media item
|
|
13
|
+
*/
|
|
14
|
+
const GET = async ({ params, locals }) => {
|
|
15
|
+
const { dineway, user } = locals;
|
|
16
|
+
const { id } = params;
|
|
17
|
+
const readDenied = requirePerm(user, "media:read");
|
|
18
|
+
if (readDenied) return readDenied;
|
|
19
|
+
if (!id) return apiError("INVALID_REQUEST", "Media ID required", 400);
|
|
20
|
+
if (!dineway?.handleMediaGet) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
21
|
+
return unwrapResult(await dineway.handleMediaGet(id));
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Update media metadata
|
|
25
|
+
*
|
|
26
|
+
* Authors can edit their own media; editors+ can edit any.
|
|
27
|
+
*/
|
|
28
|
+
const PUT = async ({ params, request, locals }) => {
|
|
29
|
+
const { dineway, user } = locals;
|
|
30
|
+
const { id } = params;
|
|
31
|
+
const editDenied = requirePerm(user, "media:edit_own");
|
|
32
|
+
if (editDenied) return editDenied;
|
|
33
|
+
if (!id) return apiError("INVALID_REQUEST", "Media ID required", 400);
|
|
34
|
+
if (!dineway?.handleMediaGet || !dineway?.handleMediaUpdate) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
35
|
+
try {
|
|
36
|
+
const getResult = await dineway.handleMediaGet(id);
|
|
37
|
+
if (!getResult.success || !getResult.data?.item) return apiError("NOT_FOUND", "Media item not found", 404);
|
|
38
|
+
const media = getResult.data.item;
|
|
39
|
+
const ownerDenied = requireOwnerPerm(user, media.authorId, "media:edit_own", "media:edit_any");
|
|
40
|
+
if (ownerDenied) return ownerDenied;
|
|
41
|
+
const body = await parseBody(request, mediaUpdateBody);
|
|
42
|
+
if (isParseError(body)) return body;
|
|
43
|
+
return unwrapResult(await dineway.handleMediaUpdate(id, {
|
|
44
|
+
alt: body.alt,
|
|
45
|
+
caption: body.caption,
|
|
46
|
+
width: body.width,
|
|
47
|
+
height: body.height
|
|
48
|
+
}));
|
|
49
|
+
} catch (error) {
|
|
50
|
+
return handleError(error, "Failed to update media", "MEDIA_UPDATE_ERROR");
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Delete media item
|
|
55
|
+
*
|
|
56
|
+
* Authors can delete their own media; editors+ can delete any.
|
|
57
|
+
*/
|
|
58
|
+
const DELETE = async ({ params, locals }) => {
|
|
59
|
+
const { dineway, user } = locals;
|
|
60
|
+
const { id } = params;
|
|
61
|
+
const deleteDenied = requirePerm(user, "media:delete_own");
|
|
62
|
+
if (deleteDenied) return deleteDenied;
|
|
63
|
+
if (!id) return apiError("INVALID_REQUEST", "Media ID required", 400);
|
|
64
|
+
if (!dineway?.handleMediaGet || !dineway?.handleMediaDelete) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
65
|
+
try {
|
|
66
|
+
const getResult = await dineway.handleMediaGet(id);
|
|
67
|
+
if (!getResult.success || !getResult.data?.item) return apiError("NOT_FOUND", "Media item not found", 404);
|
|
68
|
+
const media = getResult.data.item;
|
|
69
|
+
const ownerDenied = requireOwnerPerm(user, media.authorId, "media:delete_own", "media:delete_any");
|
|
70
|
+
if (ownerDenied) return ownerDenied;
|
|
71
|
+
if (dineway.storage) try {
|
|
72
|
+
await dineway.storage.delete(media.storageKey);
|
|
73
|
+
} catch {}
|
|
74
|
+
return unwrapResult(await dineway.handleMediaDelete(id));
|
|
75
|
+
} catch (error) {
|
|
76
|
+
return handleError(error, "Failed to delete media", "MEDIA_DELETE_ERROR");
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
//#endregion
|
|
81
|
+
export { DELETE, GET, PUT, prerender };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { r as handleError, t as apiError } from "../../../../../error-DEGjx2Xw.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/astro/routes/api/media/file/[...key].ts
|
|
4
|
+
const prerender = false;
|
|
5
|
+
/**
|
|
6
|
+
* Content types that are safe to display inline (simple raster/vector images, video, audio).
|
|
7
|
+
* Everything else gets Content-Disposition: attachment to prevent script execution.
|
|
8
|
+
*/
|
|
9
|
+
const SAFE_INLINE_TYPES = new Set([
|
|
10
|
+
"image/jpeg",
|
|
11
|
+
"image/png",
|
|
12
|
+
"image/gif",
|
|
13
|
+
"image/webp",
|
|
14
|
+
"image/avif",
|
|
15
|
+
"image/x-icon",
|
|
16
|
+
"video/mp4",
|
|
17
|
+
"video/webm",
|
|
18
|
+
"audio/mpeg",
|
|
19
|
+
"audio/wav",
|
|
20
|
+
"audio/ogg"
|
|
21
|
+
]);
|
|
22
|
+
const GET = async ({ params, locals }) => {
|
|
23
|
+
const { key } = params;
|
|
24
|
+
const { dineway } = locals;
|
|
25
|
+
if (!key) return apiError("NOT_FOUND", "File not found", 404);
|
|
26
|
+
if (!dineway?.storage) return apiError("NOT_CONFIGURED", "Storage not configured", 500);
|
|
27
|
+
try {
|
|
28
|
+
const result = await dineway.storage.download(key);
|
|
29
|
+
const headers = {
|
|
30
|
+
"Content-Type": result.contentType,
|
|
31
|
+
"Cache-Control": "public, max-age=31536000, immutable",
|
|
32
|
+
"X-Content-Type-Options": "nosniff",
|
|
33
|
+
"Content-Security-Policy": "sandbox; default-src 'none'; img-src 'self'; style-src 'unsafe-inline'"
|
|
34
|
+
};
|
|
35
|
+
if (result.size) headers["Content-Length"] = String(result.size);
|
|
36
|
+
if (SAFE_INLINE_TYPES.has(result.contentType)) headers["Content-Disposition"] = "inline";
|
|
37
|
+
else headers["Content-Disposition"] = "attachment";
|
|
38
|
+
return new Response(result.body, {
|
|
39
|
+
status: 200,
|
|
40
|
+
headers
|
|
41
|
+
});
|
|
42
|
+
} catch (error) {
|
|
43
|
+
if (error instanceof Error && (error.message.includes("not found") || error.message.includes("NOT_FOUND"))) return apiError("NOT_FOUND", "File not found", 404);
|
|
44
|
+
return handleError(error, "Failed to serve file", "FILE_SERVE_ERROR");
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { GET, prerender };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { APIRoute } from "astro";
|
|
2
|
+
|
|
3
|
+
//#region src/astro/routes/api/media/providers/[providerId]/[itemId].d.ts
|
|
4
|
+
declare const prerender = false;
|
|
5
|
+
/**
|
|
6
|
+
* Get a single media item from a provider
|
|
7
|
+
*/
|
|
8
|
+
declare const GET: APIRoute;
|
|
9
|
+
/**
|
|
10
|
+
* Delete a media item from a provider
|
|
11
|
+
*/
|
|
12
|
+
declare const DELETE: APIRoute;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { DELETE, GET, prerender };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../../error-DEGjx2Xw.mjs";
|
|
2
|
+
import { n as requirePerm } from "../../../../../../authorize-BBj8C6Y8.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/astro/routes/api/media/providers/[providerId]/[itemId].ts
|
|
5
|
+
const prerender = false;
|
|
6
|
+
/**
|
|
7
|
+
* Get a single media item from a provider
|
|
8
|
+
*/
|
|
9
|
+
const GET = async ({ params, locals }) => {
|
|
10
|
+
const { dineway, user } = locals;
|
|
11
|
+
const denied = requirePerm(user, "media:read");
|
|
12
|
+
if (denied) return denied;
|
|
13
|
+
const { providerId, itemId } = params;
|
|
14
|
+
if (!providerId || !itemId) return apiError("INVALID_REQUEST", "Provider ID and Item ID required", 400);
|
|
15
|
+
if (!dineway?.getMediaProvider) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
16
|
+
const provider = dineway.getMediaProvider(providerId);
|
|
17
|
+
if (!provider) return apiError("NOT_FOUND", `Provider "${providerId}" not found`, 404);
|
|
18
|
+
if (!provider.get) return apiError("NOT_SUPPORTED", `Provider "${providerId}" does not support getting individual items`, 400);
|
|
19
|
+
try {
|
|
20
|
+
const item = await provider.get(itemId);
|
|
21
|
+
if (!item) return apiError("NOT_FOUND", "Item not found", 404);
|
|
22
|
+
return apiSuccess({ item });
|
|
23
|
+
} catch (error) {
|
|
24
|
+
return handleError(error, "Failed to get item from provider", "PROVIDER_GET_ERROR");
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Delete a media item from a provider
|
|
29
|
+
*/
|
|
30
|
+
const DELETE = async ({ params, locals }) => {
|
|
31
|
+
const { dineway, user } = locals;
|
|
32
|
+
const denied = requirePerm(user, "media:delete_any");
|
|
33
|
+
if (denied) return denied;
|
|
34
|
+
const { providerId, itemId } = params;
|
|
35
|
+
if (!providerId || !itemId) return apiError("INVALID_REQUEST", "Provider ID and Item ID required", 400);
|
|
36
|
+
if (!dineway?.getMediaProvider) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
37
|
+
const provider = dineway.getMediaProvider(providerId);
|
|
38
|
+
if (!provider) return apiError("NOT_FOUND", `Provider "${providerId}" not found`, 404);
|
|
39
|
+
if (!provider.delete) return apiError("NOT_SUPPORTED", `Provider "${providerId}" does not support deletion`, 400);
|
|
40
|
+
try {
|
|
41
|
+
await provider.delete(itemId);
|
|
42
|
+
return apiSuccess({ deleted: true });
|
|
43
|
+
} catch (error) {
|
|
44
|
+
return handleError(error, "Failed to delete item from provider", "PROVIDER_DELETE_ERROR");
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { DELETE, GET, prerender };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { APIRoute } from "astro";
|
|
2
|
+
|
|
3
|
+
//#region src/astro/routes/api/media/providers/[providerId]/index.d.ts
|
|
4
|
+
declare const prerender = false;
|
|
5
|
+
/**
|
|
6
|
+
* List media from a specific provider
|
|
7
|
+
*/
|
|
8
|
+
declare const GET: APIRoute;
|
|
9
|
+
/**
|
|
10
|
+
* Upload media to a specific provider
|
|
11
|
+
*/
|
|
12
|
+
declare const POST: APIRoute;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { GET, POST, prerender };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../../error-DEGjx2Xw.mjs";
|
|
2
|
+
import { n as requirePerm } from "../../../../../../authorize-BBj8C6Y8.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/astro/routes/api/media/providers/[providerId]/index.ts
|
|
5
|
+
const prerender = false;
|
|
6
|
+
/**
|
|
7
|
+
* List media from a specific provider
|
|
8
|
+
*/
|
|
9
|
+
const GET = async ({ params, request, locals }) => {
|
|
10
|
+
const { dineway, user } = locals;
|
|
11
|
+
const { providerId } = params;
|
|
12
|
+
const readDenied = requirePerm(user, "media:read");
|
|
13
|
+
if (readDenied) return readDenied;
|
|
14
|
+
if (!providerId) return apiError("INVALID_REQUEST", "Provider ID required", 400);
|
|
15
|
+
if (!dineway?.getMediaProvider) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
16
|
+
const provider = dineway.getMediaProvider(providerId);
|
|
17
|
+
if (!provider) return apiError("NOT_FOUND", `Provider "${providerId}" not found`, 404);
|
|
18
|
+
const url = new URL(request.url);
|
|
19
|
+
const cursor = url.searchParams.get("cursor") || void 0;
|
|
20
|
+
const rawLimit = url.searchParams.get("limit");
|
|
21
|
+
const limit = rawLimit ? Math.max(1, Math.min(parseInt(rawLimit, 10) || 50, 100)) : void 0;
|
|
22
|
+
const query = url.searchParams.get("query") || void 0;
|
|
23
|
+
const mimeType = url.searchParams.get("mimeType") || void 0;
|
|
24
|
+
try {
|
|
25
|
+
const result = await provider.list({
|
|
26
|
+
cursor,
|
|
27
|
+
limit,
|
|
28
|
+
query,
|
|
29
|
+
mimeType
|
|
30
|
+
});
|
|
31
|
+
return apiSuccess({
|
|
32
|
+
items: result.items,
|
|
33
|
+
nextCursor: result.nextCursor
|
|
34
|
+
});
|
|
35
|
+
} catch (error) {
|
|
36
|
+
return handleError(error, "Failed to list media from provider", "PROVIDER_LIST_ERROR");
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Upload media to a specific provider
|
|
41
|
+
*/
|
|
42
|
+
const POST = async ({ params, request, locals }) => {
|
|
43
|
+
const { dineway, user } = locals;
|
|
44
|
+
const { providerId } = params;
|
|
45
|
+
const uploadDenied = requirePerm(user, "media:upload");
|
|
46
|
+
if (uploadDenied) return uploadDenied;
|
|
47
|
+
if (!providerId) return apiError("INVALID_REQUEST", "Provider ID required", 400);
|
|
48
|
+
if (!dineway?.getMediaProvider) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
49
|
+
const provider = dineway.getMediaProvider(providerId);
|
|
50
|
+
if (!provider) return apiError("NOT_FOUND", `Provider "${providerId}" not found`, 404);
|
|
51
|
+
if (!provider.upload) return apiError("NOT_SUPPORTED", `Provider "${providerId}" does not support uploads`, 400);
|
|
52
|
+
try {
|
|
53
|
+
const formData = await request.formData();
|
|
54
|
+
const fileEntry = formData.get("file");
|
|
55
|
+
const file = fileEntry instanceof File ? fileEntry : null;
|
|
56
|
+
const altEntry = formData.get("alt");
|
|
57
|
+
const alt = typeof altEntry === "string" ? altEntry : null;
|
|
58
|
+
if (!file) return apiError("NO_FILE", "No file provided", 400);
|
|
59
|
+
const maxSize = dineway.config?.maxUploadSize ?? 50 * 1024 * 1024;
|
|
60
|
+
if (file.size > maxSize) return apiError("FILE_TOO_LARGE", `File exceeds maximum size of ${Math.round(maxSize / 1024 / 1024)}MB`, 413);
|
|
61
|
+
return apiSuccess({ item: await provider.upload({
|
|
62
|
+
file,
|
|
63
|
+
filename: file.name,
|
|
64
|
+
alt: alt || void 0
|
|
65
|
+
}) }, 201);
|
|
66
|
+
} catch (error) {
|
|
67
|
+
return handleError(error, "Failed to upload to provider", "PROVIDER_UPLOAD_ERROR");
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
export { GET, POST, prerender };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { n as apiSuccess, t as apiError } from "../../../../../error-DEGjx2Xw.mjs";
|
|
2
|
+
import { n as requirePerm } from "../../../../../authorize-BBj8C6Y8.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/astro/routes/api/media/providers/index.ts
|
|
5
|
+
const prerender = false;
|
|
6
|
+
/**
|
|
7
|
+
* List all configured media providers
|
|
8
|
+
*/
|
|
9
|
+
const GET = async ({ locals }) => {
|
|
10
|
+
const { dineway, user } = locals;
|
|
11
|
+
const denied = requirePerm(user, "media:read");
|
|
12
|
+
if (denied) return denied;
|
|
13
|
+
if (!dineway?.getMediaProviderList) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
14
|
+
return apiSuccess({ items: dineway.getMediaProviderList() });
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { GET, prerender };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { APIRoute } from "astro";
|
|
2
|
+
|
|
3
|
+
//#region src/astro/routes/api/media/upload-url.d.ts
|
|
4
|
+
declare const prerender = false;
|
|
5
|
+
/**
|
|
6
|
+
* Get a signed upload URL for direct-to-storage upload
|
|
7
|
+
*/
|
|
8
|
+
declare const POST: APIRoute;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { POST, prerender };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import "../../../../context-types-C-LwdAxx.mjs";
|
|
2
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../error-DEGjx2Xw.mjs";
|
|
3
|
+
import { n as parseBody, t as isParseError } from "../../../../parse-BeQXIt1U.mjs";
|
|
4
|
+
import { Jt as mediaUploadUrlBody, Lt as DEFAULT_MAX_UPLOAD_SIZE } from "../../../../redirects-CqaxraTO.mjs";
|
|
5
|
+
import "../../../../import-DD3f2jkc.mjs";
|
|
6
|
+
import "../../../../api/schemas/index.mjs";
|
|
7
|
+
import { n as requirePerm } from "../../../../authorize-BBj8C6Y8.mjs";
|
|
8
|
+
import { ulid } from "ulidx";
|
|
9
|
+
import * as path from "node:path";
|
|
10
|
+
import { MediaRepository } from "dineway";
|
|
11
|
+
|
|
12
|
+
//#region src/astro/routes/api/media/upload-url.ts
|
|
13
|
+
/**
|
|
14
|
+
* Media upload URL endpoint
|
|
15
|
+
*
|
|
16
|
+
* POST /_dineway/api/media/upload-url
|
|
17
|
+
*
|
|
18
|
+
* Returns a signed URL for direct upload to storage.
|
|
19
|
+
* Creates a pending media record that must be confirmed after upload.
|
|
20
|
+
*/
|
|
21
|
+
const prerender = false;
|
|
22
|
+
/**
|
|
23
|
+
* Get a signed upload URL for direct-to-storage upload
|
|
24
|
+
*/
|
|
25
|
+
const POST = async ({ request, locals }) => {
|
|
26
|
+
const { dineway, user } = locals;
|
|
27
|
+
const denied = requirePerm(user, "media:upload");
|
|
28
|
+
if (denied) return denied;
|
|
29
|
+
if (!dineway?.storage) return apiError("NO_STORAGE", "Storage not configured. Signed URL uploads require S3-compatible storage.", 501);
|
|
30
|
+
if (!dineway?.db) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
31
|
+
try {
|
|
32
|
+
const maxUploadSize = dineway.config.maxUploadSize ?? DEFAULT_MAX_UPLOAD_SIZE;
|
|
33
|
+
if (!Number.isFinite(maxUploadSize) || maxUploadSize <= 0) return apiError("CONFIGURATION_ERROR", "Invalid maxUploadSize configuration. Expected a positive finite number.", 500);
|
|
34
|
+
const body = await parseBody(request, mediaUploadUrlBody(maxUploadSize));
|
|
35
|
+
if (isParseError(body)) return body;
|
|
36
|
+
if (![
|
|
37
|
+
"image/",
|
|
38
|
+
"video/",
|
|
39
|
+
"audio/",
|
|
40
|
+
"application/pdf"
|
|
41
|
+
].some((type) => body.contentType.startsWith(type))) return apiError("INVALID_TYPE", "File type not allowed", 400);
|
|
42
|
+
const repo = new MediaRepository(dineway.db);
|
|
43
|
+
if (body.contentHash) {
|
|
44
|
+
const existing = await repo.findByContentHash(body.contentHash);
|
|
45
|
+
if (existing) return apiSuccess({
|
|
46
|
+
existing: true,
|
|
47
|
+
mediaId: existing.id,
|
|
48
|
+
storageKey: existing.storageKey,
|
|
49
|
+
url: `/_dineway/api/media/file/${existing.storageKey}`
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const storageKey = `${ulid()}${path.extname(body.filename) || ""}`;
|
|
53
|
+
const mediaItem = await repo.createPending({
|
|
54
|
+
filename: body.filename,
|
|
55
|
+
mimeType: body.contentType,
|
|
56
|
+
size: body.size,
|
|
57
|
+
storageKey,
|
|
58
|
+
contentHash: body.contentHash,
|
|
59
|
+
authorId: user?.id
|
|
60
|
+
});
|
|
61
|
+
const signedUrl = await dineway.storage.getSignedUploadUrl({
|
|
62
|
+
key: storageKey,
|
|
63
|
+
contentType: body.contentType,
|
|
64
|
+
size: body.size,
|
|
65
|
+
expiresIn: 3600
|
|
66
|
+
});
|
|
67
|
+
return apiSuccess({
|
|
68
|
+
uploadUrl: signedUrl.url,
|
|
69
|
+
method: signedUrl.method,
|
|
70
|
+
headers: signedUrl.headers,
|
|
71
|
+
mediaId: mediaItem.id,
|
|
72
|
+
storageKey,
|
|
73
|
+
expiresAt: signedUrl.expiresAt
|
|
74
|
+
});
|
|
75
|
+
} catch (error) {
|
|
76
|
+
if (error instanceof Error && "code" in error && error.code === "NOT_SUPPORTED") return apiError("NOT_SUPPORTED", "Storage does not support signed upload URLs. Use direct upload.", 501);
|
|
77
|
+
return handleError(error, "Failed to generate upload URL", "UPLOAD_URL_ERROR");
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
export { POST, prerender };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { APIRoute } from "astro";
|
|
2
|
+
|
|
3
|
+
//#region src/astro/routes/api/media.d.ts
|
|
4
|
+
declare const prerender = false;
|
|
5
|
+
/**
|
|
6
|
+
* List media items
|
|
7
|
+
*/
|
|
8
|
+
declare const GET: APIRoute;
|
|
9
|
+
/**
|
|
10
|
+
* Upload media file
|
|
11
|
+
*
|
|
12
|
+
* Uses the configured storage adapter to store the file.
|
|
13
|
+
*/
|
|
14
|
+
declare const POST: APIRoute;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { GET, POST, prerender };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import "../../../base64-Cz-aU0X1.mjs";
|
|
2
|
+
import "../../../types-Bs6lTBBW.mjs";
|
|
3
|
+
import { t as MediaRepository } from "../../../media-_7Fxdu45.mjs";
|
|
4
|
+
import { t as generatePlaceholder } from "../../../placeholder-C2P5fKa4.mjs";
|
|
5
|
+
import "../../../context-types-C-LwdAxx.mjs";
|
|
6
|
+
import { t as computeContentHash } from "../../../hash-CDX7M0ze.mjs";
|
|
7
|
+
import { a as unwrapResult, n as apiSuccess, r as handleError, t as apiError } from "../../../error-DEGjx2Xw.mjs";
|
|
8
|
+
import { i as parseQuery, t as isParseError } from "../../../parse-BeQXIt1U.mjs";
|
|
9
|
+
import { Lt as DEFAULT_MAX_UPLOAD_SIZE, Rt as formatFileSize, Ut as mediaListQuery } from "../../../redirects-CqaxraTO.mjs";
|
|
10
|
+
import "../../../import-DD3f2jkc.mjs";
|
|
11
|
+
import "../../../api/schemas/index.mjs";
|
|
12
|
+
import { n as requirePerm } from "../../../authorize-BBj8C6Y8.mjs";
|
|
13
|
+
import { ulid } from "ulidx";
|
|
14
|
+
import * as path from "node:path";
|
|
15
|
+
|
|
16
|
+
//#region src/astro/routes/api/media.ts
|
|
17
|
+
/**
|
|
18
|
+
* Media list and upload endpoint
|
|
19
|
+
*
|
|
20
|
+
* GET /_dineway/api/media - List all media
|
|
21
|
+
* POST /_dineway/api/media - Upload new media (via configured storage adapter)
|
|
22
|
+
*/
|
|
23
|
+
const prerender = false;
|
|
24
|
+
/**
|
|
25
|
+
* Add URL to media items
|
|
26
|
+
* Uses relative URLs to ensure portability across deployments
|
|
27
|
+
*/
|
|
28
|
+
function addUrlToMedia(item) {
|
|
29
|
+
return {
|
|
30
|
+
...item,
|
|
31
|
+
url: `/_dineway/api/media/file/${item.storageKey}`
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* List media items
|
|
36
|
+
*/
|
|
37
|
+
const GET = async ({ request, locals }) => {
|
|
38
|
+
const { dineway, user } = locals;
|
|
39
|
+
const denied = requirePerm(user, "media:read");
|
|
40
|
+
if (denied) return denied;
|
|
41
|
+
if (!dineway?.handleMediaList) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
42
|
+
const query = parseQuery(new URL(request.url), mediaListQuery);
|
|
43
|
+
if (isParseError(query)) return query;
|
|
44
|
+
const result = await dineway.handleMediaList({
|
|
45
|
+
cursor: query.cursor,
|
|
46
|
+
limit: query.limit,
|
|
47
|
+
mimeType: query.mimeType
|
|
48
|
+
});
|
|
49
|
+
if (!result.success) return unwrapResult(result);
|
|
50
|
+
return apiSuccess({
|
|
51
|
+
items: result.data.items.map((item) => addUrlToMedia(item)),
|
|
52
|
+
nextCursor: result.data.nextCursor
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Upload media file
|
|
57
|
+
*
|
|
58
|
+
* Uses the configured storage adapter to store the file.
|
|
59
|
+
*/
|
|
60
|
+
const POST = async ({ request, locals }) => {
|
|
61
|
+
const { dineway, user } = locals;
|
|
62
|
+
const denied = requirePerm(user, "media:upload");
|
|
63
|
+
if (denied) return denied;
|
|
64
|
+
if (!dineway?.handleMediaCreate) return apiError("NOT_CONFIGURED", "Dineway is not initialized", 500);
|
|
65
|
+
if (!dineway?.storage) return apiError("NO_STORAGE", "Storage not configured", 500);
|
|
66
|
+
try {
|
|
67
|
+
const maxUploadSize = dineway.config.maxUploadSize ?? DEFAULT_MAX_UPLOAD_SIZE;
|
|
68
|
+
if (!Number.isFinite(maxUploadSize) || maxUploadSize <= 0) return apiError("CONFIGURATION_ERROR", "Invalid maxUploadSize configuration", 500);
|
|
69
|
+
const contentLength = request.headers.get("Content-Length");
|
|
70
|
+
if (contentLength && parseInt(contentLength, 10) > maxUploadSize) return apiError("PAYLOAD_TOO_LARGE", "Upload too large", 413);
|
|
71
|
+
const formData = await request.formData();
|
|
72
|
+
const fileEntry = formData.get("file");
|
|
73
|
+
const file = fileEntry instanceof File ? fileEntry : null;
|
|
74
|
+
if (!file) return apiError("NO_FILE", "No file provided", 400);
|
|
75
|
+
if (![
|
|
76
|
+
"image/",
|
|
77
|
+
"video/",
|
|
78
|
+
"audio/",
|
|
79
|
+
"application/pdf"
|
|
80
|
+
].some((type) => file.type.startsWith(type))) return apiError("INVALID_TYPE", "File type not allowed", 400);
|
|
81
|
+
if (file.size > maxUploadSize) return apiError("PAYLOAD_TOO_LARGE", `File exceeds maximum size of ${formatFileSize(maxUploadSize)}`, 413);
|
|
82
|
+
const buffer = new Uint8Array(await file.arrayBuffer());
|
|
83
|
+
const contentHash = await computeContentHash(buffer);
|
|
84
|
+
const existing = await new MediaRepository(dineway.db).findByContentHash(contentHash);
|
|
85
|
+
if (existing) return apiSuccess({
|
|
86
|
+
item: addUrlToMedia(existing),
|
|
87
|
+
deduplicated: true
|
|
88
|
+
});
|
|
89
|
+
const storageKey = `${ulid()}${path.extname(file.name) || ""}`;
|
|
90
|
+
await dineway.storage.upload({
|
|
91
|
+
key: storageKey,
|
|
92
|
+
body: buffer,
|
|
93
|
+
contentType: file.type
|
|
94
|
+
});
|
|
95
|
+
const widthEntry = formData.get("width");
|
|
96
|
+
const widthStr = typeof widthEntry === "string" ? widthEntry : null;
|
|
97
|
+
const heightEntry = formData.get("height");
|
|
98
|
+
const heightStr = typeof heightEntry === "string" ? heightEntry : null;
|
|
99
|
+
const width = widthStr ? parseInt(widthStr, 10) : void 0;
|
|
100
|
+
const height = heightStr ? parseInt(heightStr, 10) : void 0;
|
|
101
|
+
const thumbnailEntry = formData.get("thumbnail");
|
|
102
|
+
const thumbnail = thumbnailEntry instanceof File ? thumbnailEntry : null;
|
|
103
|
+
let placeholder = null;
|
|
104
|
+
if (file.type.startsWith("image/")) if (thumbnail) placeholder = await generatePlaceholder(new Uint8Array(await thumbnail.arrayBuffer()), thumbnail.type);
|
|
105
|
+
else {
|
|
106
|
+
const clientDims = width && height ? {
|
|
107
|
+
width,
|
|
108
|
+
height
|
|
109
|
+
} : void 0;
|
|
110
|
+
placeholder = await generatePlaceholder(buffer, file.type, clientDims);
|
|
111
|
+
}
|
|
112
|
+
const result = await dineway.handleMediaCreate({
|
|
113
|
+
filename: file.name,
|
|
114
|
+
mimeType: file.type,
|
|
115
|
+
size: file.size,
|
|
116
|
+
width,
|
|
117
|
+
height,
|
|
118
|
+
storageKey,
|
|
119
|
+
contentHash,
|
|
120
|
+
blurhash: placeholder?.blurhash,
|
|
121
|
+
dominantColor: placeholder?.dominantColor,
|
|
122
|
+
authorId: user?.id
|
|
123
|
+
});
|
|
124
|
+
if (!result.success) {
|
|
125
|
+
try {
|
|
126
|
+
await dineway.storage.delete(storageKey);
|
|
127
|
+
} catch {}
|
|
128
|
+
return unwrapResult(result);
|
|
129
|
+
}
|
|
130
|
+
return apiSuccess({ item: addUrlToMedia(result.data.item) }, 201);
|
|
131
|
+
} catch (error) {
|
|
132
|
+
return handleError(error, "Upload failed", "UPLOAD_ERROR");
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
//#endregion
|
|
137
|
+
export { GET, POST, prerender };
|