emdash 0.29.0 → 0.31.0
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/dist/{adapters-DPAkL6QF.d.mts → adapters-C0ONzkUP.d.mts} +10 -1
- package/dist/adapters-C0ONzkUP.d.mts.map +1 -0
- package/dist/{allowed-origins-FXB-FplB.mjs → allowed-origins-CCEi9bPI.mjs} +2 -2
- package/dist/{allowed-origins-FXB-FplB.mjs.map → allowed-origins-CCEi9bPI.mjs.map} +1 -1
- package/dist/api/route-utils.d.mts +3 -3
- package/dist/api/route-utils.d.mts.map +1 -1
- package/dist/api/route-utils.mjs +19 -19
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +5 -4
- package/dist/{api-DVbHNApo.mjs → api-EibxGP-V.mjs} +260 -160
- package/dist/api-EibxGP-V.mjs.map +1 -0
- package/dist/api-tokens-Cvmixds7.mjs +3 -0
- package/dist/{api-tokens-UYBkl17d.mjs → api-tokens-uPt8UDpx.mjs} +2 -2
- package/dist/{api-tokens-UYBkl17d.mjs.map → api-tokens-uPt8UDpx.mjs.map} +1 -1
- package/dist/{apply-D23iUV4q.mjs → apply-fGHCAwWN.mjs} +42 -44
- package/dist/apply-fGHCAwWN.mjs.map +1 -0
- package/dist/astro/index.d.mts +12 -13
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +90 -11
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +10 -11
- package/dist/astro/middleware/auth.d.mts.map +1 -1
- package/dist/astro/middleware/auth.mjs +56 -107
- package/dist/astro/middleware/auth.mjs.map +1 -1
- package/dist/astro/middleware/redirect.mjs +7 -7
- package/dist/astro/middleware/request-context.mjs +4 -4
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +47 -3
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +410 -123
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/PluginRegistry.d.mts +5 -1
- package/dist/astro/routes/PluginRegistry.d.mts.map +1 -1
- package/dist/astro/routes/PluginRegistry.mjs +2 -1
- package/dist/astro/routes/PluginRegistry.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +9 -8
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +9 -8
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
- package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +5 -5
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +10 -9
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +10 -9
- package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +10 -9
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +16 -15
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +17 -22
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.mjs +20 -18
- package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +13 -12
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_.mjs +6 -6
- package/dist/astro/routes/api/admin/comments/bulk.mjs +11 -10
- package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/counts.mjs +6 -6
- package/dist/astro/routes/api/admin/comments/index.mjs +11 -10
- package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +5 -5
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +4 -4
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +12 -10
- package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +41 -40
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +41 -40
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +46 -40
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +39 -0
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/settings.d.mts +9 -0
- package/dist/astro/routes/api/admin/plugins/_id_/settings.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +78 -0
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +40 -39
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +43 -40
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +46 -40
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +40 -39
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +46 -41
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +40 -39
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +40 -39
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +44 -41
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +40 -39
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +45 -42
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +41 -40
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +40 -39
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +40 -39
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +9 -8
- package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
- package/dist/astro/routes/api/admin/users/index.mjs +9 -8
- package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
- package/dist/astro/routes/api/auth/dev-bypass.mjs +7 -7
- package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
- package/dist/astro/routes/api/auth/invite/complete.mjs +13 -12
- package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
- package/dist/astro/routes/api/auth/invite/index.mjs +10 -9
- package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
- package/dist/astro/routes/api/auth/invite/register-options.mjs +12 -11
- package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/logout.mjs +4 -4
- package/dist/astro/routes/api/auth/magic-link/send.mjs +12 -11
- package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +5 -5
- package/dist/astro/routes/api/auth/me.mjs +9 -8
- package/dist/astro/routes/api/auth/me.mjs.map +1 -1
- package/dist/astro/routes/api/auth/mode.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/mode.mjs +6 -3
- package/dist/astro/routes/api/auth/mode.mjs.map +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +15 -5
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs.map +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +11 -5
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +8 -7
- package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/options.mjs +13 -12
- package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +11 -10
- package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +12 -11
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/verify.mjs +12 -11
- package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/complete.mjs +13 -12
- package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/request.mjs +12 -11
- package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +14 -13
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +13 -12
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +5 -4
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +14 -13
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +10 -8
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +20 -19
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -4
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +10 -8
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +19 -18
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +5 -4
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -9
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/authors.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/index.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/index.mjs +12 -10
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/trash.mjs +10 -9
- package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
- package/dist/astro/routes/api/dashboard.mjs +8 -8
- package/dist/astro/routes/api/dev/emails.mjs +4 -4
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +17 -16
- package/dist/astro/routes/api/import/probe.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +4 -4
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -12
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +13 -13
- package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -11
- package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +11 -10
- package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +11 -10
- package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +11 -12
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +11 -10
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +17 -16
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +11 -12
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +24 -23
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +7 -8
- package/dist/astro/routes/api/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/mcp.d.mts.map +1 -1
- package/dist/astro/routes/api/mcp.mjs +149 -45
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +9 -8
- package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/usage.d.mts +8 -0
- package/dist/astro/routes/api/media/_id_/usage.d.mts.map +1 -0
- package/dist/astro/routes/api/media/_id_/usage.mjs +37 -0
- package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -0
- package/dist/astro/routes/api/media/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/media/_id_.mjs +26 -10
- package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/file/_...key_.mjs +4 -3
- package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
- package/dist/astro/routes/api/media/providers/index.mjs +4 -4
- package/dist/astro/routes/api/media/upload-url.mjs +10 -9
- package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
- package/dist/astro/routes/api/media.d.mts.map +1 -1
- package/dist/astro/routes/api/media.mjs +31 -11
- package/dist/astro/routes/api/media.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +10 -9
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.mjs +10 -9
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +10 -9
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.mjs +10 -9
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_.mjs +10 -9
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/index.mjs +10 -9
- package/dist/astro/routes/api/menus/index.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.d.mts.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.mjs +29 -16
- package/dist/astro/routes/api/oauth/authorize.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
- package/dist/astro/routes/api/oauth/device/code.mjs +10 -10
- package/dist/astro/routes/api/oauth/device/token.mjs +9 -9
- package/dist/astro/routes/api/oauth/register.mjs +4 -4
- package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
- package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
- package/dist/astro/routes/api/oauth/token.mjs +7 -7
- package/dist/astro/routes/api/openapi.json.mjs +52 -24
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +20 -32
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/index.mjs +12 -11
- package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
- package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/_id_.mjs +13 -12
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/index.mjs +13 -12
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/index.mjs +16 -15
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/translations.mjs +11 -11
- package/dist/astro/routes/api/relations/index.mjs +16 -15
- package/dist/astro/routes/api/relations/index.mjs.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -4
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +40 -39
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +40 -39
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +40 -39
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +40 -39
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +40 -39
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +9 -9
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +40 -39
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +40 -39
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +13 -12
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +12 -11
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +13 -12
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +8 -8
- package/dist/astro/routes/api/search/suggest.mjs +12 -11
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +12 -11
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +12 -11
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.d.mts +9 -0
- package/dist/astro/routes/api/settings/backups/archives/_name_.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +48 -0
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -0
- package/dist/astro/routes/api/settings/backups/archives/index.d.mts +8 -0
- package/dist/astro/routes/api/settings/backups/archives/index.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +23 -0
- package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -0
- package/dist/astro/routes/api/settings/backups/export.d.mts +8 -0
- package/dist/astro/routes/api/settings/backups/export.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/backups/export.mjs +35 -0
- package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -0
- package/dist/astro/routes/api/settings/backups/index.d.mts +9 -0
- package/dist/astro/routes/api/settings/backups/index.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/backups/index.mjs +52 -0
- package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -0
- package/dist/astro/routes/api/settings/email.mjs +5 -5
- package/dist/astro/routes/api/settings.mjs +14 -13
- package/dist/astro/routes/api/settings.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.mjs +19 -15
- package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin.mjs +18 -14
- package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-bypass.mjs +26 -26
- package/dist/astro/routes/api/setup/dev-reset.mjs +3 -3
- package/dist/astro/routes/api/setup/index.mjs +28 -27
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +5 -5
- package/dist/astro/routes/api/snapshot.mjs +8 -215
- package/dist/astro/routes/api/snapshot.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +15 -14
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +15 -14
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +15 -14
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +15 -14
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
- package/dist/astro/routes/api/themes/preview.mjs +6 -6
- package/dist/astro/routes/api/typegen.mjs +6 -6
- package/dist/astro/routes/api/well-known/auth.mjs +1 -1
- package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts.map +1 -1
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +4 -3
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs.map +1 -1
- package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts.map +1 -1
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +4 -3
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +9 -8
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +12 -11
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +12 -11
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.mjs +7 -7
- package/dist/astro/routes/api/widget-areas/index.mjs +12 -11
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
- package/dist/astro/routes/api/widget-components.mjs +4 -4
- package/dist/astro/routes/robots.txt.mjs +7 -7
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +11 -11
- package/dist/astro/routes/sitemap.xml.mjs +8 -8
- package/dist/astro/types.d.mts +38 -17
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/{authorize-BmCwQCib.mjs → authorize-6WPZa1xZ.mjs} +7 -4
- package/dist/authorize-6WPZa1xZ.mjs.map +1 -0
- package/dist/backup-Qr9PaGUo.mjs +241 -0
- package/dist/backup-Qr9PaGUo.mjs.map +1 -0
- package/dist/{base64-C74Msx8h.mjs → base64-B-PsqheR.mjs} +8 -4
- package/dist/base64-B-PsqheR.mjs.map +1 -0
- package/dist/{byline-BWb5H-65.mjs → byline-BTOxUlFF.mjs} +6 -6
- package/dist/{byline-BWb5H-65.mjs.map → byline-BTOxUlFF.mjs.map} +1 -1
- package/dist/{byline-fields-DO6bAYK8.mjs → byline-fields-CdU_LTF1.mjs} +1 -1
- package/dist/{byline-fields-DO6bAYK8.mjs.map → byline-fields-CdU_LTF1.mjs.map} +1 -1
- package/dist/{bylines-CHojDMpj.mjs → bylines-FyZu6TbJ.mjs} +7 -7
- package/dist/{bylines-CHojDMpj.mjs.map → bylines-FyZu6TbJ.mjs.map} +1 -1
- package/dist/{bylines-BGuKFaBy.mjs → bylines-oVN0iPwX.mjs} +12 -8
- package/dist/bylines-oVN0iPwX.mjs.map +1 -0
- package/dist/{cache-BeR7RfN8.mjs → cache-DDwy3JDW.mjs} +2 -2
- package/dist/{cache-BeR7RfN8.mjs.map → cache-DDwy3JDW.mjs.map} +1 -1
- package/dist/{challenge-store-B426wQ6O.mjs → challenge-store-BFzgFRog.mjs} +1 -1
- package/dist/{challenge-store-B426wQ6O.mjs.map → challenge-store-BFzgFRog.mjs.map} +1 -1
- package/dist/{chunks-BU5_nrAC.mjs → chunks-Bq-5DPrD.mjs} +2 -2
- package/dist/{chunks-BU5_nrAC.mjs.map → chunks-Bq-5DPrD.mjs.map} +1 -1
- package/dist/cli/index.mjs +139 -32
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +54 -3
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +16 -4
- package/dist/client/index.mjs.map +1 -1
- package/dist/{comment-SWh31kS0.mjs → comment-B9cUud8H.mjs} +2 -2
- package/dist/{comment-SWh31kS0.mjs.map → comment-B9cUud8H.mjs.map} +1 -1
- package/dist/{comment-reaction-DgcpziXI.mjs → comment-reaction-VUXO981F.mjs} +2 -2
- package/dist/{comment-reaction-DgcpziXI.mjs.map → comment-reaction-VUXO981F.mjs.map} +1 -1
- package/dist/{comments-kZYGppMS.mjs → comments-PXj1E9Si.mjs} +3 -3
- package/dist/{comments-kZYGppMS.mjs.map → comments-PXj1E9Si.mjs.map} +1 -1
- package/dist/{components-CliOkZAs.mjs → components-DZkL4Fx0.mjs} +1 -1
- package/dist/{components-CliOkZAs.mjs.map → components-DZkL4Fx0.mjs.map} +1 -1
- package/dist/{config-CVssduLe.mjs → config-B6b_BobR.mjs} +6 -2
- package/dist/config-B6b_BobR.mjs.map +1 -0
- package/dist/{content-BO61Sx4j.mjs → content-BC43pICM.mjs} +53 -19
- package/dist/content-BC43pICM.mjs.map +1 -0
- package/dist/{content-refresh-BkkApzeS.mjs → content-refresh-CPMSauD3.mjs} +96 -4
- package/dist/content-refresh-CPMSauD3.mjs.map +1 -0
- package/dist/{context-DtSFYFuS.mjs → context-DOurRIrb.mjs} +97 -74
- package/dist/context-DOurRIrb.mjs.map +1 -0
- package/dist/{cron-YFJ7uNVA.mjs → cron-BlKIMD_e.mjs} +1 -1
- package/dist/{cron-YFJ7uNVA.mjs.map → cron-BlKIMD_e.mjs.map} +1 -1
- package/dist/{dashboard-xo_gPs_D.mjs → dashboard-CBm4zhc3.mjs} +4 -4
- package/dist/{dashboard-xo_gPs_D.mjs.map → dashboard-CBm4zhc3.mjs.map} +1 -1
- package/dist/database/pg-migration-lock.d.mts.map +1 -1
- package/dist/database/pg-migration-lock.mjs +1 -4
- package/dist/database/pg-migration-lock.mjs.map +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +2 -2
- package/dist/db/index.mjs.map +1 -1
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/{db-errors-BKuXh_fi.mjs → db-errors-CcWLaRiR.mjs} +4 -2
- package/dist/db-errors-CcWLaRiR.mjs.map +1 -0
- package/dist/{default-DY5ovGUG.mjs → default-C4v9KP56.mjs} +1 -1
- package/dist/{default-DY5ovGUG.mjs.map → default-C4v9KP56.mjs.map} +1 -1
- package/dist/{device-flow-CPXQ_QfW.mjs → device-flow-BeA6lUS1.mjs} +5 -6
- package/dist/device-flow-BeA6lUS1.mjs.map +1 -0
- package/dist/{dialect-helpers-Cue7QQOR.mjs → dialect-helpers-BtOwo2us.mjs} +60 -14
- package/dist/dialect-helpers-BtOwo2us.mjs.map +1 -0
- package/dist/{email-console-CjkQc7oY.mjs → email-console-C-9Ng8DM.mjs} +1 -1
- package/dist/{email-console-CjkQc7oY.mjs.map → email-console-C-9Ng8DM.mjs.map} +1 -1
- package/dist/error-DJ98TRbQ.mjs +90 -0
- package/dist/error-DJ98TRbQ.mjs.map +1 -0
- package/dist/{error-CfJMLSkd.mjs → errors-DtEXIQQV.mjs} +15 -84
- package/dist/errors-DtEXIQQV.mjs.map +1 -0
- package/dist/{escape-r8_GbEU2.mjs → escape-CFedIB1C.mjs} +1 -1
- package/dist/{escape-r8_GbEU2.mjs.map → escape-CFedIB1C.mjs.map} +1 -1
- package/dist/{field-defs-cache-BVrNCgSj.mjs → field-defs-cache-KfNJ_qLQ.mjs} +2 -2
- package/dist/{field-defs-cache-BVrNCgSj.mjs.map → field-defs-cache-KfNJ_qLQ.mjs.map} +1 -1
- package/dist/{fts-manager-BD9s77qh.mjs → fts-manager-hyCU9OOp.mjs} +3 -3
- package/dist/{fts-manager-BD9s77qh.mjs.map → fts-manager-hyCU9OOp.mjs.map} +1 -1
- package/dist/{hreflang-CgIxhH4k.d.mts → hreflang-CIxH_LKz.d.mts} +2 -2
- package/dist/{hreflang-CgIxhH4k.d.mts.map → hreflang-CIxH_LKz.d.mts.map} +1 -1
- package/dist/{hreflang-pAWUiPd_.mjs → hreflang-CbYeCzl9.mjs} +7 -7
- package/dist/{hreflang-pAWUiPd_.mjs.map → hreflang-CbYeCzl9.mjs.map} +1 -1
- package/dist/{import-2jHtLzsO.mjs → import-oDYCgNYQ.mjs} +4 -4
- package/dist/{import-2jHtLzsO.mjs.map → import-oDYCgNYQ.mjs.map} +1 -1
- package/dist/{index-DxjWLKGT.d.mts → index-BEui-cRd.d.mts} +3 -3
- package/dist/{index-DxjWLKGT.d.mts.map → index-BEui-cRd.d.mts.map} +1 -1
- package/dist/{index-BXOCyLj0.d.mts → index-BcEH_FfS.d.mts} +812 -16
- package/dist/index-BcEH_FfS.d.mts.map +1 -0
- package/dist/index.d.mts +18 -19
- package/dist/index.mjs +61 -60
- package/dist/{load-DgoWMdRX.mjs → load-Dg5gtWma.mjs} +2 -2
- package/dist/{load-DgoWMdRX.mjs.map → load-Dg5gtWma.mjs.map} +1 -1
- package/dist/{loader-Rb8QlGZp.mjs → loader-D4rigvjR.mjs} +170 -6
- package/dist/loader-D4rigvjR.mjs.map +1 -0
- package/dist/{manifest-schema-DeGNma2O.mjs → manifest-schema-bCq54i7F.mjs} +16 -2
- package/dist/manifest-schema-bCq54i7F.mjs.map +1 -0
- package/dist/media/image-endpoint.d.mts +30 -2
- package/dist/media/image-endpoint.d.mts.map +1 -1
- package/dist/media/image-endpoint.mjs +29 -3
- package/dist/media/image-endpoint.mjs.map +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/local-runtime.d.mts +12 -13
- package/dist/media/local-runtime.d.mts.map +1 -1
- package/dist/media/local-runtime.mjs +6 -6
- package/dist/media-BJ6SRY3g.mjs +247 -0
- package/dist/media-BJ6SRY3g.mjs.map +1 -0
- package/dist/{media-allowlist-Dc05vKtt.mjs → media-allowlist-jUppPWFy.mjs} +1 -1
- package/dist/{media-allowlist-Dc05vKtt.mjs.map → media-allowlist-jUppPWFy.mjs.map} +1 -1
- package/dist/{media-D2ZFowpn.mjs → media-its1WLYv.mjs} +2 -2
- package/dist/{media-D2ZFowpn.mjs.map → media-its1WLYv.mjs.map} +1 -1
- package/dist/media-upload-DNu3QySc.mjs +145 -0
- package/dist/media-upload-DNu3QySc.mjs.map +1 -0
- package/dist/{media-url-DgIEYZr4.mjs → media-url-BCm5vBn6.mjs} +1 -1
- package/dist/{media-url-DgIEYZr4.mjs.map → media-url-BCm5vBn6.mjs.map} +1 -1
- package/dist/{media-usage-B__v9NMm.mjs → media-usage-DPQ3K4xB.mjs} +138 -5
- package/dist/{media-usage-B__v9NMm.mjs.map → media-usage-DPQ3K4xB.mjs.map} +1 -1
- package/dist/{menus-BpfevlJD.mjs → menus-BMGzWyWH.mjs} +15 -8
- package/dist/menus-BMGzWyWH.mjs.map +1 -0
- package/dist/{menus-BtvH7Z7t.mjs → menus-CPf_SW7u.mjs} +234 -13
- package/dist/menus-CPf_SW7u.mjs.map +1 -0
- package/dist/{mode-BVnhGZ2o.mjs → mode-fiXRMfeA.mjs} +1 -1
- package/dist/{mode-BVnhGZ2o.mjs.map → mode-fiXRMfeA.mjs.map} +1 -1
- package/dist/{oauth-authorization-BWqWTHBK.mjs → oauth-authorization-oqfbBuMH.mjs} +5 -6
- package/dist/oauth-authorization-oqfbBuMH.mjs.map +1 -0
- package/dist/{oauth-clients-43_XADoa.mjs → oauth-clients-BlrUHAsf.mjs} +1 -1
- package/dist/{oauth-clients-43_XADoa.mjs.map → oauth-clients-BlrUHAsf.mjs.map} +1 -1
- package/dist/{oauth-state-store-BRSUEkmx.mjs → oauth-state-store-DnvjRMy6.mjs} +2 -1
- package/dist/{oauth-state-store-BRSUEkmx.mjs.map → oauth-state-store-DnvjRMy6.mjs.map} +1 -1
- package/dist/{oauth-user-lookup-Ctgemb0k.mjs → oauth-user-lookup-oUllxvAv.mjs} +1 -1
- package/dist/{oauth-user-lookup-Ctgemb0k.mjs.map → oauth-user-lookup-oUllxvAv.mjs.map} +1 -1
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{options-COXGTtqd.d.mts → options-BqMkWfYa.d.mts} +6 -6
- package/dist/{options-COXGTtqd.d.mts.map → options-BqMkWfYa.d.mts.map} +1 -1
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.d.mts.map +1 -1
- package/dist/page/index.mjs.map +1 -1
- package/dist/{parse-GLksnn-B.mjs → parse-53zyxlpv.mjs} +4 -12
- package/dist/{parse-GLksnn-B.mjs.map → parse-53zyxlpv.mjs.map} +1 -1
- package/dist/{passkey-config-CjA1UbDj.mjs → passkey-config-C-SKpc0-.mjs} +1 -1
- package/dist/{passkey-config-CjA1UbDj.mjs.map → passkey-config-C-SKpc0-.mjs.map} +1 -1
- package/dist/{placeholder-DR-eeZr-.d.mts → placeholder-Dop47JMM.d.mts} +1 -1
- package/dist/{placeholder-DR-eeZr-.d.mts.map → placeholder-Dop47JMM.d.mts.map} +1 -1
- package/dist/plugin-types.d.mts +21 -2
- package/dist/plugin-types.d.mts.map +1 -1
- package/dist/plugin-utils.d.mts +18 -17
- package/dist/plugin-utils.d.mts.map +1 -1
- package/dist/plugin-utils.mjs +8 -6
- package/dist/plugin-utils.mjs.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +10 -11
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.mjs +15 -3
- package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
- package/dist/{portable-text-BAkgEKcv.mjs → portable-text-sDj92Kxv.mjs} +1 -1
- package/dist/{portable-text-BAkgEKcv.mjs.map → portable-text-sDj92Kxv.mjs.map} +1 -1
- package/dist/{preview-Rloa09Wp.mjs → preview-D4Jnbfx7.mjs} +2 -2
- package/dist/{preview-Rloa09Wp.mjs.map → preview-D4Jnbfx7.mjs.map} +1 -1
- package/dist/{public-url-C0cEvrRu.mjs → public-url-DSGTnJFw.mjs} +5 -3
- package/dist/public-url-DSGTnJFw.mjs.map +1 -0
- package/dist/{query-ZzvXyxWq.mjs → query-BbJQ-dGg.mjs} +15 -15
- package/dist/{query-ZzvXyxWq.mjs.map → query-BbJQ-dGg.mjs.map} +1 -1
- package/dist/{query-BxT95opY.mjs → query-DdFGHzQF.mjs} +3 -3
- package/dist/{query-BxT95opY.mjs.map → query-DdFGHzQF.mjs.map} +1 -1
- package/dist/{rate-limit-Cg4Rvc_-.mjs → rate-limit-D3IEiUi2.mjs} +2 -2
- package/dist/{rate-limit-Cg4Rvc_-.mjs.map → rate-limit-D3IEiUi2.mjs.map} +1 -1
- package/dist/{redirect-Ch3E98qZ.mjs → redirect-BoUac4NT.mjs} +10 -4
- package/dist/redirect-BoUac4NT.mjs.map +1 -0
- package/dist/{redirect-Ce_6Yb6z.mjs → redirect-Botom7X6.mjs} +1 -1
- package/dist/{redirect-Ce_6Yb6z.mjs.map → redirect-Botom7X6.mjs.map} +1 -1
- package/dist/{redirects-CXmVGRNZ.mjs → redirects-ChbpqKiS.mjs} +4 -4
- package/dist/{redirects-CXmVGRNZ.mjs.map → redirects-ChbpqKiS.mjs.map} +1 -1
- package/dist/{redirects-CeD7K7EX.mjs → redirects-D457qwt0.mjs} +10 -181
- package/dist/redirects-D457qwt0.mjs.map +1 -0
- package/dist/{registry-CyIXPi4E.mjs → registry-y21kjhfG.mjs} +97 -8
- package/dist/registry-y21kjhfG.mjs.map +1 -0
- package/dist/{relation-Ba68Tm4Z.mjs → relation-Du0r04E0.mjs} +3 -3
- package/dist/{relation-Ba68Tm4Z.mjs.map → relation-Du0r04E0.mjs.map} +1 -1
- package/dist/{relations-CbBpoOys.d.mts → relations-BKybBoOX.d.mts} +315 -9
- package/dist/relations-BKybBoOX.d.mts.map +1 -0
- package/dist/{relations-BmBmX4Eb.mjs → relations-CZMpBqEd.mjs} +3 -3
- package/dist/{relations-BmBmX4Eb.mjs.map → relations-CZMpBqEd.mjs.map} +1 -1
- package/dist/{relations-C8hVyEy0.mjs → relations-DtX1UMBH.mjs} +13 -7
- package/dist/relations-DtX1UMBH.mjs.map +1 -0
- package/dist/{request-meta-DCwktC5P.mjs → request-meta-DzXYYI-n.mjs} +2 -2
- package/dist/{request-meta-DCwktC5P.mjs.map → request-meta-DzXYYI-n.mjs.map} +1 -1
- package/dist/{resolve-Cd9dzclN.mjs → resolve-DFr4kq72.mjs} +2 -2
- package/dist/{resolve-Cd9dzclN.mjs.map → resolve-DFr4kq72.mjs.map} +1 -1
- package/dist/{runner-jt65bF7F.mjs → runner-BdeLEgad.mjs} +334 -200
- package/dist/runner-BdeLEgad.mjs.map +1 -0
- package/dist/{runner-CiNdIk3y.d.mts → runner-Dd8m8k9F.d.mts} +2 -2
- package/dist/{runner-CiNdIk3y.d.mts.map → runner-Dd8m8k9F.d.mts.map} +1 -1
- package/dist/runtime.d.mts +11 -12
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +4 -4
- package/dist/{schema-DwjufZ1S.mjs → schema-BH8P8vaC.mjs} +3 -3
- package/dist/{schema-DwjufZ1S.mjs.map → schema-BH8P8vaC.mjs.map} +1 -1
- package/dist/scopes-DTIkIaGA.mjs +27 -0
- package/dist/scopes-DTIkIaGA.mjs.map +1 -0
- package/dist/{search-Cl875CVE.mjs → search-D-Yhpmvs.mjs} +8 -7
- package/dist/search-D-Yhpmvs.mjs.map +1 -0
- package/dist/{secrets-CO_bEmII.mjs → secrets-CQ-69kF9.mjs} +25 -19
- package/dist/secrets-CQ-69kF9.mjs.map +1 -0
- package/dist/{sections-DTKzgoiS.mjs → sections-CzVBAKjw.mjs} +3 -3
- package/dist/{sections-DTKzgoiS.mjs.map → sections-CzVBAKjw.mjs.map} +1 -1
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +20 -20
- package/dist/seo/index.d.mts +14 -3
- package/dist/seo/index.d.mts.map +1 -1
- package/dist/seo/index.mjs +17 -17
- package/dist/seo/index.mjs.map +1 -1
- package/dist/{seo-BjrbXAd_.mjs → seo-C3GDfT0V.mjs} +1 -1
- package/dist/{seo-BjrbXAd_.mjs.map → seo-C3GDfT0V.mjs.map} +1 -1
- package/dist/{seo-BLm6SXzS.mjs → seo-kJzVAmmu.mjs} +2 -2
- package/dist/{seo-BLm6SXzS.mjs.map → seo-kJzVAmmu.mjs.map} +1 -1
- package/dist/{service-D6zDmKXy.mjs → service-CQnc276a.mjs} +3 -3
- package/dist/{service-D6zDmKXy.mjs.map → service-CQnc276a.mjs.map} +1 -1
- package/dist/{session-user-DoSs6YM8.mjs → session-user-DbHqKDKe.mjs} +1 -1
- package/dist/{session-user-DoSs6YM8.mjs.map → session-user-DbHqKDKe.mjs.map} +1 -1
- package/dist/{settings-BuQYvLfy.mjs → settings-C2PaBS49.mjs} +4 -4
- package/dist/{settings-BuQYvLfy.mjs.map → settings-C2PaBS49.mjs.map} +1 -1
- package/dist/{settings-CmS3TwXf.mjs → settings-Dtc0DU31.mjs} +3 -3
- package/dist/{settings-CmS3TwXf.mjs.map → settings-Dtc0DU31.mjs.map} +1 -1
- package/dist/{setup-complete-BPNgLHlU.mjs → setup-complete-CdIlqloh.mjs} +1 -1
- package/dist/{setup-complete-BPNgLHlU.mjs.map → setup-complete-CdIlqloh.mjs.map} +1 -1
- package/dist/{setup-nonce-DEPZX96T.mjs → setup-nonce-DqiIPr-J.mjs} +1 -1
- package/dist/{setup-nonce-DEPZX96T.mjs.map → setup-nonce-DqiIPr-J.mjs.map} +1 -1
- package/dist/{single-flight-cache-DEtW-OEG.mjs → single-flight-cache-C2exrGAi.mjs} +1 -1
- package/dist/{single-flight-cache-DEtW-OEG.mjs.map → single-flight-cache-C2exrGAi.mjs.map} +1 -1
- package/dist/{site-url-CcLy5D5s.mjs → site-url-NGJT6NTU.mjs} +1 -1
- package/dist/{site-url-CcLy5D5s.mjs.map → site-url-NGJT6NTU.mjs.map} +1 -1
- package/dist/snapshot-BdpUJKD-.mjs +216 -0
- package/dist/snapshot-BdpUJKD-.mjs.map +1 -0
- package/dist/{ssrf-TrKYJAy0.mjs → ssrf-CviKqWmq.mjs} +1 -1
- package/dist/{ssrf-TrKYJAy0.mjs.map → ssrf-CviKqWmq.mjs.map} +1 -1
- package/dist/state-xxv6ZTMv.mjs +128 -0
- package/dist/state-xxv6ZTMv.mjs.map +1 -0
- package/dist/{status-D3Gy1Zc6.mjs → status-COfycGIU.mjs} +1 -1
- package/dist/{status-D3Gy1Zc6.mjs.map → status-COfycGIU.mjs.map} +1 -1
- 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 +1 -1
- package/dist/{taxonomies-pUkuD6nj.mjs → taxonomies-HI9fnTdp.mjs} +8 -8
- package/dist/{taxonomies-pUkuD6nj.mjs.map → taxonomies-HI9fnTdp.mjs.map} +1 -1
- package/dist/{taxonomies-ClS4RKaZ.mjs → taxonomies-rMeBzOjX.mjs} +26 -17
- package/dist/taxonomies-rMeBzOjX.mjs.map +1 -0
- package/dist/{taxonomy-BkxbUMSw.mjs → taxonomy-0mCI25HN.mjs} +51 -13
- package/dist/taxonomy-0mCI25HN.mjs.map +1 -0
- package/dist/{tokens-BV6fgl5A.mjs → tokens-DVltpO2D.mjs} +2 -2
- package/dist/{tokens-BV6fgl5A.mjs.map → tokens-DVltpO2D.mjs.map} +1 -1
- package/dist/{transport-DTFhhPOg.mjs → transport-CKrlqSpD.mjs} +1 -1
- package/dist/{transport-DTFhhPOg.mjs.map → transport-CKrlqSpD.mjs.map} +1 -1
- package/dist/{transport-DmlmzD2U.d.mts → transport-Vd7VdqHv.d.mts} +1 -1
- package/dist/{transport-DmlmzD2U.d.mts.map → transport-Vd7VdqHv.d.mts.map} +1 -1
- package/dist/{trusted-proxy-CSgZVESw.mjs → trusted-proxy-CwjQj0YG.mjs} +1 -1
- package/dist/{trusted-proxy-CSgZVESw.mjs.map → trusted-proxy-CwjQj0YG.mjs.map} +1 -1
- package/dist/{types-B6-N9cBB.d.mts → types-B4vm81VH.d.mts} +1 -1
- package/dist/{types-B6-N9cBB.d.mts.map → types-B4vm81VH.d.mts.map} +1 -1
- package/dist/{types-Cm4Cz-8M.d.mts → types-B97jg3aW.d.mts} +6 -1
- package/dist/{types-Cm4Cz-8M.d.mts.map → types-B97jg3aW.d.mts.map} +1 -1
- package/dist/{types-BNZsPL9z.mjs → types-BD40g7zz.mjs} +1 -1
- package/dist/{types-BNZsPL9z.mjs.map → types-BD40g7zz.mjs.map} +1 -1
- package/dist/{types-QnlQIyPE.d.mts → types-BNfPHfay.d.mts} +1 -1
- package/dist/{types-QnlQIyPE.d.mts.map → types-BNfPHfay.d.mts.map} +1 -1
- package/dist/{types-DLIrNtv5.d.mts → types-BfYUPJdP.d.mts} +2 -2
- package/dist/{types-DLIrNtv5.d.mts.map → types-BfYUPJdP.d.mts.map} +1 -1
- package/dist/{types-CtDVagM4.d.mts → types-BvB7gDOD.d.mts} +38 -4
- package/dist/types-BvB7gDOD.d.mts.map +1 -0
- package/dist/{types-B_pmP7Yq.d.mts → types-C7U0HlEr.d.mts} +1 -1
- package/dist/{types-B_pmP7Yq.d.mts.map → types-C7U0HlEr.d.mts.map} +1 -1
- package/dist/{types-Ch8pFMEm.mjs → types-CrRUFdej.mjs} +3 -3
- package/dist/{types-Ch8pFMEm.mjs.map → types-CrRUFdej.mjs.map} +1 -1
- package/dist/{types-momGysZk.d.mts → types-DPKhI5ib.d.mts} +9 -1
- package/dist/types-DPKhI5ib.d.mts.map +1 -0
- package/dist/{types-BCVuUPrL.d.mts → types-Kmaxdarz.d.mts} +1 -1
- package/dist/{types-BCVuUPrL.d.mts.map → types-Kmaxdarz.d.mts.map} +1 -1
- package/dist/{types-qljd1hsL.d.mts → types-iVeZ5g6N.d.mts} +1 -1
- package/dist/{types-qljd1hsL.d.mts.map → types-iVeZ5g6N.d.mts.map} +1 -1
- package/dist/{user-DTxX_Fha.mjs → user-aTXqmXBz.mjs} +3 -3
- package/dist/{user-DTxX_Fha.mjs.map → user-aTXqmXBz.mjs.map} +1 -1
- package/dist/{utils-Cz8PVrl4.mjs → utils-BbUgmeZG.mjs} +1 -1
- package/dist/{utils-Cz8PVrl4.mjs.map → utils-BbUgmeZG.mjs.map} +1 -1
- package/dist/{validate-C3CpWlNt.mjs → validate-CDT1jl6_.mjs} +11 -6
- package/dist/validate-CDT1jl6_.mjs.map +1 -0
- package/dist/{validate-9jLuE301.d.mts → validate-DULfgpJP.d.mts} +5 -5
- package/dist/{validate-9jLuE301.d.mts.map → validate-DULfgpJP.d.mts.map} +1 -1
- package/dist/{validation-DM2K_NJC.mjs → validation-DlD0E35W.mjs} +10 -10
- package/dist/{validation-DM2K_NJC.mjs.map → validation-DlD0E35W.mjs.map} +1 -1
- package/dist/version-Ci6bw6YK.mjs +7 -0
- package/dist/{version-BlIJvNAZ.mjs.map → version-Ci6bw6YK.mjs.map} +1 -1
- package/dist/{widgets-B_X6_UXJ.mjs → widgets-5fipNkMT.mjs} +3 -3
- package/dist/{widgets-B_X6_UXJ.mjs.map → widgets-5fipNkMT.mjs.map} +1 -1
- package/dist/{wxr-taxonomies-tADW4KTa.d.mts → wxr-taxonomies-B4tMuN5T.d.mts} +1 -1
- package/dist/{wxr-taxonomies-tADW4KTa.d.mts.map → wxr-taxonomies-B4tMuN5T.d.mts.map} +1 -1
- package/dist/{wxr-taxonomies-oNJB2S81.mjs → wxr-taxonomies-BmUnBNgz.mjs} +4 -4
- package/dist/{wxr-taxonomies-oNJB2S81.mjs.map → wxr-taxonomies-BmUnBNgz.mjs.map} +1 -1
- package/dist/{zod-generator-CrfV79De.mjs → zod-generator-CwkHWz4f.mjs} +2 -2
- package/dist/{zod-generator-CrfV79De.mjs.map → zod-generator-CwkHWz4f.mjs.map} +1 -1
- package/package.json +8 -8
- package/src/api/authorize.ts +10 -1
- package/src/api/error.ts +5 -5
- package/src/api/errors.ts +14 -0
- package/src/api/handlers/backup.ts +312 -0
- package/src/api/handlers/bylines.ts +5 -4
- package/src/api/handlers/content.ts +61 -9
- package/src/api/handlers/device-flow.ts +2 -3
- package/src/api/handlers/index.ts +16 -0
- package/src/api/handlers/marketplace.ts +38 -0
- package/src/api/handlers/media-upload.ts +210 -0
- package/src/api/handlers/media-usage.ts +211 -2
- package/src/api/handlers/menus.ts +11 -6
- package/src/api/handlers/oauth-authorization.ts +2 -6
- package/src/api/handlers/plugin-settings.ts +218 -0
- package/src/api/handlers/plugins.ts +41 -0
- package/src/api/handlers/registry.ts +39 -0
- package/src/api/handlers/relations.ts +7 -2
- package/src/api/handlers/snapshot.ts +21 -3
- package/src/api/handlers/taxonomies.ts +22 -14
- package/src/api/openapi/document.ts +48 -6
- package/src/api/parse.ts +1 -15
- package/src/api/public-url.ts +4 -2
- package/src/api/schemas/bylines.ts +4 -4
- package/src/api/schemas/common.ts +13 -8
- package/src/api/schemas/media-usage.ts +72 -0
- package/src/api/schemas/media.ts +32 -1
- package/src/api/schemas/menus.ts +2 -1
- package/src/api/schemas/relations.ts +3 -1
- package/src/api/schemas/taxonomies.ts +4 -2
- package/src/astro/integration/index.ts +38 -0
- package/src/astro/integration/routes.ts +35 -0
- package/src/astro/integration/runtime.ts +6 -0
- package/src/astro/integration/virtual-modules.ts +41 -7
- package/src/astro/integration/vite-config.ts +17 -1
- package/src/astro/middleware/auth.ts +70 -78
- package/src/astro/middleware/csp.ts +5 -2
- package/src/astro/middleware.ts +86 -31
- package/src/astro/public-plugin-api-routes.ts +2 -1
- package/src/astro/routes/PluginRegistry.tsx +5 -2
- package/src/astro/routes/admin.astro +56 -16
- package/src/astro/routes/api/admin/api-tokens/index.ts +2 -2
- package/src/astro/routes/api/admin/bylines/[id]/translations.ts +2 -5
- package/src/astro/routes/api/admin/bylines/index.ts +5 -8
- package/src/astro/routes/api/admin/plugins/[id]/index.ts +6 -0
- package/src/astro/routes/api/admin/plugins/[id]/mcp.ts +42 -0
- package/src/astro/routes/api/admin/plugins/[id]/settings.ts +80 -0
- package/src/astro/routes/api/admin/plugins/[id]/update.ts +2 -0
- package/src/astro/routes/api/admin/plugins/index.ts +9 -0
- package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +2 -0
- package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +2 -0
- package/src/astro/routes/api/admin/plugins/registry/install.ts +2 -0
- package/src/astro/routes/api/admin/plugins/updates.ts +2 -4
- package/src/astro/routes/api/auth/mode.ts +6 -14
- package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +21 -4
- package/src/astro/routes/api/auth/oauth/[provider].ts +24 -6
- package/src/astro/routes/api/content/[collection]/[id]/compare.ts +3 -4
- package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +2 -3
- package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +2 -3
- package/src/astro/routes/api/content/[collection]/[id]/preview-url.ts +3 -4
- package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts +4 -6
- package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/parents.ts +2 -3
- package/src/astro/routes/api/content/[collection]/[id]/revisions.ts +3 -4
- package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +4 -6
- package/src/astro/routes/api/content/[collection]/[id]/translations.ts +3 -4
- package/src/astro/routes/api/content/[collection]/[id].ts +3 -4
- package/src/astro/routes/api/content/[collection]/authors.ts +2 -3
- package/src/astro/routes/api/content/[collection]/index.ts +6 -8
- package/src/astro/routes/api/content/[collection]/trash.ts +2 -3
- package/src/astro/routes/api/manifest.ts +2 -9
- package/src/astro/routes/api/mcp.ts +2 -1
- package/src/astro/routes/api/media/[id]/usage.ts +30 -0
- package/src/astro/routes/api/media/[id].ts +17 -6
- package/src/astro/routes/api/media/file/[...key].ts +8 -0
- package/src/astro/routes/api/media.ts +21 -2
- package/src/astro/routes/api/oauth/authorize.ts +43 -15
- package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +17 -3
- package/src/astro/routes/api/settings/backups/archives/[name].ts +78 -0
- package/src/astro/routes/api/settings/backups/archives/index.ts +33 -0
- package/src/astro/routes/api/settings/backups/export.ts +43 -0
- package/src/astro/routes/api/settings/backups/index.ts +76 -0
- package/src/astro/routes/api/setup/admin-verify.ts +8 -4
- package/src/astro/routes/api/setup/admin.ts +11 -4
- package/src/astro/routes/api/well-known/oauth-authorization-server.ts +4 -1
- package/src/astro/routes/api/well-known/oauth-protected-resource.ts +5 -1
- package/src/astro/types.ts +48 -2
- package/src/auth/api-tokens.ts +1 -0
- package/src/auth/oauth-state-store.ts +3 -0
- package/src/auth/providers/github-admin.tsx +5 -6
- package/src/auth/providers/google-admin.tsx +5 -6
- package/src/auth/scopes.ts +3 -9
- package/src/cli/client-factory.ts +0 -1
- package/src/cli/commands/bundle-utils.ts +50 -1
- package/src/cli/commands/bundle.ts +9 -2
- package/src/cli/commands/media.ts +127 -0
- package/src/client/index.ts +84 -2
- package/src/client/transport.ts +1 -1
- package/src/components/EmDashHead.astro +4 -8
- package/src/components/Gallery.astro +141 -26
- package/src/components/InlinePortableTextEditor.tsx +56 -35
- package/src/components/marks/Link.astro +5 -1
- package/src/config/secrets.ts +25 -19
- package/src/content/converters/gallery.ts +61 -0
- package/src/content/converters/portable-text-to-prosemirror.ts +19 -0
- package/src/content/converters/prosemirror-to-portable-text.ts +18 -0
- package/src/content/converters/types.ts +36 -0
- package/src/database/dialect-helpers.ts +80 -7
- package/src/database/migrations/051_content_taxonomies_denorm.ts +120 -0
- package/src/database/migrations/052_media_usage_read_index.ts +26 -0
- package/src/database/migrations/053_plugin_mcp_tools.ts +21 -0
- package/src/database/migrations/runner.ts +6 -0
- package/src/database/pg-migration-lock.ts +1 -4
- package/src/database/repositories/audit.ts +2 -1
- package/src/database/repositories/content.ts +98 -16
- package/src/database/repositories/media-usage.ts +250 -1
- package/src/database/repositories/plugin-storage.ts +29 -32
- package/src/database/repositories/redirect.ts +14 -2
- package/src/database/repositories/taxonomy.ts +57 -8
- package/src/database/types.ts +23 -0
- package/src/db/adapters.ts +9 -0
- package/src/emdash-runtime.ts +365 -83
- package/src/i18n/config.ts +8 -0
- package/src/i18n/repair-locale-casing.ts +51 -0
- package/src/loader.ts +292 -1
- package/src/mcp/server.ts +222 -5
- package/src/media/image-endpoint.ts +38 -2
- package/src/page/metadata.ts +27 -0
- package/src/plugin-types.ts +19 -0
- package/src/plugin-utils.ts +8 -6
- package/src/plugins/adapt-sandbox-entry.ts +30 -1
- package/src/plugins/context.ts +7 -0
- package/src/plugins/define-plugin.ts +16 -0
- package/src/plugins/manifest-schema.ts +28 -1
- package/src/plugins/routes.ts +27 -1
- package/src/plugins/sandbox/runner-options.ts +16 -0
- package/src/plugins/sandbox/types.ts +6 -1
- package/src/plugins/state.ts +17 -1
- package/src/plugins/storage-query.ts +67 -33
- package/src/plugins/types.ts +41 -0
- package/src/schema/registry.ts +141 -5
- package/src/search/query.ts +3 -2
- package/src/seed/apply.ts +37 -36
- package/src/seed/validate.ts +15 -4
- package/src/seo/index.ts +19 -4
- package/src/storage/types.ts +6 -0
- package/src/utils/base64.ts +7 -2
- package/src/utils/db-errors.ts +3 -1
- package/src/virtual-modules.d.ts +13 -0
- package/src/visual-editing/toolbar.ts +1 -1
- package/dist/adapters-DPAkL6QF.d.mts.map +0 -1
- package/dist/api-DVbHNApo.mjs.map +0 -1
- package/dist/api-tokens-Dk2GrJMY.mjs +0 -3
- package/dist/apply-D23iUV4q.mjs.map +0 -1
- package/dist/authorize-BmCwQCib.mjs.map +0 -1
- package/dist/base64-C74Msx8h.mjs.map +0 -1
- package/dist/bylines-BGuKFaBy.mjs.map +0 -1
- package/dist/config-CVssduLe.mjs.map +0 -1
- package/dist/content-BO61Sx4j.mjs.map +0 -1
- package/dist/content-refresh-BkkApzeS.mjs.map +0 -1
- package/dist/context-DtSFYFuS.mjs.map +0 -1
- package/dist/db-errors-BKuXh_fi.mjs.map +0 -1
- package/dist/device-flow-CPXQ_QfW.mjs.map +0 -1
- package/dist/dialect-helpers-Cue7QQOR.mjs.map +0 -1
- package/dist/error-CfJMLSkd.mjs.map +0 -1
- package/dist/index-BXOCyLj0.d.mts.map +0 -1
- package/dist/loader-Rb8QlGZp.mjs.map +0 -1
- package/dist/manifest-schema-DeGNma2O.mjs.map +0 -1
- package/dist/menus-BpfevlJD.mjs.map +0 -1
- package/dist/menus-BtvH7Z7t.mjs.map +0 -1
- package/dist/oauth-authorization-BWqWTHBK.mjs.map +0 -1
- package/dist/public-url-C0cEvrRu.mjs.map +0 -1
- package/dist/redirect-Ch3E98qZ.mjs.map +0 -1
- package/dist/redirects-CeD7K7EX.mjs.map +0 -1
- package/dist/registry-CyIXPi4E.mjs.map +0 -1
- package/dist/relations-C8hVyEy0.mjs.map +0 -1
- package/dist/relations-CbBpoOys.d.mts.map +0 -1
- package/dist/runner-jt65bF7F.mjs.map +0 -1
- package/dist/scheduled-publish-DlJHGcuL.d.mts +0 -11
- package/dist/scheduled-publish-DlJHGcuL.d.mts.map +0 -1
- package/dist/search-Cl875CVE.mjs.map +0 -1
- package/dist/secrets-CO_bEmII.mjs.map +0 -1
- package/dist/taxonomies-ClS4RKaZ.mjs.map +0 -1
- package/dist/taxonomy-BkxbUMSw.mjs.map +0 -1
- package/dist/types-CtDVagM4.d.mts.map +0 -1
- package/dist/types-momGysZk.d.mts.map +0 -1
- package/dist/validate-C3CpWlNt.mjs.map +0 -1
- package/dist/version-BlIJvNAZ.mjs +0 -7
- /package/dist/{ssrf-B5DOv5E5.mjs → ssrf-BB__xfNM.mjs} +0 -0
- /package/dist/{types-DeCZBZxn.mjs → types-CK0LxPUQ.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-Ba68Tm4Z.mjs","names":[],"sources":["../src/database/repositories/relation.ts"],"sourcesContent":["import type { Kysely, Selectable } from \"kysely\";\nimport { ulid } from \"ulidx\";\n\nimport { chunks, SQL_BATCH_SIZE } from \"../../utils/chunks.js\";\nimport type { Database, RelationTable, ContentReferenceTable } from \"../types.js\";\nimport { decodeCursor, encodeCursor, InvalidCursorError, type FindManyResult } from \"./types.js\";\n\nexport interface Relation {\n\tid: string;\n\tname: string;\n\tparentCollection: string;\n\tchildCollection: string;\n\tparentLabel: string;\n\tchildLabel: string;\n\tlocale: string;\n\ttranslationGroup: string;\n}\n\nexport interface CreateRelationInput {\n\tname: string;\n\t/** Required for a base relation; ignored (inherited from the source) when\n\t * `translationOf` is set. */\n\tparentCollection?: string;\n\t/** Required for a base relation; ignored (inherited from the source) when\n\t * `translationOf` is set. */\n\tchildCollection?: string;\n\tparentLabel: string;\n\tchildLabel: string;\n\t/** Omit to let the DB default (current value: 'en') apply. Higher layers\n\t * resolve locale from request context / i18n config. */\n\tlocale?: string;\n\t/** When set, joins the source relation's translation_group AND inherits its\n\t * structural fields (name, parentCollection, childCollection). Only locale +\n\t * labels may differ on a translation. */\n\ttranslationOf?: string;\n}\n\nexport interface UpdateRelationInput {\n\t/** Only localized fields are mutable per row. Changing structural fields\n\t * (name/collections) is a cross-group operation deferred to a later slice. */\n\tparentLabel?: string;\n\tchildLabel?: string;\n}\n\nexport interface ContentReference {\n\tid: string;\n\trelationGroup: string;\n\tparentGroup: string;\n\tchildGroup: string;\n\tsortOrder: number;\n}\n\n/**\n * Content-references repository.\n *\n * Owns relation *definitions* (`_emdash_relations`, row-per-locale, mirroring\n * `_emdash_taxonomy_defs`) and the *edge* junction (`_emdash_content_references`,\n * keyed by `translation_group` so edges are locale-agnostic, mirroring\n * `content_taxonomies`).\n *\n * Like `TaxonomyRepository`, this is not the validation boundary: it trusts its\n * typed inputs. The API slice supplies Zod schemas at the route and enforces\n * collection-agreement / relation-existence invariants in the handler. The repo\n * does not resolve locale fallbacks — callers pass the locale they want.\n */\nexport class RelationRepository {\n\tconstructor(private db: Kysely<Database>) {}\n\n\t/**\n\t * Create a relation. Without `translationOf`, mints a fresh group\n\t * (`translation_group = id`, matching the migration backfill pattern). With\n\t * `translationOf`, the structural fields (name, parentCollection,\n\t * childCollection) and the translation_group are inherited from the source;\n\t * locale and the two labels are taken from `input`.\n\t */\n\tasync create(input: CreateRelationInput): Promise<Relation> {\n\t\tconst id = ulid();\n\t\tconst now = new Date().toISOString();\n\n\t\tlet translationGroup = id;\n\t\tlet name: string;\n\t\tlet parentCollection: string;\n\t\tlet childCollection: string;\n\n\t\tif (input.translationOf) {\n\t\t\tconst source = await this.findById(input.translationOf);\n\t\t\t// translation_group is NOT NULL here, so we cannot fall back to a\n\t\t\t// fresh group like TaxonomyRepository does — a bad translationOf must\n\t\t\t// fail loudly rather than silently mint an unlinked relation.\n\t\t\tif (!source) throw new Error(\"Source relation for translation not found\");\n\t\t\ttranslationGroup = source.translationGroup;\n\t\t\tname = source.name;\n\t\t\tparentCollection = source.parentCollection;\n\t\t\tchildCollection = source.childCollection;\n\t\t} else {\n\t\t\t// A base relation carries its own structural fields. The API layer's Zod\n\t\t\t// schema enforces this; guard here too since the repo trusts its inputs\n\t\t\t// and the columns are NOT NULL.\n\t\t\tif (input.parentCollection === undefined || input.childCollection === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"parentCollection and childCollection are required unless translationOf is set\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tname = input.name;\n\t\t\tparentCollection = input.parentCollection;\n\t\t\tchildCollection = input.childCollection;\n\t\t}\n\n\t\tawait this.db\n\t\t\t.insertInto(\"_emdash_relations\")\n\t\t\t.values({\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tparent_collection: parentCollection,\n\t\t\t\tchild_collection: childCollection,\n\t\t\t\tparent_label: input.parentLabel,\n\t\t\t\tchild_label: input.childLabel,\n\t\t\t\tcreated_at: now,\n\t\t\t\tupdated_at: now,\n\t\t\t\t// Omit `locale` so the DB DEFAULT (configured defaultLocale)\n\t\t\t\t// applies — matches TaxonomyRepository.create.\n\t\t\t\t...(input.locale !== undefined ? { locale: input.locale } : {}),\n\t\t\t\ttranslation_group: translationGroup,\n\t\t\t})\n\t\t\t.execute();\n\n\t\tconst relation = await this.findById(id);\n\t\tif (!relation) throw new Error(\"Failed to create relation\");\n\t\treturn relation;\n\t}\n\n\tasync findById(id: string): Promise<Relation | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.executeTakeFirst();\n\t\treturn row ? this.rowToRelation(row) : null;\n\t}\n\n\t/**\n\t * Find a relation by name. With `locale`, filter by it; without, return the\n\t * lowest-locale-code match deterministically. Mirrors\n\t * `TaxonomyRepository.findBySlug` — note this returns a single row, unlike\n\t * `TaxonomyRepository.findByName` which returns every term in a taxonomy.\n\t */\n\tasync findByName(name: string, locale?: string): Promise<Relation | null> {\n\t\tlet query = this.db.selectFrom(\"_emdash_relations\").selectAll().where(\"name\", \"=\", name);\n\t\tif (locale !== undefined) query = query.where(\"locale\", \"=\", locale);\n\t\tconst row = await query.orderBy(\"locale\", \"asc\").executeTakeFirst();\n\t\treturn row ? this.rowToRelation(row) : null;\n\t}\n\n\t/** Every translation sibling (including itself) sharing a translation_group. */\n\tasync findTranslations(translationGroup: string): Promise<Relation[]> {\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"translation_group\", \"=\", translationGroup)\n\t\t\t.orderBy(\"locale\", \"asc\")\n\t\t\t.execute();\n\t\treturn rows.map((row) => this.rowToRelation(row));\n\t}\n\n\t/**\n\t * All relations, ordered by name then id (id is a stable tiebreak for\n\t * relations sharing a name across locales). Optionally filtered by locale.\n\t */\n\tasync list(locale?: string): Promise<Relation[]> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.orderBy(\"name\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\");\n\t\tif (locale !== undefined) query = query.where(\"locale\", \"=\", locale);\n\t\tconst rows = await query.execute();\n\t\treturn rows.map((row) => this.rowToRelation(row));\n\t}\n\n\t/** Relations where `collection` is the parent OR the child side. */\n\tasync findForCollection(collection: string, locale?: string): Promise<Relation[]> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([eb(\"parent_collection\", \"=\", collection), eb(\"child_collection\", \"=\", collection)]),\n\t\t\t)\n\t\t\t.orderBy(\"name\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\");\n\t\tif (locale !== undefined) query = query.where(\"locale\", \"=\", locale);\n\t\tconst rows = await query.execute();\n\t\treturn rows.map((row) => this.rowToRelation(row));\n\t}\n\n\t/**\n\t * Update the localized labels of one relation row. Structural fields are\n\t * immutable here (a cross-group concern). No-ops when nothing is supplied.\n\t */\n\tasync update(id: string, input: UpdateRelationInput): Promise<Relation | null> {\n\t\tconst existing = await this.findById(id);\n\t\tif (!existing) return null;\n\n\t\tconst updates: Record<string, unknown> = {};\n\t\tif (input.parentLabel !== undefined) updates.parent_label = input.parentLabel;\n\t\tif (input.childLabel !== undefined) updates.child_label = input.childLabel;\n\n\t\tif (Object.keys(updates).length > 0) {\n\t\t\tupdates.updated_at = new Date().toISOString();\n\t\t\tawait this.db.updateTable(\"_emdash_relations\").set(updates).where(\"id\", \"=\", id).execute();\n\t\t}\n\n\t\treturn this.findById(id);\n\t}\n\n\t/**\n\t * Delete one relation row. When it is the *last* translation of its group,\n\t * purge edges referencing that group (application-layer cascade — group\n\t * linking precludes a SQL FK). Mirrors `TaxonomyRepository.delete`.\n\t */\n\tasync delete(id: string): Promise<boolean> {\n\t\tconst relation = await this.findById(id);\n\t\tif (!relation) return false;\n\n\t\tconst siblings = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.select(\"id\")\n\t\t\t.where(\"translation_group\", \"=\", relation.translationGroup)\n\t\t\t.where(\"id\", \"!=\", id)\n\t\t\t.execute();\n\t\tif (siblings.length === 0) {\n\t\t\tawait this.db\n\t\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t\t.where(\"relation_group\", \"=\", relation.translationGroup)\n\t\t\t\t.execute();\n\t\t}\n\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_relations\")\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.executeTakeFirst();\n\t\treturn (result.numDeletedRows ?? 0n) > 0n;\n\t}\n\n\t/** Normalize a relation id OR group to its translation_group. Returns null\n\t * for an unknown relation (edge methods then no-op, matching\n\t * `TaxonomyRepository.attachToEntry`). */\n\tprivate async resolveRelationGroup(idOrGroup: string): Promise<string | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.select([\"translation_group\"])\n\t\t\t.where((eb) => eb.or([eb(\"id\", \"=\", idOrGroup), eb(\"translation_group\", \"=\", idOrGroup)]))\n\t\t\t.executeTakeFirst();\n\t\treturn row?.translation_group ?? null;\n\t}\n\n\tprivate rowToReference(row: Selectable<ContentReferenceTable>): ContentReference {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\trelationGroup: row.relation_group,\n\t\t\tparentGroup: row.parent_group,\n\t\t\tchildGroup: row.child_group,\n\t\t\tsortOrder: row.sort_order,\n\t\t};\n\t}\n\n\t/**\n\t * Link `parentGroup → childGroup` under a relation. `relation` is a relation\n\t * id or group. Idempotent (onConflict doNothing against the unique edge).\n\t * `sortOrder` defaults to append: max(sort_order)+1 within (relation, parent).\n\t *\n\t * The default-append MAX→INSERT is not atomic: concurrent appends without an\n\t * explicit `sortOrder` may both read the same max and collide on sort_order,\n\t * and onConflict silently drops the loser. Callers needing strict ordering\n\t * under concurrency should pass `sortOrder` explicitly (or serialize).\n\t */\n\tasync addReference(\n\t\trelation: string,\n\t\tparentGroup: string,\n\t\tchildGroup: string,\n\t\tsortOrder?: number,\n\t): Promise<void> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return;\n\n\t\tlet order = sortOrder;\n\t\tif (order === undefined) {\n\t\t\tconst max = await this.db\n\t\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t\t.select((eb) => eb.fn.max(\"sort_order\").as(\"max\"))\n\t\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t\t.executeTakeFirst();\n\t\t\torder = max?.max === null || max?.max === undefined ? 0 : Number(max.max) + 1;\n\t\t}\n\n\t\tawait this.db\n\t\t\t.insertInto(\"_emdash_content_references\")\n\t\t\t.values({\n\t\t\t\tid: ulid(),\n\t\t\t\trelation_group: relationGroup,\n\t\t\t\tparent_group: parentGroup,\n\t\t\t\tchild_group: childGroup,\n\t\t\t\tsort_order: order,\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t})\n\t\t\t.onConflict((oc) => oc.doNothing())\n\t\t\t.execute();\n\t}\n\n\t/** Remove one `parentGroup → childGroup` edge under a relation. */\n\tasync removeReference(relation: string, parentGroup: string, childGroup: string): Promise<void> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return;\n\n\t\tawait this.db\n\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup)\n\t\t\t.execute();\n\t}\n\n\t/** Forward traversal: a parent's children for a relation, ordered. */\n\tasync getChildren(relation: string, parentGroup: string): Promise<ContentReference[]> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return [];\n\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.orderBy(\"sort_order\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.execute();\n\t\treturn rows.map((row) => this.rowToReference(row));\n\t}\n\n\t/**\n\t * Forward traversal, paginated: one page of a parent's children for a\n\t * relation, ordered by `(sort_order, id)`. Use this on request paths — a\n\t * parent's children are capped but still up to 1000, and an unbounded read\n\t * scales poorly. Returns `{ items, nextCursor? }`; the cursor's order value is\n\t * the row's `sort_order`. Default limit 50, max 100.\n\t */\n\tasync getChildrenPage(\n\t\trelation: string,\n\t\tparentGroup: string,\n\t\toptions: { limit?: number; cursor?: string } = {},\n\t): Promise<FindManyResult<ContentReference>> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return { items: [] };\n\n\t\tconst limit = Math.min(options.limit || 50, 100);\n\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup);\n\n\t\tif (options.cursor) {\n\t\t\tconst decoded = decodeCursor(options.cursor);\n\t\t\tconst sortOrder = Number(decoded.orderValue);\n\t\t\t// `decodeCursor` only guarantees `orderValue` is a string; a hand-crafted\n\t\t\t// cursor with a non-numeric order value would coerce to NaN and blow up at\n\t\t\t// the driver bind as a 500. A bad cursor is a client error — surface it as\n\t\t\t// INVALID_CURSOR (400). Server-issued cursors are always numeric here.\n\t\t\tif (!Number.isFinite(sortOrder)) throw new InvalidCursorError(options.cursor);\n\t\t\tquery = query.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"sort_order\", \">\", sortOrder),\n\t\t\t\t\teb.and([eb(\"sort_order\", \"=\", sortOrder), eb(\"id\", \">\", decoded.id)]),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\tconst rows = await query\n\t\t\t.orderBy(\"sort_order\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.limit(limit + 1)\n\t\t\t.execute();\n\n\t\tconst hasMore = rows.length > limit;\n\t\tconst items = rows.slice(0, limit).map((row) => this.rowToReference(row));\n\t\tconst result: FindManyResult<ContentReference> = { items };\n\t\tconst last = items.at(-1);\n\t\tif (hasMore && last) {\n\t\t\tresult.nextCursor = encodeCursor(String(last.sortOrder), last.id);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** Backlink traversal: the parents that reference a child for a relation. */\n\tasync getParents(relation: string, childGroup: string): Promise<ContentReference[]> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return [];\n\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup)\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.execute();\n\t\treturn rows.map((row) => this.rowToReference(row));\n\t}\n\n\t/**\n\t * Replace all children of `parentGroup` under a relation with `childGroups`,\n\t * assigning positional sort_order (index in the deduped array). Deletes the\n\t * old set for this (relation, parent) and re-inserts — simple and correct;\n\t * the set is small (one parent's children). Mirrors the intent of\n\t * `TaxonomyRepository.setTermsForEntry`.\n\t *\n\t * A parent references a given child at most once (the unique edge), so\n\t * duplicate `childGroups` are collapsed first-occurrence-wins rather than\n\t * relying on the insert's onConflict to silently drop them. Not wrapped in a\n\t * transaction: a crash between the delete and insert leaves the parent with\n\t * no children — acceptable for a replace-all, since a retry restores state.\n\t *\n\t * Concurrency: two simultaneous replace-all calls for the same (relation,\n\t * parent) can interleave their deletes and inserts and merge into the union of\n\t * both sets (a lost update — neither \"replace\" wins). This is non-corrupting —\n\t * keyset pagination stays totally ordered via the `(sort_order, id)` tiebreak\n\t * even with duplicate sort_orders — and a single client editing one parent's\n\t * children serially never hits it. A D1-portable fix isn't available (no\n\t * multi-statement transactions), so concurrent replace-all on one parent is\n\t * unsupported by design rather than guarded here.\n\t */\n\tasync setChildren(relation: string, parentGroup: string, childGroups: string[]): Promise<void> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return;\n\n\t\tawait this.db\n\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.execute();\n\n\t\t// Collapse duplicates so positional sort_order has no gaps.\n\t\tconst uniqueChildGroups = [...new Set(childGroups)];\n\t\tif (uniqueChildGroups.length === 0) return;\n\n\t\tconst now = new Date().toISOString();\n\t\tawait this.db\n\t\t\t.insertInto(\"_emdash_content_references\")\n\t\t\t.values(\n\t\t\t\tuniqueChildGroups.map((childGroup, index) => ({\n\t\t\t\t\tid: ulid(),\n\t\t\t\t\trelation_group: relationGroup,\n\t\t\t\t\tparent_group: parentGroup,\n\t\t\t\t\tchild_group: childGroup,\n\t\t\t\t\tsort_order: index,\n\t\t\t\t\tcreated_at: now,\n\t\t\t\t})),\n\t\t\t)\n\t\t\t// Belt-and-suspenders: the DELETE above already cleared this\n\t\t\t// (relation, parent), so no conflict is possible within one call.\n\t\t\t// This is NOT a concurrency guarantee — delete-then-insert is not atomic.\n\t\t\t.onConflict((oc) => oc.doNothing())\n\t\t\t.execute();\n\t}\n\n\t/**\n\t * Backlink traversal, paginated: one page of the parents that reference a\n\t * child for a relation, ordered by `id`. Unlike a parent's children, a\n\t * child's backlinks are *unbounded* — one popular entry can be referenced by\n\t * arbitrarily many parents — so this read must paginate. Returns\n\t * `{ items, nextCursor? }`; the cursor's order value is the row `id`. Default\n\t * limit 50, max 100.\n\t */\n\tasync getParentsPage(\n\t\trelation: string,\n\t\tchildGroup: string,\n\t\toptions: { limit?: number; cursor?: string } = {},\n\t): Promise<FindManyResult<ContentReference>> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return { items: [] };\n\n\t\tconst limit = Math.min(options.limit || 50, 100);\n\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup);\n\n\t\tif (options.cursor) {\n\t\t\tconst decoded = decodeCursor(options.cursor);\n\t\t\tquery = query.where(\"id\", \">\", decoded.id);\n\t\t}\n\n\t\tconst rows = await query\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.limit(limit + 1)\n\t\t\t.execute();\n\n\t\tconst hasMore = rows.length > limit;\n\t\tconst items = rows.slice(0, limit).map((row) => this.rowToReference(row));\n\t\tconst result: FindManyResult<ContentReference> = { items };\n\t\tconst last = items.at(-1);\n\t\tif (hasMore && last) {\n\t\t\tresult.nextCursor = encodeCursor(last.id, last.id);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Remove every edge where `group` is the parent OR the child — i.e. ensure no\n\t * orphaned reference edges survive when a content entry is deleted. The\n\t * application-layer cascade that group-linking precludes at the SQL level.\n\t * Wiring this into the content-delete path is a later (handler) slice.\n\t * Returns the number of edges removed.\n\t */\n\tasync clearReferencesForGroup(group: string): Promise<number> {\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t.where((eb) => eb.or([eb(\"parent_group\", \"=\", group), eb(\"child_group\", \"=\", group)]))\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result.numDeletedRows ?? 0);\n\t}\n\n\t/** Count a parent's children under a relation. */\n\tasync countChildren(relation: string, parentGroup: string): Promise<number> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return 0;\n\t\tconst result = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.select((eb) => eb.fn.count(\"id\").as(\"count\"))\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result?.count ?? 0);\n\t}\n\n\t/** Count a child's parents (backlinks) under a relation. */\n\tasync countParents(relation: string, childGroup: string): Promise<number> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return 0;\n\t\tconst result = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.select((eb) => eb.fn.count(\"id\").as(\"count\"))\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result?.count ?? 0);\n\t}\n\n\t/**\n\t * Batch child-counts for many parents under a relation. Chunks at\n\t * SQL_BATCH_SIZE for D1's bind-parameter limit. Returns parent_group → count\n\t * (parents with no children are absent from the map). Mirrors\n\t * `TaxonomyRepository.countEntriesForTerms`.\n\t */\n\tasync countChildrenForParents(\n\t\trelation: string,\n\t\tparentGroups: string[],\n\t): Promise<Map<string, number>> {\n\t\tconst counts = new Map<string, number>();\n\t\tif (parentGroups.length === 0) return counts;\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return counts;\n\n\t\tfor (const chunk of chunks(parentGroups, SQL_BATCH_SIZE)) {\n\t\t\tconst rows = await this.db\n\t\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t\t.select([\"parent_group\", (eb) => eb.fn.count(\"id\").as(\"count\")])\n\t\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t\t.where(\"parent_group\", \"in\", chunk)\n\t\t\t\t.groupBy(\"parent_group\")\n\t\t\t\t.execute();\n\t\t\tfor (const row of rows) {\n\t\t\t\tcounts.set(row.parent_group, Number(row.count ?? 0));\n\t\t\t}\n\t\t}\n\t\treturn counts;\n\t}\n\n\tprivate rowToRelation(row: Selectable<RelationTable>): Relation {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\tname: row.name,\n\t\t\tparentCollection: row.parent_collection,\n\t\t\tchildCollection: row.child_collection,\n\t\t\tparentLabel: row.parent_label,\n\t\t\tchildLabel: row.child_label,\n\t\t\tlocale: row.locale,\n\t\t\ttranslationGroup: row.translation_group,\n\t\t};\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relation-Du0r04E0.mjs","names":[],"sources":["../src/database/repositories/relation.ts"],"sourcesContent":["import type { Kysely, Selectable } from \"kysely\";\nimport { ulid } from \"ulidx\";\n\nimport { chunks, SQL_BATCH_SIZE } from \"../../utils/chunks.js\";\nimport type { Database, RelationTable, ContentReferenceTable } from \"../types.js\";\nimport { decodeCursor, encodeCursor, InvalidCursorError, type FindManyResult } from \"./types.js\";\n\nexport interface Relation {\n\tid: string;\n\tname: string;\n\tparentCollection: string;\n\tchildCollection: string;\n\tparentLabel: string;\n\tchildLabel: string;\n\tlocale: string;\n\ttranslationGroup: string;\n}\n\nexport interface CreateRelationInput {\n\tname: string;\n\t/** Required for a base relation; ignored (inherited from the source) when\n\t * `translationOf` is set. */\n\tparentCollection?: string;\n\t/** Required for a base relation; ignored (inherited from the source) when\n\t * `translationOf` is set. */\n\tchildCollection?: string;\n\tparentLabel: string;\n\tchildLabel: string;\n\t/** Omit to let the DB default (current value: 'en') apply. Higher layers\n\t * resolve locale from request context / i18n config. */\n\tlocale?: string;\n\t/** When set, joins the source relation's translation_group AND inherits its\n\t * structural fields (name, parentCollection, childCollection). Only locale +\n\t * labels may differ on a translation. */\n\ttranslationOf?: string;\n}\n\nexport interface UpdateRelationInput {\n\t/** Only localized fields are mutable per row. Changing structural fields\n\t * (name/collections) is a cross-group operation deferred to a later slice. */\n\tparentLabel?: string;\n\tchildLabel?: string;\n}\n\nexport interface ContentReference {\n\tid: string;\n\trelationGroup: string;\n\tparentGroup: string;\n\tchildGroup: string;\n\tsortOrder: number;\n}\n\n/**\n * Content-references repository.\n *\n * Owns relation *definitions* (`_emdash_relations`, row-per-locale, mirroring\n * `_emdash_taxonomy_defs`) and the *edge* junction (`_emdash_content_references`,\n * keyed by `translation_group` so edges are locale-agnostic, mirroring\n * `content_taxonomies`).\n *\n * Like `TaxonomyRepository`, this is not the validation boundary: it trusts its\n * typed inputs. The API slice supplies Zod schemas at the route and enforces\n * collection-agreement / relation-existence invariants in the handler. The repo\n * does not resolve locale fallbacks — callers pass the locale they want.\n */\nexport class RelationRepository {\n\tconstructor(private db: Kysely<Database>) {}\n\n\t/**\n\t * Create a relation. Without `translationOf`, mints a fresh group\n\t * (`translation_group = id`, matching the migration backfill pattern). With\n\t * `translationOf`, the structural fields (name, parentCollection,\n\t * childCollection) and the translation_group are inherited from the source;\n\t * locale and the two labels are taken from `input`.\n\t */\n\tasync create(input: CreateRelationInput): Promise<Relation> {\n\t\tconst id = ulid();\n\t\tconst now = new Date().toISOString();\n\n\t\tlet translationGroup = id;\n\t\tlet name: string;\n\t\tlet parentCollection: string;\n\t\tlet childCollection: string;\n\n\t\tif (input.translationOf) {\n\t\t\tconst source = await this.findById(input.translationOf);\n\t\t\t// translation_group is NOT NULL here, so we cannot fall back to a\n\t\t\t// fresh group like TaxonomyRepository does — a bad translationOf must\n\t\t\t// fail loudly rather than silently mint an unlinked relation.\n\t\t\tif (!source) throw new Error(\"Source relation for translation not found\");\n\t\t\ttranslationGroup = source.translationGroup;\n\t\t\tname = source.name;\n\t\t\tparentCollection = source.parentCollection;\n\t\t\tchildCollection = source.childCollection;\n\t\t} else {\n\t\t\t// A base relation carries its own structural fields. The API layer's Zod\n\t\t\t// schema enforces this; guard here too since the repo trusts its inputs\n\t\t\t// and the columns are NOT NULL.\n\t\t\tif (input.parentCollection === undefined || input.childCollection === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"parentCollection and childCollection are required unless translationOf is set\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tname = input.name;\n\t\t\tparentCollection = input.parentCollection;\n\t\t\tchildCollection = input.childCollection;\n\t\t}\n\n\t\tawait this.db\n\t\t\t.insertInto(\"_emdash_relations\")\n\t\t\t.values({\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tparent_collection: parentCollection,\n\t\t\t\tchild_collection: childCollection,\n\t\t\t\tparent_label: input.parentLabel,\n\t\t\t\tchild_label: input.childLabel,\n\t\t\t\tcreated_at: now,\n\t\t\t\tupdated_at: now,\n\t\t\t\t// Omit `locale` so the DB DEFAULT (configured defaultLocale)\n\t\t\t\t// applies — matches TaxonomyRepository.create.\n\t\t\t\t...(input.locale !== undefined ? { locale: input.locale } : {}),\n\t\t\t\ttranslation_group: translationGroup,\n\t\t\t})\n\t\t\t.execute();\n\n\t\tconst relation = await this.findById(id);\n\t\tif (!relation) throw new Error(\"Failed to create relation\");\n\t\treturn relation;\n\t}\n\n\tasync findById(id: string): Promise<Relation | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.executeTakeFirst();\n\t\treturn row ? this.rowToRelation(row) : null;\n\t}\n\n\t/**\n\t * Find a relation by name. With `locale`, filter by it; without, return the\n\t * lowest-locale-code match deterministically. Mirrors\n\t * `TaxonomyRepository.findBySlug` — note this returns a single row, unlike\n\t * `TaxonomyRepository.findByName` which returns every term in a taxonomy.\n\t */\n\tasync findByName(name: string, locale?: string): Promise<Relation | null> {\n\t\tlet query = this.db.selectFrom(\"_emdash_relations\").selectAll().where(\"name\", \"=\", name);\n\t\tif (locale !== undefined) query = query.where(\"locale\", \"=\", locale);\n\t\tconst row = await query.orderBy(\"locale\", \"asc\").executeTakeFirst();\n\t\treturn row ? this.rowToRelation(row) : null;\n\t}\n\n\t/** Every translation sibling (including itself) sharing a translation_group. */\n\tasync findTranslations(translationGroup: string): Promise<Relation[]> {\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"translation_group\", \"=\", translationGroup)\n\t\t\t.orderBy(\"locale\", \"asc\")\n\t\t\t.execute();\n\t\treturn rows.map((row) => this.rowToRelation(row));\n\t}\n\n\t/**\n\t * All relations, ordered by name then id (id is a stable tiebreak for\n\t * relations sharing a name across locales). Optionally filtered by locale.\n\t */\n\tasync list(locale?: string): Promise<Relation[]> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.orderBy(\"name\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\");\n\t\tif (locale !== undefined) query = query.where(\"locale\", \"=\", locale);\n\t\tconst rows = await query.execute();\n\t\treturn rows.map((row) => this.rowToRelation(row));\n\t}\n\n\t/** Relations where `collection` is the parent OR the child side. */\n\tasync findForCollection(collection: string, locale?: string): Promise<Relation[]> {\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.selectAll()\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([eb(\"parent_collection\", \"=\", collection), eb(\"child_collection\", \"=\", collection)]),\n\t\t\t)\n\t\t\t.orderBy(\"name\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\");\n\t\tif (locale !== undefined) query = query.where(\"locale\", \"=\", locale);\n\t\tconst rows = await query.execute();\n\t\treturn rows.map((row) => this.rowToRelation(row));\n\t}\n\n\t/**\n\t * Update the localized labels of one relation row. Structural fields are\n\t * immutable here (a cross-group concern). No-ops when nothing is supplied.\n\t */\n\tasync update(id: string, input: UpdateRelationInput): Promise<Relation | null> {\n\t\tconst existing = await this.findById(id);\n\t\tif (!existing) return null;\n\n\t\tconst updates: Record<string, unknown> = {};\n\t\tif (input.parentLabel !== undefined) updates.parent_label = input.parentLabel;\n\t\tif (input.childLabel !== undefined) updates.child_label = input.childLabel;\n\n\t\tif (Object.keys(updates).length > 0) {\n\t\t\tupdates.updated_at = new Date().toISOString();\n\t\t\tawait this.db.updateTable(\"_emdash_relations\").set(updates).where(\"id\", \"=\", id).execute();\n\t\t}\n\n\t\treturn this.findById(id);\n\t}\n\n\t/**\n\t * Delete one relation row. When it is the *last* translation of its group,\n\t * purge edges referencing that group (application-layer cascade — group\n\t * linking precludes a SQL FK). Mirrors `TaxonomyRepository.delete`.\n\t */\n\tasync delete(id: string): Promise<boolean> {\n\t\tconst relation = await this.findById(id);\n\t\tif (!relation) return false;\n\n\t\tconst siblings = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.select(\"id\")\n\t\t\t.where(\"translation_group\", \"=\", relation.translationGroup)\n\t\t\t.where(\"id\", \"!=\", id)\n\t\t\t.execute();\n\t\tif (siblings.length === 0) {\n\t\t\tawait this.db\n\t\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t\t.where(\"relation_group\", \"=\", relation.translationGroup)\n\t\t\t\t.execute();\n\t\t}\n\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_relations\")\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.executeTakeFirst();\n\t\treturn (result.numDeletedRows ?? 0n) > 0n;\n\t}\n\n\t/** Normalize a relation id OR group to its translation_group. Returns null\n\t * for an unknown relation (edge methods then no-op, matching\n\t * `TaxonomyRepository.attachToEntry`). */\n\tprivate async resolveRelationGroup(idOrGroup: string): Promise<string | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_relations\")\n\t\t\t.select([\"translation_group\"])\n\t\t\t.where((eb) => eb.or([eb(\"id\", \"=\", idOrGroup), eb(\"translation_group\", \"=\", idOrGroup)]))\n\t\t\t.executeTakeFirst();\n\t\treturn row?.translation_group ?? null;\n\t}\n\n\tprivate rowToReference(row: Selectable<ContentReferenceTable>): ContentReference {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\trelationGroup: row.relation_group,\n\t\t\tparentGroup: row.parent_group,\n\t\t\tchildGroup: row.child_group,\n\t\t\tsortOrder: row.sort_order,\n\t\t};\n\t}\n\n\t/**\n\t * Link `parentGroup → childGroup` under a relation. `relation` is a relation\n\t * id or group. Idempotent (onConflict doNothing against the unique edge).\n\t * `sortOrder` defaults to append: max(sort_order)+1 within (relation, parent).\n\t *\n\t * The default-append MAX→INSERT is not atomic: concurrent appends without an\n\t * explicit `sortOrder` may both read the same max and collide on sort_order,\n\t * and onConflict silently drops the loser. Callers needing strict ordering\n\t * under concurrency should pass `sortOrder` explicitly (or serialize).\n\t */\n\tasync addReference(\n\t\trelation: string,\n\t\tparentGroup: string,\n\t\tchildGroup: string,\n\t\tsortOrder?: number,\n\t): Promise<void> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return;\n\n\t\tlet order = sortOrder;\n\t\tif (order === undefined) {\n\t\t\tconst max = await this.db\n\t\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t\t.select((eb) => eb.fn.max(\"sort_order\").as(\"max\"))\n\t\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t\t.executeTakeFirst();\n\t\t\torder = max?.max === null || max?.max === undefined ? 0 : Number(max.max) + 1;\n\t\t}\n\n\t\tawait this.db\n\t\t\t.insertInto(\"_emdash_content_references\")\n\t\t\t.values({\n\t\t\t\tid: ulid(),\n\t\t\t\trelation_group: relationGroup,\n\t\t\t\tparent_group: parentGroup,\n\t\t\t\tchild_group: childGroup,\n\t\t\t\tsort_order: order,\n\t\t\t\tcreated_at: new Date().toISOString(),\n\t\t\t})\n\t\t\t.onConflict((oc) => oc.doNothing())\n\t\t\t.execute();\n\t}\n\n\t/** Remove one `parentGroup → childGroup` edge under a relation. */\n\tasync removeReference(relation: string, parentGroup: string, childGroup: string): Promise<void> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return;\n\n\t\tawait this.db\n\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup)\n\t\t\t.execute();\n\t}\n\n\t/** Forward traversal: a parent's children for a relation, ordered. */\n\tasync getChildren(relation: string, parentGroup: string): Promise<ContentReference[]> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return [];\n\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.orderBy(\"sort_order\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.execute();\n\t\treturn rows.map((row) => this.rowToReference(row));\n\t}\n\n\t/**\n\t * Forward traversal, paginated: one page of a parent's children for a\n\t * relation, ordered by `(sort_order, id)`. Use this on request paths — a\n\t * parent's children are capped but still up to 1000, and an unbounded read\n\t * scales poorly. Returns `{ items, nextCursor? }`; the cursor's order value is\n\t * the row's `sort_order`. Default limit 50, max 100.\n\t */\n\tasync getChildrenPage(\n\t\trelation: string,\n\t\tparentGroup: string,\n\t\toptions: { limit?: number; cursor?: string } = {},\n\t): Promise<FindManyResult<ContentReference>> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return { items: [] };\n\n\t\tconst limit = Math.min(options.limit || 50, 100);\n\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup);\n\n\t\tif (options.cursor) {\n\t\t\tconst decoded = decodeCursor(options.cursor);\n\t\t\tconst sortOrder = Number(decoded.orderValue);\n\t\t\t// `decodeCursor` only guarantees `orderValue` is a string; a hand-crafted\n\t\t\t// cursor with a non-numeric order value would coerce to NaN and blow up at\n\t\t\t// the driver bind as a 500. A bad cursor is a client error — surface it as\n\t\t\t// INVALID_CURSOR (400). Server-issued cursors are always numeric here.\n\t\t\tif (!Number.isFinite(sortOrder)) throw new InvalidCursorError(options.cursor);\n\t\t\tquery = query.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"sort_order\", \">\", sortOrder),\n\t\t\t\t\teb.and([eb(\"sort_order\", \"=\", sortOrder), eb(\"id\", \">\", decoded.id)]),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\tconst rows = await query\n\t\t\t.orderBy(\"sort_order\", \"asc\")\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.limit(limit + 1)\n\t\t\t.execute();\n\n\t\tconst hasMore = rows.length > limit;\n\t\tconst items = rows.slice(0, limit).map((row) => this.rowToReference(row));\n\t\tconst result: FindManyResult<ContentReference> = { items };\n\t\tconst last = items.at(-1);\n\t\tif (hasMore && last) {\n\t\t\tresult.nextCursor = encodeCursor(String(last.sortOrder), last.id);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** Backlink traversal: the parents that reference a child for a relation. */\n\tasync getParents(relation: string, childGroup: string): Promise<ContentReference[]> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return [];\n\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup)\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.execute();\n\t\treturn rows.map((row) => this.rowToReference(row));\n\t}\n\n\t/**\n\t * Replace all children of `parentGroup` under a relation with `childGroups`,\n\t * assigning positional sort_order (index in the deduped array). Deletes the\n\t * old set for this (relation, parent) and re-inserts — simple and correct;\n\t * the set is small (one parent's children). Mirrors the intent of\n\t * `TaxonomyRepository.setTermsForEntry`.\n\t *\n\t * A parent references a given child at most once (the unique edge), so\n\t * duplicate `childGroups` are collapsed first-occurrence-wins rather than\n\t * relying on the insert's onConflict to silently drop them. Not wrapped in a\n\t * transaction: a crash between the delete and insert leaves the parent with\n\t * no children — acceptable for a replace-all, since a retry restores state.\n\t *\n\t * Concurrency: two simultaneous replace-all calls for the same (relation,\n\t * parent) can interleave their deletes and inserts and merge into the union of\n\t * both sets (a lost update — neither \"replace\" wins). This is non-corrupting —\n\t * keyset pagination stays totally ordered via the `(sort_order, id)` tiebreak\n\t * even with duplicate sort_orders — and a single client editing one parent's\n\t * children serially never hits it. A D1-portable fix isn't available (no\n\t * multi-statement transactions), so concurrent replace-all on one parent is\n\t * unsupported by design rather than guarded here.\n\t */\n\tasync setChildren(relation: string, parentGroup: string, childGroups: string[]): Promise<void> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return;\n\n\t\tawait this.db\n\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.execute();\n\n\t\t// Collapse duplicates so positional sort_order has no gaps.\n\t\tconst uniqueChildGroups = [...new Set(childGroups)];\n\t\tif (uniqueChildGroups.length === 0) return;\n\n\t\tconst now = new Date().toISOString();\n\t\tawait this.db\n\t\t\t.insertInto(\"_emdash_content_references\")\n\t\t\t.values(\n\t\t\t\tuniqueChildGroups.map((childGroup, index) => ({\n\t\t\t\t\tid: ulid(),\n\t\t\t\t\trelation_group: relationGroup,\n\t\t\t\t\tparent_group: parentGroup,\n\t\t\t\t\tchild_group: childGroup,\n\t\t\t\t\tsort_order: index,\n\t\t\t\t\tcreated_at: now,\n\t\t\t\t})),\n\t\t\t)\n\t\t\t// Belt-and-suspenders: the DELETE above already cleared this\n\t\t\t// (relation, parent), so no conflict is possible within one call.\n\t\t\t// This is NOT a concurrency guarantee — delete-then-insert is not atomic.\n\t\t\t.onConflict((oc) => oc.doNothing())\n\t\t\t.execute();\n\t}\n\n\t/**\n\t * Backlink traversal, paginated: one page of the parents that reference a\n\t * child for a relation, ordered by `id`. Unlike a parent's children, a\n\t * child's backlinks are *unbounded* — one popular entry can be referenced by\n\t * arbitrarily many parents — so this read must paginate. Returns\n\t * `{ items, nextCursor? }`; the cursor's order value is the row `id`. Default\n\t * limit 50, max 100.\n\t */\n\tasync getParentsPage(\n\t\trelation: string,\n\t\tchildGroup: string,\n\t\toptions: { limit?: number; cursor?: string } = {},\n\t): Promise<FindManyResult<ContentReference>> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return { items: [] };\n\n\t\tconst limit = Math.min(options.limit || 50, 100);\n\n\t\tlet query = this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.selectAll()\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup);\n\n\t\tif (options.cursor) {\n\t\t\tconst decoded = decodeCursor(options.cursor);\n\t\t\tquery = query.where(\"id\", \">\", decoded.id);\n\t\t}\n\n\t\tconst rows = await query\n\t\t\t.orderBy(\"id\", \"asc\")\n\t\t\t.limit(limit + 1)\n\t\t\t.execute();\n\n\t\tconst hasMore = rows.length > limit;\n\t\tconst items = rows.slice(0, limit).map((row) => this.rowToReference(row));\n\t\tconst result: FindManyResult<ContentReference> = { items };\n\t\tconst last = items.at(-1);\n\t\tif (hasMore && last) {\n\t\t\tresult.nextCursor = encodeCursor(last.id, last.id);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Remove every edge where `group` is the parent OR the child — i.e. ensure no\n\t * orphaned reference edges survive when a content entry is deleted. The\n\t * application-layer cascade that group-linking precludes at the SQL level.\n\t * Wiring this into the content-delete path is a later (handler) slice.\n\t * Returns the number of edges removed.\n\t */\n\tasync clearReferencesForGroup(group: string): Promise<number> {\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_content_references\")\n\t\t\t.where((eb) => eb.or([eb(\"parent_group\", \"=\", group), eb(\"child_group\", \"=\", group)]))\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result.numDeletedRows ?? 0);\n\t}\n\n\t/** Count a parent's children under a relation. */\n\tasync countChildren(relation: string, parentGroup: string): Promise<number> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return 0;\n\t\tconst result = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.select((eb) => eb.fn.count(\"id\").as(\"count\"))\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"parent_group\", \"=\", parentGroup)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result?.count ?? 0);\n\t}\n\n\t/** Count a child's parents (backlinks) under a relation. */\n\tasync countParents(relation: string, childGroup: string): Promise<number> {\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return 0;\n\t\tconst result = await this.db\n\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t.select((eb) => eb.fn.count(\"id\").as(\"count\"))\n\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t.where(\"child_group\", \"=\", childGroup)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result?.count ?? 0);\n\t}\n\n\t/**\n\t * Batch child-counts for many parents under a relation. Chunks at\n\t * SQL_BATCH_SIZE for D1's bind-parameter limit. Returns parent_group → count\n\t * (parents with no children are absent from the map). Mirrors\n\t * `TaxonomyRepository.countEntriesForTerms`.\n\t */\n\tasync countChildrenForParents(\n\t\trelation: string,\n\t\tparentGroups: string[],\n\t): Promise<Map<string, number>> {\n\t\tconst counts = new Map<string, number>();\n\t\tif (parentGroups.length === 0) return counts;\n\t\tconst relationGroup = await this.resolveRelationGroup(relation);\n\t\tif (!relationGroup) return counts;\n\n\t\tfor (const chunk of chunks(parentGroups, SQL_BATCH_SIZE)) {\n\t\t\tconst rows = await this.db\n\t\t\t\t.selectFrom(\"_emdash_content_references\")\n\t\t\t\t.select([\"parent_group\", (eb) => eb.fn.count(\"id\").as(\"count\")])\n\t\t\t\t.where(\"relation_group\", \"=\", relationGroup)\n\t\t\t\t.where(\"parent_group\", \"in\", chunk)\n\t\t\t\t.groupBy(\"parent_group\")\n\t\t\t\t.execute();\n\t\t\tfor (const row of rows) {\n\t\t\t\tcounts.set(row.parent_group, Number(row.count ?? 0));\n\t\t\t}\n\t\t}\n\t\treturn counts;\n\t}\n\n\tprivate rowToRelation(row: Selectable<RelationTable>): Relation {\n\t\treturn {\n\t\t\tid: row.id,\n\t\t\tname: row.name,\n\t\t\tparentCollection: row.parent_collection,\n\t\t\tchildCollection: row.child_collection,\n\t\t\tparentLabel: row.parent_label,\n\t\t\tchildLabel: row.child_label,\n\t\t\tlocale: row.locale,\n\t\t\ttranslationGroup: row.translation_group,\n\t\t};\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -19,21 +19,27 @@ declare const offsetPaginationQuery: z.ZodObject<{
|
|
|
19
19
|
declare const slugPattern: RegExp;
|
|
20
20
|
/** Validates that a URL string uses http or https scheme. Rejects javascript:/data: URI XSS vectors. */
|
|
21
21
|
declare const httpUrl: z.ZodString;
|
|
22
|
-
/**
|
|
23
|
-
|
|
22
|
+
/**
|
|
23
|
+
* BCP 47 locale code — language with optional script/region subtags (e.g. en, en-US, pt-BR, es-419, zh-Hant).
|
|
24
|
+
* Validation is case-insensitive, but the value is preserved verbatim because the site config, stored
|
|
25
|
+
* `locale` columns, and public query path all keep the raw BCP-47 casing.
|
|
26
|
+
*/
|
|
27
|
+
declare const localeCode: z.ZodString;
|
|
24
28
|
/** Shared `?locale=xx` query shape for endpoints that filter by locale. */
|
|
25
29
|
declare const localeFilterQuery: z.ZodObject<{
|
|
26
30
|
locale: z.ZodOptional<z.ZodString>;
|
|
27
31
|
}, z.core.$strip>;
|
|
28
32
|
/** Standard API error response */
|
|
29
33
|
declare const apiErrorSchema: z.ZodObject<{
|
|
34
|
+
success: z.ZodLiteral<false>;
|
|
30
35
|
error: z.ZodObject<{
|
|
31
36
|
code: z.ZodString;
|
|
32
37
|
message: z.ZodString;
|
|
33
38
|
}, z.core.$strip>;
|
|
34
39
|
}, z.core.$strip>;
|
|
35
|
-
/** Wrap a data schema in the standard success envelope: { data: T } */
|
|
40
|
+
/** Wrap a data schema in the standard success envelope: { success: true, data: T } */
|
|
36
41
|
declare function successEnvelope<T extends z.ZodType>(dataSchema: T): z.ZodObject<{
|
|
42
|
+
success: z.ZodLiteral<true>;
|
|
37
43
|
data: T;
|
|
38
44
|
}, z.core.$strip>;
|
|
39
45
|
/** Standard delete response */
|
|
@@ -63,7 +69,7 @@ declare const contentListQuery: z.ZodObject<{
|
|
|
63
69
|
asc: "asc";
|
|
64
70
|
desc: "desc";
|
|
65
71
|
}>>;
|
|
66
|
-
locale: z.ZodOptional<z.
|
|
72
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
67
73
|
q: z.ZodOptional<z.ZodString>;
|
|
68
74
|
authorId: z.ZodOptional<z.ZodString>;
|
|
69
75
|
dateField: z.ZodOptional<z.ZodEnum<{
|
|
@@ -84,7 +90,7 @@ declare const contentCreateBody: z.ZodObject<{
|
|
|
84
90
|
bylineId: z.ZodString;
|
|
85
91
|
roleLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
86
92
|
}, z.core.$strip>>>;
|
|
87
|
-
locale: z.ZodOptional<z.
|
|
93
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
88
94
|
translationOf: z.ZodOptional<z.ZodString>;
|
|
89
95
|
seo: z.ZodOptional<z.ZodObject<{
|
|
90
96
|
title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -445,6 +451,10 @@ declare const mediaListQuery: z.ZodObject<{
|
|
|
445
451
|
limit: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
|
|
446
452
|
mimeType: z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>>;
|
|
447
453
|
q: z.ZodOptional<z.ZodString>;
|
|
454
|
+
includeUsage: z.ZodOptional<z.ZodLiteral<"1">>;
|
|
455
|
+
}, z.core.$strip>;
|
|
456
|
+
declare const mediaGetQuery: z.ZodObject<{
|
|
457
|
+
includeUsage: z.ZodOptional<z.ZodLiteral<"1">>;
|
|
448
458
|
}, z.core.$strip>;
|
|
449
459
|
declare const mediaUpdateBody: z.ZodObject<{
|
|
450
460
|
alt: z.ZodOptional<z.ZodString>;
|
|
@@ -455,6 +465,7 @@ declare const mediaUpdateBody: z.ZodObject<{
|
|
|
455
465
|
/** Default maximum allowed file upload size (50 MB). */
|
|
456
466
|
declare const DEFAULT_MAX_UPLOAD_SIZE: number;
|
|
457
467
|
declare function formatFileSize(bytes: number): string;
|
|
468
|
+
declare const CONTENT_TYPE_RE: RegExp;
|
|
458
469
|
declare function mediaUploadUrlBody(maxSize: number): z.ZodObject<{
|
|
459
470
|
filename: z.ZodString;
|
|
460
471
|
contentType: z.ZodString;
|
|
@@ -517,6 +528,157 @@ declare const mediaResponseSchema: z.ZodObject<{
|
|
|
517
528
|
authorId: z.ZodNullable<z.ZodString>;
|
|
518
529
|
}, z.core.$strip>;
|
|
519
530
|
}, z.core.$strip>;
|
|
531
|
+
declare const mediaReadItemSchema: z.ZodObject<{
|
|
532
|
+
id: z.ZodString;
|
|
533
|
+
filename: z.ZodString;
|
|
534
|
+
mimeType: z.ZodString;
|
|
535
|
+
size: z.ZodNullable<z.ZodNumber>;
|
|
536
|
+
width: z.ZodNullable<z.ZodNumber>;
|
|
537
|
+
height: z.ZodNullable<z.ZodNumber>;
|
|
538
|
+
alt: z.ZodNullable<z.ZodString>;
|
|
539
|
+
caption: z.ZodNullable<z.ZodString>;
|
|
540
|
+
storageKey: z.ZodString;
|
|
541
|
+
status: z.ZodEnum<{
|
|
542
|
+
pending: "pending";
|
|
543
|
+
ready: "ready";
|
|
544
|
+
failed: "failed";
|
|
545
|
+
}>;
|
|
546
|
+
contentHash: z.ZodNullable<z.ZodString>;
|
|
547
|
+
blurhash: z.ZodNullable<z.ZodString>;
|
|
548
|
+
dominantColor: z.ZodNullable<z.ZodString>;
|
|
549
|
+
createdAt: z.ZodString;
|
|
550
|
+
authorId: z.ZodNullable<z.ZodString>;
|
|
551
|
+
usage: z.ZodOptional<z.ZodObject<{
|
|
552
|
+
count: z.ZodNullable<z.ZodNumber>;
|
|
553
|
+
coverage: z.ZodObject<{
|
|
554
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
555
|
+
status: z.ZodEnum<{
|
|
556
|
+
never: "never";
|
|
557
|
+
unknown: "unknown";
|
|
558
|
+
failed: "failed";
|
|
559
|
+
complete: "complete";
|
|
560
|
+
running: "running";
|
|
561
|
+
partial: "partial";
|
|
562
|
+
stale: "stale";
|
|
563
|
+
}>;
|
|
564
|
+
}, z.core.$strip>;
|
|
565
|
+
}, z.core.$strip>>;
|
|
566
|
+
}, z.core.$strip>;
|
|
567
|
+
declare const mediaReadResponseSchema: z.ZodObject<{
|
|
568
|
+
item: z.ZodObject<{
|
|
569
|
+
id: z.ZodString;
|
|
570
|
+
filename: z.ZodString;
|
|
571
|
+
mimeType: z.ZodString;
|
|
572
|
+
size: z.ZodNullable<z.ZodNumber>;
|
|
573
|
+
width: z.ZodNullable<z.ZodNumber>;
|
|
574
|
+
height: z.ZodNullable<z.ZodNumber>;
|
|
575
|
+
alt: z.ZodNullable<z.ZodString>;
|
|
576
|
+
caption: z.ZodNullable<z.ZodString>;
|
|
577
|
+
storageKey: z.ZodString;
|
|
578
|
+
status: z.ZodEnum<{
|
|
579
|
+
pending: "pending";
|
|
580
|
+
ready: "ready";
|
|
581
|
+
failed: "failed";
|
|
582
|
+
}>;
|
|
583
|
+
contentHash: z.ZodNullable<z.ZodString>;
|
|
584
|
+
blurhash: z.ZodNullable<z.ZodString>;
|
|
585
|
+
dominantColor: z.ZodNullable<z.ZodString>;
|
|
586
|
+
createdAt: z.ZodString;
|
|
587
|
+
authorId: z.ZodNullable<z.ZodString>;
|
|
588
|
+
usage: z.ZodOptional<z.ZodObject<{
|
|
589
|
+
count: z.ZodNullable<z.ZodNumber>;
|
|
590
|
+
coverage: z.ZodObject<{
|
|
591
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
592
|
+
status: z.ZodEnum<{
|
|
593
|
+
never: "never";
|
|
594
|
+
unknown: "unknown";
|
|
595
|
+
failed: "failed";
|
|
596
|
+
complete: "complete";
|
|
597
|
+
running: "running";
|
|
598
|
+
partial: "partial";
|
|
599
|
+
stale: "stale";
|
|
600
|
+
}>;
|
|
601
|
+
}, z.core.$strip>;
|
|
602
|
+
}, z.core.$strip>>;
|
|
603
|
+
}, z.core.$strip>;
|
|
604
|
+
}, z.core.$strip>;
|
|
605
|
+
declare const mediaListReadItemSchema: z.ZodObject<{
|
|
606
|
+
id: z.ZodString;
|
|
607
|
+
filename: z.ZodString;
|
|
608
|
+
mimeType: z.ZodString;
|
|
609
|
+
size: z.ZodNullable<z.ZodNumber>;
|
|
610
|
+
width: z.ZodNullable<z.ZodNumber>;
|
|
611
|
+
height: z.ZodNullable<z.ZodNumber>;
|
|
612
|
+
alt: z.ZodNullable<z.ZodString>;
|
|
613
|
+
caption: z.ZodNullable<z.ZodString>;
|
|
614
|
+
storageKey: z.ZodString;
|
|
615
|
+
status: z.ZodEnum<{
|
|
616
|
+
pending: "pending";
|
|
617
|
+
ready: "ready";
|
|
618
|
+
failed: "failed";
|
|
619
|
+
}>;
|
|
620
|
+
contentHash: z.ZodNullable<z.ZodString>;
|
|
621
|
+
blurhash: z.ZodNullable<z.ZodString>;
|
|
622
|
+
dominantColor: z.ZodNullable<z.ZodString>;
|
|
623
|
+
createdAt: z.ZodString;
|
|
624
|
+
authorId: z.ZodNullable<z.ZodString>;
|
|
625
|
+
usage: z.ZodOptional<z.ZodObject<{
|
|
626
|
+
count: z.ZodNullable<z.ZodNumber>;
|
|
627
|
+
coverage: z.ZodObject<{
|
|
628
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
629
|
+
status: z.ZodEnum<{
|
|
630
|
+
never: "never";
|
|
631
|
+
unknown: "unknown";
|
|
632
|
+
failed: "failed";
|
|
633
|
+
complete: "complete";
|
|
634
|
+
running: "running";
|
|
635
|
+
partial: "partial";
|
|
636
|
+
stale: "stale";
|
|
637
|
+
}>;
|
|
638
|
+
}, z.core.$strip>;
|
|
639
|
+
}, z.core.$strip>>;
|
|
640
|
+
url: z.ZodString;
|
|
641
|
+
}, z.core.$strip>;
|
|
642
|
+
declare const mediaListReadResponseSchema: z.ZodObject<{
|
|
643
|
+
items: z.ZodArray<z.ZodObject<{
|
|
644
|
+
id: z.ZodString;
|
|
645
|
+
filename: z.ZodString;
|
|
646
|
+
mimeType: z.ZodString;
|
|
647
|
+
size: z.ZodNullable<z.ZodNumber>;
|
|
648
|
+
width: z.ZodNullable<z.ZodNumber>;
|
|
649
|
+
height: z.ZodNullable<z.ZodNumber>;
|
|
650
|
+
alt: z.ZodNullable<z.ZodString>;
|
|
651
|
+
caption: z.ZodNullable<z.ZodString>;
|
|
652
|
+
storageKey: z.ZodString;
|
|
653
|
+
status: z.ZodEnum<{
|
|
654
|
+
pending: "pending";
|
|
655
|
+
ready: "ready";
|
|
656
|
+
failed: "failed";
|
|
657
|
+
}>;
|
|
658
|
+
contentHash: z.ZodNullable<z.ZodString>;
|
|
659
|
+
blurhash: z.ZodNullable<z.ZodString>;
|
|
660
|
+
dominantColor: z.ZodNullable<z.ZodString>;
|
|
661
|
+
createdAt: z.ZodString;
|
|
662
|
+
authorId: z.ZodNullable<z.ZodString>;
|
|
663
|
+
usage: z.ZodOptional<z.ZodObject<{
|
|
664
|
+
count: z.ZodNullable<z.ZodNumber>;
|
|
665
|
+
coverage: z.ZodObject<{
|
|
666
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
667
|
+
status: z.ZodEnum<{
|
|
668
|
+
never: "never";
|
|
669
|
+
unknown: "unknown";
|
|
670
|
+
failed: "failed";
|
|
671
|
+
complete: "complete";
|
|
672
|
+
running: "running";
|
|
673
|
+
partial: "partial";
|
|
674
|
+
stale: "stale";
|
|
675
|
+
}>;
|
|
676
|
+
}, z.core.$strip>;
|
|
677
|
+
}, z.core.$strip>>;
|
|
678
|
+
url: z.ZodString;
|
|
679
|
+
}, z.core.$strip>>;
|
|
680
|
+
nextCursor: z.ZodOptional<z.ZodString>;
|
|
681
|
+
}, z.core.$strip>;
|
|
520
682
|
declare const mediaListResponseSchema: z.ZodObject<{
|
|
521
683
|
items: z.ZodArray<z.ZodObject<{
|
|
522
684
|
id: z.ZodString;
|
|
@@ -581,6 +743,143 @@ declare const mediaConfirmResponseSchema: z.ZodObject<{
|
|
|
581
743
|
}, z.core.$strip>;
|
|
582
744
|
//#endregion
|
|
583
745
|
//#region src/api/schemas/media-usage.d.ts
|
|
746
|
+
declare const mediaUsageCoverageStatusSchema: z.ZodEnum<{
|
|
747
|
+
never: "never";
|
|
748
|
+
unknown: "unknown";
|
|
749
|
+
failed: "failed";
|
|
750
|
+
complete: "complete";
|
|
751
|
+
running: "running";
|
|
752
|
+
partial: "partial";
|
|
753
|
+
stale: "stale";
|
|
754
|
+
}>;
|
|
755
|
+
declare const mediaUsageCoverageSchema: z.ZodObject<{
|
|
756
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
757
|
+
status: z.ZodEnum<{
|
|
758
|
+
never: "never";
|
|
759
|
+
unknown: "unknown";
|
|
760
|
+
failed: "failed";
|
|
761
|
+
complete: "complete";
|
|
762
|
+
running: "running";
|
|
763
|
+
partial: "partial";
|
|
764
|
+
stale: "stale";
|
|
765
|
+
}>;
|
|
766
|
+
}, z.core.$strip>;
|
|
767
|
+
declare const mediaUsageSummarySchema: z.ZodObject<{
|
|
768
|
+
count: z.ZodNullable<z.ZodNumber>;
|
|
769
|
+
coverage: z.ZodObject<{
|
|
770
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
771
|
+
status: z.ZodEnum<{
|
|
772
|
+
never: "never";
|
|
773
|
+
unknown: "unknown";
|
|
774
|
+
failed: "failed";
|
|
775
|
+
complete: "complete";
|
|
776
|
+
running: "running";
|
|
777
|
+
partial: "partial";
|
|
778
|
+
stale: "stale";
|
|
779
|
+
}>;
|
|
780
|
+
}, z.core.$strip>;
|
|
781
|
+
}, z.core.$strip>;
|
|
782
|
+
declare const mediaUsageDetailsQuery: z.ZodObject<{
|
|
783
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
784
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
|
|
785
|
+
}, z.core.$strip>;
|
|
786
|
+
declare const mediaUsageOccurrenceDetailSchema: z.ZodObject<{
|
|
787
|
+
fieldSlug: z.ZodString;
|
|
788
|
+
fieldPath: z.ZodString;
|
|
789
|
+
occurrenceIndex: z.ZodNumber;
|
|
790
|
+
referenceType: z.ZodEnum<{
|
|
791
|
+
unknown: "unknown";
|
|
792
|
+
image_field: "image_field";
|
|
793
|
+
file_field: "file_field";
|
|
794
|
+
portable_text_image: "portable_text_image";
|
|
795
|
+
}>;
|
|
796
|
+
}, z.core.$strip>;
|
|
797
|
+
declare const mediaUsageSourceDetailSchema: z.ZodObject<{
|
|
798
|
+
variant: z.ZodEnum<{
|
|
799
|
+
columns: "columns";
|
|
800
|
+
draft_overlay: "draft_overlay";
|
|
801
|
+
}>;
|
|
802
|
+
occurrences: z.ZodArray<z.ZodObject<{
|
|
803
|
+
fieldSlug: z.ZodString;
|
|
804
|
+
fieldPath: z.ZodString;
|
|
805
|
+
occurrenceIndex: z.ZodNumber;
|
|
806
|
+
referenceType: z.ZodEnum<{
|
|
807
|
+
unknown: "unknown";
|
|
808
|
+
image_field: "image_field";
|
|
809
|
+
file_field: "file_field";
|
|
810
|
+
portable_text_image: "portable_text_image";
|
|
811
|
+
}>;
|
|
812
|
+
}, z.core.$strip>>;
|
|
813
|
+
}, z.core.$strip>;
|
|
814
|
+
declare const mediaUsageEntryDetailSchema: z.ZodObject<{
|
|
815
|
+
collection: z.ZodString;
|
|
816
|
+
contentId: z.ZodString;
|
|
817
|
+
title: z.ZodNullable<z.ZodString>;
|
|
818
|
+
slug: z.ZodNullable<z.ZodString>;
|
|
819
|
+
locale: z.ZodNullable<z.ZodString>;
|
|
820
|
+
status: z.ZodNullable<z.ZodString>;
|
|
821
|
+
scheduledAt: z.ZodNullable<z.ZodString>;
|
|
822
|
+
deletedAt: z.ZodNullable<z.ZodString>;
|
|
823
|
+
sources: z.ZodArray<z.ZodObject<{
|
|
824
|
+
variant: z.ZodEnum<{
|
|
825
|
+
columns: "columns";
|
|
826
|
+
draft_overlay: "draft_overlay";
|
|
827
|
+
}>;
|
|
828
|
+
occurrences: z.ZodArray<z.ZodObject<{
|
|
829
|
+
fieldSlug: z.ZodString;
|
|
830
|
+
fieldPath: z.ZodString;
|
|
831
|
+
occurrenceIndex: z.ZodNumber;
|
|
832
|
+
referenceType: z.ZodEnum<{
|
|
833
|
+
unknown: "unknown";
|
|
834
|
+
image_field: "image_field";
|
|
835
|
+
file_field: "file_field";
|
|
836
|
+
portable_text_image: "portable_text_image";
|
|
837
|
+
}>;
|
|
838
|
+
}, z.core.$strip>>;
|
|
839
|
+
}, z.core.$strip>>;
|
|
840
|
+
}, z.core.$strip>;
|
|
841
|
+
declare const mediaUsageDetailsResponseSchema: z.ZodObject<{
|
|
842
|
+
items: z.ZodArray<z.ZodObject<{
|
|
843
|
+
collection: z.ZodString;
|
|
844
|
+
contentId: z.ZodString;
|
|
845
|
+
title: z.ZodNullable<z.ZodString>;
|
|
846
|
+
slug: z.ZodNullable<z.ZodString>;
|
|
847
|
+
locale: z.ZodNullable<z.ZodString>;
|
|
848
|
+
status: z.ZodNullable<z.ZodString>;
|
|
849
|
+
scheduledAt: z.ZodNullable<z.ZodString>;
|
|
850
|
+
deletedAt: z.ZodNullable<z.ZodString>;
|
|
851
|
+
sources: z.ZodArray<z.ZodObject<{
|
|
852
|
+
variant: z.ZodEnum<{
|
|
853
|
+
columns: "columns";
|
|
854
|
+
draft_overlay: "draft_overlay";
|
|
855
|
+
}>;
|
|
856
|
+
occurrences: z.ZodArray<z.ZodObject<{
|
|
857
|
+
fieldSlug: z.ZodString;
|
|
858
|
+
fieldPath: z.ZodString;
|
|
859
|
+
occurrenceIndex: z.ZodNumber;
|
|
860
|
+
referenceType: z.ZodEnum<{
|
|
861
|
+
unknown: "unknown";
|
|
862
|
+
image_field: "image_field";
|
|
863
|
+
file_field: "file_field";
|
|
864
|
+
portable_text_image: "portable_text_image";
|
|
865
|
+
}>;
|
|
866
|
+
}, z.core.$strip>>;
|
|
867
|
+
}, z.core.$strip>>;
|
|
868
|
+
}, z.core.$strip>>;
|
|
869
|
+
nextCursor: z.ZodOptional<z.ZodString>;
|
|
870
|
+
coverage: z.ZodObject<{
|
|
871
|
+
scope: z.ZodLiteral<"all_content_collections">;
|
|
872
|
+
status: z.ZodEnum<{
|
|
873
|
+
never: "never";
|
|
874
|
+
unknown: "unknown";
|
|
875
|
+
failed: "failed";
|
|
876
|
+
complete: "complete";
|
|
877
|
+
running: "running";
|
|
878
|
+
partial: "partial";
|
|
879
|
+
stale: "stale";
|
|
880
|
+
}>;
|
|
881
|
+
}, z.core.$strip>;
|
|
882
|
+
}, z.core.$strip>;
|
|
584
883
|
declare const mediaUsageRepairStatusSchema: z.ZodEnum<{
|
|
585
884
|
failed: "failed";
|
|
586
885
|
complete: "complete";
|
|
@@ -639,6 +938,13 @@ declare const mediaUsageRepairResponseSchema: z.ZodObject<{
|
|
|
639
938
|
}, z.core.$strip>;
|
|
640
939
|
type MediaUsageRepairRequest = z.infer<typeof mediaUsageRepairBody>;
|
|
641
940
|
type MediaUsageRepairResponse = z.infer<typeof mediaUsageRepairResponseSchema>;
|
|
941
|
+
type MediaUsageCoverageStatus = z.infer<typeof mediaUsageCoverageStatusSchema>;
|
|
942
|
+
type MediaUsageCoverage = z.infer<typeof mediaUsageCoverageSchema>;
|
|
943
|
+
type MediaUsageSummary = z.infer<typeof mediaUsageSummarySchema>;
|
|
944
|
+
type MediaUsageOccurrenceDetail = z.infer<typeof mediaUsageOccurrenceDetailSchema>;
|
|
945
|
+
type MediaUsageSourceDetail = z.infer<typeof mediaUsageSourceDetailSchema>;
|
|
946
|
+
type MediaUsageEntryDetail = z.infer<typeof mediaUsageEntryDetailSchema>;
|
|
947
|
+
type MediaUsageDetailsResponse = z.infer<typeof mediaUsageDetailsResponseSchema>;
|
|
642
948
|
//#endregion
|
|
643
949
|
//#region src/api/schemas/schema.d.ts
|
|
644
950
|
declare const createCollectionBody: z.ZodObject<{
|
|
@@ -1655,14 +1961,14 @@ declare const searchQuery: z.ZodObject<{
|
|
|
1655
1961
|
q: z.ZodString;
|
|
1656
1962
|
collections: z.ZodOptional<z.ZodString>;
|
|
1657
1963
|
status: z.ZodOptional<z.ZodString>;
|
|
1658
|
-
locale: z.ZodOptional<z.
|
|
1964
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
1659
1965
|
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
1660
1966
|
cursor: z.ZodOptional<z.ZodString>;
|
|
1661
1967
|
}, z.core.$strip>;
|
|
1662
1968
|
declare const searchSuggestQuery: z.ZodObject<{
|
|
1663
1969
|
q: z.ZodString;
|
|
1664
1970
|
collections: z.ZodOptional<z.ZodString>;
|
|
1665
|
-
locale: z.ZodOptional<z.
|
|
1971
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
1666
1972
|
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
1667
1973
|
}, z.core.$strip>;
|
|
1668
1974
|
declare const searchRebuildBody: z.ZodObject<{
|
|
@@ -2379,5 +2685,5 @@ declare const referenceParentsResponseSchema: z.ZodObject<{
|
|
|
2379
2685
|
nextCursor: z.ZodOptional<z.ZodString>;
|
|
2380
2686
|
}, z.core.$strip>;
|
|
2381
2687
|
//#endregion
|
|
2382
|
-
export { atprotoLoginBody as $,
|
|
2383
|
-
//# sourceMappingURL=relations-
|
|
2688
|
+
export { atprotoLoginBody as $, CONTENT_TYPE_RE as $n, passkeyRegisterVerifyBody as $t, notFoundPruneBody as A, updateCollectionBody as An, contentSeoSchema as Ar, termResponseSchema as At, reorderWidgetsBody as B, MediaUsageSummary as Bn, countResponseSchema as Br, menuSchema as Bt, bylineUpdateBody as C, fieldReorderBody as Cn, contentListQuery as Cr, createTaxonomyDefBody as Ct, notFoundEntrySchema as D, orphanedTableListResponseSchema as Dn, contentResponseSchema as Dr, taxonomyListResponseSchema as Dt, createRedirectBody as E, orphanRegisterBody as En, contentPublishBody as Er, taxonomyDefTranslationsSchema as Et, redirectSchema as F, MediaUsageEntryDetail as Fn, contentUpdateBody as Fr, createMenuBody as Ft, widgetSchema as G, mediaUsageEntryDetailSchema as Gn, localeFilterQuery as Gr, updateMenuItemBody as Gt, widgetAreaSchema as H, mediaUsageCoverageStatusSchema as Hn, deleteResponseSchema as Hr, menuWithItemsSchema as Ht, redirectsListQuery as I, MediaUsageOccurrenceDetail as In, trashedContentItemSchema as Ir, createMenuItemBody as It, userDetailSchema as J, mediaUsageRepairCollectionSummarySchema as Jn, slugPattern as Jr, inviteCreateBody as Jt, allowedDomainCreateBody as K, mediaUsageOccurrenceDetailSchema as Kn, offsetPaginationQuery as Kr, authMeActionBody as Kt, updateRedirectBody as L, MediaUsageRepairRequest as Ln, trashedContentListResponseSchema as Lr, menuItemSchema as Lt, notFoundSummaryResponseSchema as M, MediaUsageCoverage as Mn, contentTranslationSchema as Mr, termTranslationsSchema as Mt, notFoundSummarySchema as N, MediaUsageCoverageStatus as Nn, contentTranslationsResponseSchema as Nr, termWithCountSchema as Nt, notFoundListQuery as O, orphanedTableSchema as On, contentScheduleBody as Or, termGetResponseSchema as Ot, redirectListResponseSchema as P, MediaUsageDetailsResponse as Pn, contentTrashQuery as Pr, updateTermBody as Pt, usersListQuery as Q, mediaUsageSummarySchema as Qn, passkeyRegisterOptionsBody as Qt, createWidgetAreaBody as R, MediaUsageRepairResponse as Rn, VALID_ROLE_LEVELS as Rr, menuItemTypeEnum as Rt, bylineTranslationsResponseSchema as S, fieldListResponseSchema as Sn, contentItemSchema as Sr, updateSectionBody as St, contentBylineInputSchema as T, fieldSchema as Tn, contentPreviewUrlBody as Tr, taxonomyDefSchema as Tt, widgetAreaWithWidgetsAndCountSchema as U, mediaUsageDetailsQuery as Un, httpUrl as Ur, reorderMenuItemsBody as Ut, updateWidgetBody as V, mediaUsageCoverageSchema as Vn, cursorPaginationQuery as Vr, menuTranslationsSchema as Vt, widgetAreaWithWidgetsSchema as W, mediaUsageDetailsResponseSchema as Wn, localeCode as Wr, updateMenuBody as Wt, userSchema as X, mediaUsageRepairStatusSchema as Xn, magicLinkSendBody as Xt, userListResponseSchema as Y, mediaUsageRepairResponseSchema as Yn, successEnvelope as Yr, inviteRegisterOptionsBody as Yt, userUpdateBody as Z, mediaUsageSourceDetailSchema as Zn, passkeyOptionsBody as Zt, bylineCreateBody as _, collectionResponseSchema as _n, mediaUploadUrlResponseSchema as _r, siteSettingsSchema as _t, relationDefSchema as a, commentBulkBody as an, mediaGetQuery as ar, wpMediaImportBody as at, bylineSummarySchema as b, createCollectionBody as bn, contentCompareResponseSchema as br, sectionSchema as bt, relationTranslationsSchema as c, commentListQuery as cn, mediaListReadItemSchema as cr, wpPrepareBody as ct, bylineFieldCreateBody as d, createCommentBody as dn, mediaProviderListQuery as dr, searchQuery as dt, passkeyRenameBody as en, DEFAULT_MAX_UPLOAD_SIZE as er, setupAdminBody as et, bylineFieldDefinitionSchema as f, createReactionBody as fn, mediaReadItemSchema as fr, searchRebuildBody as ft, bylineFieldUsageResponseSchema as g, collectionListResponseSchema as gn, mediaUploadUrlBody as gr, settingsUpdateBody as gt, bylineFieldUpdateBody as h, collectionGetQuery as hn, mediaUpdateBody as hr, searchSuggestQuery as ht, referenceParentsResponseSchema as i, adminCommentListResponseSchema as in, mediaExistingResponseSchema as ir, importProbeBody as it, notFoundSummaryQuery as j, updateFieldBody as jn, contentTermsBody as jr, termSchema as jt, notFoundListResponseSchema as k, schemaExportQuery as kn, contentSeoInput as kr, termListResponseSchema as kt, setReferenceChildrenBody as l, commentSchema as ln, mediaListReadResponseSchema as lr, wpRewriteUrlsBody as lt, bylineFieldReorderBody as m, publicCommentSchema as mn, mediaResponseSchema as mr, searchResultSchema as mt, entryRefSchema as n, signupCompleteBody as nn, mediaConfirmBody as nr, setupAtprotoAdminBody as nt, relationListResponseSchema as o, commentBulkResponseSchema as on, mediaItemSchema as or, wpPluginAnalyzeBody as ot, bylineFieldListResponseSchema as p, publicCommentListResponseSchema as pn, mediaReadResponseSchema as pr, searchResponseSchema as pt, allowedDomainUpdateBody as q, mediaUsageRepairBody as qn, roleLevel as qr, inviteCompleteBody as qt, referenceChildrenResponseSchema as r, signupRequestBody as rn, mediaConfirmResponseSchema as rr, setupBody as rt, relationResponseSchema as s, commentCountsResponseSchema as sn, mediaListQuery as sr, wpPluginExecuteBody as st, createRelationBody as t, passkeyVerifyBody as tn, formatFileSize as tr, setupAdminVerifyBody as tt, updateRelationBody as u, commentStatusBody as un, mediaListResponseSchema as ur, searchEnableBody as ut, bylineCreditSchema as v, collectionSchema as vn, contentAuthorSchema as vr, createSectionBody as vt, bylinesListQuery as w, fieldResponseSchema as wn, contentListResponseSchema as wr, createTermBody as wt, bylineTranslationCreateBody as x, createFieldBody as xn, contentCreateBody as xr, sectionsListQuery as xt, bylineListResponseSchema as y, collectionWithFieldsResponseSchema as yn, contentAuthorsResponseSchema as yr, sectionListResponseSchema as yt, createWidgetBody as z, MediaUsageSourceDetail as zn, apiErrorSchema as zr, menuListItemSchema as zt };
|
|
2689
|
+
//# sourceMappingURL=relations-BKybBoOX.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations-BKybBoOX.d.mts","names":[],"sources":["../src/api/schemas/common.ts","../src/api/schemas/content.ts","../src/api/schemas/media.ts","../src/api/schemas/media-usage.ts","../src/api/schemas/schema.ts","../src/api/schemas/comments.ts","../src/api/schemas/auth.ts","../src/api/schemas/menus.ts","../src/api/schemas/taxonomies.ts","../src/api/schemas/sections.ts","../src/api/schemas/settings.ts","../src/api/schemas/search.ts","../src/api/schemas/import.ts","../src/api/schemas/setup.ts","../src/api/schemas/users.ts","../src/api/schemas/widgets.ts","../src/api/schemas/redirects.ts","../src/api/schemas/bylines.ts","../src/api/schemas/byline-fields.ts","../src/api/schemas/relations.ts"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as RESERVED_BYLINE_FIELD_SLUGS } from "./types-o7xo7VgH.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { L as httpUrl, R as localeCode, V as roleLevel } from "./media-BJ6SRY3g.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/api/schemas/auth.ts
|
|
@@ -258,7 +258,7 @@ const createRelationBody = z.object({
|
|
|
258
258
|
childCollection: collectionSlug.optional(),
|
|
259
259
|
parentLabel: z.string().min(1).max(200),
|
|
260
260
|
childLabel: z.string().min(1).max(200),
|
|
261
|
-
locale:
|
|
261
|
+
locale: localeCode.optional(),
|
|
262
262
|
translationOf: z.string().min(1).optional()
|
|
263
263
|
}).refine((body) => body.translationOf !== void 0 || body.parentCollection !== void 0 && body.childCollection !== void 0, { message: "parentCollection and childCollection are required unless translationOf is set" }).meta({ id: "CreateRelationBody" });
|
|
264
264
|
const updateRelationBody = z.object({
|
|
@@ -306,4 +306,4 @@ const referenceParentsResponseSchema = z.object({
|
|
|
306
306
|
|
|
307
307
|
//#endregion
|
|
308
308
|
export { inviteCreateBody as A, wpMediaImportBody as C, wpRewriteUrlsBody as D, wpPrepareBody as E, passkeyRegisterVerifyBody as F, passkeyRenameBody as I, passkeyVerifyBody as L, magicLinkSendBody as M, passkeyOptionsBody as N, authMeActionBody as O, passkeyRegisterOptionsBody as P, signupCompleteBody as R, importProbeBody as S, wpPluginExecuteBody as T, atprotoLoginBody as _, relationDefSchema as a, setupAtprotoAdminBody as b, relationTranslationsSchema as c, bylineFieldCreateBody as d, bylineFieldDefinitionSchema as f, bylineFieldUsageResponseSchema as g, bylineFieldUpdateBody as h, referenceParentsResponseSchema as i, inviteRegisterOptionsBody as j, inviteCompleteBody as k, setReferenceChildrenBody as l, bylineFieldReorderBody as m, entryRefSchema as n, relationListResponseSchema as o, bylineFieldListResponseSchema as p, referenceChildrenResponseSchema as r, relationResponseSchema as s, createRelationBody as t, updateRelationBody as u, setupAdminBody as v, wpPluginAnalyzeBody as w, setupBody as x, setupAdminVerifyBody as y, signupRequestBody as z };
|
|
309
|
-
//# sourceMappingURL=relations-
|
|
309
|
+
//# sourceMappingURL=relations-CZMpBqEd.mjs.map
|