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
package/dist/runtime.d.mts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./types-
|
|
3
|
-
import
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
1
|
+
import { $t as EntryFilter, Qt as EntryData, Zt as CollectionFilter, en as dinewayLoader, tn as getDb } from "./runtime-C4-7y7xK.mjs";
|
|
2
|
+
import "./types-Du8jreyC.mjs";
|
|
3
|
+
import "./types-DgfUZqcd.mjs";
|
|
4
|
+
import "./types-D4XVOt01.mjs";
|
|
5
|
+
import { f as MediaProvider } from "./placeholder-CHkLckzK.mjs";
|
|
6
|
+
import "./runner-9eIQXuc2.mjs";
|
|
7
|
+
import "./index-CkljPf5F.mjs";
|
|
8
|
+
import "./bylines-HfUKum_j.mjs";
|
|
9
|
+
import "./types-C982qI5I.mjs";
|
|
10
|
+
import "./validate-JCZihRIa.mjs";
|
|
7
11
|
|
|
8
12
|
//#region src/media/provider-loader.d.ts
|
|
9
13
|
/**
|
package/dist/runtime.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./dialect-helpers-DhTzaUxP.mjs";
|
|
2
|
-
import "./base64-
|
|
3
|
-
import "./types-
|
|
4
|
-
import { n as
|
|
2
|
+
import "./base64-Cz-aU0X1.mjs";
|
|
3
|
+
import "./types-Bs6lTBBW.mjs";
|
|
4
|
+
import { n as dinewayLoader, r as getDb } from "./loader-PZnPxFLc.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/media/provider-loader.ts
|
|
7
7
|
let virtualMediaProviders;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-ClPoSABd.mjs";
|
|
2
|
+
import { n as SchemaRegistry } from "./registry-C-_hxLqa.mjs";
|
|
3
|
+
import { r as getDb } from "./loader-PZnPxFLc.mjs";
|
|
4
|
+
import { n as requestCached } from "./request-cache-DHMRr2Lf.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/schema/query.ts
|
|
7
|
+
/**
|
|
8
|
+
* Get collection metadata by slug.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { getCollectionInfo } from "dineway";
|
|
13
|
+
*
|
|
14
|
+
* const info = await getCollectionInfo("posts");
|
|
15
|
+
* if (info?.commentsEnabled) {
|
|
16
|
+
* // render comment UI
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
async function getCollectionInfo(slug) {
|
|
21
|
+
return requestCached(`collection-info:${slug}`, async () => {
|
|
22
|
+
return getCollectionInfoWithDb(await getDb(), slug);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get collection metadata with an explicit db handle.
|
|
27
|
+
*
|
|
28
|
+
* @internal Use `getCollectionInfo()` in templates. This variant is for
|
|
29
|
+
* routes that already have a database handle.
|
|
30
|
+
*/
|
|
31
|
+
async function getCollectionInfoWithDb(db, slug) {
|
|
32
|
+
return new SchemaRegistry(db).getCollection(slug);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
//#region src/schema/index.ts
|
|
37
|
+
var schema_exports = /* @__PURE__ */ __exportAll({ SchemaRegistry: () => SchemaRegistry });
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
export { getCollectionInfo as n, schema_exports as t };
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-ClPoSABd.mjs";
|
|
2
|
+
import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
|
|
3
|
+
import { t as FTSManager } from "./fts-manager-B1pTNEG_.mjs";
|
|
4
|
+
import { r as getDb } from "./loader-PZnPxFLc.mjs";
|
|
5
|
+
import { sql } from "kysely";
|
|
6
|
+
import { toPlainText } from "@portabletext/toolkit";
|
|
7
|
+
|
|
8
|
+
//#region src/search/query.ts
|
|
9
|
+
/** Pattern to split on whitespace for query term extraction */
|
|
10
|
+
const WHITESPACE_SPLIT_PATTERN = /\s+/;
|
|
11
|
+
const FTS_OPERATORS_PATTERN = /\b(AND|OR|NOT|NEAR)\b/i;
|
|
12
|
+
const DOUBLE_QUOTE_PATTERN = /"/g;
|
|
13
|
+
const SNIPPET_AMP_PATTERN = /&/g;
|
|
14
|
+
const SNIPPET_LT_PATTERN = /</g;
|
|
15
|
+
const SNIPPET_GT_PATTERN = />/g;
|
|
16
|
+
const SNIPPET_QUOT_PATTERN = /"/g;
|
|
17
|
+
const SNIPPET_APOS_PATTERN = /'/g;
|
|
18
|
+
function searchResultDisplayColumn(searchableFields) {
|
|
19
|
+
return searchableFields.includes("title") ? "title" : "slug";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Search across multiple collections
|
|
23
|
+
*
|
|
24
|
+
* Public API that auto-injects the database.
|
|
25
|
+
*
|
|
26
|
+
* @param query - Search query (FTS5 syntax supported)
|
|
27
|
+
* @param options - Search options
|
|
28
|
+
* @returns Search results with pagination
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { search } from "dineway";
|
|
33
|
+
*
|
|
34
|
+
* const results = await search("hello world", {
|
|
35
|
+
* collections: ["posts", "pages"],
|
|
36
|
+
* limit: 20
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
async function search(query, options = {}) {
|
|
41
|
+
return searchWithDb(await getDb(), query, options);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Search across multiple collections (with explicit db)
|
|
45
|
+
*
|
|
46
|
+
* @internal Use `search()` in templates. This variant is for admin routes
|
|
47
|
+
* that already have a database handle.
|
|
48
|
+
*
|
|
49
|
+
* @param db - Kysely database instance
|
|
50
|
+
* @param query - Search query (FTS5 syntax supported)
|
|
51
|
+
* @param options - Search options
|
|
52
|
+
* @returns Search results with pagination
|
|
53
|
+
*/
|
|
54
|
+
async function searchWithDb(db, query, options = {}) {
|
|
55
|
+
const ftsManager = new FTSManager(db);
|
|
56
|
+
const limit = options.limit ?? 20;
|
|
57
|
+
const status = options.status ?? "published";
|
|
58
|
+
let collections = options.collections;
|
|
59
|
+
if (!collections || collections.length === 0) collections = await getSearchableCollections(db);
|
|
60
|
+
if (collections.length === 0) return { items: [] };
|
|
61
|
+
const allResults = [];
|
|
62
|
+
for (const collection of collections) {
|
|
63
|
+
const config = await ftsManager.getSearchConfig(collection);
|
|
64
|
+
if (!config?.enabled) continue;
|
|
65
|
+
const collectionResults = await searchSingleCollection(db, collection, query, {
|
|
66
|
+
status,
|
|
67
|
+
locale: options.locale,
|
|
68
|
+
limit: limit * 2
|
|
69
|
+
}, config.weights);
|
|
70
|
+
allResults.push(...collectionResults);
|
|
71
|
+
}
|
|
72
|
+
allResults.sort((a, b) => b.score - a.score);
|
|
73
|
+
return { items: allResults.slice(0, limit) };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Search within a single collection
|
|
77
|
+
*
|
|
78
|
+
* @param db - Kysely database instance
|
|
79
|
+
* @param collection - Collection slug
|
|
80
|
+
* @param query - Search query (FTS5 syntax supported)
|
|
81
|
+
* @param options - Search options
|
|
82
|
+
* @returns Search results with pagination
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const results = await searchCollection(db, "posts", "hello world", {
|
|
87
|
+
* limit: 10
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
async function searchCollection(db, collection, query, options = {}) {
|
|
92
|
+
const config = await new FTSManager(db).getSearchConfig(collection);
|
|
93
|
+
if (!config?.enabled) return { items: [] };
|
|
94
|
+
return { items: await searchSingleCollection(db, collection, query, options, config.weights) };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Internal function to search a single collection
|
|
98
|
+
*/
|
|
99
|
+
async function searchSingleCollection(db, collection, query, options, weights) {
|
|
100
|
+
validateIdentifier(collection, "collection slug");
|
|
101
|
+
const ftsManager = new FTSManager(db);
|
|
102
|
+
const ftsTable = ftsManager.getFtsTableName(collection);
|
|
103
|
+
const contentTable = ftsManager.getContentTableName(collection);
|
|
104
|
+
const limit = options.limit ?? 20;
|
|
105
|
+
const status = options.status ?? "published";
|
|
106
|
+
const locale = options.locale;
|
|
107
|
+
if (!await ftsManager.ftsTableExists(collection)) return [];
|
|
108
|
+
const escapedQuery = escapeQuery(query);
|
|
109
|
+
if (!escapedQuery) return [];
|
|
110
|
+
const searchableFields = await ftsManager.getSearchableFields(collection);
|
|
111
|
+
const displayColumn = searchResultDisplayColumn(searchableFields);
|
|
112
|
+
const displayColumnSql = sql`c.${sql.ref(displayColumn)}`;
|
|
113
|
+
let bm25Args = "";
|
|
114
|
+
if (weights && searchableFields.length > 0) {
|
|
115
|
+
const weightValues = ["0", "0"];
|
|
116
|
+
for (const field of searchableFields) weightValues.push(String(weights[field] ?? 1));
|
|
117
|
+
bm25Args = weightValues.join(", ");
|
|
118
|
+
}
|
|
119
|
+
const bm25Expr = bm25Args ? `bm25("${ftsTable}", ${bm25Args})` : `bm25("${ftsTable}")`;
|
|
120
|
+
return (await sql`
|
|
121
|
+
SELECT
|
|
122
|
+
c.id,
|
|
123
|
+
c.slug,
|
|
124
|
+
c.locale,
|
|
125
|
+
${displayColumnSql} as title,
|
|
126
|
+
snippet("${sql.raw(ftsTable)}", 2, '<mark>', '</mark>', '...', 32) as snippet,
|
|
127
|
+
${sql.raw(bm25Expr)} as score
|
|
128
|
+
FROM "${sql.raw(ftsTable)}" f
|
|
129
|
+
JOIN "${sql.raw(contentTable)}" c ON f.id = c.id
|
|
130
|
+
WHERE "${sql.raw(ftsTable)}" MATCH ${escapedQuery}
|
|
131
|
+
AND c.status = ${status}
|
|
132
|
+
AND c.deleted_at IS NULL
|
|
133
|
+
${locale ? sql`AND c.locale = ${locale}` : sql``}
|
|
134
|
+
ORDER BY score
|
|
135
|
+
LIMIT ${limit}
|
|
136
|
+
`.execute(db)).rows.map((row) => ({
|
|
137
|
+
collection,
|
|
138
|
+
id: row.id,
|
|
139
|
+
slug: row.slug,
|
|
140
|
+
locale: row.locale,
|
|
141
|
+
title: row.title ?? void 0,
|
|
142
|
+
snippet: row.snippet === null ? void 0 : sanitizeSnippet(row.snippet),
|
|
143
|
+
score: Math.abs(row.score)
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
function sanitizeSnippet(snippet) {
|
|
147
|
+
return snippet.replace(SNIPPET_AMP_PATTERN, "&").replace(SNIPPET_LT_PATTERN, "<").replace(SNIPPET_GT_PATTERN, ">").replace(SNIPPET_QUOT_PATTERN, """).replace(SNIPPET_APOS_PATTERN, "'").replaceAll("<mark>", "<mark>").replaceAll("</mark>", "</mark>");
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get search suggestions for autocomplete
|
|
151
|
+
*
|
|
152
|
+
* @param db - Kysely database instance
|
|
153
|
+
* @param query - Partial search query
|
|
154
|
+
* @param options - Suggestion options
|
|
155
|
+
* @returns Array of suggestions
|
|
156
|
+
*/
|
|
157
|
+
async function getSuggestions(db, query, options = {}) {
|
|
158
|
+
const limit = options.limit ?? 5;
|
|
159
|
+
const locale = options.locale;
|
|
160
|
+
let collections = options.collections;
|
|
161
|
+
if (!collections || collections.length === 0) collections = await getSearchableCollections(db);
|
|
162
|
+
if (collections.length === 0) return [];
|
|
163
|
+
const suggestions = [];
|
|
164
|
+
for (const collection of collections) {
|
|
165
|
+
const ftsManager = new FTSManager(db);
|
|
166
|
+
if (!(await ftsManager.getSearchConfig(collection))?.enabled) continue;
|
|
167
|
+
validateIdentifier(collection, "collection slug");
|
|
168
|
+
const ftsTable = ftsManager.getFtsTableName(collection);
|
|
169
|
+
const contentTable = ftsManager.getContentTableName(collection);
|
|
170
|
+
const displayColumn = searchResultDisplayColumn(await ftsManager.getSearchableFields(collection));
|
|
171
|
+
const displayColumnSql = sql`c.${sql.ref(displayColumn)}`;
|
|
172
|
+
const prefixQuery = escapeQuery(query);
|
|
173
|
+
if (!prefixQuery) continue;
|
|
174
|
+
const results = await sql`
|
|
175
|
+
SELECT
|
|
176
|
+
c.id,
|
|
177
|
+
${displayColumnSql} as title
|
|
178
|
+
FROM "${sql.raw(ftsTable)}" f
|
|
179
|
+
JOIN "${sql.raw(contentTable)}" c ON f.id = c.id
|
|
180
|
+
WHERE "${sql.raw(ftsTable)}" MATCH ${prefixQuery}
|
|
181
|
+
AND c.status = 'published'
|
|
182
|
+
AND c.deleted_at IS NULL
|
|
183
|
+
AND ${displayColumnSql} IS NOT NULL
|
|
184
|
+
${locale ? sql`AND c.locale = ${locale}` : sql``}
|
|
185
|
+
ORDER BY bm25("${sql.raw(ftsTable)}")
|
|
186
|
+
LIMIT ${limit}
|
|
187
|
+
`.execute(db);
|
|
188
|
+
for (const row of results.rows) suggestions.push({
|
|
189
|
+
collection,
|
|
190
|
+
id: row.id,
|
|
191
|
+
title: row.title
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return suggestions.slice(0, limit);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get search statistics for all collections
|
|
198
|
+
*/
|
|
199
|
+
async function getSearchStats(db) {
|
|
200
|
+
const ftsManager = new FTSManager(db);
|
|
201
|
+
const collections = await getSearchableCollections(db);
|
|
202
|
+
const stats = { collections: {} };
|
|
203
|
+
for (const collection of collections) {
|
|
204
|
+
const collectionStats = await ftsManager.getIndexStats(collection);
|
|
205
|
+
if (collectionStats) stats.collections[collection] = collectionStats;
|
|
206
|
+
}
|
|
207
|
+
return stats;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get list of collections with search enabled
|
|
211
|
+
*/
|
|
212
|
+
async function getSearchableCollections(db) {
|
|
213
|
+
return (await db.selectFrom("_dineway_collections").select(["slug", "search_config"]).execute()).filter((r) => {
|
|
214
|
+
if (!r.search_config) return false;
|
|
215
|
+
try {
|
|
216
|
+
return JSON.parse(r.search_config).enabled === true;
|
|
217
|
+
} catch {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
}).map((r) => r.slug);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Escape a query string for FTS5
|
|
224
|
+
*
|
|
225
|
+
* Handles special characters and prevents injection.
|
|
226
|
+
*/
|
|
227
|
+
function escapeQuery(query) {
|
|
228
|
+
if (!query || typeof query !== "string") return "";
|
|
229
|
+
query = query.trim();
|
|
230
|
+
if (query.length === 0) return "";
|
|
231
|
+
const escaped = query.replace(DOUBLE_QUOTE_PATTERN, "\"\"");
|
|
232
|
+
if (FTS_OPERATORS_PATTERN.test(query)) return escaped;
|
|
233
|
+
if (query.startsWith("\"") && query.endsWith("\"")) return query;
|
|
234
|
+
const terms = escaped.split(WHITESPACE_SPLIT_PATTERN).filter((t) => t.length > 0);
|
|
235
|
+
if (terms.length === 0) return "";
|
|
236
|
+
return terms.map((t) => `"${t}"*`).join(" ");
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
//#endregion
|
|
240
|
+
//#region src/search/text-extraction.ts
|
|
241
|
+
/**
|
|
242
|
+
* Text Extraction
|
|
243
|
+
*
|
|
244
|
+
* Extracts plain text from Portable Text blocks for FTS indexing.
|
|
245
|
+
* Uses @portabletext/toolkit as base with extensions for custom block types.
|
|
246
|
+
*/
|
|
247
|
+
/**
|
|
248
|
+
* Validate that a value looks like a Portable Text block array.
|
|
249
|
+
* Each element must have at least a `_type` string property.
|
|
250
|
+
*/
|
|
251
|
+
function isPortableTextArray(value) {
|
|
252
|
+
return value.every((item) => typeof item === "object" && item !== null && "_type" in item && typeof item._type === "string");
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Extract additional text from custom block types that toPlainText doesn't handle
|
|
256
|
+
*/
|
|
257
|
+
function extractCustomBlockText(block) {
|
|
258
|
+
if (block._type === "code" && "code" in block && typeof block.code === "string") return block.code;
|
|
259
|
+
if (block._type === "image") {
|
|
260
|
+
const parts = [];
|
|
261
|
+
if ("alt" in block && typeof block.alt === "string" && block.alt) parts.push(block.alt);
|
|
262
|
+
if ("caption" in block && typeof block.caption === "string" && block.caption) parts.push(block.caption);
|
|
263
|
+
return parts.join(" ");
|
|
264
|
+
}
|
|
265
|
+
return "";
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Extract plain text from Portable Text blocks
|
|
269
|
+
*
|
|
270
|
+
* Uses @portabletext/toolkit's toPlainText for standard blocks,
|
|
271
|
+
* plus extracts text from custom block types (code, images with alt/caption).
|
|
272
|
+
*
|
|
273
|
+
* @param blocks - Array of Portable Text blocks (or a JSON string)
|
|
274
|
+
* @returns Plain text content
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* ```typescript
|
|
278
|
+
* const text = extractPlainText([
|
|
279
|
+
* {
|
|
280
|
+
* _type: "block",
|
|
281
|
+
* _key: "abc",
|
|
282
|
+
* children: [{ _type: "span", _key: "s1", text: "Hello World" }]
|
|
283
|
+
* }
|
|
284
|
+
* ]);
|
|
285
|
+
* // Returns: "Hello World"
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
function extractPlainText(blocks) {
|
|
289
|
+
if (!blocks) return "";
|
|
290
|
+
let parsedBlocks;
|
|
291
|
+
if (typeof blocks === "string") try {
|
|
292
|
+
parsedBlocks = JSON.parse(blocks);
|
|
293
|
+
} catch {
|
|
294
|
+
return blocks;
|
|
295
|
+
}
|
|
296
|
+
else parsedBlocks = blocks;
|
|
297
|
+
if (!Array.isArray(parsedBlocks)) return "";
|
|
298
|
+
return [toPlainText(parsedBlocks.map((b) => {
|
|
299
|
+
const obj = { _type: b._type };
|
|
300
|
+
for (const [key, val] of Object.entries(b)) obj[key] = val;
|
|
301
|
+
return obj;
|
|
302
|
+
})), ...parsedBlocks.map(extractCustomBlockText).filter((text) => text.length > 0)].filter((t) => t.length > 0).join("\n");
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Extract searchable text from a content entry
|
|
306
|
+
*
|
|
307
|
+
* Extracts text from specified fields, handling both plain text and Portable Text.
|
|
308
|
+
*
|
|
309
|
+
* @param entry - Content entry data
|
|
310
|
+
* @param fields - Field names to extract text from
|
|
311
|
+
* @returns Object mapping field names to extracted text
|
|
312
|
+
*/
|
|
313
|
+
function extractSearchableFields(entry, fields) {
|
|
314
|
+
const result = {};
|
|
315
|
+
for (const field of fields) {
|
|
316
|
+
const value = entry[field];
|
|
317
|
+
if (value === null || value === void 0) {
|
|
318
|
+
result[field] = "";
|
|
319
|
+
continue;
|
|
320
|
+
}
|
|
321
|
+
if (typeof value === "string") if (value.startsWith("[")) result[field] = extractPlainText(value);
|
|
322
|
+
else result[field] = value;
|
|
323
|
+
else if (Array.isArray(value)) if (isPortableTextArray(value)) result[field] = extractPlainText(value);
|
|
324
|
+
else result[field] = JSON.stringify(value);
|
|
325
|
+
else if (typeof value === "object") result[field] = JSON.stringify(value);
|
|
326
|
+
else if (typeof value === "number" || typeof value === "boolean") result[field] = `${value}`;
|
|
327
|
+
else result[field] = "";
|
|
328
|
+
}
|
|
329
|
+
return result;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
//#endregion
|
|
333
|
+
//#region src/search/index.ts
|
|
334
|
+
var search_exports = /* @__PURE__ */ __exportAll({ searchWithDb: () => searchWithDb });
|
|
335
|
+
|
|
336
|
+
//#endregion
|
|
337
|
+
export { getSuggestions as a, searchWithDb as c, getSearchStats as i, extractPlainText as n, search as o, extractSearchableFields as r, searchCollection as s, search_exports as t };
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { i as encodeBase64url, n as decodeBase64url } from "./base64-Cz-aU0X1.mjs";
|
|
2
|
+
import { t as OptionsRepository } from "./options-z8VVg1Ll.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/config/secrets.ts
|
|
5
|
+
const ENCRYPTION_KEY_PREFIX = "dineway_enc_v1_";
|
|
6
|
+
const IP_SALT_OPTION_KEY = "dineway:ip_salt";
|
|
7
|
+
const PREVIEW_SECRET_OPTION_KEY = "dineway:preview_secret";
|
|
8
|
+
const ENCRYPTION_KEY_BODY_LENGTH = 43;
|
|
9
|
+
const GENERATED_SECRET_BYTES = 32;
|
|
10
|
+
const BASE64URL_CHARSET_PATTERN = /^[A-Za-z0-9_-]+$/;
|
|
11
|
+
const ENCRYPTION_KEY_PATTERN = new RegExp(`^${ENCRYPTION_KEY_PREFIX.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}[A-Za-z0-9_-]{${ENCRYPTION_KEY_BODY_LENGTH}}$`);
|
|
12
|
+
const SECRETS_CACHE_KEY = Symbol.for("@dineway-ai/core/secrets-cache@1");
|
|
13
|
+
var DinewaySecretsError = class extends Error {
|
|
14
|
+
name = "DinewaySecretsError";
|
|
15
|
+
constructor(message, code) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.code = code;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
async function parseEncryptionKeys(raw) {
|
|
21
|
+
if (!raw) return null;
|
|
22
|
+
const entries = raw.split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
|
|
23
|
+
if (entries.length === 0) return null;
|
|
24
|
+
const parsed = [];
|
|
25
|
+
const seenKids = /* @__PURE__ */ new Set();
|
|
26
|
+
for (const entry of entries) {
|
|
27
|
+
if (!ENCRYPTION_KEY_PATTERN.test(entry)) throw new DinewaySecretsError(`DINEWAY_ENCRYPTION_KEY entry is malformed. Generate one with \`dineway secrets generate\`.`, "INVALID_ENCRYPTION_KEY");
|
|
28
|
+
const body = entry.slice(15);
|
|
29
|
+
const key = decodeBase64urlStrict(body);
|
|
30
|
+
if (!key || key.length !== GENERATED_SECRET_BYTES || encodeBase64url(key) !== body) throw new DinewaySecretsError("DINEWAY_ENCRYPTION_KEY body must be canonical base64url for 32 bytes", "INVALID_ENCRYPTION_KEY");
|
|
31
|
+
const kid = await fingerprintKeyBytes(key);
|
|
32
|
+
if (seenKids.has(kid)) continue;
|
|
33
|
+
seenKids.add(kid);
|
|
34
|
+
parsed.push({
|
|
35
|
+
kid,
|
|
36
|
+
key,
|
|
37
|
+
raw: entry
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
async function fingerprintKey(raw) {
|
|
43
|
+
if (!ENCRYPTION_KEY_PATTERN.test(raw)) throw new DinewaySecretsError(`Key must match "${ENCRYPTION_KEY_PREFIX}" followed by ${ENCRYPTION_KEY_BODY_LENGTH} base64url chars`, "INVALID_ENCRYPTION_KEY");
|
|
44
|
+
const body = raw.slice(15);
|
|
45
|
+
const bytes = decodeBase64urlStrict(body);
|
|
46
|
+
if (!bytes || bytes.length !== GENERATED_SECRET_BYTES || encodeBase64url(bytes) !== body) throw new DinewaySecretsError(`Key body must decode to ${GENERATED_SECRET_BYTES} canonical base64url bytes`, "INVALID_ENCRYPTION_KEY");
|
|
47
|
+
return fingerprintKeyBytes(bytes);
|
|
48
|
+
}
|
|
49
|
+
function generateEncryptionKey() {
|
|
50
|
+
const bytes = new Uint8Array(GENERATED_SECRET_BYTES);
|
|
51
|
+
crypto.getRandomValues(bytes);
|
|
52
|
+
return `${ENCRYPTION_KEY_PREFIX}${encodeBase64url(bytes)}`;
|
|
53
|
+
}
|
|
54
|
+
async function resolveSecrets(options) {
|
|
55
|
+
const env = options.env ?? readDefaultEnv();
|
|
56
|
+
const repo = options._repo ?? new OptionsRepository(options.db);
|
|
57
|
+
const previewEnvOverride = pickFirstNonEmpty(env.DINEWAY_PREVIEW_SECRET, env.PREVIEW_SECRET);
|
|
58
|
+
const ipSaltEnvOverride = pickFirstNonEmpty(env.DINEWAY_IP_SALT, env.IP_SALT);
|
|
59
|
+
const [previewSecret, ipSalt] = await Promise.all([previewEnvOverride !== null ? Promise.resolve({
|
|
60
|
+
value: previewEnvOverride,
|
|
61
|
+
source: "env"
|
|
62
|
+
}) : ensureGeneratedOption(repo, PREVIEW_SECRET_OPTION_KEY), ipSaltEnvOverride !== null ? Promise.resolve({
|
|
63
|
+
value: ipSaltEnvOverride,
|
|
64
|
+
source: "env"
|
|
65
|
+
}) : ensureGeneratedOption(repo, IP_SALT_OPTION_KEY)]);
|
|
66
|
+
return {
|
|
67
|
+
previewSecret: previewSecret.value,
|
|
68
|
+
previewSecretSource: previewSecret.source,
|
|
69
|
+
ipSalt: ipSalt.value,
|
|
70
|
+
ipSaltSource: ipSalt.source
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
async function validateEncryptionKeyAtStartup(env) {
|
|
74
|
+
const resolved = env ?? readDefaultEnv();
|
|
75
|
+
try {
|
|
76
|
+
await parseEncryptionKeys(resolved.DINEWAY_ENCRYPTION_KEY);
|
|
77
|
+
return true;
|
|
78
|
+
} catch (error) {
|
|
79
|
+
if (error instanceof DinewaySecretsError) {
|
|
80
|
+
console.error(`[dineway] DINEWAY_ENCRYPTION_KEY is invalid: ${error.message} Generate a fresh key with \`dineway secrets generate\`.`);
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function getSecretsCache() {
|
|
87
|
+
const holder = globalThis;
|
|
88
|
+
let entry = holder[SECRETS_CACHE_KEY];
|
|
89
|
+
if (!entry) {
|
|
90
|
+
entry = { cache: /* @__PURE__ */ new WeakMap() };
|
|
91
|
+
holder[SECRETS_CACHE_KEY] = entry;
|
|
92
|
+
}
|
|
93
|
+
return entry.cache;
|
|
94
|
+
}
|
|
95
|
+
function resolveSecretsCached(db) {
|
|
96
|
+
const cache = getSecretsCache();
|
|
97
|
+
const cached = cache.get(db);
|
|
98
|
+
if (cached) return cached;
|
|
99
|
+
const promise = resolveSecrets({ db }).catch((error) => {
|
|
100
|
+
cache.delete(db);
|
|
101
|
+
throw error;
|
|
102
|
+
});
|
|
103
|
+
cache.set(db, promise);
|
|
104
|
+
return promise;
|
|
105
|
+
}
|
|
106
|
+
async function ensureGeneratedOption(repo, optionKey) {
|
|
107
|
+
const existing = await repo.get(optionKey);
|
|
108
|
+
if (typeof existing === "string" && existing.length > 0) return {
|
|
109
|
+
value: existing,
|
|
110
|
+
source: "db"
|
|
111
|
+
};
|
|
112
|
+
const generated = generateRandomSecret();
|
|
113
|
+
if (await repo.setIfAbsent(optionKey, generated)) return {
|
|
114
|
+
value: generated,
|
|
115
|
+
source: "db"
|
|
116
|
+
};
|
|
117
|
+
const winner = await repo.get(optionKey);
|
|
118
|
+
if (typeof winner !== "string" || winner.length === 0) throw new DinewaySecretsError(`Failed to persist generated secret for "${optionKey}"`, "SECRET_PERSIST_FAILED");
|
|
119
|
+
return {
|
|
120
|
+
value: winner,
|
|
121
|
+
source: "db"
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function generateRandomSecret() {
|
|
125
|
+
const bytes = new Uint8Array(GENERATED_SECRET_BYTES);
|
|
126
|
+
crypto.getRandomValues(bytes);
|
|
127
|
+
return encodeBase64url(bytes);
|
|
128
|
+
}
|
|
129
|
+
function pickFirstNonEmpty(...values) {
|
|
130
|
+
for (const value of values) if (typeof value === "string" && value.length > 0) return value;
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
function decodeBase64urlStrict(input) {
|
|
134
|
+
if (!BASE64URL_CHARSET_PATTERN.test(input)) return null;
|
|
135
|
+
try {
|
|
136
|
+
return decodeBase64url(input);
|
|
137
|
+
} catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function fingerprintKeyBytes(key) {
|
|
142
|
+
const input = new ArrayBuffer(key.byteLength);
|
|
143
|
+
new Uint8Array(input).set(key);
|
|
144
|
+
const digest = await crypto.subtle.digest("SHA-256", input);
|
|
145
|
+
return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("").slice(0, 8);
|
|
146
|
+
}
|
|
147
|
+
function readDefaultEnv() {
|
|
148
|
+
const meta = import.meta.env ?? {};
|
|
149
|
+
const proc = typeof process !== "undefined" && process.env ? process.env : {};
|
|
150
|
+
return {
|
|
151
|
+
DINEWAY_ENCRYPTION_KEY: meta.DINEWAY_ENCRYPTION_KEY ?? proc.DINEWAY_ENCRYPTION_KEY,
|
|
152
|
+
DINEWAY_PREVIEW_SECRET: meta.DINEWAY_PREVIEW_SECRET ?? proc.DINEWAY_PREVIEW_SECRET,
|
|
153
|
+
PREVIEW_SECRET: meta.PREVIEW_SECRET ?? proc.PREVIEW_SECRET,
|
|
154
|
+
DINEWAY_IP_SALT: meta.DINEWAY_IP_SALT ?? proc.DINEWAY_IP_SALT,
|
|
155
|
+
IP_SALT: meta.IP_SALT ?? proc.IP_SALT
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
//#endregion
|
|
160
|
+
export { validateEncryptionKeyAtStartup as a, resolveSecretsCached as i, fingerprintKey as n, generateEncryptionKey as r, DinewaySecretsError as t };
|