dineway 0.1.9 → 0.1.12
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-B4wp7CrU.mjs +540 -0
- package/dist/allowed-origins-C1AKK9AT.mjs +68 -0
- package/dist/api/route-utils.d.mts +42 -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-BR7Y0GBo.mjs +2704 -0
- package/dist/api-tokens-CPjC3zf8.mjs +3 -0
- package/dist/api-tokens-D7UjLbdt.mjs +153 -0
- package/dist/{apply-iVSqz2qs.mjs → apply-Bm5QgdrE.mjs} +15 -689
- package/dist/astro/index.d.mts +11 -6
- package/dist/astro/index.mjs +86 -11
- package/dist/astro/middleware/auth.d.mts +11 -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 +88 -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 +46 -0
- package/dist/astro/routes/api/admin/context/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +46 -0
- package/dist/astro/routes/api/admin/context/_id_/review.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +61 -0
- package/dist/astro/routes/api/admin/context/_id_/supersede.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +64 -0
- package/dist/astro/routes/api/admin/context/diff.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/diff.mjs +50 -0
- package/dist/astro/routes/api/admin/context/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/context/index.mjs +72 -0
- package/dist/astro/routes/api/admin/context/stale.d.mts +7 -0
- package/dist/astro/routes/api/admin/context/stale.mjs +50 -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 +52 -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 +68 -0
- package/dist/astro/routes/api/admin/hitl-requests/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +56 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +7 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +99 -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 +90 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +90 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +55 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +99 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +132 -0
- package/dist/astro/routes/api/admin/plugins/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/index.mjs +53 -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 +55 -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 +129 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +62 -0
- package/dist/astro/routes/api/admin/plugins/updates.d.mts +7 -0
- package/dist/astro/routes/api/admin/plugins/updates.mjs +53 -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 +98 -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 +55 -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 +71 -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 +93 -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 +198 -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 +156 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +21 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +290 -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 +269 -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 +2701 -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/dist/astro/routes/api/menus/_name_/items.mjs +165 -0
- package/dist/astro/routes/api/menus/_name_/reorder.d.mts +7 -0
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +78 -0
- package/dist/astro/routes/api/menus/_name_.d.mts +9 -0
- package/dist/astro/routes/api/menus/_name_.mjs +124 -0
- package/dist/astro/routes/api/menus/index.d.mts +8 -0
- package/dist/astro/routes/api/menus/index.mjs +85 -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 +153 -0
- package/dist/astro/routes/api/redirects/index.d.mts +8 -0
- package/dist/astro/routes/api/redirects/index.mjs +98 -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 +99 -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 +81 -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 +68 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +9 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +98 -0
- package/dist/astro/routes/api/schema/collections/index.d.mts +8 -0
- package/dist/astro/routes/api/schema/collections/index.mjs +78 -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 +59 -0
- package/dist/astro/routes/api/schema/orphans/index.d.mts +7 -0
- package/dist/astro/routes/api/schema/orphans/index.mjs +54 -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 +157 -0
- package/dist/astro/routes/api/sections/index.d.mts +8 -0
- package/dist/astro/routes/api/sections/index.mjs +100 -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 +102 -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 +190 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +14 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +114 -0
- package/dist/astro/routes/api/taxonomies/index.d.mts +14 -0
- package/dist/astro/routes/api/taxonomies/index.mjs +104 -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 +89 -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 +159 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +7 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +105 -0
- package/dist/astro/routes/api/widget-areas/_name_.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/_name_.mjs +100 -0
- package/dist/astro/routes/api/widget-areas/index.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/index.mjs +109 -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 +42 -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-DOZ3UCsP.mjs +13 -0
- package/dist/authorize-BAdbMCwC.mjs +36 -0
- package/dist/briefing-MVYe_Uyf.mjs +1294 -0
- package/dist/briefing-rty4O-wa.mjs +29 -0
- package/dist/{byline-OhH2dlRu.mjs → byline-naZxOPSa.mjs} +3 -3
- package/dist/{bylines-BGpD9_hy.mjs → bylines-C4LIBOOO.mjs} +20 -53
- package/dist/bylines-eVVCuOe4.d.mts +2023 -0
- package/dist/{cache-BdSY-gQN.mjs → cache-DEbQ13c9.mjs} +21 -11
- package/dist/challenge-store-DDTbisbf.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--BsZ9pqA.mjs +186 -0
- package/dist/components-BPknylYg.mjs +107 -0
- package/dist/{content-DWi4d0rT.mjs → content-CyLkb-qH.mjs} +33 -44
- package/dist/context-CNIkMzot.mjs +849 -0
- package/dist/context-DNfcm853.mjs +184 -0
- package/dist/context-route-helpers-MurhoxWF.mjs +45 -0
- package/dist/context-types-C-LwdAxx.mjs +23 -0
- package/dist/cron-CKxvBrRT.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-BGEH5jfn.mjs +487 -0
- package/dist/email-console-CuefUXfX.mjs +36 -0
- package/dist/entity-aliases-C0v-yNET.mjs +51 -0
- package/dist/error-BMUPwxgx.mjs +435 -0
- package/dist/escape-BRVaw1Ai.mjs +8 -0
- package/dist/experimental-workflows-C9X7yblQ.mjs +38 -0
- package/dist/fts-manager-B1pTNEG_.mjs +297 -0
- package/dist/hash-CDX7M0ze.mjs +32 -0
- package/dist/hitl-requests-ChT32Ilo.mjs +118 -0
- package/dist/hitl-route-helpers-CSit54Ru.mjs +96 -0
- package/dist/import-BHRLhXAn.mjs +1323 -0
- package/dist/import-CNcKWTbp.mjs +243 -0
- package/dist/index-CYfhYgXd.d.mts +227 -0
- package/dist/index-EUAWaIxW.d.mts +835 -0
- package/dist/index.d.mts +17 -11
- package/dist/index.mjs +63 -22
- package/dist/jsonld-D2gUY4kA.d.mts +141 -0
- package/dist/{loader-sMG4TZ-u.mjs → loader-PZnPxFLc.mjs} +42 -5
- package/dist/{manifest-schema-D1MSVnoI.mjs → manifest-schema-CgFJAp0H.mjs} +22 -10
- package/dist/media/index.d.mts +2 -1
- package/dist/media/index.mjs +2 -1
- package/dist/media/local-runtime.d.mts +12 -7
- package/dist/media/local-runtime.mjs +3 -3
- package/dist/{media-DMTr80Gv.mjs → media-_7Fxdu45.mjs} +1 -1
- package/dist/menus-DS3_5nWY.mjs +312 -0
- package/dist/menus-DYW_UHjv.mjs +256 -0
- package/dist/normalize-C49G_o1k.mjs +126 -0
- package/dist/oauth-authorization-DxGjiWKL.mjs +283 -0
- package/dist/oauth-clients-DxO_NO7k.mjs +298 -0
- package/dist/oauth-state-store-C5UFhzwD.mjs +48 -0
- package/dist/oauth-user-lookup-Bi0ek9eM.mjs +25 -0
- package/dist/options-z8VVg1Ll.mjs +114 -0
- package/dist/page/index.d.mts +2 -139
- package/dist/page/index.mjs +1 -427
- package/dist/parse-C9106ehs.mjs +88 -0
- package/dist/passkey-config-BRSZx4pW.mjs +42 -0
- package/dist/{patterns-CrCYkMBb.mjs → patterns-K0DLqWir.mjs} +53 -1
- package/dist/placeholder-Bh1dfUOd.d.mts +40 -0
- package/dist/{placeholder-Cp8g5Emj.mjs → placeholder-C2P5fKa4.mjs} +1 -126
- package/dist/plugins/adapt-sandbox-entry.d.mts +10 -5
- package/dist/plugins/adapt-sandbox-entry.mjs +4 -4
- package/dist/plugins-D7-ILNib.mjs +3249 -0
- package/dist/preview-DvYRU-Oy.mjs +788 -0
- package/dist/provider-loader-BiQ6lNmf.d.mts +20 -0
- package/dist/provider-loader-C21b9OpH.mjs +36 -0
- package/dist/public-url-Cun8N3NU.mjs +71 -0
- package/dist/{query-kDmwCsHh.mjs → query-B9BO5goQ.mjs} +93 -19
- package/dist/query-CsbOywSY.mjs +35 -0
- package/dist/rate-limit-DmVTHI5v.mjs +112 -0
- package/dist/{redirect-DnEWAkVg.mjs → redirect-CGl64yOX.mjs} +9 -5
- package/dist/redirect-COZy-3iY.mjs +16 -0
- package/dist/redirects-Cgi_cZfN.mjs +499 -0
- package/dist/redirects-lrlmYXVE.mjs +1023 -0
- package/dist/{registry-C0zjeB9P.mjs → registry-C-_hxLqa.mjs} +26 -294
- package/dist/request-meta-DixlNKKa.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-BU6Lo1ZS.d.mts} +1 -1
- package/dist/{index-yvc6E_17.d.mts → runtime-Db4LbNVZ.d.mts} +1188 -2484
- package/dist/runtime.d.mts +11 -24
- package/dist/runtime.mjs +4 -38
- package/dist/schema-BECjUhP8.mjs +8 -0
- package/dist/search-DqTHQqtV.mjs +337 -0
- package/dist/secrets-CkoJ9zN0.mjs +160 -0
- package/dist/sections-B61OxnfB.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-C007Luwn.mjs +85 -0
- package/dist/seo-CUQctrog.mjs +129 -0
- package/dist/seo-contributions-B1fWCnqY.mjs +429 -0
- package/dist/service-CyOsm0R6.mjs +194 -0
- package/dist/settings-DGtLLSaz.mjs +237 -0
- package/dist/settings-Dzgswvg4.mjs +50 -0
- package/dist/setup-complete-ChilE-da.mjs +21 -0
- package/dist/setup-nonce-BpmLXAuu.mjs +17 -0
- package/dist/sidecar-client-B1C6Cf80.mjs +66 -0
- package/dist/site-activity-B8FjLIVh.mjs +104 -0
- package/dist/site-context-WBxoD99D.mjs +4122 -0
- package/dist/site-url-BP7k7OCe.mjs +12 -0
- package/dist/slugify-PDTDtMXp.mjs +30 -0
- package/dist/ssrf-DDwRxF6B.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-D2aZGuns.mjs} +11 -7
- package/dist/taxonomies-z6Lz91BC.mjs +355 -0
- package/dist/taxonomy-D5cbhc8u.mjs +165 -0
- package/dist/{tokens-CJz9ubV6.mjs → tokens-BOJw-D9F.mjs} +1 -1
- package/dist/{transport-DB5eDN4x.mjs → transport-D3i4yWRE.mjs} +5 -4
- package/dist/trusted-proxy-BbaZfkT9.mjs +30 -0
- package/dist/types-0Vr68fc2.d.mts +344 -0
- package/dist/types-BFmjniC2.d.mts +165 -0
- package/dist/{types-BawVha09.mjs → types-Bs6lTBBW.mjs} +1 -1
- package/dist/{types-BuMDPy5C.d.mts → types-C0mmVRJN.d.mts} +6 -0
- package/dist/{placeholder--wOi4TbO.d.mts → types-OPs5Q_sX.d.mts} +1 -38
- package/dist/{types-Cj0KMIZV.d.mts → types-Q616b2Hn.d.mts} +54 -16
- package/dist/ui/client-runtime.d.mts +12 -0
- package/dist/ui/client-runtime.mjs +32 -0
- package/dist/ui/server-runtime.d.mts +33 -0
- package/dist/ui/server-runtime.mjs +80 -0
- package/dist/url-DNjT2abR.mjs +49 -0
- package/dist/user-CcXq-zoL.mjs +154 -0
- package/dist/utils-C0ONdBul.mjs +285 -0
- package/dist/{validate-IPf8n4Fj.d.mts → validate-BwmQEbu8.d.mts} +3 -3
- package/dist/{validate-BZ5wnLLp.mjs → validate-C7TzfamJ.mjs} +1 -1
- package/dist/version-D3vDb22n.mjs +6 -0
- package/dist/widgets-B7DRpZvy.mjs +104 -0
- package/dist/wordpress-slugs-CnporCYH.mjs +14 -0
- package/dist/zod-generator-DBVP8D0P.mjs +132 -0
- package/locals.d.ts +1 -6
- package/package.json +81 -11
- package/src/components/Button.astro +1 -1
- package/src/components/CommentForm.astro +1 -1
- package/src/components/Comments.astro +1 -3
- package/src/components/DinewayBodyEnd.astro +5 -3
- package/src/components/DinewayBodyStart.astro +5 -3
- package/src/components/DinewayHead.astro +15 -9
- package/src/components/DinewayImage.astro +12 -8
- package/src/components/DinewayMedia.astro +15 -6
- package/src/components/Embed.astro +1 -2
- package/src/components/File.astro +1 -1
- package/src/components/Gallery.astro +5 -3
- package/src/components/HtmlBlock.astro +1 -1
- package/src/components/Image.astro +9 -3
- package/src/components/InlinePortableTextEditor.tsx +69 -20
- package/src/components/PortableText.astro +1 -1
- package/src/components/WidgetArea.astro +1 -1
- package/src/components/WidgetRenderer.astro +1 -3
- package/src/components/marks/Link.astro +1 -1
- package/src/components/widgets/Archives.astro +1 -1
- package/src/components/widgets/Categories.astro +1 -1
- package/src/components/widgets/RecentPosts.astro +1 -1
- package/src/components/widgets/Tags.astro +1 -1
- 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]/items.ts +0 -206
- 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-DuLQZhRY.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-DyZkswzF.mjs} +0 -0
- /package/dist/{default-VjJyuuG9.mjs → default-D4ngTpW8.mjs} +0 -0
- /package/dist/{load-Coc9HpHH.mjs → load-B2XtDw__.mjs} +0 -0
- /package/dist/{mode-47goXBBK.mjs → mode-DUhxwUhv.mjs} +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-BXe1AM79.d.mts} +0 -0
- /package/dist/{types-CWbdtiux.d.mts → types-B7kpsMJ3.d.mts} +0 -0
- /package/dist/{types-BzcUjoqg.d.mts → types-DJlpx5Ay.d.mts} +0 -0
- /package/dist/{types-COeOq9nK.mjs → types-DL7Y8D_t.mjs} +0 -0
- /package/dist/{types-DOrVigru.d.mts → types-DZPw8Rru.d.mts} +0 -0
- /package/dist/{types-griIBQOQ.mjs → types-fAInWQDO.mjs} +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { a as ContextRepository, i as parseSiteBriefingScope, n as SiteBriefingError } from "./briefing-MVYe_Uyf.mjs";
|
|
2
|
+
import { b as toPublicContextEntry, x as toPublicContextEntryPage, y as toPublicContextDiff } from "./site-context-WBxoD99D.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/api/handlers/context.ts
|
|
5
|
+
async function handleContextEntryList(db, input = {}) {
|
|
6
|
+
try {
|
|
7
|
+
const scopes = resolveScopes(input.scope, input.includeInherited);
|
|
8
|
+
const repository = new ContextRepository(db);
|
|
9
|
+
const query = {
|
|
10
|
+
scopes,
|
|
11
|
+
contextTypes: input.contextTypes,
|
|
12
|
+
tags: input.tags,
|
|
13
|
+
createdByActorType: input.createdByActorType,
|
|
14
|
+
createdByActorId: input.createdByActorId,
|
|
15
|
+
currentOnly: input.currentOnly,
|
|
16
|
+
limit: input.limit,
|
|
17
|
+
cursor: input.cursor
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
success: true,
|
|
21
|
+
data: toPublicContextEntryPage(input.q?.trim() ? await repository.search({
|
|
22
|
+
...query,
|
|
23
|
+
query: input.q.trim()
|
|
24
|
+
}) : await repository.list(query))
|
|
25
|
+
};
|
|
26
|
+
} catch (error) {
|
|
27
|
+
return contextError(error, "CONTEXT_LIST_ERROR", "Failed to list context entries");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function handleContextEntryGet(db, id) {
|
|
31
|
+
try {
|
|
32
|
+
const entry = await new ContextRepository(db).findById(id);
|
|
33
|
+
if (!entry) return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: {
|
|
36
|
+
code: "NOT_FOUND",
|
|
37
|
+
message: `Context entry not found: ${id}`
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
success: true,
|
|
42
|
+
data: { item: toPublicContextEntry(entry) }
|
|
43
|
+
};
|
|
44
|
+
} catch (error) {
|
|
45
|
+
return contextError(error, "CONTEXT_GET_ERROR", "Failed to get context entry");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async function handleContextEntryCreate(db, input, actor) {
|
|
49
|
+
try {
|
|
50
|
+
parseSiteBriefingScope(input.scope);
|
|
51
|
+
return {
|
|
52
|
+
success: true,
|
|
53
|
+
data: { item: toPublicContextEntry(await new ContextRepository(db).create({
|
|
54
|
+
...input,
|
|
55
|
+
createdByActorType: actor.actorType,
|
|
56
|
+
createdByActorId: actor.actorId,
|
|
57
|
+
createdAuthMetadata: actor.authMetadata
|
|
58
|
+
})) }
|
|
59
|
+
};
|
|
60
|
+
} catch (error) {
|
|
61
|
+
return contextError(error, "CONTEXT_CREATE_ERROR", "Failed to create context entry");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function handleContextEntrySupersede(db, id, input, actor) {
|
|
65
|
+
try {
|
|
66
|
+
if (input.scope) parseSiteBriefingScope(input.scope);
|
|
67
|
+
const entry = await new ContextRepository(db).supersede(id, {
|
|
68
|
+
...input,
|
|
69
|
+
createdByActorType: actor.actorType,
|
|
70
|
+
createdByActorId: actor.actorId,
|
|
71
|
+
createdAuthMetadata: actor.authMetadata
|
|
72
|
+
});
|
|
73
|
+
if (!entry) return {
|
|
74
|
+
success: false,
|
|
75
|
+
error: {
|
|
76
|
+
code: "NOT_FOUND",
|
|
77
|
+
message: `Context entry not found: ${id}`
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
success: true,
|
|
82
|
+
data: { item: toPublicContextEntry(entry) }
|
|
83
|
+
};
|
|
84
|
+
} catch (error) {
|
|
85
|
+
return contextError(error, "CONTEXT_SUPERSEDE_ERROR", "Failed to supersede context entry");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async function handleContextEntryReview(db, id, input, actor) {
|
|
89
|
+
try {
|
|
90
|
+
const entry = await new ContextRepository(db).review(id, {
|
|
91
|
+
reviewedByActorType: actor.actorType,
|
|
92
|
+
reviewedByActorId: actor.actorId,
|
|
93
|
+
reviewNote: input.reviewNote,
|
|
94
|
+
validUntil: input.validUntil
|
|
95
|
+
});
|
|
96
|
+
if (!entry) return {
|
|
97
|
+
success: false,
|
|
98
|
+
error: {
|
|
99
|
+
code: "NOT_FOUND",
|
|
100
|
+
message: `Context entry not found: ${id}`
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
data: { item: toPublicContextEntry(entry) }
|
|
106
|
+
};
|
|
107
|
+
} catch (error) {
|
|
108
|
+
return contextError(error, "CONTEXT_REVIEW_ERROR", "Failed to review context entry");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function handleContextEntryStale(db, input = {}) {
|
|
112
|
+
try {
|
|
113
|
+
return {
|
|
114
|
+
success: true,
|
|
115
|
+
data: toPublicContextEntryPage(await new ContextRepository(db).listStale({
|
|
116
|
+
scopes: resolveScopes(input.scope, input.includeInherited),
|
|
117
|
+
contextTypes: input.contextTypes,
|
|
118
|
+
tags: input.tags,
|
|
119
|
+
now: input.now,
|
|
120
|
+
limit: input.limit,
|
|
121
|
+
cursor: input.cursor
|
|
122
|
+
}))
|
|
123
|
+
};
|
|
124
|
+
} catch (error) {
|
|
125
|
+
return contextError(error, "CONTEXT_STALE_ERROR", "Failed to list stale context entries");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function handleContextEntryDiff(db, input) {
|
|
129
|
+
try {
|
|
130
|
+
return {
|
|
131
|
+
success: true,
|
|
132
|
+
data: toPublicContextDiff(await new ContextRepository(db).diff({
|
|
133
|
+
scopes: resolveScopes(input.scope, input.includeInherited),
|
|
134
|
+
since: input.since,
|
|
135
|
+
now: input.now
|
|
136
|
+
}))
|
|
137
|
+
};
|
|
138
|
+
} catch (error) {
|
|
139
|
+
return contextError(error, "CONTEXT_DIFF_ERROR", "Failed to diff context entries");
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async function handleContextEntryHistory(db, id) {
|
|
143
|
+
try {
|
|
144
|
+
const repository = new ContextRepository(db);
|
|
145
|
+
if (!await repository.findById(id)) return {
|
|
146
|
+
success: false,
|
|
147
|
+
error: {
|
|
148
|
+
code: "NOT_FOUND",
|
|
149
|
+
message: `Context entry not found: ${id}`
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
return {
|
|
153
|
+
success: true,
|
|
154
|
+
data: { items: (await repository.findSupersedeHistory(id)).map(toPublicContextEntry) }
|
|
155
|
+
};
|
|
156
|
+
} catch (error) {
|
|
157
|
+
return contextError(error, "CONTEXT_HISTORY_ERROR", "Failed to load context history");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function resolveScopes(scope, includeInherited) {
|
|
161
|
+
if (!scope) return void 0;
|
|
162
|
+
const parsed = parseSiteBriefingScope(scope);
|
|
163
|
+
return includeInherited ? parsed.ancestors : [parsed.scope];
|
|
164
|
+
}
|
|
165
|
+
function contextError(error, code, fallback) {
|
|
166
|
+
if (error instanceof SiteBriefingError) return {
|
|
167
|
+
success: false,
|
|
168
|
+
error: {
|
|
169
|
+
code: "VALIDATION_ERROR",
|
|
170
|
+
message: error.message
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
console.error(`[${code}]`, error);
|
|
174
|
+
return {
|
|
175
|
+
success: false,
|
|
176
|
+
error: {
|
|
177
|
+
code,
|
|
178
|
+
message: fallback
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
//#endregion
|
|
184
|
+
export { handleContextEntryList as a, handleContextEntrySupersede as c, handleContextEntryHistory as i, handleContextEntryDiff as n, handleContextEntryReview as o, handleContextEntryGet as r, handleContextEntryStale as s, handleContextEntryCreate as t };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { T as resolveActorIdentity, p as logSiteActivitySafely } from "./activity-events-B4wp7CrU.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/api/context-route-helpers.ts
|
|
4
|
+
function resolveContextRouteActor(locals) {
|
|
5
|
+
const actor = resolveActorIdentity(toActorLocals(locals));
|
|
6
|
+
return {
|
|
7
|
+
actorType: actor.actorType,
|
|
8
|
+
actorId: actor.actorId,
|
|
9
|
+
authMetadata: actor.authMetadata
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
async function logContextRouteActivity(db, locals, input) {
|
|
13
|
+
await logSiteActivitySafely(db, toActorLocals(locals), {
|
|
14
|
+
actionType: input.actionType,
|
|
15
|
+
subjectType: "context_entry",
|
|
16
|
+
subjectId: input.entry.id,
|
|
17
|
+
scope: input.entry.scope,
|
|
18
|
+
sourceType: "api_route",
|
|
19
|
+
sourceName: contextRouteSourceName(input.actionType),
|
|
20
|
+
summary: input.summary,
|
|
21
|
+
detail: {
|
|
22
|
+
contextType: input.entry.contextType,
|
|
23
|
+
policyKey: input.entry.policyKey,
|
|
24
|
+
tags: input.entry.tags,
|
|
25
|
+
...input.detail
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function contextRouteSourceName(actionType) {
|
|
30
|
+
switch (actionType) {
|
|
31
|
+
case "context.added": return "admin.context.add";
|
|
32
|
+
case "context.superseded": return "admin.context.supersede";
|
|
33
|
+
case "context.reviewed": return "admin.context.review";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function toActorLocals(locals) {
|
|
37
|
+
return {
|
|
38
|
+
user: locals.user ? { id: locals.user.id } : null,
|
|
39
|
+
tokenScopes: locals.tokenScopes,
|
|
40
|
+
authToken: locals.authToken
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { resolveContextRouteActor as n, logContextRouteActivity as t };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/site-context/context-types.ts
|
|
2
|
+
const SITE_CONTEXT_TYPES = [
|
|
3
|
+
"brand_voice",
|
|
4
|
+
"seo_strategy",
|
|
5
|
+
"audience",
|
|
6
|
+
"content_guideline",
|
|
7
|
+
"forbidden_terms",
|
|
8
|
+
"editorial_policy",
|
|
9
|
+
"migration_note",
|
|
10
|
+
"plugin_note",
|
|
11
|
+
"agent_reasoning",
|
|
12
|
+
"decision",
|
|
13
|
+
"risk",
|
|
14
|
+
"content_gap",
|
|
15
|
+
"style_exception"
|
|
16
|
+
];
|
|
17
|
+
const SITE_CONTEXT_TYPE_SET = new Set(SITE_CONTEXT_TYPES);
|
|
18
|
+
function isSiteContextType(value) {
|
|
19
|
+
return SITE_CONTEXT_TYPE_SET.has(value);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { isSiteContextType as n, SITE_CONTEXT_TYPES as t };
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { sql } from "kysely";
|
|
2
|
+
import { ulid } from "ulidx";
|
|
3
|
+
import { Cron } from "croner";
|
|
4
|
+
|
|
5
|
+
//#region src/plugins/cron.ts
|
|
6
|
+
/**
|
|
7
|
+
* Plugin Cron System
|
|
8
|
+
*
|
|
9
|
+
* Provides scheduled task execution for plugins:
|
|
10
|
+
* - CronExecutor: claims overdue tasks, invokes per-plugin cron hook, updates next run.
|
|
11
|
+
* - CronAccessImpl: per-plugin API for schedule/cancel/list.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
/** Stale lock threshold in minutes */
|
|
15
|
+
const STALE_LOCK_MINUTES = 10;
|
|
16
|
+
const MAX_ONESHOT_RETRIES = 5;
|
|
17
|
+
/**
|
|
18
|
+
* Executes overdue cron tasks.
|
|
19
|
+
*
|
|
20
|
+
* Called by platform-specific schedulers (NodeCronScheduler, DinewayScheduler DO,
|
|
21
|
+
* PiggybackScheduler). Stateless — all state lives in the database.
|
|
22
|
+
*/
|
|
23
|
+
var CronExecutor = class {
|
|
24
|
+
constructor(db, invokeCronHook) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
this.invokeCronHook = invokeCronHook;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Process all overdue tasks.
|
|
30
|
+
*
|
|
31
|
+
* 1. Atomically claim tasks whose next_run_at <= now, status = idle, enabled = 1.
|
|
32
|
+
* 2. For each claimed task, invoke the plugin's cron hook.
|
|
33
|
+
* 3. On success: compute next_run_at and reset to idle, or delete one-shots.
|
|
34
|
+
* 4. On failure: reset to idle (retry on next tick).
|
|
35
|
+
*/
|
|
36
|
+
async tick() {
|
|
37
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
38
|
+
let processed = 0;
|
|
39
|
+
const claimed = await sql`
|
|
40
|
+
UPDATE _dineway_cron_tasks
|
|
41
|
+
SET status = 'running', locked_at = ${now}
|
|
42
|
+
WHERE id IN (
|
|
43
|
+
SELECT id FROM _dineway_cron_tasks
|
|
44
|
+
WHERE next_run_at <= ${now}
|
|
45
|
+
AND status = 'idle'
|
|
46
|
+
AND enabled = 1
|
|
47
|
+
ORDER BY next_run_at ASC
|
|
48
|
+
LIMIT 10
|
|
49
|
+
)
|
|
50
|
+
RETURNING id, plugin_id, task_name, schedule, is_oneshot, data, next_run_at
|
|
51
|
+
`.execute(this.db);
|
|
52
|
+
for (const task of claimed.rows) {
|
|
53
|
+
let parsedData;
|
|
54
|
+
if (task.data) try {
|
|
55
|
+
parsedData = JSON.parse(task.data);
|
|
56
|
+
} catch {
|
|
57
|
+
console.error(`[cron] Invalid JSON data for ${task.plugin_id}:${task.task_name}, skipping`);
|
|
58
|
+
await sql`
|
|
59
|
+
UPDATE _dineway_cron_tasks
|
|
60
|
+
SET status = 'idle', locked_at = NULL
|
|
61
|
+
WHERE id = ${task.id}
|
|
62
|
+
`.execute(this.db);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const event = {
|
|
66
|
+
name: task.task_name,
|
|
67
|
+
data: parsedData,
|
|
68
|
+
scheduledAt: task.next_run_at
|
|
69
|
+
};
|
|
70
|
+
let hookFailed = false;
|
|
71
|
+
try {
|
|
72
|
+
await this.invokeCronHook(task.plugin_id, event);
|
|
73
|
+
} catch (error) {
|
|
74
|
+
hookFailed = true;
|
|
75
|
+
console.error(`[cron] Hook failed for ${task.plugin_id}:${task.task_name}:`, error);
|
|
76
|
+
}
|
|
77
|
+
if (task.is_oneshot) if (hookFailed) {
|
|
78
|
+
const retryMeta = parsedData?.__dineway != null && typeof parsedData.__dineway === "object" ? parsedData.__dineway : void 0;
|
|
79
|
+
const rawRetryCount = retryMeta?.retryCount;
|
|
80
|
+
const retryCount = typeof rawRetryCount === "number" && Number.isFinite(rawRetryCount) && rawRetryCount > 0 ? Math.floor(rawRetryCount) : 0;
|
|
81
|
+
if (retryCount >= MAX_ONESHOT_RETRIES) {
|
|
82
|
+
console.error(`[cron] One-shot task ${task.plugin_id}:${task.task_name} exceeded ${MAX_ONESHOT_RETRIES} retries, removing`);
|
|
83
|
+
await sql`
|
|
84
|
+
DELETE FROM _dineway_cron_tasks WHERE id = ${task.id}
|
|
85
|
+
`.execute(this.db);
|
|
86
|
+
} else {
|
|
87
|
+
const backoffMs = 6e4 * Math.pow(2, retryCount);
|
|
88
|
+
await sql`
|
|
89
|
+
UPDATE _dineway_cron_tasks
|
|
90
|
+
SET status = 'idle', locked_at = NULL, next_run_at = ${new Date(Date.now() + backoffMs).toISOString()}, data = ${JSON.stringify({
|
|
91
|
+
...parsedData,
|
|
92
|
+
__dineway: {
|
|
93
|
+
...retryMeta,
|
|
94
|
+
retryCount: retryCount + 1
|
|
95
|
+
}
|
|
96
|
+
})}
|
|
97
|
+
WHERE id = ${task.id}
|
|
98
|
+
`.execute(this.db);
|
|
99
|
+
}
|
|
100
|
+
} else await sql`
|
|
101
|
+
DELETE FROM _dineway_cron_tasks WHERE id = ${task.id}
|
|
102
|
+
`.execute(this.db);
|
|
103
|
+
else await sql`
|
|
104
|
+
UPDATE _dineway_cron_tasks
|
|
105
|
+
SET status = 'idle',
|
|
106
|
+
locked_at = NULL,
|
|
107
|
+
last_run_at = ${now},
|
|
108
|
+
next_run_at = ${nextCronTime(task.schedule)}
|
|
109
|
+
WHERE id = ${task.id}
|
|
110
|
+
`.execute(this.db);
|
|
111
|
+
processed++;
|
|
112
|
+
}
|
|
113
|
+
return processed;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Recover tasks stuck in 'running' for more than STALE_LOCK_MINUTES.
|
|
117
|
+
* These likely crashed mid-execution.
|
|
118
|
+
*/
|
|
119
|
+
async recoverStaleLocks() {
|
|
120
|
+
const result = await sql`
|
|
121
|
+
UPDATE _dineway_cron_tasks
|
|
122
|
+
SET status = 'idle', locked_at = NULL
|
|
123
|
+
WHERE status = 'running'
|
|
124
|
+
AND locked_at < ${(/* @__PURE__ */ new Date(Date.now() - STALE_LOCK_MINUTES * 60 * 1e3)).toISOString()}
|
|
125
|
+
`.execute(this.db);
|
|
126
|
+
return Number(result.numAffectedRows ?? 0);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get the next due time across all enabled tasks.
|
|
130
|
+
* Returns null if no tasks are scheduled.
|
|
131
|
+
*/
|
|
132
|
+
async getNextDueTime() {
|
|
133
|
+
return (await sql`
|
|
134
|
+
SELECT MIN(next_run_at) as next
|
|
135
|
+
FROM _dineway_cron_tasks
|
|
136
|
+
WHERE status = 'idle' AND enabled = 1
|
|
137
|
+
`.execute(this.db)).rows[0]?.next ?? null;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Per-plugin cron API implementation.
|
|
142
|
+
* Scoped to a single plugin ID — plugins cannot see or modify other plugins' tasks.
|
|
143
|
+
*/
|
|
144
|
+
var CronAccessImpl = class {
|
|
145
|
+
constructor(db, pluginId, reschedule) {
|
|
146
|
+
this.db = db;
|
|
147
|
+
this.pluginId = pluginId;
|
|
148
|
+
this.reschedule = reschedule;
|
|
149
|
+
}
|
|
150
|
+
async schedule(name, opts) {
|
|
151
|
+
validateTaskName(name);
|
|
152
|
+
validateSchedule(opts.schedule);
|
|
153
|
+
const oneshot = isOneShot(opts.schedule);
|
|
154
|
+
const nextRun = oneshot ? opts.schedule : nextCronTime(opts.schedule);
|
|
155
|
+
const dataJson = opts.data ? JSON.stringify(opts.data) : null;
|
|
156
|
+
await sql`
|
|
157
|
+
INSERT INTO _dineway_cron_tasks (id, plugin_id, task_name, schedule, is_oneshot, data, next_run_at, status, enabled)
|
|
158
|
+
VALUES (${ulid()}, ${this.pluginId}, ${name}, ${opts.schedule}, ${oneshot ? 1 : 0}, ${dataJson}, ${nextRun}, 'idle', 1)
|
|
159
|
+
ON CONFLICT (plugin_id, task_name) DO UPDATE SET
|
|
160
|
+
schedule = ${opts.schedule},
|
|
161
|
+
is_oneshot = ${oneshot ? 1 : 0},
|
|
162
|
+
data = ${dataJson},
|
|
163
|
+
next_run_at = ${nextRun},
|
|
164
|
+
status = CASE WHEN _dineway_cron_tasks.status = 'running' THEN 'running' ELSE 'idle' END,
|
|
165
|
+
locked_at = CASE WHEN _dineway_cron_tasks.status = 'running' THEN _dineway_cron_tasks.locked_at ELSE NULL END,
|
|
166
|
+
enabled = 1
|
|
167
|
+
`.execute(this.db);
|
|
168
|
+
this.reschedule();
|
|
169
|
+
}
|
|
170
|
+
async cancel(name) {
|
|
171
|
+
await sql`
|
|
172
|
+
DELETE FROM _dineway_cron_tasks
|
|
173
|
+
WHERE plugin_id = ${this.pluginId} AND task_name = ${name}
|
|
174
|
+
`.execute(this.db);
|
|
175
|
+
this.reschedule();
|
|
176
|
+
}
|
|
177
|
+
async list() {
|
|
178
|
+
return (await sql`
|
|
179
|
+
SELECT task_name, schedule, next_run_at, last_run_at
|
|
180
|
+
FROM _dineway_cron_tasks
|
|
181
|
+
WHERE plugin_id = ${this.pluginId} AND enabled = 1
|
|
182
|
+
ORDER BY next_run_at ASC
|
|
183
|
+
`.execute(this.db)).rows.map((row) => ({
|
|
184
|
+
name: row.task_name,
|
|
185
|
+
schedule: row.schedule,
|
|
186
|
+
nextRunAt: row.next_run_at,
|
|
187
|
+
lastRunAt: row.last_run_at
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Enable or disable all cron tasks for a plugin.
|
|
193
|
+
* Called by admin disable/enable endpoints and PluginManager lifecycle.
|
|
194
|
+
* Gracefully handles the cron table not existing yet (pre-migration).
|
|
195
|
+
*/
|
|
196
|
+
async function setCronTasksEnabled(db, pluginId, enabled) {
|
|
197
|
+
try {
|
|
198
|
+
await sql`
|
|
199
|
+
UPDATE _dineway_cron_tasks
|
|
200
|
+
SET enabled = ${enabled ? 1 : 0}
|
|
201
|
+
WHERE plugin_id = ${pluginId}
|
|
202
|
+
`.execute(db);
|
|
203
|
+
} catch {}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Compute the next fire time for a cron expression.
|
|
207
|
+
* Supports standard cron (5-field), extended (6-field with seconds), and
|
|
208
|
+
* aliases like @daily, @weekly, @hourly, @monthly, @yearly.
|
|
209
|
+
*/
|
|
210
|
+
function nextCronTime(expression) {
|
|
211
|
+
const next = new Cron(expression).nextRun();
|
|
212
|
+
if (!next) throw new Error(`Invalid cron expression or no future run: "${expression}"`);
|
|
213
|
+
return next.toISOString();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check whether a string is a valid cron expression.
|
|
217
|
+
*/
|
|
218
|
+
function isCronExpression(schedule) {
|
|
219
|
+
try {
|
|
220
|
+
new Cron(schedule);
|
|
221
|
+
return true;
|
|
222
|
+
} catch {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Check if a schedule string is a one-shot (ISO 8601 datetime) rather than
|
|
228
|
+
* a recurring cron expression.
|
|
229
|
+
*
|
|
230
|
+
* Tries to parse as a cron expression first. Only if that fails does it
|
|
231
|
+
* attempt Date.parse. This avoids misclassifying cron range expressions
|
|
232
|
+
* like "1-5 * * * *" which Date.parse accepts as valid dates.
|
|
233
|
+
*/
|
|
234
|
+
function isOneShot(schedule) {
|
|
235
|
+
if (schedule.startsWith("@")) return false;
|
|
236
|
+
if (isCronExpression(schedule)) return false;
|
|
237
|
+
return !isNaN(Date.parse(schedule));
|
|
238
|
+
}
|
|
239
|
+
/** Max length for a task name */
|
|
240
|
+
const MAX_TASK_NAME_LENGTH = 128;
|
|
241
|
+
/** Task name pattern: alphanumeric, dashes, underscores */
|
|
242
|
+
const TASK_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
|
|
243
|
+
/**
|
|
244
|
+
* Validate a cron task name.
|
|
245
|
+
* Must be non-empty, ≤128 chars, alphanumeric with dashes/underscores.
|
|
246
|
+
*/
|
|
247
|
+
function validateTaskName(name) {
|
|
248
|
+
if (!name || name.length > MAX_TASK_NAME_LENGTH) throw new Error(`Invalid task name: must be 1-${MAX_TASK_NAME_LENGTH} characters, got ${name.length}`);
|
|
249
|
+
if (!TASK_NAME_RE.test(name)) throw new Error(`Invalid task name "${name}": must start with a letter and contain only letters, numbers, dashes, or underscores`);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Validate a schedule string at registration time.
|
|
253
|
+
* Must be a valid cron expression or a parseable ISO 8601 datetime.
|
|
254
|
+
*/
|
|
255
|
+
function validateSchedule(schedule) {
|
|
256
|
+
if (!schedule || schedule.length > 256) throw new Error(`Invalid schedule: must be 1-256 characters, got ${schedule.length}`);
|
|
257
|
+
if (isCronExpression(schedule)) return;
|
|
258
|
+
const parsed = Date.parse(schedule);
|
|
259
|
+
if (isNaN(parsed)) throw new Error(`Invalid schedule "${schedule}": must be a valid cron expression or ISO 8601 datetime`);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
//#endregion
|
|
263
|
+
export { CronExecutor as n, setCronTasksEnabled as r, CronAccessImpl as t };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
|
|
2
|
+
import { t as ContentRepository } from "./content-CyLkb-qH.mjs";
|
|
3
|
+
import { t as MediaRepository } from "./media-_7Fxdu45.mjs";
|
|
4
|
+
import { t as UserRepository } from "./user-CcXq-zoL.mjs";
|
|
5
|
+
import { t as ReviewRequestRepository } from "./review-requests-C2DIHwlJ.mjs";
|
|
6
|
+
import { sql } from "kysely";
|
|
7
|
+
|
|
8
|
+
//#region src/api/handlers/dashboard.ts
|
|
9
|
+
/**
|
|
10
|
+
* Dashboard stats handler
|
|
11
|
+
*
|
|
12
|
+
* Returns summary data for the admin dashboard in a single request:
|
|
13
|
+
* collection content counts, media count, user count, and recent
|
|
14
|
+
* content across all collections.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Fetch dashboard statistics.
|
|
18
|
+
*
|
|
19
|
+
* Queries are intentionally lightweight — counts use indexed columns,
|
|
20
|
+
* and recent items are capped at 10.
|
|
21
|
+
*/
|
|
22
|
+
async function handleDashboardStats(db) {
|
|
23
|
+
try {
|
|
24
|
+
const collections = await db.selectFrom("_dineway_collections").select(["slug", "label"]).orderBy("slug", "asc").execute();
|
|
25
|
+
const contentRepo = new ContentRepository(db);
|
|
26
|
+
const collectionStats = await Promise.all(collections.map(async (col) => {
|
|
27
|
+
const stats = await contentRepo.getStats(col.slug);
|
|
28
|
+
return {
|
|
29
|
+
slug: col.slug,
|
|
30
|
+
label: col.label,
|
|
31
|
+
total: stats.total,
|
|
32
|
+
published: stats.published,
|
|
33
|
+
draft: stats.draft
|
|
34
|
+
};
|
|
35
|
+
}));
|
|
36
|
+
const mediaRepo = new MediaRepository(db);
|
|
37
|
+
const userRepo = new UserRepository(db);
|
|
38
|
+
const reviewRepo = new ReviewRequestRepository(db);
|
|
39
|
+
const [mediaCount, userCount, pendingReviewCount] = await Promise.all([
|
|
40
|
+
mediaRepo.count(),
|
|
41
|
+
userRepo.count(),
|
|
42
|
+
reviewRepo.countPending()
|
|
43
|
+
]);
|
|
44
|
+
return {
|
|
45
|
+
success: true,
|
|
46
|
+
data: {
|
|
47
|
+
collections: collectionStats,
|
|
48
|
+
mediaCount,
|
|
49
|
+
userCount,
|
|
50
|
+
recentItems: await fetchRecentItems(db, collections),
|
|
51
|
+
pendingReviewCount
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.error("Dashboard stats error:", error);
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
error: {
|
|
59
|
+
code: "DASHBOARD_STATS_ERROR",
|
|
60
|
+
message: "Failed to load dashboard statistics"
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Fetch the 10 most recently updated items across all collections.
|
|
67
|
+
*
|
|
68
|
+
* Uses UNION ALL over each ec_* table. The query is safe because
|
|
69
|
+
* collection slugs come from the system table and are validated.
|
|
70
|
+
*
|
|
71
|
+
* `title` is not a standard column — it's a user-defined field. We query
|
|
72
|
+
* `_dineway_fields` to discover which collections have one and fall back
|
|
73
|
+
* to `slug` (which is always present) otherwise.
|
|
74
|
+
*/
|
|
75
|
+
async function fetchRecentItems(db, collections) {
|
|
76
|
+
if (collections.length === 0) return [];
|
|
77
|
+
const titleFields = await db.selectFrom("_dineway_fields as f").innerJoin("_dineway_collections as c", "c.id", "f.collection_id").select(["c.slug as collection_slug"]).where("f.slug", "=", "title").execute();
|
|
78
|
+
const collectionsWithTitle = new Set(titleFields.map((r) => r.collection_slug));
|
|
79
|
+
const subQueries = collections.map((col) => {
|
|
80
|
+
validateIdentifier(col.slug);
|
|
81
|
+
const table = `ec_${col.slug}`;
|
|
82
|
+
const titleExpr = collectionsWithTitle.has(col.slug) ? sql`COALESCE(title, slug, id)` : sql`COALESCE(slug, id)`;
|
|
83
|
+
return sql`
|
|
84
|
+
SELECT * FROM (
|
|
85
|
+
SELECT
|
|
86
|
+
id,
|
|
87
|
+
${sql.lit(col.slug)} AS collection,
|
|
88
|
+
${sql.lit(col.label)} AS collection_label,
|
|
89
|
+
${titleExpr} AS title,
|
|
90
|
+
slug,
|
|
91
|
+
status,
|
|
92
|
+
updated_at,
|
|
93
|
+
author_id
|
|
94
|
+
FROM ${sql.ref(table)}
|
|
95
|
+
WHERE deleted_at IS NULL
|
|
96
|
+
ORDER BY updated_at DESC
|
|
97
|
+
LIMIT 10
|
|
98
|
+
)
|
|
99
|
+
`;
|
|
100
|
+
});
|
|
101
|
+
let combined = subQueries[0];
|
|
102
|
+
for (let i = 1; i < subQueries.length; i++) combined = sql`${combined} UNION ALL ${subQueries[i]}`;
|
|
103
|
+
return (await sql`
|
|
104
|
+
SELECT * FROM (${combined})
|
|
105
|
+
ORDER BY updated_at DESC
|
|
106
|
+
LIMIT 10
|
|
107
|
+
`.execute(db)).rows.map((row) => ({
|
|
108
|
+
id: row.id,
|
|
109
|
+
collection: row.collection,
|
|
110
|
+
collectionLabel: row.collection_label,
|
|
111
|
+
title: row.title,
|
|
112
|
+
slug: row.slug,
|
|
113
|
+
status: row.status,
|
|
114
|
+
updatedAt: row.updated_at,
|
|
115
|
+
authorId: row.author_id
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
export { handleDashboardStats as t };
|
package/dist/db/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../types-
|
|
2
|
-
import { i as
|
|
3
|
-
import {
|
|
1
|
+
import "../types-DZPw8Rru.mjs";
|
|
2
|
+
import { a as SqliteConfig, c as sqlite, i as PostgresConfig, n as DatabaseDialectType, o as libsql, r as LibsqlConfig, s as postgres, t as DatabaseDescriptor } from "../adapters-DuLQZhRY.mjs";
|
|
3
|
+
import { i as runMigrations, n as getMigrationStatus, r as rollbackMigration, t as MigrationStatus } from "../runner-BU6Lo1ZS.mjs";
|
|
4
4
|
export { type DatabaseDescriptor, type DatabaseDialectType, type LibsqlConfig, type MigrationStatus, type PostgresConfig, type SqliteConfig, getMigrationStatus, libsql, postgres, rollbackMigration, runMigrations, sqlite };
|
package/dist/db/libsql.d.mts
CHANGED
package/dist/db/libsql.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BetterSqlite3 from "better-sqlite3";
|
|
2
2
|
import { SqliteDialect } from "kysely";
|
|
3
|
+
import { LibsqlDialect } from "@libsql/kysely-libsql";
|
|
3
4
|
|
|
4
5
|
//#region src/db/libsql.ts
|
|
5
6
|
/**
|
|
@@ -15,8 +16,7 @@ import { SqliteDialect } from "kysely";
|
|
|
15
16
|
* Create a libSQL dialect from config
|
|
16
17
|
*/
|
|
17
18
|
function createDialect(config) {
|
|
18
|
-
if (config.url === ":memory:" || config.url.startsWith("file:")) return new SqliteDialect({ database: new (
|
|
19
|
-
const { LibsqlDialect } = __require("@libsql/kysely-libsql");
|
|
19
|
+
if (config.url === ":memory:" || config.url.startsWith("file:")) return new SqliteDialect({ database: new BetterSqlite3(config.url === ":memory:" ? config.url : config.url.slice(5)) });
|
|
20
20
|
return new LibsqlDialect({
|
|
21
21
|
url: config.url,
|
|
22
22
|
authToken: config.authToken
|
package/dist/db/postgres.d.mts
CHANGED
package/dist/db/sqlite.d.mts
CHANGED