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
|
@@ -5,94 +5,95 @@ import "../../../../../../../after-PcEvMY_6.mjs";
|
|
|
5
5
|
import "../../../../../../../options-DhrI7eMv.mjs";
|
|
6
6
|
import "../../../../../../../secrets-Cc_O3Kp-.mjs";
|
|
7
7
|
import "../../../../../../../base64-BQBZwXCx.mjs";
|
|
8
|
-
import "../../../../../../../content-
|
|
8
|
+
import "../../../../../../../content-DQSRZTVw.mjs";
|
|
9
9
|
import "../../../../../../../object-cache-Bo6DGaC9.mjs";
|
|
10
|
-
import "../../../../../../../slugify-
|
|
10
|
+
import "../../../../../../../slugify-bu2-jKia.mjs";
|
|
11
11
|
import "../../../../../../../request-cache-C4CIo5ad.mjs";
|
|
12
12
|
import "../../../../../../../url-Dn3IStq8.mjs";
|
|
13
|
-
import "../../../../../../../types-
|
|
14
|
-
import "../../../../../../../revision-
|
|
15
|
-
import "../../../../../../../media-
|
|
16
|
-
import "../../../../../../../user-
|
|
17
|
-
import "../../../../../../../taxonomy-
|
|
18
|
-
import "../../../../../../../comment-
|
|
19
|
-
import "../../../../../../../context-
|
|
20
|
-
import "../../../../../../../menus-
|
|
13
|
+
import "../../../../../../../types-D2NEXtgB.mjs";
|
|
14
|
+
import "../../../../../../../revision-BVp8S0e_.mjs";
|
|
15
|
+
import "../../../../../../../media-Bws9f18T.mjs";
|
|
16
|
+
import "../../../../../../../user-BlCTKVAm.mjs";
|
|
17
|
+
import "../../../../../../../taxonomy-C_C_LBAU.mjs";
|
|
18
|
+
import "../../../../../../../comment-UvIWDKcW.mjs";
|
|
19
|
+
import "../../../../../../../context-BYptmCN0.mjs";
|
|
20
|
+
import "../../../../../../../menus-BCVSSp1z.mjs";
|
|
21
21
|
import "../../../../../../../resolve-D-kqyKns.mjs";
|
|
22
|
-
import "../../../../../../../redirect-
|
|
22
|
+
import "../../../../../../../redirect-DiS_3mA4.mjs";
|
|
23
23
|
import "../../../../../../../byline-registry-dvt4N3xV.mjs";
|
|
24
|
-
import "../../../../../../../field-defs-cache-
|
|
25
|
-
import "../../../../../../../byline-
|
|
26
|
-
import "../../../../../../../staged-
|
|
24
|
+
import "../../../../../../../field-defs-cache-Dez5iWJJ.mjs";
|
|
25
|
+
import "../../../../../../../byline-BR1qhyiw.mjs";
|
|
26
|
+
import "../../../../../../../staged-CD_imitH.mjs";
|
|
27
27
|
import "../../../../../../../dist-Cfu8mMBs.mjs";
|
|
28
28
|
import "../../../../../../../enrich-Duu4sV3a.mjs";
|
|
29
29
|
import "../../../../../../../entry-locks-DJAqVweV.mjs";
|
|
30
|
-
import "../../../../../../../seo-
|
|
31
|
-
import "../../../../../../../cache-
|
|
32
|
-
import "../../../../../../../artifacts-
|
|
33
|
-
import "../../../../../../../fts-manager-
|
|
34
|
-
import "../../../../../../../loader-
|
|
35
|
-
import "../../../../../../../
|
|
36
|
-
import "../../../../../../../
|
|
37
|
-
import
|
|
38
|
-
import "../../../../../../../
|
|
39
|
-
import "../../../../../../../
|
|
40
|
-
import "../../../../../../../
|
|
41
|
-
import "../../../../../../../
|
|
42
|
-
import "../../../../../../../
|
|
43
|
-
import "../../../../../../../
|
|
44
|
-
import "../../../../../../../
|
|
45
|
-
import "../../../../../../../
|
|
46
|
-
import "../../../../../../../
|
|
47
|
-
import "../../../../../../../
|
|
48
|
-
import "../../../../../../../
|
|
49
|
-
import "../../../../../../../
|
|
50
|
-
import "../../../../../../../
|
|
51
|
-
import "../../../../../../../
|
|
52
|
-
import
|
|
53
|
-
import {
|
|
54
|
-
import "../../../../../../../
|
|
55
|
-
import "../../../../../../../
|
|
56
|
-
import "../../../../../../../
|
|
57
|
-
import "../../../../../../../media
|
|
58
|
-
import "../../../../../../../
|
|
59
|
-
import "../../../../../../../
|
|
60
|
-
import "../../../../../../../
|
|
61
|
-
import "../../../../../../../
|
|
62
|
-
import "../../../../../../../media-usage-
|
|
63
|
-
import "../../../../../../../media-usage-
|
|
64
|
-
import "../../../../../../../
|
|
65
|
-
import "../../../../../../../
|
|
66
|
-
import "../../../../../../../
|
|
67
|
-
import
|
|
68
|
-
import "../../../../../../../
|
|
69
|
-
import "../../../../../../../
|
|
70
|
-
import "../../../../../../../
|
|
71
|
-
import "../../../../../../../
|
|
72
|
-
import "../../../../../../../
|
|
73
|
-
import "../../../../../../../
|
|
74
|
-
import "../../../../../../../
|
|
75
|
-
import "../../../../../../../
|
|
76
|
-
import "../../../../../../../
|
|
77
|
-
import "../../../../../../../
|
|
78
|
-
import
|
|
79
|
-
import
|
|
80
|
-
import "../../../../../../../
|
|
81
|
-
import "../../../../../../../
|
|
82
|
-
import "../../../../../../../
|
|
83
|
-
import "../../../../../../../
|
|
84
|
-
import "../../../../../../../
|
|
85
|
-
import "../../../../../../../
|
|
86
|
-
import "../../../../../../../
|
|
87
|
-
import "../../../../../../../
|
|
88
|
-
import "../../../../../../../
|
|
89
|
-
import "../../../../../../../
|
|
90
|
-
import "../../../../../../../
|
|
91
|
-
import
|
|
92
|
-
import "../../../../../../../
|
|
93
|
-
import
|
|
94
|
-
import { i as
|
|
95
|
-
import {
|
|
30
|
+
import "../../../../../../../seo-VZYOEy8f.mjs";
|
|
31
|
+
import "../../../../../../../cache-CEU9wo_h.mjs";
|
|
32
|
+
import "../../../../../../../artifacts-htGyfCSt.mjs";
|
|
33
|
+
import "../../../../../../../fts-manager-Beg3e4bI.mjs";
|
|
34
|
+
import "../../../../../../../loader-CswroUbe.mjs";
|
|
35
|
+
import "../../../../../../../json-recordset-BUjxhr77.mjs";
|
|
36
|
+
import "../../../../../../../collection-slugs-cache-e09QeJQt.mjs";
|
|
37
|
+
import "../../../../../../../taxonomies-ChnU7Mc8.mjs";
|
|
38
|
+
import { m as rollbackPluginUpdate, r as handleRegistryUpdate } from "../../../../../../../api-D-7BNHoz.mjs";
|
|
39
|
+
import "../../../../../../../media-usage-work-CkLa5-nc.mjs";
|
|
40
|
+
import "../../../../../../../capture-triggers-CT6dK9zd.mjs";
|
|
41
|
+
import "../../../../../../../activation-Dim4YMM7.mjs";
|
|
42
|
+
import "../../../../../../../registry-TUVaid9Z.mjs";
|
|
43
|
+
import "../../../../../../../hash-BJaeek87.mjs";
|
|
44
|
+
import "../../../../../../../zod-generator-D0JKy94C.mjs";
|
|
45
|
+
import "../../../../../../../errors-B4f4It-2.mjs";
|
|
46
|
+
import "../../../../../../../canonical-BudtH-Fx.mjs";
|
|
47
|
+
import "../../../../../../../digest-DJ1tHCgy.mjs";
|
|
48
|
+
import "../../../../../../../block-values-gCX4HBSl.mjs";
|
|
49
|
+
import "../../../../../../../query-haKvLAWl.mjs";
|
|
50
|
+
import "../../../../../../../schema-C4OBuv6Z.mjs";
|
|
51
|
+
import "../../../../../../../relations-CA_QuMTU.mjs";
|
|
52
|
+
import "../../../../../../../dashboard-D0jcgBD7.mjs";
|
|
53
|
+
import { r as getRegistryConfigInput } from "../../../../../../../config-DBU6iUQB.mjs";
|
|
54
|
+
import { n as VERSION } from "../../../../../../../version-DHmGpcch.mjs";
|
|
55
|
+
import "../../../../../../../errors-BOYNdIo3.mjs";
|
|
56
|
+
import "../../../../../../../update-check-BxNg9T6N.mjs";
|
|
57
|
+
import "../../../../../../../media--dJRU6i2.mjs";
|
|
58
|
+
import "../../../../../../../media-folders-Dn3C16B8.mjs";
|
|
59
|
+
import "../../../../../../../content-repair-DNh5--x5.mjs";
|
|
60
|
+
import "../../../../../../../settings-Dd1uivmQ.mjs";
|
|
61
|
+
import "../../../../../../../site-settings-DRHfX7bq.mjs";
|
|
62
|
+
import "../../../../../../../media-usage-CF0WVcLO.mjs";
|
|
63
|
+
import "../../../../../../../media-usage-activation-C9HwVw5w.mjs";
|
|
64
|
+
import "../../../../../../../media-usage-work-m3AWTmmC.mjs";
|
|
65
|
+
import "../../../../../../../schema-DJRfvM_o.mjs";
|
|
66
|
+
import "../../../../../../../block-types-CYcG56JB.mjs";
|
|
67
|
+
import "../../../../../../../seo-ClB-dw9w.mjs";
|
|
68
|
+
import { t as PluginStateRepository } from "../../../../../../../state-CFbGZziM.mjs";
|
|
69
|
+
import "../../../../../../../settings-CWb84sDm.mjs";
|
|
70
|
+
import "../../../../../../../sections-BMy4JVUz.mjs";
|
|
71
|
+
import { a as unwrapResult, r as handleError, t as apiError } from "../../../../../../../error-CVWeIOku.mjs";
|
|
72
|
+
import { i as checkSiteWriteFence } from "../../../../../../../fence-C3MUitUN.mjs";
|
|
73
|
+
import "../../../../../../../settings-DS914jjE.mjs";
|
|
74
|
+
import "../../../../../../../taxonomies-Dd9JJv_a.mjs";
|
|
75
|
+
import "../../../../../../../manifest-schema-DNb4XmTS.mjs";
|
|
76
|
+
import "../../../../../../../marketplace-CqbgeIa7.mjs";
|
|
77
|
+
import "../../../../../../../types-sUHaH7lC.mjs";
|
|
78
|
+
import "../../../../../../../artifact-fetch-DIh7iyOV.mjs";
|
|
79
|
+
import "../../../../../../../ssrf-BcYjyM4M.mjs";
|
|
80
|
+
import "../../../../../../../authoritative-records-CQlB3JzE.mjs";
|
|
81
|
+
import { r as parseOptionalBody, t as isParseError } from "../../../../../../../parse-DgQ2NABT.mjs";
|
|
82
|
+
import "../../../../../../../redirects-BEVSRMa2.mjs";
|
|
83
|
+
import "../../../../../../../entry-lock-Df6-XhIu.mjs";
|
|
84
|
+
import "../../../../../../../media-1WC65OCB.mjs";
|
|
85
|
+
import "../../../../../../../comments-yiRFx3w5.mjs";
|
|
86
|
+
import "../../../../../../../byline-fields-BLXZnX7N.mjs";
|
|
87
|
+
import "../../../../../../../menus-BSzwObhV.mjs";
|
|
88
|
+
import "../../../../../../../status-BFNdxzKc.mjs";
|
|
89
|
+
import "../../../../../../../redirects-BHpy-VsZ.mjs";
|
|
90
|
+
import "../../../../../../../ssrf-DM0E-D_8.mjs";
|
|
91
|
+
import "../../../../../../../credits-B9iORdWB.mjs";
|
|
92
|
+
import "../../../../../../../cron-D7obTIfk.mjs";
|
|
93
|
+
import "../../../../../../../route-wire-Ca_HWCZ5.mjs";
|
|
94
|
+
import { i as pluginPublicRouteAcknowledgementSchema } from "../../../../../../../routes-BerZFrvV.mjs";
|
|
95
|
+
import { o as requirePerm } from "../../../../../../../authorize-DPFBGbE6.mjs";
|
|
96
|
+
import { n as finalizePluginUpdate } from "../../../../../../../install-finalization-3JX5qQEA.mjs";
|
|
96
97
|
import { z } from "zod";
|
|
97
98
|
import { hostEnvFromVersions } from "@emdash-cms/registry-client/env";
|
|
98
99
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.mjs","names":[],"sources":["../../../../../../../../src/astro/routes/api/admin/plugins/registry/[id]/update.ts"],"sourcesContent":["/**\n * Registry plugin update endpoint (experimental)\n *\n * POST /_emdash/api/admin/plugins/registry/:id/update — Update a\n * registry-source plugin to a newer release. Mirrors the marketplace\n * update route's escalation gates: `CAPABILITY_ESCALATION` if the new\n * version declares new capabilities and `confirmCapabilityChanges` is\n * absent, and `ROUTE_VISIBILITY_ESCALATION` if it newly exposes public\n * routes and `acknowledgedPublicRoutes` does not exactly match them.\n */\n\nimport { hostEnvFromVersions } from \"@emdash-cms/registry-client/env\";\nimport type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, unwrapResult } from \"#api/error.js\";\nimport { handleRegistryUpdate, rollbackPluginUpdate } from \"#api/index.js\";\nimport { isParseError, parseOptionalBody } from \"#api/parse.js\";\nimport { finalizePluginUpdate } from \"#plugins/install-finalization.js\";\nimport { pluginPublicRouteAcknowledgementSchema } from \"#plugins/routes.js\";\nimport { PluginStateRepository } from \"#plugins/state.js\";\n\nimport { getRegistryConfigInput } from \"../../../../../../../registry/config.js\";\nimport { checkSiteWriteFence } from \"../../../../../../../transfer/fence.js\";\nimport { VERSION } from \"../../../../../../../version.js\";\n\nexport const prerender = false;\n\nconst updateBodySchema = z.object({\n\t/** Optional explicit target version. Defaults to the aggregator's latest. */\n\tversion: z.string().min(1).max(64).optional(),\n\t/**\n\t * Set by the admin's capability re-consent dialog when the new version\n\t * declares capabilities the installed version did not. Without this,\n\t * the handler returns `CAPABILITY_ESCALATION` carrying the diff.\n\t */\n\tconfirmCapabilityChanges: z.boolean().optional(),\n\t/** Exact newly public route names reviewed by the admin. */\n\tacknowledgedPublicRoutes: pluginPublicRouteAcknowledgementSchema.optional(),\n\tconfirmMcpTools: z.boolean().optional(),\n\tacknowledgedProfileCid: z.string().min(1).max(256).optional(),\n\tacknowledgedReleaseCid: z.string().min(1).max(256).optional(),\n});\n\nexport const POST: APIRoute = async ({ params, request, locals }) => {\n\ttry {\n\t\tconst { emdash, user } = locals;\n\t\tconst { id } = params;\n\n\t\tif (!emdash?.db) {\n\t\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t\t}\n\n\t\tconst denied = requirePerm(user, \"plugins:manage\");\n\t\tif (denied) return denied;\n\n\t\tconst writeFence = await checkSiteWriteFence(emdash.db);\n\t\tif (writeFence) return writeFence;\n\n\t\tif (!id) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Plugin ID required\", 400);\n\t\t}\n\n\t\tconst body = await parseOptionalBody(request, updateBodySchema, {});\n\t\tif (isParseError(body)) return body;\n\t\tconst previousState = await new PluginStateRepository(emdash.db).get(id);\n\n\t\tconst result = await handleRegistryUpdate(\n\t\t\temdash.db,\n\t\t\temdash.storage,\n\t\t\temdash.getSandboxRunner(),\n\t\t\tgetRegistryConfigInput(emdash.config.registry),\n\t\t\tid,\n\t\t\t{\n\t\t\t\tversion: body.version,\n\t\t\t\tconfirmCapabilityChanges: body.confirmCapabilityChanges,\n\t\t\t\tacknowledgedPublicRoutes: body.acknowledgedPublicRoutes,\n\t\t\t\tconfirmMcpTools: body.confirmMcpTools,\n\t\t\t\tacknowledgedProfileCid: body.acknowledgedProfileCid,\n\t\t\t\tacknowledgedReleaseCid: body.acknowledgedReleaseCid,\n\t\t\t\thostEnv: hostEnvFromVersions(VERSION, emdash.config.astroVersion),\n\t\t\t},\n\t\t);\n\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (!previousState) return apiError(\"UPDATE_FAILED\", \"Failed to update plugin\", 500);\n\n\t\tawait finalizePluginUpdate({\n\t\t\tpluginId: id,\n\t\t\tsyncRuntime: () => emdash.syncRegistryPlugins(),\n\t\t\trunLifecycle: () => emdash.runPluginActivateLifecycle(id),\n\t\t\trollback: () =>\n\t\t\t\trollbackPluginUpdate(\n\t\t\t\t\temdash.db,\n\t\t\t\t\temdash.storage,\n\t\t\t\t\tpreviousState,\n\t\t\t\t\tresult.data.newVersion,\n\t\t\t\t\t\"registry\",\n\t\t\t\t),\n\t\t\trunRollbackLifecycle: () =>\n\t\t\t\tpreviousState.status === \"active\"\n\t\t\t\t\t? emdash.runPluginActivateLifecycle(id)\n\t\t\t\t\t: Promise.resolve(),\n\t\t});\n\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\tconsole.error(\"[registry-update] Unhandled error:\", error);\n\t\treturn handleError(error, \"Failed to update plugin from registry\", \"UPDATE_FAILED\");\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.mjs","names":[],"sources":["../../../../../../../../src/astro/routes/api/admin/plugins/registry/[id]/update.ts"],"sourcesContent":["/**\n * Registry plugin update endpoint (experimental)\n *\n * POST /_emdash/api/admin/plugins/registry/:id/update — Update a\n * registry-source plugin to a newer release. Mirrors the marketplace\n * update route's escalation gates: `CAPABILITY_ESCALATION` if the new\n * version declares new capabilities and `confirmCapabilityChanges` is\n * absent, and `ROUTE_VISIBILITY_ESCALATION` if it newly exposes public\n * routes and `acknowledgedPublicRoutes` does not exactly match them.\n */\n\nimport { hostEnvFromVersions } from \"@emdash-cms/registry-client/env\";\nimport type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, unwrapResult } from \"#api/error.js\";\nimport { handleRegistryUpdate, rollbackPluginUpdate } from \"#api/index.js\";\nimport { isParseError, parseOptionalBody } from \"#api/parse.js\";\nimport { finalizePluginUpdate } from \"#plugins/install-finalization.js\";\nimport { pluginPublicRouteAcknowledgementSchema } from \"#plugins/routes.js\";\nimport { PluginStateRepository } from \"#plugins/state.js\";\n\nimport { getRegistryConfigInput } from \"../../../../../../../registry/config.js\";\nimport { checkSiteWriteFence } from \"../../../../../../../transfer/fence.js\";\nimport { VERSION } from \"../../../../../../../version.js\";\n\nexport const prerender = false;\n\nconst updateBodySchema = z.object({\n\t/** Optional explicit target version. Defaults to the aggregator's latest. */\n\tversion: z.string().min(1).max(64).optional(),\n\t/**\n\t * Set by the admin's capability re-consent dialog when the new version\n\t * declares capabilities the installed version did not. Without this,\n\t * the handler returns `CAPABILITY_ESCALATION` carrying the diff.\n\t */\n\tconfirmCapabilityChanges: z.boolean().optional(),\n\t/** Exact newly public route names reviewed by the admin. */\n\tacknowledgedPublicRoutes: pluginPublicRouteAcknowledgementSchema.optional(),\n\tconfirmMcpTools: z.boolean().optional(),\n\tacknowledgedProfileCid: z.string().min(1).max(256).optional(),\n\tacknowledgedReleaseCid: z.string().min(1).max(256).optional(),\n});\n\nexport const POST: APIRoute = async ({ params, request, locals }) => {\n\ttry {\n\t\tconst { emdash, user } = locals;\n\t\tconst { id } = params;\n\n\t\tif (!emdash?.db) {\n\t\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t\t}\n\n\t\tconst denied = requirePerm(user, \"plugins:manage\");\n\t\tif (denied) return denied;\n\n\t\tconst writeFence = await checkSiteWriteFence(emdash.db);\n\t\tif (writeFence) return writeFence;\n\n\t\tif (!id) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Plugin ID required\", 400);\n\t\t}\n\n\t\tconst body = await parseOptionalBody(request, updateBodySchema, {});\n\t\tif (isParseError(body)) return body;\n\t\tconst previousState = await new PluginStateRepository(emdash.db).get(id);\n\n\t\tconst result = await handleRegistryUpdate(\n\t\t\temdash.db,\n\t\t\temdash.storage,\n\t\t\temdash.getSandboxRunner(),\n\t\t\tgetRegistryConfigInput(emdash.config.registry),\n\t\t\tid,\n\t\t\t{\n\t\t\t\tversion: body.version,\n\t\t\t\tconfirmCapabilityChanges: body.confirmCapabilityChanges,\n\t\t\t\tacknowledgedPublicRoutes: body.acknowledgedPublicRoutes,\n\t\t\t\tconfirmMcpTools: body.confirmMcpTools,\n\t\t\t\tacknowledgedProfileCid: body.acknowledgedProfileCid,\n\t\t\t\tacknowledgedReleaseCid: body.acknowledgedReleaseCid,\n\t\t\t\thostEnv: hostEnvFromVersions(VERSION, emdash.config.astroVersion),\n\t\t\t},\n\t\t);\n\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (!previousState) return apiError(\"UPDATE_FAILED\", \"Failed to update plugin\", 500);\n\n\t\tawait finalizePluginUpdate({\n\t\t\tpluginId: id,\n\t\t\tsyncRuntime: () => emdash.syncRegistryPlugins(),\n\t\t\trunLifecycle: () => emdash.runPluginActivateLifecycle(id),\n\t\t\trollback: () =>\n\t\t\t\trollbackPluginUpdate(\n\t\t\t\t\temdash.db,\n\t\t\t\t\temdash.storage,\n\t\t\t\t\tpreviousState,\n\t\t\t\t\tresult.data.newVersion,\n\t\t\t\t\t\"registry\",\n\t\t\t\t),\n\t\t\trunRollbackLifecycle: () =>\n\t\t\t\tpreviousState.status === \"active\"\n\t\t\t\t\t? emdash.runPluginActivateLifecycle(id)\n\t\t\t\t\t: Promise.resolve(),\n\t\t});\n\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\tconsole.error(\"[registry-update] Unhandled error:\", error);\n\t\treturn handleError(error, \"Failed to update plugin from registry\", \"UPDATE_FAILED\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAa,YAAY;AAEzB,MAAM,mBAAmB,EAAE,OAAO;CAEjC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU;CAM7C,0BAA0B,EAAE,SAAS,CAAC,UAAU;CAEhD,0BAA0B,uCAAuC,UAAU;CAC3E,iBAAiB,EAAE,SAAS,CAAC,UAAU;CACvC,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;CAC7D,wBAAwB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;CAC7D,CAAC;AAEF,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,aAAa;AACpE,KAAI;EACH,MAAM,EAAE,QAAQ,SAAS;EACzB,MAAM,EAAE,OAAO;AAEf,MAAI,CAAC,QAAQ,GACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;EAGpE,MAAM,SAAS,YAAY,MAAM,iBAAiB;AAClD,MAAI,OAAQ,QAAO;EAEnB,MAAM,aAAa,MAAM,oBAAoB,OAAO,GAAG;AACvD,MAAI,WAAY,QAAO;AAEvB,MAAI,CAAC,GACJ,QAAO,SAAS,mBAAmB,sBAAsB,IAAI;EAG9D,MAAM,OAAO,MAAM,kBAAkB,SAAS,kBAAkB,EAAE,CAAC;AACnE,MAAI,aAAa,KAAK,CAAE,QAAO;EAC/B,MAAM,gBAAgB,MAAM,IAAI,sBAAsB,OAAO,GAAG,CAAC,IAAI,GAAG;EAExE,MAAM,SAAS,MAAM,qBACpB,OAAO,IACP,OAAO,SACP,OAAO,kBAAkB,EACzB,uBAAuB,OAAO,OAAO,SAAS,EAC9C,IACA;GACC,SAAS,KAAK;GACd,0BAA0B,KAAK;GAC/B,0BAA0B,KAAK;GAC/B,iBAAiB,KAAK;GACtB,wBAAwB,KAAK;GAC7B,wBAAwB,KAAK;GAC7B,SAAS,oBAAoB,SAAS,OAAO,OAAO,aAAa;GACjE,CACD;AAED,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,CAAC,cAAe,QAAO,SAAS,iBAAiB,2BAA2B,IAAI;AAEpF,QAAM,qBAAqB;GAC1B,UAAU;GACV,mBAAmB,OAAO,qBAAqB;GAC/C,oBAAoB,OAAO,2BAA2B,GAAG;GACzD,gBACC,qBACC,OAAO,IACP,OAAO,SACP,eACA,OAAO,KAAK,YACZ,WACA;GACF,4BACC,cAAc,WAAW,WACtB,OAAO,2BAA2B,GAAG,GACrC,QAAQ,SAAS;GACrB,CAAC;AAEF,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,UAAQ,MAAM,sCAAsC,MAAM;AAC1D,SAAO,YAAY,OAAO,yCAAyC,gBAAgB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
2
|
-
import "../../../../../../types-
|
|
3
|
-
import "../../../../../../errors-
|
|
4
|
-
import { l as validateAggregatorUrl, n as coerceRegistryConfig, r as getRegistryConfigInput } from "../../../../../../config-
|
|
5
|
-
import "../../../../../../errors-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { i as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
2
|
+
import "../../../../../../types-D2NEXtgB.mjs";
|
|
3
|
+
import "../../../../../../errors-B4f4It-2.mjs";
|
|
4
|
+
import { l as validateAggregatorUrl, n as coerceRegistryConfig, r as getRegistryConfigInput } from "../../../../../../config-DBU6iUQB.mjs";
|
|
5
|
+
import "../../../../../../errors-BOYNdIo3.mjs";
|
|
6
|
+
import { t as apiError } from "../../../../../../error-CVWeIOku.mjs";
|
|
7
|
+
import { n as multihashFromBlobCid, r as verifyMultihash } from "../../../../../../checksum-CEqvfxGX.mjs";
|
|
8
|
+
import { a as fetchVerifiedResource, i as resolvePublisherPdsEndpoint, r as recordScopedImageCacheUrl, t as fetchRegistryArtifactUrl } from "../../../../../../artifact-fetch-DIh7iyOV.mjs";
|
|
9
|
+
import { i as resolveAndValidateExternalUrlTarget } from "../../../../../../ssrf-BcYjyM4M.mjs";
|
|
10
|
+
import { o as requirePerm } from "../../../../../../authorize-DPFBGbE6.mjs";
|
|
11
11
|
import { evaluateRegistryReleaseWithdrawal } from "@emdash-cms/registry-client/withdrawal";
|
|
12
12
|
import { NSID, RECORD_SCOPED_BLOB_CACHE_TYPE } from "@emdash-cms/registry-lexicons";
|
|
13
13
|
|
|
@@ -264,7 +264,7 @@ async function resolveArtifact(registryConfig, did, slug, version, cid, kind, in
|
|
|
264
264
|
const rkey = `${slug}:${releaseView.version}`;
|
|
265
265
|
const serviceEndpoint = releaseView.artifactCaches.map(recordScopedCacheEndpoint).find((value) => value !== null);
|
|
266
266
|
if (serviceEndpoint) {
|
|
267
|
-
const cacheUrl = recordScopedImageCacheUrl(serviceEndpoint, kind === "icon" ? "avatar" : kind === "banner" ? "banner" : "
|
|
267
|
+
const cacheUrl = recordScopedImageCacheUrl(serviceEndpoint, kind === "icon" ? "avatar" : kind === "banner" ? "banner" : "feed_fullsize", {
|
|
268
268
|
did,
|
|
269
269
|
collection: NSID.packageRelease,
|
|
270
270
|
rkey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.mjs","names":[],"sources":["../../../../../../../src/registry/artifact-checksum.ts","../../../../../../../src/astro/routes/api/admin/plugins/registry/artifact.ts"],"sourcesContent":["import { verifyMultihash } from \"@emdash-cms/registry-verification/checksum\";\n\nconst SHA256_HEX_PATTERN = /^[0-9a-fA-F]{64}$/;\n\nexport async function verifyRegistryArtifactChecksum(\n\tbytes: Uint8Array,\n\tchecksum: string,\n): Promise<boolean> {\n\tif (SHA256_HEX_PATTERN.test(checksum)) {\n\t\tconst digest = new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(bytes)));\n\t\tconst actual = Array.from(digest, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\t\treturn actual === checksum.toLowerCase();\n\t}\n\treturn (await verifyMultihash(bytes, checksum)).success;\n}\n","/**\n * Registry artifact proxy\n *\n * GET /_emdash/api/admin/plugins/registry/artifact?did=&slug=&version=&kind=&index=\n *\n * Proxies an icon / screenshot / banner image referenced by a registry\n * release record so the admin UI can display it without cross-origin\n * requests to arbitrary publisher hosting.\n *\n * Trust model (CRITICAL): the proxy never accepts an artifact URL from the\n * client. The caller addresses an artifact by its coordinates\n * `(did, slug, version, kind, index)`; the server resolves the *declared*\n * artifact source from the validated release record fetched from the\n * configured aggregator. Blob-backed images resolve to the record-scoped\n * Cumulus deployment; URL artifacts retain the external fallback.\n *\n * The publisher-declared URL is still untrusted (an attacker who controls a\n * publisher record, or the aggregator, can point it anywhere), so the\n * resolved URL passes through the SSRF defences (`assertSafeArtifactUrl`,\n * re-validated on every redirect hop) before any fetch, and only allowlisted\n * image content types are served back.\n */\n\nimport type { Did } from \"@atcute/lexicons\";\nimport { evaluateRegistryReleaseWithdrawal } from \"@emdash-cms/registry-client/withdrawal\";\nimport { NSID, RECORD_SCOPED_BLOB_CACHE_TYPE } from \"@emdash-cms/registry-lexicons\";\nimport {\n\trecordScopedImageCacheUrl,\n\tresolvePublisherPdsEndpoint,\n\ttype ReleaseArtifactReference,\n} from \"@emdash-cms/registry-verification/artifact\";\nimport { multihashFromBlobCid } from \"@emdash-cms/registry-verification/checksum\";\nimport { fetchVerifiedResource } from \"@emdash-cms/registry-verification/fetch\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError } from \"#api/error.js\";\n\nimport { verifyRegistryArtifactChecksum } from \"../../../../../../registry/artifact-checksum.js\";\nimport { fetchRegistryArtifactUrl } from \"../../../../../../registry/artifact-fetch.js\";\nimport {\n\tcoerceRegistryConfig,\n\tgetRegistryConfigInput,\n\tvalidateAggregatorUrl,\n} from \"../../../../../../registry/config.js\";\nimport { resolveAndValidateExternalUrlTarget } from \"../../../../../../security/ssrf.js\";\n\nexport const prerender = false;\n\n/**\n * Image content types the proxy will pass through. Anything else is rejected.\n *\n * SVG is deliberately excluded: it is active content (an `<svg><script>`\n * executes when navigated to as a top-level document), and the publisher\n * supplies the bytes. Rather than serve it behind mitigations, we refuse it\n * end-to-end — the publish CLI rejects SVG artifacts too, so a conforming\n * release never references one.\n */\nconst ALLOWED_IMAGE_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/webp\"]);\n\n/** Artifact kinds the proxy can resolve. `screenshot` additionally needs `index`. */\nconst ALLOWED_KINDS = new Set([\"icon\", \"banner\", \"screenshot\"]);\n\n/** Loose DID shape (`did:method:id`); the aggregator lexicon is authoritative. */\nconst DID_PATTERN = /^did:[a-z]+:.+/;\n/** Slug grammar: ASCII letter then letters / digits / `-` / `_`. Mirrors the install route. */\nconst SLUG_PATTERN = /^[a-zA-Z][a-zA-Z0-9_-]*$/;\nconst CID_PATTERN = /^b[a-z2-7]+$/;\n/** Non-negative integer, for the screenshot index param. */\nconst INDEX_PATTERN = /^\\d+$/;\n\n/** Cap proxied images so a hostile host can't stream an unbounded body. */\nconst MAX_IMAGE_BYTES = 1024 * 1024;\n\n/** Redirect hops to follow, re-validating each target against SSRF rules. */\nconst MAX_REDIRECTS = 5;\n\n/** Wall-clock budget covering connect + headers + body for the artifact fetch. */\nconst FETCH_TIMEOUT_MS = 15_000;\n\n/** Per-aggregator-request timeout and overall budget for release resolution. */\nconst AGGREGATOR_REQUEST_TIMEOUT_MS = 15_000;\nconst AGGREGATOR_TOTAL_BUDGET_MS = 30_000;\n\n/** Bound the version search: 20 pages * 50 per page = 1000 releases worth. */\nconst MAX_LIST_PAGES = 20;\n\n/** Build a fetch that enforces a per-request and per-budget timeout. Mirrors the install handler. */\nfunction timedFetch(totalDeadline: number): typeof fetch {\n\treturn (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => {\n\t\tconst now = Date.now();\n\t\tconst remaining = Math.max(0, totalDeadline - now);\n\t\tif (remaining === 0) {\n\t\t\treturn Promise.reject(new Error(\"Aggregator request budget exhausted\"));\n\t\t}\n\t\tconst timeout = Math.min(AGGREGATOR_REQUEST_TIMEOUT_MS, remaining);\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), timeout);\n\t\tconst callerSignal = init?.signal;\n\t\tif (callerSignal) {\n\t\t\tif (callerSignal.aborted) controller.abort(callerSignal.reason);\n\t\t\telse callerSignal.addEventListener(\"abort\", () => controller.abort(callerSignal.reason));\n\t\t}\n\t\treturn fetch(input, { ...init, signal: controller.signal }).finally(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t};\n}\n\n/**\n * Narrow one entry of a release's `artifacts` map to a usable image source.\n *\n * The embedded `release` record is lexicon-validated at the DiscoveryClient\n * boundary, but `artifacts` is an aggregator pass-through typed `unknown`, so\n * the entry's shape is not guaranteed.\n */\ntype DeclaredArtifact = ReleaseArtifactReference & { requiresAuth: boolean };\n\ninterface ResolvedArtifact {\n\tartifact: DeclaredArtifact;\n\trecord: {\n\t\tdid: string;\n\t\tcollection: string;\n\t\trkey: string;\n\t\tcid: string;\n\t};\n\timageCacheUrl?: URL;\n}\n\nfunction declaredArtifact(value: unknown): DeclaredArtifact | null {\n\tif (!value || typeof value !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; fields checked below\n\tconst entry = value as Record<string, unknown>;\n\tconst url = entry.url;\n\tconst blob = entry.blob;\n\tconst checksum = entry.checksum;\n\tconst ref = objectProperty(blob, \"ref\");\n\tconst blobCid = objectProperty(ref, \"$link\");\n\tconst blobMimeType = objectProperty(blob, \"mimeType\");\n\tconst blobSize = objectProperty(blob, \"size\");\n\tconst hasUrl = typeof url === \"string\" && url.length > 0;\n\tconst hasBlob =\n\t\ttypeof blobCid === \"string\" &&\n\t\tblobCid.length > 0 &&\n\t\ttypeof blobMimeType === \"string\" &&\n\t\tNumber.isSafeInteger(blobSize) &&\n\t\tNumber(blobSize) >= 0;\n\tif ((!hasUrl && !hasBlob) || typeof checksum !== \"string\" || checksum.length === 0) {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...(hasUrl ? { url } : {}),\n\t\t...(hasBlob\n\t\t\t? {\n\t\t\t\t\tblob: {\n\t\t\t\t\t\t$type: \"blob\" as const,\n\t\t\t\t\t\tref: { $link: blobCid },\n\t\t\t\t\t\tmimeType: blobMimeType,\n\t\t\t\t\t\tsize: Number(blobSize),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tchecksum,\n\t\trequiresAuth: entry.requiresAuth === true,\n\t};\n}\n\n/**\n * Resolve the declared artifact source for `(kind, index)` from a release's\n * `artifacts` map. Returns `null` when the requested artifact isn't present\n * or doesn't carry a usable URL.\n */\nfunction resolveDeclaredArtifact(\n\tartifacts: unknown,\n\tkind: string,\n\tindex: number,\n): DeclaredArtifact | null {\n\tif (!artifacts || typeof artifacts !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; each entry shape-narrowed by declaredArtifactUrl\n\tconst map = artifacts as Record<string, unknown>;\n\n\tif (kind === \"icon\") return declaredArtifact(map.icon);\n\tif (kind === \"banner\") return declaredArtifact(map.banner);\n\t// kind === \"screenshot\"\n\tconst screenshots = map.screenshots;\n\tif (!Array.isArray(screenshots)) return null;\n\tif (index < 0 || index >= screenshots.length) return null;\n\treturn declaredArtifact(screenshots[index]);\n}\n\nfunction objectProperty(value: unknown, key: string): unknown {\n\tif (!value || typeof value !== \"object\") return undefined;\n\treturn Object.getOwnPropertyDescriptor(value, key)?.value;\n}\n\nexport const GET: APIRoute = async ({ url, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\tconst denied = requirePerm(user, \"plugins:read\");\n\tif (denied) return denied;\n\n\tconst did = url.searchParams.get(\"did\");\n\tconst slug = url.searchParams.get(\"slug\");\n\tconst cid = url.searchParams.get(\"cid\");\n\tconst kind = url.searchParams.get(\"kind\");\n\tconst versionParam = url.searchParams.get(\"version\");\n\tconst indexParam = url.searchParams.get(\"index\");\n\n\tif (!did || !slug || !cid || !kind) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Missing did, slug, cid, or kind\", 400);\n\t}\n\tif (did.length > 256 || !DID_PATTERN.test(did)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid did\", 400);\n\t}\n\tif (slug.length > 64 || !SLUG_PATTERN.test(slug)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid slug\", 400);\n\t}\n\tif (cid.length > 256 || !CID_PATTERN.test(cid)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid release CID\", 400);\n\t}\n\tif (!ALLOWED_KINDS.has(kind)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid kind\", 400);\n\t}\n\n\tlet index = 0;\n\tif (kind === \"screenshot\") {\n\t\tif (indexParam === null) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Missing index for screenshot\", 400);\n\t\t}\n\t\tif (!INDEX_PATTERN.test(indexParam)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t\tindex = Number(indexParam);\n\t\tif (!Number.isSafeInteger(index)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t}\n\n\tlet version: string | undefined;\n\tif (versionParam !== null && versionParam.length > 0) {\n\t\tif (versionParam.length > 64) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid version\", 400);\n\t\t}\n\t\tversion = versionParam;\n\t}\n\n\tconst registryConfig = coerceRegistryConfig(getRegistryConfigInput(emdash.config.registry));\n\tif (!registryConfig) {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry is not configured\", 400);\n\t}\n\ttry {\n\t\tvalidateAggregatorUrl(registryConfig.aggregatorUrl);\n\t} catch {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry aggregator URL is invalid\", 500);\n\t}\n\n\t// Resolve the publisher-declared artifact URL from the release record.\n\tlet resolvedArtifact: ResolvedArtifact;\n\ttry {\n\t\tconst resolved = await resolveArtifact(registryConfig, did, slug, version, cid, kind, index);\n\t\tif (resolved === null) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_FOUND\", \"Artifact not found\", 404);\n\t\t}\n\t\tresolvedArtifact = resolved;\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_RESOLVE_FAILED\", \"Failed to resolve artifact\", 502);\n\t}\n\tconst controller = new AbortController();\n\tconst timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);\n\ttry {\n\t\tconst fetchOptions = proxyFetchOptions(controller.signal);\n\t\tlet bytes: Uint8Array | undefined;\n\t\tlet headers: Headers | undefined;\n\t\tlet checksumValid: boolean | undefined;\n\t\tif (resolvedArtifact.imageCacheUrl) {\n\t\t\tconst transformed = await fetchVerifiedResource(resolvedArtifact.imageCacheUrl, fetchOptions);\n\t\t\tif (transformed.success) {\n\t\t\t\tbytes = transformed.value.bytes;\n\t\t\t\theaders = transformed.value.headers;\n\t\t\t}\n\t\t}\n\t\tif (!bytes || !headers) {\n\t\t\tconst raw = await fetchRawArtifact(resolvedArtifact, fetchOptions);\n\t\t\tif (!raw.success) return artifactFetchError(raw.code);\n\t\t\tbytes = raw.bytes;\n\t\t\theaders = raw.headers;\n\t\t\tchecksumValid = raw.checksumValid;\n\t\t}\n\n\t\t// Content-Type allowlist: only image types are proxied. A non-image\n\t\t// (HTML error page, JSON, octet-stream) is rejected so the admin\n\t\t// never renders publisher-controlled markup from the EmDash origin.\n\t\tconst rawType = headers.get(\"content-type\") ?? \"\";\n\t\tconst contentType = rawType.split(\";\", 1)[0]!.trim().toLowerCase();\n\t\tif (!ALLOWED_IMAGE_TYPES.has(contentType)) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_IMAGE\", \"Artifact is not an allowed image type\", 415);\n\t\t}\n\n\t\tconst declaredLength = headers.get(\"content-length\");\n\t\tif (declaredLength) {\n\t\t\tconst declared = Number(declaredLength);\n\t\t\tif (Number.isFinite(declared) && declared > MAX_IMAGE_BYTES) {\n\t\t\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t\t\t}\n\t\t}\n\t\tif (checksumValid === false) {\n\t\t\treturn artifactFetchError(\"CHECKSUM_MISMATCH\");\n\t\t}\n\n\t\t// Only the allowlisted Content-Type is forwarded — never copy other\n\t\t// upstream headers. `private, no-store` keeps publisher images out of\n\t\t// shared caches in the authenticated admin origin.\n\t\t//\n\t\t// SVG is not in the allowlist, so active-content bytes never reach\n\t\t// here. `Content-Disposition: attachment`, the sandbox CSP, and\n\t\t// `nosniff` remain as defence-in-depth: they force a download and\n\t\t// neutralise script/plugins for any image type if a client navigates\n\t\t// directly to the proxy URL.\n\t\treturn new Response(bytes, {\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": contentType,\n\t\t\t\t\"Cache-Control\": \"private, no-store\",\n\t\t\t\t\"X-Content-Type-Options\": \"nosniff\",\n\t\t\t\t\"Content-Disposition\": \"attachment\",\n\t\t\t\t\"Content-Security-Policy\": \"default-src 'none'; sandbox\",\n\t\t\t},\n\t\t});\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n\t} finally {\n\t\tclearTimeout(timer);\n\t}\n};\n\n/**\n * Resolve the declared artifact URL for `(did, slug, version, kind, index)`\n * from the aggregator's release record. Mirrors the install handler's release\n * lookup. Returns `null` when the package/release/artifact isn't found.\n *\n * Self-contained to this route: the install/update handlers are intentionally\n * left untouched, so a small amount of resolution-pattern duplication is\n * accepted here.\n */\nasync function resolveArtifact(\n\tregistryConfig: { aggregatorUrl: string; acceptLabelers?: string },\n\tdid: string,\n\tslug: string,\n\tversion: string | undefined,\n\tcid: string,\n\tkind: string,\n\tindex: number,\n): Promise<ResolvedArtifact | null> {\n\t// Lazy-load the discovery client so the `@atcute/client` dependency only\n\t// loads when the registry path is exercised.\n\tconst { DiscoveryClient, registryLabelerPolicy } =\n\t\tawait import(\"@emdash-cms/registry-client/discovery\");\n\n\tconst aggregatorDeadline = Date.now() + AGGREGATOR_TOTAL_BUDGET_MS;\n\tconst discovery = new DiscoveryClient({\n\t\taggregatorUrl: registryConfig.aggregatorUrl,\n\t\tacceptLabelers: registryConfig.acceptLabelers,\n\t\tlabelerPolicy: registryLabelerPolicy(registryConfig.acceptLabelers),\n\t\tfetch: timedFetch(aggregatorDeadline),\n\t});\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- DID shape validated by the route before this call\n\tconst publisherDid = did as Did;\n\n\tconst releaseView = await (async () => {\n\t\tif (!version) {\n\t\t\treturn discovery.getLatestRelease({ did: publisherDid, package: slug });\n\t\t}\n\t\tlet cursor: string | undefined;\n\t\tconst seenCursors = new Set<string>();\n\t\tfor (let page = 0; page < MAX_LIST_PAGES; page++) {\n\t\t\tif (cursor !== undefined) {\n\t\t\t\tif (seenCursors.has(cursor)) break;\n\t\t\t\tseenCursors.add(cursor);\n\t\t\t}\n\t\t\tconst result = await discovery.listReleases({\n\t\t\t\tdid: publisherDid,\n\t\t\t\tpackage: slug,\n\t\t\t\tcursor,\n\t\t\t\tlimit: 50,\n\t\t\t});\n\t\t\tfor (const r of result.releases) {\n\t\t\t\tif (r.version === version) return r;\n\t\t\t}\n\t\t\tif (!result.cursor) break;\n\t\t\tcursor = result.cursor;\n\t\t}\n\t\treturn undefined;\n\t})();\n\n\tif (\n\t\t!releaseView?.release ||\n\t\treleaseView.cid !== cid ||\n\t\treleaseView.did !== publisherDid ||\n\t\treleaseView.package !== slug ||\n\t\t(version !== undefined && releaseView.version !== version) ||\n\t\treleaseView.release.package !== slug ||\n\t\treleaseView.release.version !== releaseView.version\n\t) {\n\t\treturn null;\n\t}\n\tif (evaluateRegistryReleaseWithdrawal(releaseView, discovery.labelerPolicy).withdrawn) {\n\t\treturn null;\n\t}\n\n\tconst descriptor = resolveDeclaredArtifact(releaseView.release.artifacts, kind, index);\n\tif (!descriptor || descriptor.requiresAuth || releaseView.release.auth !== undefined) return null;\n\tconst blobCid = descriptor.blob?.ref.$link;\n\tlet imageCacheUrl: URL | undefined;\n\tif (blobCid) {\n\t\tconst expected = multihashFromBlobCid(blobCid);\n\t\tif (!expected.success || expected.value !== descriptor.checksum) return null;\n\t\tconst rkey = `${slug}:${releaseView.version}`;\n\t\tconst serviceEndpoint = releaseView.artifactCaches\n\t\t\t.map(recordScopedCacheEndpoint)\n\t\t\t.find((value) => value !== null);\n\t\tif (serviceEndpoint) {\n\t\t\tconst preset = kind === \"icon\" ? \"avatar\" : kind === \"banner\" ? \"banner\" : \"feed_thumbnail\";\n\t\t\tconst cacheUrl = recordScopedImageCacheUrl(\n\t\t\t\tserviceEndpoint,\n\t\t\t\tpreset,\n\t\t\t\t{\n\t\t\t\t\tdid,\n\t\t\t\t\tcollection: NSID.packageRelease,\n\t\t\t\t\trkey,\n\t\t\t\t\tcid: releaseView.cid,\n\t\t\t\t},\n\t\t\t\tblobCid,\n\t\t\t);\n\t\t\tif (!cacheUrl.success) return null;\n\t\t\timageCacheUrl = cacheUrl.value;\n\t\t}\n\t}\n\treturn {\n\t\tartifact: descriptor,\n\t\trecord: {\n\t\t\tdid,\n\t\t\tcollection: NSID.packageRelease,\n\t\t\trkey: `${slug}:${releaseView.version}`,\n\t\t\tcid: releaseView.cid,\n\t\t},\n\t\t...(imageCacheUrl ? { imageCacheUrl } : {}),\n\t};\n}\n\nfunction recordScopedCacheEndpoint(value: unknown): string | null {\n\tif (objectProperty(value, \"$type\") !== RECORD_SCOPED_BLOB_CACHE_TYPE) return null;\n\tconst endpoint = objectProperty(value, \"serviceEndpoint\");\n\treturn typeof endpoint === \"string\" ? endpoint : null;\n}\n\n/** Build bounded, SSRF-validated fetch options for cache, PDS, and URL sources. */\nfunction proxyFetchOptions(signal: AbortSignal) {\n\treturn {\n\t\tfetch: async (url: URL, init: RequestInit) =>\n\t\t\tfetchRegistryArtifactUrl(url.href, {\n\t\t\t\tsignal: init.signal instanceof AbortSignal ? init.signal : signal,\n\t\t\t\tmaxResponseBytes: MAX_IMAGE_BYTES,\n\t\t\t}),\n\t\tresolveHostname: async (hostname: string) =>\n\t\t\t(await resolveAndValidateExternalUrlTarget(`https://${hostname}/`)).addresses,\n\t\tallowHttpLocalhost: import.meta.env.DEV,\n\t\tmaxBytes: MAX_IMAGE_BYTES,\n\t\tmaxRedirects: MAX_REDIRECTS,\n\t\ttotalTimeoutMs: FETCH_TIMEOUT_MS,\n\t};\n}\n\nasync function fetchRawArtifact(\n\tresolved: ResolvedArtifact,\n\toptions: ReturnType<typeof proxyFetchOptions>,\n): Promise<\n\t| { success: true; bytes: Uint8Array; headers: Headers; checksumValid: boolean }\n\t| { success: false; code: string }\n> {\n\tconst urls: URL[] = [];\n\tconst blobCid = resolved.artifact.blob?.ref.$link;\n\tlet lastCode = \"FETCH_FAILED\";\n\tlet checksumMismatch: { bytes: Uint8Array; headers: Headers } | undefined;\n\tif (blobCid) {\n\t\tconst pds = await resolvePublisherPdsEndpoint(resolved.record.did, options);\n\t\tif (pds.success) {\n\t\t\tconst url = new URL(\"/xrpc/com.atproto.sync.getBlob\", pds.value);\n\t\t\turl.searchParams.set(\"did\", resolved.record.did);\n\t\t\turl.searchParams.set(\"cid\", blobCid);\n\t\t\turls.push(url);\n\t\t} else {\n\t\t\tlastCode = pds.error.code;\n\t\t}\n\t}\n\tif (resolved.artifact.url) urls.push(new URL(resolved.artifact.url));\n\n\tfor (const url of urls) {\n\t\tconst fetched = await fetchVerifiedResource(url, options);\n\t\tif (!fetched.success) {\n\t\t\tlastCode = fetched.error.code;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(await verifyRegistryArtifactChecksum(fetched.value.bytes, resolved.artifact.checksum))) {\n\t\t\tlastCode = \"CHECKSUM_MISMATCH\";\n\t\t\tchecksumMismatch = { bytes: fetched.value.bytes, headers: fetched.value.headers };\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tbytes: fetched.value.bytes,\n\t\t\theaders: fetched.value.headers,\n\t\t\tchecksumValid: true,\n\t\t};\n\t}\n\tif (checksumMismatch) return { success: true, ...checksumMismatch, checksumValid: false };\n\treturn { success: false, code: lastCode };\n}\n\nfunction artifactFetchError(code: string): Response {\n\tif (code === \"CHECKSUM_MISMATCH\") {\n\t\treturn apiError(\n\t\t\t\"ARTIFACT_CHECKSUM_MISMATCH\",\n\t\t\t\"Artifact bytes do not match the approved release record\",\n\t\t\t502,\n\t\t);\n\t}\n\tif (code === \"RESOURCE_SIZE_EXCEEDED\") {\n\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t}\n\tif (code === \"HOST_REJECTED\" || code === \"INVALID_URL\") {\n\t\treturn apiError(\"ARTIFACT_URL_REJECTED\", \"Artifact URL is not allowed\", 400);\n\t}\n\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifact.mjs","names":[],"sources":["../../../../../../../src/registry/artifact-checksum.ts","../../../../../../../src/astro/routes/api/admin/plugins/registry/artifact.ts"],"sourcesContent":["import { verifyMultihash } from \"@emdash-cms/registry-verification/checksum\";\n\nconst SHA256_HEX_PATTERN = /^[0-9a-fA-F]{64}$/;\n\nexport async function verifyRegistryArtifactChecksum(\n\tbytes: Uint8Array,\n\tchecksum: string,\n): Promise<boolean> {\n\tif (SHA256_HEX_PATTERN.test(checksum)) {\n\t\tconst digest = new Uint8Array(await crypto.subtle.digest(\"SHA-256\", Uint8Array.from(bytes)));\n\t\tconst actual = Array.from(digest, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\t\treturn actual === checksum.toLowerCase();\n\t}\n\treturn (await verifyMultihash(bytes, checksum)).success;\n}\n","/**\n * Registry artifact proxy\n *\n * GET /_emdash/api/admin/plugins/registry/artifact?did=&slug=&version=&kind=&index=\n *\n * Proxies an icon / screenshot / banner image referenced by a registry\n * release record so the admin UI can display it without cross-origin\n * requests to arbitrary publisher hosting.\n *\n * Trust model (CRITICAL): the proxy never accepts an artifact URL from the\n * client. The caller addresses an artifact by its coordinates\n * `(did, slug, version, kind, index)`; the server resolves the *declared*\n * artifact source from the validated release record fetched from the\n * configured aggregator. Blob-backed images resolve to the record-scoped\n * Cumulus deployment; URL artifacts retain the external fallback.\n *\n * The publisher-declared URL is still untrusted (an attacker who controls a\n * publisher record, or the aggregator, can point it anywhere), so the\n * resolved URL passes through the SSRF defences (`assertSafeArtifactUrl`,\n * re-validated on every redirect hop) before any fetch, and only allowlisted\n * image content types are served back.\n */\n\nimport type { Did } from \"@atcute/lexicons\";\nimport { evaluateRegistryReleaseWithdrawal } from \"@emdash-cms/registry-client/withdrawal\";\nimport { NSID, RECORD_SCOPED_BLOB_CACHE_TYPE } from \"@emdash-cms/registry-lexicons\";\nimport {\n\trecordScopedImageCacheUrl,\n\tresolvePublisherPdsEndpoint,\n\ttype ReleaseArtifactReference,\n} from \"@emdash-cms/registry-verification/artifact\";\nimport { multihashFromBlobCid } from \"@emdash-cms/registry-verification/checksum\";\nimport { fetchVerifiedResource } from \"@emdash-cms/registry-verification/fetch\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError } from \"#api/error.js\";\n\nimport { verifyRegistryArtifactChecksum } from \"../../../../../../registry/artifact-checksum.js\";\nimport { fetchRegistryArtifactUrl } from \"../../../../../../registry/artifact-fetch.js\";\nimport {\n\tcoerceRegistryConfig,\n\tgetRegistryConfigInput,\n\tvalidateAggregatorUrl,\n} from \"../../../../../../registry/config.js\";\nimport { resolveAndValidateExternalUrlTarget } from \"../../../../../../security/ssrf.js\";\n\nexport const prerender = false;\n\n/**\n * Image content types the proxy will pass through. Anything else is rejected.\n *\n * SVG is deliberately excluded: it is active content (an `<svg><script>`\n * executes when navigated to as a top-level document), and the publisher\n * supplies the bytes. Rather than serve it behind mitigations, we refuse it\n * end-to-end — the publish CLI rejects SVG artifacts too, so a conforming\n * release never references one.\n */\nconst ALLOWED_IMAGE_TYPES = new Set([\"image/png\", \"image/jpeg\", \"image/webp\"]);\n\n/** Artifact kinds the proxy can resolve. `screenshot` additionally needs `index`. */\nconst ALLOWED_KINDS = new Set([\"icon\", \"banner\", \"screenshot\"]);\n\n/** Loose DID shape (`did:method:id`); the aggregator lexicon is authoritative. */\nconst DID_PATTERN = /^did:[a-z]+:.+/;\n/** Slug grammar: ASCII letter then letters / digits / `-` / `_`. Mirrors the install route. */\nconst SLUG_PATTERN = /^[a-zA-Z][a-zA-Z0-9_-]*$/;\nconst CID_PATTERN = /^b[a-z2-7]+$/;\n/** Non-negative integer, for the screenshot index param. */\nconst INDEX_PATTERN = /^\\d+$/;\n\n/** Cap proxied images so a hostile host can't stream an unbounded body. */\nconst MAX_IMAGE_BYTES = 1024 * 1024;\n\n/** Redirect hops to follow, re-validating each target against SSRF rules. */\nconst MAX_REDIRECTS = 5;\n\n/** Wall-clock budget covering connect + headers + body for the artifact fetch. */\nconst FETCH_TIMEOUT_MS = 15_000;\n\n/** Per-aggregator-request timeout and overall budget for release resolution. */\nconst AGGREGATOR_REQUEST_TIMEOUT_MS = 15_000;\nconst AGGREGATOR_TOTAL_BUDGET_MS = 30_000;\n\n/** Bound the version search: 20 pages * 50 per page = 1000 releases worth. */\nconst MAX_LIST_PAGES = 20;\n\n/** Build a fetch that enforces a per-request and per-budget timeout. Mirrors the install handler. */\nfunction timedFetch(totalDeadline: number): typeof fetch {\n\treturn (input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]) => {\n\t\tconst now = Date.now();\n\t\tconst remaining = Math.max(0, totalDeadline - now);\n\t\tif (remaining === 0) {\n\t\t\treturn Promise.reject(new Error(\"Aggregator request budget exhausted\"));\n\t\t}\n\t\tconst timeout = Math.min(AGGREGATOR_REQUEST_TIMEOUT_MS, remaining);\n\t\tconst controller = new AbortController();\n\t\tconst timer = setTimeout(() => controller.abort(), timeout);\n\t\tconst callerSignal = init?.signal;\n\t\tif (callerSignal) {\n\t\t\tif (callerSignal.aborted) controller.abort(callerSignal.reason);\n\t\t\telse callerSignal.addEventListener(\"abort\", () => controller.abort(callerSignal.reason));\n\t\t}\n\t\treturn fetch(input, { ...init, signal: controller.signal }).finally(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t};\n}\n\n/**\n * Narrow one entry of a release's `artifacts` map to a usable image source.\n *\n * The embedded `release` record is lexicon-validated at the DiscoveryClient\n * boundary, but `artifacts` is an aggregator pass-through typed `unknown`, so\n * the entry's shape is not guaranteed.\n */\ntype DeclaredArtifact = ReleaseArtifactReference & { requiresAuth: boolean };\n\ninterface ResolvedArtifact {\n\tartifact: DeclaredArtifact;\n\trecord: {\n\t\tdid: string;\n\t\tcollection: string;\n\t\trkey: string;\n\t\tcid: string;\n\t};\n\timageCacheUrl?: URL;\n}\n\nfunction declaredArtifact(value: unknown): DeclaredArtifact | null {\n\tif (!value || typeof value !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; fields checked below\n\tconst entry = value as Record<string, unknown>;\n\tconst url = entry.url;\n\tconst blob = entry.blob;\n\tconst checksum = entry.checksum;\n\tconst ref = objectProperty(blob, \"ref\");\n\tconst blobCid = objectProperty(ref, \"$link\");\n\tconst blobMimeType = objectProperty(blob, \"mimeType\");\n\tconst blobSize = objectProperty(blob, \"size\");\n\tconst hasUrl = typeof url === \"string\" && url.length > 0;\n\tconst hasBlob =\n\t\ttypeof blobCid === \"string\" &&\n\t\tblobCid.length > 0 &&\n\t\ttypeof blobMimeType === \"string\" &&\n\t\tNumber.isSafeInteger(blobSize) &&\n\t\tNumber(blobSize) >= 0;\n\tif ((!hasUrl && !hasBlob) || typeof checksum !== \"string\" || checksum.length === 0) {\n\t\treturn null;\n\t}\n\treturn {\n\t\t...(hasUrl ? { url } : {}),\n\t\t...(hasBlob\n\t\t\t? {\n\t\t\t\t\tblob: {\n\t\t\t\t\t\t$type: \"blob\" as const,\n\t\t\t\t\t\tref: { $link: blobCid },\n\t\t\t\t\t\tmimeType: blobMimeType,\n\t\t\t\t\t\tsize: Number(blobSize),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tchecksum,\n\t\trequiresAuth: entry.requiresAuth === true,\n\t};\n}\n\n/**\n * Resolve the declared artifact source for `(kind, index)` from a release's\n * `artifacts` map. Returns `null` when the requested artifact isn't present\n * or doesn't carry a usable URL.\n */\nfunction resolveDeclaredArtifact(\n\tartifacts: unknown,\n\tkind: string,\n\tindex: number,\n): DeclaredArtifact | null {\n\tif (!artifacts || typeof artifacts !== \"object\") return null;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- narrowed to non-null object above; each entry shape-narrowed by declaredArtifactUrl\n\tconst map = artifacts as Record<string, unknown>;\n\n\tif (kind === \"icon\") return declaredArtifact(map.icon);\n\tif (kind === \"banner\") return declaredArtifact(map.banner);\n\t// kind === \"screenshot\"\n\tconst screenshots = map.screenshots;\n\tif (!Array.isArray(screenshots)) return null;\n\tif (index < 0 || index >= screenshots.length) return null;\n\treturn declaredArtifact(screenshots[index]);\n}\n\nfunction objectProperty(value: unknown, key: string): unknown {\n\tif (!value || typeof value !== \"object\") return undefined;\n\treturn Object.getOwnPropertyDescriptor(value, key)?.value;\n}\n\nexport const GET: APIRoute = async ({ url, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\tconst denied = requirePerm(user, \"plugins:read\");\n\tif (denied) return denied;\n\n\tconst did = url.searchParams.get(\"did\");\n\tconst slug = url.searchParams.get(\"slug\");\n\tconst cid = url.searchParams.get(\"cid\");\n\tconst kind = url.searchParams.get(\"kind\");\n\tconst versionParam = url.searchParams.get(\"version\");\n\tconst indexParam = url.searchParams.get(\"index\");\n\n\tif (!did || !slug || !cid || !kind) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Missing did, slug, cid, or kind\", 400);\n\t}\n\tif (did.length > 256 || !DID_PATTERN.test(did)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid did\", 400);\n\t}\n\tif (slug.length > 64 || !SLUG_PATTERN.test(slug)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid slug\", 400);\n\t}\n\tif (cid.length > 256 || !CID_PATTERN.test(cid)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid release CID\", 400);\n\t}\n\tif (!ALLOWED_KINDS.has(kind)) {\n\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid kind\", 400);\n\t}\n\n\tlet index = 0;\n\tif (kind === \"screenshot\") {\n\t\tif (indexParam === null) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Missing index for screenshot\", 400);\n\t\t}\n\t\tif (!INDEX_PATTERN.test(indexParam)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t\tindex = Number(indexParam);\n\t\tif (!Number.isSafeInteger(index)) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid index\", 400);\n\t\t}\n\t}\n\n\tlet version: string | undefined;\n\tif (versionParam !== null && versionParam.length > 0) {\n\t\tif (versionParam.length > 64) {\n\t\t\treturn apiError(\"INVALID_REQUEST\", \"Invalid version\", 400);\n\t\t}\n\t\tversion = versionParam;\n\t}\n\n\tconst registryConfig = coerceRegistryConfig(getRegistryConfigInput(emdash.config.registry));\n\tif (!registryConfig) {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry is not configured\", 400);\n\t}\n\ttry {\n\t\tvalidateAggregatorUrl(registryConfig.aggregatorUrl);\n\t} catch {\n\t\treturn apiError(\"REGISTRY_NOT_CONFIGURED\", \"Registry aggregator URL is invalid\", 500);\n\t}\n\n\t// Resolve the publisher-declared artifact URL from the release record.\n\tlet resolvedArtifact: ResolvedArtifact;\n\ttry {\n\t\tconst resolved = await resolveArtifact(registryConfig, did, slug, version, cid, kind, index);\n\t\tif (resolved === null) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_FOUND\", \"Artifact not found\", 404);\n\t\t}\n\t\tresolvedArtifact = resolved;\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_RESOLVE_FAILED\", \"Failed to resolve artifact\", 502);\n\t}\n\tconst controller = new AbortController();\n\tconst timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);\n\ttry {\n\t\tconst fetchOptions = proxyFetchOptions(controller.signal);\n\t\tlet bytes: Uint8Array | undefined;\n\t\tlet headers: Headers | undefined;\n\t\tlet checksumValid: boolean | undefined;\n\t\tif (resolvedArtifact.imageCacheUrl) {\n\t\t\tconst transformed = await fetchVerifiedResource(resolvedArtifact.imageCacheUrl, fetchOptions);\n\t\t\tif (transformed.success) {\n\t\t\t\tbytes = transformed.value.bytes;\n\t\t\t\theaders = transformed.value.headers;\n\t\t\t}\n\t\t}\n\t\tif (!bytes || !headers) {\n\t\t\tconst raw = await fetchRawArtifact(resolvedArtifact, fetchOptions);\n\t\t\tif (!raw.success) return artifactFetchError(raw.code);\n\t\t\tbytes = raw.bytes;\n\t\t\theaders = raw.headers;\n\t\t\tchecksumValid = raw.checksumValid;\n\t\t}\n\n\t\t// Content-Type allowlist: only image types are proxied. A non-image\n\t\t// (HTML error page, JSON, octet-stream) is rejected so the admin\n\t\t// never renders publisher-controlled markup from the EmDash origin.\n\t\tconst rawType = headers.get(\"content-type\") ?? \"\";\n\t\tconst contentType = rawType.split(\";\", 1)[0]!.trim().toLowerCase();\n\t\tif (!ALLOWED_IMAGE_TYPES.has(contentType)) {\n\t\t\treturn apiError(\"ARTIFACT_NOT_IMAGE\", \"Artifact is not an allowed image type\", 415);\n\t\t}\n\n\t\tconst declaredLength = headers.get(\"content-length\");\n\t\tif (declaredLength) {\n\t\t\tconst declared = Number(declaredLength);\n\t\t\tif (Number.isFinite(declared) && declared > MAX_IMAGE_BYTES) {\n\t\t\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t\t\t}\n\t\t}\n\t\tif (checksumValid === false) {\n\t\t\treturn artifactFetchError(\"CHECKSUM_MISMATCH\");\n\t\t}\n\n\t\t// Only the allowlisted Content-Type is forwarded — never copy other\n\t\t// upstream headers. `private, no-store` keeps publisher images out of\n\t\t// shared caches in the authenticated admin origin.\n\t\t//\n\t\t// SVG is not in the allowlist, so active-content bytes never reach\n\t\t// here. `Content-Disposition: attachment`, the sandbox CSP, and\n\t\t// `nosniff` remain as defence-in-depth: they force a download and\n\t\t// neutralise script/plugins for any image type if a client navigates\n\t\t// directly to the proxy URL.\n\t\treturn new Response(bytes, {\n\t\t\theaders: {\n\t\t\t\t\"Content-Type\": contentType,\n\t\t\t\t\"Cache-Control\": \"private, no-store\",\n\t\t\t\t\"X-Content-Type-Options\": \"nosniff\",\n\t\t\t\t\"Content-Disposition\": \"attachment\",\n\t\t\t\t\"Content-Security-Policy\": \"default-src 'none'; sandbox\",\n\t\t\t},\n\t\t});\n\t} catch {\n\t\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n\t} finally {\n\t\tclearTimeout(timer);\n\t}\n};\n\n/**\n * Resolve the declared artifact URL for `(did, slug, version, kind, index)`\n * from the aggregator's release record. Mirrors the install handler's release\n * lookup. Returns `null` when the package/release/artifact isn't found.\n *\n * Self-contained to this route: the install/update handlers are intentionally\n * left untouched, so a small amount of resolution-pattern duplication is\n * accepted here.\n */\nasync function resolveArtifact(\n\tregistryConfig: { aggregatorUrl: string; acceptLabelers?: string },\n\tdid: string,\n\tslug: string,\n\tversion: string | undefined,\n\tcid: string,\n\tkind: string,\n\tindex: number,\n): Promise<ResolvedArtifact | null> {\n\t// Lazy-load the discovery client so the `@atcute/client` dependency only\n\t// loads when the registry path is exercised.\n\tconst { DiscoveryClient, registryLabelerPolicy } =\n\t\tawait import(\"@emdash-cms/registry-client/discovery\");\n\n\tconst aggregatorDeadline = Date.now() + AGGREGATOR_TOTAL_BUDGET_MS;\n\tconst discovery = new DiscoveryClient({\n\t\taggregatorUrl: registryConfig.aggregatorUrl,\n\t\tacceptLabelers: registryConfig.acceptLabelers,\n\t\tlabelerPolicy: registryLabelerPolicy(registryConfig.acceptLabelers),\n\t\tfetch: timedFetch(aggregatorDeadline),\n\t});\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- DID shape validated by the route before this call\n\tconst publisherDid = did as Did;\n\n\tconst releaseView = await (async () => {\n\t\tif (!version) {\n\t\t\treturn discovery.getLatestRelease({ did: publisherDid, package: slug });\n\t\t}\n\t\tlet cursor: string | undefined;\n\t\tconst seenCursors = new Set<string>();\n\t\tfor (let page = 0; page < MAX_LIST_PAGES; page++) {\n\t\t\tif (cursor !== undefined) {\n\t\t\t\tif (seenCursors.has(cursor)) break;\n\t\t\t\tseenCursors.add(cursor);\n\t\t\t}\n\t\t\tconst result = await discovery.listReleases({\n\t\t\t\tdid: publisherDid,\n\t\t\t\tpackage: slug,\n\t\t\t\tcursor,\n\t\t\t\tlimit: 50,\n\t\t\t});\n\t\t\tfor (const r of result.releases) {\n\t\t\t\tif (r.version === version) return r;\n\t\t\t}\n\t\t\tif (!result.cursor) break;\n\t\t\tcursor = result.cursor;\n\t\t}\n\t\treturn undefined;\n\t})();\n\n\tif (\n\t\t!releaseView?.release ||\n\t\treleaseView.cid !== cid ||\n\t\treleaseView.did !== publisherDid ||\n\t\treleaseView.package !== slug ||\n\t\t(version !== undefined && releaseView.version !== version) ||\n\t\treleaseView.release.package !== slug ||\n\t\treleaseView.release.version !== releaseView.version\n\t) {\n\t\treturn null;\n\t}\n\tif (evaluateRegistryReleaseWithdrawal(releaseView, discovery.labelerPolicy).withdrawn) {\n\t\treturn null;\n\t}\n\n\tconst descriptor = resolveDeclaredArtifact(releaseView.release.artifacts, kind, index);\n\tif (!descriptor || descriptor.requiresAuth || releaseView.release.auth !== undefined) return null;\n\tconst blobCid = descriptor.blob?.ref.$link;\n\tlet imageCacheUrl: URL | undefined;\n\tif (blobCid) {\n\t\tconst expected = multihashFromBlobCid(blobCid);\n\t\tif (!expected.success || expected.value !== descriptor.checksum) return null;\n\t\tconst rkey = `${slug}:${releaseView.version}`;\n\t\tconst serviceEndpoint = releaseView.artifactCaches\n\t\t\t.map(recordScopedCacheEndpoint)\n\t\t\t.find((value) => value !== null);\n\t\tif (serviceEndpoint) {\n\t\t\tconst preset = kind === \"icon\" ? \"avatar\" : kind === \"banner\" ? \"banner\" : \"feed_fullsize\";\n\t\t\tconst cacheUrl = recordScopedImageCacheUrl(\n\t\t\t\tserviceEndpoint,\n\t\t\t\tpreset,\n\t\t\t\t{\n\t\t\t\t\tdid,\n\t\t\t\t\tcollection: NSID.packageRelease,\n\t\t\t\t\trkey,\n\t\t\t\t\tcid: releaseView.cid,\n\t\t\t\t},\n\t\t\t\tblobCid,\n\t\t\t);\n\t\t\tif (!cacheUrl.success) return null;\n\t\t\timageCacheUrl = cacheUrl.value;\n\t\t}\n\t}\n\treturn {\n\t\tartifact: descriptor,\n\t\trecord: {\n\t\t\tdid,\n\t\t\tcollection: NSID.packageRelease,\n\t\t\trkey: `${slug}:${releaseView.version}`,\n\t\t\tcid: releaseView.cid,\n\t\t},\n\t\t...(imageCacheUrl ? { imageCacheUrl } : {}),\n\t};\n}\n\nfunction recordScopedCacheEndpoint(value: unknown): string | null {\n\tif (objectProperty(value, \"$type\") !== RECORD_SCOPED_BLOB_CACHE_TYPE) return null;\n\tconst endpoint = objectProperty(value, \"serviceEndpoint\");\n\treturn typeof endpoint === \"string\" ? endpoint : null;\n}\n\n/** Build bounded, SSRF-validated fetch options for cache, PDS, and URL sources. */\nfunction proxyFetchOptions(signal: AbortSignal) {\n\treturn {\n\t\tfetch: async (url: URL, init: RequestInit) =>\n\t\t\tfetchRegistryArtifactUrl(url.href, {\n\t\t\t\tsignal: init.signal instanceof AbortSignal ? init.signal : signal,\n\t\t\t\tmaxResponseBytes: MAX_IMAGE_BYTES,\n\t\t\t}),\n\t\tresolveHostname: async (hostname: string) =>\n\t\t\t(await resolveAndValidateExternalUrlTarget(`https://${hostname}/`)).addresses,\n\t\tallowHttpLocalhost: import.meta.env.DEV,\n\t\tmaxBytes: MAX_IMAGE_BYTES,\n\t\tmaxRedirects: MAX_REDIRECTS,\n\t\ttotalTimeoutMs: FETCH_TIMEOUT_MS,\n\t};\n}\n\nasync function fetchRawArtifact(\n\tresolved: ResolvedArtifact,\n\toptions: ReturnType<typeof proxyFetchOptions>,\n): Promise<\n\t| { success: true; bytes: Uint8Array; headers: Headers; checksumValid: boolean }\n\t| { success: false; code: string }\n> {\n\tconst urls: URL[] = [];\n\tconst blobCid = resolved.artifact.blob?.ref.$link;\n\tlet lastCode = \"FETCH_FAILED\";\n\tlet checksumMismatch: { bytes: Uint8Array; headers: Headers } | undefined;\n\tif (blobCid) {\n\t\tconst pds = await resolvePublisherPdsEndpoint(resolved.record.did, options);\n\t\tif (pds.success) {\n\t\t\tconst url = new URL(\"/xrpc/com.atproto.sync.getBlob\", pds.value);\n\t\t\turl.searchParams.set(\"did\", resolved.record.did);\n\t\t\turl.searchParams.set(\"cid\", blobCid);\n\t\t\turls.push(url);\n\t\t} else {\n\t\t\tlastCode = pds.error.code;\n\t\t}\n\t}\n\tif (resolved.artifact.url) urls.push(new URL(resolved.artifact.url));\n\n\tfor (const url of urls) {\n\t\tconst fetched = await fetchVerifiedResource(url, options);\n\t\tif (!fetched.success) {\n\t\t\tlastCode = fetched.error.code;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(await verifyRegistryArtifactChecksum(fetched.value.bytes, resolved.artifact.checksum))) {\n\t\t\tlastCode = \"CHECKSUM_MISMATCH\";\n\t\t\tchecksumMismatch = { bytes: fetched.value.bytes, headers: fetched.value.headers };\n\t\t\tcontinue;\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tbytes: fetched.value.bytes,\n\t\t\theaders: fetched.value.headers,\n\t\t\tchecksumValid: true,\n\t\t};\n\t}\n\tif (checksumMismatch) return { success: true, ...checksumMismatch, checksumValid: false };\n\treturn { success: false, code: lastCode };\n}\n\nfunction artifactFetchError(code: string): Response {\n\tif (code === \"CHECKSUM_MISMATCH\") {\n\t\treturn apiError(\n\t\t\t\"ARTIFACT_CHECKSUM_MISMATCH\",\n\t\t\t\"Artifact bytes do not match the approved release record\",\n\t\t\t502,\n\t\t);\n\t}\n\tif (code === \"RESOURCE_SIZE_EXCEEDED\") {\n\t\treturn apiError(\"ARTIFACT_TOO_LARGE\", \"Artifact exceeds size limit\", 413);\n\t}\n\tif (code === \"HOST_REJECTED\" || code === \"INVALID_URL\") {\n\t\treturn apiError(\"ARTIFACT_URL_REJECTED\", \"Artifact URL is not allowed\", 400);\n\t}\n\treturn apiError(\"ARTIFACT_FETCH_FAILED\", \"Failed to fetch artifact\", 502);\n}\n"],"mappings":"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"}
|
|
@@ -5,84 +5,85 @@ import "../../../../../../after-PcEvMY_6.mjs";
|
|
|
5
5
|
import "../../../../../../options-DhrI7eMv.mjs";
|
|
6
6
|
import "../../../../../../secrets-Cc_O3Kp-.mjs";
|
|
7
7
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
8
|
-
import "../../../../../../content-
|
|
8
|
+
import "../../../../../../content-DQSRZTVw.mjs";
|
|
9
9
|
import "../../../../../../object-cache-Bo6DGaC9.mjs";
|
|
10
|
-
import "../../../../../../slugify-
|
|
10
|
+
import "../../../../../../slugify-bu2-jKia.mjs";
|
|
11
11
|
import "../../../../../../request-cache-C4CIo5ad.mjs";
|
|
12
12
|
import "../../../../../../url-Dn3IStq8.mjs";
|
|
13
|
-
import "../../../../../../types-
|
|
14
|
-
import "../../../../../../revision-
|
|
15
|
-
import "../../../../../../media-
|
|
16
|
-
import "../../../../../../user-
|
|
17
|
-
import "../../../../../../taxonomy-
|
|
18
|
-
import "../../../../../../comment-
|
|
19
|
-
import "../../../../../../menus-
|
|
13
|
+
import "../../../../../../types-D2NEXtgB.mjs";
|
|
14
|
+
import "../../../../../../revision-BVp8S0e_.mjs";
|
|
15
|
+
import "../../../../../../media-Bws9f18T.mjs";
|
|
16
|
+
import "../../../../../../user-BlCTKVAm.mjs";
|
|
17
|
+
import "../../../../../../taxonomy-C_C_LBAU.mjs";
|
|
18
|
+
import "../../../../../../comment-UvIWDKcW.mjs";
|
|
19
|
+
import "../../../../../../menus-BCVSSp1z.mjs";
|
|
20
20
|
import "../../../../../../resolve-D-kqyKns.mjs";
|
|
21
|
-
import "../../../../../../redirect-
|
|
21
|
+
import "../../../../../../redirect-DiS_3mA4.mjs";
|
|
22
22
|
import "../../../../../../byline-registry-dvt4N3xV.mjs";
|
|
23
|
-
import "../../../../../../field-defs-cache-
|
|
24
|
-
import "../../../../../../byline-
|
|
25
|
-
import "../../../../../../staged-
|
|
23
|
+
import "../../../../../../field-defs-cache-Dez5iWJJ.mjs";
|
|
24
|
+
import "../../../../../../byline-BR1qhyiw.mjs";
|
|
25
|
+
import "../../../../../../staged-CD_imitH.mjs";
|
|
26
26
|
import "../../../../../../entry-locks-DJAqVweV.mjs";
|
|
27
|
-
import "../../../../../../seo-
|
|
28
|
-
import "../../../../../../cache-
|
|
29
|
-
import "../../../../../../artifacts-
|
|
30
|
-
import "../../../../../../fts-manager-
|
|
31
|
-
import "../../../../../../loader-
|
|
32
|
-
import "../../../../../../
|
|
33
|
-
import "../../../../../../
|
|
34
|
-
import
|
|
35
|
-
import "../../../../../../
|
|
36
|
-
import "../../../../../../
|
|
37
|
-
import "../../../../../../
|
|
38
|
-
import "../../../../../../
|
|
39
|
-
import "../../../../../../
|
|
40
|
-
import "../../../../../../
|
|
41
|
-
import "../../../../../../
|
|
42
|
-
import "../../../../../../
|
|
43
|
-
import "../../../../../../
|
|
44
|
-
import "../../../../../../
|
|
45
|
-
import "../../../../../../
|
|
46
|
-
import "../../../../../../
|
|
47
|
-
import "../../../../../../
|
|
48
|
-
import "../../../../../../
|
|
49
|
-
import
|
|
50
|
-
import {
|
|
51
|
-
import "../../../../../../
|
|
52
|
-
import "../../../../../../
|
|
53
|
-
import "../../../../../../
|
|
54
|
-
import "../../../../../../media
|
|
55
|
-
import "../../../../../../
|
|
56
|
-
import "../../../../../../
|
|
57
|
-
import "../../../../../../
|
|
58
|
-
import "../../../../../../
|
|
59
|
-
import "../../../../../../media-usage-
|
|
60
|
-
import "../../../../../../media-usage-
|
|
61
|
-
import "../../../../../../
|
|
62
|
-
import "../../../../../../
|
|
63
|
-
import "../../../../../../
|
|
64
|
-
import "../../../../../../
|
|
65
|
-
import "../../../../../../
|
|
66
|
-
import "../../../../../../
|
|
67
|
-
import "../../../../../../
|
|
68
|
-
import "../../../../../../
|
|
69
|
-
import "../../../../../../
|
|
70
|
-
import "../../../../../../
|
|
71
|
-
import "../../../../../../
|
|
72
|
-
import "../../../../../../
|
|
73
|
-
import "../../../../../../
|
|
74
|
-
import
|
|
75
|
-
import
|
|
76
|
-
import "../../../../../../
|
|
77
|
-
import "../../../../../../
|
|
78
|
-
import "../../../../../../
|
|
79
|
-
import "../../../../../../
|
|
80
|
-
import "../../../../../../
|
|
81
|
-
import "../../../../../../
|
|
82
|
-
import "../../../../../../
|
|
83
|
-
import
|
|
84
|
-
import
|
|
85
|
-
import {
|
|
27
|
+
import "../../../../../../seo-VZYOEy8f.mjs";
|
|
28
|
+
import "../../../../../../cache-CEU9wo_h.mjs";
|
|
29
|
+
import "../../../../../../artifacts-htGyfCSt.mjs";
|
|
30
|
+
import "../../../../../../fts-manager-Beg3e4bI.mjs";
|
|
31
|
+
import "../../../../../../loader-CswroUbe.mjs";
|
|
32
|
+
import "../../../../../../json-recordset-BUjxhr77.mjs";
|
|
33
|
+
import "../../../../../../collection-slugs-cache-e09QeJQt.mjs";
|
|
34
|
+
import "../../../../../../taxonomies-ChnU7Mc8.mjs";
|
|
35
|
+
import { n as handleRegistryUninstall, t as handleRegistryInstall } from "../../../../../../api-D-7BNHoz.mjs";
|
|
36
|
+
import "../../../../../../media-usage-work-CkLa5-nc.mjs";
|
|
37
|
+
import "../../../../../../capture-triggers-CT6dK9zd.mjs";
|
|
38
|
+
import "../../../../../../activation-Dim4YMM7.mjs";
|
|
39
|
+
import "../../../../../../registry-TUVaid9Z.mjs";
|
|
40
|
+
import "../../../../../../hash-BJaeek87.mjs";
|
|
41
|
+
import "../../../../../../zod-generator-D0JKy94C.mjs";
|
|
42
|
+
import "../../../../../../errors-B4f4It-2.mjs";
|
|
43
|
+
import "../../../../../../canonical-BudtH-Fx.mjs";
|
|
44
|
+
import "../../../../../../digest-DJ1tHCgy.mjs";
|
|
45
|
+
import "../../../../../../block-values-gCX4HBSl.mjs";
|
|
46
|
+
import "../../../../../../query-haKvLAWl.mjs";
|
|
47
|
+
import "../../../../../../schema-C4OBuv6Z.mjs";
|
|
48
|
+
import "../../../../../../relations-CA_QuMTU.mjs";
|
|
49
|
+
import "../../../../../../dashboard-D0jcgBD7.mjs";
|
|
50
|
+
import { r as getRegistryConfigInput } from "../../../../../../config-DBU6iUQB.mjs";
|
|
51
|
+
import { n as VERSION } from "../../../../../../version-DHmGpcch.mjs";
|
|
52
|
+
import "../../../../../../errors-BOYNdIo3.mjs";
|
|
53
|
+
import "../../../../../../update-check-BxNg9T6N.mjs";
|
|
54
|
+
import "../../../../../../media--dJRU6i2.mjs";
|
|
55
|
+
import "../../../../../../media-folders-Dn3C16B8.mjs";
|
|
56
|
+
import "../../../../../../content-repair-DNh5--x5.mjs";
|
|
57
|
+
import "../../../../../../settings-Dd1uivmQ.mjs";
|
|
58
|
+
import "../../../../../../site-settings-DRHfX7bq.mjs";
|
|
59
|
+
import "../../../../../../media-usage-CF0WVcLO.mjs";
|
|
60
|
+
import "../../../../../../media-usage-activation-C9HwVw5w.mjs";
|
|
61
|
+
import "../../../../../../media-usage-work-m3AWTmmC.mjs";
|
|
62
|
+
import "../../../../../../schema-DJRfvM_o.mjs";
|
|
63
|
+
import "../../../../../../block-types-CYcG56JB.mjs";
|
|
64
|
+
import "../../../../../../seo-ClB-dw9w.mjs";
|
|
65
|
+
import "../../../../../../settings-CWb84sDm.mjs";
|
|
66
|
+
import "../../../../../../sections-BMy4JVUz.mjs";
|
|
67
|
+
import { a as unwrapResult, r as handleError, t as apiError } from "../../../../../../error-CVWeIOku.mjs";
|
|
68
|
+
import { i as checkSiteWriteFence } from "../../../../../../fence-C3MUitUN.mjs";
|
|
69
|
+
import "../../../../../../settings-DS914jjE.mjs";
|
|
70
|
+
import "../../../../../../taxonomies-Dd9JJv_a.mjs";
|
|
71
|
+
import "../../../../../../manifest-schema-DNb4XmTS.mjs";
|
|
72
|
+
import "../../../../../../marketplace-CqbgeIa7.mjs";
|
|
73
|
+
import "../../../../../../types-sUHaH7lC.mjs";
|
|
74
|
+
import "../../../../../../artifact-fetch-DIh7iyOV.mjs";
|
|
75
|
+
import "../../../../../../ssrf-BcYjyM4M.mjs";
|
|
76
|
+
import "../../../../../../authoritative-records-CQlB3JzE.mjs";
|
|
77
|
+
import { n as parseBody, t as isParseError } from "../../../../../../parse-DgQ2NABT.mjs";
|
|
78
|
+
import "../../../../../../redirects-BEVSRMa2.mjs";
|
|
79
|
+
import "../../../../../../entry-lock-Df6-XhIu.mjs";
|
|
80
|
+
import "../../../../../../media-1WC65OCB.mjs";
|
|
81
|
+
import "../../../../../../comments-yiRFx3w5.mjs";
|
|
82
|
+
import "../../../../../../byline-fields-BLXZnX7N.mjs";
|
|
83
|
+
import "../../../../../../menus-BSzwObhV.mjs";
|
|
84
|
+
import "../../../../../../status-BFNdxzKc.mjs";
|
|
85
|
+
import { o as requirePerm } from "../../../../../../authorize-DPFBGbE6.mjs";
|
|
86
|
+
import { t as finalizePluginInstall } from "../../../../../../install-finalization-3JX5qQEA.mjs";
|
|
86
87
|
import { z } from "zod";
|
|
87
88
|
import { hostEnvFromVersions } from "@emdash-cms/registry-client/env";
|
|
88
89
|
|