emdash 0.40.0 → 0.41.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-CbKDcPJi.mjs +26 -0
- package/dist/action-token-CbKDcPJi.mjs.map +1 -0
- package/dist/activation-PtniBLt9.mjs +382 -0
- package/dist/activation-PtniBLt9.mjs.map +1 -0
- package/dist/adapters-C_Tf5x90.d.mts +171 -0
- package/dist/adapters-C_Tf5x90.d.mts.map +1 -0
- package/dist/allowed-origins-U1z4TdEZ.mjs +116 -0
- package/dist/allowed-origins-U1z4TdEZ.mjs.map +1 -0
- package/dist/api/route-utils.d.mts +4 -4
- package/dist/api/route-utils.mjs +46 -45
- 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-CXwQkV_m.mjs +5122 -0
- package/dist/api-CXwQkV_m.mjs.map +1 -0
- package/dist/api-tokens-89WlohEN.mjs +166 -0
- package/dist/api-tokens-89WlohEN.mjs.map +1 -0
- package/dist/apply-Do3KNnUk.mjs +1659 -0
- package/dist/apply-Do3KNnUk.mjs.map +1 -0
- package/dist/approvals-CAX9Yw33.mjs +460 -0
- package/dist/approvals-CAX9Yw33.mjs.map +1 -0
- package/dist/artifact-fetch-B9W4CEST.mjs +659 -0
- package/dist/artifact-fetch-B9W4CEST.mjs.map +1 -0
- package/dist/astro/index.d.mts +14 -14
- package/dist/astro/index.mjs +26 -30
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +12 -12
- package/dist/astro/middleware/auth.mjs +10 -10
- package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
- package/dist/astro/middleware/redirect.mjs +7 -7
- package/dist/astro/middleware/request-context.mjs +3 -3
- 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 +110 -106
- 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 +6 -6
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +7 -7
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +17 -17
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +17 -17
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +17 -17
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +23 -23
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +23 -23
- package/dist/astro/routes/api/admin/bylines/index.mjs +23 -23
- 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/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 +22 -22
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +22 -22
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +25 -25
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +31 -31
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +22 -22
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +22 -22
- 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 -68
- 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 -67
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +72 -68
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +82 -78
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +72 -68
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +5 -5
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -67
- 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 +81 -77
- 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 -67
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +72 -68
- 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 +83 -79
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -9
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +74 -70
- 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 -68
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -67
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +6 -6
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -67
- 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 +5 -5
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -67
- 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 +40 -40
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +40 -40
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +43 -43
- package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +43 -43
- package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +43 -43
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs +44 -44
- package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +44 -44
- package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +44 -44
- package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +44 -44
- package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +42 -42
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs +44 -44
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +5 -5
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +15 -15
- 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/invite/accept.mjs +4 -4
- package/dist/astro/routes/api/auth/invite/complete.mjs +18 -18
- 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 +18 -18
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +14 -14
- 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 +3 -3
- 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.mjs +19 -19
- 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 +18 -18
- package/dist/astro/routes/api/auth/signup/complete.mjs +18 -18
- package/dist/astro/routes/api/auth/signup/request.mjs +17 -17
- package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
- 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.mjs +17 -17
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +17 -17
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
- 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 +31 -31
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +17 -17
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts +1 -2
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +42 -53
- 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 +34 -29
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +17 -17
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +25 -24
- 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.mjs +17 -17
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -18
- 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 +15 -15
- package/dist/astro/routes/api/content/_collection_/trash.mjs +15 -15
- package/dist/astro/routes/api/dashboard.mjs +10 -9
- 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/health.mjs +6 -6
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +23 -23
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +6 -6
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress/execute.mjs +16 -16
- package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
- package/dist/astro/routes/api/import/wordpress/media.mjs +19 -19
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +18 -18
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +28 -28
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +23 -23
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +34 -34
- package/dist/astro/routes/api/manifest.mjs +6 -6
- package/dist/astro/routes/api/mcp.mjs +98 -118
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +19 -19
- package/dist/astro/routes/api/media/_id_/replace.mjs +16 -16
- package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
- package/dist/astro/routes/api/media/_id_/usage.mjs +33 -33
- package/dist/astro/routes/api/media/_id_.mjs +31 -31
- package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
- package/dist/astro/routes/api/media/file/_...key_.mjs +9 -9
- 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 +18 -18
- package/dist/astro/routes/api/media.mjs +35 -35
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +17 -17
- package/dist/astro/routes/api/menus/_name_/items.mjs +17 -17
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +17 -17
- package/dist/astro/routes/api/menus/_name_/translations.mjs +17 -17
- package/dist/astro/routes/api/menus/_name_.mjs +17 -17
- package/dist/astro/routes/api/menus/index.mjs +17 -17
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.d.mts +2 -1
- package/dist/astro/routes/api/oauth/device/authorize.d.mts.map +1 -1
- package/dist/astro/routes/api/oauth/device/authorize.mjs +23 -9
- package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
- package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
- package/dist/astro/routes/api/oauth/register.mjs +5 -5
- 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 +20 -20
- 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_.mjs +19 -19
- package/dist/astro/routes/api/redirects/index.mjs +19 -19
- package/dist/astro/routes/api/relations/_id_/index.mjs +34 -29
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +36 -31
- 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 +5 -5
- package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +71 -67
- 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 -67
- 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 -67
- package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +73 -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 -67
- 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 -67
- 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 -67
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +71 -67
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +71 -67
- package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +16 -16
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -67
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +71 -67
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +19 -19
- package/dist/astro/routes/api/search/index.mjs +18 -18
- package/dist/astro/routes/api/search/rebuild.mjs +19 -19
- package/dist/astro/routes/api/search/stats.mjs +9 -9
- package/dist/astro/routes/api/search/suggest.mjs +18 -18
- package/dist/astro/routes/api/sections/_slug_.mjs +18 -18
- package/dist/astro/routes/api/sections/index.mjs +18 -18
- 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/email.mjs +6 -6
- package/dist/astro/routes/api/settings.mjs +21 -21
- package/dist/astro/routes/api/setup/admin-verify.mjs +19 -19
- package/dist/astro/routes/api/setup/admin.mjs +18 -18
- package/dist/astro/routes/api/setup/dev-bypass.mjs +45 -39
- 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 +80 -49
- 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/snapshot.mjs +9 -9
- package/dist/astro/routes/api/snapshot.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -23
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -23
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +23 -23
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -23
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -22
- package/dist/astro/routes/api/taxonomies/_name_.mjs +23 -23
- package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +36 -35
- package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +23 -23
- package/dist/astro/routes/api/themes/preview.mjs +6 -6
- package/dist/astro/routes/api/typegen.mjs +8 -8
- package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +19 -19
- 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.mjs +16 -16
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +19 -19
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +19 -19
- package/dist/astro/routes/api/widget-areas/_name_.mjs +9 -9
- package/dist/astro/routes/api/widget-areas/index.mjs +19 -19
- package/dist/astro/routes/api/widget-components.mjs +5 -5
- package/dist/astro/routes/robots.txt.mjs +6 -6
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
- package/dist/astro/routes/sitemap.xml.mjs +7 -7
- package/dist/astro/types.d.mts +28 -18
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/audit-CrgmE9LE.mjs +127 -0
- package/dist/audit-CrgmE9LE.mjs.map +1 -0
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/authoritative-records-C2YzIdbu.mjs +5172 -0
- package/dist/authoritative-records-C2YzIdbu.mjs.map +1 -0
- package/dist/authorize-WgdKF8QY.mjs +49 -0
- package/dist/authorize-WgdKF8QY.mjs.map +1 -0
- package/dist/backup-Ck8_lMO3.mjs +246 -0
- package/dist/backup-Ck8_lMO3.mjs.map +1 -0
- package/dist/block-types-BQ90asVI.mjs +132 -0
- package/dist/block-types-BQ90asVI.mjs.map +1 -0
- package/dist/block-values-ACFqgB1D.mjs +175 -0
- package/dist/block-values-ACFqgB1D.mjs.map +1 -0
- package/dist/bundle-Db1iNMv_.mjs +667 -0
- package/dist/bundle-Db1iNMv_.mjs.map +1 -0
- package/dist/byline-BayaYGoj.mjs +909 -0
- package/dist/byline-BayaYGoj.mjs.map +1 -0
- package/dist/byline-fields-B8HH-35f.mjs +254 -0
- package/dist/byline-fields-B8HH-35f.mjs.map +1 -0
- package/dist/byline-fields-hMPjf6Eu.mjs +123 -0
- package/dist/byline-fields-hMPjf6Eu.mjs.map +1 -0
- package/dist/byline-registry-B_EK_TQf.mjs +406 -0
- package/dist/byline-registry-B_EK_TQf.mjs.map +1 -0
- package/dist/bylines-DFAaFXWi.mjs +214 -0
- package/dist/bylines-DFAaFXWi.mjs.map +1 -0
- package/dist/bylines-DkIxUxmr.mjs +232 -0
- package/dist/bylines-DkIxUxmr.mjs.map +1 -0
- package/dist/cache-DkvhQ8XE.mjs +108 -0
- package/dist/cache-DkvhQ8XE.mjs.map +1 -0
- package/dist/canonical-CcSuuTlH.mjs +174 -0
- package/dist/canonical-CcSuuTlH.mjs.map +1 -0
- package/dist/capture-triggers-DJEoOTOq.mjs +362 -0
- package/dist/capture-triggers-DJEoOTOq.mjs.map +1 -0
- package/dist/challenge-store-CvBl81AQ.mjs +51 -0
- package/dist/challenge-store-CvBl81AQ.mjs.map +1 -0
- package/dist/checksum-CClweQzI.mjs +162 -0
- package/dist/checksum-CClweQzI.mjs.map +1 -0
- package/dist/chrome-tags-D5caJwwp.mjs +24 -0
- package/dist/chrome-tags-D5caJwwp.mjs.map +1 -0
- package/dist/chunks-DwBaj8aT.mjs +25 -0
- package/dist/chunks-DwBaj8aT.mjs.map +1 -0
- package/dist/cli/index.mjs +374 -761
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +18 -18
- package/dist/client/index.mjs +2 -2
- package/dist/collection-deletion-CLCdXsnV.mjs +436 -0
- package/dist/collection-deletion-CLCdXsnV.mjs.map +1 -0
- package/dist/collection-deletion-processor-hNw8x01F.mjs +217 -0
- package/dist/collection-deletion-processor-hNw8x01F.mjs.map +1 -0
- package/dist/collection-slugs-cache-CUuiduLq.mjs +85 -0
- package/dist/collection-slugs-cache-CUuiduLq.mjs.map +1 -0
- package/dist/comment-D2uvL63j.mjs +313 -0
- package/dist/comment-D2uvL63j.mjs.map +1 -0
- package/dist/comment-reaction-DevUuzg4.mjs +85 -0
- package/dist/comment-reaction-DevUuzg4.mjs.map +1 -0
- package/dist/comments-Cq0s7_hO.mjs +195 -0
- package/dist/comments-Cq0s7_hO.mjs.map +1 -0
- package/dist/comments-M4EDYAHw.mjs +99 -0
- package/dist/comments-M4EDYAHw.mjs.map +1 -0
- package/dist/components-CuIGwXMs.mjs +108 -0
- package/dist/components-CuIGwXMs.mjs.map +1 -0
- package/dist/config-52Ea5IWt.d.mts +39 -0
- package/dist/config-52Ea5IWt.d.mts.map +1 -0
- package/dist/config-CCz3xOLc.mjs +242 -0
- package/dist/config-CCz3xOLc.mjs.map +1 -0
- package/dist/config-D3d5Qudq.d.mts +6669 -0
- package/dist/config-D3d5Qudq.d.mts.map +1 -0
- package/dist/content-CbnufDsM.mjs +2018 -0
- package/dist/content-CbnufDsM.mjs.map +1 -0
- package/dist/content-list-query-D_7B1FE5.d.mts +26 -0
- package/dist/content-list-query-D_7B1FE5.d.mts.map +1 -0
- package/dist/content-policy-CYu6K1KB.mjs +46 -0
- package/dist/content-policy-CYu6K1KB.mjs.map +1 -0
- package/dist/content-repair-DlDUgFGp.mjs +442 -0
- package/dist/content-repair-DlDUgFGp.mjs.map +1 -0
- package/dist/context-CGQLA1-a.mjs +1922 -0
- package/dist/context-CGQLA1-a.mjs.map +1 -0
- package/dist/cron-c4D5C5Fx.mjs +284 -0
- package/dist/cron-c4D5C5Fx.mjs.map +1 -0
- package/dist/dashboard-CBq9kmOn.mjs +151 -0
- package/dist/dashboard-CBq9kmOn.mjs.map +1 -0
- 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-DPsys51U.mjs +81 -0
- package/dist/default-DPsys51U.mjs.map +1 -0
- package/dist/deferred-tasks-CZ7rzBdo.d.mts +9 -0
- package/dist/deferred-tasks-CZ7rzBdo.d.mts.map +1 -0
- package/dist/dev-typegen-HRxwLRcT.mjs +29 -0
- package/dist/dev-typegen-HRxwLRcT.mjs.map +1 -0
- package/dist/device-flow-OcSqE9uY.mjs +521 -0
- package/dist/device-flow-OcSqE9uY.mjs.map +1 -0
- package/dist/digest-DVZ--cE9.mjs +194 -0
- package/dist/digest-DVZ--cE9.mjs.map +1 -0
- package/dist/direct-executor-DyjAqkpT.mjs +104 -0
- package/dist/direct-executor-DyjAqkpT.mjs.map +1 -0
- package/dist/dist-FPR93_xf.mjs +810 -0
- package/dist/dist-FPR93_xf.mjs.map +1 -0
- package/dist/email-console-DyQIgEnz.mjs +50 -0
- package/dist/email-console-DyQIgEnz.mjs.map +1 -0
- package/dist/email-locale-BYb16rVd.mjs +25 -0
- package/dist/email-locale-BYb16rVd.mjs.map +1 -0
- package/dist/emdash-runtime-CrzxJFmF.mjs +4214 -0
- package/dist/emdash-runtime-CrzxJFmF.mjs.map +1 -0
- package/dist/enrich-DBtCncE2.mjs +194 -0
- package/dist/enrich-DBtCncE2.mjs.map +1 -0
- package/dist/entry-lock-BN5y4YbO.d.mts +4481 -0
- package/dist/entry-lock-BN5y4YbO.d.mts.map +1 -0
- package/dist/entry-lock-BaRBHCsH.mjs +1173 -0
- package/dist/entry-lock-BaRBHCsH.mjs.map +1 -0
- package/dist/entry-lock-C6NcnZPV.mjs +163 -0
- package/dist/entry-lock-C6NcnZPV.mjs.map +1 -0
- package/dist/entry-locks-BTyQLdbC.mjs +167 -0
- package/dist/entry-locks-BTyQLdbC.mjs.map +1 -0
- package/dist/error-BfsNNrIE.mjs +90 -0
- package/dist/error-BfsNNrIE.mjs.map +1 -0
- package/dist/errors-BN1QAnEY.mjs +460 -0
- package/dist/errors-BN1QAnEY.mjs.map +1 -0
- package/dist/errors-Bt3goF8I.mjs +120 -0
- package/dist/errors-Bt3goF8I.mjs.map +1 -0
- package/dist/escape-BveidMa2.mjs +9 -0
- package/dist/escape-BveidMa2.mjs.map +1 -0
- package/dist/fence-Bb_IbCxI.mjs +162 -0
- package/dist/fence-Bb_IbCxI.mjs.map +1 -0
- package/dist/field-defs-cache-CsZctvbu.mjs +77 -0
- package/dist/field-defs-cache-CsZctvbu.mjs.map +1 -0
- package/dist/field-map-6m9rF49t.mjs +83 -0
- package/dist/field-map-6m9rF49t.mjs.map +1 -0
- package/dist/focal-point-CZ3d1wK5.mjs +23 -0
- package/dist/focal-point-CZ3d1wK5.mjs.map +1 -0
- package/dist/fts-manager-CCaZTp8y.mjs +443 -0
- package/dist/fts-manager-CCaZTp8y.mjs.map +1 -0
- package/dist/gc-xowRjczI.mjs +75 -0
- package/dist/gc-xowRjczI.mjs.map +1 -0
- package/dist/hash-COVK27Pc.mjs +37 -0
- package/dist/hash-COVK27Pc.mjs.map +1 -0
- package/dist/hook-result-CYSk0XFe.d.mts +31 -0
- package/dist/hook-result-CYSk0XFe.d.mts.map +1 -0
- package/dist/hreflang-CChPV7jx.mjs +105 -0
- package/dist/hreflang-CChPV7jx.mjs.map +1 -0
- package/dist/hreflang-DRslq3QI.d.mts +50 -0
- package/dist/hreflang-DRslq3QI.d.mts.map +1 -0
- package/dist/http-route-dispatch-CAdp2onn.mjs +339 -0
- package/dist/http-route-dispatch-CAdp2onn.mjs.map +1 -0
- package/dist/identity-NVTOOQyq.mjs +35 -0
- package/dist/identity-NVTOOQyq.mjs.map +1 -0
- package/dist/import-wpSO2N0x.mjs +2020 -0
- package/dist/import-wpSO2N0x.mjs.map +1 -0
- package/dist/index-CDs2wq4X.d.mts +623 -0
- package/dist/index-CDs2wq4X.d.mts.map +1 -0
- package/dist/index.d.mts +24 -24
- package/dist/index.mjs +103 -101
- package/dist/install-finalization-D9R9R-W8.mjs +58 -0
- package/dist/install-finalization-D9R9R-W8.mjs.map +1 -0
- package/dist/keys-Bck6LBfF.mjs +61 -0
- package/dist/keys-Bck6LBfF.mjs.map +1 -0
- package/dist/kinds-CYmRESWj.mjs +974 -0
- package/dist/kinds-CYmRESWj.mjs.map +1 -0
- package/dist/lifecycle-C815ZQfV.mjs +25 -0
- package/dist/lifecycle-C815ZQfV.mjs.map +1 -0
- package/dist/load-D99axixL.mjs +28 -0
- package/dist/load-D99axixL.mjs.map +1 -0
- package/dist/loader-CrRPfkHS.mjs +1197 -0
- package/dist/loader-CrRPfkHS.mjs.map +1 -0
- package/dist/loops-DMKlygqX.mjs +203 -0
- package/dist/loops-DMKlygqX.mjs.map +1 -0
- package/dist/manifest-builder-BQzCHNgB.mjs +189 -0
- package/dist/manifest-builder-BQzCHNgB.mjs.map +1 -0
- package/dist/manifest-schema-Ci2gmd0u.mjs +492 -0
- package/dist/manifest-schema-Ci2gmd0u.mjs.map +1 -0
- package/dist/media/image-endpoint.mjs +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +4 -4
- package/dist/media/local-runtime.d.mts +14 -14
- package/dist/media/local-runtime.mjs +6 -6
- package/dist/media-BUQePMxP.mjs +373 -0
- package/dist/media-BUQePMxP.mjs.map +1 -0
- package/dist/media-DH8ibNlY.mjs +294 -0
- package/dist/media-DH8ibNlY.mjs.map +1 -0
- package/dist/media-OEIQ3bVc.mjs +408 -0
- package/dist/media-OEIQ3bVc.mjs.map +1 -0
- package/dist/media-allowlist-pYtaBA95.mjs +44 -0
- package/dist/media-allowlist-pYtaBA95.mjs.map +1 -0
- package/dist/media-folders-Bf8_s4de.mjs +210 -0
- package/dist/media-folders-Bf8_s4de.mjs.map +1 -0
- package/dist/media-url-C6klEuNd.mjs +43 -0
- package/dist/media-url-C6klEuNd.mjs.map +1 -0
- package/dist/media-usage-D7Y64m6v.mjs +1629 -0
- package/dist/media-usage-D7Y64m6v.mjs.map +1 -0
- package/dist/media-usage-activation-DrqbmgLA.mjs +78 -0
- package/dist/media-usage-activation-DrqbmgLA.mjs.map +1 -0
- package/dist/media-usage-work-DommYhYA.mjs +152 -0
- package/dist/media-usage-work-DommYhYA.mjs.map +1 -0
- package/dist/media-usage-work-HU63hNDu.mjs +586 -0
- package/dist/media-usage-work-HU63hNDu.mjs.map +1 -0
- package/dist/menus-BQfusWEC.mjs +3608 -0
- package/dist/menus-BQfusWEC.mjs.map +1 -0
- package/dist/menus-BtwjQt5s.mjs +753 -0
- package/dist/menus-BtwjQt5s.mjs.map +1 -0
- package/dist/menus-p_M1V7J_.mjs +139 -0
- package/dist/menus-p_M1V7J_.mjs.map +1 -0
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.mjs +3 -3
- package/dist/mime-C94qBG-P.mjs +36 -0
- package/dist/mime-C94qBG-P.mjs.map +1 -0
- package/dist/mode-DpYW3w6U.mjs +23 -0
- package/dist/mode-DpYW3w6U.mjs.map +1 -0
- package/dist/node-sqlite-compat-pWFw0lcc.mjs +46 -0
- package/dist/node-sqlite-compat-pWFw0lcc.mjs.map +1 -0
- package/dist/normalize-DduyxBjf.mjs +191 -0
- package/dist/normalize-DduyxBjf.mjs.map +1 -0
- package/dist/oauth-authorization-DAXsH1H9.mjs +274 -0
- package/dist/oauth-authorization-DAXsH1H9.mjs.map +1 -0
- package/dist/oauth-clients-DENiDQri.mjs +266 -0
- package/dist/oauth-clients-DENiDQri.mjs.map +1 -0
- package/dist/oauth-state-store-y8mEYVq9.mjs +50 -0
- package/dist/oauth-state-store-y8mEYVq9.mjs.map +1 -0
- package/dist/oauth-user-lookup-CtTYAy-O.mjs +26 -0
- package/dist/oauth-user-lookup-CtTYAy-O.mjs.map +1 -0
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/options-BYa1FgIM.d.mts +81 -0
- package/dist/options-BYa1FgIM.d.mts.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.mjs +5 -5
- package/dist/parse-CORGGhHf.mjs +81 -0
- package/dist/parse-CORGGhHf.mjs.map +1 -0
- package/dist/parse-avNM1xWV.d.mts +168 -0
- package/dist/parse-avNM1xWV.d.mts.map +1 -0
- package/dist/passkey-config-Dih5YeIS.mjs +46 -0
- package/dist/passkey-config-Dih5YeIS.mjs.map +1 -0
- package/dist/paths-d51RFm8M.mjs +77 -0
- package/dist/paths-d51RFm8M.mjs.map +1 -0
- package/dist/patterns-CoqlXUvk.mjs +145 -0
- package/dist/patterns-CoqlXUvk.mjs.map +1 -0
- package/dist/placeholder-D2aksPMF.d.mts +306 -0
- package/dist/placeholder-D2aksPMF.d.mts.map +1 -0
- package/dist/plan-DqeZKuaR.mjs +135 -0
- package/dist/plan-DqeZKuaR.mjs.map +1 -0
- package/dist/plugin-test-runtime.d.mts +14 -14
- package/dist/plugin-test-runtime.mjs +110 -107
- package/dist/plugin-types.d.mts +2 -2
- package/dist/plugin-utils.d.mts +12 -12
- package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
- package/dist/plugins/adapt-sandbox-entry.mjs +3 -3
- package/dist/plugins/host.d.mts +5 -5
- package/dist/plugins/host.mjs +42 -41
- package/dist/plugins-Bb7oqjQA.mjs +277 -0
- package/dist/plugins-Bb7oqjQA.mjs.map +1 -0
- package/dist/policy-BcEqut3n.mjs +45 -0
- package/dist/policy-BcEqut3n.mjs.map +1 -0
- package/dist/portable-text-DXE8ymtD.mjs +307 -0
- package/dist/portable-text-DXE8ymtD.mjs.map +1 -0
- package/dist/preview-DEDWbwA_.mjs +107 -0
- package/dist/preview-DEDWbwA_.mjs.map +1 -0
- package/dist/protocol-BJbTzvwl.d.mts +61 -0
- package/dist/protocol-BJbTzvwl.d.mts.map +1 -0
- package/dist/public-submission-D9c9S14m.mjs +250 -0
- package/dist/public-submission-D9c9S14m.mjs.map +1 -0
- package/dist/public-url-CIRe-2T6.mjs +101 -0
- package/dist/public-url-CIRe-2T6.mjs.map +1 -0
- package/dist/query-BzifXlPS.mjs +1156 -0
- package/dist/query-BzifXlPS.mjs.map +1 -0
- package/dist/query-OzMJ6vJP.mjs +41 -0
- package/dist/query-OzMJ6vJP.mjs.map +1 -0
- package/dist/rate-limit-Csp60Vik.mjs +120 -0
- package/dist/rate-limit-Csp60Vik.mjs.map +1 -0
- package/dist/receipt-B-aU4hpJ.mjs +43 -0
- package/dist/receipt-B-aU4hpJ.mjs.map +1 -0
- package/dist/redirect-CDSw1sU3.mjs +17 -0
- package/dist/redirect-CDSw1sU3.mjs.map +1 -0
- package/dist/redirect-D1ArbO85.mjs +411 -0
- package/dist/redirect-D1ArbO85.mjs.map +1 -0
- package/dist/redirects-BjTwDTsV.mjs +148 -0
- package/dist/redirects-BjTwDTsV.mjs.map +1 -0
- package/dist/redirects-Ck50kH3n.mjs +446 -0
- package/dist/redirects-Ck50kH3n.mjs.map +1 -0
- package/dist/registry/testing.mjs +3 -3
- package/dist/registry-CFcNCayZ.mjs +6754 -0
- package/dist/registry-CFcNCayZ.mjs.map +1 -0
- package/dist/relations-Cfaa1fDl.mjs +776 -0
- package/dist/relations-Cfaa1fDl.mjs.map +1 -0
- package/dist/request-cache-iHRlHx1d.mjs +104 -0
- package/dist/request-cache-iHRlHx1d.mjs.map +1 -0
- package/dist/request-context.d.mts +1 -1
- package/dist/request-meta-D47mqyev.mjs +141 -0
- package/dist/request-meta-D47mqyev.mjs.map +1 -0
- package/dist/resolve-BPE8sMvx.mjs +99 -0
- package/dist/resolve-BPE8sMvx.mjs.map +1 -0
- package/dist/resolve-C0s1E_fH.mjs +199 -0
- package/dist/resolve-C0s1E_fH.mjs.map +1 -0
- package/dist/revision-j1p4-bOj.mjs +302 -0
- package/dist/revision-j1p4-bOj.mjs.map +1 -0
- package/dist/route-wire-C9PJV9aL.mjs +197 -0
- package/dist/route-wire-C9PJV9aL.mjs.map +1 -0
- package/dist/routes-lyYw0mMf.mjs +272 -0
- package/dist/routes-lyYw0mMf.mjs.map +1 -0
- package/dist/runner-B3eyB9Gb.mjs +6121 -0
- package/dist/runner-B3eyB9Gb.mjs.map +1 -0
- package/dist/runner-DoYH2Jcu.d.mts +68 -0
- package/dist/runner-DoYH2Jcu.d.mts.map +1 -0
- package/dist/runtime.d.mts +13 -13
- package/dist/runtime.mjs +3 -3
- package/dist/schema-BAayK46S.mjs +13 -0
- package/dist/schema-BAayK46S.mjs.map +1 -0
- package/dist/schema-Gqcl-8G4.mjs +815 -0
- package/dist/schema-Gqcl-8G4.mjs.map +1 -0
- package/dist/scopes-BqPOKoKf.mjs +34 -0
- package/dist/scopes-BqPOKoKf.mjs.map +1 -0
- package/dist/search-YJKPIEV6.mjs +448 -0
- package/dist/search-YJKPIEV6.mjs.map +1 -0
- package/dist/sections-BR_e-wK5.mjs +346 -0
- package/dist/sections-BR_e-wK5.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +37 -31
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +22 -21
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo-Dsj8hy3j.mjs +114 -0
- package/dist/seo-Dsj8hy3j.mjs.map +1 -0
- package/dist/seo-XvH4LNNp.mjs +133 -0
- package/dist/seo-XvH4LNNp.mjs.map +1 -0
- package/dist/service-BsVG05gS.mjs +150 -0
- package/dist/service-BsVG05gS.mjs.map +1 -0
- package/dist/session-user-DgKbYrlj.mjs +51 -0
- package/dist/session-user-DgKbYrlj.mjs.map +1 -0
- package/dist/settings-CNPUntkh.mjs +51 -0
- package/dist/settings-CNPUntkh.mjs.map +1 -0
- package/dist/settings-D5EHi0Tk.mjs +439 -0
- package/dist/settings-D5EHi0Tk.mjs.map +1 -0
- package/dist/settings-DSfE7wOa.mjs +61 -0
- package/dist/settings-DSfE7wOa.mjs.map +1 -0
- package/dist/setup-complete-B8W8sJ9v.mjs +26 -0
- package/dist/setup-complete-B8W8sJ9v.mjs.map +1 -0
- package/dist/setup-nonce-DnSBP260.mjs +25 -0
- package/dist/setup-nonce-DnSBP260.mjs.map +1 -0
- package/dist/site-settings-NGzdrt7O.mjs +50 -0
- package/dist/site-settings-NGzdrt7O.mjs.map +1 -0
- package/dist/site-url-D6JB7tLW.mjs +16 -0
- package/dist/site-url-D6JB7tLW.mjs.map +1 -0
- package/dist/snapshot-CdcwwWAf.mjs +414 -0
- package/dist/snapshot-CdcwwWAf.mjs.map +1 -0
- package/dist/ssrf-Dv0_tRpo.mjs +406 -0
- package/dist/ssrf-Dv0_tRpo.mjs.map +1 -0
- package/dist/stage-CUjhED3P.mjs +662 -0
- package/dist/stage-CUjhED3P.mjs.map +1 -0
- package/dist/staged-C36IWXff.mjs +659 -0
- package/dist/staged-C36IWXff.mjs.map +1 -0
- package/dist/state-CKouMCSY.mjs +153 -0
- package/dist/state-CKouMCSY.mjs.map +1 -0
- package/dist/status-lzyj4Uu7.mjs +30 -0
- package/dist/status-lzyj4Uu7.mjs.map +1 -0
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +1 -1
- package/dist/storage-query-B-cWcTjJ.d.mts +1594 -0
- package/dist/storage-query-B-cWcTjJ.d.mts.map +1 -0
- package/dist/tar-DsTXX6ch.mjs +449 -0
- package/dist/tar-DsTXX6ch.mjs.map +1 -0
- package/dist/target-DLQCwp_Z.mjs +27 -0
- package/dist/target-DLQCwp_Z.mjs.map +1 -0
- package/dist/taxonomies-BlAjr4BL.mjs +697 -0
- package/dist/taxonomies-BlAjr4BL.mjs.map +1 -0
- package/dist/taxonomies-Byyo7LOZ.mjs +939 -0
- package/dist/taxonomies-Byyo7LOZ.mjs.map +1 -0
- package/dist/taxonomy-CKDwM61Y.mjs +525 -0
- package/dist/taxonomy-CKDwM61Y.mjs.map +1 -0
- package/dist/tokens-BojXlk49.mjs +171 -0
- package/dist/tokens-BojXlk49.mjs.map +1 -0
- package/dist/transaction-DLPQWik1.mjs +29 -0
- package/dist/transaction-DLPQWik1.mjs.map +1 -0
- package/dist/transfer-XSTh2BCr.mjs +8706 -0
- package/dist/transfer-XSTh2BCr.mjs.map +1 -0
- package/dist/transfer-download-DkoCDA9d.mjs +33 -0
- package/dist/transfer-download-DkoCDA9d.mjs.map +1 -0
- package/dist/transfer-iQ26J-RT.mjs +166 -0
- package/dist/transfer-iQ26J-RT.mjs.map +1 -0
- package/dist/transformations-C7RQabKQ.mjs +196 -0
- package/dist/transformations-C7RQabKQ.mjs.map +1 -0
- package/dist/transport-D3RulfD6.mjs +136 -0
- package/dist/transport-D3RulfD6.mjs.map +1 -0
- package/dist/transport-DhlZlf4D.d.mts +42 -0
- package/dist/transport-DhlZlf4D.d.mts.map +1 -0
- package/dist/trusted-proxy-B6ECOZJc.mjs +51 -0
- package/dist/trusted-proxy-B6ECOZJc.mjs.map +1 -0
- package/dist/turnstile-lqUiY7lP.mjs +53 -0
- package/dist/turnstile-lqUiY7lP.mjs.map +1 -0
- package/dist/types-4Dn9bZhu.mjs +77 -0
- package/dist/types-4Dn9bZhu.mjs.map +1 -0
- package/dist/types-5LSo7PPx.d.mts +85 -0
- package/dist/types-5LSo7PPx.d.mts.map +1 -0
- package/dist/types-BQ3hwYJT.d.mts +896 -0
- package/dist/types-BQ3hwYJT.d.mts.map +1 -0
- package/dist/types-BYEk7qo3.d.mts +198 -0
- package/dist/types-BYEk7qo3.d.mts.map +1 -0
- package/dist/types-CJKsWVFR.mjs +199 -0
- package/dist/types-CJKsWVFR.mjs.map +1 -0
- package/dist/types-Ca_w8mmY.d.mts +363 -0
- package/dist/types-Ca_w8mmY.d.mts.map +1 -0
- package/dist/types-CkE41ZAG.mjs +18 -0
- package/dist/types-CkE41ZAG.mjs.map +1 -0
- package/dist/types-D0aJW2uR.d.mts +1641 -0
- package/dist/types-D0aJW2uR.d.mts.map +1 -0
- package/dist/types-DbpN4Qto.d.mts +372 -0
- package/dist/types-DbpN4Qto.d.mts.map +1 -0
- package/dist/types-ILDI1sdY.mjs +16 -0
- package/dist/types-ILDI1sdY.mjs.map +1 -0
- package/dist/types-OC5c-edM.mjs +22 -0
- package/dist/types-OC5c-edM.mjs.map +1 -0
- package/dist/types-aOOxRSx6.mjs +103 -0
- package/dist/types-aOOxRSx6.mjs.map +1 -0
- package/dist/types-m1WbUffD.d.mts +198 -0
- package/dist/types-m1WbUffD.d.mts.map +1 -0
- package/dist/types-uxLoPBio.d.mts +124 -0
- package/dist/types-uxLoPBio.d.mts.map +1 -0
- package/dist/types-we5uR-tV.d.mts +287 -0
- package/dist/types-we5uR-tV.d.mts.map +1 -0
- package/dist/upload-attempts-DduMy6B0.mjs +32 -0
- package/dist/upload-attempts-DduMy6B0.mjs.map +1 -0
- package/dist/url-pattern-B3EwxAAk.mjs +33 -0
- package/dist/url-pattern-B3EwxAAk.mjs.map +1 -0
- package/dist/user-ElwQjTQT.mjs +171 -0
- package/dist/user-ElwQjTQT.mjs.map +1 -0
- package/dist/utils-BlAXmfOG.mjs +439 -0
- package/dist/utils-BlAXmfOG.mjs.map +1 -0
- package/dist/validate-CH0X5b2c.d.mts +468 -0
- package/dist/validate-CH0X5b2c.d.mts.map +1 -0
- package/dist/validate-CfgRpcjA.mjs +492 -0
- package/dist/validate-CfgRpcjA.mjs.map +1 -0
- package/dist/validation-DvYJtv4k.mjs +218 -0
- package/dist/validation-DvYJtv4k.mjs.map +1 -0
- package/dist/version-DgYjhTud.mjs +9 -0
- package/dist/version-DgYjhTud.mjs.map +1 -0
- package/dist/version-Dq71scUb.mjs +7 -0
- package/dist/version-Dq71scUb.mjs.map +1 -0
- package/dist/widgets-ChFIj0be.mjs +126 -0
- package/dist/widgets-ChFIj0be.mjs.map +1 -0
- package/dist/wxr-taxonomies-CBZMp2YX.mjs +372 -0
- package/dist/wxr-taxonomies-CBZMp2YX.mjs.map +1 -0
- package/dist/wxr-taxonomies-DlKDpWN1.d.mts +34 -0
- package/dist/wxr-taxonomies-DlKDpWN1.d.mts.map +1 -0
- package/dist/zod-generator-DmTKI-Ig.mjs +426 -0
- package/dist/zod-generator-DmTKI-Ig.mjs.map +1 -0
- package/package.json +7 -6
- package/src/api/handlers/content.ts +593 -16
- package/src/api/handlers/device-flow.ts +74 -21
- package/src/api/handlers/index.ts +1 -0
- package/src/api/handlers/manifest.ts +79 -5
- package/src/api/handlers/media-upload.ts +17 -71
- package/src/api/handlers/media.ts +97 -3
- package/src/api/handlers/relations.ts +638 -157
- package/src/api/handlers/revision.ts +30 -0
- package/src/api/handlers/schema.ts +403 -1
- package/src/api/handlers/snapshot.ts +257 -3
- package/src/api/handlers/staged-references.ts +142 -0
- package/src/api/handlers/validate-references.ts +146 -0
- package/src/api/schemas/content.ts +13 -0
- package/src/api/schemas/relations.ts +54 -44
- package/src/api/schemas/schema.ts +14 -0
- package/src/astro/integration/routes.ts +15 -19
- package/src/astro/integration/vite-config.ts +10 -4
- package/src/astro/middleware.ts +1 -0
- package/src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts +11 -54
- package/src/astro/routes/api/content/[collection]/[id].ts +3 -1
- package/src/astro/routes/api/oauth/device/authorize.ts +33 -4
- package/src/astro/routes/api/relations/index.ts +4 -4
- package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +6 -2
- package/src/astro/routes/api/setup/index.ts +66 -23
- package/src/astro/routes/api/snapshot.ts +2 -1
- package/src/astro/types.ts +10 -0
- package/src/cleanup.ts +10 -0
- package/src/cli/commands/export-seed.ts +510 -89
- package/src/components/Columns.astro +3 -1
- package/src/components/Cover.astro +3 -1
- package/src/components/WidgetArea.astro +3 -2
- package/src/database/migrations/086_relations_structural.ts +197 -0
- package/src/database/migrations/087_reference_field_relations.ts +407 -0
- package/src/database/migrations/runner.ts +4 -0
- package/src/database/reference-backfill.ts +141 -0
- package/src/database/repositories/content.ts +43 -8
- package/src/database/repositories/media.ts +40 -1
- package/src/database/repositories/redirect.ts +17 -34
- package/src/database/repositories/relation.ts +620 -208
- package/src/database/repositories/revision.ts +16 -0
- package/src/database/repositories/types.ts +38 -0
- package/src/database/transaction.ts +12 -1
- package/src/database/types.ts +14 -5
- package/src/emdash-runtime.ts +114 -11
- package/src/index.ts +11 -0
- package/src/loader.ts +169 -22
- package/src/mcp/server.ts +13 -48
- package/src/query.ts +455 -25
- package/src/references/field-map.ts +115 -0
- package/src/references/resolve.ts +160 -0
- package/src/references/staged.ts +117 -0
- package/src/references/types.ts +16 -0
- package/src/registry/artifact-fetch.ts +45 -271
- package/src/schema/registry.ts +99 -24
- package/src/schema/types.ts +58 -0
- package/src/schema/zod-generator.ts +67 -1
- package/src/seed/apply.ts +841 -103
- package/src/seed/types.ts +36 -2
- package/src/seed/validate.ts +78 -2
- package/src/transfer/analyze/unique-keys.ts +3 -12
- package/src/transfer/analyze/validate.ts +65 -39
- package/src/transfer/analyze/values.ts +12 -1
- package/src/transfer/export/readers.ts +12 -8
- package/src/transfer/format/columns.ts +26 -6
- package/src/transfer/format/kinds.ts +21 -5
- package/src/transfer/import/context.ts +8 -1
- package/src/transfer/ops/package-index.ts +1 -1
- package/dist/action-token-DYwe4Pk0.mjs +0 -26
- package/dist/action-token-DYwe4Pk0.mjs.map +0 -1
- package/dist/activation-LOkDM5WT.mjs +0 -382
- package/dist/activation-LOkDM5WT.mjs.map +0 -1
- package/dist/adapters-B64LbYcB.d.mts +0 -171
- package/dist/adapters-B64LbYcB.d.mts.map +0 -1
- package/dist/allowed-origins-CHB8oZNM.mjs +0 -116
- package/dist/allowed-origins-CHB8oZNM.mjs.map +0 -1
- package/dist/api-cFFZpyS0.mjs +0 -4718
- package/dist/api-cFFZpyS0.mjs.map +0 -1
- package/dist/api-tokens-s4i4aUp_.mjs +0 -166
- package/dist/api-tokens-s4i4aUp_.mjs.map +0 -1
- package/dist/apply-CoT603H3.mjs +0 -1163
- package/dist/apply-CoT603H3.mjs.map +0 -1
- package/dist/approvals-CqMfNxak.mjs +0 -460
- package/dist/approvals-CqMfNxak.mjs.map +0 -1
- package/dist/artifact-fetch-DZMOGZ3-.mjs +0 -818
- package/dist/artifact-fetch-DZMOGZ3-.mjs.map +0 -1
- package/dist/astro/routes/api/relations/_id_/translations.d.mts +0 -8
- package/dist/astro/routes/api/relations/_id_/translations.d.mts.map +0 -1
- package/dist/astro/routes/api/relations/_id_/translations.mjs +0 -47
- package/dist/astro/routes/api/relations/_id_/translations.mjs.map +0 -1
- package/dist/audit-RfCugiSB.mjs +0 -127
- package/dist/audit-RfCugiSB.mjs.map +0 -1
- package/dist/authoritative-records-CoJvBXAD.mjs +0 -5172
- package/dist/authoritative-records-CoJvBXAD.mjs.map +0 -1
- package/dist/authorize-seCifOMJ.mjs +0 -49
- package/dist/authorize-seCifOMJ.mjs.map +0 -1
- package/dist/backup-CBu0LrXf.mjs +0 -246
- package/dist/backup-CBu0LrXf.mjs.map +0 -1
- package/dist/block-type-registry-DUI_3KxT.mjs +0 -6709
- package/dist/block-type-registry-DUI_3KxT.mjs.map +0 -1
- package/dist/block-types-BmZmLmAD.mjs +0 -132
- package/dist/block-types-BmZmLmAD.mjs.map +0 -1
- package/dist/block-values-C_VIPr5t.mjs +0 -175
- package/dist/block-values-C_VIPr5t.mjs.map +0 -1
- package/dist/byline-DYmkXqvo.mjs +0 -909
- package/dist/byline-DYmkXqvo.mjs.map +0 -1
- package/dist/byline-fields-D28AT-Fh.mjs +0 -123
- package/dist/byline-fields-D28AT-Fh.mjs.map +0 -1
- package/dist/byline-registry-gnKscbQX.mjs +0 -406
- package/dist/byline-registry-gnKscbQX.mjs.map +0 -1
- package/dist/bylines-BPwJqoYH.mjs +0 -232
- package/dist/bylines-BPwJqoYH.mjs.map +0 -1
- package/dist/bylines-ukLaYpVZ.mjs +0 -214
- package/dist/bylines-ukLaYpVZ.mjs.map +0 -1
- package/dist/cache-m7UEkRFV.mjs +0 -108
- package/dist/cache-m7UEkRFV.mjs.map +0 -1
- package/dist/canonical-YhEQezjg.mjs +0 -174
- package/dist/canonical-YhEQezjg.mjs.map +0 -1
- package/dist/capture-triggers-kJyl_yyM.mjs +0 -362
- package/dist/capture-triggers-kJyl_yyM.mjs.map +0 -1
- package/dist/challenge-store-ppU6Uv13.mjs +0 -51
- package/dist/challenge-store-ppU6Uv13.mjs.map +0 -1
- package/dist/checksum-B2IINIlN.mjs +0 -162
- package/dist/checksum-B2IINIlN.mjs.map +0 -1
- package/dist/chrome-tags-DApCQSIk.mjs +0 -24
- package/dist/chrome-tags-DApCQSIk.mjs.map +0 -1
- package/dist/chunks-Dms7Uxbt.mjs +0 -25
- package/dist/chunks-Dms7Uxbt.mjs.map +0 -1
- package/dist/collection-deletion-BIm28mo3.mjs +0 -436
- package/dist/collection-deletion-BIm28mo3.mjs.map +0 -1
- package/dist/collection-deletion-processor-Br6rxs3u.mjs +0 -217
- package/dist/collection-deletion-processor-Br6rxs3u.mjs.map +0 -1
- package/dist/collection-slugs-cache-CjGk__zp.mjs +0 -85
- package/dist/collection-slugs-cache-CjGk__zp.mjs.map +0 -1
- package/dist/comment-CrBl22OF.mjs +0 -313
- package/dist/comment-CrBl22OF.mjs.map +0 -1
- package/dist/comment-reaction-JEQ2Fpd8.mjs +0 -85
- package/dist/comment-reaction-JEQ2Fpd8.mjs.map +0 -1
- package/dist/comments-2ah9du9y.mjs +0 -195
- package/dist/comments-2ah9du9y.mjs.map +0 -1
- package/dist/comments-fHZ8ON9O.mjs +0 -99
- package/dist/comments-fHZ8ON9O.mjs.map +0 -1
- package/dist/components-CXbq7CSM.mjs +0 -108
- package/dist/components-CXbq7CSM.mjs.map +0 -1
- package/dist/config-5ii2haYu.d.mts +0 -6528
- package/dist/config-5ii2haYu.d.mts.map +0 -1
- package/dist/config-IhybvkIQ.mjs +0 -242
- package/dist/config-IhybvkIQ.mjs.map +0 -1
- package/dist/config-Py43JK9r.d.mts +0 -39
- package/dist/config-Py43JK9r.d.mts.map +0 -1
- package/dist/content-DFaIEDj9.mjs +0 -2281
- package/dist/content-DFaIEDj9.mjs.map +0 -1
- package/dist/content-list-query-Dra4Dalc.d.mts +0 -26
- package/dist/content-list-query-Dra4Dalc.d.mts.map +0 -1
- package/dist/content-policy-DFNw91-d.mjs +0 -46
- package/dist/content-policy-DFNw91-d.mjs.map +0 -1
- package/dist/content-repair-Q8IUrpLL.mjs +0 -442
- package/dist/content-repair-Q8IUrpLL.mjs.map +0 -1
- package/dist/context-BeGccdUX.mjs +0 -1921
- package/dist/context-BeGccdUX.mjs.map +0 -1
- package/dist/cron-7DCJwPXq.mjs +0 -284
- package/dist/cron-7DCJwPXq.mjs.map +0 -1
- package/dist/dashboard-DjrB-xxZ.mjs +0 -151
- package/dist/dashboard-DjrB-xxZ.mjs.map +0 -1
- package/dist/default-DQ6vsviu.mjs +0 -81
- package/dist/default-DQ6vsviu.mjs.map +0 -1
- package/dist/deferred-tasks-BPxXUB4x.d.mts +0 -9
- package/dist/deferred-tasks-BPxXUB4x.d.mts.map +0 -1
- package/dist/dev-typegen-CZaPLl3V.mjs +0 -29
- package/dist/dev-typegen-CZaPLl3V.mjs.map +0 -1
- package/dist/device-flow-CRd6DXmW.mjs +0 -466
- package/dist/device-flow-CRd6DXmW.mjs.map +0 -1
- package/dist/digest-BarSh-pN.mjs +0 -194
- package/dist/digest-BarSh-pN.mjs.map +0 -1
- package/dist/direct-executor-BmuFJJZV.mjs +0 -104
- package/dist/direct-executor-BmuFJJZV.mjs.map +0 -1
- package/dist/dist-BNwANFJR.mjs +0 -810
- package/dist/dist-BNwANFJR.mjs.map +0 -1
- package/dist/email-console-bJn3ctqA.mjs +0 -50
- package/dist/email-console-bJn3ctqA.mjs.map +0 -1
- package/dist/email-locale-CN6WAMx0.mjs +0 -25
- package/dist/email-locale-CN6WAMx0.mjs.map +0 -1
- package/dist/emdash-runtime-DAjghyEG.mjs +0 -4186
- package/dist/emdash-runtime-DAjghyEG.mjs.map +0 -1
- package/dist/enrich-Dl3kZ-lP.mjs +0 -194
- package/dist/enrich-Dl3kZ-lP.mjs.map +0 -1
- package/dist/entry-lock-BJYdBfXb.mjs +0 -1097
- package/dist/entry-lock-BJYdBfXb.mjs.map +0 -1
- package/dist/entry-lock-DHQOxN7R.mjs +0 -163
- package/dist/entry-lock-DHQOxN7R.mjs.map +0 -1
- package/dist/entry-lock-DVhCt49A.d.mts +0 -4368
- package/dist/entry-lock-DVhCt49A.d.mts.map +0 -1
- package/dist/entry-locks-D0foLdjQ.mjs +0 -167
- package/dist/entry-locks-D0foLdjQ.mjs.map +0 -1
- package/dist/error-CfvOHP0M.mjs +0 -90
- package/dist/error-CfvOHP0M.mjs.map +0 -1
- package/dist/errors-BF0_LFhW.mjs +0 -460
- package/dist/errors-BF0_LFhW.mjs.map +0 -1
- package/dist/errors-DgE1zJGG.mjs +0 -120
- package/dist/errors-DgE1zJGG.mjs.map +0 -1
- package/dist/escape-CuaZhZvL.mjs +0 -9
- package/dist/escape-CuaZhZvL.mjs.map +0 -1
- package/dist/fence-CMDXJYc_.mjs +0 -162
- package/dist/fence-CMDXJYc_.mjs.map +0 -1
- package/dist/field-defs-cache-HIgBbqZZ.mjs +0 -77
- package/dist/field-defs-cache-HIgBbqZZ.mjs.map +0 -1
- package/dist/focal-point-Gr34o-4o.mjs +0 -23
- package/dist/focal-point-Gr34o-4o.mjs.map +0 -1
- package/dist/fts-manager-S-K0laoS.mjs +0 -443
- package/dist/fts-manager-S-K0laoS.mjs.map +0 -1
- package/dist/gc-DjKY0Ay1.mjs +0 -75
- package/dist/gc-DjKY0Ay1.mjs.map +0 -1
- package/dist/hash-SDAW6zC-.mjs +0 -37
- package/dist/hash-SDAW6zC-.mjs.map +0 -1
- package/dist/hook-result-B5bXDgS2.d.mts +0 -31
- package/dist/hook-result-B5bXDgS2.d.mts.map +0 -1
- package/dist/hreflang-D5uNnsGJ.d.mts +0 -50
- package/dist/hreflang-D5uNnsGJ.d.mts.map +0 -1
- package/dist/hreflang-DMFBL2eb.mjs +0 -105
- package/dist/hreflang-DMFBL2eb.mjs.map +0 -1
- package/dist/http-route-dispatch-BitqzwMy.mjs +0 -339
- package/dist/http-route-dispatch-BitqzwMy.mjs.map +0 -1
- package/dist/identity-IyNWwXr6.mjs +0 -35
- package/dist/identity-IyNWwXr6.mjs.map +0 -1
- package/dist/import-C3JZplWq.mjs +0 -2020
- package/dist/import-C3JZplWq.mjs.map +0 -1
- package/dist/index-D-hdtLe8.d.mts +0 -623
- package/dist/index-D-hdtLe8.d.mts.map +0 -1
- package/dist/install-finalization-DfM1fj5x.mjs +0 -58
- package/dist/install-finalization-DfM1fj5x.mjs.map +0 -1
- package/dist/keys-yxLm5l35.mjs +0 -61
- package/dist/keys-yxLm5l35.mjs.map +0 -1
- package/dist/kinds-CRu_T5T5.mjs +0 -961
- package/dist/kinds-CRu_T5T5.mjs.map +0 -1
- package/dist/lifecycle-BzeGPeQ-.mjs +0 -25
- package/dist/lifecycle-BzeGPeQ-.mjs.map +0 -1
- package/dist/load-XgJiE6_3.mjs +0 -28
- package/dist/load-XgJiE6_3.mjs.map +0 -1
- package/dist/loader-BzqeR1ZN.mjs +0 -1086
- package/dist/loader-BzqeR1ZN.mjs.map +0 -1
- package/dist/loops-BQSzv5Zn.mjs +0 -203
- package/dist/loops-BQSzv5Zn.mjs.map +0 -1
- package/dist/manifest-builder-B8zR-73J.mjs +0 -189
- package/dist/manifest-builder-B8zR-73J.mjs.map +0 -1
- package/dist/manifest-schema-CY3zng_M.mjs +0 -492
- package/dist/manifest-schema-CY3zng_M.mjs.map +0 -1
- package/dist/media-Pu1L6xir.mjs +0 -408
- package/dist/media-Pu1L6xir.mjs.map +0 -1
- package/dist/media-Qp5S3eH3.mjs +0 -355
- package/dist/media-Qp5S3eH3.mjs.map +0 -1
- package/dist/media-allowlist-BSoa9Vvm.mjs +0 -44
- package/dist/media-allowlist-BSoa9Vvm.mjs.map +0 -1
- package/dist/media-folders-BE0oo2eX.mjs +0 -210
- package/dist/media-folders-BE0oo2eX.mjs.map +0 -1
- package/dist/media-h7tOiDLj.mjs +0 -221
- package/dist/media-h7tOiDLj.mjs.map +0 -1
- package/dist/media-url-jArBpzIG.mjs +0 -43
- package/dist/media-url-jArBpzIG.mjs.map +0 -1
- package/dist/media-usage-My-Vi-ex.mjs +0 -1629
- package/dist/media-usage-My-Vi-ex.mjs.map +0 -1
- package/dist/media-usage-activation-HKp7zk7W.mjs +0 -78
- package/dist/media-usage-activation-HKp7zk7W.mjs.map +0 -1
- package/dist/media-usage-work-C2OZLCAd.mjs +0 -586
- package/dist/media-usage-work-C2OZLCAd.mjs.map +0 -1
- package/dist/media-usage-work-DwUNbgvS.mjs +0 -152
- package/dist/media-usage-work-DwUNbgvS.mjs.map +0 -1
- package/dist/menus-BM7BPLOb.mjs +0 -139
- package/dist/menus-BM7BPLOb.mjs.map +0 -1
- package/dist/menus-ITeAbcIF.mjs +0 -753
- package/dist/menus-ITeAbcIF.mjs.map +0 -1
- package/dist/menus-TsSGmSR4.mjs +0 -3608
- package/dist/menus-TsSGmSR4.mjs.map +0 -1
- package/dist/mime-ChLqYwDk.mjs +0 -36
- package/dist/mime-ChLqYwDk.mjs.map +0 -1
- package/dist/mode-CCuKXUci.mjs +0 -23
- package/dist/mode-CCuKXUci.mjs.map +0 -1
- package/dist/node-sqlite-compat-CONMsl-x.mjs +0 -46
- package/dist/node-sqlite-compat-CONMsl-x.mjs.map +0 -1
- package/dist/normalize-CO2P8-iE.mjs +0 -191
- package/dist/normalize-CO2P8-iE.mjs.map +0 -1
- package/dist/oauth-authorization-DlMIL5_h.mjs +0 -274
- package/dist/oauth-authorization-DlMIL5_h.mjs.map +0 -1
- package/dist/oauth-clients-Djq9r_KP.mjs +0 -266
- package/dist/oauth-clients-Djq9r_KP.mjs.map +0 -1
- package/dist/oauth-state-store-BbjnZXNC.mjs +0 -50
- package/dist/oauth-state-store-BbjnZXNC.mjs.map +0 -1
- package/dist/oauth-user-lookup-vue9a64A.mjs +0 -26
- package/dist/oauth-user-lookup-vue9a64A.mjs.map +0 -1
- package/dist/options-SQCHQCPH.d.mts +0 -81
- package/dist/options-SQCHQCPH.d.mts.map +0 -1
- package/dist/parse-CVgO-Qai.d.mts +0 -168
- package/dist/parse-CVgO-Qai.d.mts.map +0 -1
- package/dist/parse-DY6OD1j_.mjs +0 -81
- package/dist/parse-DY6OD1j_.mjs.map +0 -1
- package/dist/passkey-config-X_H8128a.mjs +0 -46
- package/dist/passkey-config-X_H8128a.mjs.map +0 -1
- package/dist/paths-JxokKIbr.mjs +0 -77
- package/dist/paths-JxokKIbr.mjs.map +0 -1
- package/dist/patterns-BhAvqO0S.mjs +0 -145
- package/dist/patterns-BhAvqO0S.mjs.map +0 -1
- package/dist/placeholder-MSEd8gty.d.mts +0 -306
- package/dist/placeholder-MSEd8gty.d.mts.map +0 -1
- package/dist/plan-xjcWrAah.mjs +0 -135
- package/dist/plan-xjcWrAah.mjs.map +0 -1
- package/dist/plugins-DUXUt8B9.mjs +0 -277
- package/dist/plugins-DUXUt8B9.mjs.map +0 -1
- package/dist/policy-CUvwAARc.mjs +0 -45
- package/dist/policy-CUvwAARc.mjs.map +0 -1
- package/dist/portable-text-5O_ZGUjB.mjs +0 -307
- package/dist/portable-text-5O_ZGUjB.mjs.map +0 -1
- package/dist/preview-CIUcPYr6.mjs +0 -107
- package/dist/preview-CIUcPYr6.mjs.map +0 -1
- package/dist/protocol-B97DZaFr.d.mts +0 -61
- package/dist/protocol-B97DZaFr.d.mts.map +0 -1
- package/dist/public-submission-BFBUrqst.mjs +0 -250
- package/dist/public-submission-BFBUrqst.mjs.map +0 -1
- package/dist/public-url-Bn7U0D7-.mjs +0 -101
- package/dist/public-url-Bn7U0D7-.mjs.map +0 -1
- package/dist/query-B48peoRT.mjs +0 -890
- package/dist/query-B48peoRT.mjs.map +0 -1
- package/dist/query-C4IH0uhR.mjs +0 -41
- package/dist/query-C4IH0uhR.mjs.map +0 -1
- package/dist/rate-limit-BZ6nybgc.mjs +0 -120
- package/dist/rate-limit-BZ6nybgc.mjs.map +0 -1
- package/dist/receipt-B4wJj5Jq.mjs +0 -43
- package/dist/receipt-B4wJj5Jq.mjs.map +0 -1
- package/dist/redirect-Cd1E7VUt.mjs +0 -17
- package/dist/redirect-Cd1E7VUt.mjs.map +0 -1
- package/dist/redirect-iJf5fltD.mjs +0 -415
- package/dist/redirect-iJf5fltD.mjs.map +0 -1
- package/dist/redirects-CYu1u1aK.mjs +0 -446
- package/dist/redirects-CYu1u1aK.mjs.map +0 -1
- package/dist/redirects-Cv9apQKj.mjs +0 -148
- package/dist/redirects-Cv9apQKj.mjs.map +0 -1
- package/dist/relation-M4NUCb0b.mjs +0 -334
- package/dist/relation-M4NUCb0b.mjs.map +0 -1
- package/dist/relations-CCif47Oq.mjs +0 -403
- package/dist/relations-CCif47Oq.mjs.map +0 -1
- package/dist/relations-CK9CYUyr.mjs +0 -310
- package/dist/relations-CK9CYUyr.mjs.map +0 -1
- package/dist/request-cache-DzLYKm_x.mjs +0 -104
- package/dist/request-cache-DzLYKm_x.mjs.map +0 -1
- package/dist/request-meta-sZXt3sRo.mjs +0 -141
- package/dist/request-meta-sZXt3sRo.mjs.map +0 -1
- package/dist/resolve-2WbQsCvT.mjs +0 -199
- package/dist/resolve-2WbQsCvT.mjs.map +0 -1
- package/dist/route-wire--1hLuACz.mjs +0 -197
- package/dist/route-wire--1hLuACz.mjs.map +0 -1
- package/dist/routes-CUsM40Cc.mjs +0 -272
- package/dist/routes-CUsM40Cc.mjs.map +0 -1
- package/dist/runner-1y4J9fJB.mjs +0 -5742
- package/dist/runner-1y4J9fJB.mjs.map +0 -1
- package/dist/runner-D5_LzKXI.d.mts +0 -68
- package/dist/runner-D5_LzKXI.d.mts.map +0 -1
- package/dist/schema-BABiRdsH.mjs +0 -13
- package/dist/schema-BABiRdsH.mjs.map +0 -1
- package/dist/schema-Du3MzCG0.mjs +0 -446
- package/dist/schema-Du3MzCG0.mjs.map +0 -1
- package/dist/scopes-Dbk-ElhT.mjs +0 -34
- package/dist/scopes-Dbk-ElhT.mjs.map +0 -1
- package/dist/search-Bt1PL1jf.mjs +0 -448
- package/dist/search-Bt1PL1jf.mjs.map +0 -1
- package/dist/sections-Ddptx_o9.mjs +0 -346
- package/dist/sections-Ddptx_o9.mjs.map +0 -1
- package/dist/seo-CZT2oLtT.mjs +0 -114
- package/dist/seo-CZT2oLtT.mjs.map +0 -1
- package/dist/seo-D5w3-Azy.mjs +0 -133
- package/dist/seo-D5w3-Azy.mjs.map +0 -1
- package/dist/service-DuykXPyW.mjs +0 -150
- package/dist/service-DuykXPyW.mjs.map +0 -1
- package/dist/session-user-BhaVp8w0.mjs +0 -51
- package/dist/session-user-BhaVp8w0.mjs.map +0 -1
- package/dist/settings-2xNYr90o.mjs +0 -51
- package/dist/settings-2xNYr90o.mjs.map +0 -1
- package/dist/settings-CgjRWGW9.mjs +0 -439
- package/dist/settings-CgjRWGW9.mjs.map +0 -1
- package/dist/settings-DYidIB26.mjs +0 -61
- package/dist/settings-DYidIB26.mjs.map +0 -1
- package/dist/setup-complete-bOogcHWG.mjs +0 -26
- package/dist/setup-complete-bOogcHWG.mjs.map +0 -1
- package/dist/setup-nonce-0EGuKM4s.mjs +0 -25
- package/dist/setup-nonce-0EGuKM4s.mjs.map +0 -1
- package/dist/site-settings-DOgRUoFX.mjs +0 -50
- package/dist/site-settings-DOgRUoFX.mjs.map +0 -1
- package/dist/site-url-BU_bbxwj.mjs +0 -16
- package/dist/site-url-BU_bbxwj.mjs.map +0 -1
- package/dist/snapshot-CugwUqKQ.mjs +0 -237
- package/dist/snapshot-CugwUqKQ.mjs.map +0 -1
- package/dist/ssrf-CJUnJymJ.mjs +0 -406
- package/dist/ssrf-CJUnJymJ.mjs.map +0 -1
- package/dist/stage-DgrBz_du.mjs +0 -662
- package/dist/stage-DgrBz_du.mjs.map +0 -1
- package/dist/state-DDiPySSG.mjs +0 -153
- package/dist/state-DDiPySSG.mjs.map +0 -1
- package/dist/status-DZKIG4a9.mjs +0 -30
- package/dist/status-DZKIG4a9.mjs.map +0 -1
- package/dist/storage-query-Bdv7A62k.d.mts +0 -1576
- package/dist/storage-query-Bdv7A62k.d.mts.map +0 -1
- package/dist/tar-_1AgTYFu.mjs +0 -449
- package/dist/tar-_1AgTYFu.mjs.map +0 -1
- package/dist/target-_7pn2Gbg.mjs +0 -27
- package/dist/target-_7pn2Gbg.mjs.map +0 -1
- package/dist/taxonomies-C1IwNe8Q.mjs +0 -697
- package/dist/taxonomies-C1IwNe8Q.mjs.map +0 -1
- package/dist/taxonomies-C_XMoRcX.mjs +0 -939
- package/dist/taxonomies-C_XMoRcX.mjs.map +0 -1
- package/dist/taxonomy-C3Fu1YeH.mjs +0 -525
- package/dist/taxonomy-C3Fu1YeH.mjs.map +0 -1
- package/dist/tokens-u78jETkX.mjs +0 -171
- package/dist/tokens-u78jETkX.mjs.map +0 -1
- package/dist/transaction-BcJO4Tmc.mjs +0 -29
- package/dist/transaction-BcJO4Tmc.mjs.map +0 -1
- package/dist/transfer-BhUCrgDc.mjs +0 -8675
- package/dist/transfer-BhUCrgDc.mjs.map +0 -1
- package/dist/transfer-DIGvR9Af.mjs +0 -166
- package/dist/transfer-DIGvR9Af.mjs.map +0 -1
- package/dist/transfer-download-Pml7RMio.mjs +0 -33
- package/dist/transfer-download-Pml7RMio.mjs.map +0 -1
- package/dist/transformations-9gfpwY65.mjs +0 -196
- package/dist/transformations-9gfpwY65.mjs.map +0 -1
- package/dist/transport-BIfH7_hx.d.mts +0 -42
- package/dist/transport-BIfH7_hx.d.mts.map +0 -1
- package/dist/transport-DKWIq53q.mjs +0 -136
- package/dist/transport-DKWIq53q.mjs.map +0 -1
- package/dist/trusted-proxy-tKiVtyTD.mjs +0 -51
- package/dist/trusted-proxy-tKiVtyTD.mjs.map +0 -1
- package/dist/turnstile-DpsoyOfg.mjs +0 -53
- package/dist/turnstile-DpsoyOfg.mjs.map +0 -1
- package/dist/types-B4sUC2p1.d.mts +0 -198
- package/dist/types-B4sUC2p1.d.mts.map +0 -1
- package/dist/types-B7Lmsh1E.d.mts +0 -887
- package/dist/types-B7Lmsh1E.d.mts.map +0 -1
- package/dist/types-BZakh7Ym.mjs +0 -22
- package/dist/types-BZakh7Ym.mjs.map +0 -1
- package/dist/types-B_CppEmv.d.mts +0 -264
- package/dist/types-B_CppEmv.d.mts.map +0 -1
- package/dist/types-BcrBrE6-.mjs +0 -159
- package/dist/types-BcrBrE6-.mjs.map +0 -1
- package/dist/types-BkUg2yHx.mjs +0 -92
- package/dist/types-BkUg2yHx.mjs.map +0 -1
- package/dist/types-CAZgq9fO.d.mts +0 -124
- package/dist/types-CAZgq9fO.d.mts.map +0 -1
- package/dist/types-Cd-O03VG.d.mts +0 -363
- package/dist/types-Cd-O03VG.d.mts.map +0 -1
- package/dist/types-Cr-Kg-3D.d.mts +0 -1641
- package/dist/types-Cr-Kg-3D.d.mts.map +0 -1
- package/dist/types-D2fvWd1i.d.mts +0 -359
- package/dist/types-D2fvWd1i.d.mts.map +0 -1
- package/dist/types-D7HUsguf.mjs +0 -77
- package/dist/types-D7HUsguf.mjs.map +0 -1
- package/dist/types-DA1Te3Oy.d.mts +0 -198
- package/dist/types-DA1Te3Oy.d.mts.map +0 -1
- package/dist/types-DhV6Q5bP.mjs +0 -18
- package/dist/types-DhV6Q5bP.mjs.map +0 -1
- package/dist/types-DnnVSl6Y.d.mts +0 -85
- package/dist/types-DnnVSl6Y.d.mts.map +0 -1
- package/dist/types-VT4-BugW.mjs +0 -16
- package/dist/types-VT4-BugW.mjs.map +0 -1
- package/dist/upload-attempts-B68ZGNu9.mjs +0 -32
- package/dist/upload-attempts-B68ZGNu9.mjs.map +0 -1
- package/dist/url-pattern-CCeZMGOh.mjs +0 -33
- package/dist/url-pattern-CCeZMGOh.mjs.map +0 -1
- package/dist/user-DDSL-sGw.mjs +0 -171
- package/dist/user-DDSL-sGw.mjs.map +0 -1
- package/dist/utils-DdhmO9w9.mjs +0 -439
- package/dist/utils-DdhmO9w9.mjs.map +0 -1
- package/dist/validate-CHosPEhs.mjs +0 -453
- package/dist/validate-CHosPEhs.mjs.map +0 -1
- package/dist/validate-CM79QXYE.d.mts +0 -432
- package/dist/validate-CM79QXYE.d.mts.map +0 -1
- package/dist/validation-BFecQczG.mjs +0 -218
- package/dist/validation-BFecQczG.mjs.map +0 -1
- package/dist/version-BRZXVifl.mjs +0 -9
- package/dist/version-BRZXVifl.mjs.map +0 -1
- package/dist/version-DUQDHgrf.mjs +0 -7
- package/dist/version-DUQDHgrf.mjs.map +0 -1
- package/dist/widgets-WdV72brA.mjs +0 -126
- package/dist/widgets-WdV72brA.mjs.map +0 -1
- package/dist/wxr-taxonomies-BHTdqkmZ.d.mts +0 -34
- package/dist/wxr-taxonomies-BHTdqkmZ.d.mts.map +0 -1
- package/dist/wxr-taxonomies-DP6ESgMN.mjs +0 -372
- package/dist/wxr-taxonomies-DP6ESgMN.mjs.map +0 -1
- package/dist/zod-generator-D6uE4WiS.mjs +0 -389
- package/dist/zod-generator-D6uE4WiS.mjs.map +0 -1
- package/src/astro/routes/api/relations/[id]/translations.ts +0 -33
- /package/dist/{api-tokens-CE1ECIg0.mjs → api-tokens-FaG1zPsj.mjs} +0 -0
- /package/dist/{ssrf-DpBH7aOt.mjs → ssrf-DZOt8Qof.mjs} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stage-DgrBz_du.mjs","names":[],"sources":["../src/transfer/ops/operations.ts","../src/transfer/staging/stage.ts"],"sourcesContent":["/**\n * Transfer operation rows: creation, lease claims, and lease-fenced state\n * writes.\n *\n * Every step of a running operation happens under a lease: `claim` is one\n * `UPDATE … WHERE lease is free … RETURNING` statement that installs a fresh\n * ULID lease token, and every later write is fenced on that token and on the\n * lease still being live. A caller that loses its lease (expiry, another\n * caller took over) gets `TRANSFER_LEASE_LOST` and must stop without writing.\n */\n\nimport { sql, type Kysely, type Selectable, type UpdateObject } from \"kysely\";\nimport { ulid } from \"ulidx\";\n\nimport type { Database, TransferOperationTable } from \"../../database/types.js\";\nimport {\n\tTransferError,\n\ttransferErrorDetailSchema,\n\ttype TransferErrorCode,\n\ttype TransferErrorDetail,\n} from \"../errors.js\";\nimport { bumpRunningExportWriteEpochs } from \"../fence.js\";\nimport { isSha256Digest, type Sha256Digest } from \"../format/digest.js\";\nimport { TRANSFER_LIMITS } from \"../format/limits.js\";\nimport { siteImportReceiptSchema, type SiteImportReceipt } from \"../format/receipt.js\";\nimport {\n\tEXECUTING_IMPORT_STATES,\n\tisTransferOperationKind,\n\tisTransferOperationState,\n\tPRE_EXECUTION_IMPORT_STATES,\n\tTERMINAL_IMPORT_STATES,\n\tTRANSFER_RUNTIME_GENERATION,\n\ttransferCursorSchema,\n\ttransferProgressSchema,\n\ttype TransferCursor,\n\ttype TransferOperationKind,\n\ttype TransferOperationState,\n\ttype TransferProgress,\n} from \"./states.js\";\nimport {\n\ttimestampIsDue,\n\ttimestampIsLive,\n\ttimestampIsOlderThan,\n\ttimestampNow,\n\ttimestampOffset,\n} from \"./time.js\";\n\ntype OperationRow = Selectable<TransferOperationTable>;\ntype OperationUpdate = UpdateObject<Database, \"_emdash_transfer_operations\">;\n\nexport interface TransferOperation {\n\tid: string;\n\tkind: TransferOperationKind;\n\tstate: TransferOperationState;\n\tstage: string | null;\n\tcursor: TransferCursor | null;\n\tprogress: TransferProgress | null;\n\toptions: unknown;\n\tidempotencyKey: string | null;\n\tpackageDigest: Sha256Digest | null;\n\tplanDigest: Sha256Digest | null;\n\toriginSiteId: string | null;\n\t/**\n\t * 128-bit hex secret in the operation's staging prefix. Internal only:\n\t * serialize operations for clients with {@link toPublicOperation}.\n\t */\n\tstagingSecret: string;\n\treceipt: SiteImportReceipt | null;\n\terrorCode: string | null;\n\terrorDetail: TransferErrorDetail | null;\n\twriteEpoch: number;\n\tattemptCount: number;\n\tleaseToken: string | null;\n\tleaseExpiresAt: string | null;\n\truntimeGeneration: number;\n\tcancelRequestedAt: string | null;\n\tmutationStartedAt: string | null;\n\tcreatedBy: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tcompletedAt: string | null;\n\texpiresAt: string | null;\n\tstagingCollectedAt: string | null;\n}\n\n/**\n * An operation as it may be shown to API clients: without the staging secret\n * and lease token.\n */\nexport type PublicTransferOperation = Omit<TransferOperation, \"stagingSecret\" | \"leaseToken\">;\n\nexport function toPublicOperation(operation: TransferOperation): PublicTransferOperation {\n\tconst { stagingSecret: _secret, leaseToken: _lease, ...rest } = operation;\n\treturn rest;\n}\n\nexport interface CreateTransferOperationInput {\n\tkind: TransferOperationKind;\n\tcreatedBy: string;\n\tidempotencyKey?: string;\n\t/** For imports, the digest of the manifest the operation was created with. */\n\tpackageDigest?: Sha256Digest;\n\toriginSiteId?: string;\n\toptions?: unknown;\n\t/** Seconds until the operation expires if it does not finish. */\n\tttlSeconds?: number;\n}\n\nexport type ClaimResult =\n\t| { outcome: \"claimed\"; operation: TransferOperation; leaseToken: string }\n\t| { outcome: \"lease_active\"; operation: TransferOperation }\n\t| { outcome: \"invalid_state\"; operation: TransferOperation };\n\nexport interface OperationPatch {\n\tstate?: TransferOperationState;\n\tstage?: string | null;\n\tcursor?: TransferCursor | null;\n\tprogress?: TransferProgress | null;\n\tpackageDigest?: Sha256Digest;\n\tplanDigest?: Sha256Digest | null;\n\toriginSiteId?: string;\n\t/** Record that the importer is about to write to the target (idempotent). */\n\tmarkMutationStarted?: true;\n\t/** Reset `expires_at` to now + this many seconds. */\n\tttlSeconds?: number;\n\t/**\n\t * Record the retryable failure of the last step on a non-terminal\n\t * operation in `error_code`/`error_detail`, or clear it with null.\n\t */\n\tretryError?: { code: TransferErrorCode; detail?: TransferErrorDetail } | null;\n}\n\nconst MAX_IDEMPOTENCY_KEY_LENGTH = 255;\n\nfunction parseJson(value: string | null): unknown {\n\tif (value === null) return null;\n\treturn JSON.parse(value);\n}\n\nfunction toOperation(row: OperationRow): TransferOperation {\n\tconst { kind, state } = row;\n\tif (!isTransferOperationKind(kind) || !isTransferOperationState(state)) {\n\t\tthrow new TransferError(\"TRANSFER_INVALID_STATE\", \"Unknown transfer operation kind or state\");\n\t}\n\tconst cursor = parseJson(row.cursor);\n\tconst progress = parseJson(row.progress);\n\tconst receipt = parseJson(row.receipt);\n\tconst errorDetail = parseJson(row.error_detail);\n\treturn {\n\t\tid: row.id,\n\t\tkind,\n\t\tstate,\n\t\tstage: row.stage,\n\t\tcursor: cursor === null ? null : transferCursorSchema.parse(cursor),\n\t\tprogress: progress === null ? null : transferProgressSchema.parse(progress),\n\t\toptions: parseJson(row.options),\n\t\tidempotencyKey: row.idempotency_key,\n\t\tpackageDigest: isSha256Digest(row.package_digest) ? row.package_digest : null,\n\t\tplanDigest: isSha256Digest(row.plan_digest) ? row.plan_digest : null,\n\t\toriginSiteId: row.origin_site_id,\n\t\tstagingSecret: row.staging_secret,\n\t\treceipt: receipt === null ? null : siteImportReceiptSchema.parse(receipt),\n\t\terrorCode: row.error_code,\n\t\terrorDetail: errorDetail === null ? null : transferErrorDetailSchema.parse(errorDetail),\n\t\twriteEpoch: Number(row.write_epoch),\n\t\tattemptCount: Number(row.attempt_count),\n\t\tleaseToken: row.lease_token,\n\t\tleaseExpiresAt: row.lease_expires_at,\n\t\truntimeGeneration: Number(row.runtime_generation),\n\t\tcancelRequestedAt: row.cancel_requested_at,\n\t\tmutationStartedAt: row.mutation_started_at,\n\t\tcreatedBy: row.created_by,\n\t\tcreatedAt: row.created_at,\n\t\tupdatedAt: row.updated_at,\n\t\tcompletedAt: row.completed_at,\n\t\texpiresAt: row.expires_at,\n\t\tstagingCollectedAt: row.staging_collected_at,\n\t};\n}\n\nexport function createStagingSecret(): string {\n\tconst bytes = new Uint8Array(16);\n\tcrypto.getRandomValues(bytes);\n\treturn Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport class TransferOperationRepository {\n\tconstructor(private readonly db: Kysely<Database>) {}\n\n\tasync get(id: string): Promise<TransferOperation | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_transfer_operations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.executeTakeFirst();\n\t\treturn row ? toOperation(row) : null;\n\t}\n\n\tasync require(id: string): Promise<TransferOperation> {\n\t\tconst operation = await this.get(id);\n\t\tif (!operation) {\n\t\t\tthrow new TransferError(\"TRANSFER_OPERATION_NOT_FOUND\", \"Transfer operation not found\");\n\t\t}\n\t\treturn operation;\n\t}\n\n\t/**\n\t * Create an operation, or return the existing one for the same\n\t * `(createdBy, kind, idempotencyKey)`. Throws\n\t * `TRANSFER_IDEMPOTENCY_CONFLICT` when that key was used with a different\n\t * package digest, and `TRANSFER_IMPORT_IN_PROGRESS` when another import\n\t * already occupies the target.\n\t */\n\tasync create(\n\t\tinput: CreateTransferOperationInput,\n\t): Promise<{ operation: TransferOperation; created: boolean }> {\n\t\tif (\n\t\t\tinput.idempotencyKey !== undefined &&\n\t\t\t(input.idempotencyKey.length === 0 ||\n\t\t\t\tinput.idempotencyKey.length > MAX_IDEMPOTENCY_KEY_LENGTH)\n\t\t) {\n\t\t\tthrow new TransferError(\"TRANSFER_IDEMPOTENCY_CONFLICT\", \"Invalid idempotency key\");\n\t\t}\n\n\t\tif (input.idempotencyKey !== undefined) {\n\t\t\tconst existing = await this.findByIdempotencyKey(input);\n\t\t\tif (existing) return { operation: existing, created: false };\n\t\t}\n\n\t\tconst id = ulid();\n\t\tconst inserted = await this.db\n\t\t\t.insertInto(\"_emdash_transfer_operations\")\n\t\t\t.values({\n\t\t\t\tid,\n\t\t\t\tkind: input.kind,\n\t\t\t\tstate: input.kind === \"export\" ? \"pending\" : \"uploading\",\n\t\t\t\tidempotency_key: input.idempotencyKey ?? null,\n\t\t\t\tpackage_digest: input.packageDigest ?? null,\n\t\t\t\torigin_site_id: input.originSiteId ?? null,\n\t\t\t\toptions: input.options === undefined ? null : JSON.stringify(input.options),\n\t\t\t\tstaging_secret: createStagingSecret(),\n\t\t\t\truntime_generation: TRANSFER_RUNTIME_GENERATION,\n\t\t\t\tcreated_by: input.createdBy,\n\t\t\t\texpires_at: timestampOffset(this.db, input.ttlSeconds ?? defaultTtl(input.kind)),\n\t\t\t\tstage: null,\n\t\t\t\tcursor: null,\n\t\t\t\tprogress: null,\n\t\t\t\tplan_digest: null,\n\t\t\t\treceipt: null,\n\t\t\t\terror_code: null,\n\t\t\t\terror_detail: null,\n\t\t\t\tlease_token: null,\n\t\t\t\tlease_expires_at: null,\n\t\t\t\tcancel_requested_at: null,\n\t\t\t\tmutation_started_at: null,\n\t\t\t\tcompleted_at: null,\n\t\t\t\tstaging_collected_at: null,\n\t\t\t})\n\t\t\t.onConflict((conflict) => conflict.doNothing())\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (inserted) return { operation: toOperation(inserted), created: true };\n\n\t\tif (input.idempotencyKey !== undefined) {\n\t\t\tconst existing = await this.findByIdempotencyKey(input);\n\t\t\tif (existing) return { operation: existing, created: false };\n\t\t}\n\t\tthrow new TransferError(\n\t\t\t\"TRANSFER_IMPORT_IN_PROGRESS\",\n\t\t\t\"Another import is already in progress on this site\",\n\t\t);\n\t}\n\n\tprivate async findByIdempotencyKey(\n\t\tinput: CreateTransferOperationInput,\n\t): Promise<TransferOperation | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_transfer_operations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"created_by\", \"=\", input.createdBy)\n\t\t\t.where(\"kind\", \"=\", input.kind)\n\t\t\t.where(\"idempotency_key\", \"=\", input.idempotencyKey ?? \"\")\n\t\t\t.executeTakeFirst();\n\t\tif (!row) return null;\n\t\tif (\n\t\t\tinput.packageDigest !== undefined &&\n\t\t\trow.package_digest !== null &&\n\t\t\trow.package_digest !== input.packageDigest\n\t\t) {\n\t\t\tthrow new TransferError(\n\t\t\t\t\"TRANSFER_IDEMPOTENCY_CONFLICT\",\n\t\t\t\t\"Idempotency key was already used for a different package\",\n\t\t\t);\n\t\t}\n\t\treturn toOperation(row);\n\t}\n\n\t/** The import that currently occupies the target, if any. */\n\tasync findOccupyingImport(): Promise<TransferOperation | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_emdash_transfer_operations\")\n\t\t\t.selectAll()\n\t\t\t.where(\"kind\", \"=\", \"import\")\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"state\", \"in\", [...PRE_EXECUTION_IMPORT_STATES, ...EXECUTING_IMPORT_STATES]),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"state\", \"in\", [\"failed\", \"cancelled\"]),\n\t\t\t\t\t\teb(\"mutation_started_at\", \"is not\", null),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.executeTakeFirst();\n\t\treturn row ? toOperation(row) : null;\n\t}\n\n\t/**\n\t * Take the operation's lease if it is in one of `states` and no live lease\n\t * exists. Throws `TRANSFER_OPERATION_NOT_FOUND`, or\n\t * `TRANSFER_RUNTIME_MISMATCH` when the row was written by an incompatible\n\t * runtime generation.\n\t */\n\tasync claim(\n\t\tid: string,\n\t\tstates: readonly TransferOperationState[],\n\t\toptions: { leaseSeconds?: number } = {},\n\t): Promise<ClaimResult> {\n\t\tconst leaseToken = ulid();\n\t\tconst now = timestampNow(this.db);\n\t\tconst row = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({\n\t\t\t\tlease_token: leaseToken,\n\t\t\t\tlease_expires_at: timestampOffset(\n\t\t\t\t\tthis.db,\n\t\t\t\t\toptions.leaseSeconds ?? TRANSFER_LIMITS.leaseSeconds,\n\t\t\t\t),\n\t\t\t\tattempt_count: sql<number>`attempt_count + 1`,\n\t\t\t\tupdated_at: now,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"state\", \"in\", [...states])\n\t\t\t.where(\"runtime_generation\", \"=\", TRANSFER_RUNTIME_GENERATION)\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"lease_token\", \"is\", null),\n\t\t\t\t\teb(\"lease_expires_at\", \"is\", null),\n\t\t\t\t\ttimestampIsDue(this.db, \"lease_expires_at\"),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (row) return { outcome: \"claimed\", operation: toOperation(row), leaseToken };\n\n\t\tconst current = await this.require(id);\n\t\tif (current.runtimeGeneration !== TRANSFER_RUNTIME_GENERATION) {\n\t\t\tthrow new TransferError(\n\t\t\t\t\"TRANSFER_RUNTIME_MISMATCH\",\n\t\t\t\t\"Transfer operation was created by an incompatible EmDash version\",\n\t\t\t);\n\t\t}\n\t\tif (!states.includes(current.state)) return { outcome: \"invalid_state\", operation: current };\n\t\treturn { outcome: \"lease_active\", operation: current };\n\t}\n\n\t/**\n\t * Write state under the lease and extend it. Throws `TRANSFER_LEASE_LOST`\n\t * when the lease is gone.\n\t */\n\tasync advance(id: string, leaseToken: string, patch: OperationPatch): Promise<TransferOperation> {\n\t\treturn this.fencedUpdate(id, leaseToken, {\n\t\t\t...this.patchValues(patch),\n\t\t\tlease_expires_at: timestampOffset(this.db, TRANSFER_LIMITS.leaseSeconds),\n\t\t});\n\t}\n\n\t/** Write state and give up the lease so the next step can claim it. */\n\tasync release(\n\t\tid: string,\n\t\tleaseToken: string,\n\t\tpatch: OperationPatch = {},\n\t): Promise<TransferOperation> {\n\t\treturn this.fencedUpdate(id, leaseToken, {\n\t\t\t...this.patchValues(patch),\n\t\t\tlease_token: null,\n\t\t\tlease_expires_at: null,\n\t\t});\n\t}\n\n\t/**\n\t * Write `patch`, move to `state`, and give up the lease; when a cancel was\n\t * requested while the lease was held, move to `cancelled` instead. One\n\t * statement decides, so a cancel racing the release is never lost.\n\t */\n\tasync releaseUnlessCancelled(\n\t\tid: string,\n\t\tleaseToken: string,\n\t\tstate: TransferOperationState,\n\t\tpatch: Omit<OperationPatch, \"state\"> = {},\n\t): Promise<TransferOperation> {\n\t\tconst now = timestampNow(this.db);\n\t\treturn this.fencedUpdate(id, leaseToken, {\n\t\t\t...this.patchValues(patch),\n\t\t\tstate: sql<string>`CASE WHEN cancel_requested_at IS NULL THEN ${state} ELSE 'cancelled' END`,\n\t\t\tcompleted_at: sql<\n\t\t\t\tstring | null\n\t\t\t>`CASE WHEN cancel_requested_at IS NULL THEN completed_at ELSE ${now} END`,\n\t\t\tlease_token: null,\n\t\t\tlease_expires_at: null,\n\t\t});\n\t}\n\n\tasync complete(\n\t\tid: string,\n\t\tleaseToken: string,\n\t\tresult: { receipt?: SiteImportReceipt; ttlSeconds?: number; progress?: TransferProgress } = {},\n\t): Promise<TransferOperation> {\n\t\treturn this.fencedUpdate(id, leaseToken, {\n\t\t\tstate: \"complete\",\n\t\t\treceipt: result.receipt === undefined ? undefined : JSON.stringify(result.receipt),\n\t\t\tprogress: result.progress === undefined ? undefined : JSON.stringify(result.progress),\n\t\t\tcompleted_at: timestampNow(this.db),\n\t\t\texpires_at:\n\t\t\t\tresult.ttlSeconds === undefined ? undefined : timestampOffset(this.db, result.ttlSeconds),\n\t\t\tlease_token: null,\n\t\t\tlease_expires_at: null,\n\t\t});\n\t}\n\n\tasync fail(\n\t\tid: string,\n\t\tleaseToken: string,\n\t\terror: { code: TransferErrorCode; detail?: TransferErrorDetail },\n\t): Promise<TransferOperation> {\n\t\treturn this.fencedUpdate(id, leaseToken, {\n\t\t\tstate: \"failed\",\n\t\t\terror_code: error.code,\n\t\t\terror_detail: error.detail === undefined ? null : JSON.stringify(error.detail),\n\t\t\tcompleted_at: timestampNow(this.db),\n\t\t\tlease_token: null,\n\t\t\tlease_expires_at: null,\n\t\t});\n\t}\n\n\t/** Finish a cancellation the lease holder observed via `cancelRequestedAt`. */\n\tasync finishCancelled(id: string, leaseToken: string): Promise<TransferOperation> {\n\t\treturn this.fencedUpdate(id, leaseToken, {\n\t\t\tstate: \"cancelled\",\n\t\t\tcompleted_at: timestampNow(this.db),\n\t\t\tlease_token: null,\n\t\t\tlease_expires_at: null,\n\t\t});\n\t}\n\n\t/**\n\t * Cancel an import. Without a live lease the operation becomes `cancelled`\n\t * immediately; otherwise `cancel_requested_at` is set and the lease holder\n\t * stops after its current batch. Returns the updated operation.\n\t */\n\tasync requestCancel(id: string): Promise<TransferOperation> {\n\t\tconst cancellable = [...PRE_EXECUTION_IMPORT_STATES, ...EXECUTING_IMPORT_STATES];\n\t\tconst now = timestampNow(this.db);\n\t\tconst immediate = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({\n\t\t\t\tstate: \"cancelled\",\n\t\t\t\tcancel_requested_at: now,\n\t\t\t\tcompleted_at: now,\n\t\t\t\tupdated_at: now,\n\t\t\t\tlease_token: null,\n\t\t\t\tlease_expires_at: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"kind\", \"=\", \"import\")\n\t\t\t.where(\"state\", \"in\", cancellable)\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"lease_token\", \"is\", null),\n\t\t\t\t\teb(\"lease_expires_at\", \"is\", null),\n\t\t\t\t\ttimestampIsDue(this.db, \"lease_expires_at\"),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (immediate) return toOperation(immediate);\n\n\t\tconst flagged = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({ cancel_requested_at: now, updated_at: now })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"kind\", \"=\", \"import\")\n\t\t\t.where(\"state\", \"in\", cancellable)\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (flagged) return toOperation(flagged);\n\n\t\tawait this.require(id);\n\t\tthrow new TransferError(\"TRANSFER_INVALID_STATE\", \"Transfer operation cannot be cancelled\");\n\t}\n\n\t/**\n\t * Mark a failed or cancelled import abandoned. Lifts the write fence; never\n\t * deletes imported data.\n\t */\n\tasync abandon(id: string): Promise<TransferOperation> {\n\t\tconst now = timestampNow(this.db);\n\t\tconst row = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({ state: \"abandoned\", updated_at: now })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"kind\", \"=\", \"import\")\n\t\t\t.where(\"state\", \"in\", [\"failed\", \"cancelled\"])\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"lease_token\", \"is\", null),\n\t\t\t\t\teb(\"lease_expires_at\", \"is\", null),\n\t\t\t\t\ttimestampIsDue(this.db, \"lease_expires_at\"),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (row) return toOperation(row);\n\t\tawait this.require(id);\n\t\tthrow new TransferError(\n\t\t\t\"TRANSFER_INVALID_STATE\",\n\t\t\t\"Only a failed or cancelled import can be abandoned\",\n\t\t);\n\t}\n\n\t/**\n\t * Move operations past their `expires_at` to `expired` (pre-execution\n\t * imports and every non-expired export) when no live lease holds them.\n\t * Returns the expired operations so their staging can be collected.\n\t */\n\tasync expireDue(\n\t\tlimit = 50,\n\t): Promise<Array<Pick<TransferOperation, \"id\" | \"kind\" | \"stagingSecret\">>> {\n\t\tconst candidates = await this.db\n\t\t\t.selectFrom(\"_emdash_transfer_operations\")\n\t\t\t.select(\"id\")\n\t\t\t.where(\"expires_at\", \"is not\", null)\n\t\t\t.where(timestampIsDue(this.db, \"expires_at\"))\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"kind\", \"=\", \"import\"),\n\t\t\t\t\t\teb(\"state\", \"in\", [...PRE_EXECUTION_IMPORT_STATES]),\n\t\t\t\t\t\teb(\"mutation_started_at\", \"is\", null),\n\t\t\t\t\t]),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"kind\", \"=\", \"export\"),\n\t\t\t\t\t\teb(\"state\", \"in\", [\"pending\", \"running\", \"complete\", \"failed\"]),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"lease_token\", \"is\", null),\n\t\t\t\t\teb(\"lease_expires_at\", \"is\", null),\n\t\t\t\t\ttimestampIsDue(this.db, \"lease_expires_at\"),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.orderBy(\"expires_at\")\n\t\t\t.limit(limit)\n\t\t\t.execute();\n\t\tif (candidates.length === 0) return [];\n\t\tconst now = timestampNow(this.db);\n\t\tconst rows = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({ state: \"expired\", updated_at: now, lease_token: null, lease_expires_at: null })\n\t\t\t.where(\n\t\t\t\t\"id\",\n\t\t\t\t\"in\",\n\t\t\t\tcandidates.map((candidate) => candidate.id),\n\t\t\t)\n\t\t\t.where(timestampIsDue(this.db, \"expires_at\"))\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"kind\", \"=\", \"import\"),\n\t\t\t\t\t\teb(\"state\", \"in\", [...PRE_EXECUTION_IMPORT_STATES]),\n\t\t\t\t\t\teb(\"mutation_started_at\", \"is\", null),\n\t\t\t\t\t]),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"kind\", \"=\", \"export\"),\n\t\t\t\t\t\teb(\"state\", \"in\", [\"pending\", \"running\", \"complete\", \"failed\"]),\n\t\t\t\t\t]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.returning([\"id\", \"kind\", \"staging_secret\"])\n\t\t\t.execute();\n\t\treturn rows.flatMap((row) =>\n\t\t\tisTransferOperationKind(row.kind)\n\t\t\t\t? [{ id: row.id, kind: row.kind, stagingSecret: row.staging_secret }]\n\t\t\t\t: [],\n\t\t);\n\t}\n\n\t/**\n\t * Operations whose staging area can be collected and has not been yet:\n\t * imports in a terminal state, and exports that failed or expired\n\t * (complete exports stay downloadable until they expire). Oldest first.\n\t * A collector deletes staged objects with `TransferStage.deleteSome` until\n\t * it returns 0, deletes child rows with {@link deleteChildRows} until it\n\t * returns 0, then calls {@link markCollected}; a crash anywhere in between\n\t * leaves the operation listed here, so collection resumes.\n\t *\n\t * `importRetentionSeconds` keeps a finished import's staging for that long\n\t * after its last state change; expired imports are listed at once.\n\t */\n\tasync listUncollected(\n\t\tlimit = 20,\n\t\toptions: { importRetentionSeconds?: number } = {},\n\t): Promise<Array<Pick<TransferOperation, \"id\" | \"kind\" | \"state\" | \"stagingSecret\">>> {\n\t\tconst retention = options.importRetentionSeconds ?? 0;\n\t\tconst retainedStates = TERMINAL_IMPORT_STATES.filter((state) => state !== \"expired\");\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_emdash_transfer_operations\")\n\t\t\t.select([\"id\", \"kind\", \"state\", \"staging_secret\"])\n\t\t\t.where(\"staging_collected_at\", \"is\", null)\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb.and([eb(\"kind\", \"=\", \"import\"), eb(\"state\", \"=\", \"expired\")]),\n\t\t\t\t\teb.and([\n\t\t\t\t\t\teb(\"kind\", \"=\", \"import\"),\n\t\t\t\t\t\teb(\"state\", \"in\", retainedStates),\n\t\t\t\t\t\ttimestampIsOlderThan(this.db, \"updated_at\", retention),\n\t\t\t\t\t]),\n\t\t\t\t\teb.and([eb(\"kind\", \"=\", \"export\"), eb(\"state\", \"in\", [\"failed\", \"expired\"])]),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"lease_token\", \"is\", null),\n\t\t\t\t\teb(\"lease_expires_at\", \"is\", null),\n\t\t\t\t\ttimestampIsDue(this.db, \"lease_expires_at\"),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.orderBy(\"updated_at\")\n\t\t\t.orderBy(\"id\")\n\t\t\t.limit(Math.min(Math.max(limit, 1), 100))\n\t\t\t.execute();\n\t\treturn rows.flatMap((row) =>\n\t\t\tisTransferOperationKind(row.kind) && isTransferOperationState(row.state)\n\t\t\t\t? [{ id: row.id, kind: row.kind, state: row.state, stagingSecret: row.staging_secret }]\n\t\t\t\t: [],\n\t\t);\n\t}\n\n\t/** Record that an operation's staging area and child rows are gone. */\n\tasync markCollected(id: string): Promise<void> {\n\t\tawait this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({ staging_collected_at: timestampNow(this.db) })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"staging_collected_at\", \"is\", null)\n\t\t\t.execute();\n\t}\n\n\t/**\n\t * Delete up to `limit` child rows of each child table of an operation\n\t * (staged files, package index, media blobs), one bounded statement per\n\t * table. Returns the number deleted; call until it returns 0. Always drain\n\t * children this way before deleting an operation row: an `ON DELETE\n\t * CASCADE` over millions of child rows in one statement exceeds D1's\n\t * limits.\n\t */\n\tasync deleteChildRows(operationId: string, limit = 500): Promise<number> {\n\t\tconst bounded = Math.min(Math.max(Math.trunc(limit), 1), 5000);\n\t\tconst staged = await sql`\n\t\t\tDELETE FROM _emdash_transfer_staged_files\n\t\t\tWHERE operation_id = ${operationId}\n\t\t\t\tAND path IN (\n\t\t\t\t\tSELECT path FROM _emdash_transfer_staged_files\n\t\t\t\t\tWHERE operation_id = ${operationId}\n\t\t\t\t\tLIMIT ${bounded}\n\t\t\t\t)\n\t\t`.execute(this.db);\n\t\tconst indexed = await sql`\n\t\t\tDELETE FROM _emdash_transfer_package_index\n\t\t\tWHERE operation_id = ${operationId}\n\t\t\t\tAND (kind, id) IN (\n\t\t\t\t\tSELECT kind, id FROM _emdash_transfer_package_index\n\t\t\t\t\tWHERE operation_id = ${operationId}\n\t\t\t\t\tLIMIT ${bounded}\n\t\t\t\t)\n\t\t`.execute(this.db);\n\t\tconst blobs = await sql`\n\t\t\tDELETE FROM _emdash_transfer_media_blobs\n\t\t\tWHERE operation_id = ${operationId}\n\t\t\t\tAND media_id IN (\n\t\t\t\t\tSELECT media_id FROM _emdash_transfer_media_blobs\n\t\t\t\t\tWHERE operation_id = ${operationId}\n\t\t\t\t\tLIMIT ${bounded}\n\t\t\t\t)\n\t\t`.execute(this.db);\n\t\treturn [staged, indexed, blobs].reduce(\n\t\t\t(sum, result) => sum + Number(result.numAffectedRows ?? 0n),\n\t\t\t0,\n\t\t);\n\t}\n\n\t/**\n\t * Delete a collected operation row once it has no child rows left.\n\t * Returns false, deleting nothing, otherwise. Identity-map rows are kept.\n\t */\n\tasync deleteIfChildless(id: string): Promise<boolean> {\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_emdash_transfer_operations\")\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"staging_collected_at\", \"is not\", null)\n\t\t\t.where((eb) =>\n\t\t\t\teb.and([\n\t\t\t\t\teb.not(\n\t\t\t\t\t\teb.exists(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"_emdash_transfer_staged_files\")\n\t\t\t\t\t\t\t\t.select(\"path\")\n\t\t\t\t\t\t\t\t.where(\"_emdash_transfer_staged_files.operation_id\", \"=\", id),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\teb.not(\n\t\t\t\t\t\teb.exists(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"_emdash_transfer_package_index\")\n\t\t\t\t\t\t\t\t.select(\"kind\")\n\t\t\t\t\t\t\t\t.where(\"_emdash_transfer_package_index.operation_id\", \"=\", id),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\teb.not(\n\t\t\t\t\t\teb.exists(\n\t\t\t\t\t\t\teb\n\t\t\t\t\t\t\t\t.selectFrom(\"_emdash_transfer_media_blobs\")\n\t\t\t\t\t\t\t\t.select(\"media_id\")\n\t\t\t\t\t\t\t\t.where(\"_emdash_transfer_media_blobs.operation_id\", \"=\", id),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t]),\n\t\t\t)\n\t\t\t.executeTakeFirst();\n\t\treturn Number(result.numDeletedRows ?? 0n) > 0;\n\t}\n\n\t/**\n\t * Bump `write_epoch` on every running export. Fenced write paths call this\n\t * so an export's consistency fence notices writes to tables that have no\n\t * `updated_at`. Returns the number of exports touched.\n\t */\n\tasync recordWriteForRunningExports(): Promise<number> {\n\t\treturn bumpRunningExportWriteEpochs(this.db);\n\t}\n\n\t/** Operations newest first, `{ items, nextCursor }` over `(created_at, id)`. */\n\tasync list(\n\t\toptions: {\n\t\t\tkind?: TransferOperationKind;\n\t\t\tcreatedBy?: string;\n\t\t\tlimit?: number;\n\t\t\tcursor?: { createdAt: string; id: string };\n\t\t} = {},\n\t): Promise<{ items: PublicTransferOperation[]; next?: { createdAt: string; id: string } }> {\n\t\tconst limit = Math.min(Math.max(options.limit ?? 50, 1), 100);\n\t\tlet query = this.db.selectFrom(\"_emdash_transfer_operations\").selectAll();\n\t\tif (options.kind) query = query.where(\"kind\", \"=\", options.kind);\n\t\tif (options.createdBy) query = query.where(\"created_by\", \"=\", options.createdBy);\n\t\tconst cursor = options.cursor;\n\t\tif (cursor) {\n\t\t\tquery = query.where((eb) =>\n\t\t\t\teb.or([\n\t\t\t\t\teb(\"created_at\", \"<\", cursor.createdAt),\n\t\t\t\t\teb.and([eb(\"created_at\", \"=\", cursor.createdAt), eb(\"id\", \"<\", cursor.id)]),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\t\tconst rows = await query\n\t\t\t.orderBy(\"created_at\", \"desc\")\n\t\t\t.orderBy(\"id\", \"desc\")\n\t\t\t.limit(limit + 1)\n\t\t\t.execute();\n\t\tconst items = rows.slice(0, limit).map((row) => toPublicOperation(toOperation(row)));\n\t\tconst last = items.at(-1);\n\t\treturn rows.length > limit && last\n\t\t\t? { items, next: { createdAt: last.createdAt, id: last.id } }\n\t\t\t: { items };\n\t}\n\n\tprivate patchValues(patch: OperationPatch): OperationUpdate {\n\t\tconst values: OperationUpdate = {};\n\t\tif (patch.state !== undefined) values.state = patch.state;\n\t\tif (patch.stage !== undefined) values.stage = patch.stage;\n\t\tif (patch.cursor !== undefined) {\n\t\t\tvalues.cursor =\n\t\t\t\tpatch.cursor === null ? null : JSON.stringify(transferCursorSchema.parse(patch.cursor));\n\t\t}\n\t\tif (patch.progress !== undefined) {\n\t\t\tvalues.progress =\n\t\t\t\tpatch.progress === null\n\t\t\t\t\t? null\n\t\t\t\t\t: JSON.stringify(transferProgressSchema.parse(patch.progress));\n\t\t}\n\t\tif (patch.packageDigest !== undefined) values.package_digest = patch.packageDigest;\n\t\tif (patch.planDigest !== undefined) values.plan_digest = patch.planDigest;\n\t\tif (patch.originSiteId !== undefined) values.origin_site_id = patch.originSiteId;\n\t\tif (patch.markMutationStarted) {\n\t\t\tvalues.mutation_started_at = sql<string>`COALESCE(mutation_started_at, ${timestampNow(this.db)})`;\n\t\t}\n\t\tif (patch.ttlSeconds !== undefined)\n\t\t\tvalues.expires_at = timestampOffset(this.db, patch.ttlSeconds);\n\t\tif (patch.retryError !== undefined) {\n\t\t\tvalues.error_code = patch.retryError?.code ?? null;\n\t\t\tvalues.error_detail =\n\t\t\t\tpatch.retryError?.detail === undefined ? null : JSON.stringify(patch.retryError.detail);\n\t\t}\n\t\treturn values;\n\t}\n\n\tprivate async fencedUpdate(\n\t\tid: string,\n\t\tleaseToken: string,\n\t\tvalues: OperationUpdate,\n\t): Promise<TransferOperation> {\n\t\tconst row = await this.db\n\t\t\t.updateTable(\"_emdash_transfer_operations\")\n\t\t\t.set({ ...values, updated_at: timestampNow(this.db) })\n\t\t\t.where(\"id\", \"=\", id)\n\t\t\t.where(\"lease_token\", \"=\", leaseToken)\n\t\t\t.where(\"lease_expires_at\", \"is not\", null)\n\t\t\t.where(timestampIsLive(this.db, \"lease_expires_at\"))\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirst();\n\t\tif (!row) {\n\t\t\tthrow new TransferError(\"TRANSFER_LEASE_LOST\", \"Transfer operation lease was lost\");\n\t\t}\n\t\treturn toOperation(row);\n\t}\n}\n\nfunction defaultTtl(kind: TransferOperationKind): number {\n\treturn kind === \"export\"\n\t\t? TRANSFER_LIMITS.exportTtlSeconds\n\t\t: TRANSFER_LIMITS.pendingImportTtlSeconds;\n}\n","/**\n * Byte-level access to one operation's staging area.\n */\n\nimport type { DownloadResult, Storage } from \"../../storage/types.js\";\nimport { TransferError, isTransferError } from \"../errors.js\";\nimport { createHashingStream, createSha256 } from \"../format/digest.js\";\nimport { stagingAuxKey, stagingKey, type StagingAuxFile } from \"./keys.js\";\n\ntype FixedLengthStreamConstructor = new (\n\texpectedLength: number | bigint,\n) => TransformStream<ArrayBufferView | ArrayBuffer, Uint8Array>;\n\ndeclare const FixedLengthStream: FixedLengthStreamConstructor | undefined;\n\nexport interface ExpectedFile {\n\tbytes: number;\n\t/** Lowercase hex SHA-256. */\n\tsha256: string;\n}\n\nexport interface PutVerifiedOptions {\n\tcontentType?: string;\n\t/**\n\t * Called before deleting the object after a failed upload; return true to\n\t * keep it (the path was already verified by another upload).\n\t */\n\tkeepExistingOnFailure?: () => Promise<boolean>;\n}\n\nconst PACKAGE_CONTENT_TYPE = \"application/octet-stream\";\n\nfunction oversizeError(): TransferError {\n\treturn new TransferError(\"TRANSFER_FILE_SIZE_MISMATCH\", \"File is larger than declared\");\n}\n\nfunction toStream(body: ReadableStream<Uint8Array> | Uint8Array): ReadableStream<Uint8Array> {\n\tif (body instanceof Uint8Array) {\n\t\treturn new ReadableStream<Uint8Array>({\n\t\t\tstart(controller) {\n\t\t\t\tif (body.byteLength > 0) controller.enqueue(body);\n\t\t\t\tcontroller.close();\n\t\t\t},\n\t\t});\n\t}\n\treturn body;\n}\n\n/**\n * Stream `body` into `key`, hashing and counting as it goes. The object is\n * kept only if exactly `expected.bytes` bytes with digest `expected.sha256`\n * were written; otherwise it is deleted and `TRANSFER_FILE_SIZE_MISMATCH` or\n * `TRANSFER_FILE_DIGEST_MISMATCH` is thrown. Where the runtime provides\n * `FixedLengthStream` (workerd), the upload is wrapped in one so R2 receives\n * a known length.\n *\n * Callers staging a package file must check its staged-files row first and\n * refuse the upload when it is already `verified` and its object still\n * matches, and must pass `keepExistingOnFailure` returning true once the row\n * is verified: a failed retry or concurrent upload of the same path must not\n * delete the object a successful upload stored. A failing upload that\n * already overwrote the object can still leave bad bytes behind a verified\n * row, so readers verify sizes and digests again when they read staged\n * files, and a later upload of that path replaces the bad object.\n */\nexport async function putVerified(\n\tstorage: Storage,\n\tkey: string,\n\tbody: ReadableStream<Uint8Array> | Uint8Array,\n\texpected: ExpectedFile,\n\toptions: PutVerifiedOptions = {},\n): Promise<void> {\n\tconst discard = async () => {\n\t\tif (options.keepExistingOnFailure && (await options.keepExistingOnFailure())) return;\n\t\tawait storage.delete(key).catch(() => undefined);\n\t};\n\tif (!Number.isSafeInteger(expected.bytes) || expected.bytes < 0) {\n\t\tthrow new TransferError(\"TRANSFER_FILE_SIZE_MISMATCH\", \"Invalid declared size\");\n\t}\n\tconst hasher = await createSha256();\n\tconst hashing = createHashingStream(hasher, {\n\t\tmaxBytes: expected.bytes,\n\t\tonLimitExceeded: oversizeError,\n\t});\n\tlet stream = toStream(body).pipeThrough(hashing.stream);\n\tif (typeof FixedLengthStream !== \"undefined\") {\n\t\tstream = stream.pipeThrough(new FixedLengthStream(expected.bytes));\n\t}\n\n\ttry {\n\t\tawait storage.upload({\n\t\t\tkey,\n\t\t\tbody: stream,\n\t\t\tcontentType: options.contentType ?? PACKAGE_CONTENT_TYPE,\n\t\t});\n\t} catch (error) {\n\t\tawait discard();\n\t\tif (isTransferError(error)) throw error;\n\t\tconst cause = findTransferError(error);\n\t\tif (cause) throw cause;\n\t\tif (hashing.bytes() !== expected.bytes) {\n\t\t\tthrow new TransferError(\"TRANSFER_FILE_SIZE_MISMATCH\", \"File size does not match\", {\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t\tthrow new TransferError(\"TRANSFER_STORAGE_ERROR\", \"Failed to store file\", { cause: error });\n\t}\n\n\tconst digest = await hasher.digest();\n\tif (hashing.bytes() !== expected.bytes) {\n\t\tawait discard();\n\t\tthrow new TransferError(\"TRANSFER_FILE_SIZE_MISMATCH\", \"File size does not match\", {\n\t\t\tdetail: { expected: expected.bytes, actual: hashing.bytes() },\n\t\t});\n\t}\n\tif (digest !== expected.sha256) {\n\t\tawait discard();\n\t\tthrow new TransferError(\"TRANSFER_FILE_DIGEST_MISMATCH\", \"File digest does not match\");\n\t}\n}\n\nfunction findTransferError(error: unknown): TransferError | null {\n\tlet current: unknown = error;\n\tfor (let depth = 0; depth < 5 && current instanceof Error; depth++) {\n\t\tif (current instanceof TransferError) return current;\n\t\tcurrent = current.cause;\n\t}\n\treturn null;\n}\n\n/** Read a whole stream, failing once it exceeds `maxBytes`. */\nexport async function readStreamBytes(\n\tstream: ReadableStream<Uint8Array>,\n\tmaxBytes: number,\n): Promise<Uint8Array> {\n\tconst reader = stream.getReader();\n\tconst parts: Uint8Array[] = [];\n\tlet total = 0;\n\ttry {\n\t\tfor (;;) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\ttotal += value.byteLength;\n\t\t\tif (total > maxBytes) {\n\t\t\t\tthrow new TransferError(\"TRANSFER_LIMIT_EXCEEDED\", \"File exceeds its size limit\", {\n\t\t\t\t\tdetail: { limit: maxBytes },\n\t\t\t\t});\n\t\t\t}\n\t\t\tparts.push(value);\n\t\t}\n\t} catch (error) {\n\t\tawait reader.cancel().catch(() => undefined);\n\t\tthrow error;\n\t} finally {\n\t\treader.releaseLock();\n\t}\n\tconst bytes = new Uint8Array(total);\n\tlet offset = 0;\n\tfor (const part of parts) {\n\t\tbytes.set(part, offset);\n\t\toffset += part.byteLength;\n\t}\n\treturn bytes;\n}\n\n/** One operation's staging area in `storage` under `prefix` (see keys.ts). */\nexport class TransferStage {\n\tconstructor(\n\t\treadonly storage: Storage,\n\t\treadonly prefix: string,\n\t) {}\n\n\tkeyFor(path: string): string {\n\t\treturn stagingKey(this.prefix, path);\n\t}\n\n\tasync putVerified(\n\t\tpath: string,\n\t\tbody: ReadableStream<Uint8Array> | Uint8Array,\n\t\tbytes: number,\n\t\tsha256: string,\n\t\toptions: PutVerifiedOptions = {},\n\t): Promise<void> {\n\t\tawait putVerified(this.storage, this.keyFor(path), body, { bytes, sha256 }, options);\n\t}\n\n\tasync exists(path: string): Promise<boolean> {\n\t\treturn this.storage.exists(this.keyFor(path));\n\t}\n\n\tasync open(path: string): Promise<DownloadResult> {\n\t\ttry {\n\t\t\treturn await this.storage.download(this.keyFor(path));\n\t\t} catch (error) {\n\t\t\tthrow new TransferError(\"TRANSFER_FILE_MISSING\", \"Staged file is missing\", {\n\t\t\t\tdetail: { path },\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync readBytes(path: string, maxBytes: number): Promise<Uint8Array> {\n\t\tconst file = await this.open(path);\n\t\treturn readStreamBytes(file.body, maxBytes);\n\t}\n\n\tasync putAux(file: StagingAuxFile, content: string): Promise<void> {\n\t\tawait this.storage.upload({\n\t\t\tkey: stagingAuxKey(this.prefix, file),\n\t\t\tbody: new TextEncoder().encode(content),\n\t\t\tcontentType: \"application/json\",\n\t\t});\n\t}\n\n\tasync readAux(file: StagingAuxFile, maxBytes: number): Promise<string | null> {\n\t\tconst key = stagingAuxKey(this.prefix, file);\n\t\tif (!(await this.storage.exists(key))) return null;\n\t\tconst download = await this.storage.download(key);\n\t\treturn new TextDecoder().decode(await readStreamBytes(download.body, maxBytes));\n\t}\n\n\t/**\n\t * Delete up to `limit` staged objects. Returns the number deleted; call\n\t * again until it returns 0.\n\t */\n\tasync deleteSome(limit = 100): Promise<number> {\n\t\tconst listing = await this.storage.list({ prefix: this.prefix, limit });\n\t\tfor (const file of listing.files) await this.storage.delete(file.key);\n\t\treturn listing.files.length;\n\t}\n}\n"],"mappings":"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"}
|
package/dist/state-DDiPySSG.mjs
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
//#region src/plugins/state.ts
|
|
2
|
-
const TIMEZONE_SUFFIX = /(?:z|[+-]\d{2}(?::?\d{2})?)$/i;
|
|
3
|
-
const HOUR_OFFSET_SUFFIX = /\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?[+-]\d{2}$/i;
|
|
4
|
-
function parseDatabaseTimestamp(value) {
|
|
5
|
-
let normalized = value.trim().replace(" ", "T");
|
|
6
|
-
if (HOUR_OFFSET_SUFFIX.test(normalized)) normalized += ":00";
|
|
7
|
-
else if (!TIMEZONE_SUFFIX.test(normalized)) normalized += "Z";
|
|
8
|
-
return new Date(normalized);
|
|
9
|
-
}
|
|
10
|
-
function toPluginStatus(value) {
|
|
11
|
-
if (value === "active") return "active";
|
|
12
|
-
return "inactive";
|
|
13
|
-
}
|
|
14
|
-
function toPluginSource(value) {
|
|
15
|
-
if (value === "marketplace") return "marketplace";
|
|
16
|
-
if (value === "registry") return "registry";
|
|
17
|
-
return "config";
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Repository for plugin state in the database
|
|
21
|
-
*/
|
|
22
|
-
var PluginStateRepository = class {
|
|
23
|
-
constructor(db) {
|
|
24
|
-
this.db = db;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get state for a specific plugin
|
|
28
|
-
*/
|
|
29
|
-
async get(pluginId) {
|
|
30
|
-
const row = await this.db.selectFrom("_plugin_state").selectAll().where("plugin_id", "=", pluginId).executeTakeFirst();
|
|
31
|
-
if (!row) return null;
|
|
32
|
-
return rowToPluginState(row);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Get all plugin states
|
|
36
|
-
*/
|
|
37
|
-
async getAll() {
|
|
38
|
-
return (await this.db.selectFrom("_plugin_state").selectAll().execute()).map(rowToPluginState);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Get all marketplace-installed plugin states
|
|
42
|
-
*/
|
|
43
|
-
async getMarketplacePlugins() {
|
|
44
|
-
return (await this.db.selectFrom("_plugin_state").selectAll().where("source", "=", "marketplace").execute()).map(rowToPluginState);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Get all registry-installed plugin states.
|
|
48
|
-
*
|
|
49
|
-
* The runtime's registry sync path uses this to discover which
|
|
50
|
-
* registry plugins should be loaded into the sandbox on this worker.
|
|
51
|
-
*/
|
|
52
|
-
async getRegistryPlugins() {
|
|
53
|
-
return (await this.db.selectFrom("_plugin_state").selectAll().where("source", "=", "registry").execute()).map(rowToPluginState);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Create or update plugin state
|
|
57
|
-
*/
|
|
58
|
-
async upsert(pluginId, version, status, opts) {
|
|
59
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
60
|
-
const existing = await this.get(pluginId);
|
|
61
|
-
if (existing) {
|
|
62
|
-
const updates = {
|
|
63
|
-
status,
|
|
64
|
-
version
|
|
65
|
-
};
|
|
66
|
-
if (status === "active" && existing.status !== "active") updates.activated_at = now;
|
|
67
|
-
else if (status === "inactive" && existing.status !== "inactive") updates.deactivated_at = now;
|
|
68
|
-
if (opts?.source) updates.source = opts.source;
|
|
69
|
-
if (opts?.marketplaceVersion !== void 0) updates.marketplace_version = opts.marketplaceVersion;
|
|
70
|
-
if (opts?.displayName !== void 0) updates.display_name = opts.displayName;
|
|
71
|
-
if (opts?.description !== void 0) updates.description = opts.description;
|
|
72
|
-
if (opts?.registryPublisherDid !== void 0) updates.registry_publisher_did = opts.registryPublisherDid;
|
|
73
|
-
if (opts?.registrySlug !== void 0) updates.registry_slug = opts.registrySlug;
|
|
74
|
-
if (opts?.mcpToolsEnabled !== void 0) updates.mcp_tools_enabled = opts.mcpToolsEnabled ? 1 : 0;
|
|
75
|
-
if (opts?.mcpToolsConsent !== void 0) updates.mcp_tools_consent = opts.mcpToolsConsent;
|
|
76
|
-
await this.db.updateTable("_plugin_state").set(updates).where("plugin_id", "=", pluginId).execute();
|
|
77
|
-
} else await this.db.insertInto("_plugin_state").values({
|
|
78
|
-
plugin_id: pluginId,
|
|
79
|
-
status,
|
|
80
|
-
version,
|
|
81
|
-
installed_at: now,
|
|
82
|
-
activated_at: status === "active" ? now : null,
|
|
83
|
-
deactivated_at: null,
|
|
84
|
-
data: null,
|
|
85
|
-
source: opts?.source ?? "config",
|
|
86
|
-
marketplace_version: opts?.marketplaceVersion ?? null,
|
|
87
|
-
display_name: opts?.displayName ?? null,
|
|
88
|
-
description: opts?.description ?? null,
|
|
89
|
-
registry_publisher_did: opts?.registryPublisherDid ?? null,
|
|
90
|
-
registry_slug: opts?.registrySlug ?? null,
|
|
91
|
-
mcp_tools_enabled: opts?.mcpToolsEnabled ? 1 : 0,
|
|
92
|
-
mcp_tools_consent: opts?.mcpToolsConsent ?? null
|
|
93
|
-
}).execute();
|
|
94
|
-
return await this.get(pluginId);
|
|
95
|
-
}
|
|
96
|
-
async restoreIfVersion(expectedVersion, state) {
|
|
97
|
-
return ((await this.db.updateTable("_plugin_state").set({
|
|
98
|
-
version: state.version,
|
|
99
|
-
status: state.status,
|
|
100
|
-
installed_at: state.installedAt.toISOString(),
|
|
101
|
-
activated_at: state.activatedAt?.toISOString() ?? null,
|
|
102
|
-
deactivated_at: state.deactivatedAt?.toISOString() ?? null,
|
|
103
|
-
source: state.source,
|
|
104
|
-
marketplace_version: state.marketplaceVersion,
|
|
105
|
-
display_name: state.displayName,
|
|
106
|
-
description: state.description,
|
|
107
|
-
registry_publisher_did: state.registryPublisherDid,
|
|
108
|
-
registry_slug: state.registrySlug,
|
|
109
|
-
mcp_tools_enabled: state.mcpToolsEnabled ? 1 : 0,
|
|
110
|
-
mcp_tools_consent: state.mcpToolsConsent
|
|
111
|
-
}).where("plugin_id", "=", state.pluginId).where("version", "=", expectedVersion).where("source", "=", state.source).executeTakeFirst()).numUpdatedRows ?? 0n) > 0n;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Enable a plugin
|
|
115
|
-
*/
|
|
116
|
-
async enable(pluginId, version) {
|
|
117
|
-
return this.upsert(pluginId, version, "active");
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Disable a plugin
|
|
121
|
-
*/
|
|
122
|
-
async disable(pluginId, version) {
|
|
123
|
-
return this.upsert(pluginId, version, "inactive");
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Delete plugin state
|
|
127
|
-
*/
|
|
128
|
-
async delete(pluginId) {
|
|
129
|
-
return ((await this.db.deleteFrom("_plugin_state").where("plugin_id", "=", pluginId).executeTakeFirst()).numDeletedRows ?? 0) > 0;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
function rowToPluginState(row) {
|
|
133
|
-
return {
|
|
134
|
-
pluginId: row.plugin_id,
|
|
135
|
-
status: toPluginStatus(row.status),
|
|
136
|
-
version: row.version,
|
|
137
|
-
installedAt: parseDatabaseTimestamp(row.installed_at),
|
|
138
|
-
activatedAt: row.activated_at ? parseDatabaseTimestamp(row.activated_at) : null,
|
|
139
|
-
deactivatedAt: row.deactivated_at ? parseDatabaseTimestamp(row.deactivated_at) : null,
|
|
140
|
-
source: toPluginSource(row.source),
|
|
141
|
-
marketplaceVersion: row.marketplace_version ?? null,
|
|
142
|
-
displayName: row.display_name ?? null,
|
|
143
|
-
description: row.description ?? null,
|
|
144
|
-
registryPublisherDid: row.registry_publisher_did ?? null,
|
|
145
|
-
registrySlug: row.registry_slug ?? null,
|
|
146
|
-
mcpToolsEnabled: row.mcp_tools_enabled === 1,
|
|
147
|
-
mcpToolsConsent: row.mcp_tools_consent ?? null
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
//#endregion
|
|
152
|
-
export { PluginStateRepository as t };
|
|
153
|
-
//# sourceMappingURL=state-DDiPySSG.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-DDiPySSG.mjs","names":[],"sources":["../src/plugins/state.ts"],"sourcesContent":["/**\n * Plugin State Repository\n *\n * Database-backed storage for plugin activation state.\n * Used by the admin API to persist plugin enable/disable across restarts.\n */\n\nimport type { Kysely } from \"kysely\";\n\nimport type { Database } from \"../database/types.js\";\n\nexport type PluginStatus = \"active\" | \"inactive\";\nexport type PluginSource = \"config\" | \"marketplace\" | \"registry\";\n\nconst TIMEZONE_SUFFIX = /(?:z|[+-]\\d{2}(?::?\\d{2})?)$/i;\nconst HOUR_OFFSET_SUFFIX = /\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?[+-]\\d{2}$/i;\n\nfunction parseDatabaseTimestamp(value: string): Date {\n\tlet normalized = value.trim().replace(\" \", \"T\");\n\tif (HOUR_OFFSET_SUFFIX.test(normalized)) normalized += \":00\";\n\telse if (!TIMEZONE_SUFFIX.test(normalized)) normalized += \"Z\";\n\treturn new Date(normalized);\n}\n\nfunction toPluginStatus(value: string): PluginStatus {\n\tif (value === \"active\") return \"active\";\n\treturn \"inactive\";\n}\n\nfunction toPluginSource(value: string | undefined | null): PluginSource {\n\tif (value === \"marketplace\") return \"marketplace\";\n\tif (value === \"registry\") return \"registry\";\n\treturn \"config\";\n}\n\nexport interface PluginState {\n\tpluginId: string;\n\tstatus: PluginStatus;\n\tversion: string;\n\tinstalledAt: Date;\n\tactivatedAt: Date | null;\n\tdeactivatedAt: Date | null;\n\tsource: PluginSource;\n\tmarketplaceVersion: string | null;\n\tdisplayName: string | null;\n\tdescription: string | null;\n\t/**\n\t * Publisher DID this plugin was published under. Populated only when\n\t * `source === \"registry\"`; null otherwise.\n\t */\n\tregistryPublisherDid: string | null;\n\t/**\n\t * Slug under which the plugin was published in the publisher's repo\n\t * (the rkey of the `pm.fair.package.profile` record). Populated only\n\t * when `source === \"registry\"`; null otherwise.\n\t *\n\t * The opaque `pluginId` for registry installs is derived from\n\t * `(registryPublisherDid, registrySlug)` -- see\n\t * `packages/core/src/registry/plugin-id.ts`.\n\t */\n\tregistrySlug: string | null;\n\tmcpToolsEnabled: boolean;\n\tmcpToolsConsent: string | null;\n}\n\n/**\n * Repository for plugin state in the database\n */\nexport class PluginStateRepository {\n\tconstructor(private db: Kysely<Database>) {}\n\n\t/**\n\t * Get state for a specific plugin\n\t */\n\tasync get(pluginId: string): Promise<PluginState | null> {\n\t\tconst row = await this.db\n\t\t\t.selectFrom(\"_plugin_state\")\n\t\t\t.selectAll()\n\t\t\t.where(\"plugin_id\", \"=\", pluginId)\n\t\t\t.executeTakeFirst();\n\n\t\tif (!row) return null;\n\n\t\treturn rowToPluginState(row);\n\t}\n\n\t/**\n\t * Get all plugin states\n\t */\n\tasync getAll(): Promise<PluginState[]> {\n\t\tconst rows = await this.db.selectFrom(\"_plugin_state\").selectAll().execute();\n\t\treturn rows.map(rowToPluginState);\n\t}\n\n\t/**\n\t * Get all marketplace-installed plugin states\n\t */\n\tasync getMarketplacePlugins(): Promise<PluginState[]> {\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_plugin_state\")\n\t\t\t.selectAll()\n\t\t\t.where(\"source\", \"=\", \"marketplace\")\n\t\t\t.execute();\n\t\treturn rows.map(rowToPluginState);\n\t}\n\n\t/**\n\t * Get all registry-installed plugin states.\n\t *\n\t * The runtime's registry sync path uses this to discover which\n\t * registry plugins should be loaded into the sandbox on this worker.\n\t */\n\tasync getRegistryPlugins(): Promise<PluginState[]> {\n\t\tconst rows = await this.db\n\t\t\t.selectFrom(\"_plugin_state\")\n\t\t\t.selectAll()\n\t\t\t.where(\"source\", \"=\", \"registry\")\n\t\t\t.execute();\n\t\treturn rows.map(rowToPluginState);\n\t}\n\n\t/**\n\t * Create or update plugin state\n\t */\n\tasync upsert(\n\t\tpluginId: string,\n\t\tversion: string,\n\t\tstatus: PluginStatus,\n\t\topts?: {\n\t\t\tsource?: PluginSource;\n\t\t\tmarketplaceVersion?: string;\n\t\t\tdisplayName?: string;\n\t\t\tdescription?: string;\n\t\t\tregistryPublisherDid?: string;\n\t\t\tregistrySlug?: string;\n\t\t\tmcpToolsEnabled?: boolean;\n\t\t\tmcpToolsConsent?: string | null;\n\t\t},\n\t): Promise<PluginState> {\n\t\tconst now = new Date().toISOString();\n\t\tconst existing = await this.get(pluginId);\n\n\t\tif (existing) {\n\t\t\t// Update existing state\n\t\t\tconst updates: Record<string, string | number | null> = {\n\t\t\t\tstatus,\n\t\t\t\tversion,\n\t\t\t};\n\n\t\t\tif (status === \"active\" && existing.status !== \"active\") {\n\t\t\t\tupdates.activated_at = now;\n\t\t\t} else if (status === \"inactive\" && existing.status !== \"inactive\") {\n\t\t\t\tupdates.deactivated_at = now;\n\t\t\t}\n\n\t\t\tif (opts?.source) updates.source = opts.source;\n\t\t\tif (opts?.marketplaceVersion !== undefined) {\n\t\t\t\tupdates.marketplace_version = opts.marketplaceVersion;\n\t\t\t}\n\t\t\tif (opts?.displayName !== undefined) {\n\t\t\t\tupdates.display_name = opts.displayName;\n\t\t\t}\n\t\t\tif (opts?.description !== undefined) {\n\t\t\t\tupdates.description = opts.description;\n\t\t\t}\n\t\t\tif (opts?.registryPublisherDid !== undefined) {\n\t\t\t\tupdates.registry_publisher_did = opts.registryPublisherDid;\n\t\t\t}\n\t\t\tif (opts?.registrySlug !== undefined) {\n\t\t\t\tupdates.registry_slug = opts.registrySlug;\n\t\t\t}\n\t\t\tif (opts?.mcpToolsEnabled !== undefined) {\n\t\t\t\tupdates.mcp_tools_enabled = opts.mcpToolsEnabled ? 1 : 0;\n\t\t\t}\n\t\t\tif (opts?.mcpToolsConsent !== undefined) {\n\t\t\t\tupdates.mcp_tools_consent = opts.mcpToolsConsent;\n\t\t\t}\n\n\t\t\tawait this.db\n\t\t\t\t.updateTable(\"_plugin_state\")\n\t\t\t\t.set(updates)\n\t\t\t\t.where(\"plugin_id\", \"=\", pluginId)\n\t\t\t\t.execute();\n\t\t} else {\n\t\t\t// Create new state\n\t\t\tawait this.db\n\t\t\t\t.insertInto(\"_plugin_state\")\n\t\t\t\t.values({\n\t\t\t\t\tplugin_id: pluginId,\n\t\t\t\t\tstatus,\n\t\t\t\t\tversion,\n\t\t\t\t\tinstalled_at: now,\n\t\t\t\t\tactivated_at: status === \"active\" ? now : null,\n\t\t\t\t\tdeactivated_at: null,\n\t\t\t\t\tdata: null,\n\t\t\t\t\tsource: opts?.source ?? \"config\",\n\t\t\t\t\tmarketplace_version: opts?.marketplaceVersion ?? null,\n\t\t\t\t\tdisplay_name: opts?.displayName ?? null,\n\t\t\t\t\tdescription: opts?.description ?? null,\n\t\t\t\t\tregistry_publisher_did: opts?.registryPublisherDid ?? null,\n\t\t\t\t\tregistry_slug: opts?.registrySlug ?? null,\n\t\t\t\t\tmcp_tools_enabled: opts?.mcpToolsEnabled ? 1 : 0,\n\t\t\t\t\tmcp_tools_consent: opts?.mcpToolsConsent ?? null,\n\t\t\t\t})\n\t\t\t\t.execute();\n\t\t}\n\n\t\treturn (await this.get(pluginId))!;\n\t}\n\n\tasync restoreIfVersion(expectedVersion: string, state: PluginState): Promise<boolean> {\n\t\tconst result = await this.db\n\t\t\t.updateTable(\"_plugin_state\")\n\t\t\t.set({\n\t\t\t\tversion: state.version,\n\t\t\t\tstatus: state.status,\n\t\t\t\tinstalled_at: state.installedAt.toISOString(),\n\t\t\t\tactivated_at: state.activatedAt?.toISOString() ?? null,\n\t\t\t\tdeactivated_at: state.deactivatedAt?.toISOString() ?? null,\n\t\t\t\tsource: state.source,\n\t\t\t\tmarketplace_version: state.marketplaceVersion,\n\t\t\t\tdisplay_name: state.displayName,\n\t\t\t\tdescription: state.description,\n\t\t\t\tregistry_publisher_did: state.registryPublisherDid,\n\t\t\t\tregistry_slug: state.registrySlug,\n\t\t\t\tmcp_tools_enabled: state.mcpToolsEnabled ? 1 : 0,\n\t\t\t\tmcp_tools_consent: state.mcpToolsConsent,\n\t\t\t})\n\t\t\t.where(\"plugin_id\", \"=\", state.pluginId)\n\t\t\t.where(\"version\", \"=\", expectedVersion)\n\t\t\t.where(\"source\", \"=\", state.source)\n\t\t\t.executeTakeFirst();\n\n\t\treturn (result.numUpdatedRows ?? 0n) > 0n;\n\t}\n\n\t/**\n\t * Enable a plugin\n\t */\n\tasync enable(pluginId: string, version: string): Promise<PluginState> {\n\t\treturn this.upsert(pluginId, version, \"active\");\n\t}\n\n\t/**\n\t * Disable a plugin\n\t */\n\tasync disable(pluginId: string, version: string): Promise<PluginState> {\n\t\treturn this.upsert(pluginId, version, \"inactive\");\n\t}\n\n\t/**\n\t * Delete plugin state\n\t */\n\tasync delete(pluginId: string): Promise<boolean> {\n\t\tconst result = await this.db\n\t\t\t.deleteFrom(\"_plugin_state\")\n\t\t\t.where(\"plugin_id\", \"=\", pluginId)\n\t\t\t.executeTakeFirst();\n\n\t\treturn (result.numDeletedRows ?? 0) > 0;\n\t}\n}\n\n/**\n * Internal: map a `_plugin_state` row to the public `PluginState` shape.\n *\n * Kept at module scope so the three select paths (`get`, `getAll`,\n * `getMarketplacePlugins`, `getRegistryPlugins`) stay byte-identical in\n * their handling of nullable columns -- adding a new column to the table\n * means changing this function and nothing else.\n */\ninterface PluginStateRow {\n\tplugin_id: string;\n\tstatus: string;\n\tversion: string;\n\tinstalled_at: string;\n\tactivated_at: string | null;\n\tdeactivated_at: string | null;\n\tsource: string;\n\tmarketplace_version: string | null;\n\tdisplay_name: string | null;\n\tdescription: string | null;\n\tregistry_publisher_did: string | null;\n\tregistry_slug: string | null;\n\tmcp_tools_enabled: number;\n\tmcp_tools_consent: string | null;\n}\n\nfunction rowToPluginState(row: PluginStateRow): PluginState {\n\treturn {\n\t\tpluginId: row.plugin_id,\n\t\tstatus: toPluginStatus(row.status),\n\t\tversion: row.version,\n\t\tinstalledAt: parseDatabaseTimestamp(row.installed_at),\n\t\tactivatedAt: row.activated_at ? parseDatabaseTimestamp(row.activated_at) : null,\n\t\tdeactivatedAt: row.deactivated_at ? parseDatabaseTimestamp(row.deactivated_at) : null,\n\t\tsource: toPluginSource(row.source),\n\t\tmarketplaceVersion: row.marketplace_version ?? null,\n\t\tdisplayName: row.display_name ?? null,\n\t\tdescription: row.description ?? null,\n\t\tregistryPublisherDid: row.registry_publisher_did ?? null,\n\t\tregistrySlug: row.registry_slug ?? null,\n\t\tmcpToolsEnabled: row.mcp_tools_enabled === 1,\n\t\tmcpToolsConsent: row.mcp_tools_consent ?? null,\n\t};\n}\n"],"mappings":"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"}
|
package/dist/status-DZKIG4a9.mjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
//#region src/redirects/status.ts
|
|
2
|
-
/**
|
|
3
|
-
* Redirect rule status codes.
|
|
4
|
-
*
|
|
5
|
-
* A redirect rule's `type` is either a *redirect* status (issues a `Location`
|
|
6
|
-
* header) or a *terminal* status (serves the status with no target). Terminal
|
|
7
|
-
* statuses let editors mark a URL as intentionally gone:
|
|
8
|
-
* - `410 Gone` — permanently and intentionally deleted (Google deindexes it
|
|
9
|
-
* faster than a 404).
|
|
10
|
-
* - `451 Unavailable For Legal Reasons`.
|
|
11
|
-
*/
|
|
12
|
-
/** Statuses that issue an HTTP redirect (require a destination). */
|
|
13
|
-
const REDIRECT_STATUSES = [
|
|
14
|
-
301,
|
|
15
|
-
302,
|
|
16
|
-
307,
|
|
17
|
-
308
|
|
18
|
-
];
|
|
19
|
-
/** Terminal statuses that serve a status with no `Location` / no destination. */
|
|
20
|
-
const TERMINAL_STATUSES = [410, 451];
|
|
21
|
-
/** All values accepted as a redirect rule `type`. */
|
|
22
|
-
const REDIRECT_RULE_STATUSES = [...REDIRECT_STATUSES, ...TERMINAL_STATUSES];
|
|
23
|
-
/** True for terminal statuses (410/451) — served directly, with no target. */
|
|
24
|
-
function isTerminalStatus(type) {
|
|
25
|
-
return TERMINAL_STATUSES.includes(type);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { isTerminalStatus as n, REDIRECT_RULE_STATUSES as t };
|
|
30
|
-
//# sourceMappingURL=status-DZKIG4a9.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status-DZKIG4a9.mjs","names":[],"sources":["../src/redirects/status.ts"],"sourcesContent":["/**\n * Redirect rule status codes.\n *\n * A redirect rule's `type` is either a *redirect* status (issues a `Location`\n * header) or a *terminal* status (serves the status with no target). Terminal\n * statuses let editors mark a URL as intentionally gone:\n * - `410 Gone` — permanently and intentionally deleted (Google deindexes it\n * faster than a 404).\n * - `451 Unavailable For Legal Reasons`.\n */\n\n/** Statuses that issue an HTTP redirect (require a destination). */\nexport const REDIRECT_STATUSES = [301, 302, 307, 308] as const;\n\n/** Terminal statuses that serve a status with no `Location` / no destination. */\nexport const TERMINAL_STATUSES = [410, 451] as const;\n\n/** All values accepted as a redirect rule `type`. */\nexport const REDIRECT_RULE_STATUSES: readonly number[] = [\n\t...REDIRECT_STATUSES,\n\t...TERMINAL_STATUSES,\n];\n\n/** True for terminal statuses (410/451) — served directly, with no target. */\nexport function isTerminalStatus(type: number): boolean {\n\treturn (TERMINAL_STATUSES as readonly number[]).includes(type);\n}\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,oBAAoB;CAAC;CAAK;CAAK;CAAK;CAAI;;AAGrD,MAAa,oBAAoB,CAAC,KAAK,IAAI;;AAG3C,MAAa,yBAA4C,CACxD,GAAG,mBACH,GAAG,kBACH;;AAGD,SAAgB,iBAAiB,MAAuB;AACvD,QAAQ,kBAAwC,SAAS,KAAK"}
|