emdash 1.1.0 → 1.3.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/action-token-SK8zyN7w.mjs +26 -0
- package/dist/action-token-SK8zyN7w.mjs.map +1 -0
- package/dist/activation-Dim4YMM7.mjs +387 -0
- package/dist/activation-Dim4YMM7.mjs.map +1 -0
- package/dist/adapters-F_xorvWv.d.mts +173 -0
- package/dist/adapters-F_xorvWv.d.mts.map +1 -0
- package/dist/allowed-origins-CEug-p0t.mjs +116 -0
- package/dist/allowed-origins-CEug-p0t.mjs.map +1 -0
- package/dist/api/route-utils.d.mts +4 -4
- package/dist/api/route-utils.d.mts.map +1 -1
- package/dist/api/route-utils.mjs +48 -46
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +10 -10
- package/dist/api-D-7BNHoz.mjs +5025 -0
- package/dist/api-D-7BNHoz.mjs.map +1 -0
- package/dist/api-tokens-Bx38ZCQp.mjs +173 -0
- package/dist/api-tokens-Bx38ZCQp.mjs.map +1 -0
- package/dist/apply-T7ATgzCh.mjs +1702 -0
- package/dist/apply-T7ATgzCh.mjs.map +1 -0
- package/dist/approvals-D-m6wvGl.mjs +460 -0
- package/dist/approvals-D-m6wvGl.mjs.map +1 -0
- package/dist/artifact-fetch-DIh7iyOV.mjs +659 -0
- package/dist/artifact-fetch-DIh7iyOV.mjs.map +1 -0
- package/dist/artifacts-htGyfCSt.mjs +307 -0
- package/dist/artifacts-htGyfCSt.mjs.map +1 -0
- package/dist/astro/image-endpoint.d.mts.map +1 -1
- package/dist/astro/image-endpoint.mjs +26 -6
- package/dist/astro/image-endpoint.mjs.map +1 -1
- package/dist/astro/index.d.mts +14 -14
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +324 -23
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +12 -12
- package/dist/astro/middleware/auth.d.mts.map +1 -1
- package/dist/astro/middleware/auth.mjs +18 -13
- package/dist/astro/middleware/auth.mjs.map +1 -1
- package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
- package/dist/astro/middleware/redirect.d.mts.map +1 -1
- package/dist/astro/middleware/redirect.mjs +81 -46
- package/dist/astro/middleware/redirect.mjs.map +1 -1
- package/dist/astro/middleware/request-context.d.mts.map +1 -1
- package/dist/astro/middleware/request-context.mjs +117 -56
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +12 -12
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +145 -415
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +14 -14
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +14 -14
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +7 -6
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +8 -7
- package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -6
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +16 -16
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +16 -16
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +16 -16
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -21
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -21
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.mjs +22 -21
- package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +18 -18
- package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -7
- package/dist/astro/routes/api/admin/comments/bulk.mjs +17 -17
- package/dist/astro/routes/api/admin/comments/counts.mjs +7 -7
- package/dist/astro/routes/api/admin/comments/index.mjs +17 -17
- package/dist/astro/routes/api/admin/core-update.mjs +7 -7
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
- package/dist/astro/routes/api/admin/media-usage/activation.mjs +20 -20
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +21 -21
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +21 -21
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +23 -22
- package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +29 -28
- package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +21 -21
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +21 -21
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +8 -8
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +8 -8
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +72 -70
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +71 -69
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +71 -70
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +80 -79
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +72 -70
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -69
- 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 +79 -78
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -69
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +71 -70
- 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 +81 -80
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +10 -10
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +73 -72
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +72 -70
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -69
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -69
- 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 +7 -7
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -69
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/_...path_.mjs +4 -4
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +38 -37
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +38 -37
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +41 -40
- package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +41 -40
- package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +41 -40
- package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs +42 -41
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +42 -41
- package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +42 -41
- package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +42 -41
- package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +40 -39
- package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs +42 -41
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +14 -14
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
- package/dist/astro/routes/api/admin/users/index.mjs +14 -14
- package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -6
- package/dist/astro/routes/api/auth/handover.d.mts +8 -0
- package/dist/astro/routes/api/auth/handover.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/handover.mjs +49 -0
- package/dist/astro/routes/api/auth/handover.mjs.map +1 -0
- package/dist/astro/routes/api/auth/invite/accept.mjs +4 -4
- package/dist/astro/routes/api/auth/invite/complete.mjs +19 -19
- package/dist/astro/routes/api/auth/invite/index.mjs +16 -16
- package/dist/astro/routes/api/auth/invite/register-options.mjs +17 -17
- package/dist/astro/routes/api/auth/logout.mjs +5 -5
- package/dist/astro/routes/api/auth/magic-link/send.mjs +19 -18
- package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
- package/dist/astro/routes/api/auth/magic-link/verify.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +23 -17
- package/dist/astro/routes/api/auth/magic-link/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/me.mjs +15 -15
- package/dist/astro/routes/api/auth/mode.mjs +5 -5
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +8 -8
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +14 -14
- package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
- package/dist/astro/routes/api/auth/passkey/options.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/passkey/options.mjs +27 -20
- package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +17 -17
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +18 -18
- package/dist/astro/routes/api/auth/passkey/verify.mjs +19 -19
- package/dist/astro/routes/api/auth/signup/complete.mjs +19 -19
- package/dist/astro/routes/api/auth/signup/request.mjs +18 -17
- package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
- package/dist/astro/routes/api/calendar.mjs +15 -15
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -18
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
- 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 +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +7 -10
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +20 -17
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +7 -6
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +11 -11
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +30 -29
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -17
- 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 +35 -34
- 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 +35 -34
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +7 -6
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +19 -18
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +31 -26
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +18 -17
- 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 +27 -20
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/index.mjs +18 -21
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -15
- package/dist/astro/routes/api/dashboard.d.mts.map +1 -1
- package/dist/astro/routes/api/dashboard.mjs +18 -12
- package/dist/astro/routes/api/dashboard.mjs.map +1 -1
- package/dist/astro/routes/api/dev/emails.mjs +5 -5
- package/dist/astro/routes/api/dev/scheduled-tasks.d.mts +12 -0
- package/dist/astro/routes/api/dev/scheduled-tasks.d.mts.map +1 -0
- package/dist/astro/routes/api/dev/scheduled-tasks.mjs +140 -0
- package/dist/astro/routes/api/dev/scheduled-tasks.mjs.map +1 -0
- package/dist/astro/routes/api/health.mjs +6 -6
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +25 -23
- package/dist/astro/routes/api/import/probe.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +7 -20
- package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +15 -14
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +36 -30
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
- package/dist/astro/routes/api/import/wordpress/media.mjs +17 -17
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +19 -17
- package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts +8 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs +67 -31
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +27 -26
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +26 -23
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +63 -35
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +9 -6
- package/dist/astro/routes/api/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/mcp.mjs +135 -101
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.d.mts.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +34 -18
- package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/replace.mjs +15 -15
- package/dist/astro/routes/api/media/_id_/upload.mjs +8 -8
- package/dist/astro/routes/api/media/_id_/usage.mjs +31 -30
- package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_.mjs +29 -28
- package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
- package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
- package/dist/astro/routes/api/media/file/_...key_.mjs +45 -15
- package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
- package/dist/astro/routes/api/media/folders/_id_.mjs +16 -16
- package/dist/astro/routes/api/media/folders/index.mjs +16 -16
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +5 -5
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +5 -5
- package/dist/astro/routes/api/media/providers/index.mjs +5 -5
- package/dist/astro/routes/api/media/upload-url.mjs +40 -20
- package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
- package/dist/astro/routes/api/media.d.mts.map +1 -1
- package/dist/astro/routes/api/media.mjs +40 -29
- package/dist/astro/routes/api/media.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.mjs +18 -17
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +18 -17
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.mjs +18 -17
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/_name_.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/index.d.mts.map +1 -1
- package/dist/astro/routes/api/menus/index.mjs +18 -17
- package/dist/astro/routes/api/menus/index.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +8 -8
- package/dist/astro/routes/api/oauth/device/code.mjs +12 -11
- package/dist/astro/routes/api/oauth/device/code.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/device/token.mjs +11 -10
- package/dist/astro/routes/api/oauth/device/token.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/register.mjs +8 -7
- package/dist/astro/routes/api/oauth/register.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
- package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
- package/dist/astro/routes/api/oauth/token.mjs +8 -8
- package/dist/astro/routes/api/openapi.json.mjs +22 -22
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +11 -11
- package/dist/astro/routes/api/redirects/404s/index.mjs +19 -19
- package/dist/astro/routes/api/redirects/404s/summary.mjs +19 -19
- package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/redirects/_id_.mjs +32 -23
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/index.d.mts.map +1 -1
- package/dist/astro/routes/api/redirects/index.mjs +24 -21
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/index.mjs +35 -34
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +35 -34
- package/dist/astro/routes/api/relations/index.mjs.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +5 -5
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +16 -16
- package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +71 -69
- package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs +71 -69
- package/dist/astro/routes/api/schema/block-types/_slug_/versions/_version_/activate.mjs.map +1 -1
- package/dist/astro/routes/api/schema/block-types/index.mjs +71 -69
- package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +71 -69
- 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 +71 -69
- 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 +71 -69
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +71 -69
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +71 -69
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +71 -69
- package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +17 -16
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -69
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +71 -69
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +19 -18
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +18 -17
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +19 -18
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +9 -8
- package/dist/astro/routes/api/search/stats.mjs.map +1 -1
- package/dist/astro/routes/api/search/suggest.mjs +18 -17
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +18 -17
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +18 -17
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
- package/dist/astro/routes/api/settings/domain-notify.d.mts +8 -0
- package/dist/astro/routes/api/settings/domain-notify.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/domain-notify.mjs +125 -0
- package/dist/astro/routes/api/settings/domain-notify.mjs.map +1 -0
- package/dist/astro/routes/api/settings/domain.d.mts +9 -0
- package/dist/astro/routes/api/settings/domain.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/domain.mjs +64 -0
- package/dist/astro/routes/api/settings/domain.mjs.map +1 -0
- package/dist/astro/routes/api/settings/email.mjs +6 -6
- package/dist/astro/routes/api/settings.d.mts.map +1 -1
- package/dist/astro/routes/api/settings.mjs +23 -20
- package/dist/astro/routes/api/settings.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.mjs +25 -21
- package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin.mjs +18 -18
- package/dist/astro/routes/api/setup/dev-bypass.mjs +43 -41
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
- package/dist/astro/routes/api/setup/index.d.mts.map +1 -1
- package/dist/astro/routes/api/setup/index.mjs +53 -47
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +6 -6
- package/dist/astro/routes/api/site/domain-proof.d.mts +8 -0
- package/dist/astro/routes/api/site/domain-proof.d.mts.map +1 -0
- package/dist/astro/routes/api/site/domain-proof.mjs +35 -0
- package/dist/astro/routes/api/site/domain-proof.mjs.map +1 -0
- package/dist/astro/routes/api/snapshot.mjs +8 -8
- package/dist/astro/routes/api/taxonomies/_name_/reorder.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +24 -22
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +24 -22
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -23
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +24 -22
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -21
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.mjs +25 -23
- package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +35 -34
- package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +24 -22
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
- package/dist/astro/routes/api/themes/preview.mjs +6 -6
- package/dist/astro/routes/api/typegen.mjs +6 -6
- package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +18 -18
- package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +4 -4
- package/dist/astro/routes/api/well-known/auth.mjs +1 -1
- 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.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +17 -16
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +21 -19
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +20 -18
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -8
- package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/index.mjs +20 -18
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
- package/dist/astro/routes/api/widget-components.mjs +5 -5
- package/dist/astro/routes/robots.txt.d.mts.map +1 -1
- package/dist/astro/routes/robots.txt.mjs +38 -5
- package/dist/astro/routes/robots.txt.mjs.map +1 -1
- package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +33 -11
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
- package/dist/astro/routes/sitemap.xml.d.mts.map +1 -1
- package/dist/astro/routes/sitemap.xml.mjs +17 -11
- package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
- package/dist/astro/types.d.mts +32 -18
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/audit-_gieLVGU.mjs +127 -0
- package/dist/audit-_gieLVGU.mjs.map +1 -0
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/auth/providers/microsoft.d.mts +1 -1
- package/dist/authoritative-records-CQlB3JzE.mjs +5183 -0
- package/dist/authoritative-records-CQlB3JzE.mjs.map +1 -0
- package/dist/authorize-DPFBGbE6.mjs +74 -0
- package/dist/authorize-DPFBGbE6.mjs.map +1 -0
- package/dist/backup-3FgVxiDJ.mjs +246 -0
- package/dist/backup-3FgVxiDJ.mjs.map +1 -0
- package/dist/block-types-CYcG56JB.mjs +132 -0
- package/dist/block-types-CYcG56JB.mjs.map +1 -0
- package/dist/block-values-gCX4HBSl.mjs +215 -0
- package/dist/block-values-gCX4HBSl.mjs.map +1 -0
- package/dist/byline-BR1qhyiw.mjs +909 -0
- package/dist/byline-BR1qhyiw.mjs.map +1 -0
- package/dist/byline-fields-4ClDC88c.mjs +123 -0
- package/dist/byline-fields-4ClDC88c.mjs.map +1 -0
- package/dist/byline-fields-BLXZnX7N.mjs +280 -0
- package/dist/byline-fields-BLXZnX7N.mjs.map +1 -0
- package/dist/bylines-CVOvRUL7.mjs +234 -0
- package/dist/bylines-CVOvRUL7.mjs.map +1 -0
- package/dist/bylines-DxOs9B7z.mjs +150 -0
- package/dist/bylines-DxOs9B7z.mjs.map +1 -0
- package/dist/cache-CEU9wo_h.mjs +151 -0
- package/dist/cache-CEU9wo_h.mjs.map +1 -0
- package/dist/canonical-BudtH-Fx.mjs +174 -0
- package/dist/canonical-BudtH-Fx.mjs.map +1 -0
- package/dist/capture-triggers-CT6dK9zd.mjs +362 -0
- package/dist/capture-triggers-CT6dK9zd.mjs.map +1 -0
- package/dist/challenge-store-C17BYx2-.mjs +51 -0
- package/dist/challenge-store-C17BYx2-.mjs.map +1 -0
- package/dist/checksum-CEqvfxGX.mjs +162 -0
- package/dist/checksum-CEqvfxGX.mjs.map +1 -0
- package/dist/chunks-xC4UD5-S.mjs +25 -0
- package/dist/chunks-xC4UD5-S.mjs.map +1 -0
- package/dist/cli/index.mjs +134 -118
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +122 -122
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +12 -10
- package/dist/client/index.mjs.map +1 -1
- package/dist/collection-slugs-cache-e09QeJQt.mjs +85 -0
- package/dist/collection-slugs-cache-e09QeJQt.mjs.map +1 -0
- package/dist/comment-UvIWDKcW.mjs +325 -0
- package/dist/comment-UvIWDKcW.mjs.map +1 -0
- package/dist/comment-reaction-dGp6_FRo.mjs +85 -0
- package/dist/comment-reaction-dGp6_FRo.mjs.map +1 -0
- package/dist/comments-pej-_BUO.mjs +195 -0
- package/dist/comments-pej-_BUO.mjs.map +1 -0
- package/dist/comments-yiRFx3w5.mjs +99 -0
- package/dist/comments-yiRFx3w5.mjs.map +1 -0
- package/dist/components-Brp__9xo.mjs +112 -0
- package/dist/components-Brp__9xo.mjs.map +1 -0
- package/dist/config-Bsm_u_oE.d.mts +6799 -0
- package/dist/config-Bsm_u_oE.d.mts.map +1 -0
- package/dist/config-CFMojMFK.d.mts +39 -0
- package/dist/config-CFMojMFK.d.mts.map +1 -0
- package/dist/config-DBU6iUQB.mjs +228 -0
- package/dist/config-DBU6iUQB.mjs.map +1 -0
- package/dist/connection-BtEN_lP9.mjs +36 -0
- package/dist/connection-BtEN_lP9.mjs.map +1 -0
- package/dist/content-DQSRZTVw.mjs +2075 -0
- package/dist/content-DQSRZTVw.mjs.map +1 -0
- package/dist/content-list-query-CYKcY6Vi.d.mts +26 -0
- package/dist/content-list-query-CYKcY6Vi.d.mts.map +1 -0
- package/dist/content-repair-DNh5--x5.mjs +442 -0
- package/dist/content-repair-DNh5--x5.mjs.map +1 -0
- package/dist/context-BYptmCN0.mjs +2090 -0
- package/dist/context-BYptmCN0.mjs.map +1 -0
- package/dist/credits-B9iORdWB.mjs +110 -0
- package/dist/credits-B9iORdWB.mjs.map +1 -0
- package/dist/cron-D7obTIfk.mjs +306 -0
- package/dist/cron-D7obTIfk.mjs.map +1 -0
- package/dist/dashboard-D0jcgBD7.mjs +167 -0
- package/dist/dashboard-D0jcgBD7.mjs.map +1 -0
- package/dist/database/migration-lock.d.mts +17 -4
- package/dist/database/migration-lock.d.mts.map +1 -1
- package/dist/database/migration-lock.mjs +32 -5
- package/dist/database/migration-lock.mjs.map +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +1 -1
- package/dist/db/libsql-migrations.d.mts +1 -1
- package/dist/db/libsql-migrations.mjs +4 -4
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres-migrations.d.mts +1 -1
- package/dist/db/postgres-migrations.mjs +4 -4
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite-migrations.d.mts +1 -1
- package/dist/db/sqlite-migrations.mjs +4 -4
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/db/sqlite.mjs +1 -1
- package/dist/default-C0W-PhAp.mjs +81 -0
- package/dist/default-C0W-PhAp.mjs.map +1 -0
- package/dist/deferred-tasks-ZvUECSzI.d.mts +9 -0
- package/dist/deferred-tasks-ZvUECSzI.d.mts.map +1 -0
- package/dist/dev-typegen-EBni_pOQ.mjs +29 -0
- package/dist/dev-typegen-EBni_pOQ.mjs.map +1 -0
- package/dist/device-flow-BkFKBoAn.mjs +521 -0
- package/dist/device-flow-BkFKBoAn.mjs.map +1 -0
- package/dist/digest-DJ1tHCgy.mjs +194 -0
- package/dist/digest-DJ1tHCgy.mjs.map +1 -0
- package/dist/direct-executor-Cbxzg4qe.mjs +117 -0
- package/dist/direct-executor-Cbxzg4qe.mjs.map +1 -0
- package/dist/email-console-FFVJWb9N.mjs +50 -0
- package/dist/email-console-FFVJWb9N.mjs.map +1 -0
- package/dist/email-locale-BJ8DjTzZ.mjs +25 -0
- package/dist/email-locale-BJ8DjTzZ.mjs.map +1 -0
- package/dist/emdash-runtime-DVi7vtXC.mjs +4379 -0
- package/dist/emdash-runtime-DVi7vtXC.mjs.map +1 -0
- package/dist/entry-lock-C7VX0NGK.d.mts +4568 -0
- package/dist/entry-lock-C7VX0NGK.d.mts.map +1 -0
- package/dist/entry-lock-DLxCffFW.mjs +163 -0
- package/dist/entry-lock-DLxCffFW.mjs.map +1 -0
- package/dist/entry-lock-Df6-XhIu.mjs +1211 -0
- package/dist/entry-lock-Df6-XhIu.mjs.map +1 -0
- package/dist/env-types-C3FCVBWe.mjs +38 -0
- package/dist/env-types-C3FCVBWe.mjs.map +1 -0
- package/dist/error-CVWeIOku.mjs +90 -0
- package/dist/error-CVWeIOku.mjs.map +1 -0
- package/dist/errors-B4f4It-2.mjs +120 -0
- package/dist/errors-B4f4It-2.mjs.map +1 -0
- package/dist/errors-BOYNdIo3.mjs +479 -0
- package/dist/errors-BOYNdIo3.mjs.map +1 -0
- package/dist/escape-lsNq38PP.mjs +9 -0
- package/dist/escape-lsNq38PP.mjs.map +1 -0
- package/dist/fence-C3MUitUN.mjs +162 -0
- package/dist/fence-C3MUitUN.mjs.map +1 -0
- package/dist/field-defs-cache-Dez5iWJJ.mjs +77 -0
- package/dist/field-defs-cache-Dez5iWJJ.mjs.map +1 -0
- package/dist/field-map-Bft9LKak.mjs +83 -0
- package/dist/field-map-Bft9LKak.mjs.map +1 -0
- package/dist/fts-manager-Beg3e4bI.mjs +443 -0
- package/dist/fts-manager-Beg3e4bI.mjs.map +1 -0
- package/dist/gc-ByyAYiYE.mjs +75 -0
- package/dist/gc-ByyAYiYE.mjs.map +1 -0
- package/dist/hash-BJaeek87.mjs +37 -0
- package/dist/hash-BJaeek87.mjs.map +1 -0
- package/dist/hook-result-BrdLyOdI.d.mts +31 -0
- package/dist/hook-result-BrdLyOdI.d.mts.map +1 -0
- package/dist/hreflang-C8Jb-hrf.mjs +105 -0
- package/dist/hreflang-C8Jb-hrf.mjs.map +1 -0
- package/dist/hreflang-CY_F5OjF.d.mts +50 -0
- package/dist/hreflang-CY_F5OjF.d.mts.map +1 -0
- package/dist/http-route-dispatch-CyeW6iPv.mjs +342 -0
- package/dist/http-route-dispatch-CyeW6iPv.mjs.map +1 -0
- package/dist/identity-Cael5uTT.mjs +35 -0
- package/dist/identity-Cael5uTT.mjs.map +1 -0
- package/dist/import-BUXjdZUn.mjs +2126 -0
- package/dist/import-BUXjdZUn.mjs.map +1 -0
- package/dist/index-BB9sVisO.d.mts +623 -0
- package/dist/index-BB9sVisO.d.mts.map +1 -0
- package/dist/index.d.mts +24 -24
- package/dist/index.mjs +97 -95
- package/dist/install-finalization-3JX5qQEA.mjs +58 -0
- package/dist/install-finalization-3JX5qQEA.mjs.map +1 -0
- package/dist/json-recordset-BUjxhr77.mjs +12 -0
- package/dist/json-recordset-BUjxhr77.mjs.map +1 -0
- package/dist/json-schema-v_D_pPNG.mjs +15 -0
- package/dist/json-schema-v_D_pPNG.mjs.map +1 -0
- package/dist/keys-CifIkT0N.mjs +61 -0
- package/dist/keys-CifIkT0N.mjs.map +1 -0
- package/dist/kinds-B_Qcl5pz.mjs +974 -0
- package/dist/kinds-B_Qcl5pz.mjs.map +1 -0
- package/dist/lifecycle-7vUJeFRe.mjs +25 -0
- package/dist/lifecycle-7vUJeFRe.mjs.map +1 -0
- package/dist/load-CdAG9wz-.mjs +28 -0
- package/dist/load-CdAG9wz-.mjs.map +1 -0
- package/dist/loader-CswroUbe.mjs +1380 -0
- package/dist/loader-CswroUbe.mjs.map +1 -0
- package/dist/loops-uA4iTOzd.mjs +205 -0
- package/dist/loops-uA4iTOzd.mjs.map +1 -0
- package/dist/manifest-builder-B8zjuH3f.mjs +189 -0
- package/dist/manifest-builder-B8zjuH3f.mjs.map +1 -0
- package/dist/manifest-schema-DNb4XmTS.mjs +497 -0
- package/dist/manifest-schema-DNb4XmTS.mjs.map +1 -0
- package/dist/marketplace-CqbgeIa7.mjs +257 -0
- package/dist/marketplace-CqbgeIa7.mjs.map +1 -0
- package/dist/media/image-endpoint.d.mts +26 -2
- package/dist/media/image-endpoint.d.mts.map +1 -1
- package/dist/media/image-endpoint.mjs +73 -3
- package/dist/media/image-endpoint.mjs.map +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/local-runtime.d.mts +14 -14
- package/dist/media/local-runtime.mjs +10 -5
- package/dist/media/local-runtime.mjs.map +1 -1
- package/dist/media--dJRU6i2.mjs +294 -0
- package/dist/media--dJRU6i2.mjs.map +1 -0
- package/dist/media-1WC65OCB.mjs +416 -0
- package/dist/media-1WC65OCB.mjs.map +1 -0
- package/dist/media-Bws9f18T.mjs +373 -0
- package/dist/media-Bws9f18T.mjs.map +1 -0
- package/dist/media-allowlist-BJB7MFx6.mjs +45 -0
- package/dist/media-allowlist-BJB7MFx6.mjs.map +1 -0
- package/dist/media-folders-Dn3C16B8.mjs +210 -0
- package/dist/media-folders-Dn3C16B8.mjs.map +1 -0
- package/dist/media-url-BQgKvpQ5.mjs +43 -0
- package/dist/media-url-BQgKvpQ5.mjs.map +1 -0
- package/dist/media-usage-CF0WVcLO.mjs +282 -0
- package/dist/media-usage-CF0WVcLO.mjs.map +1 -0
- package/dist/media-usage-activation-C9HwVw5w.mjs +78 -0
- package/dist/media-usage-activation-C9HwVw5w.mjs.map +1 -0
- package/dist/media-usage-work-CkLa5-nc.mjs +1036 -0
- package/dist/media-usage-work-CkLa5-nc.mjs.map +1 -0
- package/dist/media-usage-work-m3AWTmmC.mjs +151 -0
- package/dist/media-usage-work-m3AWTmmC.mjs.map +1 -0
- package/dist/menus-BCVSSp1z.mjs +753 -0
- package/dist/menus-BCVSSp1z.mjs.map +1 -0
- package/dist/menus-BSzwObhV.mjs +92 -0
- package/dist/menus-BSzwObhV.mjs.map +1 -0
- package/dist/menus-Cl4kwdt7.mjs +3721 -0
- package/dist/menus-Cl4kwdt7.mjs.map +1 -0
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.d.mts.map +1 -1
- package/dist/migrations/index.mjs +3 -3
- package/dist/mode-C-D3qICy.mjs +23 -0
- package/dist/mode-C-D3qICy.mjs.map +1 -0
- package/dist/node-sqlite-compat-CrKzRr0J.mjs +63 -0
- package/dist/node-sqlite-compat-CrKzRr0J.mjs.map +1 -0
- package/dist/oauth-authorization-TpEJrYB7.mjs +274 -0
- package/dist/oauth-authorization-TpEJrYB7.mjs.map +1 -0
- package/dist/oauth-clients-BT0Pg-MO.mjs +266 -0
- package/dist/oauth-clients-BT0Pg-MO.mjs.map +1 -0
- package/dist/oauth-state-store-CHMn_mwc.mjs +50 -0
- package/dist/oauth-state-store-CHMn_mwc.mjs.map +1 -0
- package/dist/oauth-user-lookup-BDgF6IVG.mjs +26 -0
- package/dist/oauth-user-lookup-BDgF6IVG.mjs.map +1 -0
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/options-DJWaq3Ie.d.mts +81 -0
- package/dist/options-DJWaq3Ie.d.mts.map +1 -0
- package/dist/ownership-MiyA7qKO.mjs +12 -0
- package/dist/ownership-MiyA7qKO.mjs.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.mjs +9 -4
- package/dist/page/index.mjs.map +1 -1
- package/dist/parse-CWHOFc6z.d.mts +176 -0
- package/dist/parse-CWHOFc6z.d.mts.map +1 -0
- package/dist/parse-DgQ2NABT.mjs +81 -0
- package/dist/parse-DgQ2NABT.mjs.map +1 -0
- package/dist/passkey-config-D0kdzEao.mjs +46 -0
- package/dist/passkey-config-D0kdzEao.mjs.map +1 -0
- package/dist/paths-biDzFTY2.mjs +77 -0
- package/dist/paths-biDzFTY2.mjs.map +1 -0
- package/dist/patterns-CMNnYCgf.mjs +159 -0
- package/dist/patterns-CMNnYCgf.mjs.map +1 -0
- package/dist/placeholder-D41vk11_.d.mts +306 -0
- package/dist/placeholder-D41vk11_.d.mts.map +1 -0
- package/dist/plan-CCoqxNoU.mjs +135 -0
- package/dist/plan-CCoqxNoU.mjs.map +1 -0
- package/dist/plugin-test-runtime.d.mts +14 -14
- package/dist/plugin-test-runtime.d.mts.map +1 -1
- package/dist/plugin-test-runtime.mjs +110 -108
- package/dist/plugin-tool-name-DDUgN_0p.mjs +27 -0
- package/dist/plugin-tool-name-DDUgN_0p.mjs.map +1 -0
- package/dist/plugin-types.d.mts +2 -2
- package/dist/plugin-utils.d.mts +12 -12
- package/dist/plugin-utils.mjs +1 -1
- package/dist/plugin-utils.mjs.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.mjs +9 -8
- package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
- package/dist/plugins/host.d.mts +5 -5
- package/dist/plugins/host.mjs +46 -42
- package/dist/plugins-COJ2L49n.mjs +261 -0
- package/dist/plugins-COJ2L49n.mjs.map +1 -0
- package/dist/policy-DLQ--Hnm.mjs +45 -0
- package/dist/policy-DLQ--Hnm.mjs.map +1 -0
- package/dist/portable-text-BH4zgkSm.mjs +311 -0
- package/dist/portable-text-BH4zgkSm.mjs.map +1 -0
- package/dist/preview-DLexxwp3.mjs +107 -0
- package/dist/preview-DLexxwp3.mjs.map +1 -0
- package/dist/protocol-79kUO7jP.d.mts +65 -0
- package/dist/protocol-79kUO7jP.d.mts.map +1 -0
- package/dist/public-plugin-api-routes-BuAMJ8nN.mjs +316 -0
- package/dist/public-plugin-api-routes-BuAMJ8nN.mjs.map +1 -0
- package/dist/public-submission-Di3TsgzX.mjs +251 -0
- package/dist/public-submission-Di3TsgzX.mjs.map +1 -0
- package/dist/public-url-Bt98vysr.mjs +101 -0
- package/dist/public-url-Bt98vysr.mjs.map +1 -0
- package/dist/query-CpnRlBh8.mjs +1156 -0
- package/dist/query-CpnRlBh8.mjs.map +1 -0
- package/dist/query-haKvLAWl.mjs +41 -0
- package/dist/query-haKvLAWl.mjs.map +1 -0
- package/dist/range-CYfeXgGK.mjs +51 -0
- package/dist/range-CYfeXgGK.mjs.map +1 -0
- package/dist/rate-limit-Xp4d0NBY.mjs +127 -0
- package/dist/rate-limit-Xp4d0NBY.mjs.map +1 -0
- package/dist/receipt-BUsQCOeM.mjs +43 -0
- package/dist/receipt-BUsQCOeM.mjs.map +1 -0
- package/dist/redirect-CQAV7mCo.mjs +19 -0
- package/dist/redirect-CQAV7mCo.mjs.map +1 -0
- package/dist/redirect-DiS_3mA4.mjs +423 -0
- package/dist/redirect-DiS_3mA4.mjs.map +1 -0
- package/dist/redirect-paths-CNYq7w80.mjs +36 -0
- package/dist/redirect-paths-CNYq7w80.mjs.map +1 -0
- package/dist/redirects-BEVSRMa2.mjs +148 -0
- package/dist/redirects-BEVSRMa2.mjs.map +1 -0
- package/dist/redirects-BHpy-VsZ.mjs +446 -0
- package/dist/redirects-BHpy-VsZ.mjs.map +1 -0
- package/dist/registry/testing.mjs +3 -3
- package/dist/registry-TUVaid9Z.mjs +8369 -0
- package/dist/registry-TUVaid9Z.mjs.map +1 -0
- package/dist/relations-CA_QuMTU.mjs +776 -0
- package/dist/relations-CA_QuMTU.mjs.map +1 -0
- package/dist/request-context.d.mts +1 -1
- package/dist/request-meta-bwZ_NsvU.mjs +141 -0
- package/dist/request-meta-bwZ_NsvU.mjs.map +1 -0
- package/dist/resolve-DwNM-CXl.mjs +101 -0
- package/dist/resolve-DwNM-CXl.mjs.map +1 -0
- package/dist/revision-BVp8S0e_.mjs +374 -0
- package/dist/revision-BVp8S0e_.mjs.map +1 -0
- package/dist/route-cache-QSOyDEw0.mjs +20 -0
- package/dist/route-cache-QSOyDEw0.mjs.map +1 -0
- package/dist/route-wire-Ca_HWCZ5.mjs +197 -0
- package/dist/route-wire-Ca_HWCZ5.mjs.map +1 -0
- package/dist/routes-BerZFrvV.mjs +272 -0
- package/dist/routes-BerZFrvV.mjs.map +1 -0
- package/dist/runner-BObHz5FC.d.mts +68 -0
- package/dist/runner-BObHz5FC.d.mts.map +1 -0
- package/dist/runner-C5NeAkBQ.mjs +6595 -0
- package/dist/runner-C5NeAkBQ.mjs.map +1 -0
- package/dist/runtime.d.mts +13 -13
- package/dist/runtime.mjs +3 -2
- package/dist/runtime.mjs.map +1 -1
- package/dist/schema/project-env-types.mjs +40 -36
- package/dist/schema/project-env-types.mjs.map +1 -1
- package/dist/schema-C4OBuv6Z.mjs +13 -0
- package/dist/schema-C4OBuv6Z.mjs.map +1 -0
- package/dist/schema-DJRfvM_o.mjs +815 -0
- package/dist/schema-DJRfvM_o.mjs.map +1 -0
- package/dist/scopes-BU03K7Uo.mjs +34 -0
- package/dist/scopes-BU03K7Uo.mjs.map +1 -0
- package/dist/search-DfVzks89.mjs +450 -0
- package/dist/search-DfVzks89.mjs.map +1 -0
- package/dist/sections-BMy4JVUz.mjs +346 -0
- package/dist/sections-BMy4JVUz.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +38 -34
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +25 -21
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo-ClB-dw9w.mjs +188 -0
- package/dist/seo-ClB-dw9w.mjs.map +1 -0
- package/dist/seo-VZYOEy8f.mjs +133 -0
- package/dist/seo-VZYOEy8f.mjs.map +1 -0
- package/dist/service-Bo_usgSk.mjs +150 -0
- package/dist/service-Bo_usgSk.mjs.map +1 -0
- package/dist/session-user-DlpPdf8L.mjs +61 -0
- package/dist/session-user-DlpPdf8L.mjs.map +1 -0
- package/dist/settings-CWb84sDm.mjs +452 -0
- package/dist/settings-CWb84sDm.mjs.map +1 -0
- package/dist/settings-DS914jjE.mjs +66 -0
- package/dist/settings-DS914jjE.mjs.map +1 -0
- package/dist/settings-Dd1uivmQ.mjs +73 -0
- package/dist/settings-Dd1uivmQ.mjs.map +1 -0
- package/dist/setup-complete-BuNxAUiN.mjs +65 -0
- package/dist/setup-complete-BuNxAUiN.mjs.map +1 -0
- package/dist/setup-nonce-BnEAX0iy.mjs +25 -0
- package/dist/setup-nonce-BnEAX0iy.mjs.map +1 -0
- package/dist/site-domain-Bq5j5bVg.mjs +131 -0
- package/dist/site-domain-Bq5j5bVg.mjs.map +1 -0
- package/dist/site-settings-DRHfX7bq.mjs +50 -0
- package/dist/site-settings-DRHfX7bq.mjs.map +1 -0
- package/dist/site-url-MB685I5X.mjs +45 -0
- package/dist/site-url-MB685I5X.mjs.map +1 -0
- package/dist/sitemap-name-BTg2NJJv.mjs +26 -0
- package/dist/sitemap-name-BTg2NJJv.mjs.map +1 -0
- package/dist/slug-aVnUV4SL.mjs +16 -0
- package/dist/slug-aVnUV4SL.mjs.map +1 -0
- package/dist/slugify-bu2-jKia.mjs +22 -0
- package/dist/slugify-bu2-jKia.mjs.map +1 -0
- package/dist/snapshot-DYsG4uOq.mjs +414 -0
- package/dist/snapshot-DYsG4uOq.mjs.map +1 -0
- package/dist/ssrf-BcYjyM4M.mjs +406 -0
- package/dist/ssrf-BcYjyM4M.mjs.map +1 -0
- package/dist/stage-D8DWgPcO.mjs +662 -0
- package/dist/stage-D8DWgPcO.mjs.map +1 -0
- package/dist/staged-CD_imitH.mjs +686 -0
- package/dist/staged-CD_imitH.mjs.map +1 -0
- package/dist/state-CFbGZziM.mjs +178 -0
- package/dist/state-CFbGZziM.mjs.map +1 -0
- package/dist/status-BFNdxzKc.mjs +30 -0
- package/dist/status-BFNdxzKc.mjs.map +1 -0
- package/dist/storage/local.d.mts +2 -2
- package/dist/storage/local.d.mts.map +1 -1
- package/dist/storage/local.mjs +12 -5
- package/dist/storage/local.mjs.map +1 -1
- package/dist/storage/s3.d.mts +4 -2
- package/dist/storage/s3.d.mts.map +1 -1
- package/dist/storage/s3.mjs +56 -9
- package/dist/storage/s3.mjs.map +1 -1
- package/dist/storage-query-DRyu3bSU.d.mts +1615 -0
- package/dist/storage-query-DRyu3bSU.d.mts.map +1 -0
- package/dist/tar-DFjExb9X.mjs +449 -0
- package/dist/tar-DFjExb9X.mjs.map +1 -0
- package/dist/target-CWZs2-o6.mjs +27 -0
- package/dist/target-CWZs2-o6.mjs.map +1 -0
- package/dist/taxonomies-ChnU7Mc8.mjs +697 -0
- package/dist/taxonomies-ChnU7Mc8.mjs.map +1 -0
- package/dist/taxonomies-Dd9JJv_a.mjs +939 -0
- package/dist/taxonomies-Dd9JJv_a.mjs.map +1 -0
- package/dist/taxonomy-C_C_LBAU.mjs +550 -0
- package/dist/taxonomy-C_C_LBAU.mjs.map +1 -0
- package/dist/tokens-BnhSnGwJ.mjs +171 -0
- package/dist/tokens-BnhSnGwJ.mjs.map +1 -0
- package/dist/transfer-ClH6w6BV.mjs +8873 -0
- package/dist/transfer-ClH6w6BV.mjs.map +1 -0
- package/dist/transfer-WmWiR3xf.mjs +166 -0
- package/dist/transfer-WmWiR3xf.mjs.map +1 -0
- package/dist/transfer-download--ofRj9Cw.mjs +33 -0
- package/dist/transfer-download--ofRj9Cw.mjs.map +1 -0
- package/dist/transformations-Bx4lYY0Y.mjs +196 -0
- package/dist/transformations-Bx4lYY0Y.mjs.map +1 -0
- package/dist/transport-BjbqNiPI.mjs +136 -0
- package/dist/transport-BjbqNiPI.mjs.map +1 -0
- package/dist/transport-DxiXnbXk.d.mts +42 -0
- package/dist/transport-DxiXnbXk.d.mts.map +1 -0
- package/dist/trusted-proxy-BU3Nx9g1.mjs +51 -0
- package/dist/trusted-proxy-BU3Nx9g1.mjs.map +1 -0
- package/dist/turnstile-CJwvsOqw.mjs +58 -0
- package/dist/turnstile-CJwvsOqw.mjs.map +1 -0
- package/dist/types-BA3ey2QH.d.mts +87 -0
- package/dist/types-BA3ey2QH.d.mts.map +1 -0
- package/dist/types-Bwpzb5o6.d.mts +227 -0
- package/dist/types-Bwpzb5o6.d.mts.map +1 -0
- package/dist/types-CNB-dj6F.d.mts +289 -0
- package/dist/types-CNB-dj6F.d.mts.map +1 -0
- package/dist/types-CgfFGfO5.mjs +16 -0
- package/dist/types-CgfFGfO5.mjs.map +1 -0
- package/dist/types-D2NEXtgB.mjs +127 -0
- package/dist/types-D2NEXtgB.mjs.map +1 -0
- package/dist/types-DCFavOii.d.mts +916 -0
- package/dist/types-DCFavOii.d.mts.map +1 -0
- package/dist/types-DHO7Pd25.d.mts +366 -0
- package/dist/types-DHO7Pd25.d.mts.map +1 -0
- package/dist/types-DvqVxZXa.d.mts +125 -0
- package/dist/types-DvqVxZXa.d.mts.map +1 -0
- package/dist/types-QoPHm-2w.d.mts +1741 -0
- package/dist/types-QoPHm-2w.d.mts.map +1 -0
- package/dist/types-RLgeIpnF.d.mts +374 -0
- package/dist/types-RLgeIpnF.d.mts.map +1 -0
- package/dist/types-qHVygneX.mjs +77 -0
- package/dist/types-qHVygneX.mjs.map +1 -0
- package/dist/types-sUHaH7lC.mjs +37 -0
- package/dist/types-sUHaH7lC.mjs.map +1 -0
- package/dist/types-slSqujQL.d.mts +204 -0
- package/dist/types-slSqujQL.d.mts.map +1 -0
- package/dist/update-check-BxNg9T6N.mjs +161 -0
- package/dist/update-check-BxNg9T6N.mjs.map +1 -0
- package/dist/upload-attempts-DPFC4COv.mjs +32 -0
- package/dist/upload-attempts-DPFC4COv.mjs.map +1 -0
- package/dist/url-pattern-QATUE_rv.mjs +41 -0
- package/dist/url-pattern-QATUE_rv.mjs.map +1 -0
- package/dist/user-BlCTKVAm.mjs +171 -0
- package/dist/user-BlCTKVAm.mjs.map +1 -0
- package/dist/utils-TPt7w2cS.mjs +442 -0
- package/dist/utils-TPt7w2cS.mjs.map +1 -0
- package/dist/validate-DxYhJQA-.mjs +524 -0
- package/dist/validate-DxYhJQA-.mjs.map +1 -0
- package/dist/validate-emKxGC5F.d.mts +468 -0
- package/dist/validate-emKxGC5F.d.mts.map +1 -0
- package/dist/validation-Ckq4vsVg.mjs +220 -0
- package/dist/validation-Ckq4vsVg.mjs.map +1 -0
- package/dist/version-BZj18Q7G.mjs +9 -0
- package/dist/version-BZj18Q7G.mjs.map +1 -0
- package/dist/version-DHmGpcch.mjs +7 -0
- package/dist/version-DHmGpcch.mjs.map +1 -0
- package/dist/video-DytCnw3L.mjs +54 -0
- package/dist/video-DytCnw3L.mjs.map +1 -0
- package/dist/virtual-modules-DO954n7P.mjs +515 -0
- package/dist/virtual-modules-DO954n7P.mjs.map +1 -0
- package/dist/widgets-DA5XmvVC.mjs +121 -0
- package/dist/widgets-DA5XmvVC.mjs.map +1 -0
- package/dist/wxr-taxonomies-CrMonejI.d.mts +34 -0
- package/dist/wxr-taxonomies-CrMonejI.d.mts.map +1 -0
- package/dist/wxr-taxonomies-RgRG0d5e.mjs +453 -0
- package/dist/wxr-taxonomies-RgRG0d5e.mjs.map +1 -0
- package/dist/zod-generator-D0JKy94C.mjs +424 -0
- package/dist/zod-generator-D0JKy94C.mjs.map +1 -0
- package/package.json +15 -11
- package/src/api/authorize.ts +42 -0
- package/src/api/errors.ts +9 -0
- package/src/api/handlers/api-tokens.ts +12 -6
- package/src/api/handlers/content.ts +57 -8
- package/src/api/handlers/dashboard.ts +33 -10
- package/src/api/handlers/domain-move-notice.ts +94 -0
- package/src/api/handlers/index.ts +2 -0
- package/src/api/handlers/manifest.ts +6 -0
- package/src/api/handlers/media-usage.ts +2 -1
- package/src/api/handlers/media.ts +1 -0
- package/src/api/handlers/plugins.ts +1 -0
- package/src/api/handlers/revision.ts +6 -2
- package/src/api/handlers/seo.ts +155 -59
- package/src/api/handlers/settings.ts +31 -1
- package/src/api/handlers/site-domain.ts +159 -0
- package/src/api/openapi/document.ts +2 -2
- package/src/api/public-url.ts +1 -1
- package/src/api/schemas/content.ts +20 -0
- package/src/api/schemas/media-usage.ts +7 -1
- package/src/api/schemas/media.ts +12 -0
- package/src/api/schemas/settings.ts +2 -0
- package/src/api/site-url.ts +53 -5
- package/src/api/types.ts +4 -0
- package/src/astro/image-endpoint.ts +46 -4
- package/src/astro/integration/admin-locales.ts +168 -0
- package/src/astro/integration/dev-env.ts +84 -0
- package/src/astro/integration/dev-scheduler-bridge.ts +91 -0
- package/src/astro/integration/index.ts +97 -10
- package/src/astro/integration/routes.ts +28 -0
- package/src/astro/integration/runtime.ts +17 -1
- package/src/astro/integration/virtual-modules.ts +9 -16
- package/src/astro/integration/vite-config.ts +22 -16
- package/src/astro/middleware/auth.ts +19 -4
- package/src/astro/middleware/csp.ts +1 -0
- package/src/astro/middleware/redirect.ts +94 -50
- package/src/astro/middleware/request-context.ts +12 -6
- package/src/astro/middleware.ts +71 -17
- package/src/astro/prefetch.ts +7 -5
- package/src/astro/public-plugin-api-routes.ts +10 -2
- package/src/astro/routes/api/admin/plugins/registry/artifact.ts +1 -1
- package/src/astro/routes/api/auth/handover.ts +58 -0
- package/src/astro/routes/api/auth/magic-link/verify.ts +11 -3
- package/src/astro/routes/api/auth/passkey/options.ts +10 -2
- package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +2 -1
- package/src/astro/routes/api/content/[collection]/[id]/duplicate.ts +1 -5
- package/src/astro/routes/api/content/[collection]/[id]/lock.ts +2 -2
- package/src/astro/routes/api/content/[collection]/[id]/permanent.ts +2 -1
- package/src/astro/routes/api/content/[collection]/[id]/publish.ts +2 -1
- package/src/astro/routes/api/content/[collection]/[id]/restore.ts +2 -1
- package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +3 -2
- package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +5 -4
- package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +2 -1
- package/src/astro/routes/api/content/[collection]/[id].ts +18 -6
- package/src/astro/routes/api/content/[collection]/index.ts +1 -5
- package/src/astro/routes/api/dashboard.ts +4 -1
- package/src/astro/routes/api/dev/scheduled-tasks.ts +20 -0
- package/src/astro/routes/api/import/wordpress/analyze.ts +1 -16
- package/src/astro/routes/api/import/wordpress/execute.ts +27 -3
- package/src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts +80 -42
- package/src/astro/routes/api/import/wordpress-plugin/analyze.ts +4 -1
- package/src/astro/routes/api/import/wordpress-plugin/execute.ts +49 -5
- package/src/astro/routes/api/manifest.ts +10 -0
- package/src/astro/routes/api/media/[id]/confirm.ts +19 -0
- package/src/astro/routes/api/media/file/[...key].ts +60 -12
- package/src/astro/routes/api/media/upload-url.ts +28 -4
- package/src/astro/routes/api/media.ts +15 -0
- package/src/astro/routes/api/menus/[name]/items/[id].ts +3 -2
- package/src/astro/routes/api/menus/[name]/items.ts +2 -1
- package/src/astro/routes/api/menus/[name]/reorder.ts +2 -1
- package/src/astro/routes/api/menus/[name]/translations.ts +2 -1
- package/src/astro/routes/api/menus/[name].ts +3 -2
- package/src/astro/routes/api/menus/index.ts +2 -1
- package/src/astro/routes/api/redirects/[id].ts +15 -2
- package/src/astro/routes/api/redirects/index.ts +5 -1
- package/src/astro/routes/api/schema/index.ts +1 -1
- package/src/astro/routes/api/settings/domain-notify.ts +76 -0
- package/src/astro/routes/api/settings/domain.ts +64 -0
- package/src/astro/routes/api/settings.ts +2 -1
- package/src/astro/routes/api/setup/admin-verify.ts +7 -1
- package/src/astro/routes/api/setup/index.ts +7 -0
- package/src/astro/routes/api/site/domain-proof.ts +28 -0
- package/src/astro/routes/api/taxonomies/[name]/reorder.ts +2 -1
- package/src/astro/routes/api/taxonomies/[name]/terms/[slug]/translations.ts +2 -1
- package/src/astro/routes/api/taxonomies/[name]/terms/[slug].ts +3 -2
- package/src/astro/routes/api/taxonomies/[name]/terms/index.ts +2 -1
- package/src/astro/routes/api/taxonomies/[name].ts +3 -2
- package/src/astro/routes/api/taxonomies/index.ts +2 -1
- package/src/astro/routes/api/widget-areas/[name]/reorder.ts +2 -1
- package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +3 -2
- package/src/astro/routes/api/widget-areas/[name]/widgets.ts +2 -1
- package/src/astro/routes/api/widget-areas/[name].ts +2 -1
- package/src/astro/routes/api/widget-areas/index.ts +2 -1
- package/src/astro/routes/robots.txt.ts +33 -2
- package/src/astro/routes/sitemap-[collection].xml.ts +31 -8
- package/src/astro/routes/sitemap.xml.ts +12 -10
- package/src/astro/types.ts +23 -2
- package/src/auth/rate-limit.ts +18 -13
- package/src/auth/types.ts +11 -4
- package/src/aws-sdk.d.ts +2 -1
- package/src/cache/redirect-paths.ts +56 -0
- package/src/cache/route-cache.ts +22 -0
- package/src/cleanup.ts +26 -0
- package/src/cli/commands/export-seed.ts +2 -0
- package/src/cli/commands/import/wordpress.ts +3 -27
- package/src/cli/commands/login.ts +35 -43
- package/src/cli/commands/migrate.ts +36 -4
- package/src/cli/commands/seed.ts +23 -12
- package/src/cli/wxr/parser.ts +2 -2
- package/src/client/index.ts +18 -3
- package/src/client/portable-text.ts +21 -7
- package/src/comments/public-submission.ts +15 -8
- package/src/comments/query.ts +8 -2
- package/src/components/CommentForm.astro +50 -10
- package/src/components/Comments.astro +51 -29
- package/src/components/EmDashImage.astro +6 -4
- package/src/components/Gallery.astro +4 -3
- package/src/components/Image.astro +4 -3
- package/src/components/InlinePortableTextEditor.tsx +269 -1320
- package/src/components/Video.astro +100 -0
- package/src/components/index.ts +4 -1
- package/src/components/inline-block-types.ts +278 -0
- package/src/components/inline-bubble-menu.tsx +696 -0
- package/src/components/inline-code-block.tsx +8 -0
- package/src/components/inline-editor-ui.tsx +1192 -0
- package/src/components/inline-image.tsx +722 -0
- package/src/components/inline-media-picker.tsx +1221 -0
- package/src/components/inline-slash-menu.tsx +556 -0
- package/src/components/webmcp-search.ts +15 -19
- package/src/components/widgets/RecentPosts.astro +57 -17
- package/src/content/converters/mark-safety.ts +3 -3
- package/src/content/converters/portable-text-identity.ts +1 -0
- package/src/content/converters/portable-text-to-prosemirror.ts +7 -0
- package/src/content/converters/prosemirror-to-portable-text.ts +16 -0
- package/src/content/converters/types.ts +22 -0
- package/src/content/converters/video.ts +77 -0
- package/src/database/collection-cleanup.ts +30 -0
- package/src/database/datetime-storage.ts +337 -60
- package/src/database/migration-lock.ts +43 -7
- package/src/database/migrations/runner.ts +13 -1
- package/src/database/repositories/comment.ts +17 -3
- package/src/database/repositories/content.ts +25 -4
- package/src/database/repositories/plugin-storage.ts +137 -27
- package/src/database/repositories/redirect.ts +24 -2
- package/src/database/repositories/revision.ts +24 -6
- package/src/database/repositories/taxonomy.ts +61 -46
- package/src/database/repositories/types.ts +67 -7
- package/src/emdash-runtime.ts +393 -228
- package/src/import/index.ts +1 -0
- package/src/import/registry.ts +17 -0
- package/src/import/sources/wordpress-plugin.ts +154 -11
- package/src/import/types.ts +3 -0
- package/src/import/utils.ts +7 -3
- package/src/index.ts +3 -0
- package/src/loader.ts +170 -45
- package/src/mcp/json-schema.ts +14 -0
- package/src/mcp/plugin-tool-name.ts +36 -0
- package/src/mcp/server.ts +74 -15
- package/src/media/image-endpoint.ts +101 -1
- package/src/media/responsive.ts +14 -7
- package/src/media/usage/collection-deletion.ts +4 -0
- package/src/media/usage/extractor.ts +19 -2
- package/src/media/usage/types.ts +5 -1
- package/src/migrations/direct-executor.ts +42 -12
- package/src/migrations/protocol.ts +6 -2
- package/src/plugin-utils.ts +1 -1
- package/src/plugins/adapt-sandbox-entry.ts +16 -6
- package/src/plugins/context.ts +3 -7
- package/src/plugins/hooks.ts +1 -1
- package/src/plugins/http-route-dispatch.ts +5 -1
- package/src/plugins/manifest-schema.ts +1 -0
- package/src/plugins/route-error.ts +14 -0
- package/src/plugins/routes.ts +2 -2
- package/src/plugins/state.ts +41 -8
- package/src/plugins/types.ts +6 -0
- package/src/query.ts +59 -10
- package/src/redirects/cache.ts +34 -2
- package/src/redirects/patterns.ts +26 -2
- package/src/schema/block-values.ts +80 -17
- package/src/schema/registry.ts +16 -5
- package/src/schema/slug.ts +19 -0
- package/src/search/query.ts +3 -1
- package/src/search/text-extraction.ts +6 -1
- package/src/seed/apply.ts +32 -8
- package/src/seed/validate.ts +31 -0
- package/src/seo/sitemap-name.ts +22 -0
- package/src/settings/index.ts +20 -0
- package/src/settings/types.ts +2 -0
- package/src/storage/index.ts +2 -0
- package/src/storage/local.ts +10 -2
- package/src/storage/range.ts +54 -0
- package/src/storage/s3.ts +52 -8
- package/src/storage/types.ts +30 -3
- package/src/ui.ts +1 -0
- package/src/utils/slugify.ts +6 -1
- package/src/visual-editing/toolbar.ts +126 -47
- package/src/widgets/components.ts +4 -0
- package/src/widgets/index.ts +74 -82
- package/src/widgets/recent-posts.ts +62 -0
- package/dist/action-token-AgOs1UWD.mjs +0 -26
- package/dist/action-token-AgOs1UWD.mjs.map +0 -1
- package/dist/activation-xomsCMJg.mjs +0 -387
- package/dist/activation-xomsCMJg.mjs.map +0 -1
- package/dist/adapters-DM1oyHIN.d.mts +0 -173
- package/dist/adapters-DM1oyHIN.d.mts.map +0 -1
- package/dist/allowed-origins-CFtudhyw.mjs +0 -116
- package/dist/allowed-origins-CFtudhyw.mjs.map +0 -1
- package/dist/api-CltsXhiX.mjs +0 -4980
- package/dist/api-CltsXhiX.mjs.map +0 -1
- package/dist/api-tokens-P3mAaQgr.mjs +0 -166
- package/dist/api-tokens-P3mAaQgr.mjs.map +0 -1
- package/dist/apply-Q7uvzBWW.mjs +0 -1680
- package/dist/apply-Q7uvzBWW.mjs.map +0 -1
- package/dist/approvals-DycwI6lZ.mjs +0 -460
- package/dist/approvals-DycwI6lZ.mjs.map +0 -1
- package/dist/artifact-fetch-CWxyELVI.mjs +0 -659
- package/dist/artifact-fetch-CWxyELVI.mjs.map +0 -1
- package/dist/artifacts-UzWbysb8.mjs +0 -307
- package/dist/artifacts-UzWbysb8.mjs.map +0 -1
- package/dist/audit-CCH3MA4Y.mjs +0 -127
- package/dist/audit-CCH3MA4Y.mjs.map +0 -1
- package/dist/authoritative-records-dSvXCfzb.mjs +0 -5172
- package/dist/authoritative-records-dSvXCfzb.mjs.map +0 -1
- package/dist/authorize-DeWfk--K.mjs +0 -49
- package/dist/authorize-DeWfk--K.mjs.map +0 -1
- package/dist/backup-CFnbdTSJ.mjs +0 -246
- package/dist/backup-CFnbdTSJ.mjs.map +0 -1
- package/dist/block-types-C0YFSfR7.mjs +0 -132
- package/dist/block-types-C0YFSfR7.mjs.map +0 -1
- package/dist/block-values-H4E0XwE8.mjs +0 -175
- package/dist/block-values-H4E0XwE8.mjs.map +0 -1
- package/dist/byline-BhVslYLz.mjs +0 -909
- package/dist/byline-BhVslYLz.mjs.map +0 -1
- package/dist/byline-fields-DHJs0Mja.mjs +0 -280
- package/dist/byline-fields-DHJs0Mja.mjs.map +0 -1
- package/dist/byline-fields-xdxE9kxZ.mjs +0 -123
- package/dist/byline-fields-xdxE9kxZ.mjs.map +0 -1
- package/dist/bylines-B_nN9liM.mjs +0 -234
- package/dist/bylines-B_nN9liM.mjs.map +0 -1
- package/dist/bylines-C71YACkL.mjs +0 -150
- package/dist/bylines-C71YACkL.mjs.map +0 -1
- package/dist/cache-aTYCL9nK.mjs +0 -133
- package/dist/cache-aTYCL9nK.mjs.map +0 -1
- package/dist/canonical-Y1dpjCnp.mjs +0 -174
- package/dist/canonical-Y1dpjCnp.mjs.map +0 -1
- package/dist/capture-triggers-C9JKoIdT.mjs +0 -362
- package/dist/capture-triggers-C9JKoIdT.mjs.map +0 -1
- package/dist/challenge-store-CxZxPqaw.mjs +0 -51
- package/dist/challenge-store-CxZxPqaw.mjs.map +0 -1
- package/dist/checksum-DtH6m5uk.mjs +0 -162
- package/dist/checksum-DtH6m5uk.mjs.map +0 -1
- package/dist/chunks-zlGB5IQP.mjs +0 -25
- package/dist/chunks-zlGB5IQP.mjs.map +0 -1
- package/dist/collection-slugs-cache-B2Gs9Jwx.mjs +0 -85
- package/dist/collection-slugs-cache-B2Gs9Jwx.mjs.map +0 -1
- package/dist/comment-Bu08Wvr3.mjs +0 -313
- package/dist/comment-Bu08Wvr3.mjs.map +0 -1
- package/dist/comment-reaction-B8SfT-yM.mjs +0 -85
- package/dist/comment-reaction-B8SfT-yM.mjs.map +0 -1
- package/dist/comments-BRtp992B.mjs +0 -99
- package/dist/comments-BRtp992B.mjs.map +0 -1
- package/dist/comments-DVUYqdyC.mjs +0 -195
- package/dist/comments-DVUYqdyC.mjs.map +0 -1
- package/dist/components-CQY-Sgm-.mjs +0 -108
- package/dist/components-CQY-Sgm-.mjs.map +0 -1
- package/dist/config-B-uePMLj.d.mts +0 -39
- package/dist/config-B-uePMLj.d.mts.map +0 -1
- package/dist/config-B6BDSsz2.d.mts +0 -6712
- package/dist/config-B6BDSsz2.d.mts.map +0 -1
- package/dist/config-BsJHiQxC.mjs +0 -228
- package/dist/config-BsJHiQxC.mjs.map +0 -1
- package/dist/connection-B9pIasFd.mjs +0 -36
- package/dist/connection-B9pIasFd.mjs.map +0 -1
- package/dist/content-Dji9vEiW.mjs +0 -2063
- package/dist/content-Dji9vEiW.mjs.map +0 -1
- package/dist/content-list-query-DiNwyKtd.d.mts +0 -26
- package/dist/content-list-query-DiNwyKtd.d.mts.map +0 -1
- package/dist/content-repair-B7wnbzhN.mjs +0 -442
- package/dist/content-repair-B7wnbzhN.mjs.map +0 -1
- package/dist/context-Ctcxc8Ia.mjs +0 -2026
- package/dist/context-Ctcxc8Ia.mjs.map +0 -1
- package/dist/credits-Bu7dlobo.mjs +0 -110
- package/dist/credits-Bu7dlobo.mjs.map +0 -1
- package/dist/cron-xe5XKqA-.mjs +0 -306
- package/dist/cron-xe5XKqA-.mjs.map +0 -1
- package/dist/dashboard-B5hVHOtf.mjs +0 -151
- package/dist/dashboard-B5hVHOtf.mjs.map +0 -1
- package/dist/default-DaoYyFRS.mjs +0 -81
- package/dist/default-DaoYyFRS.mjs.map +0 -1
- package/dist/deferred-tasks-BYcDx2o_.d.mts +0 -9
- package/dist/deferred-tasks-BYcDx2o_.d.mts.map +0 -1
- package/dist/dev-typegen-Dtl8AfS6.mjs +0 -29
- package/dist/dev-typegen-Dtl8AfS6.mjs.map +0 -1
- package/dist/device-flow-Ma5P5d2e.mjs +0 -521
- package/dist/device-flow-Ma5P5d2e.mjs.map +0 -1
- package/dist/digest-xIpR3o64.mjs +0 -194
- package/dist/digest-xIpR3o64.mjs.map +0 -1
- package/dist/direct-executor-DMWwCey3.mjs +0 -104
- package/dist/direct-executor-DMWwCey3.mjs.map +0 -1
- package/dist/email-console-DmqVF5J_.mjs +0 -50
- package/dist/email-console-DmqVF5J_.mjs.map +0 -1
- package/dist/email-locale-Cc5YSXfJ.mjs +0 -25
- package/dist/email-locale-Cc5YSXfJ.mjs.map +0 -1
- package/dist/emdash-runtime-BlybX9Ui.mjs +0 -4249
- package/dist/emdash-runtime-BlybX9Ui.mjs.map +0 -1
- package/dist/entry-lock-De1L8qUQ.mjs +0 -163
- package/dist/entry-lock-De1L8qUQ.mjs.map +0 -1
- package/dist/entry-lock-esmMbgI9.d.mts +0 -4551
- package/dist/entry-lock-esmMbgI9.d.mts.map +0 -1
- package/dist/entry-lock-sxz2PGAT.mjs +0 -1197
- package/dist/entry-lock-sxz2PGAT.mjs.map +0 -1
- package/dist/env-types-BkjCtN13.mjs +0 -38
- package/dist/env-types-BkjCtN13.mjs.map +0 -1
- package/dist/error-B0rgPgsQ.mjs +0 -90
- package/dist/error-B0rgPgsQ.mjs.map +0 -1
- package/dist/errors-CuHQRiBW.mjs +0 -120
- package/dist/errors-CuHQRiBW.mjs.map +0 -1
- package/dist/errors-DTE6C3K_.mjs +0 -470
- package/dist/errors-DTE6C3K_.mjs.map +0 -1
- package/dist/escape-nJW7dR0s.mjs +0 -9
- package/dist/escape-nJW7dR0s.mjs.map +0 -1
- package/dist/fence-CGw57S4v.mjs +0 -162
- package/dist/fence-CGw57S4v.mjs.map +0 -1
- package/dist/field-defs-cache-Bw8w499w.mjs +0 -77
- package/dist/field-defs-cache-Bw8w499w.mjs.map +0 -1
- package/dist/field-map-hn-D-SyH.mjs +0 -83
- package/dist/field-map-hn-D-SyH.mjs.map +0 -1
- package/dist/fts-manager-DacCYIe4.mjs +0 -443
- package/dist/fts-manager-DacCYIe4.mjs.map +0 -1
- package/dist/gc-BBplHrv6.mjs +0 -75
- package/dist/gc-BBplHrv6.mjs.map +0 -1
- package/dist/hash-C4DFoJ7Z.mjs +0 -37
- package/dist/hash-C4DFoJ7Z.mjs.map +0 -1
- package/dist/hook-result-DSRRxu_-.d.mts +0 -31
- package/dist/hook-result-DSRRxu_-.d.mts.map +0 -1
- package/dist/hreflang-CKPunvU0.mjs +0 -105
- package/dist/hreflang-CKPunvU0.mjs.map +0 -1
- package/dist/hreflang-egumj6WF.d.mts +0 -50
- package/dist/hreflang-egumj6WF.d.mts.map +0 -1
- package/dist/http-route-dispatch-DjNFZcJ2.mjs +0 -339
- package/dist/http-route-dispatch-DjNFZcJ2.mjs.map +0 -1
- package/dist/identity-Dfrx2_Bc.mjs +0 -35
- package/dist/identity-Dfrx2_Bc.mjs.map +0 -1
- package/dist/import-ROBvhbNc.mjs +0 -2021
- package/dist/import-ROBvhbNc.mjs.map +0 -1
- package/dist/index-B4sIdCAT.d.mts +0 -623
- package/dist/index-B4sIdCAT.d.mts.map +0 -1
- package/dist/install-finalization-CPM7Gged.mjs +0 -58
- package/dist/install-finalization-CPM7Gged.mjs.map +0 -1
- package/dist/keys-DxqxcAD4.mjs +0 -61
- package/dist/keys-DxqxcAD4.mjs.map +0 -1
- package/dist/kinds-BQl5gN6e.mjs +0 -974
- package/dist/kinds-BQl5gN6e.mjs.map +0 -1
- package/dist/lifecycle-DGQI7itS.mjs +0 -25
- package/dist/lifecycle-DGQI7itS.mjs.map +0 -1
- package/dist/load-DMxRl4VK.mjs +0 -28
- package/dist/load-DMxRl4VK.mjs.map +0 -1
- package/dist/loader-1DMiOq5s.mjs +0 -1303
- package/dist/loader-1DMiOq5s.mjs.map +0 -1
- package/dist/loops-Dn1i16FP.mjs +0 -205
- package/dist/loops-Dn1i16FP.mjs.map +0 -1
- package/dist/manifest-builder-CTw4FmZk.mjs +0 -189
- package/dist/manifest-builder-CTw4FmZk.mjs.map +0 -1
- package/dist/manifest-schema-gy37bD_D.mjs +0 -496
- package/dist/manifest-schema-gy37bD_D.mjs.map +0 -1
- package/dist/marketplace-tHWSsCUo.mjs +0 -257
- package/dist/marketplace-tHWSsCUo.mjs.map +0 -1
- package/dist/media-Bw-Q65ve.mjs +0 -294
- package/dist/media-Bw-Q65ve.mjs.map +0 -1
- package/dist/media-BzUDu7nl.mjs +0 -373
- package/dist/media-BzUDu7nl.mjs.map +0 -1
- package/dist/media-aahnKHze.mjs +0 -408
- package/dist/media-aahnKHze.mjs.map +0 -1
- package/dist/media-allowlist-RMrjo8TU.mjs +0 -45
- package/dist/media-allowlist-RMrjo8TU.mjs.map +0 -1
- package/dist/media-folders-kabR1oJf.mjs +0 -210
- package/dist/media-folders-kabR1oJf.mjs.map +0 -1
- package/dist/media-url-DloW2xrP.mjs +0 -43
- package/dist/media-url-DloW2xrP.mjs.map +0 -1
- package/dist/media-usage-CHHpV7ee.mjs +0 -282
- package/dist/media-usage-CHHpV7ee.mjs.map +0 -1
- package/dist/media-usage-activation-BinYqC_r.mjs +0 -78
- package/dist/media-usage-activation-BinYqC_r.mjs.map +0 -1
- package/dist/media-usage-work-C734aq6s.mjs +0 -1015
- package/dist/media-usage-work-C734aq6s.mjs.map +0 -1
- package/dist/media-usage-work-lxvV0-UO.mjs +0 -151
- package/dist/media-usage-work-lxvV0-UO.mjs.map +0 -1
- package/dist/menus-6RHNq4ZK.mjs +0 -753
- package/dist/menus-6RHNq4ZK.mjs.map +0 -1
- package/dist/menus-AuCTaO9W.mjs +0 -3704
- package/dist/menus-AuCTaO9W.mjs.map +0 -1
- package/dist/menus-BQKqf0Up.mjs +0 -92
- package/dist/menus-BQKqf0Up.mjs.map +0 -1
- package/dist/mode-nh0ppSX5.mjs +0 -23
- package/dist/mode-nh0ppSX5.mjs.map +0 -1
- package/dist/node-sqlite-compat-CDOEcc97.mjs +0 -63
- package/dist/node-sqlite-compat-CDOEcc97.mjs.map +0 -1
- package/dist/oauth-authorization-BtYQ80uU.mjs +0 -274
- package/dist/oauth-authorization-BtYQ80uU.mjs.map +0 -1
- package/dist/oauth-clients-C1S4NQHh.mjs +0 -266
- package/dist/oauth-clients-C1S4NQHh.mjs.map +0 -1
- package/dist/oauth-state-store-CpGi2FZH.mjs +0 -50
- package/dist/oauth-state-store-CpGi2FZH.mjs.map +0 -1
- package/dist/oauth-user-lookup-BNp1aFAr.mjs +0 -26
- package/dist/oauth-user-lookup-BNp1aFAr.mjs.map +0 -1
- package/dist/options-B41aLm1I.d.mts +0 -81
- package/dist/options-B41aLm1I.d.mts.map +0 -1
- package/dist/ownership-DoeAIuTg.mjs +0 -12
- package/dist/ownership-DoeAIuTg.mjs.map +0 -1
- package/dist/parse-CmFDTGzp.mjs +0 -81
- package/dist/parse-CmFDTGzp.mjs.map +0 -1
- package/dist/parse-QVS0t5oR.d.mts +0 -172
- package/dist/parse-QVS0t5oR.d.mts.map +0 -1
- package/dist/passkey-config-C-MxsV22.mjs +0 -46
- package/dist/passkey-config-C-MxsV22.mjs.map +0 -1
- package/dist/paths-kr8hAMMI.mjs +0 -77
- package/dist/paths-kr8hAMMI.mjs.map +0 -1
- package/dist/patterns-DyZJ67I7.mjs +0 -140
- package/dist/patterns-DyZJ67I7.mjs.map +0 -1
- package/dist/placeholder-Dn7MMdWr.d.mts +0 -306
- package/dist/placeholder-Dn7MMdWr.d.mts.map +0 -1
- package/dist/plan-CuQOeU9g.mjs +0 -135
- package/dist/plan-CuQOeU9g.mjs.map +0 -1
- package/dist/plugins-CGb-G98c.mjs +0 -261
- package/dist/plugins-CGb-G98c.mjs.map +0 -1
- package/dist/policy-C5wrDXYV.mjs +0 -45
- package/dist/policy-C5wrDXYV.mjs.map +0 -1
- package/dist/portable-text-BnRuiR1-.mjs +0 -307
- package/dist/portable-text-BnRuiR1-.mjs.map +0 -1
- package/dist/preview-xWNSR1Li.mjs +0 -107
- package/dist/preview-xWNSR1Li.mjs.map +0 -1
- package/dist/protocol-ClxN-m1e.d.mts +0 -61
- package/dist/protocol-ClxN-m1e.d.mts.map +0 -1
- package/dist/public-submission-CkmT2SKv.mjs +0 -250
- package/dist/public-submission-CkmT2SKv.mjs.map +0 -1
- package/dist/public-url-B5a0QAh6.mjs +0 -101
- package/dist/public-url-B5a0QAh6.mjs.map +0 -1
- package/dist/query-DHqFiqqH.mjs +0 -41
- package/dist/query-DHqFiqqH.mjs.map +0 -1
- package/dist/query-DT85BehD.mjs +0 -1125
- package/dist/query-DT85BehD.mjs.map +0 -1
- package/dist/rate-limit-iMvcu3eu.mjs +0 -120
- package/dist/rate-limit-iMvcu3eu.mjs.map +0 -1
- package/dist/receipt-Dpp1uaX9.mjs +0 -43
- package/dist/receipt-Dpp1uaX9.mjs.map +0 -1
- package/dist/redirect-BRoLiWQE.mjs +0 -19
- package/dist/redirect-BRoLiWQE.mjs.map +0 -1
- package/dist/redirect-xZNpBoGp.mjs +0 -417
- package/dist/redirect-xZNpBoGp.mjs.map +0 -1
- package/dist/redirects-D4EWeXAo.mjs +0 -148
- package/dist/redirects-D4EWeXAo.mjs.map +0 -1
- package/dist/redirects-DCKqwiWp.mjs +0 -446
- package/dist/redirects-DCKqwiWp.mjs.map +0 -1
- package/dist/registry-DaXmUsD4.mjs +0 -8369
- package/dist/registry-DaXmUsD4.mjs.map +0 -1
- package/dist/relations-JvBP8nGP.mjs +0 -776
- package/dist/relations-JvBP8nGP.mjs.map +0 -1
- package/dist/request-meta-B6blULFY.mjs +0 -141
- package/dist/request-meta-B6blULFY.mjs.map +0 -1
- package/dist/resolve-DAhHi5tn.mjs +0 -100
- package/dist/resolve-DAhHi5tn.mjs.map +0 -1
- package/dist/revision-BWEH2qQB.mjs +0 -368
- package/dist/revision-BWEH2qQB.mjs.map +0 -1
- package/dist/route-wire-DK600v4u.mjs +0 -197
- package/dist/route-wire-DK600v4u.mjs.map +0 -1
- package/dist/routes-BeZyaCzv.mjs +0 -272
- package/dist/routes-BeZyaCzv.mjs.map +0 -1
- package/dist/runner-CskI4Hmq.mjs +0 -6372
- package/dist/runner-CskI4Hmq.mjs.map +0 -1
- package/dist/runner-J3Cj6DGk.d.mts +0 -68
- package/dist/runner-J3Cj6DGk.d.mts.map +0 -1
- package/dist/schema-CK0ihqMR.mjs +0 -815
- package/dist/schema-CK0ihqMR.mjs.map +0 -1
- package/dist/schema-VtaZSrC-.mjs +0 -13
- package/dist/schema-VtaZSrC-.mjs.map +0 -1
- package/dist/scopes-BRnGlL9t.mjs +0 -34
- package/dist/scopes-BRnGlL9t.mjs.map +0 -1
- package/dist/search-D6-XK1Sn.mjs +0 -448
- package/dist/search-D6-XK1Sn.mjs.map +0 -1
- package/dist/sections-CBDCf7qR.mjs +0 -346
- package/dist/sections-CBDCf7qR.mjs.map +0 -1
- package/dist/seo-BdeEPDNW.mjs +0 -133
- package/dist/seo-BdeEPDNW.mjs.map +0 -1
- package/dist/seo-C61bnPuV.mjs +0 -114
- package/dist/seo-C61bnPuV.mjs.map +0 -1
- package/dist/service-BuRKLMxa.mjs +0 -150
- package/dist/service-BuRKLMxa.mjs.map +0 -1
- package/dist/session-user-CqkPtrPL.mjs +0 -61
- package/dist/session-user-CqkPtrPL.mjs.map +0 -1
- package/dist/settings-0u0lTthS.mjs +0 -51
- package/dist/settings-0u0lTthS.mjs.map +0 -1
- package/dist/settings-WHr45II1.mjs +0 -61
- package/dist/settings-WHr45II1.mjs.map +0 -1
- package/dist/settings-m5tIYnF0.mjs +0 -443
- package/dist/settings-m5tIYnF0.mjs.map +0 -1
- package/dist/setup-complete-B2_dhZZz.mjs +0 -65
- package/dist/setup-complete-B2_dhZZz.mjs.map +0 -1
- package/dist/setup-nonce-CJV9ftSK.mjs +0 -25
- package/dist/setup-nonce-CJV9ftSK.mjs.map +0 -1
- package/dist/site-settings-KJOqJW6W.mjs +0 -50
- package/dist/site-settings-KJOqJW6W.mjs.map +0 -1
- package/dist/site-url-Ceq_AUK0.mjs +0 -16
- package/dist/site-url-Ceq_AUK0.mjs.map +0 -1
- package/dist/slugify-T5GHH42D.mjs +0 -17
- package/dist/slugify-T5GHH42D.mjs.map +0 -1
- package/dist/snapshot-Dzsn3NZa.mjs +0 -414
- package/dist/snapshot-Dzsn3NZa.mjs.map +0 -1
- package/dist/ssrf-DsmvZB80.mjs +0 -406
- package/dist/ssrf-DsmvZB80.mjs.map +0 -1
- package/dist/stage-Csnh_yEd.mjs +0 -662
- package/dist/stage-Csnh_yEd.mjs.map +0 -1
- package/dist/staged-Q7pnEVvI.mjs +0 -686
- package/dist/staged-Q7pnEVvI.mjs.map +0 -1
- package/dist/state-kGdOMQRY.mjs +0 -153
- package/dist/state-kGdOMQRY.mjs.map +0 -1
- package/dist/status-D39Fpy8R.mjs +0 -30
- package/dist/status-D39Fpy8R.mjs.map +0 -1
- package/dist/storage-query-C7iy6eUb.d.mts +0 -1615
- package/dist/storage-query-C7iy6eUb.d.mts.map +0 -1
- package/dist/tar-BWiraSUY.mjs +0 -449
- package/dist/tar-BWiraSUY.mjs.map +0 -1
- package/dist/target-DOFs5oUC.mjs +0 -27
- package/dist/target-DOFs5oUC.mjs.map +0 -1
- package/dist/taxonomies-BS40Wxvi.mjs +0 -939
- package/dist/taxonomies-BS40Wxvi.mjs.map +0 -1
- package/dist/taxonomies-DAZU9VDd.mjs +0 -697
- package/dist/taxonomies-DAZU9VDd.mjs.map +0 -1
- package/dist/taxonomy-XzLE95Vx.mjs +0 -525
- package/dist/taxonomy-XzLE95Vx.mjs.map +0 -1
- package/dist/tokens-DSQan4p7.mjs +0 -171
- package/dist/tokens-DSQan4p7.mjs.map +0 -1
- package/dist/transfer-BcCVxDgf.mjs +0 -166
- package/dist/transfer-BcCVxDgf.mjs.map +0 -1
- package/dist/transfer-OMrancOt.mjs +0 -8873
- package/dist/transfer-OMrancOt.mjs.map +0 -1
- package/dist/transfer-download-Dc-ltjZY.mjs +0 -33
- package/dist/transfer-download-Dc-ltjZY.mjs.map +0 -1
- package/dist/transformations-Ddx7UtrY.mjs +0 -196
- package/dist/transformations-Ddx7UtrY.mjs.map +0 -1
- package/dist/transport-flR-Zmds.d.mts +0 -42
- package/dist/transport-flR-Zmds.d.mts.map +0 -1
- package/dist/transport-umzEbgYO.mjs +0 -136
- package/dist/transport-umzEbgYO.mjs.map +0 -1
- package/dist/trusted-proxy-BqfQFs6a.mjs +0 -51
- package/dist/trusted-proxy-BqfQFs6a.mjs.map +0 -1
- package/dist/turnstile-Do60baId.mjs +0 -58
- package/dist/turnstile-Do60baId.mjs.map +0 -1
- package/dist/types-BT1p3uyb.d.mts +0 -1735
- package/dist/types-BT1p3uyb.d.mts.map +0 -1
- package/dist/types-BYaPWs_F.d.mts +0 -198
- package/dist/types-BYaPWs_F.d.mts.map +0 -1
- package/dist/types-C-Xp0CcN.mjs +0 -103
- package/dist/types-C-Xp0CcN.mjs.map +0 -1
- package/dist/types-CLTQ9b_r.d.mts +0 -374
- package/dist/types-CLTQ9b_r.d.mts.map +0 -1
- package/dist/types-CPkQw2T2.d.mts +0 -85
- package/dist/types-CPkQw2T2.d.mts.map +0 -1
- package/dist/types-CQLvuXoZ.d.mts +0 -198
- package/dist/types-CQLvuXoZ.d.mts.map +0 -1
- package/dist/types-CV5xszpF.d.mts +0 -363
- package/dist/types-CV5xszpF.d.mts.map +0 -1
- package/dist/types-CdEMurNh.mjs +0 -77
- package/dist/types-CdEMurNh.mjs.map +0 -1
- package/dist/types-CxwtnuSS.mjs +0 -37
- package/dist/types-CxwtnuSS.mjs.map +0 -1
- package/dist/types-DGw8KMX_.mjs +0 -16
- package/dist/types-DGw8KMX_.mjs.map +0 -1
- package/dist/types-DOfVMPoo.d.mts +0 -125
- package/dist/types-DOfVMPoo.d.mts.map +0 -1
- package/dist/types-LtS0SM4F.d.mts +0 -287
- package/dist/types-LtS0SM4F.d.mts.map +0 -1
- package/dist/types-ifgOkcBa.d.mts +0 -916
- package/dist/types-ifgOkcBa.d.mts.map +0 -1
- package/dist/update-check-DOc2aBIU.mjs +0 -161
- package/dist/update-check-DOc2aBIU.mjs.map +0 -1
- package/dist/upload-attempts-nzdc3cay.mjs +0 -32
- package/dist/upload-attempts-nzdc3cay.mjs.map +0 -1
- package/dist/url-pattern-hVbqpXs6.mjs +0 -41
- package/dist/url-pattern-hVbqpXs6.mjs.map +0 -1
- package/dist/user-Dnp53zTq.mjs +0 -171
- package/dist/user-Dnp53zTq.mjs.map +0 -1
- package/dist/utils-CoV-PYhg.mjs +0 -439
- package/dist/utils-CoV-PYhg.mjs.map +0 -1
- package/dist/validate-CfQ9_YlD.d.mts +0 -468
- package/dist/validate-CfQ9_YlD.d.mts.map +0 -1
- package/dist/validate-DBX3DKtL.mjs +0 -516
- package/dist/validate-DBX3DKtL.mjs.map +0 -1
- package/dist/validation-BJMiDhB1.mjs +0 -219
- package/dist/validation-BJMiDhB1.mjs.map +0 -1
- package/dist/version-BaT8yKIT.mjs +0 -7
- package/dist/version-BaT8yKIT.mjs.map +0 -1
- package/dist/version-BwEGkqkx.mjs +0 -9
- package/dist/version-BwEGkqkx.mjs.map +0 -1
- package/dist/virtual-modules-B6vJW15k.mjs +0 -516
- package/dist/virtual-modules-B6vJW15k.mjs.map +0 -1
- package/dist/widgets-BkxBAgZ_.mjs +0 -126
- package/dist/widgets-BkxBAgZ_.mjs.map +0 -1
- package/dist/wxr-taxonomies-D7gAJyOF.mjs +0 -453
- package/dist/wxr-taxonomies-D7gAJyOF.mjs.map +0 -1
- package/dist/wxr-taxonomies-DM5J9AsT.d.mts +0 -34
- package/dist/wxr-taxonomies-DM5J9AsT.d.mts.map +0 -1
- package/dist/zod-generator-BQilAboC.mjs +0 -424
- package/dist/zod-generator-BQilAboC.mjs.map +0 -1
- /package/dist/{api-tokens-BLz2MtQs.mjs → api-tokens-CdP49zVF.mjs} +0 -0
- /package/dist/{ssrf-tA45vIPX.mjs → ssrf-DM0E-D_8.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/transfer/format/digest.ts","../../src/transfer/format/plan.ts","../../src/transfer/format/receipt.ts","../../src/transfer/errors.ts","../../src/transfer/ops/states.ts","../../src/transfer/ops/operations.ts","../../src/client/portable-text.ts","../../src/client/index.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/transfer/format/digest.ts","../../src/transfer/format/plan.ts","../../src/transfer/format/receipt.ts","../../src/transfer/errors.ts","../../src/transfer/ops/states.ts","../../src/transfer/ops/operations.ts","../../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-BH4zgkSm.mjs";
|
|
2
|
+
import { a as tokenInterceptor, i as refreshInterceptor, n as csrfInterceptor, r as devBypassInterceptor, t as createTransport } from "../transport-BjbqNiPI.mjs";
|
|
3
3
|
import mime from "mime/lite";
|
|
4
4
|
|
|
5
5
|
//#region src/client/index.ts
|
|
@@ -84,10 +84,11 @@ var EmDashClient = class {
|
|
|
84
84
|
/** Get a single collection with its fields */
|
|
85
85
|
async collection(slug) {
|
|
86
86
|
const col = (await this.request("GET", `/schema/collections/${encodeURIComponent(slug)}?includeFields=true`)).item;
|
|
87
|
-
if (col.fields) this.fieldSchemaCache.set(slug, col.fields.map((
|
|
88
|
-
slug:
|
|
89
|
-
type:
|
|
90
|
-
blockTypes:
|
|
87
|
+
if (col.fields) this.fieldSchemaCache.set(slug, col.fields.map((field) => ({
|
|
88
|
+
slug: field.slug,
|
|
89
|
+
type: field.type,
|
|
90
|
+
blockTypes: field.blockTypes,
|
|
91
|
+
validation: field.validation
|
|
91
92
|
})));
|
|
92
93
|
return col;
|
|
93
94
|
}
|
|
@@ -614,10 +615,11 @@ var EmDashClient = class {
|
|
|
614
615
|
let cached = this.fieldSchemaCache.get(collection);
|
|
615
616
|
if (cached) return cached;
|
|
616
617
|
try {
|
|
617
|
-
cached = (await this.collection(collection)).fields.map((
|
|
618
|
-
slug:
|
|
619
|
-
type:
|
|
620
|
-
blockTypes:
|
|
618
|
+
cached = (await this.collection(collection)).fields.map((field) => ({
|
|
619
|
+
slug: field.slug,
|
|
620
|
+
type: field.type,
|
|
621
|
+
blockTypes: field.blockTypes,
|
|
622
|
+
validation: field.validation
|
|
621
623
|
}));
|
|
622
624
|
this.fieldSchemaCache.set(collection, cached);
|
|
623
625
|
return cached;
|
|
@@ -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 {\n\tBlockType,\n\tCreateBlockTypeInput,\n\tUpdateBlockTypeInput,\n} from \"../schema/block-types.js\";\nimport type { Sha256Digest } from \"../transfer/format/digest.js\";\nimport type { SiteImportDecisionsInput, SiteImportPlan } from \"../transfer/format/plan.js\";\nimport type { SiteImportReceipt } from \"../transfer/format/receipt.js\";\nimport type { PublicTransferOperation } from \"../transfer/ops/operations.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 = /\\/$/;\nconst DECIMAL_PATTERN = /^\\d+$/;\nconst SHA256_ETAG_PATTERN = /^\"([0-9a-f]{64})\"$/;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction mimeFromFilename(filename: string): string {\n\treturn mime.getType(filename) ?? \"application/octet-stream\";\n}\n\nfunction idempotencyHeader(request: { idempotencyKey?: string }): Record<string, string> {\n\treturn request.idempotencyKey === undefined ? {} : { \"Idempotency-Key\": request.idempotencyKey };\n}\n\nfunction pageQuery(options?: { limit?: number; cursor?: string }): string {\n\tconst params = new URLSearchParams();\n\tif (options?.limit !== undefined) params.set(\"limit\", String(options.limit));\n\tif (options?.cursor !== undefined) params.set(\"cursor\", options.cursor);\n\tconst qs = params.toString();\n\treturn qs ? `?${qs}` : \"\";\n}\n\n/** Encode a site package path (`records/post/000000.ndjson`) segment by segment */\nfunction encodePackagePath(path: string): string {\n\treturn path.split(\"/\").map(encodeURIComponent).join(\"/\");\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\tblockTypes?: BlockType[];\n\tblockTypeFingerprint?: string;\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/** A site setting that selects a media item */\nexport interface MediaUsageSiteSettingDetail {\n\tsetting: \"logo\" | \"favicon\" | \"seo.defaultOgImage\";\n}\n\n/** Entry-grouped media usage details */\nexport interface MediaUsageDetailsResponse {\n\titems: MediaUsageEntryDetail[];\n\tnextCursor?: string;\n\tsiteSettings: MediaUsageSiteSettingDetail[];\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/** User as listed by the admin users API */\nexport interface UserSummary {\n\tid: string;\n\temail: string;\n\tname: string | null;\n\trole: number;\n\tdisabled: boolean;\n}\n\n/** A site transfer operation (export or import) */\nexport type TransferOperation = PublicTransferOperation;\n\n/** Site transfer capabilities of an instance */\nexport interface TransferCapabilities {\n\tformatVersions: string[];\n\tfeatures: string[];\n\toptionalFeatures: string[];\n\tlimits: {\n\t\tmanifestBytes: number;\n\t\trecordLineBytes: number;\n\t\tchunkBytes: number;\n\t\tchunkRecords: number;\n\t\ttotalRecords: number;\n\t\ttotalFiles: number;\n\t\tindexChunks: number;\n\t\tjsonDepth: number;\n\t\tmaxBlobBytes: number;\n\t};\n\tportableDomain: {\n\t\tempty: boolean;\n\t\tblockers: Array<Record<string, string>>;\n\t\tseededScaffold: Array<Record<string, string>>;\n\t};\n}\n\n/** Result of one bounded `advance` step */\nexport interface TransferAdvanceResult {\n\toperation: TransferOperation;\n\t/** Milliseconds until the next step should be requested, or null once the operation has ended. */\n\tnextRequestInMs: number | null;\n}\n\n/** A package file the import has declared but not yet received */\nexport interface TransferPackageFile {\n\tpath: string;\n\tbytes: number;\n\tsha256: string;\n}\n\nexport interface TransferImportCreateResult {\n\toperation: TransferOperation;\n\tcreated: boolean;\n\tmissing: ListResult<TransferPackageFile>;\n}\n\nexport interface TransferFileUploadResult {\n\tpath: string;\n\tbytes: number;\n\t/** True when the file was already stored and the uploaded bytes matched it. */\n\talreadyVerified: boolean;\n\t/** Declared files still to upload. */\n\tremaining: number;\n}\n\nexport interface TransferImportAnalyzeResult {\n\toperation: TransferOperation;\n\tplan?: SiteImportPlan;\n\tplanDigest?: Sha256Digest;\n\t/** Milliseconds until the next step should be requested, or null once analysis has ended. */\n\tnextRequestInMs: number | null;\n}\n\nexport interface TransferImportStatus {\n\toperation: TransferOperation;\n\tfiles: { declared: number; verified: number };\n}\n\n/** A downloaded export file, streamed */\nexport interface TransferFileDownload {\n\tbody: ReadableStream<Uint8Array>;\n\t/** Size from `Content-Length`, when sent */\n\tbytes: number | null;\n\t/** Hex SHA-256 from the `ETag`, when sent */\n\tsha256: string | null;\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, blockTypes: f.blockTypes })),\n\t\t\t);\n\t\t}\n\t\treturn col;\n\t}\n\n\tasync blockTypes(): Promise<BlockType[]> {\n\t\tconst data = await this.request<{ items: BlockType[] }>(\"GET\", \"/schema/block-types\");\n\t\treturn data.items;\n\t}\n\n\tasync blockType(slug: string): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\n\t\t\t\"GET\",\n\t\t\t`/schema/block-types/${encodeURIComponent(slug)}`,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\tasync createBlockType(input: CreateBlockTypeInput): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\"POST\", \"/schema/block-types\", input);\n\t\treturn data.item;\n\t}\n\n\tasync updateBlockType(slug: string, input: UpdateBlockTypeInput): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\n\t\t\t\"PUT\",\n\t\t\t`/schema/block-types/${encodeURIComponent(slug)}`,\n\t\t\tinput,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\tasync activateBlockTypeVersion(\n\t\tslug: string,\n\t\tversion: number,\n\t\texpectedFingerprint: string,\n\t): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\n\t\t\t\"POST\",\n\t\t\t`/schema/block-types/${encodeURIComponent(slug)}/versions/${version}/activate`,\n\t\t\t{ expectedFingerprint },\n\t\t);\n\t\treturn data.item;\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\tmigrateBlocks?: boolean;\n\t\t\treplaceBlocks?: boolean;\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\tmigrateBlocks?: boolean;\n\t\t\treplaceBlocks?: boolean;\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\tmigrateBlocks: input.migrateBlocks,\n\t\t\treplaceBlocks: input.replaceBlocks,\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/**\n\t * List terms in a taxonomy. Visible-usage counts are included by default.\n\t * Pass `includeCounts: false` to skip the aggregate; `count` is then omitted\n\t * from each term.\n\t */\n\tasync terms(\n\t\ttaxonomy: string,\n\t\toptions?: { limit?: number; cursor?: string; includeCounts?: boolean },\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\t\tif (options?.includeCounts !== undefined)\n\t\t\tparams.set(\"includeCounts\", String(options.includeCounts));\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// Users\n\t// -----------------------------------------------------------------------\n\n\t/** List users (admin only) */\n\tasync users(options?: {\n\t\tsearch?: string;\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<ListResult<UserSummary>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.search) params.set(\"search\", options.search);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\t\tconst qs = params.toString();\n\t\treturn this.request<ListResult<UserSummary>>(\"GET\", `/admin/users${qs ? `?${qs}` : \"\"}`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Site transfer\n\t// -----------------------------------------------------------------------\n\n\t/** Formats, features, limits, and whether this site can receive an import */\n\tasync transferCapabilities(): Promise<TransferCapabilities> {\n\t\treturn this.request<TransferCapabilities>(\"GET\", \"/admin/transfer/capabilities\");\n\t}\n\n\t/**\n\t * Start a site export. With an idempotency key, repeating the call returns\n\t * the export first created with that key.\n\t */\n\tasync transferExportCreate(\n\t\toptions: { comments?: boolean } = {},\n\t\trequest: { idempotencyKey?: string } = {},\n\t): Promise<{ operation: TransferOperation; created: boolean }> {\n\t\treturn this.request(\"POST\", \"/admin/transfer/exports\", options, idempotencyHeader(request));\n\t}\n\n\t/** List exports, newest first */\n\tasync transferExportList(options?: {\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<ListResult<TransferOperation>> {\n\t\treturn this.request(\"GET\", `/admin/transfer/exports${pageQuery(options)}`);\n\t}\n\n\tasync transferExportGet(id: string): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"GET\", `/admin/transfer/exports/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Run one bounded export step */\n\tasync transferExportAdvance(id: string): Promise<TransferAdvanceResult> {\n\t\treturn this.request(\"POST\", `/admin/transfer/exports/${encodeURIComponent(id)}/advance`);\n\t}\n\n\t/** The complete export's `manifest.json`, byte for byte */\n\tasync transferExportManifest(id: string): Promise<Uint8Array> {\n\t\tconst response = await this.requestRaw(\n\t\t\t\"GET\",\n\t\t\t`/admin/transfer/exports/${encodeURIComponent(id)}/manifest`,\n\t\t);\n\t\tawait this.assertOk(response);\n\t\treturn new Uint8Array(await response.arrayBuffer());\n\t}\n\n\t/**\n\t * Stream one file of a complete export. The server ends the stream with an\n\t * error if the stored bytes no longer match the export, so callers must\n\t * still check the size and digest of what they receive.\n\t */\n\tasync transferExportFile(id: string, path: string): Promise<TransferFileDownload> {\n\t\tconst response = await this.requestRaw(\n\t\t\t\"GET\",\n\t\t\t`/admin/transfer/exports/${encodeURIComponent(id)}/files/${encodePackagePath(path)}`,\n\t\t);\n\t\tawait this.assertOk(response);\n\t\tif (!response.body) throw new EmDashClientError(`Empty response for ${path}`);\n\t\tconst length = response.headers.get(\"Content-Length\");\n\t\tconst etag = response.headers.get(\"ETag\");\n\t\treturn {\n\t\t\tbody: response.body,\n\t\t\tbytes: length !== null && DECIMAL_PATTERN.test(length) ? Number(length) : null,\n\t\t\tsha256: etag ? (SHA256_ETAG_PATTERN.exec(etag)?.[1] ?? null) : null,\n\t\t};\n\t}\n\n\t/**\n\t * Create an import from a package's `manifest.json` bytes. With an\n\t * idempotency key, repeating the call with the same manifest returns the\n\t * import first created with that key.\n\t */\n\tasync transferImportCreate(\n\t\tmanifest: Uint8Array,\n\t\trequest: { idempotencyKey?: string } = {},\n\t): Promise<TransferImportCreateResult> {\n\t\tconst response = await this.send(\"POST\", \"/admin/transfer/imports\", {\n\t\t\tbody: manifest,\n\t\t\theaders: { \"Content-Type\": \"application/json\", ...idempotencyHeader(request) },\n\t\t});\n\t\tawait this.assertOk(response);\n\t\tconst json = (await response.json()) as { data: TransferImportCreateResult };\n\t\treturn json.data;\n\t}\n\n\t/** List imports, newest first */\n\tasync transferImportList(options?: {\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<ListResult<TransferOperation>> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports${pageQuery(options)}`);\n\t}\n\n\tasync transferImportGet(id: string): Promise<TransferImportStatus> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Declared package files not uploaded yet, in path order */\n\tasync transferImportMissing(\n\t\tid: string,\n\t\toptions?: { limit?: number; cursor?: string },\n\t): Promise<ListResult<TransferPackageFile>> {\n\t\treturn this.request(\n\t\t\t\"GET\",\n\t\t\t`/admin/transfer/imports/${encodeURIComponent(id)}/missing${pageQuery(options)}`,\n\t\t);\n\t}\n\n\t/**\n\t * Upload one declared package file. `bytes` must be the file's exact size;\n\t * a stream body is sent with that `Content-Length`.\n\t */\n\tasync transferImportUploadFile(\n\t\tid: string,\n\t\tpath: string,\n\t\tbody: Uint8Array | ReadableStream<Uint8Array>,\n\t\tbytes: number,\n\t): Promise<TransferFileUploadResult> {\n\t\tconst response = await this.send(\n\t\t\t\"PUT\",\n\t\t\t`/admin/transfer/imports/${encodeURIComponent(id)}/files/${encodePackagePath(path)}`,\n\t\t\t{\n\t\t\t\tbody,\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/octet-stream\",\n\t\t\t\t\t\"Content-Length\": String(bytes),\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\tawait this.assertOk(response);\n\t\tconst json = (await response.json()) as { data: TransferFileUploadResult };\n\t\treturn json.data;\n\t}\n\n\t/**\n\t * Run one bounded analysis step. Once the import is planned the result\n\t * carries the plan; `decisions` are then applied, producing a new plan\n\t * digest.\n\t */\n\tasync transferImportAnalyze(\n\t\tid: string,\n\t\tdecisions?: SiteImportDecisionsInput,\n\t): Promise<TransferImportAnalyzeResult> {\n\t\treturn this.request(\n\t\t\t\"POST\",\n\t\t\t`/admin/transfer/imports/${encodeURIComponent(id)}/analyze`,\n\t\t\tdecisions === undefined ? undefined : { decisions },\n\t\t);\n\t}\n\n\tasync transferImportPlan(\n\t\tid: string,\n\t): Promise<{ plan: SiteImportPlan; planDigest: Sha256Digest }> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports/${encodeURIComponent(id)}/plan`);\n\t}\n\n\t/** Start a planned import. Both digests must match the reviewed package and plan. */\n\tasync transferImportExecute(\n\t\tid: string,\n\t\tinput: { packageDigest: string; planDigest: string },\n\t): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/execute`, {\n\t\t\tpackageDigest: input.packageDigest,\n\t\t\tplanDigest: input.planDigest,\n\t\t});\n\t}\n\n\t/** Run one bounded step of an executing import */\n\tasync transferImportAdvance(id: string): Promise<TransferAdvanceResult> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/advance`);\n\t}\n\n\tasync transferImportReceipt(id: string): Promise<{ receipt: SiteImportReceipt }> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports/${encodeURIComponent(id)}/receipt`);\n\t}\n\n\t/**\n\t * Cancel an import. An idle import is cancelled at once; a step in\n\t * progress stops after its current batch, so the returned operation may\n\t * still be executing with `cancelRequestedAt` set.\n\t */\n\tasync transferImportCancel(id: string): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/cancel`);\n\t}\n\n\t/**\n\t * Abandon a failed or cancelled import, lifting the site write fence it\n\t * holds. Data the import already wrote stays in place.\n\t */\n\tasync transferImportAbandon(id: string): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/abandon`);\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>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\textraHeaders?: Record<string, string>,\n\t): Promise<T> {\n\t\tconst response = await this.requestRaw(method, path, body, extraHeaders);\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(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\textraHeaders?: Record<string, string>,\n\t): Promise<Response> {\n\t\tconst headers: Record<string, string> = { ...extraHeaders };\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\treturn this.send(method, path, { body: requestBody, headers });\n\t}\n\n\t/** Send a request with an arbitrary body; the caller handles the response */\n\tprivate async send(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tinit: {\n\t\t\tbody?: string | Uint8Array | ReadableStream<Uint8Array>;\n\t\t\theaders?: Record<string, string>;\n\t\t},\n\t): Promise<Response> {\n\t\tconst url = `${this.baseUrl}/_emdash/api${path}`;\n\t\tconst request = new Request(url, {\n\t\t\tmethod,\n\t\t\theaders: { Accept: \"application/json\", ...init.headers },\n\t\t\tbody: init.body as BodyInit | undefined,\n\t\t\t...(init.body instanceof ReadableStream ? { duplex: \"half\" } : {}),\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, blockTypes: f.blockTypes }));\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\nexport type { SiteImportDecisionsInput, SiteImportPlan, SiteImportReceipt, Sha256Digest };\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 {\n\tBlockType,\n\tCreateBlockTypeInput,\n\tUpdateBlockTypeInput,\n} from \"../schema/block-types.js\";\nimport type { Sha256Digest } from \"../transfer/format/digest.js\";\nimport type { SiteImportDecisionsInput, SiteImportPlan } from \"../transfer/format/plan.js\";\nimport type { SiteImportReceipt } from \"../transfer/format/receipt.js\";\nimport type { PublicTransferOperation } from \"../transfer/ops/operations.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 = /\\/$/;\nconst DECIMAL_PATTERN = /^\\d+$/;\nconst SHA256_ETAG_PATTERN = /^\"([0-9a-f]{64})\"$/;\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction mimeFromFilename(filename: string): string {\n\treturn mime.getType(filename) ?? \"application/octet-stream\";\n}\n\nfunction idempotencyHeader(request: { idempotencyKey?: string }): Record<string, string> {\n\treturn request.idempotencyKey === undefined ? {} : { \"Idempotency-Key\": request.idempotencyKey };\n}\n\nfunction pageQuery(options?: { limit?: number; cursor?: string }): string {\n\tconst params = new URLSearchParams();\n\tif (options?.limit !== undefined) params.set(\"limit\", String(options.limit));\n\tif (options?.cursor !== undefined) params.set(\"cursor\", options.cursor);\n\tconst qs = params.toString();\n\treturn qs ? `?${qs}` : \"\";\n}\n\n/** Encode a site package path (`records/post/000000.ndjson`) segment by segment */\nfunction encodePackagePath(path: string): string {\n\treturn path.split(\"/\").map(encodeURIComponent).join(\"/\");\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\tblockTypes?: BlockType[];\n\tblockTypeFingerprint?: string;\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:\n\t\t| \"image_field\"\n\t\t| \"file_field\"\n\t\t| \"portable_text_image\"\n\t\t| \"portable_text_video\"\n\t\t| \"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/** A site setting that selects a media item */\nexport interface MediaUsageSiteSettingDetail {\n\tsetting: \"logo\" | \"favicon\" | \"seo.defaultOgImage\";\n}\n\n/** Entry-grouped media usage details */\nexport interface MediaUsageDetailsResponse {\n\titems: MediaUsageEntryDetail[];\n\tnextCursor?: string;\n\tsiteSettings: MediaUsageSiteSettingDetail[];\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/** User as listed by the admin users API */\nexport interface UserSummary {\n\tid: string;\n\temail: string;\n\tname: string | null;\n\trole: number;\n\tdisabled: boolean;\n}\n\n/** A site transfer operation (export or import) */\nexport type TransferOperation = PublicTransferOperation;\n\n/** Site transfer capabilities of an instance */\nexport interface TransferCapabilities {\n\tformatVersions: string[];\n\tfeatures: string[];\n\toptionalFeatures: string[];\n\tlimits: {\n\t\tmanifestBytes: number;\n\t\trecordLineBytes: number;\n\t\tchunkBytes: number;\n\t\tchunkRecords: number;\n\t\ttotalRecords: number;\n\t\ttotalFiles: number;\n\t\tindexChunks: number;\n\t\tjsonDepth: number;\n\t\tmaxBlobBytes: number;\n\t};\n\tportableDomain: {\n\t\tempty: boolean;\n\t\tblockers: Array<Record<string, string>>;\n\t\tseededScaffold: Array<Record<string, string>>;\n\t};\n}\n\n/** Result of one bounded `advance` step */\nexport interface TransferAdvanceResult {\n\toperation: TransferOperation;\n\t/** Milliseconds until the next step should be requested, or null once the operation has ended. */\n\tnextRequestInMs: number | null;\n}\n\n/** A package file the import has declared but not yet received */\nexport interface TransferPackageFile {\n\tpath: string;\n\tbytes: number;\n\tsha256: string;\n}\n\nexport interface TransferImportCreateResult {\n\toperation: TransferOperation;\n\tcreated: boolean;\n\tmissing: ListResult<TransferPackageFile>;\n}\n\nexport interface TransferFileUploadResult {\n\tpath: string;\n\tbytes: number;\n\t/** True when the file was already stored and the uploaded bytes matched it. */\n\talreadyVerified: boolean;\n\t/** Declared files still to upload. */\n\tremaining: number;\n}\n\nexport interface TransferImportAnalyzeResult {\n\toperation: TransferOperation;\n\tplan?: SiteImportPlan;\n\tplanDigest?: Sha256Digest;\n\t/** Milliseconds until the next step should be requested, or null once analysis has ended. */\n\tnextRequestInMs: number | null;\n}\n\nexport interface TransferImportStatus {\n\toperation: TransferOperation;\n\tfiles: { declared: number; verified: number };\n}\n\n/** A downloaded export file, streamed */\nexport interface TransferFileDownload {\n\tbody: ReadableStream<Uint8Array>;\n\t/** Size from `Content-Length`, when sent */\n\tbytes: number | null;\n\t/** Hex SHA-256 from the `ETag`, when sent */\n\tsha256: string | null;\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((field) => ({\n\t\t\t\t\tslug: field.slug,\n\t\t\t\t\ttype: field.type,\n\t\t\t\t\tblockTypes: field.blockTypes,\n\t\t\t\t\tvalidation: field.validation,\n\t\t\t\t})),\n\t\t\t);\n\t\t}\n\t\treturn col;\n\t}\n\n\tasync blockTypes(): Promise<BlockType[]> {\n\t\tconst data = await this.request<{ items: BlockType[] }>(\"GET\", \"/schema/block-types\");\n\t\treturn data.items;\n\t}\n\n\tasync blockType(slug: string): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\n\t\t\t\"GET\",\n\t\t\t`/schema/block-types/${encodeURIComponent(slug)}`,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\tasync createBlockType(input: CreateBlockTypeInput): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\"POST\", \"/schema/block-types\", input);\n\t\treturn data.item;\n\t}\n\n\tasync updateBlockType(slug: string, input: UpdateBlockTypeInput): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\n\t\t\t\"PUT\",\n\t\t\t`/schema/block-types/${encodeURIComponent(slug)}`,\n\t\t\tinput,\n\t\t);\n\t\treturn data.item;\n\t}\n\n\tasync activateBlockTypeVersion(\n\t\tslug: string,\n\t\tversion: number,\n\t\texpectedFingerprint: string,\n\t): Promise<BlockType> {\n\t\tconst data = await this.request<{ item: BlockType }>(\n\t\t\t\"POST\",\n\t\t\t`/schema/block-types/${encodeURIComponent(slug)}/versions/${version}/activate`,\n\t\t\t{ expectedFingerprint },\n\t\t);\n\t\treturn data.item;\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\tmigrateBlocks?: boolean;\n\t\t\treplaceBlocks?: boolean;\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\tmigrateBlocks?: boolean;\n\t\t\treplaceBlocks?: boolean;\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\tmigrateBlocks: input.migrateBlocks,\n\t\t\treplaceBlocks: input.replaceBlocks,\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/**\n\t * List terms in a taxonomy. Visible-usage counts are included by default.\n\t * Pass `includeCounts: false` to skip the aggregate; `count` is then omitted\n\t * from each term.\n\t */\n\tasync terms(\n\t\ttaxonomy: string,\n\t\toptions?: { limit?: number; cursor?: string; includeCounts?: boolean },\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\t\tif (options?.includeCounts !== undefined)\n\t\t\tparams.set(\"includeCounts\", String(options.includeCounts));\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// Users\n\t// -----------------------------------------------------------------------\n\n\t/** List users (admin only) */\n\tasync users(options?: {\n\t\tsearch?: string;\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<ListResult<UserSummary>> {\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.search) params.set(\"search\", options.search);\n\t\tif (options?.limit) params.set(\"limit\", String(options.limit));\n\t\tif (options?.cursor) params.set(\"cursor\", options.cursor);\n\t\tconst qs = params.toString();\n\t\treturn this.request<ListResult<UserSummary>>(\"GET\", `/admin/users${qs ? `?${qs}` : \"\"}`);\n\t}\n\n\t// -----------------------------------------------------------------------\n\t// Site transfer\n\t// -----------------------------------------------------------------------\n\n\t/** Formats, features, limits, and whether this site can receive an import */\n\tasync transferCapabilities(): Promise<TransferCapabilities> {\n\t\treturn this.request<TransferCapabilities>(\"GET\", \"/admin/transfer/capabilities\");\n\t}\n\n\t/**\n\t * Start a site export. With an idempotency key, repeating the call returns\n\t * the export first created with that key.\n\t */\n\tasync transferExportCreate(\n\t\toptions: { comments?: boolean } = {},\n\t\trequest: { idempotencyKey?: string } = {},\n\t): Promise<{ operation: TransferOperation; created: boolean }> {\n\t\treturn this.request(\"POST\", \"/admin/transfer/exports\", options, idempotencyHeader(request));\n\t}\n\n\t/** List exports, newest first */\n\tasync transferExportList(options?: {\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<ListResult<TransferOperation>> {\n\t\treturn this.request(\"GET\", `/admin/transfer/exports${pageQuery(options)}`);\n\t}\n\n\tasync transferExportGet(id: string): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"GET\", `/admin/transfer/exports/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Run one bounded export step */\n\tasync transferExportAdvance(id: string): Promise<TransferAdvanceResult> {\n\t\treturn this.request(\"POST\", `/admin/transfer/exports/${encodeURIComponent(id)}/advance`);\n\t}\n\n\t/** The complete export's `manifest.json`, byte for byte */\n\tasync transferExportManifest(id: string): Promise<Uint8Array> {\n\t\tconst response = await this.requestRaw(\n\t\t\t\"GET\",\n\t\t\t`/admin/transfer/exports/${encodeURIComponent(id)}/manifest`,\n\t\t);\n\t\tawait this.assertOk(response);\n\t\treturn new Uint8Array(await response.arrayBuffer());\n\t}\n\n\t/**\n\t * Stream one file of a complete export. The server ends the stream with an\n\t * error if the stored bytes no longer match the export, so callers must\n\t * still check the size and digest of what they receive.\n\t */\n\tasync transferExportFile(id: string, path: string): Promise<TransferFileDownload> {\n\t\tconst response = await this.requestRaw(\n\t\t\t\"GET\",\n\t\t\t`/admin/transfer/exports/${encodeURIComponent(id)}/files/${encodePackagePath(path)}`,\n\t\t);\n\t\tawait this.assertOk(response);\n\t\tif (!response.body) throw new EmDashClientError(`Empty response for ${path}`);\n\t\tconst length = response.headers.get(\"Content-Length\");\n\t\tconst etag = response.headers.get(\"ETag\");\n\t\treturn {\n\t\t\tbody: response.body,\n\t\t\tbytes: length !== null && DECIMAL_PATTERN.test(length) ? Number(length) : null,\n\t\t\tsha256: etag ? (SHA256_ETAG_PATTERN.exec(etag)?.[1] ?? null) : null,\n\t\t};\n\t}\n\n\t/**\n\t * Create an import from a package's `manifest.json` bytes. With an\n\t * idempotency key, repeating the call with the same manifest returns the\n\t * import first created with that key.\n\t */\n\tasync transferImportCreate(\n\t\tmanifest: Uint8Array,\n\t\trequest: { idempotencyKey?: string } = {},\n\t): Promise<TransferImportCreateResult> {\n\t\tconst response = await this.send(\"POST\", \"/admin/transfer/imports\", {\n\t\t\tbody: manifest,\n\t\t\theaders: { \"Content-Type\": \"application/json\", ...idempotencyHeader(request) },\n\t\t});\n\t\tawait this.assertOk(response);\n\t\tconst json = (await response.json()) as { data: TransferImportCreateResult };\n\t\treturn json.data;\n\t}\n\n\t/** List imports, newest first */\n\tasync transferImportList(options?: {\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}): Promise<ListResult<TransferOperation>> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports${pageQuery(options)}`);\n\t}\n\n\tasync transferImportGet(id: string): Promise<TransferImportStatus> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports/${encodeURIComponent(id)}`);\n\t}\n\n\t/** Declared package files not uploaded yet, in path order */\n\tasync transferImportMissing(\n\t\tid: string,\n\t\toptions?: { limit?: number; cursor?: string },\n\t): Promise<ListResult<TransferPackageFile>> {\n\t\treturn this.request(\n\t\t\t\"GET\",\n\t\t\t`/admin/transfer/imports/${encodeURIComponent(id)}/missing${pageQuery(options)}`,\n\t\t);\n\t}\n\n\t/**\n\t * Upload one declared package file. `bytes` must be the file's exact size;\n\t * a stream body is sent with that `Content-Length`.\n\t */\n\tasync transferImportUploadFile(\n\t\tid: string,\n\t\tpath: string,\n\t\tbody: Uint8Array | ReadableStream<Uint8Array>,\n\t\tbytes: number,\n\t): Promise<TransferFileUploadResult> {\n\t\tconst response = await this.send(\n\t\t\t\"PUT\",\n\t\t\t`/admin/transfer/imports/${encodeURIComponent(id)}/files/${encodePackagePath(path)}`,\n\t\t\t{\n\t\t\t\tbody,\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/octet-stream\",\n\t\t\t\t\t\"Content-Length\": String(bytes),\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\tawait this.assertOk(response);\n\t\tconst json = (await response.json()) as { data: TransferFileUploadResult };\n\t\treturn json.data;\n\t}\n\n\t/**\n\t * Run one bounded analysis step. Once the import is planned the result\n\t * carries the plan; `decisions` are then applied, producing a new plan\n\t * digest.\n\t */\n\tasync transferImportAnalyze(\n\t\tid: string,\n\t\tdecisions?: SiteImportDecisionsInput,\n\t): Promise<TransferImportAnalyzeResult> {\n\t\treturn this.request(\n\t\t\t\"POST\",\n\t\t\t`/admin/transfer/imports/${encodeURIComponent(id)}/analyze`,\n\t\t\tdecisions === undefined ? undefined : { decisions },\n\t\t);\n\t}\n\n\tasync transferImportPlan(\n\t\tid: string,\n\t): Promise<{ plan: SiteImportPlan; planDigest: Sha256Digest }> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports/${encodeURIComponent(id)}/plan`);\n\t}\n\n\t/** Start a planned import. Both digests must match the reviewed package and plan. */\n\tasync transferImportExecute(\n\t\tid: string,\n\t\tinput: { packageDigest: string; planDigest: string },\n\t): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/execute`, {\n\t\t\tpackageDigest: input.packageDigest,\n\t\t\tplanDigest: input.planDigest,\n\t\t});\n\t}\n\n\t/** Run one bounded step of an executing import */\n\tasync transferImportAdvance(id: string): Promise<TransferAdvanceResult> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/advance`);\n\t}\n\n\tasync transferImportReceipt(id: string): Promise<{ receipt: SiteImportReceipt }> {\n\t\treturn this.request(\"GET\", `/admin/transfer/imports/${encodeURIComponent(id)}/receipt`);\n\t}\n\n\t/**\n\t * Cancel an import. An idle import is cancelled at once; a step in\n\t * progress stops after its current batch, so the returned operation may\n\t * still be executing with `cancelRequestedAt` set.\n\t */\n\tasync transferImportCancel(id: string): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/cancel`);\n\t}\n\n\t/**\n\t * Abandon a failed or cancelled import, lifting the site write fence it\n\t * holds. Data the import already wrote stays in place.\n\t */\n\tasync transferImportAbandon(id: string): Promise<{ operation: TransferOperation }> {\n\t\treturn this.request(\"POST\", `/admin/transfer/imports/${encodeURIComponent(id)}/abandon`);\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>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\textraHeaders?: Record<string, string>,\n\t): Promise<T> {\n\t\tconst response = await this.requestRaw(method, path, body, extraHeaders);\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(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\textraHeaders?: Record<string, string>,\n\t): Promise<Response> {\n\t\tconst headers: Record<string, string> = { ...extraHeaders };\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\treturn this.send(method, path, { body: requestBody, headers });\n\t}\n\n\t/** Send a request with an arbitrary body; the caller handles the response */\n\tprivate async send(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tinit: {\n\t\t\tbody?: string | Uint8Array | ReadableStream<Uint8Array>;\n\t\t\theaders?: Record<string, string>;\n\t\t},\n\t): Promise<Response> {\n\t\tconst url = `${this.baseUrl}/_emdash/api${path}`;\n\t\tconst request = new Request(url, {\n\t\t\tmethod,\n\t\t\theaders: { Accept: \"application/json\", ...init.headers },\n\t\t\tbody: init.body as BodyInit | undefined,\n\t\t\t...(init.body instanceof ReadableStream ? { duplex: \"half\" } : {}),\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((field) => ({\n\t\t\t\tslug: field.slug,\n\t\t\t\ttype: field.type,\n\t\t\t\tblockTypes: field.blockTypes,\n\t\t\t\tvalidation: field.validation,\n\t\t\t}));\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\nexport type { SiteImportDecisionsInput, SiteImportPlan, SiteImportReceipt, Sha256Digest };\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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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getRequestContext } from "./request-context.mjs";
|
|
2
|
+
import { r as requestCached } from "./request-cache-C4CIo5ad.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/schema/collection-slugs-cache.ts
|
|
5
|
+
const HOLDER_KEY = Symbol.for("emdash:collection-slugs");
|
|
6
|
+
const g = globalThis;
|
|
7
|
+
const holder = g[HOLDER_KEY] ?? (() => {
|
|
8
|
+
const h = {
|
|
9
|
+
promise: null,
|
|
10
|
+
fetchedAt: 0
|
|
11
|
+
};
|
|
12
|
+
g[HOLDER_KEY] = h;
|
|
13
|
+
return h;
|
|
14
|
+
})();
|
|
15
|
+
const REVALIDATE_WINDOW_MS = 6e4;
|
|
16
|
+
let revalidateWindowMs = REVALIDATE_WINDOW_MS;
|
|
17
|
+
async function fetchSlugs(db) {
|
|
18
|
+
const rows = await db.selectFrom("_emdash_collections").select("slug").execute();
|
|
19
|
+
return new Set(rows.map((row) => row.slug));
|
|
20
|
+
}
|
|
21
|
+
function loadSlugs(db) {
|
|
22
|
+
if (holder.promise) return holder.promise;
|
|
23
|
+
const promise = fetchSlugs(db).catch((error) => {
|
|
24
|
+
if (holder.promise === promise) holder.promise = null;
|
|
25
|
+
throw error;
|
|
26
|
+
});
|
|
27
|
+
holder.promise = promise;
|
|
28
|
+
holder.fetchedAt = Date.now();
|
|
29
|
+
return promise;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Keep only the collections that have a `_emdash_collections` row, i.e. whose
|
|
33
|
+
* `ec_*` table the registry has created. When the filter would drop a
|
|
34
|
+
* collection and the cached set is older than the revalidation window, the
|
|
35
|
+
* set is re-fetched once so a collection created by another isolate becomes
|
|
36
|
+
* visible without waiting for an isolate recycle.
|
|
37
|
+
*/
|
|
38
|
+
async function filterToRegisteredCollections(db, collections) {
|
|
39
|
+
if (collections.length === 0) return [];
|
|
40
|
+
if (getRequestContext()?.dbIsIsolated === true) {
|
|
41
|
+
const slugs = await requestCached("collection-slugs", () => fetchSlugs(db));
|
|
42
|
+
return collections.filter((slug) => slugs.has(slug));
|
|
43
|
+
}
|
|
44
|
+
let slugs = await loadSlugs(db);
|
|
45
|
+
let present = collections.filter((slug) => slugs.has(slug));
|
|
46
|
+
if (present.length < collections.length && Date.now() - holder.fetchedAt > revalidateWindowMs) {
|
|
47
|
+
holder.promise = null;
|
|
48
|
+
slugs = await loadSlugs(db);
|
|
49
|
+
present = collections.filter((slug) => slugs.has(slug));
|
|
50
|
+
}
|
|
51
|
+
return present;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Seed the cache with slugs an init-time read already fetched, so the first
|
|
55
|
+
* render on a cold isolate pays no extra query. Called by the runtime's
|
|
56
|
+
* auto-seed gate.
|
|
57
|
+
*/
|
|
58
|
+
function primeRegisteredCollections(slugs) {
|
|
59
|
+
holder.promise = Promise.resolve(new Set(slugs));
|
|
60
|
+
holder.fetchedAt = Date.now();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Drop the cached slug set so the next reader re-fetches. Called from every
|
|
64
|
+
* schema-mutation path (`invalidateUrlPatternCache`, `SchemaRegistry`
|
|
65
|
+
* create/delete). Other isolates converge through bounded revalidation.
|
|
66
|
+
*/
|
|
67
|
+
function resetRegisteredCollectionsCache() {
|
|
68
|
+
holder.promise = null;
|
|
69
|
+
holder.fetchedAt = 0;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Note that a query hit a missing `ec_*` table despite the slug filter: the
|
|
73
|
+
* cached set is stale (the collection was deleted on another isolate) or the
|
|
74
|
+
* registry has drifted from the physical schema. Drops the cached set at most
|
|
75
|
+
* once per revalidation window, so the delete case converges like the create
|
|
76
|
+
* case while genuine drift costs one slug re-fetch per window instead of one
|
|
77
|
+
* per render.
|
|
78
|
+
*/
|
|
79
|
+
function noteStaleRegisteredCollections() {
|
|
80
|
+
if (Date.now() - holder.fetchedAt > revalidateWindowMs) resetRegisteredCollectionsCache();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
export { resetRegisteredCollectionsCache as i, noteStaleRegisteredCollections as n, primeRegisteredCollections as r, filterToRegisteredCollections as t };
|
|
85
|
+
//# sourceMappingURL=collection-slugs-cache-e09QeJQt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-slugs-cache-e09QeJQt.mjs","names":[],"sources":["../src/schema/collection-slugs-cache.ts"],"sourcesContent":["/**\n * Per-isolate cache of registered collection slugs (`_emdash_collections`).\n *\n * Term counting scopes its per-collection UNION to a taxonomy's declared\n * collections, but a declared collection is not necessarily a created one:\n * the migration-seeded defaults declare `posts` whether or not that\n * collection ever exists. Querying optimistically and catching the\n * missing-table error keeps results correct, yet the failed statement itself\n * is logged by the database — on D1 it surfaces as a `no such table` error\n * span per taxonomy per uncached render. Filtering declared collections\n * against the registry up front means the failing statement is never sent.\n *\n * Stored on globalThis behind a Symbol key (same pattern as the taxonomy-defs\n * cache in `taxonomies/index.ts`) so bundler chunk duplication cannot produce\n * two independent caches. The promise is cached, so concurrent cold readers\n * share one in-flight query; a rejection evicts the entry.\n *\n * Freshness:\n * - Primed for free at isolate boot: runtime init's auto-seed gate already\n * reads `_emdash_collections` and hands the slugs to\n * `primeRegisteredCollections`, so cold isolates pay no extra query.\n * - Every schema-mutation path resets it: `invalidateUrlPatternCache()`\n * (admin API, MCP, WordPress import, seed application) and\n * `SchemaRegistry.createCollection`/`deleteCollection` for direct callers.\n * - Creations on *other* isolates surface through bounded revalidation: the\n * set is re-fetched only when the filter would actually drop a declared\n * collection and the cached copy is older than the revalidation window.\n * Sites whose declared collections all exist — the steady state — never\n * revalidate; a site with a genuinely absent collection pays one slug read\n * per window instead of one failing statement per render, and a collection\n * created elsewhere starts counting within the window.\n *\n * Isolated databases bypass the cache (playground / DO preview requests set\n * `requestContext.dbIsIsolated`): they point at a divergent schema, so the\n * slug set is fetched per request instead, deduped by the request cache.\n */\n\nimport type { Kysely } from \"kysely\";\n\nimport type { Database } from \"../database/types.js\";\nimport { requestCached } from \"../request-cache.js\";\nimport { getRequestContext } from \"../request-context.js\";\n\ninterface SlugsHolder {\n\tpromise: Promise<Set<string>> | null;\n\t/** When the cached promise was created; gates bounded revalidation. */\n\tfetchedAt: number;\n}\n\nconst HOLDER_KEY = Symbol.for(\"emdash:collection-slugs\");\nconst g = globalThis as Record<symbol, unknown>;\nconst holder: SlugsHolder =\n\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- globalThis singleton pattern (see request-cache.ts)\n\t(g[HOLDER_KEY] as SlugsHolder | undefined) ??\n\t(() => {\n\t\tconst h: SlugsHolder = { promise: null, fetchedAt: 0 };\n\t\tg[HOLDER_KEY] = h;\n\t\treturn h;\n\t})();\n\nconst REVALIDATE_WINDOW_MS = 60_000;\nlet revalidateWindowMs = REVALIDATE_WINDOW_MS;\n\nasync function fetchSlugs(db: Kysely<Database>): Promise<Set<string>> {\n\tconst rows = await db.selectFrom(\"_emdash_collections\").select(\"slug\").execute();\n\treturn new Set(rows.map((row) => row.slug));\n}\n\nfunction loadSlugs(db: Kysely<Database>): Promise<Set<string>> {\n\tif (holder.promise) return holder.promise;\n\tconst promise = fetchSlugs(db).catch((error: unknown) => {\n\t\tif (holder.promise === promise) holder.promise = null;\n\t\tthrow error;\n\t});\n\tholder.promise = promise;\n\tholder.fetchedAt = Date.now();\n\treturn promise;\n}\n\n/**\n * Keep only the collections that have a `_emdash_collections` row, i.e. whose\n * `ec_*` table the registry has created. When the filter would drop a\n * collection and the cached set is older than the revalidation window, the\n * set is re-fetched once so a collection created by another isolate becomes\n * visible without waiting for an isolate recycle.\n */\nexport async function filterToRegisteredCollections(\n\tdb: Kysely<Database>,\n\tcollections: readonly string[],\n): Promise<string[]> {\n\tif (collections.length === 0) return [];\n\tif (getRequestContext()?.dbIsIsolated === true) {\n\t\tconst slugs = await requestCached(\"collection-slugs\", () => fetchSlugs(db));\n\t\treturn collections.filter((slug) => slugs.has(slug));\n\t}\n\tlet slugs = await loadSlugs(db);\n\tlet present = collections.filter((slug) => slugs.has(slug));\n\tif (present.length < collections.length && Date.now() - holder.fetchedAt > revalidateWindowMs) {\n\t\tholder.promise = null;\n\t\tslugs = await loadSlugs(db);\n\t\tpresent = collections.filter((slug) => slugs.has(slug));\n\t}\n\treturn present;\n}\n\n/**\n * Seed the cache with slugs an init-time read already fetched, so the first\n * render on a cold isolate pays no extra query. Called by the runtime's\n * auto-seed gate.\n */\nexport function primeRegisteredCollections(slugs: readonly string[]): void {\n\tholder.promise = Promise.resolve(new Set(slugs));\n\tholder.fetchedAt = Date.now();\n}\n\n/**\n * Drop the cached slug set so the next reader re-fetches. Called from every\n * schema-mutation path (`invalidateUrlPatternCache`, `SchemaRegistry`\n * create/delete). Other isolates converge through bounded revalidation.\n */\nexport function resetRegisteredCollectionsCache(): void {\n\tholder.promise = null;\n\tholder.fetchedAt = 0;\n}\n\n/**\n * Note that a query hit a missing `ec_*` table despite the slug filter: the\n * cached set is stale (the collection was deleted on another isolate) or the\n * registry has drifted from the physical schema. Drops the cached set at most\n * once per revalidation window, so the delete case converges like the create\n * case while genuine drift costs one slug re-fetch per window instead of one\n * per render.\n */\nexport function noteStaleRegisteredCollections(): void {\n\tif (Date.now() - holder.fetchedAt > revalidateWindowMs) {\n\t\tresetRegisteredCollectionsCache();\n\t}\n}\n\n/**\n * Test/internal helper: reset the cache and restore the production\n * revalidation window.\n */\nexport function resetRegisteredCollectionsCacheForTests(): void {\n\tresetRegisteredCollectionsCache();\n\trevalidateWindowMs = REVALIDATE_WINDOW_MS;\n}\n\n/**\n * Test-only: shorten the revalidation window so the cross-isolate refresh\n * path can be exercised without waiting out the production window.\n *\n * @internal\n */\nexport function setRegisteredCollectionsRevalidateWindowForTests(ms: number): void {\n\trevalidateWindowMs = ms;\n}\n"],"mappings":";;;;AAiDA,MAAM,aAAa,OAAO,IAAI,0BAA0B;AACxD,MAAM,IAAI;AACV,MAAM,SAEJ,EAAE,sBACI;CACN,MAAM,IAAiB;EAAE,SAAS;EAAM,WAAW;EAAG;AACtD,GAAE,cAAc;AAChB,QAAO;IACJ;AAEL,MAAM,uBAAuB;AAC7B,IAAI,qBAAqB;AAEzB,eAAe,WAAW,IAA4C;CACrE,MAAM,OAAO,MAAM,GAAG,WAAW,sBAAsB,CAAC,OAAO,OAAO,CAAC,SAAS;AAChF,QAAO,IAAI,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC;;AAG5C,SAAS,UAAU,IAA4C;AAC9D,KAAI,OAAO,QAAS,QAAO,OAAO;CAClC,MAAM,UAAU,WAAW,GAAG,CAAC,OAAO,UAAmB;AACxD,MAAI,OAAO,YAAY,QAAS,QAAO,UAAU;AACjD,QAAM;GACL;AACF,QAAO,UAAU;AACjB,QAAO,YAAY,KAAK,KAAK;AAC7B,QAAO;;;;;;;;;AAUR,eAAsB,8BACrB,IACA,aACoB;AACpB,KAAI,YAAY,WAAW,EAAG,QAAO,EAAE;AACvC,KAAI,mBAAmB,EAAE,iBAAiB,MAAM;EAC/C,MAAM,QAAQ,MAAM,cAAc,0BAA0B,WAAW,GAAG,CAAC;AAC3E,SAAO,YAAY,QAAQ,SAAS,MAAM,IAAI,KAAK,CAAC;;CAErD,IAAI,QAAQ,MAAM,UAAU,GAAG;CAC/B,IAAI,UAAU,YAAY,QAAQ,SAAS,MAAM,IAAI,KAAK,CAAC;AAC3D,KAAI,QAAQ,SAAS,YAAY,UAAU,KAAK,KAAK,GAAG,OAAO,YAAY,oBAAoB;AAC9F,SAAO,UAAU;AACjB,UAAQ,MAAM,UAAU,GAAG;AAC3B,YAAU,YAAY,QAAQ,SAAS,MAAM,IAAI,KAAK,CAAC;;AAExD,QAAO;;;;;;;AAQR,SAAgB,2BAA2B,OAAgC;AAC1E,QAAO,UAAU,QAAQ,QAAQ,IAAI,IAAI,MAAM,CAAC;AAChD,QAAO,YAAY,KAAK,KAAK;;;;;;;AAQ9B,SAAgB,kCAAwC;AACvD,QAAO,UAAU;AACjB,QAAO,YAAY;;;;;;;;;;AAWpB,SAAgB,iCAAuC;AACtD,KAAI,KAAK,KAAK,GAAG,OAAO,YAAY,mBACnC,kCAAiC"}
|