emdash 0.37.0 → 0.38.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/{activation-K0kGBWuJ.mjs → activation-DyNTe_Tl.mjs} +3 -3
- package/dist/{activation-K0kGBWuJ.mjs.map → activation-DyNTe_Tl.mjs.map} +1 -1
- package/dist/{adapters-BDQwg236.d.mts → adapters-DCEgOBXi.d.mts} +1 -1
- package/dist/{adapters-BDQwg236.d.mts.map → adapters-DCEgOBXi.d.mts.map} +1 -1
- package/dist/{allowed-origins-BGglilcs.mjs → allowed-origins-GFUVavRj.mjs} +2 -2
- package/dist/{allowed-origins-BGglilcs.mjs.map → allowed-origins-GFUVavRj.mjs.map} +1 -1
- package/dist/api/route-utils.d.mts +3 -3
- package/dist/api/route-utils.mjs +23 -22
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +5 -5
- package/dist/{api-Dz6rgoa3.mjs → api-BvxJmnFY.mjs} +141 -87
- package/dist/api-BvxJmnFY.mjs.map +1 -0
- package/dist/{api-tokens-BSsQACNe.mjs → api-tokens-xpGqMHrC.mjs} +2 -2
- package/dist/{api-tokens-BSsQACNe.mjs.map → api-tokens-xpGqMHrC.mjs.map} +1 -1
- package/dist/{apply-B4SIOxR1.mjs → apply-DLmM3R7f.mjs} +25 -21
- package/dist/apply-DLmM3R7f.mjs.map +1 -0
- package/dist/{config-it29yDLA.mjs → artifact-fetch-P2JXVwOq.mjs} +8 -199
- package/dist/artifact-fetch-P2JXVwOq.mjs.map +1 -0
- package/dist/astro/index.d.mts +12 -12
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +37 -11
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +10 -10
- package/dist/astro/middleware/auth.mjs +6 -6
- package/dist/astro/middleware/media-usage-write-fence.mjs +3 -3
- package/dist/astro/middleware/redirect.mjs +7 -5
- package/dist/astro/middleware/redirect.mjs.map +1 -1
- package/dist/astro/middleware/request-context.mjs +3 -3
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +10 -10
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +154 -125
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +3 -3
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -9
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -9
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -9
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +16 -16
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +16 -16
- package/dist/astro/routes/api/admin/bylines/index.mjs +16 -16
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +11 -11
- package/dist/astro/routes/api/admin/comments/_id_.mjs +3 -3
- package/dist/astro/routes/api/admin/comments/bulk.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/counts.mjs +3 -3
- package/dist/astro/routes/api/admin/comments/index.mjs +8 -8
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +4 -4
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- package/dist/astro/routes/api/admin/media-usage/activation.mjs +13 -13
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +15 -15
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +15 -15
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +13 -13
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +16 -16
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +15 -15
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +15 -15
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +3 -3
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +3 -3
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -53
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +56 -53
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +54 -51
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +54 -51
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +55 -52
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +55 -52
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +54 -51
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +54 -51
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +55 -52
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +54 -51
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +55 -52
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +56 -53
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +5 -4
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +56 -53
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +55 -52
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +54 -51
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +54 -51
- 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 +2 -2
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +54 -51
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +6 -6
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
- package/dist/astro/routes/api/admin/users/index.mjs +6 -6
- package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
- package/dist/astro/routes/api/auth/invite/complete.mjs +11 -11
- package/dist/astro/routes/api/auth/invite/index.mjs +8 -8
- package/dist/astro/routes/api/auth/invite/register-options.mjs +10 -10
- package/dist/astro/routes/api/auth/logout.mjs +2 -2
- package/dist/astro/routes/api/auth/magic-link/send.mjs +10 -10
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/me.mjs +7 -7
- package/dist/astro/routes/api/auth/mode.mjs +2 -2
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
- package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/options.mjs +12 -12
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -10
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -11
- package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -11
- package/dist/astro/routes/api/auth/signup/complete.mjs +11 -11
- package/dist/astro/routes/api/auth/signup/request.mjs +10 -10
- package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +11 -11
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +13 -8
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts +10 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +66 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +11 -11
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +14 -9
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +19 -17
- 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 +19 -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 +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +15 -8
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +15 -14
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +13 -8
- 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 +23 -11
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +14 -9
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
- package/dist/astro/routes/api/dashboard.mjs +6 -6
- package/dist/astro/routes/api/dev/emails.mjs +2 -2
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +16 -16
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -11
- package/dist/astro/routes/api/import/wordpress/execute.mjs +14 -13
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -10
- package/dist/astro/routes/api/import/wordpress/media.mjs +11 -11
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +10 -10
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +11 -11
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +13 -13
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +16 -16
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +11 -11
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +27 -26
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +4 -4
- package/dist/astro/routes/api/mcp.mjs +71 -55
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +10 -10
- package/dist/astro/routes/api/media/_id_/replace.mjs +8 -8
- package/dist/astro/routes/api/media/_id_/upload.mjs +5 -5
- package/dist/astro/routes/api/media/_id_/usage.mjs +18 -18
- package/dist/astro/routes/api/media/_id_.mjs +17 -17
- package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
- package/dist/astro/routes/api/media/folders/_id_.mjs +8 -8
- package/dist/astro/routes/api/media/folders/index.mjs +8 -8
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
- package/dist/astro/routes/api/media/providers/index.mjs +2 -2
- package/dist/astro/routes/api/media/upload-url.mjs +9 -9
- package/dist/astro/routes/api/media.mjs +21 -21
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/items.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/translations.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_.mjs +9 -9
- package/dist/astro/routes/api/menus/index.mjs +9 -9
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
- package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
- package/dist/astro/routes/api/oauth/device/token.mjs +7 -7
- package/dist/astro/routes/api/oauth/register.mjs +2 -2
- package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
- package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
- package/dist/astro/routes/api/oauth/token.mjs +5 -5
- package/dist/astro/routes/api/openapi.json.mjs +84 -18
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
- 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 +19 -17
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/translations.mjs +14 -12
- package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +19 -17
- package/dist/astro/routes/api/relations/index.mjs.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +54 -51
- 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 +54 -51
- 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 +54 -51
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +54 -51
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +54 -51
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +54 -51
- package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +13 -11
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +54 -51
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +54 -51
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +12 -11
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +11 -10
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +12 -11
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +7 -6
- package/dist/astro/routes/api/search/stats.mjs.map +1 -1
- package/dist/astro/routes/api/search/suggest.mjs +11 -10
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +11 -10
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +11 -10
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -6
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +6 -5
- package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/export.mjs +7 -6
- package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/index.mjs +8 -7
- package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +14 -14
- package/dist/astro/routes/api/setup/admin-verify.mjs +12 -12
- package/dist/astro/routes/api/setup/admin.mjs +11 -11
- package/dist/astro/routes/api/setup/dev-bypass.mjs +33 -31
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +33 -31
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +8 -7
- package/dist/astro/routes/api/snapshot.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +15 -14
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +16 -15
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
- package/dist/astro/routes/api/themes/preview.mjs +5 -5
- package/dist/astro/routes/api/typegen.mjs +4 -4
- package/dist/astro/routes/api/well-known/auth.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +8 -8
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +12 -12
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +12 -12
- package/dist/astro/routes/api/widget-areas/_name_.mjs +7 -7
- package/dist/astro/routes/api/widget-areas/index.mjs +12 -12
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +6 -6
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +11 -10
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
- package/dist/astro/routes/sitemap.xml.mjs +7 -7
- package/dist/astro/types.d.mts +32 -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-Bkf_UHhD.mjs → authorize-C2QHlWSS.mjs} +2 -2
- package/dist/{authorize-Bkf_UHhD.mjs.map → authorize-C2QHlWSS.mjs.map} +1 -1
- package/dist/{backup-rwVAl9NI.mjs → backup-oS8ft5Cm.mjs} +5 -5
- package/dist/{backup-rwVAl9NI.mjs.map → backup-oS8ft5Cm.mjs.map} +1 -1
- package/dist/{bundle-C8S2Zl6U.mjs → bundle-CL0JjIPx.mjs} +4 -4
- package/dist/{bundle-C8S2Zl6U.mjs.map → bundle-CL0JjIPx.mjs.map} +1 -1
- package/dist/{byline-DuhF7NWl.mjs → byline-Vdi85CsZ.mjs} +6 -6
- package/dist/{byline-DuhF7NWl.mjs.map → byline-Vdi85CsZ.mjs.map} +1 -1
- package/dist/{byline-fields-BovY4KYM.mjs → byline-fields-DPVRFMz2.mjs} +2 -2
- package/dist/{byline-fields-BovY4KYM.mjs.map → byline-fields-DPVRFMz2.mjs.map} +1 -1
- package/dist/{byline-registry-Bpu9-MVs.mjs → byline-registry-BxDGIO0I.mjs} +2 -2
- package/dist/{byline-registry-Bpu9-MVs.mjs.map → byline-registry-BxDGIO0I.mjs.map} +1 -1
- package/dist/{bylines-CJ5nd6Lw.mjs → bylines-BX8QhcTk.mjs} +7 -7
- package/dist/{bylines-CJ5nd6Lw.mjs.map → bylines-BX8QhcTk.mjs.map} +1 -1
- package/dist/{bylines-RwBAeOF1.mjs → bylines-w-E1IEQd.mjs} +3 -3
- package/dist/{bylines-RwBAeOF1.mjs.map → bylines-w-E1IEQd.mjs.map} +1 -1
- package/dist/{cache-BF5Kvn59.mjs → cache--7HKu5Xm.mjs} +4 -4
- package/dist/{cache-BF5Kvn59.mjs.map → cache--7HKu5Xm.mjs.map} +1 -1
- package/dist/{capture-triggers-CNW1q3HK.mjs → capture-triggers-CeAsC76Z.mjs} +2 -2
- package/dist/{capture-triggers-CNW1q3HK.mjs.map → capture-triggers-CeAsC76Z.mjs.map} +1 -1
- package/dist/{challenge-store-DQN_Yrck.mjs → challenge-store-BIOak-tp.mjs} +1 -1
- package/dist/{challenge-store-DQN_Yrck.mjs.map → challenge-store-BIOak-tp.mjs.map} +1 -1
- package/dist/{chrome-tags-D8fiZG94.mjs → chrome-tags-DzDQBCjX.mjs} +1 -1
- package/dist/{chrome-tags-D8fiZG94.mjs.map → chrome-tags-DzDQBCjX.mjs.map} +1 -1
- package/dist/{chunks-C4szrD8o.mjs → chunks-VG_tyqnP.mjs} +2 -2
- package/dist/{chunks-C4szrD8o.mjs.map → chunks-VG_tyqnP.mjs.map} +1 -1
- package/dist/cli/index.mjs +66 -38
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +17 -7
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +17 -12
- package/dist/client/index.mjs.map +1 -1
- package/dist/{collection-deletion-Bj07NHbj.mjs → collection-deletion-BCwaWTDw.mjs} +4 -4
- package/dist/{collection-deletion-Bj07NHbj.mjs.map → collection-deletion-BCwaWTDw.mjs.map} +1 -1
- package/dist/collection-slugs-cache-7lTmNzeA.mjs +85 -0
- package/dist/collection-slugs-cache-7lTmNzeA.mjs.map +1 -0
- package/dist/{comment-reaction-BhrvSHml.mjs → comment-reaction-CDyvPQRj.mjs} +2 -2
- package/dist/{comment-reaction-BhrvSHml.mjs.map → comment-reaction-CDyvPQRj.mjs.map} +1 -1
- package/dist/{comments-Ct4ensnf.mjs → comments-VzmVLyaC.mjs} +1 -1
- package/dist/{comments-Ct4ensnf.mjs.map → comments-VzmVLyaC.mjs.map} +1 -1
- package/dist/{components-DJbo1z0S.mjs → components-CL6Wkdk-.mjs} +1 -1
- package/dist/{components-DJbo1z0S.mjs.map → components-CL6Wkdk-.mjs.map} +1 -1
- package/dist/config--eWjQJE5.mjs +217 -0
- package/dist/config--eWjQJE5.mjs.map +1 -0
- package/dist/{index-BJNMCWmu.d.mts → config-CGAhyOjP.d.mts} +138 -47
- package/dist/config-CGAhyOjP.d.mts.map +1 -0
- package/dist/{config-B9eZ340f.d.mts → config-ChFzshGd.d.mts} +1 -1
- package/dist/{config-B9eZ340f.d.mts.map → config-ChFzshGd.d.mts.map} +1 -1
- package/dist/{content-DjvM0T92.mjs → content-CNfMWuhY.mjs} +121 -5
- package/dist/content-CNfMWuhY.mjs.map +1 -0
- package/dist/{content-list-query-Btqd4uV2.d.mts → content-list-query-B8d4UQp9.d.mts} +1 -1
- package/dist/{content-list-query-Btqd4uV2.d.mts.map → content-list-query-B8d4UQp9.d.mts.map} +1 -1
- package/dist/{content-refresh-Bwp-8yGy.mjs → content-refresh-GTMyi2Xy.mjs} +8 -8
- package/dist/{content-refresh-Bwp-8yGy.mjs.map → content-refresh-GTMyi2Xy.mjs.map} +1 -1
- package/dist/{content-repair-Czdp7jz5.mjs → content-repair-CIMt5C0U.mjs} +4 -4
- package/dist/{content-repair-Czdp7jz5.mjs.map → content-repair-CIMt5C0U.mjs.map} +1 -1
- package/dist/{context-CX6gxOLW.mjs → context-C9PB8vGd.mjs} +265 -25
- package/dist/context-C9PB8vGd.mjs.map +1 -0
- package/dist/{cron-C6o7VppJ.mjs → cron-DHAy9oyq.mjs} +1 -1
- package/dist/{cron-C6o7VppJ.mjs.map → cron-DHAy9oyq.mjs.map} +1 -1
- package/dist/{dashboard-C2kTeeRI.mjs → dashboard-BNSvAN8A.mjs} +4 -4
- package/dist/{dashboard-C2kTeeRI.mjs.map → dashboard-BNSvAN8A.mjs.map} +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +2 -2
- package/dist/db/libsql-migrations.d.mts +1 -1
- package/dist/db/libsql-migrations.mjs +5 -5
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres-migrations.d.mts +1 -1
- package/dist/db/postgres-migrations.mjs +5 -5
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite-migrations.d.mts +1 -1
- package/dist/db/sqlite-migrations.mjs +5 -5
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/db/sqlite.mjs +1 -1
- package/dist/{default-Clra32mw.mjs → default-ByZ0JqZo.mjs} +1 -1
- package/dist/{default-Clra32mw.mjs.map → default-ByZ0JqZo.mjs.map} +1 -1
- package/dist/{deferred-tasks-CvDETTJO.d.mts → deferred-tasks-Cu4NSJpa.d.mts} +1 -1
- package/dist/{deferred-tasks-CvDETTJO.d.mts.map → deferred-tasks-Cu4NSJpa.d.mts.map} +1 -1
- package/dist/{dev-typegen-DzOPfsNj.mjs → dev-typegen-DHT7lcMU.mjs} +1 -1
- package/dist/{dev-typegen-DzOPfsNj.mjs.map → dev-typegen-DHT7lcMU.mjs.map} +1 -1
- package/dist/{device-flow-D2oCWvLJ.mjs → device-flow-Cf6bhCCT.mjs} +4 -4
- package/dist/{device-flow-D2oCWvLJ.mjs.map → device-flow-Cf6bhCCT.mjs.map} +1 -1
- package/dist/{dialect-helpers-BSbfaO3F.mjs → dialect-helpers-BcQvkHgn.mjs} +83 -2
- package/dist/dialect-helpers-BcQvkHgn.mjs.map +1 -0
- package/dist/{direct-executor-Bfa5_ToE.mjs → direct-executor-yAyUGSqB.mjs} +3 -3
- package/dist/{direct-executor-Bfa5_ToE.mjs.map → direct-executor-yAyUGSqB.mjs.map} +1 -1
- package/dist/{dist-89xCrGqi.mjs → dist-BAsh8dbf.mjs} +1 -1
- package/dist/{dist-89xCrGqi.mjs.map → dist-BAsh8dbf.mjs.map} +1 -1
- package/dist/{email-console-Dzb6uGYa.mjs → email-console-DNup1Fku.mjs} +1 -1
- package/dist/{email-console-Dzb6uGYa.mjs.map → email-console-DNup1Fku.mjs.map} +1 -1
- package/dist/{enrich-BX0IDp4z.mjs → enrich-t2Xvjdqa.mjs} +3 -3
- package/dist/{enrich-BX0IDp4z.mjs.map → enrich-t2Xvjdqa.mjs.map} +1 -1
- package/dist/entry-lock-BEr8gDkG.mjs +163 -0
- package/dist/entry-lock-BEr8gDkG.mjs.map +1 -0
- package/dist/{relations-DnRK4YIT.d.mts → entry-lock-CGAtrwAR.d.mts} +92 -37
- package/dist/entry-lock-CGAtrwAR.d.mts.map +1 -0
- package/dist/{redirects-BLNOWQTn.mjs → entry-lock-DIYHAaSw.mjs} +57 -14
- package/dist/entry-lock-DIYHAaSw.mjs.map +1 -0
- package/dist/entry-locks-BEcX7ET0.mjs +167 -0
- package/dist/entry-locks-BEcX7ET0.mjs.map +1 -0
- package/dist/{error-DFrQjppn.mjs → error-BDcFyoRt.mjs} +2 -2
- package/dist/{error-DFrQjppn.mjs.map → error-BDcFyoRt.mjs.map} +1 -1
- package/dist/{errors-DsVoDUjJ.mjs → errors-DvMdNrgf.mjs} +8 -1
- package/dist/errors-DvMdNrgf.mjs.map +1 -0
- package/dist/{escape-HmHTC1Is.mjs → escape-B3asJC6W.mjs} +1 -1
- package/dist/{escape-HmHTC1Is.mjs.map → escape-B3asJC6W.mjs.map} +1 -1
- package/dist/{field-defs-cache-BM4SIRqH.mjs → field-defs-cache-Cf5FHK0M.mjs} +5 -5
- package/dist/{field-defs-cache-BM4SIRqH.mjs.map → field-defs-cache-Cf5FHK0M.mjs.map} +1 -1
- package/dist/{fts-manager-Do1BlW2r.mjs → fts-manager-iddym8cd.mjs} +4 -4
- package/dist/{fts-manager-Do1BlW2r.mjs.map → fts-manager-iddym8cd.mjs.map} +1 -1
- package/dist/{hash-3JJPlHF2.mjs → hash-BRweX6jz.mjs} +1 -1
- package/dist/{hash-3JJPlHF2.mjs.map → hash-BRweX6jz.mjs.map} +1 -1
- package/dist/{hook-result-DCh2WUpe.d.mts → hook-result-BrshYHLx.d.mts} +1 -1
- package/dist/{hook-result-DCh2WUpe.d.mts.map → hook-result-BrshYHLx.d.mts.map} +1 -1
- package/dist/{hreflang-B6hbAuuO.d.mts → hreflang-CQpu5bMy.d.mts} +2 -2
- package/dist/{hreflang-B6hbAuuO.d.mts.map → hreflang-CQpu5bMy.d.mts.map} +1 -1
- package/dist/{hreflang-DQbPZliA.mjs → hreflang-DshnweTC.mjs} +9 -8
- package/dist/{hreflang-DQbPZliA.mjs.map → hreflang-DshnweTC.mjs.map} +1 -1
- package/dist/{identity-DksvEazf.mjs → identity-CjGKDq8J.mjs} +3 -3
- package/dist/{identity-DksvEazf.mjs.map → identity-CjGKDq8J.mjs.map} +1 -1
- package/dist/{import-CJpaBBBT.mjs → import-D96g2otw.mjs} +5 -5
- package/dist/{import-CJpaBBBT.mjs.map → import-D96g2otw.mjs.map} +1 -1
- package/dist/{index-Du8K7bWa.d.mts → index-1ECYpfiF.d.mts} +3 -3
- package/dist/{index-Du8K7bWa.d.mts.map → index-1ECYpfiF.d.mts.map} +1 -1
- package/dist/index.d.mts +22 -22
- package/dist/index.mjs +81 -78
- package/dist/{init-lock-DJkX6Hto.mjs → init-lock-CFNBe_iH.mjs} +1 -1
- package/dist/{init-lock-DJkX6Hto.mjs.map → init-lock-CFNBe_iH.mjs.map} +1 -1
- package/dist/{load-CawHjTOH.mjs → load-DPtY9cZo.mjs} +2 -2
- package/dist/{load-CawHjTOH.mjs.map → load-DPtY9cZo.mjs.map} +1 -1
- package/dist/{loader-Z8vl7zTq.mjs → loader-WJi6GFRn.mjs} +46 -8
- package/dist/loader-WJi6GFRn.mjs.map +1 -0
- package/dist/{manifest-builder-COtzuca2.mjs → manifest-builder-BfNlGQIA.mjs} +2 -2
- package/dist/{manifest-builder-COtzuca2.mjs.map → manifest-builder-BfNlGQIA.mjs.map} +1 -1
- package/dist/{manifest-schema-BNWwR8Vd.mjs → manifest-schema-CILooI5J.mjs} +1 -1
- package/dist/{manifest-schema-BNWwR8Vd.mjs.map → manifest-schema-CILooI5J.mjs.map} +1 -1
- package/dist/media/image-endpoint.mjs +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +3 -3
- package/dist/media/local-runtime.d.mts +12 -12
- package/dist/media/local-runtime.mjs +5 -5
- package/dist/{media-BHjus86Y.mjs → media-C1EIZKh1.mjs} +1 -1
- package/dist/{media-BHjus86Y.mjs.map → media-C1EIZKh1.mjs.map} +1 -1
- package/dist/{media-allowlist-CoTBWoDp.mjs → media-allowlist-elXJgb_K.mjs} +2 -2
- package/dist/{media-allowlist-CoTBWoDp.mjs.map → media-allowlist-elXJgb_K.mjs.map} +1 -1
- package/dist/{media-folders-BGkATs8n.mjs → media-folders-DASfX_DH.mjs} +1 -1
- package/dist/{media-folders-BGkATs8n.mjs.map → media-folders-DASfX_DH.mjs.map} +1 -1
- package/dist/{media-upload-BCidR-EY.mjs → media-upload-C7_AQJ5v.mjs} +8 -8
- package/dist/{media-upload-BCidR-EY.mjs.map → media-upload-C7_AQJ5v.mjs.map} +1 -1
- package/dist/{media-url-DHoPr0hq.mjs → media-url-8dVl1loq.mjs} +19 -2
- package/dist/media-url-8dVl1loq.mjs.map +1 -0
- package/dist/{media-usage-CdY5jhSR.mjs → media-usage-C1EswMTq.mjs} +9 -9
- package/dist/{media-usage-CdY5jhSR.mjs.map → media-usage-C1EswMTq.mjs.map} +1 -1
- package/dist/{media-usage-activation-BgeMtK5C.mjs → media-usage-activation-CrHNltlL.mjs} +3 -3
- package/dist/{media-usage-activation-BgeMtK5C.mjs.map → media-usage-activation-CrHNltlL.mjs.map} +1 -1
- package/dist/{media-usage-work-D6D9sMCA.mjs → media-usage-work-C5B1zT1c.mjs} +2 -2
- package/dist/{media-usage-work-D6D9sMCA.mjs.map → media-usage-work-C5B1zT1c.mjs.map} +1 -1
- package/dist/{media-usage-work-CnGCdHxx.mjs → media-usage-work-IkQx_Yz6.mjs} +4 -4
- package/dist/{media-usage-work-CnGCdHxx.mjs.map → media-usage-work-IkQx_Yz6.mjs.map} +1 -1
- package/dist/{media-usage-write-fence-hjeD4u7s.mjs → media-usage-write-fence-B9anjOSg.mjs} +3 -3
- package/dist/{media-usage-write-fence-hjeD4u7s.mjs.map → media-usage-write-fence-B9anjOSg.mjs.map} +1 -1
- package/dist/{menus-6qSwTNxG.mjs → menus-D8mC4eaN.mjs} +115 -136
- package/dist/menus-D8mC4eaN.mjs.map +1 -0
- package/dist/{menus-uvPLXMZf.mjs → menus-UdwjHZJC.mjs} +11 -3
- package/dist/{menus-uvPLXMZf.mjs.map → menus-UdwjHZJC.mjs.map} +1 -1
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.mjs +4 -4
- package/dist/{mime-CUIG6x84.mjs → mime-DYpsOAny.mjs} +1 -1
- package/dist/{mime-CUIG6x84.mjs.map → mime-DYpsOAny.mjs.map} +1 -1
- package/dist/{mode-DN_WneRx.mjs → mode-Dm4BHhRH.mjs} +1 -1
- package/dist/{mode-DN_WneRx.mjs.map → mode-Dm4BHhRH.mjs.map} +1 -1
- package/dist/{node-sqlite-compat-BuJXIeMz.mjs → node-sqlite-compat-2sezm-Zd.mjs} +1 -1
- package/dist/{node-sqlite-compat-BuJXIeMz.mjs.map → node-sqlite-compat-2sezm-Zd.mjs.map} +1 -1
- package/dist/{normalize-C2xNjTSG.mjs → normalize-4nkKGsuW.mjs} +1 -1
- package/dist/{normalize-C2xNjTSG.mjs.map → normalize-4nkKGsuW.mjs.map} +1 -1
- package/dist/{oauth-authorization-Dj6Kwc21.mjs → oauth-authorization-BxE_lURD.mjs} +4 -4
- package/dist/{oauth-authorization-Dj6Kwc21.mjs.map → oauth-authorization-BxE_lURD.mjs.map} +1 -1
- package/dist/{oauth-clients-FD7I0J8m.mjs → oauth-clients-DJIdOdq0.mjs} +1 -1
- package/dist/{oauth-clients-FD7I0J8m.mjs.map → oauth-clients-DJIdOdq0.mjs.map} +1 -1
- package/dist/{oauth-state-store-DkmDOmHs.mjs → oauth-state-store-CsdxP57n.mjs} +1 -1
- package/dist/{oauth-state-store-DkmDOmHs.mjs.map → oauth-state-store-CsdxP57n.mjs.map} +1 -1
- package/dist/{oauth-user-lookup-CvIwGpYd.mjs → oauth-user-lookup-HzzW-dkF.mjs} +1 -1
- package/dist/{oauth-user-lookup-CvIwGpYd.mjs.map → oauth-user-lookup-HzzW-dkF.mjs.map} +1 -1
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{options-BHPeIbBd.mjs → options-D1FBiAv1.mjs} +60 -5
- package/dist/options-D1FBiAv1.mjs.map +1 -0
- package/dist/{options-CYb4y7hM.d.mts → options-D8Y0VHc7.d.mts} +9 -3
- package/dist/options-D8Y0VHc7.d.mts.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.d.mts.map +1 -1
- package/dist/page/index.mjs +12 -0
- package/dist/page/index.mjs.map +1 -1
- package/dist/{parse-Ckpg-Qfp.mjs → parse-WRg5C3NX.mjs} +2 -2
- package/dist/{parse-Ckpg-Qfp.mjs.map → parse-WRg5C3NX.mjs.map} +1 -1
- package/dist/{passkey-config-O_lj3y0k.mjs → passkey-config-qIdO-wF6.mjs} +1 -1
- package/dist/{passkey-config-O_lj3y0k.mjs.map → passkey-config-qIdO-wF6.mjs.map} +1 -1
- package/dist/{patterns-D9iDO3j8.mjs → patterns-DC8CLptu.mjs} +1 -1
- package/dist/{patterns-D9iDO3j8.mjs.map → patterns-DC8CLptu.mjs.map} +1 -1
- package/dist/{placeholder-4X9BrRrp.d.mts → placeholder-COrvARyD.d.mts} +1 -1
- package/dist/{placeholder-4X9BrRrp.d.mts.map → placeholder-COrvARyD.d.mts.map} +1 -1
- package/dist/plugin-types.d.mts +3 -3
- package/dist/plugin-types.d.mts.map +1 -1
- package/dist/plugin-utils.d.mts +10 -10
- package/dist/plugins/adapt-sandbox-entry.d.mts +10 -10
- package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
- package/dist/{policy-Dhtwntrt.mjs → policy-XCfb-IE9.mjs} +2 -2
- package/dist/{policy-Dhtwntrt.mjs.map → policy-XCfb-IE9.mjs.map} +1 -1
- package/dist/{portable-text-U85hOafW.mjs → portable-text-BS3d5n-0.mjs} +1 -1
- package/dist/{portable-text-U85hOafW.mjs.map → portable-text-BS3d5n-0.mjs.map} +1 -1
- package/dist/{preview-B_vJLvf8.mjs → preview-BxwsGgGp.mjs} +2 -2
- package/dist/{preview-B_vJLvf8.mjs.map → preview-BxwsGgGp.mjs.map} +1 -1
- package/dist/{protocol-JdD2YhY9.d.mts → protocol-CLn58-nw.d.mts} +2 -2
- package/dist/{protocol-JdD2YhY9.d.mts.map → protocol-CLn58-nw.d.mts.map} +1 -1
- package/dist/{public-url-CarhZJgf.mjs → public-url-FWWAvnre.mjs} +1 -1
- package/dist/{public-url-CarhZJgf.mjs.map → public-url-FWWAvnre.mjs.map} +1 -1
- package/dist/{query-BZKZcG5b.mjs → query-DygOte9M.mjs} +25 -16
- package/dist/query-DygOte9M.mjs.map +1 -0
- package/dist/{query-BndaFxxp.mjs → query-gtXT03Wc.mjs} +4 -4
- package/dist/{query-BndaFxxp.mjs.map → query-gtXT03Wc.mjs.map} +1 -1
- package/dist/{rate-limit-BZmATC6W.mjs → rate-limit-CQUPm0dh.mjs} +2 -2
- package/dist/{rate-limit-BZmATC6W.mjs.map → rate-limit-CQUPm0dh.mjs.map} +1 -1
- package/dist/{redirect-CzqnLxK-.mjs → redirect-D1cWafi6.mjs} +1 -1
- package/dist/{redirect-CzqnLxK-.mjs.map → redirect-D1cWafi6.mjs.map} +1 -1
- package/dist/{redirect-CZkbozu9.mjs → redirect-DId44BS1.mjs} +19 -6
- package/dist/redirect-DId44BS1.mjs.map +1 -0
- package/dist/{redirects-CqzNM0KM.mjs → redirects-DN-ZE33W.mjs} +5 -5
- package/dist/{redirects-CqzNM0KM.mjs.map → redirects-DN-ZE33W.mjs.map} +1 -1
- package/dist/{registry-AZAsRsor.mjs → registry-DTqaqxed.mjs} +26 -10
- package/dist/registry-DTqaqxed.mjs.map +1 -0
- package/dist/{relation-04DfKRTO.mjs → relation-DxgCHOBw.mjs} +2 -2
- package/dist/{relation-04DfKRTO.mjs.map → relation-DxgCHOBw.mjs.map} +1 -1
- package/dist/{relations-CcFwDJdJ.mjs → relations-KKDSLUwS.mjs} +4 -4
- package/dist/{relations-CcFwDJdJ.mjs.map → relations-KKDSLUwS.mjs.map} +1 -1
- package/dist/{relations-C4htk5sb.mjs → relations-rOmbndUJ.mjs} +3 -3
- package/dist/{relations-C4htk5sb.mjs.map → relations-rOmbndUJ.mjs.map} +1 -1
- package/dist/{request-cache-DH9zdCOD.mjs → request-cache-DAZZmesc.mjs} +1 -1
- package/dist/{request-cache-DH9zdCOD.mjs.map → request-cache-DAZZmesc.mjs.map} +1 -1
- package/dist/request-context.d.mts +1 -1
- package/dist/{request-meta-DYxLlnmz.mjs → request-meta-BgjUQLQ-.mjs} +2 -2
- package/dist/{request-meta-DYxLlnmz.mjs.map → request-meta-BgjUQLQ-.mjs.map} +1 -1
- package/dist/{resolve-prZ3mP7l.mjs → resolve-Cy0aWSRj.mjs} +37 -4
- package/dist/resolve-Cy0aWSRj.mjs.map +1 -0
- package/dist/{runner-YKfIMnaF.d.mts → runner-CfwysRM0.d.mts} +2 -2
- package/dist/{runner-YKfIMnaF.d.mts.map → runner-CfwysRM0.d.mts.map} +1 -1
- package/dist/{runner-BLIDKpmA.mjs → runner-nEzvnogG.mjs} +419 -295
- package/dist/runner-nEzvnogG.mjs.map +1 -0
- package/dist/runtime.d.mts +11 -11
- package/dist/runtime.mjs +3 -2
- package/dist/runtime.mjs.map +1 -1
- package/dist/{schema-CGnBeLiW.mjs → schema-CRu38Pr5.mjs} +3 -3
- package/dist/{schema-CGnBeLiW.mjs.map → schema-CRu38Pr5.mjs.map} +1 -1
- package/dist/{schema-DYr-Vd-L.mjs → schema-DifxndJx.mjs} +4 -4
- package/dist/{schema-DYr-Vd-L.mjs.map → schema-DifxndJx.mjs.map} +1 -1
- package/dist/{scopes-BhWvBavj.mjs → scopes-D5A1OZbq.mjs} +3 -3
- package/dist/{scopes-BhWvBavj.mjs.map → scopes-D5A1OZbq.mjs.map} +1 -1
- package/dist/{search-C-qDk4kx.mjs → search-DEPFSBFq.mjs} +4 -4
- package/dist/{search-C-qDk4kx.mjs.map → search-DEPFSBFq.mjs.map} +1 -1
- package/dist/{secrets-rEtHt-6z.mjs → secrets-CdfzLdoO.mjs} +3 -3
- package/dist/{secrets-rEtHt-6z.mjs.map → secrets-CdfzLdoO.mjs.map} +1 -1
- package/dist/{sections-B_nYvlwn.mjs → sections-3X52kmIR.mjs} +2 -2
- package/dist/{sections-B_nYvlwn.mjs.map → sections-3X52kmIR.mjs.map} +1 -1
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +26 -24
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.d.mts.map +1 -1
- package/dist/seo/index.mjs +18 -19
- package/dist/seo/index.mjs.map +1 -1
- package/dist/{seo-926NRIgt.mjs → seo-Bw68KxRc.mjs} +2 -2
- package/dist/{seo-926NRIgt.mjs.map → seo-Bw68KxRc.mjs.map} +1 -1
- package/dist/{seo-CVWkdv6x.mjs → seo-C4AmbsMU.mjs} +3 -2
- package/dist/seo-C4AmbsMU.mjs.map +1 -0
- package/dist/{service-CJl3ZAYs.mjs → service-J_-Vgo7R.mjs} +2 -2
- package/dist/{service-CJl3ZAYs.mjs.map → service-J_-Vgo7R.mjs.map} +1 -1
- package/dist/{session-user-BlMgqCHS.mjs → session-user-CbnMMwk6.mjs} +1 -1
- package/dist/{session-user-BlMgqCHS.mjs.map → session-user-CbnMMwk6.mjs.map} +1 -1
- package/dist/{settings-Cwm6o2jY.mjs → settings-AnEFYICn.mjs} +3 -3
- package/dist/{settings-Cwm6o2jY.mjs.map → settings-AnEFYICn.mjs.map} +1 -1
- package/dist/{settings--wobrkkC.mjs → settings-DcMjREe5.mjs} +6 -6
- package/dist/{settings--wobrkkC.mjs.map → settings-DcMjREe5.mjs.map} +1 -1
- package/dist/{setup-complete-DQbClIN2.mjs → setup-complete-BClXXTvr.mjs} +2 -2
- package/dist/{setup-complete-DQbClIN2.mjs.map → setup-complete-BClXXTvr.mjs.map} +1 -1
- package/dist/{setup-nonce-DZCFS2sn.mjs → setup-nonce-BheRa4RG.mjs} +1 -1
- package/dist/{setup-nonce-DZCFS2sn.mjs.map → setup-nonce-BheRa4RG.mjs.map} +1 -1
- package/dist/{single-flight-cache-BPuGPdcN.mjs → single-flight-cache-jaswDzmQ.mjs} +2 -2
- package/dist/{single-flight-cache-BPuGPdcN.mjs.map → single-flight-cache-jaswDzmQ.mjs.map} +1 -1
- package/dist/{site-url-BrxA_E9H.mjs → site-url-Bqf-ea3N.mjs} +3 -3
- package/dist/{site-url-BrxA_E9H.mjs.map → site-url-Bqf-ea3N.mjs.map} +1 -1
- package/dist/{snapshot--OCDTqdb.mjs → snapshot-C4CtXntb.mjs} +51 -35
- package/dist/snapshot-C4CtXntb.mjs.map +1 -0
- package/dist/{ssrf-5sIM5jzl.mjs → ssrf-gl4gFNhw.mjs} +148 -91
- package/dist/ssrf-gl4gFNhw.mjs.map +1 -0
- package/dist/{state-BpFVsJZB.mjs → state-1F6IOhdQ.mjs} +1 -1
- package/dist/{state-BpFVsJZB.mjs.map → state-1F6IOhdQ.mjs.map} +1 -1
- package/dist/{status-B777-dXz.mjs → status-Cenfk_r5.mjs} +1 -1
- package/dist/{status-B777-dXz.mjs.map → status-Cenfk_r5.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/{target-BmR0iTwz.mjs → target-CRzeTs8G.mjs} +1 -1
- package/dist/{target-BmR0iTwz.mjs.map → target-CRzeTs8G.mjs.map} +1 -1
- package/dist/{taxonomies-DkAkMupr.mjs → taxonomies-BOdxuZpV.mjs} +11 -4
- package/dist/taxonomies-BOdxuZpV.mjs.map +1 -0
- package/dist/{taxonomies-Wfy_Lg12.mjs → taxonomies-NcFDq5Gg.mjs} +23 -14
- package/dist/taxonomies-NcFDq5Gg.mjs.map +1 -0
- package/dist/{taxonomy-tJepplLL.mjs → taxonomy-DP1vny4K.mjs} +11 -3
- package/dist/{taxonomy-tJepplLL.mjs.map → taxonomy-DP1vny4K.mjs.map} +1 -1
- package/dist/{tokens-BCO1oruF.mjs → tokens-CDk8ox9p.mjs} +1 -1
- package/dist/{tokens-BCO1oruF.mjs.map → tokens-CDk8ox9p.mjs.map} +1 -1
- package/dist/{transport-xh6YKW2G.d.mts → transport-BVn4tVb9.d.mts} +1 -1
- package/dist/{transport-xh6YKW2G.d.mts.map → transport-BVn4tVb9.d.mts.map} +1 -1
- package/dist/{transport-Dr3qtwXC.mjs → transport-DP0JI-8i.mjs} +1 -1
- package/dist/{transport-Dr3qtwXC.mjs.map → transport-DP0JI-8i.mjs.map} +1 -1
- package/dist/{trusted-proxy-BR5F1Otp.mjs → trusted-proxy-BTM6UxqD.mjs} +1 -1
- package/dist/{trusted-proxy-BR5F1Otp.mjs.map → trusted-proxy-BTM6UxqD.mjs.map} +1 -1
- package/dist/{types-CXFkwEGC.d.mts → types-2n848aVW.d.mts} +1 -1
- package/dist/{types-CXFkwEGC.d.mts.map → types-2n848aVW.d.mts.map} +1 -1
- package/dist/{types-75KIqzL9.mjs → types-BMXnRIrX.mjs} +4 -2
- package/dist/types-BMXnRIrX.mjs.map +1 -0
- package/dist/{types-B6GrPic4.d.mts → types-BouXpOsa.d.mts} +115 -4
- package/dist/types-BouXpOsa.d.mts.map +1 -0
- package/dist/{types-3qNFPlci.mjs → types-ByG2coLw.mjs} +1 -1
- package/dist/{types-3qNFPlci.mjs.map → types-ByG2coLw.mjs.map} +1 -1
- package/dist/types-CQPWhPxE.mjs.map +1 -1
- package/dist/{types-CDtkNSFQ.d.mts → types-DEfNJ__A.d.mts} +1 -1
- package/dist/{types-CDtkNSFQ.d.mts.map → types-DEfNJ__A.d.mts.map} +1 -1
- package/dist/{types-xDMtUFnO.d.mts → types-DKcKSbtB.d.mts} +23 -7
- package/dist/types-DKcKSbtB.d.mts.map +1 -0
- package/dist/{types-C00oyCZp.d.mts → types-DRYs7uTL.d.mts} +1 -1
- package/dist/{types-C00oyCZp.d.mts.map → types-DRYs7uTL.d.mts.map} +1 -1
- package/dist/{types-DczELMop.d.mts → types-DaEg7KX2.d.mts} +1 -1
- package/dist/{types-DczELMop.d.mts.map → types-DaEg7KX2.d.mts.map} +1 -1
- package/dist/{types-BuHW4xDE.d.mts → types-LU8utpP_.d.mts} +6 -3
- package/dist/types-LU8utpP_.d.mts.map +1 -0
- package/dist/{types-CPeXo1wF.d.mts → types-VpYfPUxN.d.mts} +1 -1
- package/dist/{types-CPeXo1wF.d.mts.map → types-VpYfPUxN.d.mts.map} +1 -1
- package/dist/{types-DM3vioBY.mjs → types-c9GP7Dj5.mjs} +1 -1
- package/dist/{types-DM3vioBY.mjs.map → types-c9GP7Dj5.mjs.map} +1 -1
- package/dist/{types-FV23hEoW.d.mts → types-tJWDK__M.d.mts} +14 -1
- package/dist/types-tJWDK__M.d.mts.map +1 -0
- package/dist/{upload-attempts-BsqoQ1fn.mjs → upload-attempts-C6S2y-lp.mjs} +1 -1
- package/dist/{upload-attempts-BsqoQ1fn.mjs.map → upload-attempts-C6S2y-lp.mjs.map} +1 -1
- package/dist/{url-pattern-D4c2czpJ.mjs → url-pattern-UYtxVTuj.mjs} +1 -1
- package/dist/{url-pattern-D4c2czpJ.mjs.map → url-pattern-UYtxVTuj.mjs.map} +1 -1
- package/dist/{user-BTZ40aq6.mjs → user-DIsIXogT.mjs} +2 -2
- package/dist/{user-BTZ40aq6.mjs.map → user-DIsIXogT.mjs.map} +1 -1
- package/dist/{utils-BKvNjjhY.mjs → utils-BicP5Qbg.mjs} +2 -2
- package/dist/{utils-BKvNjjhY.mjs.map → utils-BicP5Qbg.mjs.map} +1 -1
- package/dist/{validate-DE_LRwo9.mjs → validate-D8VPn4Hv.mjs} +8 -3
- package/dist/validate-D8VPn4Hv.mjs.map +1 -0
- package/dist/{validate-DUP27OYD.d.mts → validate-Df6Dvwbw.d.mts} +12 -7
- package/dist/validate-Df6Dvwbw.d.mts.map +1 -0
- package/dist/{validation-BMImFJ11.mjs → validation-CzMJn9Ku.mjs} +13 -11
- package/dist/{validation-BMImFJ11.mjs.map → validation-CzMJn9Ku.mjs.map} +1 -1
- package/dist/version-CK67_SXX.mjs +7 -0
- package/dist/{version-Bii3suaO.mjs.map → version-CK67_SXX.mjs.map} +1 -1
- package/dist/{widgets-D3gJ10xU.mjs → widgets-RFVAxQl3.mjs} +5 -5
- package/dist/{widgets-D3gJ10xU.mjs.map → widgets-RFVAxQl3.mjs.map} +1 -1
- package/dist/{wxr-taxonomies-B2Og_6rU.d.mts → wxr-taxonomies-BX4yQL9s.d.mts} +1 -1
- package/dist/{wxr-taxonomies-B2Og_6rU.d.mts.map → wxr-taxonomies-BX4yQL9s.d.mts.map} +1 -1
- package/dist/{wxr-taxonomies-Cxngsjwo.mjs → wxr-taxonomies-Csdp7yde.mjs} +4 -4
- package/dist/{wxr-taxonomies-Cxngsjwo.mjs.map → wxr-taxonomies-Csdp7yde.mjs.map} +1 -1
- package/dist/{zod-generator-BuYSQJB7.mjs → zod-generator-CNRGdnBY.mjs} +3 -3
- package/dist/{zod-generator-BuYSQJB7.mjs.map → zod-generator-CNRGdnBY.mjs.map} +1 -1
- package/package.json +12 -10
- package/src/api/errors.ts +7 -0
- package/src/api/handlers/content.ts +66 -79
- package/src/api/handlers/entry-lock.ts +206 -0
- package/src/api/handlers/manifest.ts +1 -0
- package/src/api/handlers/marketplace.ts +28 -20
- package/src/api/handlers/menus.ts +9 -0
- package/src/api/handlers/registry.ts +13 -8
- package/src/api/handlers/revision.ts +2 -1
- package/src/api/handlers/seo.ts +10 -1
- package/src/api/handlers/snapshot.ts +84 -72
- package/src/api/handlers/taxonomies.ts +9 -0
- package/src/api/openapi/document.ts +111 -6
- package/src/api/schemas/content.ts +8 -0
- package/src/api/schemas/entry-lock.ts +48 -0
- package/src/api/schemas/index.ts +1 -0
- package/src/api/schemas/schema.ts +10 -1
- package/src/api/types.ts +2 -0
- package/src/astro/integration/index.ts +9 -6
- package/src/astro/integration/routes.ts +5 -0
- package/src/astro/integration/runtime.ts +13 -5
- package/src/astro/integration/vite-config.ts +30 -0
- package/src/astro/middleware.ts +16 -0
- package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +10 -0
- package/src/astro/routes/api/content/[collection]/[id]/lock.ts +133 -0
- package/src/astro/routes/api/content/[collection]/[id]/publish.ts +11 -1
- package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +20 -0
- package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +10 -0
- package/src/astro/routes/api/content/[collection]/[id].ts +27 -2
- package/src/astro/routes/api/content/[collection]/index.ts +3 -0
- package/src/astro/routes/sitemap-[collection].xml.ts +4 -0
- package/src/astro/types.ts +13 -3
- package/src/cli/commands/content.ts +31 -5
- package/src/cli/commands/export-seed.ts +2 -0
- package/src/client/index.ts +34 -7
- package/src/components/EmDashBodyEnd.astro +4 -1
- package/src/components/EmDashBodyStart.astro +4 -1
- package/src/components/EmDashHead.astro +35 -16
- package/src/components/Gallery.astro +18 -4
- package/src/components/InlineEditor.astro +3 -1
- package/src/components/InlinePortableTextEditor.tsx +106 -11
- package/src/components/PortableText.astro +4 -0
- package/src/components/Table.astro +147 -62
- package/src/config/errors.ts +13 -0
- package/src/content/converters/portable-text-to-prosemirror.ts +26 -2
- package/src/content/converters/prosemirror-to-portable-text.ts +35 -6
- package/src/content/converters/types.ts +10 -0
- package/src/database/dialect-helpers.ts +125 -0
- package/src/database/migrations/075_entry_edit_locks.ts +44 -0
- package/src/database/migrations/076_collection_nav_group.ts +22 -0
- package/src/database/migrations/077_plugin_storage_revisions.ts +89 -0
- package/src/database/migrations/runner.ts +6 -0
- package/src/database/repositories/content.ts +170 -1
- package/src/database/repositories/entry-locks.ts +257 -0
- package/src/database/repositories/options.ts +69 -5
- package/src/database/repositories/plugin-storage.ts +159 -0
- package/src/database/repositories/redirect.ts +17 -6
- package/src/database/repositories/taxonomy.ts +8 -0
- package/src/database/repositories/types.ts +3 -0
- package/src/database/types.ts +15 -1
- package/src/emdash-runtime.ts +117 -50
- package/src/i18n/resolve.ts +44 -4
- package/src/index.ts +14 -0
- package/src/loader.ts +35 -4
- package/src/mcp/server.ts +23 -5
- package/src/media/responsive.ts +23 -0
- package/src/media/usage/content-refresh.ts +2 -1
- package/src/menus/index.ts +17 -21
- package/src/page/seo-contributions.ts +78 -1
- package/src/page/seo-panel.ts +47 -0
- package/src/plugin-types.ts +9 -0
- package/src/plugins/conditional-storage.ts +30 -0
- package/src/plugins/context.ts +49 -17
- package/src/plugins/hooks.ts +7 -1
- package/src/plugins/index.ts +9 -0
- package/src/plugins/manager.ts +5 -2
- package/src/plugins/sandbox/types.ts +16 -2
- package/src/plugins/storage-query.ts +45 -0
- package/src/plugins/storage-update.ts +96 -0
- package/src/plugins/types.ts +114 -0
- package/src/query.ts +29 -3
- package/src/registry/config.ts +130 -27
- package/src/registry/types.ts +5 -6
- package/src/schema/collection-slugs-cache.ts +157 -0
- package/src/schema/registry.ts +19 -0
- package/src/schema/types.ts +25 -6
- package/src/security/ssrf.ts +167 -141
- package/src/seed/apply.ts +4 -0
- package/src/seed/types.ts +7 -2
- package/src/seed/validate.ts +18 -1
- package/src/seo/hreflang.ts +1 -0
- package/src/seo/index.ts +5 -10
- package/src/seo/media-url.ts +26 -0
- package/src/taxonomies/term-counts.ts +22 -5
- package/dist/api-Dz6rgoa3.mjs.map +0 -1
- package/dist/apply-B4SIOxR1.mjs.map +0 -1
- package/dist/config-it29yDLA.mjs.map +0 -1
- package/dist/content-DjvM0T92.mjs.map +0 -1
- package/dist/context-CX6gxOLW.mjs.map +0 -1
- package/dist/dialect-helpers-BSbfaO3F.mjs.map +0 -1
- package/dist/errors-DsVoDUjJ.mjs.map +0 -1
- package/dist/index-BJNMCWmu.d.mts.map +0 -1
- package/dist/loader-Z8vl7zTq.mjs.map +0 -1
- package/dist/media-url-DHoPr0hq.mjs.map +0 -1
- package/dist/menus-6qSwTNxG.mjs.map +0 -1
- package/dist/options-BHPeIbBd.mjs.map +0 -1
- package/dist/options-CYb4y7hM.d.mts.map +0 -1
- package/dist/query-BZKZcG5b.mjs.map +0 -1
- package/dist/redirect-CZkbozu9.mjs.map +0 -1
- package/dist/redirects-BLNOWQTn.mjs.map +0 -1
- package/dist/registry-AZAsRsor.mjs.map +0 -1
- package/dist/relations-DnRK4YIT.d.mts.map +0 -1
- package/dist/resolve-prZ3mP7l.mjs.map +0 -1
- package/dist/runner-BLIDKpmA.mjs.map +0 -1
- package/dist/seo-CVWkdv6x.mjs.map +0 -1
- package/dist/snapshot--OCDTqdb.mjs.map +0 -1
- package/dist/ssrf-5sIM5jzl.mjs.map +0 -1
- package/dist/taxonomies-DkAkMupr.mjs.map +0 -1
- package/dist/taxonomies-Wfy_Lg12.mjs.map +0 -1
- package/dist/types-75KIqzL9.mjs.map +0 -1
- package/dist/types-B6GrPic4.d.mts.map +0 -1
- package/dist/types-BuHW4xDE.d.mts.map +0 -1
- package/dist/types-FV23hEoW.d.mts.map +0 -1
- package/dist/types-xDMtUFnO.d.mts.map +0 -1
- package/dist/validate-DE_LRwo9.mjs.map +0 -1
- package/dist/validate-DUP27OYD.d.mts.map +0 -1
- package/dist/version-Bii3suaO.mjs +0 -7
- /package/dist/{api-tokens-BfYts-sq.mjs → api-tokens-B_lfpmH3.mjs} +0 -0
- /package/dist/{ssrf-Dg3cIT-b.mjs → ssrf-TQhaljuI.mjs} +0 -0
- /package/dist/{types-DfuTR6dL.mjs → types-A2cN6a4a.mjs} +0 -0
package/dist/client/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as ContentFieldFilters } from "../content-list-query-
|
|
2
|
-
import { a as tokenInterceptor, i as devBypassInterceptor, n as createTransport, r as csrfInterceptor, t as Interceptor } from "../transport-
|
|
1
|
+
import { r as ContentFieldFilters } from "../content-list-query-B8d4UQp9.mjs";
|
|
2
|
+
import { a as tokenInterceptor, i as devBypassInterceptor, n as createTransport, r as csrfInterceptor, t as Interceptor } from "../transport-BVn4tVb9.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/client/portable-text.d.ts
|
|
5
5
|
/**
|
|
@@ -481,17 +481,25 @@ declare class EmDashClient {
|
|
|
481
481
|
slug?: string;
|
|
482
482
|
status?: string;
|
|
483
483
|
_rev?: string;
|
|
484
|
-
locale?: string;
|
|
484
|
+
locale?: string; /** Write even though another editor holds this entry's edit lock. */
|
|
485
|
+
overrideLock?: boolean;
|
|
485
486
|
}): Promise<ContentItem>;
|
|
486
487
|
/** Delete (soft) a content item */
|
|
487
|
-
delete(collection: string, id: string
|
|
488
|
+
delete(collection: string, id: string, options?: {
|
|
489
|
+
overrideLock?: boolean;
|
|
490
|
+
}): Promise<void>;
|
|
488
491
|
/** Publish a content item */
|
|
489
|
-
publish(collection: string, id: string
|
|
492
|
+
publish(collection: string, id: string, options?: {
|
|
493
|
+
overrideLock?: boolean;
|
|
494
|
+
}): Promise<void>;
|
|
490
495
|
/** Unpublish a content item */
|
|
491
|
-
unpublish(collection: string, id: string
|
|
496
|
+
unpublish(collection: string, id: string, options?: {
|
|
497
|
+
overrideLock?: boolean;
|
|
498
|
+
}): Promise<void>;
|
|
492
499
|
/** Schedule publishing */
|
|
493
500
|
schedule(collection: string, id: string, options: {
|
|
494
501
|
at: string;
|
|
502
|
+
overrideLock?: boolean;
|
|
495
503
|
}): Promise<void>;
|
|
496
504
|
/** Restore a trashed content item */
|
|
497
505
|
restore(collection: string, id: string): Promise<void>;
|
|
@@ -502,7 +510,9 @@ declare class EmDashClient {
|
|
|
502
510
|
draft: Record<string, unknown> | null;
|
|
503
511
|
}>;
|
|
504
512
|
/** Discard draft revision, reverting to the published version */
|
|
505
|
-
discardDraft(collection: string, id: string
|
|
513
|
+
discardDraft(collection: string, id: string, options?: {
|
|
514
|
+
overrideLock?: boolean;
|
|
515
|
+
}): Promise<void>;
|
|
506
516
|
/**
|
|
507
517
|
* Get all translations of a content item.
|
|
508
518
|
* Returns the translation group ID and a summary of each locale version.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/client/portable-text.ts","../../src/client/index.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/client/portable-text.ts","../../src/client/index.ts"],"mappings":"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"}
|
package/dist/client/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as portableTextToMarkdown, n as convertDataForWrite, r as markdownToPortableText, t as convertDataForRead } from "../portable-text-
|
|
2
|
-
import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-
|
|
1
|
+
import { i as portableTextToMarkdown, n as convertDataForWrite, r as markdownToPortableText, t as convertDataForRead } from "../portable-text-BS3d5n-0.mjs";
|
|
2
|
+
import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-DP0JI-8i.mjs";
|
|
3
3
|
import mime from "mime/lite";
|
|
4
4
|
|
|
5
5
|
//#region src/client/index.ts
|
|
@@ -176,7 +176,8 @@ var EmDashClient = class {
|
|
|
176
176
|
data,
|
|
177
177
|
slug: input.slug,
|
|
178
178
|
status: input.status,
|
|
179
|
-
...input._rev ? { _rev: input._rev } : {}
|
|
179
|
+
...input._rev ? { _rev: input._rev } : {},
|
|
180
|
+
...input.overrideLock ? { overrideLock: true } : {}
|
|
180
181
|
};
|
|
181
182
|
const params = new URLSearchParams();
|
|
182
183
|
if (input.locale) params.set("locale", input.locale);
|
|
@@ -186,20 +187,24 @@ var EmDashClient = class {
|
|
|
186
187
|
return item;
|
|
187
188
|
}
|
|
188
189
|
/** Delete (soft) a content item */
|
|
189
|
-
async delete(collection, id) {
|
|
190
|
-
|
|
190
|
+
async delete(collection, id, options = {}) {
|
|
191
|
+
const query = options.overrideLock ? "?overrideLock=true" : "";
|
|
192
|
+
await this.request("DELETE", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}${query}`);
|
|
191
193
|
}
|
|
192
194
|
/** Publish a content item */
|
|
193
|
-
async publish(collection, id) {
|
|
194
|
-
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/publish
|
|
195
|
+
async publish(collection, id, options = {}) {
|
|
196
|
+
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/publish`, options.overrideLock ? { overrideLock: true } : void 0);
|
|
195
197
|
}
|
|
196
198
|
/** Unpublish a content item */
|
|
197
|
-
async unpublish(collection, id) {
|
|
198
|
-
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/unpublish
|
|
199
|
+
async unpublish(collection, id, options = {}) {
|
|
200
|
+
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/unpublish`, options.overrideLock ? { overrideLock: true } : void 0);
|
|
199
201
|
}
|
|
200
202
|
/** Schedule publishing */
|
|
201
203
|
async schedule(collection, id, options) {
|
|
202
|
-
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/schedule`, {
|
|
204
|
+
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/schedule`, {
|
|
205
|
+
scheduledAt: options.at,
|
|
206
|
+
...options.overrideLock ? { overrideLock: true } : {}
|
|
207
|
+
});
|
|
203
208
|
}
|
|
204
209
|
/** Restore a trashed content item */
|
|
205
210
|
async restore(collection, id) {
|
|
@@ -210,8 +215,8 @@ var EmDashClient = class {
|
|
|
210
215
|
return this.request("GET", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/compare`);
|
|
211
216
|
}
|
|
212
217
|
/** Discard draft revision, reverting to the published version */
|
|
213
|
-
async discardDraft(collection, id) {
|
|
214
|
-
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/discard-draft
|
|
218
|
+
async discardDraft(collection, id, options = {}) {
|
|
219
|
+
await this.request("POST", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/discard-draft`, options.overrideLock ? { overrideLock: true } : void 0);
|
|
215
220
|
}
|
|
216
221
|
/**
|
|
217
222
|
* Get all translations of a content item.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/client/index.ts"],"sourcesContent":["/**\n * EmDashClient — typed HTTP client for the EmDash REST API.\n *\n * Handles auth, CSRF, PT ↔ Markdown conversion, and optional `_rev`\n * concurrency tokens. Shared foundation for the CLI and future MCP server.\n *\n * @example\n * ```ts\n * import { EmDashClient } from \"emdash/client\";\n *\n * const client = new EmDashClient({\n * baseUrl: \"http://localhost:4321\",\n * devBypass: true,\n * });\n *\n * const posts = await client.list(\"posts\", { status: \"published\" });\n * ```\n */\n\nimport mime from \"mime/lite\";\n\nimport type { ContentFieldFilters } from \"../content-list-query.js\";\nimport type { FieldSchema } from \"./portable-text.js\";\nimport { convertDataForRead, convertDataForWrite } from \"./portable-text.js\";\nimport type { Interceptor } from \"./transport.js\";\nimport {\n\tcreateTransport,\n\tcsrfInterceptor,\n\tdevBypassInterceptor,\n\trefreshInterceptor,\n\ttokenInterceptor,\n} from \"./transport.js\";\n\n// Regex patterns for client utilities\nconst TRAILING_SLASH_PATTERN = /\\/$/;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction mimeFromFilename(filename: string): string {\n\treturn mime.getType(filename) ?? \"application/octet-stream\";\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface EmDashClientOptions {\n\t/** Base URL of the EmDash instance */\n\tbaseUrl: string;\n\t/** API token (ec_pat_...) or OAuth token (ec_oat_...) */\n\ttoken?: string;\n\t/** OAuth refresh token for auto-refresh on 401 */\n\trefreshToken?: string;\n\t/** Called when a token is refreshed (for persisting new access token) */\n\tonTokenRefresh?: (accessToken: string, expiresIn: number) => void;\n\t/** Use dev-bypass authentication (localhost only) */\n\tdevBypass?: boolean;\n\t/** Additional request interceptors */\n\tinterceptors?: Interceptor[];\n}\n\n/** Standard API error shape */\nexport interface ApiError {\n\tcode: string;\n\tmessage: string;\n\tdetails?: Record<string, unknown>;\n}\n\n/** Standard API response wrapper */\nexport interface ClientResponse<T> {\n\tsuccess: true;\n\tdata: T;\n}\n\n/** Paginated list response */\nexport interface ListResult<T> {\n\titems: T[];\n\tnextCursor?: string;\n}\n\n/** Content item as returned by the API */\nexport interface ContentItem {\n\tid: string;\n\ttype: string;\n\tslug: string | null;\n\tstatus: string;\n\tdata: Record<string, unknown>;\n\tauthorId: string | null;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tpublishedAt: string | null;\n\tscheduledAt: string | null;\n\tliveRevisionId: string | null;\n\tdraftRevisionId: string | null;\n\tlocale: string | null;\n\ttranslationGroup: string | null;\n\t_rev?: string;\n}\n\n/** Collection metadata */\nexport interface Collection {\n\tslug: string;\n\tlabel: string;\n\tlabelSingular: string;\n\tdescription?: string;\n\ticon?: string;\n\tsupports: string[];\n}\n\n/** Collection with fields */\nexport interface CollectionWithFields extends Collection {\n\tfields: Field[];\n}\n\n/** Field metadata */\nexport interface Field {\n\tslug: string;\n\tlabel: string;\n\ttype: string;\n\trequired: boolean;\n\tunique: boolean;\n\tdefaultValue?: unknown;\n\tvalidation?: unknown;\n\twidget?: string;\n\toptions?: unknown;\n\tsortOrder?: number;\n}\n\n/** Aggregate trust state for media usage reads */\nexport type MediaUsageCoverageStatus =\n\t| \"complete\"\n\t| \"never\"\n\t| \"running\"\n\t| \"partial\"\n\t| \"failed\"\n\t| \"stale\"\n\t| \"unknown\";\n\n/** Aggregate media usage coverage across all content collections */\nexport interface MediaUsageCoverage {\n\tscope: \"all_content_collections\";\n\tstatus: MediaUsageCoverageStatus;\n}\n\n/** Coverage-aware usage count for a media item */\nexport interface MediaUsageSummary {\n\tcount: number | null;\n\tcoverage: MediaUsageCoverage;\n}\n\n/** One indexed media reference within a content source */\nexport interface MediaUsageOccurrenceDetail {\n\tfieldSlug: string;\n\tfieldPath: string;\n\toccurrenceIndex: number;\n\treferenceType: \"image_field\" | \"file_field\" | \"portable_text_image\" | \"unknown\";\n}\n\n/** Indexed references from one visible content source */\nexport interface MediaUsageSourceDetail {\n\tvariant: \"columns\" | \"draft_overlay\";\n\toccurrences: MediaUsageOccurrenceDetail[];\n}\n\n/** One content entry that references a media item */\nexport interface MediaUsageEntryDetail {\n\tcollection: string;\n\tcontentId: string;\n\ttitle: string | null;\n\tslug: string | null;\n\tlocale: string | null;\n\tstatus: string | null;\n\tscheduledAt: string | null;\n\tdeletedAt: string | null;\n\tsources: MediaUsageSourceDetail[];\n}\n\n/** Entry-grouped media usage details */\nexport interface MediaUsageDetailsResponse {\n\titems: MediaUsageEntryDetail[];\n\tnextCursor?: string;\n\tcoverage: MediaUsageCoverage;\n}\n\n/** Media item */\nexport interface MediaItem {\n\tid: string;\n\tfilename: string;\n\tkey: string;\n\tmimeType: string;\n\tsize: number;\n\twidth?: number;\n\theight?: number;\n\tfocalX?: number | null;\n\tfocalY?: number | null;\n\talt?: string;\n\tcaption?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tfolderId?: string | null;\n\tusage?: MediaUsageSummary;\n}\n\n/** Result of assigning local media to a folder or the Main library */\nexport interface MediaFolderAssignment {\n\tid: string;\n\tfolderId: string | null;\n}\n\n/** Flat media-library folder */\nexport interface MediaFolder {\n\tid: string;\n\tname: string;\n}\n\n/** Media usage repair request */\nexport type MediaUsageRepairInput = { scope: \"collection\"; collection: string } | { scope: \"all\" };\n\n/** Media usage repair status */\nexport type MediaUsageRepairStatus = \"complete\" | \"partial\" | \"failed\" | \"stale\";\n\n/** Per-collection media usage repair summary */\nexport interface MediaUsageRepairCollectionSummary {\n\tcollection: string;\n\tstatus: MediaUsageRepairStatus;\n\tindexedSourceCount: number;\n\tfailedSourceCount: number;\n\tskippedSourceCount: number;\n\tdeletedSourceCount: number;\n\tlastErrorCode: string | null;\n\tstartedAt: string;\n\tcompletedAt: string | null;\n}\n\n/** Media usage repair response */\nexport interface MediaUsageRepairResponse {\n\tstatus: MediaUsageRepairStatus;\n\tindexedSourceCount: number;\n\tfailedSourceCount: number;\n\tskippedSourceCount: number;\n\tdeletedSourceCount: number;\n\tcollections: MediaUsageRepairCollectionSummary[];\n}\n\nexport interface MediaUsageProgress {\n\tstatus: \"indexing\" | \"ready\" | \"needs_attention\";\n\treadyCollections: number;\n\ttotalCollections: number;\n}\n\nexport interface MediaUsageProgressAdvanceResponse {\n\tactivation: MediaUsageActivationStatus;\n\tprogress: MediaUsageProgress | null;\n\tnextRequestInMs: 0 | 30_000 | null;\n}\n\n/** Durable media usage entry-work state */\nexport type MediaUsageWorkState = \"pending\" | \"retry\" | \"leased\" | \"failed\";\n\n/** Redacted operator view of one durable media usage job */\nexport interface MediaUsageWorkItem {\n\tcollectionId: string;\n\tcollectionSlug: string;\n\tcontentId: string;\n\tstate: MediaUsageWorkState;\n\tattemptCount: number;\n\tnextAttemptAt: string;\n\tleaseExpiresAt: string | null;\n\tlastAttemptedAt: string | null;\n\tlastErrorCode: string | null;\n\tupdatedAt: string;\n}\n\n/** Filters and pagination for durable media usage work */\nexport interface MediaUsageWorkListOptions {\n\tcollection: string;\n\tstate?: MediaUsageWorkState;\n\tlimit?: number;\n\tcursor?: string;\n}\n\n/** One bounded page of durable media usage work */\nexport interface MediaUsageWorkListResponse {\n\titems: MediaUsageWorkItem[];\n\tnextCursor?: string;\n}\n\n/** Identity for explicitly retrying one durable media usage job */\nexport interface MediaUsageWorkRetryInput {\n\tcollectionId: string;\n\tcontentId: string;\n}\n\n/** Result of explicitly retrying one durable media usage job */\nexport interface MediaUsageWorkRetryResponse {\n\tchanged: boolean;\n\titem: MediaUsageWorkItem;\n}\n\nexport interface MediaUsageActivationStatus {\n\tstate: \"expanded\" | \"activating\" | \"active\";\n\tcollectionCursor: string | null;\n\tattemptCount: number;\n\tdrainConfirmedAt: string | null;\n\tlastAttemptedAt: string | null;\n\tlastErrorCode: \"MEDIA_USAGE_ACTIVATION_FAILED\" | null;\n\tleaseExpiresAt: string | null;\n\tactivatedAt: string | null;\n\tupdatedAt: string;\n}\n\nexport interface MediaUsageActivationAdvanceInput {\n\twritersDrained: true;\n}\n\nexport interface MediaUsageActivationAdvanceResponse {\n\toutcome: \"activating\" | \"active\";\n\tprocessedCollections: number;\n\tactivation: MediaUsageActivationStatus;\n}\n\nexport type MediaUsageCollectionDeletionState = \"pending\" | \"retry\" | \"leased\" | \"failed\";\nexport type MediaUsageCollectionDeletionPhase =\n\t| \"fence\"\n\t| \"registry\"\n\t| \"table\"\n\t| \"work\"\n\t| \"sources\"\n\t| \"status\"\n\t| \"finalize\";\nexport interface MediaUsageCollectionDeletionItem {\n\tcollectionId: string;\n\tcollectionSlug: string;\n\tstate: MediaUsageCollectionDeletionState;\n\tphase: MediaUsageCollectionDeletionPhase;\n\tattemptCount: number;\n\tnextAttemptAt: string;\n\tleaseExpiresAt: string | null;\n\tlastErrorCode: string | null;\n\tupdatedAt: string;\n}\nexport interface MediaUsageCollectionDeletionListResponse {\n\titems: MediaUsageCollectionDeletionItem[];\n\tnextCursor?: string;\n}\n\n/** Search result */\nexport interface SearchResult {\n\tid: string;\n\tcollection: string;\n\ttitle: string;\n\texcerpt?: string;\n\tscore: number;\n}\n\n/** Taxonomy */\nexport interface Taxonomy {\n\tname: string;\n\tlabel: string;\n\thierarchical: boolean;\n}\n\n/** Taxonomy term */\nexport interface Term {\n\tid: string;\n\tslug: string;\n\tlabel: string;\n\tparentId?: string | null;\n\tdescription?: string;\n\tcount?: number;\n}\n\n/** Menu */\nexport interface Menu {\n\tname: string;\n\tlabel: string;\n}\n\n/** Menu with items */\nexport interface MenuWithItems extends Menu {\n\titems: MenuItem[];\n}\n\n/** Menu item */\nexport interface MenuItem {\n\tid: string;\n\ttype: string;\n\tlabel: string;\n\tcustomUrl?: string;\n\treferenceCollection?: string;\n\treferenceId?: string;\n\ttarget?: string;\n\tparentId?: string | null;\n\tsortOrder: number;\n}\n\n/** Full schema export (returned by /api/schema) */\nexport interface SchemaExport {\n\tcollections: Array<{\n\t\tslug: string;\n\t\tlabel: string;\n\t\tlabelSingular: string;\n\t\tdescription?: string;\n\t\ticon?: string;\n\t\tsupports: string[];\n\t\tfields: Array<{\n\t\t\tslug: string;\n\t\t\tlabel: string;\n\t\t\ttype: string;\n\t\t\trequired: boolean;\n\t\t\tunique: boolean;\n\t\t\tdefaultValue?: unknown;\n\t\t\tvalidation?: unknown;\n\t\t\twidget?: string;\n\t\t\toptions?: unknown;\n\t\t}>;\n\t}>;\n\tversion: string;\n}\n\n/** Manifest — full schema + field descriptors */\nexport interface Manifest {\n\tversion: string;\n\thash: string;\n\tcollections: Record<\n\t\tstring,\n\t\t{\n\t\t\tlabel: string;\n\t\t\tlabelSingular: string;\n\t\t\tsupports: string[];\n\t\t\tfields: Record<string, { kind: string; label?: string; required?: boolean }>;\n\t\t}\n\t>;\n}\n\n// ---------------------------------------------------------------------------\n// Client errors\n// ---------------------------------------------------------------------------\n\nexport class EmDashApiError extends Error {\n\tconstructor(\n\t\tpublic readonly status: number,\n\t\tpublic readonly code: string,\n\t\tmessage: string,\n\t\tpublic readonly details?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"EmDashApiError\";\n\t}\n}\n\nexport class EmDashClientError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"EmDashClientError\";\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Client\n// ---------------------------------------------------------------------------\n\nexport class EmDashClient {\n\tprivate readonly baseUrl: string;\n\tprivate readonly transport: { fetch: (request: Request) => Promise<Response> };\n\n\t/** Cached field schemas per collection for PT conversion */\n\tprivate fieldSchemaCache = new Map<string, FieldSchema[]>();\n\n\tconstructor(options: EmDashClientOptions) {\n\t\tthis.baseUrl = options.baseUrl.replace(TRAILING_SLASH_PATTERN, \"\");\n\n\t\t// Build interceptor chain\n\t\tconst interceptors: Interceptor[] = [csrfInterceptor()];\n\n\t\tif (options.token) {\n\t\t\tinterceptors.push(tokenInterceptor(options.token));\n\t\t} else if (options.devBypass) {\n\t\t\tinterceptors.push(devBypassInterceptor(this.baseUrl));\n\t\t}\n\n\t\t// Auto-refresh expired OAuth tokens\n\t\tif (options.refreshToken) {\n\t\t\tinterceptors.push(\n\t\t\t\trefreshInterceptor({\n\t\t\t\t\trefreshToken: options.refreshToken,\n\t\t\t\t\ttokenEndpoint: `${this.baseUrl}/_emdash/api/oauth/token/refresh`,\n\t\t\t\t\tonTokenRefreshed: options.onTokenRefresh\n\t\t\t\t\t\t? (accessToken, _refreshToken, expiresAt) => {\n\t\t\t\t\t\t\t\tconst expiresIn = Math.floor((new Date(expiresAt).getTime() - Date.now()) / 1000);\n\t\t\t\t\t\t\t\toptions.onTokenRefresh!(accessToken, expiresIn);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (options.interceptors) {\n\t\t\tinterceptors.push(...options.interceptors);\n\t\t}\n\n\t\tthis.transport = createTransport({ interceptors });\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Schema\n\t// -----------------------------------------------------------------------\n\n\t/** List all collections */\n\tasync collections(): Promise<Collection[]> {\n\t\tconst data = await this.request<{ items: Collection[] }>(\"GET\", \"/schema/collections\");\n\t\treturn data.items;\n\t}\n\n\t/** Get a single collection with its fields */\n\tasync collection(slug: string): Promise<CollectionWithFields> {\n\t\tconst data = await this.request<{ item: CollectionWithFields }>(\n\t\t\t\"GET\",\n\t\t\t`/schema/collections/${encodeURIComponent(slug)}?includeFields=true`,\n\t\t);\n\t\tconst col = data.item;\n\t\t// Cache field schemas for PT conversion\n\t\tif (col.fields) {\n\t\t\tthis.fieldSchemaCache.set(\n\t\t\t\tslug,\n\t\t\t\tcol.fields.map((f) => ({ slug: f.slug, type: f.type })),\n\t\t\t);\n\t\t}\n\t\treturn col;\n\t}\n\n\t/** Create a collection */\n\tasync createCollection(input: {\n\t\tslug: string;\n\t\tlabel: string;\n\t\tlabelSingular?: string;\n\t\tdescription?: string;\n\t\ticon?: string;\n\t\tsupports?: string[];\n\t}): Promise<Collection> {\n\t\tconst data = await this.request<{ item: Collection }>(\"POST\", \"/schema/collections\", input);\n\t\treturn data.item;\n\t}\n\n\t/** Delete a collection */\n\tasync deleteCollection(slug: string): Promise<void> {\n\t\tawait this.request<unknown>(\"DELETE\", `/schema/collections/${encodeURIComponent(slug)}`);\n\t}\n\n\t/** Create a field on a collection */\n\tasync createField(\n\t\tcollection: string,\n\t\tinput: {\n\t\t\tslug: string;\n\t\t\ttype: string;\n\t\t\tlabel: string;\n\t\t\trequired?: boolean;\n\t\t\tunique?: boolean;\n\t\t\tdefaultValue?: unknown;\n\t\t\tvalidation?: unknown;\n\t\t\twidget?: string;\n\t\t\toptions?: unknown;\n\t\t\tsortOrder?: number;\n\t\t},\n\t): Promise<Field> {\n\t\tconst data = await this.request<{ item: Field }>(\n\t\t\t\"POST\",\n\t\t\t`/schema/collections/${encodeURIComponent(collection)}/fields`,\n\t\t\tinput,\n\t\t);\n\t\t// Invalidate field cache\n\t\tthis.fieldSchemaCache.delete(collection);\n\t\treturn data.item;\n\t}\n\n\t/** Delete a field from a collection */\n\tasync deleteField(collection: string, fieldSlug: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"DELETE\",\n\t\t\t`/schema/collections/${encodeURIComponent(collection)}/fields/${encodeURIComponent(fieldSlug)}`,\n\t\t);\n\t\tthis.fieldSchemaCache.delete(collection);\n\t}\n\n\t/** Get full manifest (schema + field descriptors + features) */\n\tasync manifest(): Promise<Manifest> {\n\t\treturn this.request<Manifest>(\"GET\", \"/manifest\");\n\t}\n\n\t/** Export full schema as JSON (used by `emdash types`) */\n\tasync schemaExport(): Promise<SchemaExport> {\n\t\treturn this.request<SchemaExport>(\"GET\", \"/schema\");\n\t}\n\n\t/** Export schema as TypeScript type definitions (used by `emdash types`) */\n\tasync schemaTypes(): Promise<string> {\n\t\tconst response = await this.requestRaw(\"GET\", \"/schema?format=typescript\");\n\t\tawait this.assertOk(response);\n\t\treturn response.text();\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Content\n\t// -----------------------------------------------------------------------\n\n\t/** List content in a collection */\n\tasync list(\n\t\tcollection: string,\n\t\toptions?: {\n\t\t\tstatus?: string;\n\t\t\tlimit?: number;\n\t\t\tcursor?: string;\n\t\t\torderBy?: string;\n\t\t\torder?: \"asc\" | \"desc\";\n\t\t\tlocale?: string;\n\t\t\t/** AND-combined filters over custom fields explicitly marked as indexed. */\n\t\t\tfieldFilters?: ContentFieldFilters;\n\t\t},\n\t): Promise<ListResult<ContentItem>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.status) params.set(\"status\", options.status);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\t\tif (options?.orderBy) params.set(\"orderBy\", options.orderBy);\n\t\tif (options?.order) params.set(\"order\", options.order);\n\t\tif (options?.locale) params.set(\"locale\", options.locale);\n\t\tif (options?.fieldFilters && Object.keys(options.fieldFilters).length > 0) {\n\t\t\tparams.set(\"fieldFilters\", JSON.stringify(options.fieldFilters));\n\t\t}\n\n\t\tconst qs = params.toString();\n\t\tconst path = `/content/${encodeURIComponent(collection)}${qs ? `?${qs}` : \"\"}`;\n\t\treturn this.request<ListResult<ContentItem>>(\"GET\", path);\n\t}\n\n\t/** Async iterator that auto-follows cursors */\n\tasync *listAll(\n\t\tcollection: string,\n\t\toptions?: {\n\t\t\tstatus?: string;\n\t\t\tlimit?: number;\n\t\t\torderBy?: string;\n\t\t\torder?: \"asc\" | \"desc\";\n\t\t\tlocale?: string;\n\t\t\t/** AND-combined filters over custom fields explicitly marked as indexed. */\n\t\t\tfieldFilters?: ContentFieldFilters;\n\t\t},\n\t): AsyncGenerator<ContentItem> {\n\t\tlet cursor: string | undefined;\n\t\tdo {\n\t\t\tconst result = await this.list(collection, { ...options, cursor });\n\t\t\tfor (const item of result.items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tcursor = result.nextCursor;\n\t\t} while (cursor);\n\t}\n\n\t/**\n\t * Get a single content item. Returns the item with a `_rev` token\n\t * that can be passed to update() for optimistic concurrency.\n\t */\n\tasync get(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions?: { raw?: boolean; locale?: string },\n\t): Promise<ContentItem> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.locale) params.set(\"locale\", options.locale);\n\t\tconst qs = params.size > 0 ? `?${params}` : \"\";\n\t\tconst result = await this.requestRaw(\n\t\t\t\"GET\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}${qs}`,\n\t\t);\n\t\tif (!result.ok) {\n\t\t\tawait this.assertOk(result);\n\t\t}\n\n\t\tconst raw = (await result.json()) as { data: { item: ContentItem; _rev?: string } };\n\t\tconst json = raw.data;\n\t\tconst item = json.item;\n\n\t\t// Attach _rev to the item so callers can pass it back on update\n\t\tif (json._rev) {\n\t\t\titem._rev = json._rev;\n\t\t}\n\n\t\t// Convert PT fields to markdown unless raw is requested\n\t\tif (!options?.raw && item.data) {\n\t\t\tconst fields = await this.getFieldSchemas(collection);\n\t\t\titem.data = convertDataForRead(item.data, fields, false);\n\t\t}\n\n\t\treturn item;\n\t}\n\n\t/** Create a new content item */\n\tasync create(\n\t\tcollection: string,\n\t\tinput: {\n\t\t\tdata: Record<string, unknown>;\n\t\t\tslug?: string;\n\t\t\tstatus?: string;\n\t\t\tlocale?: string;\n\t\t\ttranslationOf?: string;\n\t\t},\n\t): Promise<ContentItem> {\n\t\t// Convert markdown strings to PT for portableText fields\n\t\tconst fields = await this.getFieldSchemas(collection);\n\t\tconst data = convertDataForWrite(input.data, fields);\n\n\t\tconst result = await this.request<{ item: ContentItem }>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}`,\n\t\t\t{ ...input, data },\n\t\t);\n\t\treturn result.item;\n\t}\n\n\t/**\n\t * Update a content item. Pass `_rev` from a prior get() for optimistic\n\t * concurrency — the server returns 409 if the item has changed.\n\t * Omit `_rev` for a blind write (no conflict detection).\n\t */\n\tasync update(\n\t\tcollection: string,\n\t\tid: string,\n\t\tinput: {\n\t\t\tdata?: Record<string, unknown>;\n\t\t\tslug?: string;\n\t\t\tstatus?: string;\n\t\t\t_rev?: string;\n\t\t\tlocale?: string;\n\t\t},\n\t): Promise<ContentItem> {\n\t\t// Convert markdown strings to PT\n\t\tlet data = input.data;\n\t\tif (data) {\n\t\t\tconst fields = await this.getFieldSchemas(collection);\n\t\t\tdata = convertDataForWrite(data, fields);\n\t\t}\n\n\t\tconst body = {\n\t\t\tdata,\n\t\t\tslug: input.slug,\n\t\t\tstatus: input.status,\n\t\t\t...(input._rev ? { _rev: input._rev } : {}),\n\t\t};\n\t\tconst params = new URLSearchParams();\n\t\tif (input.locale) params.set(\"locale\", input.locale);\n\t\tconst result = await this.request<{ item: ContentItem; _rev?: string }>(\n\t\t\t\"PUT\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}${params.toString() ? `?${params}` : \"\"}`,\n\t\t\tbody,\n\t\t);\n\n\t\tconst item = result.item;\n\t\tif (result._rev) {\n\t\t\titem._rev = result._rev;\n\t\t}\n\t\treturn item;\n\t}\n\n\t/** Delete (soft) a content item */\n\tasync delete(collection: string, id: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"DELETE\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}`,\n\t\t);\n\t}\n\n\t/** Publish a content item */\n\tasync publish(collection: string, id: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/publish`,\n\t\t);\n\t}\n\n\t/** Unpublish a content item */\n\tasync unpublish(collection: string, id: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/unpublish`,\n\t\t);\n\t}\n\n\t/** Schedule publishing */\n\tasync schedule(collection: string, id: string, options: { at: string }): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/schedule`,\n\t\t\t{ scheduledAt: options.at },\n\t\t);\n\t}\n\n\t/** Restore a trashed content item */\n\tasync restore(collection: string, id: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/restore`,\n\t\t);\n\t}\n\n\t/** Compare live and draft revisions */\n\tasync compare(\n\t\tcollection: string,\n\t\tid: string,\n\t): Promise<{\n\t\thasChanges: boolean;\n\t\tlive: Record<string, unknown> | null;\n\t\tdraft: Record<string, unknown> | null;\n\t}> {\n\t\treturn this.request<{\n\t\t\thasChanges: boolean;\n\t\t\tlive: Record<string, unknown> | null;\n\t\t\tdraft: Record<string, unknown> | null;\n\t\t}>(\"GET\", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/compare`);\n\t}\n\n\t/** Discard draft revision, reverting to the published version */\n\tasync discardDraft(collection: string, id: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/discard-draft`,\n\t\t);\n\t}\n\n\t/**\n\t * Get all translations of a content item.\n\t * Returns the translation group ID and a summary of each locale version.\n\t */\n\tasync translations(\n\t\tcollection: string,\n\t\tid: string,\n\t): Promise<{\n\t\ttranslationGroup: string;\n\t\ttranslations: Array<{\n\t\t\tid: string;\n\t\t\tlocale: string | null;\n\t\t\tslug: string | null;\n\t\t\tstatus: string;\n\t\t\tupdatedAt: string;\n\t\t}>;\n\t}> {\n\t\treturn this.request(\n\t\t\t\"GET\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/translations`,\n\t\t);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Media\n\t// -----------------------------------------------------------------------\n\n\t/** List media items */\n\tasync mediaList(options?: {\n\t\tmimeType?: string;\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t\tpage?: number;\n\t\tincludeUsage?: boolean;\n\t\tfolderId?: string | null;\n\t}): Promise<ListResult<MediaItem> & { totalCount?: number }> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.mimeType) params.set(\"mimeType\", options.mimeType);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\t\tif (options?.page !== undefined) params.set(\"page\", String(options.page));\n\t\tif (options?.includeUsage === true) params.set(\"includeUsage\", \"1\");\n\t\tif (options?.folderId === null) {\n\t\t\tparams.set(\"folderId\", \"unfiled\");\n\t\t} else if (options?.folderId !== undefined) {\n\t\t\tparams.set(\"folderId\", options.folderId);\n\t\t}\n\n\t\tconst qs = params.toString();\n\t\treturn this.request<ListResult<MediaItem> & { totalCount?: number }>(\n\t\t\t\"GET\",\n\t\t\t`/media${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t}\n\n\t/** Get a single media item */\n\tasync mediaGet(id: string, options?: { includeUsage?: boolean }): Promise<MediaItem> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.includeUsage === true) params.set(\"includeUsage\", \"1\");\n\n\t\tconst qs = params.toString();\n\t\tconst data = await this.request<{ item: MediaItem }>(\n\t\t\t\"GET\",\n\t\t\t`/media/${encodeURIComponent(id)}${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\t/** List media folders */\n\tasync mediaFolderList(\n\t\toptions: { limit?: number; cursor?: string; q?: string } = {},\n\t): Promise<ListResult<MediaFolder>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options.cursor !== undefined) params.set(\"cursor\", options.cursor);\n\t\tif (options.q !== undefined) params.set(\"q\", options.q);\n\t\tconst qs = params.toString();\n\t\treturn this.request<ListResult<MediaFolder>>(\"GET\", `/media/folders${qs ? `?${qs}` : \"\"}`);\n\t}\n\n\t/** Get one media folder */\n\tasync mediaFolderGet(id: string): Promise<MediaFolder> {\n\t\tconst data = await this.request<{ item: MediaFolder }>(\n\t\t\t\"GET\",\n\t\t\t`/media/folders/${encodeURIComponent(id)}`,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\t/** Create a media folder */\n\tasync mediaFolderCreate(name: string): Promise<MediaFolder> {\n\t\tconst data = await this.request<{ item: MediaFolder }>(\"POST\", \"/media/folders\", { name });\n\t\treturn data.item;\n\t}\n\n\t/** Rename a media folder */\n\tasync mediaFolderUpdate(id: string, name: string): Promise<MediaFolder> {\n\t\tconst data = await this.request<{ item: MediaFolder }>(\n\t\t\t\"PUT\",\n\t\t\t`/media/folders/${encodeURIComponent(id)}`,\n\t\t\t{ name },\n\t\t);\n\t\treturn data.item;\n\t}\n\n\t/** Delete a media folder */\n\tasync mediaFolderDelete(id: string): Promise<void> {\n\t\tawait this.request<unknown>(\"DELETE\", `/media/folders/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Assign media to a folder, or return it to the Main library */\n\tasync mediaSetFolder(id: string, folderId: string | null): Promise<MediaFolderAssignment> {\n\t\tconst data = await this.request<{ item: MediaFolderAssignment }>(\n\t\t\t\"PUT\",\n\t\t\t`/media/${encodeURIComponent(id)}`,\n\t\t\t{ folderId },\n\t\t);\n\t\treturn { id: data.item.id, folderId: data.item.folderId };\n\t}\n\n\t/** Get entry-grouped usage details for a media item */\n\tasync mediaGetUsage(\n\t\tid: string,\n\t\toptions?: { limit?: number; cursor?: string },\n\t): Promise<MediaUsageDetailsResponse> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor !== undefined) params.set(\"cursor\", options.cursor);\n\n\t\tconst qs = params.toString();\n\t\treturn this.request<MediaUsageDetailsResponse>(\n\t\t\t\"GET\",\n\t\t\t`/media/${encodeURIComponent(id)}/usage${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t}\n\n\t/** Upload a media file */\n\tasync mediaUpload(\n\t\tfile: Uint8Array | Blob,\n\t\tfilename: string,\n\t\toptions?: { alt?: string; caption?: string; contentType?: string },\n\t): Promise<MediaItem> {\n\t\tconst formData = new FormData();\n\n\t\t// Handle different file types\n\t\tif (file instanceof Blob) {\n\t\t\tformData.append(\"file\", file, filename);\n\t\t} else {\n\t\t\tconst mimeType = options?.contentType ?? mimeFromFilename(filename);\n\t\t\tformData.append(\"file\", new Blob([file as BlobPart], { type: mimeType }), filename);\n\t\t}\n\n\t\tif (options?.alt) formData.append(\"alt\", options.alt);\n\t\tif (options?.caption) formData.append(\"caption\", options.caption);\n\n\t\tconst url = `${this.baseUrl}/_emdash/api/media`;\n\t\tconst request = new Request(url, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData,\n\t\t});\n\n\t\tconst response = await this.transport.fetch(request);\n\t\tawait this.assertOk(response);\n\n\t\tconst raw = (await response.json()) as { data: { item: MediaItem } };\n\t\treturn raw.data.item;\n\t}\n\n\t/** Delete a media item */\n\tasync mediaDelete(id: string): Promise<void> {\n\t\tawait this.request<unknown>(\"DELETE\", `/media/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Repair content media usage indexes for one collection or all collections */\n\tasync mediaRepairUsage(input: MediaUsageRepairInput): Promise<MediaUsageRepairResponse> {\n\t\treturn this.request<MediaUsageRepairResponse>(\"POST\", \"/admin/media-usage/repair\", input);\n\t}\n\n\t/** Read aggregate Media Usage indexing progress */\n\tasync mediaGetUsageProgress(): Promise<MediaUsageProgress> {\n\t\treturn this.request<MediaUsageProgress>(\"GET\", \"/admin/media-usage/progress\");\n\t}\n\n\t/** Advance exactly one Media Usage maintenance step */\n\tasync mediaAdvanceUsageProgress(): Promise<MediaUsageProgressAdvanceResponse> {\n\t\treturn this.request<MediaUsageProgressAdvanceResponse>(\"POST\", \"/admin/media-usage/progress\");\n\t}\n\n\t/** Read the redacted controlled-activation status */\n\tasync mediaGetUsageActivation(): Promise<MediaUsageActivationStatus> {\n\t\treturn this.request<MediaUsageActivationStatus>(\"GET\", \"/admin/media-usage/activation\");\n\t}\n\n\t/** Advance exactly one controlled-activation batch */\n\tasync mediaAdvanceUsageActivation(\n\t\tinput: MediaUsageActivationAdvanceInput,\n\t): Promise<MediaUsageActivationAdvanceResponse> {\n\t\treturn this.request<MediaUsageActivationAdvanceResponse>(\n\t\t\t\"POST\",\n\t\t\t\"/admin/media-usage/activation\",\n\t\t\tinput,\n\t\t);\n\t}\n\n\t/** List a bounded page of durable media usage entry work */\n\tasync mediaListUsageWork(\n\t\toptions: MediaUsageWorkListOptions,\n\t): Promise<MediaUsageWorkListResponse> {\n\t\tconst params = new URLSearchParams({ collection: options.collection });\n\t\tif (options.state) params.set(\"state\", options.state);\n\t\tif (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options.cursor) params.set(\"cursor\", options.cursor);\n\t\treturn this.request<MediaUsageWorkListResponse>(\"GET\", `/admin/media-usage/work?${params}`);\n\t}\n\n\t/** Explicitly retry one durable media usage entry job */\n\tasync mediaRetryUsageWork(input: MediaUsageWorkRetryInput): Promise<MediaUsageWorkRetryResponse> {\n\t\treturn this.request<MediaUsageWorkRetryResponse>(\n\t\t\t\"POST\",\n\t\t\t\"/admin/media-usage/work/retry\",\n\t\t\tinput,\n\t\t);\n\t}\n\n\tasync mediaListCollectionDeletions(\n\t\toptions: {\n\t\t\tstate?: MediaUsageCollectionDeletionState;\n\t\t\tlimit?: number;\n\t\t\tcursor?: string;\n\t\t} = {},\n\t): Promise<MediaUsageCollectionDeletionListResponse> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options.state) params.set(\"state\", options.state);\n\t\tif (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options.cursor) params.set(\"cursor\", options.cursor);\n\t\treturn this.request(\"GET\", `/admin/media-usage/collection-deletions?${params}`);\n\t}\n\n\tasync mediaRetryCollectionDeletion(collectionId: string): Promise<{\n\t\tchanged: boolean;\n\t\titem: MediaUsageCollectionDeletionItem;\n\t}> {\n\t\treturn this.request(\"POST\", \"/admin/media-usage/collection-deletions/retry\", {\n\t\t\tcollectionId,\n\t\t});\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Search\n\t// -----------------------------------------------------------------------\n\n\t/** Full-text search */\n\tasync search(\n\t\tquery: string,\n\t\toptions?: { collection?: string; locale?: string; limit?: number },\n\t): Promise<SearchResult[]> {\n\t\tconst params = new URLSearchParams({ q: query });\n\t\tif (options?.collection) params.set(\"collections\", options.collection);\n\t\tif (options?.locale) params.set(\"locale\", options.locale);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\n\t\tconst data = await this.request<{ items: SearchResult[] }>(\"GET\", `/search?${params}`);\n\t\treturn data.items;\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Taxonomies\n\t// -----------------------------------------------------------------------\n\n\t/** List taxonomies */\n\tasync taxonomies(): Promise<Taxonomy[]> {\n\t\tconst data = await this.request<{ taxonomies: Taxonomy[] }>(\"GET\", \"/taxonomies\");\n\t\treturn data.taxonomies;\n\t}\n\n\t/** List terms in a taxonomy */\n\tasync terms(\n\t\ttaxonomy: string,\n\t\toptions?: { limit?: number; cursor?: string },\n\t): Promise<ListResult<Term>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\n\t\tconst qs = params.toString();\n\t\tconst data = await this.request<{ terms: Term[] }>(\n\t\t\t\"GET\",\n\t\t\t`/taxonomies/${encodeURIComponent(taxonomy)}/terms${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t\treturn { items: data.terms };\n\t}\n\n\t/** Create a taxonomy term */\n\tasync createTerm(\n\t\ttaxonomy: string,\n\t\tinput: { slug: string; label: string; parentId?: string; description?: string },\n\t): Promise<Term> {\n\t\treturn this.request<Term>(\"POST\", `/taxonomies/${encodeURIComponent(taxonomy)}/terms`, input);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Menus\n\t// -----------------------------------------------------------------------\n\n\t/** List menus */\n\tasync menus(): Promise<Menu[]> {\n\t\t// Handler returns a bare array, not { items: [...] }\n\t\treturn this.request<Menu[]>(\"GET\", \"/menus\");\n\t}\n\n\t/** Get a menu with its items */\n\tasync menu(name: string): Promise<MenuWithItems> {\n\t\treturn this.request<MenuWithItems>(\"GET\", `/menus/${encodeURIComponent(name)}`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Internal helpers\n\t// -----------------------------------------------------------------------\n\n\t/** Make a typed JSON request to the API */\n\tprivate async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n\t\tconst response = await this.requestRaw(method, path, body);\n\t\tawait this.assertOk(response);\n\t\tconst json = (await response.json()) as { data: T };\n\t\treturn json.data;\n\t}\n\n\t/** Make a raw request — caller handles response */\n\tprivate async requestRaw(method: string, path: string, body?: unknown): Promise<Response> {\n\t\tconst url = `${this.baseUrl}/_emdash/api${path}`;\n\t\tconst headers: Record<string, string> = {\n\t\t\tAccept: \"application/json\",\n\t\t};\n\n\t\tlet requestBody: string | undefined;\n\t\tif (body !== undefined) {\n\t\t\theaders[\"Content-Type\"] = \"application/json\";\n\t\t\trequestBody = JSON.stringify(body);\n\t\t}\n\n\t\tconst request = new Request(url, {\n\t\t\tmethod,\n\t\t\theaders,\n\t\t\tbody: requestBody,\n\t\t});\n\n\t\treturn this.transport.fetch(request);\n\t}\n\n\t/** Assert a response is OK, throw typed error if not */\n\tprivate async assertOk(response: Response): Promise<void> {\n\t\tif (response.ok) return;\n\n\t\tlet code = \"UNKNOWN_ERROR\";\n\t\tlet message = `HTTP ${response.status}`;\n\t\tlet details: Record<string, unknown> | undefined;\n\n\t\ttry {\n\t\t\tconst json = (await response.json()) as {\n\t\t\t\terror?: { code?: string; message?: string; details?: Record<string, unknown> };\n\t\t\t};\n\t\t\tif (json.error) {\n\t\t\t\tcode = json.error.code ?? code;\n\t\t\t\tmessage = json.error.message ?? message;\n\t\t\t\tdetails = json.error.details;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Response body isn't JSON — use status text\n\t\t\tmessage = response.statusText || message;\n\t\t}\n\n\t\tthrow new EmDashApiError(response.status, code, message, details);\n\t}\n\n\t/** Get cached field schemas for a collection, fetching if needed */\n\tprivate async getFieldSchemas(collection: string): Promise<FieldSchema[]> {\n\t\tlet cached = this.fieldSchemaCache.get(collection);\n\t\tif (cached) return cached;\n\n\t\ttry {\n\t\t\tconst col = await this.collection(collection);\n\t\t\tcached = col.fields.map((f) => ({ slug: f.slug, type: f.type }));\n\t\t\tthis.fieldSchemaCache.set(collection, cached);\n\t\t\treturn cached;\n\t\t} catch {\n\t\t\t// If we can't fetch the schema, skip conversion\n\t\t\treturn [];\n\t\t}\n\t}\n}\n\ntype _AssertTrue<T extends true> = T;\ntype _MediaRepairUsageRequiresExplicitInput = _AssertTrue<\n\tParameters<EmDashClient[\"mediaRepairUsage\"]> extends [MediaUsageRepairInput] ? true : false\n>;\n\n// Re-export transport types for interceptor authors\nexport type { Interceptor } from \"./transport.js\";\nexport {\n\tcreateTransport,\n\tcsrfInterceptor,\n\ttokenInterceptor,\n\tdevBypassInterceptor,\n} from \"./transport.js\";\nexport { portableTextToMarkdown, markdownToPortableText } from \"./portable-text.js\";\nexport type { PortableTextBlock } from \"./portable-text.js\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/client/index.ts"],"sourcesContent":["/**\n * EmDashClient — typed HTTP client for the EmDash REST API.\n *\n * Handles auth, CSRF, PT ↔ Markdown conversion, and optional `_rev`\n * concurrency tokens. Shared foundation for the CLI and future MCP server.\n *\n * @example\n * ```ts\n * import { EmDashClient } from \"emdash/client\";\n *\n * const client = new EmDashClient({\n * baseUrl: \"http://localhost:4321\",\n * devBypass: true,\n * });\n *\n * const posts = await client.list(\"posts\", { status: \"published\" });\n * ```\n */\n\nimport mime from \"mime/lite\";\n\nimport type { ContentFieldFilters } from \"../content-list-query.js\";\nimport type { FieldSchema } from \"./portable-text.js\";\nimport { convertDataForRead, convertDataForWrite } from \"./portable-text.js\";\nimport type { Interceptor } from \"./transport.js\";\nimport {\n\tcreateTransport,\n\tcsrfInterceptor,\n\tdevBypassInterceptor,\n\trefreshInterceptor,\n\ttokenInterceptor,\n} from \"./transport.js\";\n\n// Regex patterns for client utilities\nconst TRAILING_SLASH_PATTERN = /\\/$/;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction mimeFromFilename(filename: string): string {\n\treturn mime.getType(filename) ?? \"application/octet-stream\";\n}\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface EmDashClientOptions {\n\t/** Base URL of the EmDash instance */\n\tbaseUrl: string;\n\t/** API token (ec_pat_...) or OAuth token (ec_oat_...) */\n\ttoken?: string;\n\t/** OAuth refresh token for auto-refresh on 401 */\n\trefreshToken?: string;\n\t/** Called when a token is refreshed (for persisting new access token) */\n\tonTokenRefresh?: (accessToken: string, expiresIn: number) => void;\n\t/** Use dev-bypass authentication (localhost only) */\n\tdevBypass?: boolean;\n\t/** Additional request interceptors */\n\tinterceptors?: Interceptor[];\n}\n\n/** Standard API error shape */\nexport interface ApiError {\n\tcode: string;\n\tmessage: string;\n\tdetails?: Record<string, unknown>;\n}\n\n/** Standard API response wrapper */\nexport interface ClientResponse<T> {\n\tsuccess: true;\n\tdata: T;\n}\n\n/** Paginated list response */\nexport interface ListResult<T> {\n\titems: T[];\n\tnextCursor?: string;\n}\n\n/** Content item as returned by the API */\nexport interface ContentItem {\n\tid: string;\n\ttype: string;\n\tslug: string | null;\n\tstatus: string;\n\tdata: Record<string, unknown>;\n\tauthorId: string | null;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tpublishedAt: string | null;\n\tscheduledAt: string | null;\n\tliveRevisionId: string | null;\n\tdraftRevisionId: string | null;\n\tlocale: string | null;\n\ttranslationGroup: string | null;\n\t_rev?: string;\n}\n\n/** Collection metadata */\nexport interface Collection {\n\tslug: string;\n\tlabel: string;\n\tlabelSingular: string;\n\tdescription?: string;\n\ticon?: string;\n\tsupports: string[];\n}\n\n/** Collection with fields */\nexport interface CollectionWithFields extends Collection {\n\tfields: Field[];\n}\n\n/** Field metadata */\nexport interface Field {\n\tslug: string;\n\tlabel: string;\n\ttype: string;\n\trequired: boolean;\n\tunique: boolean;\n\tdefaultValue?: unknown;\n\tvalidation?: unknown;\n\twidget?: string;\n\toptions?: unknown;\n\tsortOrder?: number;\n}\n\n/** Aggregate trust state for media usage reads */\nexport type MediaUsageCoverageStatus =\n\t| \"complete\"\n\t| \"never\"\n\t| \"running\"\n\t| \"partial\"\n\t| \"failed\"\n\t| \"stale\"\n\t| \"unknown\";\n\n/** Aggregate media usage coverage across all content collections */\nexport interface MediaUsageCoverage {\n\tscope: \"all_content_collections\";\n\tstatus: MediaUsageCoverageStatus;\n}\n\n/** Coverage-aware usage count for a media item */\nexport interface MediaUsageSummary {\n\tcount: number | null;\n\tcoverage: MediaUsageCoverage;\n}\n\n/** One indexed media reference within a content source */\nexport interface MediaUsageOccurrenceDetail {\n\tfieldSlug: string;\n\tfieldPath: string;\n\toccurrenceIndex: number;\n\treferenceType: \"image_field\" | \"file_field\" | \"portable_text_image\" | \"unknown\";\n}\n\n/** Indexed references from one visible content source */\nexport interface MediaUsageSourceDetail {\n\tvariant: \"columns\" | \"draft_overlay\";\n\toccurrences: MediaUsageOccurrenceDetail[];\n}\n\n/** One content entry that references a media item */\nexport interface MediaUsageEntryDetail {\n\tcollection: string;\n\tcontentId: string;\n\ttitle: string | null;\n\tslug: string | null;\n\tlocale: string | null;\n\tstatus: string | null;\n\tscheduledAt: string | null;\n\tdeletedAt: string | null;\n\tsources: MediaUsageSourceDetail[];\n}\n\n/** Entry-grouped media usage details */\nexport interface MediaUsageDetailsResponse {\n\titems: MediaUsageEntryDetail[];\n\tnextCursor?: string;\n\tcoverage: MediaUsageCoverage;\n}\n\n/** Media item */\nexport interface MediaItem {\n\tid: string;\n\tfilename: string;\n\tkey: string;\n\tmimeType: string;\n\tsize: number;\n\twidth?: number;\n\theight?: number;\n\tfocalX?: number | null;\n\tfocalY?: number | null;\n\talt?: string;\n\tcaption?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tfolderId?: string | null;\n\tusage?: MediaUsageSummary;\n}\n\n/** Result of assigning local media to a folder or the Main library */\nexport interface MediaFolderAssignment {\n\tid: string;\n\tfolderId: string | null;\n}\n\n/** Flat media-library folder */\nexport interface MediaFolder {\n\tid: string;\n\tname: string;\n}\n\n/** Media usage repair request */\nexport type MediaUsageRepairInput = { scope: \"collection\"; collection: string } | { scope: \"all\" };\n\n/** Media usage repair status */\nexport type MediaUsageRepairStatus = \"complete\" | \"partial\" | \"failed\" | \"stale\";\n\n/** Per-collection media usage repair summary */\nexport interface MediaUsageRepairCollectionSummary {\n\tcollection: string;\n\tstatus: MediaUsageRepairStatus;\n\tindexedSourceCount: number;\n\tfailedSourceCount: number;\n\tskippedSourceCount: number;\n\tdeletedSourceCount: number;\n\tlastErrorCode: string | null;\n\tstartedAt: string;\n\tcompletedAt: string | null;\n}\n\n/** Media usage repair response */\nexport interface MediaUsageRepairResponse {\n\tstatus: MediaUsageRepairStatus;\n\tindexedSourceCount: number;\n\tfailedSourceCount: number;\n\tskippedSourceCount: number;\n\tdeletedSourceCount: number;\n\tcollections: MediaUsageRepairCollectionSummary[];\n}\n\nexport interface MediaUsageProgress {\n\tstatus: \"indexing\" | \"ready\" | \"needs_attention\";\n\treadyCollections: number;\n\ttotalCollections: number;\n}\n\nexport interface MediaUsageProgressAdvanceResponse {\n\tactivation: MediaUsageActivationStatus;\n\tprogress: MediaUsageProgress | null;\n\tnextRequestInMs: 0 | 30_000 | null;\n}\n\n/** Durable media usage entry-work state */\nexport type MediaUsageWorkState = \"pending\" | \"retry\" | \"leased\" | \"failed\";\n\n/** Redacted operator view of one durable media usage job */\nexport interface MediaUsageWorkItem {\n\tcollectionId: string;\n\tcollectionSlug: string;\n\tcontentId: string;\n\tstate: MediaUsageWorkState;\n\tattemptCount: number;\n\tnextAttemptAt: string;\n\tleaseExpiresAt: string | null;\n\tlastAttemptedAt: string | null;\n\tlastErrorCode: string | null;\n\tupdatedAt: string;\n}\n\n/** Filters and pagination for durable media usage work */\nexport interface MediaUsageWorkListOptions {\n\tcollection: string;\n\tstate?: MediaUsageWorkState;\n\tlimit?: number;\n\tcursor?: string;\n}\n\n/** One bounded page of durable media usage work */\nexport interface MediaUsageWorkListResponse {\n\titems: MediaUsageWorkItem[];\n\tnextCursor?: string;\n}\n\n/** Identity for explicitly retrying one durable media usage job */\nexport interface MediaUsageWorkRetryInput {\n\tcollectionId: string;\n\tcontentId: string;\n}\n\n/** Result of explicitly retrying one durable media usage job */\nexport interface MediaUsageWorkRetryResponse {\n\tchanged: boolean;\n\titem: MediaUsageWorkItem;\n}\n\nexport interface MediaUsageActivationStatus {\n\tstate: \"expanded\" | \"activating\" | \"active\";\n\tcollectionCursor: string | null;\n\tattemptCount: number;\n\tdrainConfirmedAt: string | null;\n\tlastAttemptedAt: string | null;\n\tlastErrorCode: \"MEDIA_USAGE_ACTIVATION_FAILED\" | null;\n\tleaseExpiresAt: string | null;\n\tactivatedAt: string | null;\n\tupdatedAt: string;\n}\n\nexport interface MediaUsageActivationAdvanceInput {\n\twritersDrained: true;\n}\n\nexport interface MediaUsageActivationAdvanceResponse {\n\toutcome: \"activating\" | \"active\";\n\tprocessedCollections: number;\n\tactivation: MediaUsageActivationStatus;\n}\n\nexport type MediaUsageCollectionDeletionState = \"pending\" | \"retry\" | \"leased\" | \"failed\";\nexport type MediaUsageCollectionDeletionPhase =\n\t| \"fence\"\n\t| \"registry\"\n\t| \"table\"\n\t| \"work\"\n\t| \"sources\"\n\t| \"status\"\n\t| \"finalize\";\nexport interface MediaUsageCollectionDeletionItem {\n\tcollectionId: string;\n\tcollectionSlug: string;\n\tstate: MediaUsageCollectionDeletionState;\n\tphase: MediaUsageCollectionDeletionPhase;\n\tattemptCount: number;\n\tnextAttemptAt: string;\n\tleaseExpiresAt: string | null;\n\tlastErrorCode: string | null;\n\tupdatedAt: string;\n}\nexport interface MediaUsageCollectionDeletionListResponse {\n\titems: MediaUsageCollectionDeletionItem[];\n\tnextCursor?: string;\n}\n\n/** Search result */\nexport interface SearchResult {\n\tid: string;\n\tcollection: string;\n\ttitle: string;\n\texcerpt?: string;\n\tscore: number;\n}\n\n/** Taxonomy */\nexport interface Taxonomy {\n\tname: string;\n\tlabel: string;\n\thierarchical: boolean;\n}\n\n/** Taxonomy term */\nexport interface Term {\n\tid: string;\n\tslug: string;\n\tlabel: string;\n\tparentId?: string | null;\n\tdescription?: string;\n\tcount?: number;\n}\n\n/** Menu */\nexport interface Menu {\n\tname: string;\n\tlabel: string;\n}\n\n/** Menu with items */\nexport interface MenuWithItems extends Menu {\n\titems: MenuItem[];\n}\n\n/** Menu item */\nexport interface MenuItem {\n\tid: string;\n\ttype: string;\n\tlabel: string;\n\tcustomUrl?: string;\n\treferenceCollection?: string;\n\treferenceId?: string;\n\ttarget?: string;\n\tparentId?: string | null;\n\tsortOrder: number;\n}\n\n/** Full schema export (returned by /api/schema) */\nexport interface SchemaExport {\n\tcollections: Array<{\n\t\tslug: string;\n\t\tlabel: string;\n\t\tlabelSingular: string;\n\t\tdescription?: string;\n\t\ticon?: string;\n\t\tsupports: string[];\n\t\tfields: Array<{\n\t\t\tslug: string;\n\t\t\tlabel: string;\n\t\t\ttype: string;\n\t\t\trequired: boolean;\n\t\t\tunique: boolean;\n\t\t\tdefaultValue?: unknown;\n\t\t\tvalidation?: unknown;\n\t\t\twidget?: string;\n\t\t\toptions?: unknown;\n\t\t}>;\n\t}>;\n\tversion: string;\n}\n\n/** Manifest — full schema + field descriptors */\nexport interface Manifest {\n\tversion: string;\n\thash: string;\n\tcollections: Record<\n\t\tstring,\n\t\t{\n\t\t\tlabel: string;\n\t\t\tlabelSingular: string;\n\t\t\tsupports: string[];\n\t\t\tfields: Record<string, { kind: string; label?: string; required?: boolean }>;\n\t\t}\n\t>;\n}\n\n// ---------------------------------------------------------------------------\n// Client errors\n// ---------------------------------------------------------------------------\n\nexport class EmDashApiError extends Error {\n\tconstructor(\n\t\tpublic readonly status: number,\n\t\tpublic readonly code: string,\n\t\tmessage: string,\n\t\tpublic readonly details?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"EmDashApiError\";\n\t}\n}\n\nexport class EmDashClientError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"EmDashClientError\";\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Client\n// ---------------------------------------------------------------------------\n\nexport class EmDashClient {\n\tprivate readonly baseUrl: string;\n\tprivate readonly transport: { fetch: (request: Request) => Promise<Response> };\n\n\t/** Cached field schemas per collection for PT conversion */\n\tprivate fieldSchemaCache = new Map<string, FieldSchema[]>();\n\n\tconstructor(options: EmDashClientOptions) {\n\t\tthis.baseUrl = options.baseUrl.replace(TRAILING_SLASH_PATTERN, \"\");\n\n\t\t// Build interceptor chain\n\t\tconst interceptors: Interceptor[] = [csrfInterceptor()];\n\n\t\tif (options.token) {\n\t\t\tinterceptors.push(tokenInterceptor(options.token));\n\t\t} else if (options.devBypass) {\n\t\t\tinterceptors.push(devBypassInterceptor(this.baseUrl));\n\t\t}\n\n\t\t// Auto-refresh expired OAuth tokens\n\t\tif (options.refreshToken) {\n\t\t\tinterceptors.push(\n\t\t\t\trefreshInterceptor({\n\t\t\t\t\trefreshToken: options.refreshToken,\n\t\t\t\t\ttokenEndpoint: `${this.baseUrl}/_emdash/api/oauth/token/refresh`,\n\t\t\t\t\tonTokenRefreshed: options.onTokenRefresh\n\t\t\t\t\t\t? (accessToken, _refreshToken, expiresAt) => {\n\t\t\t\t\t\t\t\tconst expiresIn = Math.floor((new Date(expiresAt).getTime() - Date.now()) / 1000);\n\t\t\t\t\t\t\t\toptions.onTokenRefresh!(accessToken, expiresIn);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (options.interceptors) {\n\t\t\tinterceptors.push(...options.interceptors);\n\t\t}\n\n\t\tthis.transport = createTransport({ interceptors });\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Schema\n\t// -----------------------------------------------------------------------\n\n\t/** List all collections */\n\tasync collections(): Promise<Collection[]> {\n\t\tconst data = await this.request<{ items: Collection[] }>(\"GET\", \"/schema/collections\");\n\t\treturn data.items;\n\t}\n\n\t/** Get a single collection with its fields */\n\tasync collection(slug: string): Promise<CollectionWithFields> {\n\t\tconst data = await this.request<{ item: CollectionWithFields }>(\n\t\t\t\"GET\",\n\t\t\t`/schema/collections/${encodeURIComponent(slug)}?includeFields=true`,\n\t\t);\n\t\tconst col = data.item;\n\t\t// Cache field schemas for PT conversion\n\t\tif (col.fields) {\n\t\t\tthis.fieldSchemaCache.set(\n\t\t\t\tslug,\n\t\t\t\tcol.fields.map((f) => ({ slug: f.slug, type: f.type })),\n\t\t\t);\n\t\t}\n\t\treturn col;\n\t}\n\n\t/** Create a collection */\n\tasync createCollection(input: {\n\t\tslug: string;\n\t\tlabel: string;\n\t\tlabelSingular?: string;\n\t\tdescription?: string;\n\t\ticon?: string;\n\t\tsupports?: string[];\n\t}): Promise<Collection> {\n\t\tconst data = await this.request<{ item: Collection }>(\"POST\", \"/schema/collections\", input);\n\t\treturn data.item;\n\t}\n\n\t/** Delete a collection */\n\tasync deleteCollection(slug: string): Promise<void> {\n\t\tawait this.request<unknown>(\"DELETE\", `/schema/collections/${encodeURIComponent(slug)}`);\n\t}\n\n\t/** Create a field on a collection */\n\tasync createField(\n\t\tcollection: string,\n\t\tinput: {\n\t\t\tslug: string;\n\t\t\ttype: string;\n\t\t\tlabel: string;\n\t\t\trequired?: boolean;\n\t\t\tunique?: boolean;\n\t\t\tdefaultValue?: unknown;\n\t\t\tvalidation?: unknown;\n\t\t\twidget?: string;\n\t\t\toptions?: unknown;\n\t\t\tsortOrder?: number;\n\t\t},\n\t): Promise<Field> {\n\t\tconst data = await this.request<{ item: Field }>(\n\t\t\t\"POST\",\n\t\t\t`/schema/collections/${encodeURIComponent(collection)}/fields`,\n\t\t\tinput,\n\t\t);\n\t\t// Invalidate field cache\n\t\tthis.fieldSchemaCache.delete(collection);\n\t\treturn data.item;\n\t}\n\n\t/** Delete a field from a collection */\n\tasync deleteField(collection: string, fieldSlug: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"DELETE\",\n\t\t\t`/schema/collections/${encodeURIComponent(collection)}/fields/${encodeURIComponent(fieldSlug)}`,\n\t\t);\n\t\tthis.fieldSchemaCache.delete(collection);\n\t}\n\n\t/** Get full manifest (schema + field descriptors + features) */\n\tasync manifest(): Promise<Manifest> {\n\t\treturn this.request<Manifest>(\"GET\", \"/manifest\");\n\t}\n\n\t/** Export full schema as JSON (used by `emdash types`) */\n\tasync schemaExport(): Promise<SchemaExport> {\n\t\treturn this.request<SchemaExport>(\"GET\", \"/schema\");\n\t}\n\n\t/** Export schema as TypeScript type definitions (used by `emdash types`) */\n\tasync schemaTypes(): Promise<string> {\n\t\tconst response = await this.requestRaw(\"GET\", \"/schema?format=typescript\");\n\t\tawait this.assertOk(response);\n\t\treturn response.text();\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Content\n\t// -----------------------------------------------------------------------\n\n\t/** List content in a collection */\n\tasync list(\n\t\tcollection: string,\n\t\toptions?: {\n\t\t\tstatus?: string;\n\t\t\tlimit?: number;\n\t\t\tcursor?: string;\n\t\t\torderBy?: string;\n\t\t\torder?: \"asc\" | \"desc\";\n\t\t\tlocale?: string;\n\t\t\t/** AND-combined filters over custom fields explicitly marked as indexed. */\n\t\t\tfieldFilters?: ContentFieldFilters;\n\t\t},\n\t): Promise<ListResult<ContentItem>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.status) params.set(\"status\", options.status);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\t\tif (options?.orderBy) params.set(\"orderBy\", options.orderBy);\n\t\tif (options?.order) params.set(\"order\", options.order);\n\t\tif (options?.locale) params.set(\"locale\", options.locale);\n\t\tif (options?.fieldFilters && Object.keys(options.fieldFilters).length > 0) {\n\t\t\tparams.set(\"fieldFilters\", JSON.stringify(options.fieldFilters));\n\t\t}\n\n\t\tconst qs = params.toString();\n\t\tconst path = `/content/${encodeURIComponent(collection)}${qs ? `?${qs}` : \"\"}`;\n\t\treturn this.request<ListResult<ContentItem>>(\"GET\", path);\n\t}\n\n\t/** Async iterator that auto-follows cursors */\n\tasync *listAll(\n\t\tcollection: string,\n\t\toptions?: {\n\t\t\tstatus?: string;\n\t\t\tlimit?: number;\n\t\t\torderBy?: string;\n\t\t\torder?: \"asc\" | \"desc\";\n\t\t\tlocale?: string;\n\t\t\t/** AND-combined filters over custom fields explicitly marked as indexed. */\n\t\t\tfieldFilters?: ContentFieldFilters;\n\t\t},\n\t): AsyncGenerator<ContentItem> {\n\t\tlet cursor: string | undefined;\n\t\tdo {\n\t\t\tconst result = await this.list(collection, { ...options, cursor });\n\t\t\tfor (const item of result.items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tcursor = result.nextCursor;\n\t\t} while (cursor);\n\t}\n\n\t/**\n\t * Get a single content item. Returns the item with a `_rev` token\n\t * that can be passed to update() for optimistic concurrency.\n\t */\n\tasync get(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions?: { raw?: boolean; locale?: string },\n\t): Promise<ContentItem> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.locale) params.set(\"locale\", options.locale);\n\t\tconst qs = params.size > 0 ? `?${params}` : \"\";\n\t\tconst result = await this.requestRaw(\n\t\t\t\"GET\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}${qs}`,\n\t\t);\n\t\tif (!result.ok) {\n\t\t\tawait this.assertOk(result);\n\t\t}\n\n\t\tconst raw = (await result.json()) as { data: { item: ContentItem; _rev?: string } };\n\t\tconst json = raw.data;\n\t\tconst item = json.item;\n\n\t\t// Attach _rev to the item so callers can pass it back on update\n\t\tif (json._rev) {\n\t\t\titem._rev = json._rev;\n\t\t}\n\n\t\t// Convert PT fields to markdown unless raw is requested\n\t\tif (!options?.raw && item.data) {\n\t\t\tconst fields = await this.getFieldSchemas(collection);\n\t\t\titem.data = convertDataForRead(item.data, fields, false);\n\t\t}\n\n\t\treturn item;\n\t}\n\n\t/** Create a new content item */\n\tasync create(\n\t\tcollection: string,\n\t\tinput: {\n\t\t\tdata: Record<string, unknown>;\n\t\t\tslug?: string;\n\t\t\tstatus?: string;\n\t\t\tlocale?: string;\n\t\t\ttranslationOf?: string;\n\t\t},\n\t): Promise<ContentItem> {\n\t\t// Convert markdown strings to PT for portableText fields\n\t\tconst fields = await this.getFieldSchemas(collection);\n\t\tconst data = convertDataForWrite(input.data, fields);\n\n\t\tconst result = await this.request<{ item: ContentItem }>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}`,\n\t\t\t{ ...input, data },\n\t\t);\n\t\treturn result.item;\n\t}\n\n\t/**\n\t * Update a content item. Pass `_rev` from a prior get() for optimistic\n\t * concurrency — the server returns 409 if the item has changed.\n\t * Omit `_rev` for a blind write (no conflict detection).\n\t */\n\tasync update(\n\t\tcollection: string,\n\t\tid: string,\n\t\tinput: {\n\t\t\tdata?: Record<string, unknown>;\n\t\t\tslug?: string;\n\t\t\tstatus?: string;\n\t\t\t_rev?: string;\n\t\t\tlocale?: string;\n\t\t\t/** Write even though another editor holds this entry's edit lock. */\n\t\t\toverrideLock?: boolean;\n\t\t},\n\t): Promise<ContentItem> {\n\t\t// Convert markdown strings to PT\n\t\tlet data = input.data;\n\t\tif (data) {\n\t\t\tconst fields = await this.getFieldSchemas(collection);\n\t\t\tdata = convertDataForWrite(data, fields);\n\t\t}\n\n\t\tconst body = {\n\t\t\tdata,\n\t\t\tslug: input.slug,\n\t\t\tstatus: input.status,\n\t\t\t...(input._rev ? { _rev: input._rev } : {}),\n\t\t\t...(input.overrideLock ? { overrideLock: true } : {}),\n\t\t};\n\t\tconst params = new URLSearchParams();\n\t\tif (input.locale) params.set(\"locale\", input.locale);\n\t\tconst result = await this.request<{ item: ContentItem; _rev?: string }>(\n\t\t\t\"PUT\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}${params.toString() ? `?${params}` : \"\"}`,\n\t\t\tbody,\n\t\t);\n\n\t\tconst item = result.item;\n\t\tif (result._rev) {\n\t\t\titem._rev = result._rev;\n\t\t}\n\t\treturn item;\n\t}\n\n\t/** Delete (soft) a content item */\n\tasync delete(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions: { overrideLock?: boolean } = {},\n\t): Promise<void> {\n\t\tconst query = options.overrideLock ? \"?overrideLock=true\" : \"\";\n\t\tawait this.request<unknown>(\n\t\t\t\"DELETE\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}${query}`,\n\t\t);\n\t}\n\n\t/** Publish a content item */\n\tasync publish(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions: { overrideLock?: boolean } = {},\n\t): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/publish`,\n\t\t\toptions.overrideLock ? { overrideLock: true } : undefined,\n\t\t);\n\t}\n\n\t/** Unpublish a content item */\n\tasync unpublish(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions: { overrideLock?: boolean } = {},\n\t): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/unpublish`,\n\t\t\toptions.overrideLock ? { overrideLock: true } : undefined,\n\t\t);\n\t}\n\n\t/** Schedule publishing */\n\tasync schedule(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions: { at: string; overrideLock?: boolean },\n\t): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/schedule`,\n\t\t\t{ scheduledAt: options.at, ...(options.overrideLock ? { overrideLock: true } : {}) },\n\t\t);\n\t}\n\n\t/** Restore a trashed content item */\n\tasync restore(collection: string, id: string): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/restore`,\n\t\t);\n\t}\n\n\t/** Compare live and draft revisions */\n\tasync compare(\n\t\tcollection: string,\n\t\tid: string,\n\t): Promise<{\n\t\thasChanges: boolean;\n\t\tlive: Record<string, unknown> | null;\n\t\tdraft: Record<string, unknown> | null;\n\t}> {\n\t\treturn this.request<{\n\t\t\thasChanges: boolean;\n\t\t\tlive: Record<string, unknown> | null;\n\t\t\tdraft: Record<string, unknown> | null;\n\t\t}>(\"GET\", `/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/compare`);\n\t}\n\n\t/** Discard draft revision, reverting to the published version */\n\tasync discardDraft(\n\t\tcollection: string,\n\t\tid: string,\n\t\toptions: { overrideLock?: boolean } = {},\n\t): Promise<void> {\n\t\tawait this.request<unknown>(\n\t\t\t\"POST\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/discard-draft`,\n\t\t\toptions.overrideLock ? { overrideLock: true } : undefined,\n\t\t);\n\t}\n\n\t/**\n\t * Get all translations of a content item.\n\t * Returns the translation group ID and a summary of each locale version.\n\t */\n\tasync translations(\n\t\tcollection: string,\n\t\tid: string,\n\t): Promise<{\n\t\ttranslationGroup: string;\n\t\ttranslations: Array<{\n\t\t\tid: string;\n\t\t\tlocale: string | null;\n\t\t\tslug: string | null;\n\t\t\tstatus: string;\n\t\t\tupdatedAt: string;\n\t\t}>;\n\t}> {\n\t\treturn this.request(\n\t\t\t\"GET\",\n\t\t\t`/content/${encodeURIComponent(collection)}/${encodeURIComponent(id)}/translations`,\n\t\t);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Media\n\t// -----------------------------------------------------------------------\n\n\t/** List media items */\n\tasync mediaList(options?: {\n\t\tmimeType?: string;\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t\tpage?: number;\n\t\tincludeUsage?: boolean;\n\t\tfolderId?: string | null;\n\t}): Promise<ListResult<MediaItem> & { totalCount?: number }> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.mimeType) params.set(\"mimeType\", options.mimeType);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\t\tif (options?.page !== undefined) params.set(\"page\", String(options.page));\n\t\tif (options?.includeUsage === true) params.set(\"includeUsage\", \"1\");\n\t\tif (options?.folderId === null) {\n\t\t\tparams.set(\"folderId\", \"unfiled\");\n\t\t} else if (options?.folderId !== undefined) {\n\t\t\tparams.set(\"folderId\", options.folderId);\n\t\t}\n\n\t\tconst qs = params.toString();\n\t\treturn this.request<ListResult<MediaItem> & { totalCount?: number }>(\n\t\t\t\"GET\",\n\t\t\t`/media${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t}\n\n\t/** Get a single media item */\n\tasync mediaGet(id: string, options?: { includeUsage?: boolean }): Promise<MediaItem> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.includeUsage === true) params.set(\"includeUsage\", \"1\");\n\n\t\tconst qs = params.toString();\n\t\tconst data = await this.request<{ item: MediaItem }>(\n\t\t\t\"GET\",\n\t\t\t`/media/${encodeURIComponent(id)}${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\t/** List media folders */\n\tasync mediaFolderList(\n\t\toptions: { limit?: number; cursor?: string; q?: string } = {},\n\t): Promise<ListResult<MediaFolder>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options.cursor !== undefined) params.set(\"cursor\", options.cursor);\n\t\tif (options.q !== undefined) params.set(\"q\", options.q);\n\t\tconst qs = params.toString();\n\t\treturn this.request<ListResult<MediaFolder>>(\"GET\", `/media/folders${qs ? `?${qs}` : \"\"}`);\n\t}\n\n\t/** Get one media folder */\n\tasync mediaFolderGet(id: string): Promise<MediaFolder> {\n\t\tconst data = await this.request<{ item: MediaFolder }>(\n\t\t\t\"GET\",\n\t\t\t`/media/folders/${encodeURIComponent(id)}`,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\t/** Create a media folder */\n\tasync mediaFolderCreate(name: string): Promise<MediaFolder> {\n\t\tconst data = await this.request<{ item: MediaFolder }>(\"POST\", \"/media/folders\", { name });\n\t\treturn data.item;\n\t}\n\n\t/** Rename a media folder */\n\tasync mediaFolderUpdate(id: string, name: string): Promise<MediaFolder> {\n\t\tconst data = await this.request<{ item: MediaFolder }>(\n\t\t\t\"PUT\",\n\t\t\t`/media/folders/${encodeURIComponent(id)}`,\n\t\t\t{ name },\n\t\t);\n\t\treturn data.item;\n\t}\n\n\t/** Delete a media folder */\n\tasync mediaFolderDelete(id: string): Promise<void> {\n\t\tawait this.request<unknown>(\"DELETE\", `/media/folders/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Assign media to a folder, or return it to the Main library */\n\tasync mediaSetFolder(id: string, folderId: string | null): Promise<MediaFolderAssignment> {\n\t\tconst data = await this.request<{ item: MediaFolderAssignment }>(\n\t\t\t\"PUT\",\n\t\t\t`/media/${encodeURIComponent(id)}`,\n\t\t\t{ folderId },\n\t\t);\n\t\treturn { id: data.item.id, folderId: data.item.folderId };\n\t}\n\n\t/** Get entry-grouped usage details for a media item */\n\tasync mediaGetUsage(\n\t\tid: string,\n\t\toptions?: { limit?: number; cursor?: string },\n\t): Promise<MediaUsageDetailsResponse> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor !== undefined) params.set(\"cursor\", options.cursor);\n\n\t\tconst qs = params.toString();\n\t\treturn this.request<MediaUsageDetailsResponse>(\n\t\t\t\"GET\",\n\t\t\t`/media/${encodeURIComponent(id)}/usage${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t}\n\n\t/** Upload a media file */\n\tasync mediaUpload(\n\t\tfile: Uint8Array | Blob,\n\t\tfilename: string,\n\t\toptions?: { alt?: string; caption?: string; contentType?: string },\n\t): Promise<MediaItem> {\n\t\tconst formData = new FormData();\n\n\t\t// Handle different file types\n\t\tif (file instanceof Blob) {\n\t\t\tformData.append(\"file\", file, filename);\n\t\t} else {\n\t\t\tconst mimeType = options?.contentType ?? mimeFromFilename(filename);\n\t\t\tformData.append(\"file\", new Blob([file as BlobPart], { type: mimeType }), filename);\n\t\t}\n\n\t\tif (options?.alt) formData.append(\"alt\", options.alt);\n\t\tif (options?.caption) formData.append(\"caption\", options.caption);\n\n\t\tconst url = `${this.baseUrl}/_emdash/api/media`;\n\t\tconst request = new Request(url, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: formData,\n\t\t});\n\n\t\tconst response = await this.transport.fetch(request);\n\t\tawait this.assertOk(response);\n\n\t\tconst raw = (await response.json()) as { data: { item: MediaItem } };\n\t\treturn raw.data.item;\n\t}\n\n\t/** Delete a media item */\n\tasync mediaDelete(id: string): Promise<void> {\n\t\tawait this.request<unknown>(\"DELETE\", `/media/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Repair content media usage indexes for one collection or all collections */\n\tasync mediaRepairUsage(input: MediaUsageRepairInput): Promise<MediaUsageRepairResponse> {\n\t\treturn this.request<MediaUsageRepairResponse>(\"POST\", \"/admin/media-usage/repair\", input);\n\t}\n\n\t/** Read aggregate Media Usage indexing progress */\n\tasync mediaGetUsageProgress(): Promise<MediaUsageProgress> {\n\t\treturn this.request<MediaUsageProgress>(\"GET\", \"/admin/media-usage/progress\");\n\t}\n\n\t/** Advance exactly one Media Usage maintenance step */\n\tasync mediaAdvanceUsageProgress(): Promise<MediaUsageProgressAdvanceResponse> {\n\t\treturn this.request<MediaUsageProgressAdvanceResponse>(\"POST\", \"/admin/media-usage/progress\");\n\t}\n\n\t/** Read the redacted controlled-activation status */\n\tasync mediaGetUsageActivation(): Promise<MediaUsageActivationStatus> {\n\t\treturn this.request<MediaUsageActivationStatus>(\"GET\", \"/admin/media-usage/activation\");\n\t}\n\n\t/** Advance exactly one controlled-activation batch */\n\tasync mediaAdvanceUsageActivation(\n\t\tinput: MediaUsageActivationAdvanceInput,\n\t): Promise<MediaUsageActivationAdvanceResponse> {\n\t\treturn this.request<MediaUsageActivationAdvanceResponse>(\n\t\t\t\"POST\",\n\t\t\t\"/admin/media-usage/activation\",\n\t\t\tinput,\n\t\t);\n\t}\n\n\t/** List a bounded page of durable media usage entry work */\n\tasync mediaListUsageWork(\n\t\toptions: MediaUsageWorkListOptions,\n\t): Promise<MediaUsageWorkListResponse> {\n\t\tconst params = new URLSearchParams({ collection: options.collection });\n\t\tif (options.state) params.set(\"state\", options.state);\n\t\tif (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options.cursor) params.set(\"cursor\", options.cursor);\n\t\treturn this.request<MediaUsageWorkListResponse>(\"GET\", `/admin/media-usage/work?${params}`);\n\t}\n\n\t/** Explicitly retry one durable media usage entry job */\n\tasync mediaRetryUsageWork(input: MediaUsageWorkRetryInput): Promise<MediaUsageWorkRetryResponse> {\n\t\treturn this.request<MediaUsageWorkRetryResponse>(\n\t\t\t\"POST\",\n\t\t\t\"/admin/media-usage/work/retry\",\n\t\t\tinput,\n\t\t);\n\t}\n\n\tasync mediaListCollectionDeletions(\n\t\toptions: {\n\t\t\tstate?: MediaUsageCollectionDeletionState;\n\t\t\tlimit?: number;\n\t\t\tcursor?: string;\n\t\t} = {},\n\t): Promise<MediaUsageCollectionDeletionListResponse> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options.state) params.set(\"state\", options.state);\n\t\tif (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n\t\tif (options.cursor) params.set(\"cursor\", options.cursor);\n\t\treturn this.request(\"GET\", `/admin/media-usage/collection-deletions?${params}`);\n\t}\n\n\tasync mediaRetryCollectionDeletion(collectionId: string): Promise<{\n\t\tchanged: boolean;\n\t\titem: MediaUsageCollectionDeletionItem;\n\t}> {\n\t\treturn this.request(\"POST\", \"/admin/media-usage/collection-deletions/retry\", {\n\t\t\tcollectionId,\n\t\t});\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Search\n\t// -----------------------------------------------------------------------\n\n\t/** Full-text search */\n\tasync search(\n\t\tquery: string,\n\t\toptions?: { collection?: string; locale?: string; limit?: number },\n\t): Promise<SearchResult[]> {\n\t\tconst params = new URLSearchParams({ q: query });\n\t\tif (options?.collection) params.set(\"collections\", options.collection);\n\t\tif (options?.locale) params.set(\"locale\", options.locale);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\n\t\tconst data = await this.request<{ items: SearchResult[] }>(\"GET\", `/search?${params}`);\n\t\treturn data.items;\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Taxonomies\n\t// -----------------------------------------------------------------------\n\n\t/** List taxonomies */\n\tasync taxonomies(): Promise<Taxonomy[]> {\n\t\tconst data = await this.request<{ taxonomies: Taxonomy[] }>(\"GET\", \"/taxonomies\");\n\t\treturn data.taxonomies;\n\t}\n\n\t/** List terms in a taxonomy */\n\tasync terms(\n\t\ttaxonomy: string,\n\t\toptions?: { limit?: number; cursor?: string },\n\t): Promise<ListResult<Term>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\n\t\tconst qs = params.toString();\n\t\tconst data = await this.request<{ terms: Term[] }>(\n\t\t\t\"GET\",\n\t\t\t`/taxonomies/${encodeURIComponent(taxonomy)}/terms${qs ? `?${qs}` : \"\"}`,\n\t\t);\n\t\treturn { items: data.terms };\n\t}\n\n\t/** Create a taxonomy term */\n\tasync createTerm(\n\t\ttaxonomy: string,\n\t\tinput: { slug: string; label: string; parentId?: string; description?: string },\n\t): Promise<Term> {\n\t\treturn this.request<Term>(\"POST\", `/taxonomies/${encodeURIComponent(taxonomy)}/terms`, input);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Menus\n\t// -----------------------------------------------------------------------\n\n\t/** List menus */\n\tasync menus(): Promise<Menu[]> {\n\t\t// Handler returns a bare array, not { items: [...] }\n\t\treturn this.request<Menu[]>(\"GET\", \"/menus\");\n\t}\n\n\t/** Get a menu with its items */\n\tasync menu(name: string): Promise<MenuWithItems> {\n\t\treturn this.request<MenuWithItems>(\"GET\", `/menus/${encodeURIComponent(name)}`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Internal helpers\n\t// -----------------------------------------------------------------------\n\n\t/** Make a typed JSON request to the API */\n\tprivate async request<T>(method: string, path: string, body?: unknown): Promise<T> {\n\t\tconst response = await this.requestRaw(method, path, body);\n\t\tawait this.assertOk(response);\n\t\tconst json = (await response.json()) as { data: T };\n\t\treturn json.data;\n\t}\n\n\t/** Make a raw request — caller handles response */\n\tprivate async requestRaw(method: string, path: string, body?: unknown): Promise<Response> {\n\t\tconst url = `${this.baseUrl}/_emdash/api${path}`;\n\t\tconst headers: Record<string, string> = {\n\t\t\tAccept: \"application/json\",\n\t\t};\n\n\t\tlet requestBody: string | undefined;\n\t\tif (body !== undefined) {\n\t\t\theaders[\"Content-Type\"] = \"application/json\";\n\t\t\trequestBody = JSON.stringify(body);\n\t\t}\n\n\t\tconst request = new Request(url, {\n\t\t\tmethod,\n\t\t\theaders,\n\t\t\tbody: requestBody,\n\t\t});\n\n\t\treturn this.transport.fetch(request);\n\t}\n\n\t/** Assert a response is OK, throw typed error if not */\n\tprivate async assertOk(response: Response): Promise<void> {\n\t\tif (response.ok) return;\n\n\t\tlet code = \"UNKNOWN_ERROR\";\n\t\tlet message = `HTTP ${response.status}`;\n\t\tlet details: Record<string, unknown> | undefined;\n\n\t\ttry {\n\t\t\tconst json = (await response.json()) as {\n\t\t\t\terror?: { code?: string; message?: string; details?: Record<string, unknown> };\n\t\t\t};\n\t\t\tif (json.error) {\n\t\t\t\tcode = json.error.code ?? code;\n\t\t\t\tmessage = json.error.message ?? message;\n\t\t\t\tdetails = json.error.details;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Response body isn't JSON — use status text\n\t\t\tmessage = response.statusText || message;\n\t\t}\n\n\t\tthrow new EmDashApiError(response.status, code, message, details);\n\t}\n\n\t/** Get cached field schemas for a collection, fetching if needed */\n\tprivate async getFieldSchemas(collection: string): Promise<FieldSchema[]> {\n\t\tlet cached = this.fieldSchemaCache.get(collection);\n\t\tif (cached) return cached;\n\n\t\ttry {\n\t\t\tconst col = await this.collection(collection);\n\t\t\tcached = col.fields.map((f) => ({ slug: f.slug, type: f.type }));\n\t\t\tthis.fieldSchemaCache.set(collection, cached);\n\t\t\treturn cached;\n\t\t} catch {\n\t\t\t// If we can't fetch the schema, skip conversion\n\t\t\treturn [];\n\t\t}\n\t}\n}\n\ntype _AssertTrue<T extends true> = T;\ntype _MediaRepairUsageRequiresExplicitInput = _AssertTrue<\n\tParameters<EmDashClient[\"mediaRepairUsage\"]> extends [MediaUsageRepairInput] ? true : false\n>;\n\n// Re-export transport types for interceptor authors\nexport type { Interceptor } from \"./transport.js\";\nexport {\n\tcreateTransport,\n\tcsrfInterceptor,\n\ttokenInterceptor,\n\tdevBypassInterceptor,\n} from \"./transport.js\";\nexport { portableTextToMarkdown, markdownToPortableText } from \"./portable-text.js\";\nexport type { PortableTextBlock } from \"./portable-text.js\";\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as validateIdentifier } from "./validate-BpwoDOgt.mjs";
|
|
2
|
-
import { s as isPostgres } from "./dialect-helpers-
|
|
2
|
+
import { s as isPostgres } from "./dialect-helpers-BcQvkHgn.mjs";
|
|
3
3
|
import { n as isMissingTableError } from "./db-errors-Cl-sKYTm.mjs";
|
|
4
4
|
import { o as decodeCursor, s as encodeCursor } from "./types-CQPWhPxE.mjs";
|
|
5
5
|
import { t as withTransaction } from "./transaction-0KOpOyMu.mjs";
|
|
6
|
-
import { t as FTSManager } from "./fts-manager-
|
|
7
|
-
import { n as verifyMediaUsageCaptureTriggers } from "./capture-triggers-
|
|
6
|
+
import { t as FTSManager } from "./fts-manager-iddym8cd.mjs";
|
|
7
|
+
import { n as verifyMediaUsageCaptureTriggers } from "./capture-triggers-CeAsC76Z.mjs";
|
|
8
8
|
import { sql } from "kysely";
|
|
9
9
|
import { ulid } from "ulidx";
|
|
10
10
|
|
|
@@ -433,4 +433,4 @@ function isPhase(value) {
|
|
|
433
433
|
|
|
434
434
|
//#endregion
|
|
435
435
|
export { isMediaUsageCollectionSlugDeleting as i, collectionDeletionCurrentTimestamp as n, deleteActivatedMediaUsageCollection as r, MediaUsageCollectionDeletionRepository as t };
|
|
436
|
-
//# sourceMappingURL=collection-deletion-
|
|
436
|
+
//# sourceMappingURL=collection-deletion-BCwaWTDw.mjs.map
|