emdash 0.41.0 → 0.42.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-DBki7IT4.mjs +26 -0
- package/dist/action-token-DBki7IT4.mjs.map +1 -0
- package/dist/activation-DDuqAat2.mjs +387 -0
- package/dist/activation-DDuqAat2.mjs.map +1 -0
- package/dist/adapters-BrZxU6vM.d.mts +171 -0
- package/dist/adapters-BrZxU6vM.d.mts.map +1 -0
- package/dist/allowed-origins-CFtudhyw.mjs +116 -0
- package/dist/allowed-origins-CFtudhyw.mjs.map +1 -0
- package/dist/api/route-utils.d.mts +5 -4
- package/dist/api/route-utils.d.mts.map +1 -1
- package/dist/api/route-utils.mjs +52 -47
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +11 -10
- package/dist/api-CFQn8VLR.mjs +4973 -0
- package/dist/api-CFQn8VLR.mjs.map +1 -0
- package/dist/api-tokens-P3mAaQgr.mjs +166 -0
- package/dist/api-tokens-P3mAaQgr.mjs.map +1 -0
- package/dist/apply-C1kq5l7p.mjs +1672 -0
- package/dist/apply-C1kq5l7p.mjs.map +1 -0
- package/dist/approvals-l9sGqPmL.mjs +460 -0
- package/dist/approvals-l9sGqPmL.mjs.map +1 -0
- package/dist/artifact-fetch-CWxyELVI.mjs +659 -0
- package/dist/artifact-fetch-CWxyELVI.mjs.map +1 -0
- package/dist/astro/index.d.mts +14 -14
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +96 -546
- 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.d.mts.map +1 -1
- package/dist/astro/middleware/redirect.mjs +19 -9
- package/dist/astro/middleware/redirect.mjs.map +1 -1
- package/dist/astro/middleware/request-context.d.mts +2 -1
- package/dist/astro/middleware/request-context.d.mts.map +1 -1
- package/dist/astro/middleware/request-context.mjs +15 -6
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +12 -12
- package/dist/astro/middleware.mjs +114 -110
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +15 -14
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +15 -14
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
- 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 +18 -17
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +18 -17
- package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +18 -17
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +36 -27
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/translations.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +32 -26
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.mjs +32 -26
- package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +20 -19
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/bulk.mjs +19 -18
- package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/index.mjs +19 -18
- package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/core-update.d.mts +8 -0
- package/dist/astro/routes/api/admin/core-update.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/core-update.mjs +28 -0
- package/dist/astro/routes/api/admin/core-update.mjs.map +1 -0
- 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 +21 -20
- package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +23 -22
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +23 -22
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +26 -25
- package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +32 -31
- package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +23 -22
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +23 -22
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
- 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 +75 -73
- 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 +74 -72
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +75 -73
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +86 -83
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +75 -73
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +10 -7
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +74 -72
- 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 +85 -82
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +74 -72
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +75 -73
- 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 +87 -84
- 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 +77 -75
- 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 +75 -73
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +74 -72
- 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 +74 -72
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +10 -7
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +74 -72
- 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 +42 -41
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs +42 -41
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs +45 -44
- package/dist/astro/routes/api/admin/transfer/exports/_id_/archive.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs +45 -44
- package/dist/astro/routes/api/admin/transfer/exports/_id_/files/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/exports/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs +45 -44
- package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs +46 -45
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/advance.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs +46 -45
- package/dist/astro/routes/api/admin/transfer/imports/_id_/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/cancel.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs +46 -45
- package/dist/astro/routes/api/admin/transfer/imports/_id_/execute.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/files/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs +46 -45
- package/dist/astro/routes/api/admin/transfer/imports/_id_/missing.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/plan.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs +44 -43
- package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs +46 -45
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
- 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 +16 -15
- package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +6 -6
- package/dist/astro/routes/api/admin/users/index.mjs +15 -14
- package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
- 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.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/invite/complete.mjs +23 -19
- package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
- package/dist/astro/routes/api/auth/invite/index.mjs +17 -16
- package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
- package/dist/astro/routes/api/auth/invite/register-options.mjs +18 -17
- package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/logout.mjs +5 -5
- package/dist/astro/routes/api/auth/magic-link/send.mjs +19 -18
- package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
- package/dist/astro/routes/api/auth/magic-link/verify.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +19 -15
- package/dist/astro/routes/api/auth/magic-link/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/me.mjs +16 -15
- package/dist/astro/routes/api/auth/me.mjs.map +1 -1
- package/dist/astro/routes/api/auth/mode.mjs +5 -5
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +13 -4
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs.map +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +15 -14
- package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/index.mjs +4 -4
- package/dist/astro/routes/api/auth/passkey/options.mjs +20 -19
- package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +18 -17
- package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +19 -18
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/verify.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/passkey/verify.mjs +23 -19
- package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/complete.d.mts.map +1 -1
- package/dist/astro/routes/api/auth/signup/complete.mjs +23 -19
- package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/request.mjs +18 -17
- package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/verify.mjs +4 -4
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +20 -19
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -1
- 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 +12 -11
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +33 -32
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +36 -35
- 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 +36 -35
- 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 +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +27 -26
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +18 -17
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +18 -17
- 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 +16 -15
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/trash.mjs +16 -15
- package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
- package/dist/astro/routes/api/dashboard.mjs +13 -11
- 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 +25 -24
- package/dist/astro/routes/api/import/probe.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +6 -6
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +14 -14
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +167 -21
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -12
- package/dist/astro/routes/api/import/wordpress/media.mjs +20 -19
- package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +19 -18
- package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +29 -28
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -24
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -13
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +36 -35
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +6 -6
- package/dist/astro/routes/api/mcp.mjs +167 -110
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +20 -19
- package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/replace.mjs +17 -16
- package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/upload.mjs +9 -9
- package/dist/astro/routes/api/media/_id_/usage.mjs +34 -33
- package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_.mjs +32 -31
- package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +6 -6
- package/dist/astro/routes/api/media/file/_...key_.mjs +9 -9
- package/dist/astro/routes/api/media/folders/_id_.mjs +17 -16
- package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/folders/index.mjs +17 -16
- package/dist/astro/routes/api/media/folders/index.mjs.map +1 -1
- 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 +19 -18
- package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
- package/dist/astro/routes/api/media.mjs +36 -35
- package/dist/astro/routes/api/media.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_.mjs +19 -18
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/index.mjs +19 -18
- package/dist/astro/routes/api/menus/index.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +8 -8
- package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
- package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
- package/dist/astro/routes/api/oauth/register.d.mts.map +1 -1
- package/dist/astro/routes/api/oauth/register.mjs +15 -7
- package/dist/astro/routes/api/oauth/register.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/token/refresh.mjs +8 -8
- package/dist/astro/routes/api/oauth/token/revoke.mjs +8 -8
- package/dist/astro/routes/api/oauth/token.mjs +8 -8
- package/dist/astro/routes/api/openapi.json.mjs +21 -20
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +12 -11
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/index.mjs +20 -19
- package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/summary.mjs +20 -19
- package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/_id_.mjs +20 -19
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/index.mjs +20 -19
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/index.mjs +36 -35
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +36 -35
- 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.d.mts.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +26 -6
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -1
- package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +74 -72
- 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 +74 -72
- 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 +74 -72
- package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +74 -72
- 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 +74 -72
- 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 +74 -72
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +74 -72
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +74 -72
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +74 -72
- package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +17 -16
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +74 -72
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +74 -72
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +20 -19
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +19 -18
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +20 -19
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +9 -9
- package/dist/astro/routes/api/search/suggest.mjs +19 -18
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +19 -18
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +19 -18
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
- package/dist/astro/routes/api/settings/email.mjs +6 -6
- package/dist/astro/routes/api/settings.mjs +23 -22
- package/dist/astro/routes/api/settings.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.mjs +26 -24
- package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin.mjs +19 -18
- package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-bypass.mjs +47 -46
- 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.mjs +52 -51
- 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 +8 -8
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +25 -24
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +25 -24
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -24
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +25 -24
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +24 -23
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.mjs +25 -24
- package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/bulk-tag.mjs +42 -41
- package/dist/astro/routes/api/taxonomies/bulk-tag.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +25 -24
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
- package/dist/astro/routes/api/themes/preview.mjs +6 -6
- package/dist/astro/routes/api/typegen.d.mts.map +1 -1
- package/dist/astro/routes/api/typegen.mjs +8 -39
- package/dist/astro/routes/api/typegen.mjs.map +1 -1
- package/dist/astro/routes/api/visual-editing/action-token.mjs +6 -6
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +20 -19
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs.map +1 -1
- 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 +17 -16
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +20 -19
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +20 -19
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.mjs +9 -9
- package/dist/astro/routes/api/widget-areas/index.mjs +20 -19
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
- package/dist/astro/routes/api/widget-components.mjs +5 -5
- package/dist/astro/routes/robots.txt.mjs +7 -7
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +10 -10
- package/dist/astro/routes/sitemap.xml.mjs +8 -8
- package/dist/astro/types.d.mts +23 -17
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/audit-BszbE_BP.mjs +127 -0
- package/dist/audit-BszbE_BP.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-dSvXCfzb.mjs +5172 -0
- package/dist/authoritative-records-dSvXCfzb.mjs.map +1 -0
- package/dist/authorize-soZXK7U0.mjs +49 -0
- package/dist/authorize-soZXK7U0.mjs.map +1 -0
- package/dist/backup-DQ3CABsO.mjs +246 -0
- package/dist/backup-DQ3CABsO.mjs.map +1 -0
- package/dist/block-types-DIG_KZwi.mjs +132 -0
- package/dist/block-types-DIG_KZwi.mjs.map +1 -0
- package/dist/block-values-BrTrtA-v.mjs +175 -0
- package/dist/block-values-BrTrtA-v.mjs.map +1 -0
- package/dist/byline-02tu_Uc-.mjs +909 -0
- package/dist/byline-02tu_Uc-.mjs.map +1 -0
- package/dist/byline-fields-B01Txzyx.mjs +123 -0
- package/dist/byline-fields-B01Txzyx.mjs.map +1 -0
- package/dist/byline-fields-DHJs0Mja.mjs +280 -0
- package/dist/byline-fields-DHJs0Mja.mjs.map +1 -0
- package/dist/byline-registry-dvt4N3xV.mjs +406 -0
- package/dist/byline-registry-dvt4N3xV.mjs.map +1 -0
- package/dist/bylines-COTwmMBF.mjs +150 -0
- package/dist/bylines-COTwmMBF.mjs.map +1 -0
- package/dist/bylines-D_S8UKRX.mjs +214 -0
- package/dist/bylines-D_S8UKRX.mjs.map +1 -0
- package/dist/cache-CPanL9IO.mjs +114 -0
- package/dist/cache-CPanL9IO.mjs.map +1 -0
- package/dist/canonical-CAecl1UQ.mjs +174 -0
- package/dist/canonical-CAecl1UQ.mjs.map +1 -0
- package/dist/capture-triggers-CdZfvHtF.mjs +362 -0
- package/dist/capture-triggers-CdZfvHtF.mjs.map +1 -0
- package/dist/challenge-store-CxZxPqaw.mjs +51 -0
- package/dist/challenge-store-CxZxPqaw.mjs.map +1 -0
- package/dist/checksum-DtH6m5uk.mjs +162 -0
- package/dist/checksum-DtH6m5uk.mjs.map +1 -0
- package/dist/chrome-tags-CKELm-bo.mjs +24 -0
- package/dist/chrome-tags-CKELm-bo.mjs.map +1 -0
- package/dist/chunks-DBmkKmBH.mjs +25 -0
- package/dist/chunks-DBmkKmBH.mjs.map +1 -0
- package/dist/cli/index.mjs +58 -911
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +39 -34
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +8 -3
- package/dist/client/index.mjs.map +1 -1
- package/dist/collection-deletion-JecE26cS.mjs +436 -0
- package/dist/collection-deletion-JecE26cS.mjs.map +1 -0
- package/dist/collection-deletion-processor-DgCfF3a1.mjs +217 -0
- package/dist/collection-deletion-processor-DgCfF3a1.mjs.map +1 -0
- package/dist/collection-slugs-cache-BNRAPNiu.mjs +85 -0
- package/dist/collection-slugs-cache-BNRAPNiu.mjs.map +1 -0
- package/dist/comment-Cq1UYN8_.mjs +313 -0
- package/dist/comment-Cq1UYN8_.mjs.map +1 -0
- package/dist/comment-reaction-DPeGAfjd.mjs +85 -0
- package/dist/comment-reaction-DPeGAfjd.mjs.map +1 -0
- package/dist/comments-BRtp992B.mjs +99 -0
- package/dist/comments-BRtp992B.mjs.map +1 -0
- package/dist/comments-Bi2j9IoX.mjs +195 -0
- package/dist/comments-Bi2j9IoX.mjs.map +1 -0
- package/dist/components-CQY-Sgm-.mjs +108 -0
- package/dist/components-CQY-Sgm-.mjs.map +1 -0
- package/dist/config-BnuORwSP.mjs +242 -0
- package/dist/config-BnuORwSP.mjs.map +1 -0
- package/dist/config-CDmPF4p7.d.mts +39 -0
- package/dist/config-CDmPF4p7.d.mts.map +1 -0
- package/dist/config-DHsDMpXc.d.mts +6707 -0
- package/dist/config-DHsDMpXc.d.mts.map +1 -0
- package/dist/connection-B9pIasFd.mjs +36 -0
- package/dist/connection-B9pIasFd.mjs.map +1 -0
- package/dist/content-RzEXY3QX.mjs +2020 -0
- package/dist/content-RzEXY3QX.mjs.map +1 -0
- package/dist/content-list-query-CnXfe1Nu.d.mts +26 -0
- package/dist/content-list-query-CnXfe1Nu.d.mts.map +1 -0
- package/dist/content-policy-Dm32n9C6.mjs +46 -0
- package/dist/content-policy-Dm32n9C6.mjs.map +1 -0
- package/dist/content-repair-B-k5JrVN.mjs +442 -0
- package/dist/content-repair-B-k5JrVN.mjs.map +1 -0
- package/dist/context-CtRvoSAj.mjs +2026 -0
- package/dist/context-CtRvoSAj.mjs.map +1 -0
- package/dist/credits-CAFPFhuk.mjs +110 -0
- package/dist/credits-CAFPFhuk.mjs.map +1 -0
- package/dist/cron-xe5XKqA-.mjs +306 -0
- package/dist/cron-xe5XKqA-.mjs.map +1 -0
- package/dist/dashboard-BoV4pwPP.mjs +151 -0
- package/dist/dashboard-BoV4pwPP.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-DaoYyFRS.mjs +81 -0
- package/dist/default-DaoYyFRS.mjs.map +1 -0
- package/dist/deferred-tasks-OBADxoFf.d.mts +9 -0
- package/dist/deferred-tasks-OBADxoFf.d.mts.map +1 -0
- package/dist/destination-r2zIAZ2S.mjs +18 -0
- package/dist/destination-r2zIAZ2S.mjs.map +1 -0
- package/dist/dev-typegen-8JlYYFno.mjs +29 -0
- package/dist/dev-typegen-8JlYYFno.mjs.map +1 -0
- package/dist/device-flow-CzKi6tID.mjs +521 -0
- package/dist/device-flow-CzKi6tID.mjs.map +1 -0
- package/dist/digest-DiYAoZpf.mjs +194 -0
- package/dist/digest-DiYAoZpf.mjs.map +1 -0
- package/dist/direct-executor-CsEmH_2m.mjs +104 -0
- package/dist/direct-executor-CsEmH_2m.mjs.map +1 -0
- package/dist/dist-Cfu8mMBs.mjs +810 -0
- package/dist/dist-Cfu8mMBs.mjs.map +1 -0
- package/dist/email-console-DmqVF5J_.mjs +50 -0
- package/dist/email-console-DmqVF5J_.mjs.map +1 -0
- package/dist/email-locale-B5OjmAj_.mjs +25 -0
- package/dist/email-locale-B5OjmAj_.mjs.map +1 -0
- package/dist/emdash-runtime-CMdYH2Of.mjs +4229 -0
- package/dist/emdash-runtime-CMdYH2Of.mjs.map +1 -0
- package/dist/enrich-BDdVNeDK.mjs +194 -0
- package/dist/enrich-BDdVNeDK.mjs.map +1 -0
- package/dist/entry-lock-B-1bUDxX.d.mts +4544 -0
- package/dist/entry-lock-B-1bUDxX.d.mts.map +1 -0
- package/dist/entry-lock-B5eaZEZP.mjs +163 -0
- package/dist/entry-lock-B5eaZEZP.mjs.map +1 -0
- package/dist/entry-lock-PP1JCXBB.mjs +1180 -0
- package/dist/entry-lock-PP1JCXBB.mjs.map +1 -0
- package/dist/entry-locks-DJAqVweV.mjs +167 -0
- package/dist/entry-locks-DJAqVweV.mjs.map +1 -0
- package/dist/env-types-BaTCgn-y.mjs +38 -0
- package/dist/env-types-BaTCgn-y.mjs.map +1 -0
- package/dist/error-CEdm_AWU.mjs +90 -0
- package/dist/error-CEdm_AWU.mjs.map +1 -0
- package/dist/errors-CNvATh_7.mjs +469 -0
- package/dist/errors-CNvATh_7.mjs.map +1 -0
- package/dist/errors-CjXd1LgH.mjs +120 -0
- package/dist/errors-CjXd1LgH.mjs.map +1 -0
- package/dist/escape-nJW7dR0s.mjs +9 -0
- package/dist/escape-nJW7dR0s.mjs.map +1 -0
- package/dist/fence-BrnQffdY.mjs +162 -0
- package/dist/fence-BrnQffdY.mjs.map +1 -0
- package/dist/field-defs-cache-DEkFYCDE.mjs +77 -0
- package/dist/field-defs-cache-DEkFYCDE.mjs.map +1 -0
- package/dist/field-map-Cp5hDSRU.mjs +83 -0
- package/dist/field-map-Cp5hDSRU.mjs.map +1 -0
- package/dist/focal-point-JX8kcOTQ.mjs +23 -0
- package/dist/focal-point-JX8kcOTQ.mjs.map +1 -0
- package/dist/fts-manager-DU03MxWu.mjs +443 -0
- package/dist/fts-manager-DU03MxWu.mjs.map +1 -0
- package/dist/gc-Gf9LOF42.mjs +75 -0
- package/dist/gc-Gf9LOF42.mjs.map +1 -0
- package/dist/hash-CY4QdeMJ.mjs +37 -0
- package/dist/hash-CY4QdeMJ.mjs.map +1 -0
- package/dist/hook-result-DjdVwWpw.d.mts +31 -0
- package/dist/hook-result-DjdVwWpw.d.mts.map +1 -0
- package/dist/hreflang-Bq0ahAd4.mjs +105 -0
- package/dist/hreflang-Bq0ahAd4.mjs.map +1 -0
- package/dist/hreflang-C7ETs0Tv.d.mts +50 -0
- package/dist/hreflang-C7ETs0Tv.d.mts.map +1 -0
- package/dist/http-route-dispatch-B2G7_OOm.mjs +339 -0
- package/dist/http-route-dispatch-B2G7_OOm.mjs.map +1 -0
- package/dist/identity-u3KgtUC9.mjs +35 -0
- package/dist/identity-u3KgtUC9.mjs.map +1 -0
- package/dist/import-CzP9ffo0.mjs +2020 -0
- package/dist/import-CzP9ffo0.mjs.map +1 -0
- package/dist/index-D1_ykO2u.d.mts +623 -0
- package/dist/index-D1_ykO2u.d.mts.map +1 -0
- package/dist/index.d.mts +24 -24
- package/dist/index.mjs +108 -104
- package/dist/install-finalization-TbcQozrV.mjs +58 -0
- package/dist/install-finalization-TbcQozrV.mjs.map +1 -0
- package/dist/keys-r08WvAng.mjs +61 -0
- package/dist/keys-r08WvAng.mjs.map +1 -0
- package/dist/kinds-CXY-fwQ6.mjs +974 -0
- package/dist/kinds-CXY-fwQ6.mjs.map +1 -0
- package/dist/lifecycle-CpebZNAA.mjs +25 -0
- package/dist/lifecycle-CpebZNAA.mjs.map +1 -0
- package/dist/load-dHcR5yh9.mjs +28 -0
- package/dist/load-dHcR5yh9.mjs.map +1 -0
- package/dist/loader-B_bcoE1h.mjs +1197 -0
- package/dist/loader-B_bcoE1h.mjs.map +1 -0
- package/dist/loops-Dn1i16FP.mjs +205 -0
- package/dist/loops-Dn1i16FP.mjs.map +1 -0
- package/dist/manifest-builder-D7Y8iirE.mjs +189 -0
- package/dist/manifest-builder-D7Y8iirE.mjs.map +1 -0
- package/dist/manifest-schema-gy37bD_D.mjs +496 -0
- package/dist/manifest-schema-gy37bD_D.mjs.map +1 -0
- package/dist/marketplace-tHWSsCUo.mjs +257 -0
- package/dist/marketplace-tHWSsCUo.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 +7 -7
- package/dist/media-3v7mqAVX.mjs +294 -0
- package/dist/media-3v7mqAVX.mjs.map +1 -0
- package/dist/media-CputjGE1.mjs +373 -0
- package/dist/media-CputjGE1.mjs.map +1 -0
- package/dist/media-D1z_jisb.mjs +408 -0
- package/dist/media-D1z_jisb.mjs.map +1 -0
- package/dist/media-allowlist-D5a4d-RA.mjs +44 -0
- package/dist/media-allowlist-D5a4d-RA.mjs.map +1 -0
- package/dist/media-folders-D2VdVBf6.mjs +210 -0
- package/dist/media-folders-D2VdVBf6.mjs.map +1 -0
- package/dist/media-url-DloW2xrP.mjs +43 -0
- package/dist/media-url-DloW2xrP.mjs.map +1 -0
- package/dist/media-usage-B8q0owWQ.mjs +1629 -0
- package/dist/media-usage-B8q0owWQ.mjs.map +1 -0
- package/dist/media-usage-activation-CQWOOTJi.mjs +78 -0
- package/dist/media-usage-activation-CQWOOTJi.mjs.map +1 -0
- package/dist/media-usage-work-BC0qpkMD.mjs +152 -0
- package/dist/media-usage-work-BC0qpkMD.mjs.map +1 -0
- package/dist/media-usage-work-BlMjwPg8.mjs +586 -0
- package/dist/media-usage-work-BlMjwPg8.mjs.map +1 -0
- package/dist/menus-BQKqf0Up.mjs +92 -0
- package/dist/menus-BQKqf0Up.mjs.map +1 -0
- package/dist/menus-DiuhXKWf.mjs +3646 -0
- package/dist/menus-DiuhXKWf.mjs.map +1 -0
- package/dist/menus-trvc6_fW.mjs +753 -0
- package/dist/menus-trvc6_fW.mjs.map +1 -0
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.mjs +3 -3
- package/dist/mime-IZf-LHIS.mjs +36 -0
- package/dist/mime-IZf-LHIS.mjs.map +1 -0
- package/dist/mode-nh0ppSX5.mjs +23 -0
- package/dist/mode-nh0ppSX5.mjs.map +1 -0
- package/dist/node-sqlite-compat-CDOEcc97.mjs +63 -0
- package/dist/node-sqlite-compat-CDOEcc97.mjs.map +1 -0
- package/dist/normalize-BuWa0lvd.mjs +191 -0
- package/dist/normalize-BuWa0lvd.mjs.map +1 -0
- package/dist/oauth-authorization-BcRdGojQ.mjs +274 -0
- package/dist/oauth-authorization-BcRdGojQ.mjs.map +1 -0
- package/dist/oauth-clients-C-8WDTqj.mjs +266 -0
- package/dist/oauth-clients-C-8WDTqj.mjs.map +1 -0
- package/dist/oauth-state-store-CM5ZEYQS.mjs +50 -0
- package/dist/oauth-state-store-CM5ZEYQS.mjs.map +1 -0
- package/dist/oauth-user-lookup-DrrqvTZC.mjs +26 -0
- package/dist/oauth-user-lookup-DrrqvTZC.mjs.map +1 -0
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/object-cache-Bo6DGaC9.mjs +586 -0
- package/dist/object-cache-Bo6DGaC9.mjs.map +1 -0
- package/dist/options-C2IDQnD2.d.mts +81 -0
- package/dist/options-C2IDQnD2.d.mts.map +1 -0
- package/dist/ownership-DoeAIuTg.mjs +12 -0
- package/dist/ownership-DoeAIuTg.mjs.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.mjs +6 -6
- package/dist/parse-D5Sw9wAI.d.mts +172 -0
- package/dist/parse-D5Sw9wAI.d.mts.map +1 -0
- package/dist/parse-Gt2l4Sld.mjs +81 -0
- package/dist/parse-Gt2l4Sld.mjs.map +1 -0
- package/dist/passkey-config-CkQsrcU-.mjs +46 -0
- package/dist/passkey-config-CkQsrcU-.mjs.map +1 -0
- package/dist/paths-DiENGBx5.mjs +77 -0
- package/dist/paths-DiENGBx5.mjs.map +1 -0
- package/dist/patterns-DyZJ67I7.mjs +140 -0
- package/dist/patterns-DyZJ67I7.mjs.map +1 -0
- package/dist/placeholder-Cq5wLDCX.d.mts +306 -0
- package/dist/placeholder-Cq5wLDCX.d.mts.map +1 -0
- package/dist/plan-BxCS1tl5.mjs +135 -0
- package/dist/plan-BxCS1tl5.mjs.map +1 -0
- package/dist/plugin-test-runtime.d.mts +14 -14
- package/dist/plugin-test-runtime.mjs +115 -111
- package/dist/plugin-types.d.mts +5 -3
- package/dist/plugin-types.d.mts.map +1 -1
- package/dist/plugin-types.mjs.map +1 -1
- package/dist/plugin-utils.d.mts +12 -12
- package/dist/plugins/adapt-sandbox-entry.d.mts +12 -12
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.mjs +48 -10
- package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
- package/dist/plugins/host.d.mts +6 -6
- package/dist/plugins/host.mjs +49 -44
- package/dist/plugins-BpLkXA1S.mjs +277 -0
- package/dist/plugins-BpLkXA1S.mjs.map +1 -0
- package/dist/policy-C1qpNxrr.mjs +45 -0
- package/dist/policy-C1qpNxrr.mjs.map +1 -0
- package/dist/portable-text-BnRuiR1-.mjs +307 -0
- package/dist/portable-text-BnRuiR1-.mjs.map +1 -0
- package/dist/preview-DU5rwz_m.mjs +107 -0
- package/dist/preview-DU5rwz_m.mjs.map +1 -0
- package/dist/protocol-B9GEhEyi.d.mts +61 -0
- package/dist/protocol-B9GEhEyi.d.mts.map +1 -0
- package/dist/public-submission-yZaTTfsC.mjs +250 -0
- package/dist/public-submission-yZaTTfsC.mjs.map +1 -0
- package/dist/public-url-B5a0QAh6.mjs +101 -0
- package/dist/public-url-B5a0QAh6.mjs.map +1 -0
- package/dist/query-6e2CQxUv.mjs +1161 -0
- package/dist/query-6e2CQxUv.mjs.map +1 -0
- package/dist/query-DC3bv__4.mjs +41 -0
- package/dist/query-DC3bv__4.mjs.map +1 -0
- package/dist/rate-limit-BXx3Ecp9.mjs +120 -0
- package/dist/rate-limit-BXx3Ecp9.mjs.map +1 -0
- package/dist/receipt-q1VK9jhj.mjs +43 -0
- package/dist/receipt-q1VK9jhj.mjs.map +1 -0
- package/dist/redirect-BvFKh8Sz.mjs +416 -0
- package/dist/redirect-BvFKh8Sz.mjs.map +1 -0
- package/dist/redirect-D1AmADlk.mjs +19 -0
- package/dist/redirect-D1AmADlk.mjs.map +1 -0
- package/dist/redirects-CWQMKYOS.mjs +446 -0
- package/dist/redirects-CWQMKYOS.mjs.map +1 -0
- package/dist/redirects-D4EWeXAo.mjs +148 -0
- package/dist/redirects-D4EWeXAo.mjs.map +1 -0
- package/dist/registry/testing.d.mts +16 -4
- package/dist/registry/testing.d.mts.map +1 -1
- package/dist/registry/testing.mjs +20 -10
- package/dist/registry/testing.mjs.map +1 -1
- package/dist/registry-CtHRqVe-.mjs +6771 -0
- package/dist/registry-CtHRqVe-.mjs.map +1 -0
- package/dist/relations-CVI2nbrn.mjs +776 -0
- package/dist/relations-CVI2nbrn.mjs.map +1 -0
- package/dist/request-cache-C4CIo5ad.mjs +104 -0
- package/dist/request-cache-C4CIo5ad.mjs.map +1 -0
- package/dist/request-context.d.mts +9 -1
- package/dist/request-context.d.mts.map +1 -1
- package/dist/request-context.mjs.map +1 -1
- package/dist/request-meta-B6blULFY.mjs +141 -0
- package/dist/request-meta-B6blULFY.mjs.map +1 -0
- package/dist/resolve-Cx0Pwz0-.mjs +100 -0
- package/dist/resolve-Cx0Pwz0-.mjs.map +1 -0
- package/dist/resolve-D-kqyKns.mjs +199 -0
- package/dist/resolve-D-kqyKns.mjs.map +1 -0
- package/dist/revision-CGkQA0e5.mjs +366 -0
- package/dist/revision-CGkQA0e5.mjs.map +1 -0
- package/dist/route-wire-DK600v4u.mjs +197 -0
- package/dist/route-wire-DK600v4u.mjs.map +1 -0
- package/dist/routes-DTduBPzX.mjs +272 -0
- package/dist/routes-DTduBPzX.mjs.map +1 -0
- package/dist/runner-CLpxmhl8.mjs +6197 -0
- package/dist/runner-CLpxmhl8.mjs.map +1 -0
- package/dist/runner-Ji7qyH2A.d.mts +68 -0
- package/dist/runner-Ji7qyH2A.d.mts.map +1 -0
- package/dist/runtime.d.mts +13 -13
- package/dist/runtime.mjs +3 -3
- package/dist/schema/project-env-types.d.mts +12 -0
- package/dist/schema/project-env-types.d.mts.map +1 -0
- package/dist/schema/project-env-types.mjs +86 -0
- package/dist/schema/project-env-types.mjs.map +1 -0
- package/dist/schema-BZPj3kwZ.mjs +13 -0
- package/dist/schema-BZPj3kwZ.mjs.map +1 -0
- package/dist/schema-Berj5VQx.mjs +815 -0
- package/dist/schema-Berj5VQx.mjs.map +1 -0
- package/dist/scopes-C1HJaIyf.mjs +34 -0
- package/dist/scopes-C1HJaIyf.mjs.map +1 -0
- package/dist/search-thYf8j9F.mjs +448 -0
- package/dist/search-thYf8j9F.mjs.map +1 -0
- package/dist/sections-2k1uIgJ0.mjs +346 -0
- package/dist/sections-2k1uIgJ0.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +39 -38
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +24 -23
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo-C61bnPuV.mjs +114 -0
- package/dist/seo-C61bnPuV.mjs.map +1 -0
- package/dist/seo-DpYxmGaL.mjs +133 -0
- package/dist/seo-DpYxmGaL.mjs.map +1 -0
- package/dist/service-BFUImckH.mjs +150 -0
- package/dist/service-BFUImckH.mjs.map +1 -0
- package/dist/session-user-DVcHsFD5.mjs +61 -0
- package/dist/session-user-DVcHsFD5.mjs.map +1 -0
- package/dist/settings-B0zQj_Tj.mjs +61 -0
- package/dist/settings-B0zQj_Tj.mjs.map +1 -0
- package/dist/settings-BJjK_X7x.mjs +51 -0
- package/dist/settings-BJjK_X7x.mjs.map +1 -0
- package/dist/settings-BbVRRGDp.mjs +439 -0
- package/dist/settings-BbVRRGDp.mjs.map +1 -0
- package/dist/setup-complete-CuLcTDTU.mjs +65 -0
- package/dist/setup-complete-CuLcTDTU.mjs.map +1 -0
- package/dist/setup-nonce-CAQoY5PC.mjs +25 -0
- package/dist/setup-nonce-CAQoY5PC.mjs.map +1 -0
- package/dist/site-settings-AYFvhwQn.mjs +50 -0
- package/dist/site-settings-AYFvhwQn.mjs.map +1 -0
- package/dist/site-url-Ceq_AUK0.mjs +16 -0
- package/dist/site-url-Ceq_AUK0.mjs.map +1 -0
- package/dist/snapshot-Dzsn3NZa.mjs +414 -0
- package/dist/snapshot-Dzsn3NZa.mjs.map +1 -0
- package/dist/ssrf-DsmvZB80.mjs +406 -0
- package/dist/ssrf-DsmvZB80.mjs.map +1 -0
- package/dist/stage-Cf9PqdUB.mjs +662 -0
- package/dist/stage-Cf9PqdUB.mjs.map +1 -0
- package/dist/staged-Bw5eHbKS.mjs +686 -0
- package/dist/staged-Bw5eHbKS.mjs.map +1 -0
- package/dist/state-kGdOMQRY.mjs +153 -0
- package/dist/state-kGdOMQRY.mjs.map +1 -0
- package/dist/status-D39Fpy8R.mjs +30 -0
- package/dist/status-D39Fpy8R.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-C9bK0Dg6.d.mts +1614 -0
- package/dist/storage-query-C9bK0Dg6.d.mts.map +1 -0
- package/dist/tar-lDI_fzLD.mjs +449 -0
- package/dist/tar-lDI_fzLD.mjs.map +1 -0
- package/dist/target-DOFs5oUC.mjs +27 -0
- package/dist/target-DOFs5oUC.mjs.map +1 -0
- package/dist/taxonomies-DQGomz9p.mjs +939 -0
- package/dist/taxonomies-DQGomz9p.mjs.map +1 -0
- package/dist/taxonomies-DWv-OYT0.mjs +697 -0
- package/dist/taxonomies-DWv-OYT0.mjs.map +1 -0
- package/dist/taxonomy-BesdHIwi.mjs +525 -0
- package/dist/taxonomy-BesdHIwi.mjs.map +1 -0
- package/dist/tokens-BIGxi8sP.mjs +171 -0
- package/dist/tokens-BIGxi8sP.mjs.map +1 -0
- package/dist/transaction-BVYIo_yu.mjs +29 -0
- package/dist/transaction-BVYIo_yu.mjs.map +1 -0
- package/dist/transfer-BtzoaXLk.mjs +166 -0
- package/dist/transfer-BtzoaXLk.mjs.map +1 -0
- package/dist/transfer-DLu_6AXL.mjs +8856 -0
- package/dist/transfer-DLu_6AXL.mjs.map +1 -0
- package/dist/transfer-download-b_PCrqJJ.mjs +33 -0
- package/dist/transfer-download-b_PCrqJJ.mjs.map +1 -0
- package/dist/transformations-DdnpSdeC.mjs +196 -0
- package/dist/transformations-DdnpSdeC.mjs.map +1 -0
- package/dist/transport-flR-Zmds.d.mts +42 -0
- package/dist/transport-flR-Zmds.d.mts.map +1 -0
- package/dist/transport-umzEbgYO.mjs +136 -0
- package/dist/transport-umzEbgYO.mjs.map +1 -0
- package/dist/trusted-proxy-BqfQFs6a.mjs +51 -0
- package/dist/trusted-proxy-BqfQFs6a.mjs.map +1 -0
- package/dist/turnstile-IvQp2uyD.mjs +53 -0
- package/dist/turnstile-IvQp2uyD.mjs.map +1 -0
- package/dist/types-2V_MVPYy.d.mts +125 -0
- package/dist/types-2V_MVPYy.d.mts.map +1 -0
- package/dist/types-B-WCvzdi.d.mts +198 -0
- package/dist/types-B-WCvzdi.d.mts.map +1 -0
- package/dist/types-BGmQ0uXs.mjs +201 -0
- package/dist/types-BGmQ0uXs.mjs.map +1 -0
- package/dist/types-CVsmpTcU.mjs +18 -0
- package/dist/types-CVsmpTcU.mjs.map +1 -0
- package/dist/types-C_V-_vMS.d.mts +198 -0
- package/dist/types-C_V-_vMS.d.mts.map +1 -0
- package/dist/types-CdEMurNh.mjs +77 -0
- package/dist/types-CdEMurNh.mjs.map +1 -0
- package/dist/types-CsmwbOwa.mjs +22 -0
- package/dist/types-CsmwbOwa.mjs.map +1 -0
- package/dist/types-Cw-1it3n.d.mts +287 -0
- package/dist/types-Cw-1it3n.d.mts.map +1 -0
- package/dist/types-D7B20WFC.d.mts +374 -0
- package/dist/types-D7B20WFC.d.mts.map +1 -0
- package/dist/types-DGw8KMX_.mjs +16 -0
- package/dist/types-DGw8KMX_.mjs.map +1 -0
- package/dist/types-DZeDpzMc.d.mts +896 -0
- package/dist/types-DZeDpzMc.d.mts.map +1 -0
- package/dist/types-DuQAIPA-.d.mts +363 -0
- package/dist/types-DuQAIPA-.d.mts.map +1 -0
- package/dist/types-edRPQchz.d.mts +85 -0
- package/dist/types-edRPQchz.d.mts.map +1 -0
- package/dist/types-j6MBDjlZ.mjs +103 -0
- package/dist/types-j6MBDjlZ.mjs.map +1 -0
- package/dist/types-pOLeFKGq.d.mts +1720 -0
- package/dist/types-pOLeFKGq.d.mts.map +1 -0
- package/dist/update-check-CaZyFHZC.mjs +161 -0
- package/dist/update-check-CaZyFHZC.mjs.map +1 -0
- package/dist/upload-attempts-BodUoFBu.mjs +32 -0
- package/dist/upload-attempts-BodUoFBu.mjs.map +1 -0
- package/dist/url-Dn3IStq8.mjs +104 -0
- package/dist/url-Dn3IStq8.mjs.map +1 -0
- package/dist/url-pattern-DGAG6ZP2.mjs +41 -0
- package/dist/url-pattern-DGAG6ZP2.mjs.map +1 -0
- package/dist/user-BOvuF1sQ.mjs +171 -0
- package/dist/user-BOvuF1sQ.mjs.map +1 -0
- package/dist/utils-CoV-PYhg.mjs +439 -0
- package/dist/utils-CoV-PYhg.mjs.map +1 -0
- package/dist/validate-WkjGwBSO.mjs +516 -0
- package/dist/validate-WkjGwBSO.mjs.map +1 -0
- package/dist/validate-dK97qe7F.d.mts +468 -0
- package/dist/validate-dK97qe7F.d.mts.map +1 -0
- package/dist/validation-D-ICq_tY.mjs +219 -0
- package/dist/validation-D-ICq_tY.mjs.map +1 -0
- package/dist/version-DbT04wbH.mjs +9 -0
- package/dist/version-DbT04wbH.mjs.map +1 -0
- package/dist/version-IneBU54o.mjs +7 -0
- package/dist/version-IneBU54o.mjs.map +1 -0
- package/dist/virtual-modules-Brh6mRVe.mjs +516 -0
- package/dist/virtual-modules-Brh6mRVe.mjs.map +1 -0
- package/dist/widgets-D8T0xBYs.mjs +126 -0
- package/dist/widgets-D8T0xBYs.mjs.map +1 -0
- package/dist/wxr-taxonomies-B6iE8m9I.d.mts +34 -0
- package/dist/wxr-taxonomies-B6iE8m9I.d.mts.map +1 -0
- package/dist/wxr-taxonomies-DEzR9N7e.mjs +453 -0
- package/dist/wxr-taxonomies-DEzR9N7e.mjs.map +1 -0
- package/dist/zod-generator-DnfG5sGQ.mjs +424 -0
- package/dist/zod-generator-DnfG5sGQ.mjs.map +1 -0
- package/package.json +13 -14
- package/src/api/errors.ts +11 -0
- package/src/api/handlers/bulk-tag.ts +4 -4
- package/src/api/handlers/content.ts +39 -17
- package/src/api/handlers/index.ts +3 -0
- package/src/api/handlers/manifest.ts +2 -0
- package/src/api/handlers/media-upload.ts +3 -0
- package/src/api/handlers/media.ts +2 -2
- package/src/api/handlers/registry.ts +123 -70
- package/src/api/handlers/revision.ts +10 -2
- package/src/api/handlers/staged-references.ts +72 -6
- package/src/api/handlers/update-check.ts +236 -0
- package/src/api/redirect.ts +9 -1
- package/src/api/schemas/content.ts +4 -0
- package/src/api/schemas/import.ts +50 -14
- package/src/api/schemas/schema.ts +12 -6
- package/src/api/setup-complete.ts +49 -1
- package/src/api/types.ts +4 -0
- package/src/astro/dev-typegen.ts +15 -22
- package/src/astro/integration/dev-typegen.ts +32 -3
- package/src/astro/integration/index.ts +88 -22
- package/src/astro/integration/routes.ts +6 -0
- package/src/astro/integration/runtime.ts +33 -7
- package/src/astro/integration/virtual-modules.ts +1 -0
- package/src/astro/integration/vite-config.ts +16 -8
- package/src/astro/middleware/redirect.ts +15 -2
- package/src/astro/middleware/request-context.ts +13 -6
- package/src/astro/routes/api/admin/bylines/[id]/index.ts +11 -1
- package/src/astro/routes/api/admin/bylines/[id]/translations.ts +7 -1
- package/src/astro/routes/api/admin/bylines/index.ts +6 -1
- package/src/astro/routes/api/admin/core-update.ts +34 -0
- package/src/astro/routes/api/admin/plugins/marketplace/[id]/icon.ts +6 -2
- package/src/astro/routes/api/admin/themes/marketplace/[id]/thumbnail.ts +6 -2
- package/src/astro/routes/api/auth/invite/complete.ts +4 -4
- package/src/astro/routes/api/auth/magic-link/verify.ts +4 -1
- package/src/astro/routes/api/auth/oauth/[provider]/callback.ts +9 -4
- package/src/astro/routes/api/auth/passkey/verify.ts +4 -4
- package/src/astro/routes/api/auth/signup/complete.ts +4 -4
- package/src/astro/routes/api/import/wordpress/execute.ts +252 -6
- package/src/astro/routes/api/import/wordpress/prepare.ts +1 -2
- package/src/astro/routes/api/oauth/register.ts +22 -2
- package/src/astro/routes/api/revisions/[revisionId]/restore.ts +17 -1
- package/src/astro/routes/api/setup/admin-verify.ts +6 -5
- package/src/astro/routes/api/typegen.ts +4 -46
- package/src/astro/session-user.ts +14 -0
- package/src/astro/types.ts +6 -0
- package/src/bylines/credits.ts +149 -0
- package/src/bylines/index.ts +4 -142
- package/src/cli/commands/seed.ts +2 -0
- package/src/cli/credentials.ts +1 -60
- package/src/cli/index.ts +0 -2
- package/src/client/index.ts +8 -2
- package/src/components/Image.astro +24 -13
- package/src/components/InlinePortableTextEditor.tsx +25 -8
- package/src/content/converters/portable-text-to-prosemirror.ts +23 -17
- package/src/content/converters/prosemirror-to-portable-text.ts +16 -5
- package/src/content/converters/types.ts +1 -0
- package/src/database/content-datetime.ts +111 -23
- package/src/database/migrations/036_i18n_menus_and_taxonomies.ts +132 -92
- package/src/database/migrations/088_cron_oneshot_utc.ts +39 -0
- package/src/database/migrations/089_auto_seed_completion.ts +13 -0
- package/src/database/migrations/runner.ts +4 -0
- package/src/database/repositories/comment.ts +2 -2
- package/src/database/repositories/content.ts +15 -8
- package/src/database/repositories/plugin-storage.ts +1 -1
- package/src/database/repositories/redirect.ts +7 -2
- package/src/database/repositories/relation.ts +2 -2
- package/src/database/types.ts +1 -1
- package/src/db/node-sqlite-compat.ts +63 -37
- package/src/emdash-runtime.ts +63 -35
- package/src/import/wxr-taxonomies.ts +163 -88
- package/src/index.ts +10 -0
- package/src/loader.ts +8 -1
- package/src/mcp/server.ts +90 -8
- package/src/media/usage/activation.ts +18 -9
- package/src/migrations/config-loader.ts +5 -0
- package/src/object-cache/index.ts +19 -7
- package/src/object-cache/types.ts +3 -2
- package/src/plugin-types.ts +7 -0
- package/src/plugins/adapt-sandbox-entry.ts +47 -12
- package/src/plugins/byline-access.ts +158 -0
- package/src/plugins/context.ts +7 -1
- package/src/plugins/cron.ts +27 -4
- package/src/plugins/hooks.ts +47 -0
- package/src/plugins/host.ts +1 -0
- package/src/plugins/index.ts +10 -1
- package/src/plugins/manifest-schema.ts +5 -1
- package/src/plugins/marketplace.ts +48 -36
- package/src/plugins/sandbox/proxy.ts +1 -0
- package/src/plugins/types.ts +95 -0
- package/src/query.ts +9 -2
- package/src/redirects/cache.ts +11 -1
- package/src/redirects/destination.ts +20 -0
- package/src/redirects/loops.ts +10 -6
- package/src/redirects/patterns.ts +12 -30
- package/src/references/staged.ts +40 -0
- package/src/registry/testing.ts +59 -14
- package/src/request-context.ts +8 -0
- package/src/schema/block-type-registry.ts +1 -1
- package/src/schema/env-types.ts +37 -0
- package/src/schema/project-env-types.ts +41 -0
- package/src/schema/registry.ts +33 -2
- package/src/schema/types.ts +5 -0
- package/src/schema/url-pattern.ts +10 -0
- package/src/schema/zod-generator.ts +11 -1
- package/src/seed/apply.ts +34 -1
- package/src/seed/ownership.ts +15 -0
- package/src/seed/validate.ts +45 -2
- package/src/transfer/analyze/validate.ts +113 -1
- package/src/transfer/analyze/values.ts +104 -1
- package/src/transfer/analyze/write-rules.ts +8 -0
- package/src/utils/url.ts +58 -3
- package/src/virtual-modules.d.ts +3 -0
- package/dist/action-token-CbKDcPJi.mjs +0 -26
- package/dist/action-token-CbKDcPJi.mjs.map +0 -1
- package/dist/activation-PtniBLt9.mjs +0 -382
- package/dist/activation-PtniBLt9.mjs.map +0 -1
- package/dist/adapters-C_Tf5x90.d.mts +0 -171
- package/dist/adapters-C_Tf5x90.d.mts.map +0 -1
- package/dist/allowed-origins-U1z4TdEZ.mjs +0 -116
- package/dist/allowed-origins-U1z4TdEZ.mjs.map +0 -1
- package/dist/api-CXwQkV_m.mjs +0 -5122
- package/dist/api-CXwQkV_m.mjs.map +0 -1
- package/dist/api-tokens-89WlohEN.mjs +0 -166
- package/dist/api-tokens-89WlohEN.mjs.map +0 -1
- package/dist/apply-Do3KNnUk.mjs +0 -1659
- package/dist/apply-Do3KNnUk.mjs.map +0 -1
- package/dist/approvals-CAX9Yw33.mjs +0 -460
- package/dist/approvals-CAX9Yw33.mjs.map +0 -1
- package/dist/artifact-fetch-B9W4CEST.mjs +0 -659
- package/dist/artifact-fetch-B9W4CEST.mjs.map +0 -1
- package/dist/audit-CrgmE9LE.mjs +0 -127
- package/dist/audit-CrgmE9LE.mjs.map +0 -1
- package/dist/authoritative-records-C2YzIdbu.mjs +0 -5172
- package/dist/authoritative-records-C2YzIdbu.mjs.map +0 -1
- package/dist/authorize-WgdKF8QY.mjs +0 -49
- package/dist/authorize-WgdKF8QY.mjs.map +0 -1
- package/dist/backup-Ck8_lMO3.mjs +0 -246
- package/dist/backup-Ck8_lMO3.mjs.map +0 -1
- package/dist/block-types-BQ90asVI.mjs +0 -132
- package/dist/block-types-BQ90asVI.mjs.map +0 -1
- package/dist/block-values-ACFqgB1D.mjs +0 -175
- package/dist/block-values-ACFqgB1D.mjs.map +0 -1
- package/dist/bundle-Db1iNMv_.mjs +0 -667
- package/dist/bundle-Db1iNMv_.mjs.map +0 -1
- package/dist/byline-BayaYGoj.mjs +0 -909
- package/dist/byline-BayaYGoj.mjs.map +0 -1
- package/dist/byline-fields-B8HH-35f.mjs +0 -254
- package/dist/byline-fields-B8HH-35f.mjs.map +0 -1
- package/dist/byline-fields-hMPjf6Eu.mjs +0 -123
- package/dist/byline-fields-hMPjf6Eu.mjs.map +0 -1
- package/dist/byline-registry-B_EK_TQf.mjs +0 -406
- package/dist/byline-registry-B_EK_TQf.mjs.map +0 -1
- package/dist/bylines-DFAaFXWi.mjs +0 -214
- package/dist/bylines-DFAaFXWi.mjs.map +0 -1
- package/dist/bylines-DkIxUxmr.mjs +0 -232
- package/dist/bylines-DkIxUxmr.mjs.map +0 -1
- package/dist/cache-DkvhQ8XE.mjs +0 -108
- package/dist/cache-DkvhQ8XE.mjs.map +0 -1
- package/dist/canonical-CcSuuTlH.mjs +0 -174
- package/dist/canonical-CcSuuTlH.mjs.map +0 -1
- package/dist/capture-triggers-DJEoOTOq.mjs +0 -362
- package/dist/capture-triggers-DJEoOTOq.mjs.map +0 -1
- package/dist/challenge-store-CvBl81AQ.mjs +0 -51
- package/dist/challenge-store-CvBl81AQ.mjs.map +0 -1
- package/dist/checksum-CClweQzI.mjs +0 -162
- package/dist/checksum-CClweQzI.mjs.map +0 -1
- package/dist/chrome-tags-D5caJwwp.mjs +0 -24
- package/dist/chrome-tags-D5caJwwp.mjs.map +0 -1
- package/dist/chunks-DwBaj8aT.mjs +0 -25
- package/dist/chunks-DwBaj8aT.mjs.map +0 -1
- package/dist/collection-deletion-CLCdXsnV.mjs +0 -436
- package/dist/collection-deletion-CLCdXsnV.mjs.map +0 -1
- package/dist/collection-deletion-processor-hNw8x01F.mjs +0 -217
- package/dist/collection-deletion-processor-hNw8x01F.mjs.map +0 -1
- package/dist/collection-slugs-cache-CUuiduLq.mjs +0 -85
- package/dist/collection-slugs-cache-CUuiduLq.mjs.map +0 -1
- package/dist/comment-D2uvL63j.mjs +0 -313
- package/dist/comment-D2uvL63j.mjs.map +0 -1
- package/dist/comment-reaction-DevUuzg4.mjs +0 -85
- package/dist/comment-reaction-DevUuzg4.mjs.map +0 -1
- package/dist/comments-Cq0s7_hO.mjs +0 -195
- package/dist/comments-Cq0s7_hO.mjs.map +0 -1
- package/dist/comments-M4EDYAHw.mjs +0 -99
- package/dist/comments-M4EDYAHw.mjs.map +0 -1
- package/dist/components-CuIGwXMs.mjs +0 -108
- package/dist/components-CuIGwXMs.mjs.map +0 -1
- package/dist/config-52Ea5IWt.d.mts +0 -39
- package/dist/config-52Ea5IWt.d.mts.map +0 -1
- package/dist/config-CCz3xOLc.mjs +0 -242
- package/dist/config-CCz3xOLc.mjs.map +0 -1
- package/dist/config-D3d5Qudq.d.mts +0 -6669
- package/dist/config-D3d5Qudq.d.mts.map +0 -1
- package/dist/content-CbnufDsM.mjs +0 -2018
- package/dist/content-CbnufDsM.mjs.map +0 -1
- package/dist/content-list-query-D_7B1FE5.d.mts +0 -26
- package/dist/content-list-query-D_7B1FE5.d.mts.map +0 -1
- package/dist/content-policy-CYu6K1KB.mjs +0 -46
- package/dist/content-policy-CYu6K1KB.mjs.map +0 -1
- package/dist/content-repair-DlDUgFGp.mjs +0 -442
- package/dist/content-repair-DlDUgFGp.mjs.map +0 -1
- package/dist/context-CGQLA1-a.mjs +0 -1922
- package/dist/context-CGQLA1-a.mjs.map +0 -1
- package/dist/cron-c4D5C5Fx.mjs +0 -284
- package/dist/cron-c4D5C5Fx.mjs.map +0 -1
- package/dist/dashboard-CBq9kmOn.mjs +0 -151
- package/dist/dashboard-CBq9kmOn.mjs.map +0 -1
- package/dist/default-DPsys51U.mjs +0 -81
- package/dist/default-DPsys51U.mjs.map +0 -1
- package/dist/deferred-tasks-CZ7rzBdo.d.mts +0 -9
- package/dist/deferred-tasks-CZ7rzBdo.d.mts.map +0 -1
- package/dist/dev-typegen-HRxwLRcT.mjs +0 -29
- package/dist/dev-typegen-HRxwLRcT.mjs.map +0 -1
- package/dist/device-flow-OcSqE9uY.mjs +0 -521
- package/dist/device-flow-OcSqE9uY.mjs.map +0 -1
- package/dist/digest-DVZ--cE9.mjs +0 -194
- package/dist/digest-DVZ--cE9.mjs.map +0 -1
- package/dist/direct-executor-DyjAqkpT.mjs +0 -104
- package/dist/direct-executor-DyjAqkpT.mjs.map +0 -1
- package/dist/dist-FPR93_xf.mjs +0 -810
- package/dist/dist-FPR93_xf.mjs.map +0 -1
- package/dist/email-console-DyQIgEnz.mjs +0 -50
- package/dist/email-console-DyQIgEnz.mjs.map +0 -1
- package/dist/email-locale-BYb16rVd.mjs +0 -25
- package/dist/email-locale-BYb16rVd.mjs.map +0 -1
- package/dist/emdash-runtime-CrzxJFmF.mjs +0 -4214
- package/dist/emdash-runtime-CrzxJFmF.mjs.map +0 -1
- package/dist/enrich-DBtCncE2.mjs +0 -194
- package/dist/enrich-DBtCncE2.mjs.map +0 -1
- package/dist/entry-lock-BN5y4YbO.d.mts +0 -4481
- package/dist/entry-lock-BN5y4YbO.d.mts.map +0 -1
- package/dist/entry-lock-BaRBHCsH.mjs +0 -1173
- package/dist/entry-lock-BaRBHCsH.mjs.map +0 -1
- package/dist/entry-lock-C6NcnZPV.mjs +0 -163
- package/dist/entry-lock-C6NcnZPV.mjs.map +0 -1
- package/dist/entry-locks-BTyQLdbC.mjs +0 -167
- package/dist/entry-locks-BTyQLdbC.mjs.map +0 -1
- package/dist/error-BfsNNrIE.mjs +0 -90
- package/dist/error-BfsNNrIE.mjs.map +0 -1
- package/dist/errors-BN1QAnEY.mjs +0 -460
- package/dist/errors-BN1QAnEY.mjs.map +0 -1
- package/dist/errors-Bt3goF8I.mjs +0 -120
- package/dist/errors-Bt3goF8I.mjs.map +0 -1
- package/dist/escape-BveidMa2.mjs +0 -9
- package/dist/escape-BveidMa2.mjs.map +0 -1
- package/dist/fence-Bb_IbCxI.mjs +0 -162
- package/dist/fence-Bb_IbCxI.mjs.map +0 -1
- package/dist/field-defs-cache-CsZctvbu.mjs +0 -77
- package/dist/field-defs-cache-CsZctvbu.mjs.map +0 -1
- package/dist/field-map-6m9rF49t.mjs +0 -83
- package/dist/field-map-6m9rF49t.mjs.map +0 -1
- package/dist/focal-point-CZ3d1wK5.mjs +0 -23
- package/dist/focal-point-CZ3d1wK5.mjs.map +0 -1
- package/dist/fts-manager-CCaZTp8y.mjs +0 -443
- package/dist/fts-manager-CCaZTp8y.mjs.map +0 -1
- package/dist/gc-xowRjczI.mjs +0 -75
- package/dist/gc-xowRjczI.mjs.map +0 -1
- package/dist/hash-COVK27Pc.mjs +0 -37
- package/dist/hash-COVK27Pc.mjs.map +0 -1
- package/dist/hook-result-CYSk0XFe.d.mts +0 -31
- package/dist/hook-result-CYSk0XFe.d.mts.map +0 -1
- package/dist/hreflang-CChPV7jx.mjs +0 -105
- package/dist/hreflang-CChPV7jx.mjs.map +0 -1
- package/dist/hreflang-DRslq3QI.d.mts +0 -50
- package/dist/hreflang-DRslq3QI.d.mts.map +0 -1
- package/dist/http-route-dispatch-CAdp2onn.mjs +0 -339
- package/dist/http-route-dispatch-CAdp2onn.mjs.map +0 -1
- package/dist/identity-NVTOOQyq.mjs +0 -35
- package/dist/identity-NVTOOQyq.mjs.map +0 -1
- package/dist/import-wpSO2N0x.mjs +0 -2020
- package/dist/import-wpSO2N0x.mjs.map +0 -1
- package/dist/index-CDs2wq4X.d.mts +0 -623
- package/dist/index-CDs2wq4X.d.mts.map +0 -1
- package/dist/install-finalization-D9R9R-W8.mjs +0 -58
- package/dist/install-finalization-D9R9R-W8.mjs.map +0 -1
- package/dist/keys-Bck6LBfF.mjs +0 -61
- package/dist/keys-Bck6LBfF.mjs.map +0 -1
- package/dist/kinds-CYmRESWj.mjs +0 -974
- package/dist/kinds-CYmRESWj.mjs.map +0 -1
- package/dist/lifecycle-C815ZQfV.mjs +0 -25
- package/dist/lifecycle-C815ZQfV.mjs.map +0 -1
- package/dist/load-D99axixL.mjs +0 -28
- package/dist/load-D99axixL.mjs.map +0 -1
- package/dist/loader-CrRPfkHS.mjs +0 -1197
- package/dist/loader-CrRPfkHS.mjs.map +0 -1
- package/dist/loops-DMKlygqX.mjs +0 -203
- package/dist/loops-DMKlygqX.mjs.map +0 -1
- package/dist/manifest-builder-BQzCHNgB.mjs +0 -189
- package/dist/manifest-builder-BQzCHNgB.mjs.map +0 -1
- package/dist/manifest-schema-Ci2gmd0u.mjs +0 -492
- package/dist/manifest-schema-Ci2gmd0u.mjs.map +0 -1
- package/dist/media-BUQePMxP.mjs +0 -373
- package/dist/media-BUQePMxP.mjs.map +0 -1
- package/dist/media-DH8ibNlY.mjs +0 -294
- package/dist/media-DH8ibNlY.mjs.map +0 -1
- package/dist/media-OEIQ3bVc.mjs +0 -408
- package/dist/media-OEIQ3bVc.mjs.map +0 -1
- package/dist/media-allowlist-pYtaBA95.mjs +0 -44
- package/dist/media-allowlist-pYtaBA95.mjs.map +0 -1
- package/dist/media-folders-Bf8_s4de.mjs +0 -210
- package/dist/media-folders-Bf8_s4de.mjs.map +0 -1
- package/dist/media-url-C6klEuNd.mjs +0 -43
- package/dist/media-url-C6klEuNd.mjs.map +0 -1
- package/dist/media-usage-D7Y64m6v.mjs +0 -1629
- package/dist/media-usage-D7Y64m6v.mjs.map +0 -1
- package/dist/media-usage-activation-DrqbmgLA.mjs +0 -78
- package/dist/media-usage-activation-DrqbmgLA.mjs.map +0 -1
- package/dist/media-usage-work-DommYhYA.mjs +0 -152
- package/dist/media-usage-work-DommYhYA.mjs.map +0 -1
- package/dist/media-usage-work-HU63hNDu.mjs +0 -586
- package/dist/media-usage-work-HU63hNDu.mjs.map +0 -1
- package/dist/menus-BQfusWEC.mjs +0 -3608
- package/dist/menus-BQfusWEC.mjs.map +0 -1
- package/dist/menus-BtwjQt5s.mjs +0 -753
- package/dist/menus-BtwjQt5s.mjs.map +0 -1
- package/dist/menus-p_M1V7J_.mjs +0 -139
- package/dist/menus-p_M1V7J_.mjs.map +0 -1
- package/dist/mime-C94qBG-P.mjs +0 -36
- package/dist/mime-C94qBG-P.mjs.map +0 -1
- package/dist/mode-DpYW3w6U.mjs +0 -23
- package/dist/mode-DpYW3w6U.mjs.map +0 -1
- package/dist/node-sqlite-compat-pWFw0lcc.mjs +0 -46
- package/dist/node-sqlite-compat-pWFw0lcc.mjs.map +0 -1
- package/dist/normalize-DduyxBjf.mjs +0 -191
- package/dist/normalize-DduyxBjf.mjs.map +0 -1
- package/dist/oauth-authorization-DAXsH1H9.mjs +0 -274
- package/dist/oauth-authorization-DAXsH1H9.mjs.map +0 -1
- package/dist/oauth-clients-DENiDQri.mjs +0 -266
- package/dist/oauth-clients-DENiDQri.mjs.map +0 -1
- package/dist/oauth-state-store-y8mEYVq9.mjs +0 -50
- package/dist/oauth-state-store-y8mEYVq9.mjs.map +0 -1
- package/dist/oauth-user-lookup-CtTYAy-O.mjs +0 -26
- package/dist/oauth-user-lookup-CtTYAy-O.mjs.map +0 -1
- package/dist/object-cache-CqWNY5uP.mjs +0 -582
- package/dist/object-cache-CqWNY5uP.mjs.map +0 -1
- package/dist/options-BYa1FgIM.d.mts +0 -81
- package/dist/options-BYa1FgIM.d.mts.map +0 -1
- package/dist/parse-CORGGhHf.mjs +0 -81
- package/dist/parse-CORGGhHf.mjs.map +0 -1
- package/dist/parse-avNM1xWV.d.mts +0 -168
- package/dist/parse-avNM1xWV.d.mts.map +0 -1
- package/dist/passkey-config-Dih5YeIS.mjs +0 -46
- package/dist/passkey-config-Dih5YeIS.mjs.map +0 -1
- package/dist/paths-d51RFm8M.mjs +0 -77
- package/dist/paths-d51RFm8M.mjs.map +0 -1
- package/dist/patterns-CoqlXUvk.mjs +0 -145
- package/dist/patterns-CoqlXUvk.mjs.map +0 -1
- package/dist/placeholder-D2aksPMF.d.mts +0 -306
- package/dist/placeholder-D2aksPMF.d.mts.map +0 -1
- package/dist/plan-DqeZKuaR.mjs +0 -135
- package/dist/plan-DqeZKuaR.mjs.map +0 -1
- package/dist/plugins-Bb7oqjQA.mjs +0 -277
- package/dist/plugins-Bb7oqjQA.mjs.map +0 -1
- package/dist/policy-BcEqut3n.mjs +0 -45
- package/dist/policy-BcEqut3n.mjs.map +0 -1
- package/dist/portable-text-DXE8ymtD.mjs +0 -307
- package/dist/portable-text-DXE8ymtD.mjs.map +0 -1
- package/dist/preview-DEDWbwA_.mjs +0 -107
- package/dist/preview-DEDWbwA_.mjs.map +0 -1
- package/dist/protocol-BJbTzvwl.d.mts +0 -61
- package/dist/protocol-BJbTzvwl.d.mts.map +0 -1
- package/dist/public-submission-D9c9S14m.mjs +0 -250
- package/dist/public-submission-D9c9S14m.mjs.map +0 -1
- package/dist/public-url-CIRe-2T6.mjs +0 -101
- package/dist/public-url-CIRe-2T6.mjs.map +0 -1
- package/dist/query-BzifXlPS.mjs +0 -1156
- package/dist/query-BzifXlPS.mjs.map +0 -1
- package/dist/query-OzMJ6vJP.mjs +0 -41
- package/dist/query-OzMJ6vJP.mjs.map +0 -1
- package/dist/rate-limit-Csp60Vik.mjs +0 -120
- package/dist/rate-limit-Csp60Vik.mjs.map +0 -1
- package/dist/receipt-B-aU4hpJ.mjs +0 -43
- package/dist/receipt-B-aU4hpJ.mjs.map +0 -1
- package/dist/redirect-CDSw1sU3.mjs +0 -17
- package/dist/redirect-CDSw1sU3.mjs.map +0 -1
- package/dist/redirect-D1ArbO85.mjs +0 -411
- package/dist/redirect-D1ArbO85.mjs.map +0 -1
- package/dist/redirects-BjTwDTsV.mjs +0 -148
- package/dist/redirects-BjTwDTsV.mjs.map +0 -1
- package/dist/redirects-Ck50kH3n.mjs +0 -446
- package/dist/redirects-Ck50kH3n.mjs.map +0 -1
- package/dist/registry-CFcNCayZ.mjs +0 -6754
- package/dist/registry-CFcNCayZ.mjs.map +0 -1
- package/dist/relations-Cfaa1fDl.mjs +0 -776
- package/dist/relations-Cfaa1fDl.mjs.map +0 -1
- package/dist/request-cache-iHRlHx1d.mjs +0 -104
- package/dist/request-cache-iHRlHx1d.mjs.map +0 -1
- package/dist/request-meta-D47mqyev.mjs +0 -141
- package/dist/request-meta-D47mqyev.mjs.map +0 -1
- package/dist/resolve-BPE8sMvx.mjs +0 -99
- package/dist/resolve-BPE8sMvx.mjs.map +0 -1
- package/dist/resolve-C0s1E_fH.mjs +0 -199
- package/dist/resolve-C0s1E_fH.mjs.map +0 -1
- package/dist/revision-j1p4-bOj.mjs +0 -302
- package/dist/revision-j1p4-bOj.mjs.map +0 -1
- package/dist/route-wire-C9PJV9aL.mjs +0 -197
- package/dist/route-wire-C9PJV9aL.mjs.map +0 -1
- package/dist/routes-lyYw0mMf.mjs +0 -272
- package/dist/routes-lyYw0mMf.mjs.map +0 -1
- package/dist/runner-B3eyB9Gb.mjs +0 -6121
- package/dist/runner-B3eyB9Gb.mjs.map +0 -1
- package/dist/runner-DoYH2Jcu.d.mts +0 -68
- package/dist/runner-DoYH2Jcu.d.mts.map +0 -1
- package/dist/schema-BAayK46S.mjs +0 -13
- package/dist/schema-BAayK46S.mjs.map +0 -1
- package/dist/schema-Gqcl-8G4.mjs +0 -815
- package/dist/schema-Gqcl-8G4.mjs.map +0 -1
- package/dist/scopes-BqPOKoKf.mjs +0 -34
- package/dist/scopes-BqPOKoKf.mjs.map +0 -1
- package/dist/search-YJKPIEV6.mjs +0 -448
- package/dist/search-YJKPIEV6.mjs.map +0 -1
- package/dist/sections-BR_e-wK5.mjs +0 -346
- package/dist/sections-BR_e-wK5.mjs.map +0 -1
- package/dist/seo-Dsj8hy3j.mjs +0 -114
- package/dist/seo-Dsj8hy3j.mjs.map +0 -1
- package/dist/seo-XvH4LNNp.mjs +0 -133
- package/dist/seo-XvH4LNNp.mjs.map +0 -1
- package/dist/service-BsVG05gS.mjs +0 -150
- package/dist/service-BsVG05gS.mjs.map +0 -1
- package/dist/session-user-DgKbYrlj.mjs +0 -51
- package/dist/session-user-DgKbYrlj.mjs.map +0 -1
- package/dist/settings-CNPUntkh.mjs +0 -51
- package/dist/settings-CNPUntkh.mjs.map +0 -1
- package/dist/settings-D5EHi0Tk.mjs +0 -439
- package/dist/settings-D5EHi0Tk.mjs.map +0 -1
- package/dist/settings-DSfE7wOa.mjs +0 -61
- package/dist/settings-DSfE7wOa.mjs.map +0 -1
- package/dist/setup-complete-B8W8sJ9v.mjs +0 -26
- package/dist/setup-complete-B8W8sJ9v.mjs.map +0 -1
- package/dist/setup-nonce-DnSBP260.mjs +0 -25
- package/dist/setup-nonce-DnSBP260.mjs.map +0 -1
- package/dist/site-settings-NGzdrt7O.mjs +0 -50
- package/dist/site-settings-NGzdrt7O.mjs.map +0 -1
- package/dist/site-url-D6JB7tLW.mjs +0 -16
- package/dist/site-url-D6JB7tLW.mjs.map +0 -1
- package/dist/snapshot-CdcwwWAf.mjs +0 -414
- package/dist/snapshot-CdcwwWAf.mjs.map +0 -1
- package/dist/ssrf-Dv0_tRpo.mjs +0 -406
- package/dist/ssrf-Dv0_tRpo.mjs.map +0 -1
- package/dist/stage-CUjhED3P.mjs +0 -662
- package/dist/stage-CUjhED3P.mjs.map +0 -1
- package/dist/staged-C36IWXff.mjs +0 -659
- package/dist/staged-C36IWXff.mjs.map +0 -1
- package/dist/state-CKouMCSY.mjs +0 -153
- package/dist/state-CKouMCSY.mjs.map +0 -1
- package/dist/status-lzyj4Uu7.mjs +0 -30
- package/dist/status-lzyj4Uu7.mjs.map +0 -1
- package/dist/storage-query-B-cWcTjJ.d.mts +0 -1594
- package/dist/storage-query-B-cWcTjJ.d.mts.map +0 -1
- package/dist/tar-DsTXX6ch.mjs +0 -449
- package/dist/tar-DsTXX6ch.mjs.map +0 -1
- package/dist/target-DLQCwp_Z.mjs +0 -27
- package/dist/target-DLQCwp_Z.mjs.map +0 -1
- package/dist/taxonomies-BlAjr4BL.mjs +0 -697
- package/dist/taxonomies-BlAjr4BL.mjs.map +0 -1
- package/dist/taxonomies-Byyo7LOZ.mjs +0 -939
- package/dist/taxonomies-Byyo7LOZ.mjs.map +0 -1
- package/dist/taxonomy-CKDwM61Y.mjs +0 -525
- package/dist/taxonomy-CKDwM61Y.mjs.map +0 -1
- package/dist/tokens-BojXlk49.mjs +0 -171
- package/dist/tokens-BojXlk49.mjs.map +0 -1
- package/dist/transaction-DLPQWik1.mjs +0 -29
- package/dist/transaction-DLPQWik1.mjs.map +0 -1
- package/dist/transfer-XSTh2BCr.mjs +0 -8706
- package/dist/transfer-XSTh2BCr.mjs.map +0 -1
- package/dist/transfer-download-DkoCDA9d.mjs +0 -33
- package/dist/transfer-download-DkoCDA9d.mjs.map +0 -1
- package/dist/transfer-iQ26J-RT.mjs +0 -166
- package/dist/transfer-iQ26J-RT.mjs.map +0 -1
- package/dist/transformations-C7RQabKQ.mjs +0 -196
- package/dist/transformations-C7RQabKQ.mjs.map +0 -1
- package/dist/transport-D3RulfD6.mjs +0 -136
- package/dist/transport-D3RulfD6.mjs.map +0 -1
- package/dist/transport-DhlZlf4D.d.mts +0 -42
- package/dist/transport-DhlZlf4D.d.mts.map +0 -1
- package/dist/trusted-proxy-B6ECOZJc.mjs +0 -51
- package/dist/trusted-proxy-B6ECOZJc.mjs.map +0 -1
- package/dist/turnstile-lqUiY7lP.mjs +0 -53
- package/dist/turnstile-lqUiY7lP.mjs.map +0 -1
- package/dist/types-4Dn9bZhu.mjs +0 -77
- package/dist/types-4Dn9bZhu.mjs.map +0 -1
- package/dist/types-5LSo7PPx.d.mts +0 -85
- package/dist/types-5LSo7PPx.d.mts.map +0 -1
- package/dist/types-BQ3hwYJT.d.mts +0 -896
- package/dist/types-BQ3hwYJT.d.mts.map +0 -1
- package/dist/types-BYEk7qo3.d.mts +0 -198
- package/dist/types-BYEk7qo3.d.mts.map +0 -1
- package/dist/types-CJKsWVFR.mjs +0 -199
- package/dist/types-CJKsWVFR.mjs.map +0 -1
- package/dist/types-Ca_w8mmY.d.mts +0 -363
- package/dist/types-Ca_w8mmY.d.mts.map +0 -1
- package/dist/types-CkE41ZAG.mjs +0 -18
- package/dist/types-CkE41ZAG.mjs.map +0 -1
- package/dist/types-D0aJW2uR.d.mts +0 -1641
- package/dist/types-D0aJW2uR.d.mts.map +0 -1
- package/dist/types-DbpN4Qto.d.mts +0 -372
- package/dist/types-DbpN4Qto.d.mts.map +0 -1
- package/dist/types-ILDI1sdY.mjs +0 -16
- package/dist/types-ILDI1sdY.mjs.map +0 -1
- package/dist/types-OC5c-edM.mjs +0 -22
- package/dist/types-OC5c-edM.mjs.map +0 -1
- package/dist/types-aOOxRSx6.mjs +0 -103
- package/dist/types-aOOxRSx6.mjs.map +0 -1
- package/dist/types-m1WbUffD.d.mts +0 -198
- package/dist/types-m1WbUffD.d.mts.map +0 -1
- package/dist/types-uxLoPBio.d.mts +0 -124
- package/dist/types-uxLoPBio.d.mts.map +0 -1
- package/dist/types-we5uR-tV.d.mts +0 -287
- package/dist/types-we5uR-tV.d.mts.map +0 -1
- package/dist/upload-attempts-DduMy6B0.mjs +0 -32
- package/dist/upload-attempts-DduMy6B0.mjs.map +0 -1
- package/dist/url-pattern-B3EwxAAk.mjs +0 -33
- package/dist/url-pattern-B3EwxAAk.mjs.map +0 -1
- package/dist/user-ElwQjTQT.mjs +0 -171
- package/dist/user-ElwQjTQT.mjs.map +0 -1
- package/dist/utils-BlAXmfOG.mjs +0 -439
- package/dist/utils-BlAXmfOG.mjs.map +0 -1
- package/dist/validate-CH0X5b2c.d.mts +0 -468
- package/dist/validate-CH0X5b2c.d.mts.map +0 -1
- package/dist/validate-CfgRpcjA.mjs +0 -492
- package/dist/validate-CfgRpcjA.mjs.map +0 -1
- package/dist/validation-DvYJtv4k.mjs +0 -218
- package/dist/validation-DvYJtv4k.mjs.map +0 -1
- package/dist/version-DgYjhTud.mjs +0 -9
- package/dist/version-DgYjhTud.mjs.map +0 -1
- package/dist/version-Dq71scUb.mjs +0 -7
- package/dist/version-Dq71scUb.mjs.map +0 -1
- package/dist/widgets-ChFIj0be.mjs +0 -126
- package/dist/widgets-ChFIj0be.mjs.map +0 -1
- package/dist/wxr-taxonomies-CBZMp2YX.mjs +0 -372
- package/dist/wxr-taxonomies-CBZMp2YX.mjs.map +0 -1
- package/dist/wxr-taxonomies-DlKDpWN1.d.mts +0 -34
- package/dist/wxr-taxonomies-DlKDpWN1.d.mts.map +0 -1
- package/dist/zod-generator-DmTKI-Ig.mjs +0 -426
- package/dist/zod-generator-DmTKI-Ig.mjs.map +0 -1
- package/src/cli/commands/bundle-utils.ts +0 -408
- package/src/cli/commands/bundle.ts +0 -659
- package/src/cli/commands/plugin-init.ts +0 -417
- package/src/cli/commands/plugin-validate.ts +0 -31
- package/src/cli/commands/plugin.ts +0 -33
- package/src/cli/commands/publish.ts +0 -721
- /package/dist/{api-tokens-FaG1zPsj.mjs → api-tokens-BLz2MtQs.mjs} +0 -0
- /package/dist/{ssrf-DZOt8Qof.mjs → ssrf-tA45vIPX.mjs} +0 -0
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* values (column types, NOT NULL, Postgres int4 / float4).
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { isSafeUrlFieldWriteValue } from "../../utils/url.js";
|
|
7
8
|
import { isTransferError } from "../errors.js";
|
|
8
9
|
import { measureJsonDepth } from "../format/canonical.js";
|
|
9
10
|
import { encodeColumn } from "../format/column-codec.js";
|
|
@@ -21,6 +22,19 @@ export interface FieldInfo {
|
|
|
21
22
|
required: boolean;
|
|
22
23
|
/** Values live as content references; the target has no column for them. */
|
|
23
24
|
storageless?: boolean;
|
|
25
|
+
type?: "url" | "repeater" | "blocks";
|
|
26
|
+
urlSubFields?: string[];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface BlockTypeInfo {
|
|
30
|
+
id: string;
|
|
31
|
+
currentVersion: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface UrlValueField {
|
|
35
|
+
slug: string;
|
|
36
|
+
type: "url" | "repeater";
|
|
37
|
+
urlSubFields?: string[];
|
|
24
38
|
}
|
|
25
39
|
|
|
26
40
|
const PROVIDER_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
@@ -166,6 +180,90 @@ function mismatch(field: string, message: string): ValueIssue {
|
|
|
166
180
|
return { code: "value_constraint_violation", message, property: "fields", field };
|
|
167
181
|
}
|
|
168
182
|
|
|
183
|
+
function urlMismatch(property: string, field: string): ValueIssue {
|
|
184
|
+
return {
|
|
185
|
+
code: "value_constraint_violation",
|
|
186
|
+
message: "URL field value is not safe to store",
|
|
187
|
+
property,
|
|
188
|
+
field,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function arrayValue(value: unknown): unknown[] | undefined {
|
|
193
|
+
if (Array.isArray(value)) return value;
|
|
194
|
+
if (typeof value !== "string") return undefined;
|
|
195
|
+
const parsed = parseEmbeddedJson(value);
|
|
196
|
+
return Array.isArray(parsed) ? parsed : undefined;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function unsafeUrlFields(value: unknown, fields: readonly UrlValueField[], path: string): string[] {
|
|
200
|
+
const issues: string[] = [];
|
|
201
|
+
if (!isPlainObject(value)) return issues;
|
|
202
|
+
for (const field of fields) {
|
|
203
|
+
const fieldPath = `${path}.${field.slug}`;
|
|
204
|
+
const fieldValue = value[field.slug];
|
|
205
|
+
if (field.type === "url") {
|
|
206
|
+
if (typeof fieldValue === "string" && !isSafeUrlFieldWriteValue(fieldValue)) {
|
|
207
|
+
issues.push(fieldPath);
|
|
208
|
+
}
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
for (const [index, row] of (arrayValue(fieldValue) ?? []).entries()) {
|
|
212
|
+
if (!isPlainObject(row)) continue;
|
|
213
|
+
for (const slug of field.urlSubFields ?? []) {
|
|
214
|
+
const nested = row[slug];
|
|
215
|
+
if (typeof nested === "string" && !isSafeUrlFieldWriteValue(nested)) {
|
|
216
|
+
issues.push(`${fieldPath}.${index}.${slug}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return issues;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export function checkContentUrlFields(
|
|
225
|
+
values: Record<string, unknown>,
|
|
226
|
+
fields: ReadonlyMap<string, FieldInfo>,
|
|
227
|
+
blockTypes: ReadonlyMap<string, BlockTypeInfo>,
|
|
228
|
+
blockVersions: ReadonlyMap<string, readonly UrlValueField[]>,
|
|
229
|
+
property: "fields" | "data",
|
|
230
|
+
): ValueIssue[] {
|
|
231
|
+
const issues: ValueIssue[] = [];
|
|
232
|
+
for (const [slug, info] of fields) {
|
|
233
|
+
const value = values[slug];
|
|
234
|
+
if (info.type === "url") {
|
|
235
|
+
if (typeof value === "string" && !isSafeUrlFieldWriteValue(value)) {
|
|
236
|
+
issues.push(urlMismatch(property, slug));
|
|
237
|
+
}
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
if (info.type === "repeater") {
|
|
241
|
+
const descriptors: UrlValueField[] = [
|
|
242
|
+
{ slug, type: "repeater", urlSubFields: info.urlSubFields },
|
|
243
|
+
];
|
|
244
|
+
for (const path of unsafeUrlFields(values, descriptors, property)) {
|
|
245
|
+
issues.push(urlMismatch(property, path.slice(property.length + 1)));
|
|
246
|
+
}
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
if (info.type !== "blocks") continue;
|
|
250
|
+
for (const [index, block] of (arrayValue(value) ?? []).entries()) {
|
|
251
|
+
if (!isPlainObject(block) || typeof block._type !== "string") continue;
|
|
252
|
+
const type = blockTypes.get(block._type);
|
|
253
|
+
if (!type) continue;
|
|
254
|
+
const version =
|
|
255
|
+
typeof block._version === "number" && Number.isInteger(block._version)
|
|
256
|
+
? block._version
|
|
257
|
+
: type.currentVersion;
|
|
258
|
+
const descriptors = blockVersions.get(`${type.id}:${version}`) ?? [];
|
|
259
|
+
for (const path of unsafeUrlFields(block, descriptors, `${slug}.${index}`)) {
|
|
260
|
+
issues.push(urlMismatch(property, path));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return issues;
|
|
265
|
+
}
|
|
266
|
+
|
|
169
267
|
/**
|
|
170
268
|
* Entry field values against the target column each field is stored in,
|
|
171
269
|
* through the shared column codec: a value the codec cannot encode for the
|
|
@@ -178,8 +276,13 @@ export function checkEntryFields(
|
|
|
178
276
|
entry: EntryRecord,
|
|
179
277
|
fields: ReadonlyMap<string, FieldInfo>,
|
|
180
278
|
dialect: TargetDialect,
|
|
279
|
+
blockTypes: ReadonlyMap<string, BlockTypeInfo> = new Map(),
|
|
280
|
+
blockVersions: ReadonlyMap<string, readonly UrlValueField[]> = new Map(),
|
|
181
281
|
): ValueCheckResult {
|
|
182
|
-
const result: ValueCheckResult = {
|
|
282
|
+
const result: ValueCheckResult = {
|
|
283
|
+
issues: checkContentUrlFields(entry.fields, fields, blockTypes, blockVersions, "fields"),
|
|
284
|
+
float4Rounded: 0,
|
|
285
|
+
};
|
|
183
286
|
for (const [slug, value] of Object.entries(entry.fields)) {
|
|
184
287
|
const info = fields.get(slug);
|
|
185
288
|
if (!info) {
|
|
@@ -9,6 +9,7 @@ import { safeHref } from "../../api/schemas/menus.js";
|
|
|
9
9
|
import { createRedirectBody } from "../../api/schemas/redirects.js";
|
|
10
10
|
import { coerceFieldValue } from "../../database/repositories/byline.js";
|
|
11
11
|
import { EmDashValidationError } from "../../database/repositories/types.js";
|
|
12
|
+
import { isSiteRelativeDestination } from "../../redirects/destination.js";
|
|
12
13
|
import { isPattern, validateDestinationParams, validatePattern } from "../../redirects/patterns.js";
|
|
13
14
|
import { isTerminalStatus } from "../../redirects/status.js";
|
|
14
15
|
import { validateBlockFields } from "../../schema/block-type-contract.js";
|
|
@@ -60,6 +61,13 @@ function redirectIssues(record: RedirectRecord): ValueIssue[] {
|
|
|
60
61
|
if (properties.has(property)) issues.push(rejected(property, message));
|
|
61
62
|
}
|
|
62
63
|
}
|
|
64
|
+
if (
|
|
65
|
+
!isTerminalStatus(record.type) &&
|
|
66
|
+
!isSiteRelativeDestination(record.destination) &&
|
|
67
|
+
!issues.some((issue) => issue.property === "destination")
|
|
68
|
+
) {
|
|
69
|
+
issues.push(rejected("destination", REDIRECT_BODY_MESSAGES.destination));
|
|
70
|
+
}
|
|
63
71
|
const pattern = isPattern(record.source);
|
|
64
72
|
if (record.isPattern !== pattern) {
|
|
65
73
|
issues.push(rejected("isPattern", "Redirect pattern flag does not match its source"));
|
package/src/utils/url.ts
CHANGED
|
@@ -16,7 +16,26 @@
|
|
|
16
16
|
* - Protocol-relative URLs are NOT allowed (starting with //) as they can
|
|
17
17
|
* redirect to attacker-controlled hosts.
|
|
18
18
|
*/
|
|
19
|
-
const
|
|
19
|
+
const SAFE_ABSOLUTE_URL_RE = /^(https?:|mailto:|tel:)/i;
|
|
20
|
+
const SITE_RELATIVE_HREF_RE = /^(\/(?![/\\])|#)/;
|
|
21
|
+
const URL_SCHEME_RE = /^([a-z][a-z0-9+.-]*):/i;
|
|
22
|
+
const URL_BASE = new URL("https://emdash.invalid/");
|
|
23
|
+
|
|
24
|
+
function containsHrefControl(value: string): boolean {
|
|
25
|
+
for (const character of value) {
|
|
26
|
+
const codePoint = character.codePointAt(0);
|
|
27
|
+
if (codePoint !== undefined && (codePoint <= 0x1f || codePoint === 0x7f)) return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function resolvesOnSite(value: string): boolean {
|
|
33
|
+
try {
|
|
34
|
+
return new URL(value, URL_BASE).origin === URL_BASE.origin;
|
|
35
|
+
} catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
20
39
|
|
|
21
40
|
/**
|
|
22
41
|
* Returns the URL unchanged if it uses a safe scheme, otherwise returns "#".
|
|
@@ -37,12 +56,48 @@ const SAFE_URL_SCHEME_RE = /^(https?:|mailto:|tel:|\/(?!\/)|#)/i;
|
|
|
37
56
|
*/
|
|
38
57
|
export function sanitizeHref(url: string | undefined | null): string {
|
|
39
58
|
if (!url) return "#";
|
|
40
|
-
return
|
|
59
|
+
return isSafeHref(url) ? url : "#";
|
|
41
60
|
}
|
|
42
61
|
|
|
43
62
|
/**
|
|
44
63
|
* Returns true if the URL uses a safe scheme for rendering in href attributes.
|
|
45
64
|
*/
|
|
46
65
|
export function isSafeHref(url: string): boolean {
|
|
47
|
-
|
|
66
|
+
if (containsHrefControl(url)) return false;
|
|
67
|
+
if (SAFE_ABSOLUTE_URL_RE.test(url)) return URL.canParse(url);
|
|
68
|
+
return SITE_RELATIVE_HREF_RE.test(url) && resolvesOnSite(url);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const ALLOWED_URL_SCHEMES = new Set(["http", "https", "mailto", "tel"]);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Returns true if the value names a URL scheme other than http, https,
|
|
75
|
+
* mailto, or tel, as a browser would resolve it in an href.
|
|
76
|
+
*/
|
|
77
|
+
export function hasUnsafeUrlScheme(value: string): boolean {
|
|
78
|
+
const stripped = value.replace(/[\t\n\r]/g, "").trimStart();
|
|
79
|
+
const scheme = URL_SCHEME_RE.exec(stripped)?.[1];
|
|
80
|
+
return scheme !== undefined && !ALLOWED_URL_SCHEMES.has(scheme.toLowerCase());
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Returns true when a repository write may keep the value. Repository callers
|
|
85
|
+
* preserve legacy scheme-less values, but reject anything a browser resolves
|
|
86
|
+
* off-site or to a script-capable scheme.
|
|
87
|
+
*/
|
|
88
|
+
export function isSafeUrlFieldWriteValue(value: string): boolean {
|
|
89
|
+
if (containsHrefControl(value) || hasUnsafeUrlScheme(value)) return false;
|
|
90
|
+
const candidate = value.trimStart();
|
|
91
|
+
const scheme = URL_SCHEME_RE.exec(candidate)?.[1];
|
|
92
|
+
if (scheme !== undefined) return ALLOWED_URL_SCHEMES.has(scheme.toLowerCase());
|
|
93
|
+
return resolvesOnSite(candidate);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Returns true if the value may be stored in a `url` content field: a safe
|
|
98
|
+
* href per {@link isSafeHref} that is either site-relative or a parseable
|
|
99
|
+
* absolute URL.
|
|
100
|
+
*/
|
|
101
|
+
export function isSafeUrlFieldValue(value: string): boolean {
|
|
102
|
+
return isSafeHref(value);
|
|
48
103
|
}
|
package/src/virtual-modules.d.ts
CHANGED
|
@@ -22,6 +22,9 @@ declare module "virtual:emdash/config" {
|
|
|
22
22
|
authProviders?: AuthProviderDescriptor[];
|
|
23
23
|
i18n?: I18nConfig | null;
|
|
24
24
|
toolbar?: "server" | "client" | false;
|
|
25
|
+
/** Whether an object-cache adapter was configured at build time. */
|
|
26
|
+
objectCacheEnabled?: boolean;
|
|
27
|
+
updateCheck?: boolean | { minimumReleaseAge?: string | number };
|
|
25
28
|
/** Public origin from astro.config.mjs, origin-normalized at startup. */
|
|
26
29
|
siteUrl?: string;
|
|
27
30
|
astroCspEnabled?: boolean;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { r as verifyPreviewToken, t as generatePreviewToken } from "./tokens-BojXlk49.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/visual-editing/action-token.ts
|
|
4
|
-
const VISUAL_ACTION_SECRET_DOMAIN = "emdash:visual-editing-action:v1:";
|
|
5
|
-
const VISUAL_ACTION_TOKEN_INVALID = "VISUAL_ACTION_TOKEN_INVALID";
|
|
6
|
-
function visualActionSecret(previewSecret) {
|
|
7
|
-
return `${VISUAL_ACTION_SECRET_DOMAIN}${previewSecret}`;
|
|
8
|
-
}
|
|
9
|
-
function generateVisualEditingActionToken(previewSecret, userId) {
|
|
10
|
-
return generatePreviewToken({
|
|
11
|
-
contentId: `visual-editing:${userId}`,
|
|
12
|
-
expiresIn: "5m",
|
|
13
|
-
secret: visualActionSecret(previewSecret)
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
async function verifyVisualEditingActionToken(token, previewSecret, userId) {
|
|
17
|
-
const verification = await verifyPreviewToken({
|
|
18
|
-
token,
|
|
19
|
-
secret: visualActionSecret(previewSecret)
|
|
20
|
-
});
|
|
21
|
-
return verification.valid && verification.payload.cid === `visual-editing:${userId}`;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
//#endregion
|
|
25
|
-
export { generateVisualEditingActionToken as n, verifyVisualEditingActionToken as r, VISUAL_ACTION_TOKEN_INVALID as t };
|
|
26
|
-
//# sourceMappingURL=action-token-CbKDcPJi.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-token-CbKDcPJi.mjs","names":[],"sources":["../src/visual-editing/action-token.ts"],"sourcesContent":["import { generatePreviewToken, verifyPreviewToken } from \"../preview/tokens.js\";\n\nconst VISUAL_ACTION_SECRET_DOMAIN = \"emdash:visual-editing-action:v1:\";\nexport const VISUAL_ACTION_TOKEN_INVALID = \"VISUAL_ACTION_TOKEN_INVALID\";\n\nfunction visualActionSecret(previewSecret: string): string {\n\treturn `${VISUAL_ACTION_SECRET_DOMAIN}${previewSecret}`;\n}\n\nexport function generateVisualEditingActionToken(\n\tpreviewSecret: string,\n\tuserId: string,\n): Promise<string> {\n\treturn generatePreviewToken({\n\t\tcontentId: `visual-editing:${userId}`,\n\t\texpiresIn: \"5m\",\n\t\tsecret: visualActionSecret(previewSecret),\n\t});\n}\n\nexport async function verifyVisualEditingActionToken(\n\ttoken: string,\n\tpreviewSecret: string,\n\tuserId: string,\n): Promise<boolean> {\n\tconst verification = await verifyPreviewToken({\n\t\ttoken,\n\t\tsecret: visualActionSecret(previewSecret),\n\t});\n\treturn verification.valid && verification.payload.cid === `visual-editing:${userId}`;\n}\n"],"mappings":";;;AAEA,MAAM,8BAA8B;AACpC,MAAa,8BAA8B;AAE3C,SAAS,mBAAmB,eAA+B;AAC1D,QAAO,GAAG,8BAA8B;;AAGzC,SAAgB,iCACf,eACA,QACkB;AAClB,QAAO,qBAAqB;EAC3B,WAAW,kBAAkB;EAC7B,WAAW;EACX,QAAQ,mBAAmB,cAAc;EACzC,CAAC;;AAGH,eAAsB,+BACrB,OACA,eACA,QACmB;CACnB,MAAM,eAAe,MAAM,mBAAmB;EAC7C;EACA,QAAQ,mBAAmB,cAAc;EACzC,CAAC;AACF,QAAO,aAAa,SAAS,aAAa,QAAQ,QAAQ,kBAAkB"}
|
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
import { u as isPostgres, y as tableExists } from "./dialect-helpers-7_IqPdh9.mjs";
|
|
2
|
-
import { n as verifyMediaUsageCaptureTriggers, t as installMediaUsageCaptureTriggers } from "./capture-triggers-DJEoOTOq.mjs";
|
|
3
|
-
import { sql } from "kysely";
|
|
4
|
-
import { ulid } from "ulidx";
|
|
5
|
-
|
|
6
|
-
//#region src/media/usage/activation.ts
|
|
7
|
-
const ACTIVATION_KEY = "incremental_capture";
|
|
8
|
-
const ACTIVATION_ERROR_CODE = "MEDIA_USAGE_ACTIVATION_FAILED";
|
|
9
|
-
const MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION = 1;
|
|
10
|
-
var MediaUsageActivationVersionMismatchError = class extends Error {};
|
|
11
|
-
const MEDIA_USAGE_ACTIVATION_LIMITS = Object.freeze({
|
|
12
|
-
collectionsPerCall: 1,
|
|
13
|
-
leaseDurationSeconds: 300
|
|
14
|
-
});
|
|
15
|
-
async function getMediaUsageActivationStatus(db) {
|
|
16
|
-
const activation = await db.selectFrom("_emdash_media_usage_activation").select([
|
|
17
|
-
"state",
|
|
18
|
-
"runtime_generation",
|
|
19
|
-
"collection_cursor",
|
|
20
|
-
"drain_confirmed_at",
|
|
21
|
-
"lease_expires_at",
|
|
22
|
-
"attempt_count",
|
|
23
|
-
"last_attempted_at",
|
|
24
|
-
"last_error_code",
|
|
25
|
-
"activated_at",
|
|
26
|
-
"updated_at"
|
|
27
|
-
]).where("task_key", "=", ACTIVATION_KEY).executeTakeFirstOrThrow();
|
|
28
|
-
assertRuntimeGeneration(activation);
|
|
29
|
-
if (activation.state !== "expanded" && activation.state !== "activating" && activation.state !== "active") throw new Error("Invalid media usage activation state");
|
|
30
|
-
if (!Number.isInteger(activation.attempt_count) || activation.attempt_count < 0) throw new Error("Invalid media usage activation attempt count");
|
|
31
|
-
return {
|
|
32
|
-
state: activation.state,
|
|
33
|
-
collectionCursor: activation.collection_cursor,
|
|
34
|
-
attemptCount: activation.attempt_count,
|
|
35
|
-
drainConfirmedAt: activation.drain_confirmed_at,
|
|
36
|
-
lastAttemptedAt: activation.last_attempted_at,
|
|
37
|
-
lastErrorCode: activation.last_error_code === null ? null : ACTIVATION_ERROR_CODE,
|
|
38
|
-
leaseExpiresAt: activation.lease_expires_at,
|
|
39
|
-
activatedAt: activation.activated_at,
|
|
40
|
-
updatedAt: activation.updated_at
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
async function canResumeMediaUsageCollectionCapture(db, identity) {
|
|
44
|
-
const activation = await findActivationIfAvailable(db);
|
|
45
|
-
if (!activation) return false;
|
|
46
|
-
assertRuntimeGeneration(activation);
|
|
47
|
-
if (activation.state !== "active") return false;
|
|
48
|
-
const lifecycle = await db.selectFrom("_emdash_media_usage_index_status").select(["collection_id", "cursor"]).where("adapter_id", "=", "content-media").where("scope_type", "=", "collection").where("scope_key", "=", identity.collectionSlug).where("collection_id", "=", identity.collectionId).where("capture_state", "in", ["installing", "ready"]).executeTakeFirst();
|
|
49
|
-
return lifecycle?.collection_id === identity.collectionId && (identity.creationFingerprint ? lifecycle.cursor === identity.creationFingerprint : lifecycle.cursor === null);
|
|
50
|
-
}
|
|
51
|
-
async function prepareMediaUsageCollectionCapture(db, input) {
|
|
52
|
-
const activation = await findActivationIfAvailable(db);
|
|
53
|
-
if (!activation) return {
|
|
54
|
-
captureRequired: false,
|
|
55
|
-
collectionId: input.collectionId,
|
|
56
|
-
registrationExists: input.registeredCollectionId !== void 0,
|
|
57
|
-
resuming: false
|
|
58
|
-
};
|
|
59
|
-
assertRuntimeGeneration(activation);
|
|
60
|
-
if (activation.state !== "active") return {
|
|
61
|
-
captureRequired: false,
|
|
62
|
-
collectionId: input.collectionId,
|
|
63
|
-
registrationExists: input.registeredCollectionId !== void 0,
|
|
64
|
-
resuming: false
|
|
65
|
-
};
|
|
66
|
-
const existing = await db.selectFrom("_emdash_media_usage_index_status").select([
|
|
67
|
-
"collection_id",
|
|
68
|
-
"capture_state",
|
|
69
|
-
"cursor"
|
|
70
|
-
]).where("adapter_id", "=", "content-media").where("scope_type", "=", "collection").where("scope_key", "=", input.collectionSlug).executeTakeFirst();
|
|
71
|
-
if (existing) {
|
|
72
|
-
if (existing.collection_id && (existing.capture_state === "installing" || existing.capture_state === "ready") && (input.creationFingerprint ? existing.cursor === input.creationFingerprint : existing.cursor === null) && (input.registeredCollectionId === void 0 || input.registeredCollectionId === existing.collection_id)) return {
|
|
73
|
-
captureRequired: true,
|
|
74
|
-
collectionId: existing.collection_id,
|
|
75
|
-
registrationExists: input.registeredCollectionId !== void 0,
|
|
76
|
-
resuming: true
|
|
77
|
-
};
|
|
78
|
-
throw new Error("Media usage collection lifecycle identity conflict");
|
|
79
|
-
}
|
|
80
|
-
if (input.registeredCollectionId !== void 0) throw new Error("Media usage collection lifecycle is missing");
|
|
81
|
-
await db.insertInto("_emdash_media_usage_index_status").values({
|
|
82
|
-
adapter_id: "content-media",
|
|
83
|
-
scope_type: "collection",
|
|
84
|
-
scope_key: input.collectionSlug,
|
|
85
|
-
status: "never",
|
|
86
|
-
collection_id: input.collectionId,
|
|
87
|
-
reconciliation_required: 1,
|
|
88
|
-
capture_state: "installing",
|
|
89
|
-
cursor: input.creationFingerprint ?? null,
|
|
90
|
-
updated_at: timestampOffset(db, 0)
|
|
91
|
-
}).execute();
|
|
92
|
-
return {
|
|
93
|
-
captureRequired: true,
|
|
94
|
-
collectionId: input.collectionId,
|
|
95
|
-
registrationExists: false,
|
|
96
|
-
resuming: false
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
async function installPreparedMediaUsageCollectionCapture(db, identity) {
|
|
100
|
-
await installMediaUsageCaptureTriggers(db, identity, { replaceExisting: false });
|
|
101
|
-
if (!await verifyMediaUsageCaptureTriggers(db, identity)) throw new Error("Media usage capture trigger verification failed");
|
|
102
|
-
}
|
|
103
|
-
async function markMediaUsageCollectionCaptureReady(db, identity) {
|
|
104
|
-
const result = await db.updateTable("_emdash_media_usage_index_status").set({
|
|
105
|
-
capture_state: "ready",
|
|
106
|
-
updated_at: timestampOffset(db, 0)
|
|
107
|
-
}).where("adapter_id", "=", "content-media").where("scope_type", "=", "collection").where("scope_key", "=", identity.collectionSlug).where("collection_id", "=", identity.collectionId).where("capture_state", "in", ["installing", "ready"]).where(sql`EXISTS (
|
|
108
|
-
SELECT 1 FROM _emdash_media_usage_activation AS activation
|
|
109
|
-
WHERE activation.task_key = ${ACTIVATION_KEY}
|
|
110
|
-
AND activation.state = 'active'
|
|
111
|
-
AND activation.runtime_generation = ${MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION}
|
|
112
|
-
)`).executeTakeFirst();
|
|
113
|
-
if (Number(result.numUpdatedRows ?? 0) === 0) throw new Error("Media usage collection readiness lost its fence");
|
|
114
|
-
}
|
|
115
|
-
async function finalizeMediaUsageCollectionCapture(db, identity) {
|
|
116
|
-
const result = await db.updateTable("_emdash_media_usage_index_status").set({
|
|
117
|
-
capture_state: "active",
|
|
118
|
-
cursor: null,
|
|
119
|
-
updated_at: timestampOffset(db, 0)
|
|
120
|
-
}).where("adapter_id", "=", "content-media").where("scope_type", "=", "collection").where("scope_key", "=", identity.collectionSlug).where("collection_id", "=", identity.collectionId).where("capture_state", "=", "ready").where(sql`EXISTS (
|
|
121
|
-
SELECT 1 FROM _emdash_collections AS collection
|
|
122
|
-
WHERE collection.id = ${identity.collectionId}
|
|
123
|
-
AND collection.slug = ${identity.collectionSlug}
|
|
124
|
-
)`).where(sql`EXISTS (
|
|
125
|
-
SELECT 1 FROM _emdash_media_usage_activation AS activation
|
|
126
|
-
WHERE activation.task_key = ${ACTIVATION_KEY}
|
|
127
|
-
AND activation.state = 'active'
|
|
128
|
-
AND activation.runtime_generation = ${MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION}
|
|
129
|
-
)`).executeTakeFirst();
|
|
130
|
-
if (Number(result.numUpdatedRows ?? 0) === 0) throw new Error("Media usage collection activation lost its fence");
|
|
131
|
-
}
|
|
132
|
-
async function activateMediaUsageCapture(db, input) {
|
|
133
|
-
if (input.writersDrained !== true) throw new Error("Media usage activation requires confirmation that writers are drained");
|
|
134
|
-
return advanceMediaUsageActivation(db, "confirmed");
|
|
135
|
-
}
|
|
136
|
-
async function continueMediaUsageActivation(db) {
|
|
137
|
-
return advanceMediaUsageActivation(db, "background");
|
|
138
|
-
}
|
|
139
|
-
async function advanceMediaUsageActivation(db, mode) {
|
|
140
|
-
const before = await findActivation(db);
|
|
141
|
-
assertRuntimeGeneration(before);
|
|
142
|
-
if (before.state === "active") return {
|
|
143
|
-
outcome: "active",
|
|
144
|
-
processedCollections: 0
|
|
145
|
-
};
|
|
146
|
-
if (mode === "background") {
|
|
147
|
-
if (before.state === "expanded" || before.drain_confirmed_at === null) return { outcome: "inactive" };
|
|
148
|
-
if (before.state !== "activating") throw new Error("Invalid media usage activation state");
|
|
149
|
-
if (before.last_error_code !== null) return { outcome: "failed" };
|
|
150
|
-
}
|
|
151
|
-
const leaseToken = ulid();
|
|
152
|
-
const lease = await claimActivation(db, leaseToken, mode);
|
|
153
|
-
if (!lease) return activationClaimLoss(db, mode);
|
|
154
|
-
let processedCollections = 0;
|
|
155
|
-
try {
|
|
156
|
-
const candidates = await findActivationCandidates(db, lease.collection_cursor);
|
|
157
|
-
for (const collection of candidates.slice(0, MEDIA_USAGE_ACTIVATION_LIMITS.collectionsPerCall)) {
|
|
158
|
-
await requireActivationLease(db, leaseToken);
|
|
159
|
-
await prepareCollectionForActivation(db, collection, leaseToken);
|
|
160
|
-
await requireActivationLease(db, leaseToken);
|
|
161
|
-
await installMediaUsageCaptureTriggers(db, {
|
|
162
|
-
collectionId: collection.id,
|
|
163
|
-
collectionSlug: collection.slug
|
|
164
|
-
}, { replaceExisting: false });
|
|
165
|
-
await requireActivationLease(db, leaseToken);
|
|
166
|
-
if (!await verifyMediaUsageCaptureTriggers(db, {
|
|
167
|
-
collectionId: collection.id,
|
|
168
|
-
collectionSlug: collection.slug
|
|
169
|
-
})) throw new Error("Media usage capture trigger verification failed");
|
|
170
|
-
if (!await activateCollectionLifecycle(db, collection, leaseToken)) throw new Error("Media usage collection activation lost its fence");
|
|
171
|
-
processedCollections++;
|
|
172
|
-
}
|
|
173
|
-
const collectionCursor = candidates[Math.min(processedCollections, candidates.length) - 1]?.slug ?? lease.collection_cursor;
|
|
174
|
-
if (candidates.length > MEDIA_USAGE_ACTIVATION_LIMITS.collectionsPerCall) {
|
|
175
|
-
if (!await releaseActivationBatch(db, leaseToken, collectionCursor)) throw new Error("Media usage activation cursor lost its fence");
|
|
176
|
-
return {
|
|
177
|
-
outcome: "activating",
|
|
178
|
-
processedCollections,
|
|
179
|
-
collectionCursor
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
if (await findIncompleteCollection(db)) {
|
|
183
|
-
if (!await releaseActivationBatch(db, leaseToken, null)) throw new Error("Media usage activation restart lost its fence");
|
|
184
|
-
return {
|
|
185
|
-
outcome: "activating",
|
|
186
|
-
processedCollections,
|
|
187
|
-
collectionCursor: null
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
if (!await finalizeActivation(db, leaseToken, collectionCursor)) throw new Error("Media usage activation finalization lost its fence");
|
|
191
|
-
return {
|
|
192
|
-
outcome: "active",
|
|
193
|
-
processedCollections
|
|
194
|
-
};
|
|
195
|
-
} catch (error) {
|
|
196
|
-
if (!await activationLeaseIsLive(db, leaseToken)) return {
|
|
197
|
-
outcome: "conflict",
|
|
198
|
-
processedCollections
|
|
199
|
-
};
|
|
200
|
-
await recordActivationFailure(db, leaseToken);
|
|
201
|
-
throw new Error("Media usage activation failed", { cause: error });
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
async function findActivation(db) {
|
|
205
|
-
return db.selectFrom("_emdash_media_usage_activation").selectAll().where("task_key", "=", ACTIVATION_KEY).executeTakeFirstOrThrow();
|
|
206
|
-
}
|
|
207
|
-
async function findActivationIfAvailable(db) {
|
|
208
|
-
if (!await tableExists(db, "_emdash_media_usage_activation")) return null;
|
|
209
|
-
return findActivation(db);
|
|
210
|
-
}
|
|
211
|
-
function assertRuntimeGeneration(activation) {
|
|
212
|
-
if (activation.runtime_generation !== MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION) throw new MediaUsageActivationVersionMismatchError("Media usage activation runtime generation mismatch");
|
|
213
|
-
}
|
|
214
|
-
async function claimActivation(db, leaseToken, mode) {
|
|
215
|
-
const now = timestampOffset(db, 0);
|
|
216
|
-
const claimValues = {
|
|
217
|
-
lease_token: leaseToken,
|
|
218
|
-
lease_expires_at: timestampOffset(db, MEDIA_USAGE_ACTIVATION_LIMITS.leaseDurationSeconds),
|
|
219
|
-
attempt_count: sql`attempt_count + 1`,
|
|
220
|
-
last_attempted_at: now,
|
|
221
|
-
updated_at: now
|
|
222
|
-
};
|
|
223
|
-
let claim = db.updateTable("_emdash_media_usage_activation").set(mode === "confirmed" ? {
|
|
224
|
-
...claimValues,
|
|
225
|
-
state: "activating",
|
|
226
|
-
drain_confirmed_at: now,
|
|
227
|
-
last_error_code: null
|
|
228
|
-
} : claimValues).where("task_key", "=", ACTIVATION_KEY).where("runtime_generation", "=", MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION);
|
|
229
|
-
if (mode === "confirmed") claim = claim.where((eb) => eb.or([eb("state", "=", "expanded"), eb.and([eb("state", "=", "activating"), eb.or([eb("lease_token", "is", null), eb.and([eb("lease_expires_at", "is not", null), timestampIsDue(db, "lease_expires_at")])])])]));
|
|
230
|
-
else claim = claim.where("state", "=", "activating").where("drain_confirmed_at", "is not", null).where("last_error_code", "is", null).where((eb) => eb.or([eb("lease_token", "is", null), eb.and([eb("lease_expires_at", "is not", null), timestampIsDue(db, "lease_expires_at")])]));
|
|
231
|
-
return await claim.returningAll().executeTakeFirst() ?? null;
|
|
232
|
-
}
|
|
233
|
-
async function activationClaimLoss(db, mode) {
|
|
234
|
-
const current = await findActivation(db);
|
|
235
|
-
assertRuntimeGeneration(current);
|
|
236
|
-
if (current.state === "active") return {
|
|
237
|
-
outcome: "active",
|
|
238
|
-
processedCollections: 0
|
|
239
|
-
};
|
|
240
|
-
if (mode === "background") {
|
|
241
|
-
if (current.state === "expanded" || current.drain_confirmed_at === null) return { outcome: "inactive" };
|
|
242
|
-
if (current.state === "activating" && current.last_error_code !== null) return { outcome: "failed" };
|
|
243
|
-
}
|
|
244
|
-
if (current.state === "activating" && current.lease_token && current.lease_expires_at && await activationLeaseIsLive(db, current.lease_token)) return {
|
|
245
|
-
outcome: "lease_active",
|
|
246
|
-
leaseExpiresAt: current.lease_expires_at
|
|
247
|
-
};
|
|
248
|
-
if (mode === "background" && current.state === "activating") return {
|
|
249
|
-
outcome: "conflict",
|
|
250
|
-
processedCollections: 0
|
|
251
|
-
};
|
|
252
|
-
throw new Error("Media usage activation state is not claimable");
|
|
253
|
-
}
|
|
254
|
-
async function activationLeaseIsLive(db, leaseToken) {
|
|
255
|
-
return await db.selectFrom("_emdash_media_usage_activation").select("task_key").where("task_key", "=", ACTIVATION_KEY).where("state", "=", "activating").where("runtime_generation", "=", MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION).where("lease_token", "=", leaseToken).where("lease_expires_at", "is not", null).where(timestampIsLive(db, "lease_expires_at")).executeTakeFirst() !== void 0;
|
|
256
|
-
}
|
|
257
|
-
async function findActivationCandidates(db, collectionCursor) {
|
|
258
|
-
let query = db.selectFrom("_emdash_collections").select(["id", "slug"]);
|
|
259
|
-
if (collectionCursor) query = query.where("slug", ">", collectionCursor);
|
|
260
|
-
return query.orderBy("slug", "asc").limit(MEDIA_USAGE_ACTIVATION_LIMITS.collectionsPerCall + 1).execute();
|
|
261
|
-
}
|
|
262
|
-
async function prepareCollectionForActivation(db, collection, leaseToken) {
|
|
263
|
-
const now = timestampOffset(db, 0);
|
|
264
|
-
const existingStatus = sql.ref("_emdash_media_usage_index_status.status");
|
|
265
|
-
const existingCompletedAt = sql.ref("_emdash_media_usage_index_status.completed_at");
|
|
266
|
-
const existingCollectionId = sql.ref("_emdash_media_usage_index_status.collection_id");
|
|
267
|
-
const existingCaptureState = sql.ref("_emdash_media_usage_index_status.capture_state");
|
|
268
|
-
if ((await db.insertInto("_emdash_media_usage_index_status").values({
|
|
269
|
-
adapter_id: "content-media",
|
|
270
|
-
scope_type: "collection",
|
|
271
|
-
scope_key: collection.slug,
|
|
272
|
-
status: "never",
|
|
273
|
-
collection_id: collection.id,
|
|
274
|
-
reconciliation_required: 1,
|
|
275
|
-
capture_state: "installing",
|
|
276
|
-
updated_at: now
|
|
277
|
-
}).onConflict((conflict) => conflict.columns([
|
|
278
|
-
"adapter_id",
|
|
279
|
-
"scope_type",
|
|
280
|
-
"scope_key"
|
|
281
|
-
]).doUpdateSet({
|
|
282
|
-
status: sql`CASE WHEN ${existingStatus} IN ('complete', 'running') THEN 'stale' ELSE ${existingStatus} END`,
|
|
283
|
-
completed_at: sql`CASE WHEN ${existingStatus} IN ('complete', 'running') THEN NULL ELSE ${existingCompletedAt} END`,
|
|
284
|
-
cursor: null,
|
|
285
|
-
collection_id: collection.id,
|
|
286
|
-
reconciliation_required: 1,
|
|
287
|
-
capture_state: "installing",
|
|
288
|
-
updated_at: now
|
|
289
|
-
}).where((eb) => eb.and([
|
|
290
|
-
eb.or([eb(existingCollectionId, "is", null), eb(existingCollectionId, "=", collection.id)]),
|
|
291
|
-
eb.or([eb(existingCaptureState, "is", null), eb(existingCaptureState, "!=", "deleting")]),
|
|
292
|
-
activeActivationLease(db, leaseToken)
|
|
293
|
-
]))).returning("collection_id").executeTakeFirst())?.collection_id !== collection.id) throw new Error("Media usage collection lifecycle identity conflict");
|
|
294
|
-
}
|
|
295
|
-
async function requireActivationLease(db, leaseToken) {
|
|
296
|
-
if (!await activationLeaseIsLive(db, leaseToken)) throw new Error("Media usage activation lease is no longer live");
|
|
297
|
-
}
|
|
298
|
-
async function activateCollectionLifecycle(db, collection, leaseToken) {
|
|
299
|
-
const result = await db.updateTable("_emdash_media_usage_index_status").set({
|
|
300
|
-
capture_state: "active",
|
|
301
|
-
updated_at: timestampOffset(db, 0)
|
|
302
|
-
}).where("adapter_id", "=", "content-media").where("scope_type", "=", "collection").where("scope_key", "=", collection.slug).where("collection_id", "=", collection.id).where("capture_state", "=", "installing").where(sql`EXISTS (
|
|
303
|
-
SELECT 1 FROM _emdash_collections AS collection
|
|
304
|
-
WHERE collection.id = ${collection.id}
|
|
305
|
-
AND collection.slug = ${collection.slug}
|
|
306
|
-
)`).where(activeActivationLease(db, leaseToken)).executeTakeFirst();
|
|
307
|
-
return Number(result.numUpdatedRows ?? 0) > 0;
|
|
308
|
-
}
|
|
309
|
-
async function releaseActivationBatch(db, leaseToken, collectionCursor) {
|
|
310
|
-
const result = await db.updateTable("_emdash_media_usage_activation").set({
|
|
311
|
-
collection_cursor: collectionCursor,
|
|
312
|
-
lease_token: null,
|
|
313
|
-
lease_expires_at: null,
|
|
314
|
-
updated_at: timestampOffset(db, 0)
|
|
315
|
-
}).where("task_key", "=", ACTIVATION_KEY).where("state", "=", "activating").where("runtime_generation", "=", MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION).where("lease_token", "=", leaseToken).where("lease_expires_at", "is not", null).where(timestampIsLive(db, "lease_expires_at")).executeTakeFirst();
|
|
316
|
-
return Number(result.numUpdatedRows ?? 0) > 0;
|
|
317
|
-
}
|
|
318
|
-
async function findIncompleteCollection(db) {
|
|
319
|
-
return await db.selectFrom("_emdash_collections as collection").select(["collection.id", "collection.slug"]).where((eb) => eb.not(eb.exists(eb.selectFrom("_emdash_media_usage_index_status as status").select("status.scope_key").where("status.adapter_id", "=", "content-media").where("status.scope_type", "=", "collection").whereRef("status.scope_key", "=", "collection.slug").whereRef("status.collection_id", "=", "collection.id").where("status.capture_state", "=", "active")))).orderBy("collection.slug", "asc").limit(1).executeTakeFirst() ?? null;
|
|
320
|
-
}
|
|
321
|
-
async function finalizeActivation(db, leaseToken, collectionCursor) {
|
|
322
|
-
const now = timestampOffset(db, 0);
|
|
323
|
-
const result = await db.updateTable("_emdash_media_usage_activation").set({
|
|
324
|
-
state: "active",
|
|
325
|
-
collection_cursor: collectionCursor,
|
|
326
|
-
lease_token: null,
|
|
327
|
-
lease_expires_at: null,
|
|
328
|
-
last_error_code: null,
|
|
329
|
-
activated_at: now,
|
|
330
|
-
updated_at: now
|
|
331
|
-
}).where("task_key", "=", ACTIVATION_KEY).where("state", "=", "activating").where("runtime_generation", "=", MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION).where("lease_token", "=", leaseToken).where("lease_expires_at", "is not", null).where(timestampIsLive(db, "lease_expires_at")).where(sql`NOT EXISTS (
|
|
332
|
-
SELECT 1
|
|
333
|
-
FROM _emdash_collections AS collection
|
|
334
|
-
WHERE NOT EXISTS (
|
|
335
|
-
SELECT 1
|
|
336
|
-
FROM _emdash_media_usage_index_status AS status
|
|
337
|
-
WHERE status.adapter_id = 'content-media'
|
|
338
|
-
AND status.scope_type = 'collection'
|
|
339
|
-
AND status.scope_key = collection.slug
|
|
340
|
-
AND status.collection_id = collection.id
|
|
341
|
-
AND status.capture_state = 'active'
|
|
342
|
-
)
|
|
343
|
-
)`).executeTakeFirst();
|
|
344
|
-
return Number(result.numUpdatedRows ?? 0) > 0;
|
|
345
|
-
}
|
|
346
|
-
async function recordActivationFailure(db, leaseToken) {
|
|
347
|
-
await db.updateTable("_emdash_media_usage_activation").set({
|
|
348
|
-
lease_token: null,
|
|
349
|
-
lease_expires_at: null,
|
|
350
|
-
last_error_code: ACTIVATION_ERROR_CODE,
|
|
351
|
-
updated_at: timestampOffset(db, 0)
|
|
352
|
-
}).where("task_key", "=", ACTIVATION_KEY).where("state", "=", "activating").where("runtime_generation", "=", MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION).where("lease_token", "=", leaseToken).execute();
|
|
353
|
-
}
|
|
354
|
-
function activeActivationLease(db, leaseToken) {
|
|
355
|
-
return sql`EXISTS (
|
|
356
|
-
SELECT 1
|
|
357
|
-
FROM _emdash_media_usage_activation AS activation
|
|
358
|
-
WHERE activation.task_key = ${ACTIVATION_KEY}
|
|
359
|
-
AND activation.state = 'activating'
|
|
360
|
-
AND activation.runtime_generation = ${MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION}
|
|
361
|
-
AND activation.lease_token = ${leaseToken}
|
|
362
|
-
AND activation.lease_expires_at IS NOT NULL
|
|
363
|
-
AND ${timestampIsLive(db, "activation.lease_expires_at")}
|
|
364
|
-
)`;
|
|
365
|
-
}
|
|
366
|
-
function timestampIsDue(db, column) {
|
|
367
|
-
return isPostgres(db) ? sql`${sql.ref(column)}::timestamptz <= clock_timestamp()` : sql`${sql.ref(column)} <= strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;
|
|
368
|
-
}
|
|
369
|
-
function timestampIsLive(db, column) {
|
|
370
|
-
return isPostgres(db) ? sql`${sql.ref(column)}::timestamptz > clock_timestamp()` : sql`${sql.ref(column)} > strftime('%Y-%m-%dT%H:%M:%fZ', 'now')`;
|
|
371
|
-
}
|
|
372
|
-
function timestampOffset(db, seconds) {
|
|
373
|
-
if (isPostgres(db)) return sql`to_char(
|
|
374
|
-
clock_timestamp() AT TIME ZONE 'UTC' + (${seconds} * interval '1 second'),
|
|
375
|
-
'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'
|
|
376
|
-
)`;
|
|
377
|
-
return sql`strftime('%Y-%m-%dT%H:%M:%fZ', 'now', ${`+${seconds} seconds`})`;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
//#endregion
|
|
381
|
-
export { continueMediaUsageActivation as a, installPreparedMediaUsageCollectionCapture as c, canResumeMediaUsageCollectionCapture as i, markMediaUsageCollectionCaptureReady as l, MediaUsageActivationVersionMismatchError as n, finalizeMediaUsageCollectionCapture as o, activateMediaUsageCapture as r, getMediaUsageActivationStatus as s, MEDIA_USAGE_ACTIVATION_RUNTIME_GENERATION as t, prepareMediaUsageCollectionCapture as u };
|
|
382
|
-
//# sourceMappingURL=activation-PtniBLt9.mjs.map
|