emdash 0.40.1 → 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 -46
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +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 +106 -560
- 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 -107
- 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 -69
- 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 -68
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +75 -69
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +86 -79
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +75 -69
- 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 -68
- 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 -78
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +74 -68
- 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 -69
- 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 -80
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -9
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +77 -71
- 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 -69
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +74 -68
- 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 -68
- 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 -68
- 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.d.mts +1 -2
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +44 -54
- 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 -30
- 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 -25
- 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_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +19 -18
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/authors.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/index.mjs +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 -10
- 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.d.mts +2 -1
- package/dist/astro/routes/api/oauth/device/authorize.d.mts.map +1 -1
- package/dist/astro/routes/api/oauth/device/authorize.mjs +23 -9
- package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/device/code.mjs +11 -11
- package/dist/astro/routes/api/oauth/device/token.mjs +10 -10
- package/dist/astro/routes/api/oauth/register.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 -30
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +38 -32
- 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 -68
- 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 -68
- 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 -68
- package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +76 -70
- 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 -68
- 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 -68
- 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 -68
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +74 -68
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +74 -68
- 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 -68
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +74 -68
- 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 -40
- 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 -45
- 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 -40
- 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 +30 -18
- 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 +380 -1620
- 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 -102
- 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 -108
- 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 -43
- 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 -32
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +24 -22
- 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 +15 -15
- package/src/api/errors.ts +11 -0
- package/src/api/handlers/bulk-tag.ts +4 -4
- package/src/api/handlers/content.ts +631 -32
- package/src/api/handlers/device-flow.ts +74 -21
- package/src/api/handlers/index.ts +3 -0
- package/src/api/handlers/manifest.ts +81 -5
- 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/relations.ts +638 -157
- package/src/api/handlers/revision.ts +40 -2
- package/src/api/handlers/schema.ts +403 -1
- package/src/api/handlers/staged-references.ts +208 -0
- package/src/api/handlers/update-check.ts +236 -0
- package/src/api/handlers/validate-references.ts +146 -0
- package/src/api/redirect.ts +9 -1
- package/src/api/schemas/content.ts +17 -0
- package/src/api/schemas/import.ts +50 -14
- package/src/api/schemas/relations.ts +54 -44
- package/src/api/schemas/schema.ts +26 -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 +21 -19
- 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/content/[collection]/[id]/references/[relation]/children.ts +11 -54
- package/src/astro/routes/api/content/[collection]/[id].ts +3 -1
- package/src/astro/routes/api/import/wordpress/execute.ts +252 -6
- package/src/astro/routes/api/import/wordpress/prepare.ts +1 -2
- package/src/astro/routes/api/oauth/device/authorize.ts +33 -4
- package/src/astro/routes/api/oauth/register.ts +22 -2
- package/src/astro/routes/api/relations/index.ts +4 -4
- package/src/astro/routes/api/revisions/[revisionId]/restore.ts +17 -1
- package/src/astro/routes/api/schema/collections/[slug]/fields/[fieldSlug].ts +6 -2
- 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 +11 -0
- package/src/bylines/credits.ts +149 -0
- package/src/bylines/index.ts +4 -142
- package/src/cli/commands/export-seed.ts +510 -89
- 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/components/WidgetArea.astro +3 -2
- 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/086_relations_structural.ts +197 -0
- package/src/database/migrations/087_reference_field_relations.ts +407 -0
- 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 +8 -0
- package/src/database/reference-backfill.ts +141 -0
- package/src/database/repositories/comment.ts +2 -2
- package/src/database/repositories/content.ts +58 -16
- package/src/database/repositories/plugin-storage.ts +1 -1
- package/src/database/repositories/redirect.ts +7 -2
- package/src/database/repositories/relation.ts +622 -210
- package/src/database/repositories/revision.ts +16 -0
- package/src/database/repositories/types.ts +38 -0
- package/src/database/transaction.ts +12 -1
- package/src/database/types.ts +15 -6
- package/src/db/node-sqlite-compat.ts +63 -37
- package/src/emdash-runtime.ts +149 -46
- package/src/import/wxr-taxonomies.ts +163 -88
- package/src/index.ts +20 -0
- package/src/loader.ts +177 -23
- 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 +464 -27
- 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/field-map.ts +115 -0
- package/src/references/resolve.ts +160 -0
- package/src/references/staged.ts +157 -0
- package/src/references/types.ts +16 -0
- package/src/registry/artifact-fetch.ts +45 -271
- 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 +132 -26
- package/src/schema/types.ts +63 -0
- package/src/schema/url-pattern.ts +10 -0
- package/src/schema/zod-generator.ts +78 -2
- package/src/seed/apply.ts +553 -63
- package/src/seed/ownership.ts +15 -0
- package/src/seed/types.ts +36 -2
- package/src/seed/validate.ts +123 -4
- package/src/transfer/analyze/unique-keys.ts +3 -12
- package/src/transfer/analyze/validate.ts +178 -40
- package/src/transfer/analyze/values.ts +116 -2
- package/src/transfer/analyze/write-rules.ts +8 -0
- package/src/transfer/export/readers.ts +12 -8
- package/src/transfer/format/columns.ts +26 -6
- package/src/transfer/format/kinds.ts +21 -5
- package/src/transfer/import/context.ts +8 -1
- package/src/transfer/ops/package-index.ts +1 -1
- package/src/utils/url.ts +58 -3
- package/src/virtual-modules.d.ts +3 -0
- package/dist/action-token-DYwe4Pk0.mjs +0 -26
- package/dist/action-token-DYwe4Pk0.mjs.map +0 -1
- package/dist/activation-LOkDM5WT.mjs +0 -382
- package/dist/activation-LOkDM5WT.mjs.map +0 -1
- package/dist/adapters-B64LbYcB.d.mts +0 -171
- package/dist/adapters-B64LbYcB.d.mts.map +0 -1
- package/dist/allowed-origins-CHB8oZNM.mjs +0 -116
- package/dist/allowed-origins-CHB8oZNM.mjs.map +0 -1
- package/dist/api-CuyNEHZG.mjs +0 -4718
- package/dist/api-CuyNEHZG.mjs.map +0 -1
- package/dist/api-tokens-s4i4aUp_.mjs +0 -166
- package/dist/api-tokens-s4i4aUp_.mjs.map +0 -1
- package/dist/apply-npY1TAhG.mjs +0 -1366
- package/dist/apply-npY1TAhG.mjs.map +0 -1
- package/dist/approvals-CqMfNxak.mjs +0 -460
- package/dist/approvals-CqMfNxak.mjs.map +0 -1
- package/dist/artifact-fetch-DZMOGZ3-.mjs +0 -818
- package/dist/artifact-fetch-DZMOGZ3-.mjs.map +0 -1
- package/dist/astro/routes/api/relations/_id_/translations.d.mts +0 -8
- package/dist/astro/routes/api/relations/_id_/translations.d.mts.map +0 -1
- package/dist/astro/routes/api/relations/_id_/translations.mjs +0 -47
- package/dist/astro/routes/api/relations/_id_/translations.mjs.map +0 -1
- package/dist/audit-RfCugiSB.mjs +0 -127
- package/dist/audit-RfCugiSB.mjs.map +0 -1
- package/dist/authoritative-records-CoJvBXAD.mjs +0 -5172
- package/dist/authoritative-records-CoJvBXAD.mjs.map +0 -1
- package/dist/authorize-seCifOMJ.mjs +0 -49
- package/dist/authorize-seCifOMJ.mjs.map +0 -1
- package/dist/backup-BQRj3afm.mjs +0 -246
- package/dist/backup-BQRj3afm.mjs.map +0 -1
- package/dist/block-type-registry-DUI_3KxT.mjs +0 -6709
- package/dist/block-type-registry-DUI_3KxT.mjs.map +0 -1
- package/dist/block-types-BmZmLmAD.mjs +0 -132
- package/dist/block-types-BmZmLmAD.mjs.map +0 -1
- package/dist/block-values-C_VIPr5t.mjs +0 -175
- package/dist/block-values-C_VIPr5t.mjs.map +0 -1
- package/dist/byline-DYmkXqvo.mjs +0 -909
- package/dist/byline-DYmkXqvo.mjs.map +0 -1
- package/dist/byline-fields-D28AT-Fh.mjs +0 -123
- package/dist/byline-fields-D28AT-Fh.mjs.map +0 -1
- package/dist/byline-registry-gnKscbQX.mjs +0 -406
- package/dist/byline-registry-gnKscbQX.mjs.map +0 -1
- package/dist/bylines-BPwJqoYH.mjs +0 -232
- package/dist/bylines-BPwJqoYH.mjs.map +0 -1
- package/dist/bylines-ukLaYpVZ.mjs +0 -214
- package/dist/bylines-ukLaYpVZ.mjs.map +0 -1
- package/dist/cache-m7UEkRFV.mjs +0 -108
- package/dist/cache-m7UEkRFV.mjs.map +0 -1
- package/dist/canonical-YhEQezjg.mjs +0 -174
- package/dist/canonical-YhEQezjg.mjs.map +0 -1
- package/dist/capture-triggers-kJyl_yyM.mjs +0 -362
- package/dist/capture-triggers-kJyl_yyM.mjs.map +0 -1
- package/dist/challenge-store-ppU6Uv13.mjs +0 -51
- package/dist/challenge-store-ppU6Uv13.mjs.map +0 -1
- package/dist/checksum-B2IINIlN.mjs +0 -162
- package/dist/checksum-B2IINIlN.mjs.map +0 -1
- package/dist/chrome-tags-DApCQSIk.mjs +0 -24
- package/dist/chrome-tags-DApCQSIk.mjs.map +0 -1
- package/dist/chunks-Dms7Uxbt.mjs +0 -25
- package/dist/chunks-Dms7Uxbt.mjs.map +0 -1
- package/dist/collection-deletion-BIm28mo3.mjs +0 -436
- package/dist/collection-deletion-BIm28mo3.mjs.map +0 -1
- package/dist/collection-deletion-processor-Br6rxs3u.mjs +0 -217
- package/dist/collection-deletion-processor-Br6rxs3u.mjs.map +0 -1
- package/dist/collection-slugs-cache-CjGk__zp.mjs +0 -85
- package/dist/collection-slugs-cache-CjGk__zp.mjs.map +0 -1
- package/dist/comment-CrBl22OF.mjs +0 -313
- package/dist/comment-CrBl22OF.mjs.map +0 -1
- package/dist/comment-reaction-JEQ2Fpd8.mjs +0 -85
- package/dist/comment-reaction-JEQ2Fpd8.mjs.map +0 -1
- package/dist/comments-2ah9du9y.mjs +0 -195
- package/dist/comments-2ah9du9y.mjs.map +0 -1
- package/dist/comments-fHZ8ON9O.mjs +0 -99
- package/dist/comments-fHZ8ON9O.mjs.map +0 -1
- package/dist/components-CXbq7CSM.mjs +0 -108
- package/dist/components-CXbq7CSM.mjs.map +0 -1
- package/dist/config-BjEm_3xL.d.mts +0 -6537
- package/dist/config-BjEm_3xL.d.mts.map +0 -1
- package/dist/config-IhybvkIQ.mjs +0 -242
- package/dist/config-IhybvkIQ.mjs.map +0 -1
- package/dist/config-Py43JK9r.d.mts +0 -39
- package/dist/config-Py43JK9r.d.mts.map +0 -1
- package/dist/content-DFaIEDj9.mjs +0 -2281
- package/dist/content-DFaIEDj9.mjs.map +0 -1
- package/dist/content-list-query-Dra4Dalc.d.mts +0 -26
- package/dist/content-list-query-Dra4Dalc.d.mts.map +0 -1
- package/dist/content-policy-DFNw91-d.mjs +0 -46
- package/dist/content-policy-DFNw91-d.mjs.map +0 -1
- package/dist/content-repair-Q8IUrpLL.mjs +0 -442
- package/dist/content-repair-Q8IUrpLL.mjs.map +0 -1
- package/dist/context-BV_7t-Ua.mjs +0 -1921
- package/dist/context-BV_7t-Ua.mjs.map +0 -1
- package/dist/cron-7DCJwPXq.mjs +0 -284
- package/dist/cron-7DCJwPXq.mjs.map +0 -1
- package/dist/dashboard-BP-iJqpd.mjs +0 -151
- package/dist/dashboard-BP-iJqpd.mjs.map +0 -1
- package/dist/default-DQ6vsviu.mjs +0 -81
- package/dist/default-DQ6vsviu.mjs.map +0 -1
- package/dist/deferred-tasks-BPxXUB4x.d.mts +0 -9
- package/dist/deferred-tasks-BPxXUB4x.d.mts.map +0 -1
- package/dist/dev-typegen-CZaPLl3V.mjs +0 -29
- package/dist/dev-typegen-CZaPLl3V.mjs.map +0 -1
- package/dist/device-flow-CRd6DXmW.mjs +0 -466
- package/dist/device-flow-CRd6DXmW.mjs.map +0 -1
- package/dist/digest-BarSh-pN.mjs +0 -194
- package/dist/digest-BarSh-pN.mjs.map +0 -1
- package/dist/direct-executor-D2lNadwo.mjs +0 -104
- package/dist/direct-executor-D2lNadwo.mjs.map +0 -1
- package/dist/dist-BNwANFJR.mjs +0 -810
- package/dist/dist-BNwANFJR.mjs.map +0 -1
- package/dist/email-console-bJn3ctqA.mjs +0 -50
- package/dist/email-console-bJn3ctqA.mjs.map +0 -1
- package/dist/email-locale-CN6WAMx0.mjs +0 -25
- package/dist/email-locale-CN6WAMx0.mjs.map +0 -1
- package/dist/emdash-runtime-CtfnZmPi.mjs +0 -4186
- package/dist/emdash-runtime-CtfnZmPi.mjs.map +0 -1
- package/dist/enrich-Dl3kZ-lP.mjs +0 -194
- package/dist/enrich-Dl3kZ-lP.mjs.map +0 -1
- package/dist/entry-lock-BJYdBfXb.mjs +0 -1097
- package/dist/entry-lock-BJYdBfXb.mjs.map +0 -1
- package/dist/entry-lock-Cf5OoIgN.d.mts +0 -4368
- package/dist/entry-lock-Cf5OoIgN.d.mts.map +0 -1
- package/dist/entry-lock-DHQOxN7R.mjs +0 -163
- package/dist/entry-lock-DHQOxN7R.mjs.map +0 -1
- package/dist/entry-locks-D0foLdjQ.mjs +0 -167
- package/dist/entry-locks-D0foLdjQ.mjs.map +0 -1
- package/dist/error-CfvOHP0M.mjs +0 -90
- package/dist/error-CfvOHP0M.mjs.map +0 -1
- package/dist/errors-BF0_LFhW.mjs +0 -460
- package/dist/errors-BF0_LFhW.mjs.map +0 -1
- package/dist/errors-DgE1zJGG.mjs +0 -120
- package/dist/errors-DgE1zJGG.mjs.map +0 -1
- package/dist/escape-CuaZhZvL.mjs +0 -9
- package/dist/escape-CuaZhZvL.mjs.map +0 -1
- package/dist/fence-CMDXJYc_.mjs +0 -162
- package/dist/fence-CMDXJYc_.mjs.map +0 -1
- package/dist/field-defs-cache-HIgBbqZZ.mjs +0 -77
- package/dist/field-defs-cache-HIgBbqZZ.mjs.map +0 -1
- package/dist/focal-point-Gr34o-4o.mjs +0 -23
- package/dist/focal-point-Gr34o-4o.mjs.map +0 -1
- package/dist/fts-manager-S-K0laoS.mjs +0 -443
- package/dist/fts-manager-S-K0laoS.mjs.map +0 -1
- package/dist/gc-DjKY0Ay1.mjs +0 -75
- package/dist/gc-DjKY0Ay1.mjs.map +0 -1
- package/dist/hash-SDAW6zC-.mjs +0 -37
- package/dist/hash-SDAW6zC-.mjs.map +0 -1
- package/dist/hook-result-B5bXDgS2.d.mts +0 -31
- package/dist/hook-result-B5bXDgS2.d.mts.map +0 -1
- package/dist/hreflang-CbVI4paR.mjs +0 -105
- package/dist/hreflang-CbVI4paR.mjs.map +0 -1
- package/dist/hreflang-D5uNnsGJ.d.mts +0 -50
- package/dist/hreflang-D5uNnsGJ.d.mts.map +0 -1
- package/dist/http-route-dispatch-BitqzwMy.mjs +0 -339
- package/dist/http-route-dispatch-BitqzwMy.mjs.map +0 -1
- package/dist/identity-Be5kzutJ.mjs +0 -35
- package/dist/identity-Be5kzutJ.mjs.map +0 -1
- package/dist/import-YzfKCaco.mjs +0 -2020
- package/dist/import-YzfKCaco.mjs.map +0 -1
- package/dist/index-D-hdtLe8.d.mts +0 -623
- package/dist/index-D-hdtLe8.d.mts.map +0 -1
- package/dist/install-finalization-DfM1fj5x.mjs +0 -58
- package/dist/install-finalization-DfM1fj5x.mjs.map +0 -1
- package/dist/keys-yxLm5l35.mjs +0 -61
- package/dist/keys-yxLm5l35.mjs.map +0 -1
- package/dist/kinds-CRu_T5T5.mjs +0 -961
- package/dist/kinds-CRu_T5T5.mjs.map +0 -1
- package/dist/lifecycle-BzeGPeQ-.mjs +0 -25
- package/dist/lifecycle-BzeGPeQ-.mjs.map +0 -1
- package/dist/load-XgJiE6_3.mjs +0 -28
- package/dist/load-XgJiE6_3.mjs.map +0 -1
- package/dist/loader-BzqeR1ZN.mjs +0 -1086
- package/dist/loader-BzqeR1ZN.mjs.map +0 -1
- package/dist/loops-BQSzv5Zn.mjs +0 -203
- package/dist/loops-BQSzv5Zn.mjs.map +0 -1
- package/dist/manifest-builder-BmSAOOEF.mjs +0 -189
- package/dist/manifest-builder-BmSAOOEF.mjs.map +0 -1
- package/dist/manifest-schema-CY3zng_M.mjs +0 -492
- package/dist/manifest-schema-CY3zng_M.mjs.map +0 -1
- package/dist/media-CPXTbb1R.mjs +0 -373
- package/dist/media-CPXTbb1R.mjs.map +0 -1
- package/dist/media-JXRWDhw3.mjs +0 -294
- package/dist/media-JXRWDhw3.mjs.map +0 -1
- package/dist/media-Pu1L6xir.mjs +0 -408
- package/dist/media-Pu1L6xir.mjs.map +0 -1
- package/dist/media-allowlist-BSoa9Vvm.mjs +0 -44
- package/dist/media-allowlist-BSoa9Vvm.mjs.map +0 -1
- package/dist/media-folders-BE0oo2eX.mjs +0 -210
- package/dist/media-folders-BE0oo2eX.mjs.map +0 -1
- package/dist/media-url-jArBpzIG.mjs +0 -43
- package/dist/media-url-jArBpzIG.mjs.map +0 -1
- package/dist/media-usage-De-zeR9E.mjs +0 -1629
- package/dist/media-usage-De-zeR9E.mjs.map +0 -1
- package/dist/media-usage-activation-HKp7zk7W.mjs +0 -78
- package/dist/media-usage-activation-HKp7zk7W.mjs.map +0 -1
- package/dist/media-usage-work-C2OZLCAd.mjs +0 -586
- package/dist/media-usage-work-C2OZLCAd.mjs.map +0 -1
- package/dist/media-usage-work-DwUNbgvS.mjs +0 -152
- package/dist/media-usage-work-DwUNbgvS.mjs.map +0 -1
- package/dist/menus-BM7BPLOb.mjs +0 -139
- package/dist/menus-BM7BPLOb.mjs.map +0 -1
- package/dist/menus-Cm68rsAq.mjs +0 -3608
- package/dist/menus-Cm68rsAq.mjs.map +0 -1
- package/dist/menus-ITeAbcIF.mjs +0 -753
- package/dist/menus-ITeAbcIF.mjs.map +0 -1
- package/dist/mime-ChLqYwDk.mjs +0 -36
- package/dist/mime-ChLqYwDk.mjs.map +0 -1
- package/dist/mode-CCuKXUci.mjs +0 -23
- package/dist/mode-CCuKXUci.mjs.map +0 -1
- package/dist/node-sqlite-compat-CONMsl-x.mjs +0 -46
- package/dist/node-sqlite-compat-CONMsl-x.mjs.map +0 -1
- package/dist/normalize-CO2P8-iE.mjs +0 -191
- package/dist/normalize-CO2P8-iE.mjs.map +0 -1
- package/dist/oauth-authorization-DlMIL5_h.mjs +0 -274
- package/dist/oauth-authorization-DlMIL5_h.mjs.map +0 -1
- package/dist/oauth-clients-Djq9r_KP.mjs +0 -266
- package/dist/oauth-clients-Djq9r_KP.mjs.map +0 -1
- package/dist/oauth-state-store-BbjnZXNC.mjs +0 -50
- package/dist/oauth-state-store-BbjnZXNC.mjs.map +0 -1
- package/dist/oauth-user-lookup-vue9a64A.mjs +0 -26
- package/dist/oauth-user-lookup-vue9a64A.mjs.map +0 -1
- package/dist/object-cache-CqWNY5uP.mjs +0 -582
- package/dist/object-cache-CqWNY5uP.mjs.map +0 -1
- package/dist/options-SQCHQCPH.d.mts +0 -81
- package/dist/options-SQCHQCPH.d.mts.map +0 -1
- package/dist/parse-CVgO-Qai.d.mts +0 -168
- package/dist/parse-CVgO-Qai.d.mts.map +0 -1
- package/dist/parse-DY6OD1j_.mjs +0 -81
- package/dist/parse-DY6OD1j_.mjs.map +0 -1
- package/dist/passkey-config-X_H8128a.mjs +0 -46
- package/dist/passkey-config-X_H8128a.mjs.map +0 -1
- package/dist/paths-JxokKIbr.mjs +0 -77
- package/dist/paths-JxokKIbr.mjs.map +0 -1
- package/dist/patterns-BhAvqO0S.mjs +0 -145
- package/dist/patterns-BhAvqO0S.mjs.map +0 -1
- package/dist/placeholder-MSEd8gty.d.mts +0 -306
- package/dist/placeholder-MSEd8gty.d.mts.map +0 -1
- package/dist/plan-xjcWrAah.mjs +0 -135
- package/dist/plan-xjcWrAah.mjs.map +0 -1
- package/dist/plugins-DUXUt8B9.mjs +0 -277
- package/dist/plugins-DUXUt8B9.mjs.map +0 -1
- package/dist/policy-CUvwAARc.mjs +0 -45
- package/dist/policy-CUvwAARc.mjs.map +0 -1
- package/dist/portable-text-5O_ZGUjB.mjs +0 -307
- package/dist/portable-text-5O_ZGUjB.mjs.map +0 -1
- package/dist/preview-CIUcPYr6.mjs +0 -107
- package/dist/preview-CIUcPYr6.mjs.map +0 -1
- package/dist/protocol-B97DZaFr.d.mts +0 -61
- package/dist/protocol-B97DZaFr.d.mts.map +0 -1
- package/dist/public-submission-BFBUrqst.mjs +0 -250
- package/dist/public-submission-BFBUrqst.mjs.map +0 -1
- package/dist/public-url-Bn7U0D7-.mjs +0 -101
- package/dist/public-url-Bn7U0D7-.mjs.map +0 -1
- package/dist/query-B48peoRT.mjs +0 -890
- package/dist/query-B48peoRT.mjs.map +0 -1
- package/dist/query-C4IH0uhR.mjs +0 -41
- package/dist/query-C4IH0uhR.mjs.map +0 -1
- package/dist/rate-limit-BZ6nybgc.mjs +0 -120
- package/dist/rate-limit-BZ6nybgc.mjs.map +0 -1
- package/dist/receipt-B4wJj5Jq.mjs +0 -43
- package/dist/receipt-B4wJj5Jq.mjs.map +0 -1
- package/dist/redirect-B29UjdUn.mjs +0 -411
- package/dist/redirect-B29UjdUn.mjs.map +0 -1
- package/dist/redirect-Cd1E7VUt.mjs +0 -17
- package/dist/redirect-Cd1E7VUt.mjs.map +0 -1
- package/dist/redirects-Ca2MPfEG.mjs +0 -446
- package/dist/redirects-Ca2MPfEG.mjs.map +0 -1
- package/dist/redirects-Cv9apQKj.mjs +0 -148
- package/dist/redirects-Cv9apQKj.mjs.map +0 -1
- package/dist/relation-M4NUCb0b.mjs +0 -334
- package/dist/relation-M4NUCb0b.mjs.map +0 -1
- package/dist/relations-CCif47Oq.mjs +0 -403
- package/dist/relations-CCif47Oq.mjs.map +0 -1
- package/dist/relations-CK9CYUyr.mjs +0 -310
- package/dist/relations-CK9CYUyr.mjs.map +0 -1
- package/dist/request-cache-DzLYKm_x.mjs +0 -104
- package/dist/request-cache-DzLYKm_x.mjs.map +0 -1
- package/dist/request-meta-sZXt3sRo.mjs +0 -141
- package/dist/request-meta-sZXt3sRo.mjs.map +0 -1
- package/dist/resolve-2WbQsCvT.mjs +0 -199
- package/dist/resolve-2WbQsCvT.mjs.map +0 -1
- package/dist/route-wire--1hLuACz.mjs +0 -197
- package/dist/route-wire--1hLuACz.mjs.map +0 -1
- package/dist/routes-vrR95WR6.mjs +0 -272
- package/dist/routes-vrR95WR6.mjs.map +0 -1
- package/dist/runner-1y4J9fJB.mjs +0 -5742
- package/dist/runner-1y4J9fJB.mjs.map +0 -1
- package/dist/runner-D5_LzKXI.d.mts +0 -68
- package/dist/runner-D5_LzKXI.d.mts.map +0 -1
- package/dist/schema-BABiRdsH.mjs +0 -13
- package/dist/schema-BABiRdsH.mjs.map +0 -1
- package/dist/schema-Du3MzCG0.mjs +0 -446
- package/dist/schema-Du3MzCG0.mjs.map +0 -1
- package/dist/scopes-Dbk-ElhT.mjs +0 -34
- package/dist/scopes-Dbk-ElhT.mjs.map +0 -1
- package/dist/search-Bt1PL1jf.mjs +0 -448
- package/dist/search-Bt1PL1jf.mjs.map +0 -1
- package/dist/sections-Ddptx_o9.mjs +0 -346
- package/dist/sections-Ddptx_o9.mjs.map +0 -1
- package/dist/seo-CZT2oLtT.mjs +0 -114
- package/dist/seo-CZT2oLtT.mjs.map +0 -1
- package/dist/seo-D5w3-Azy.mjs +0 -133
- package/dist/seo-D5w3-Azy.mjs.map +0 -1
- package/dist/service-DuykXPyW.mjs +0 -150
- package/dist/service-DuykXPyW.mjs.map +0 -1
- package/dist/session-user-BhaVp8w0.mjs +0 -51
- package/dist/session-user-BhaVp8w0.mjs.map +0 -1
- package/dist/settings-B4vDl1fK.mjs +0 -439
- package/dist/settings-B4vDl1fK.mjs.map +0 -1
- package/dist/settings-DYidIB26.mjs +0 -61
- package/dist/settings-DYidIB26.mjs.map +0 -1
- package/dist/settings-Dyj6v8C4.mjs +0 -51
- package/dist/settings-Dyj6v8C4.mjs.map +0 -1
- package/dist/setup-complete-bOogcHWG.mjs +0 -26
- package/dist/setup-complete-bOogcHWG.mjs.map +0 -1
- package/dist/setup-nonce-0EGuKM4s.mjs +0 -25
- package/dist/setup-nonce-0EGuKM4s.mjs.map +0 -1
- package/dist/site-settings-DOgRUoFX.mjs +0 -50
- package/dist/site-settings-DOgRUoFX.mjs.map +0 -1
- package/dist/site-url-BU_bbxwj.mjs +0 -16
- package/dist/site-url-BU_bbxwj.mjs.map +0 -1
- package/dist/snapshot-PawoX-WG.mjs +0 -414
- package/dist/snapshot-PawoX-WG.mjs.map +0 -1
- package/dist/ssrf-CJUnJymJ.mjs +0 -406
- package/dist/ssrf-CJUnJymJ.mjs.map +0 -1
- package/dist/stage-DgrBz_du.mjs +0 -662
- package/dist/stage-DgrBz_du.mjs.map +0 -1
- package/dist/state-DDiPySSG.mjs +0 -153
- package/dist/state-DDiPySSG.mjs.map +0 -1
- package/dist/status-DZKIG4a9.mjs +0 -30
- package/dist/status-DZKIG4a9.mjs.map +0 -1
- package/dist/storage-query-FXJH5pI8.d.mts +0 -1581
- package/dist/storage-query-FXJH5pI8.d.mts.map +0 -1
- package/dist/tar-_1AgTYFu.mjs +0 -449
- package/dist/tar-_1AgTYFu.mjs.map +0 -1
- package/dist/target-_7pn2Gbg.mjs +0 -27
- package/dist/target-_7pn2Gbg.mjs.map +0 -1
- package/dist/taxonomies-C1IwNe8Q.mjs +0 -697
- package/dist/taxonomies-C1IwNe8Q.mjs.map +0 -1
- package/dist/taxonomies-C_XMoRcX.mjs +0 -939
- package/dist/taxonomies-C_XMoRcX.mjs.map +0 -1
- package/dist/taxonomy-C3Fu1YeH.mjs +0 -525
- package/dist/taxonomy-C3Fu1YeH.mjs.map +0 -1
- package/dist/tokens-u78jETkX.mjs +0 -171
- package/dist/tokens-u78jETkX.mjs.map +0 -1
- package/dist/transaction-BcJO4Tmc.mjs +0 -29
- package/dist/transaction-BcJO4Tmc.mjs.map +0 -1
- package/dist/transfer-DIGvR9Af.mjs +0 -166
- package/dist/transfer-DIGvR9Af.mjs.map +0 -1
- package/dist/transfer-DgeCvHnj.mjs +0 -8675
- package/dist/transfer-DgeCvHnj.mjs.map +0 -1
- package/dist/transfer-download-Pml7RMio.mjs +0 -33
- package/dist/transfer-download-Pml7RMio.mjs.map +0 -1
- package/dist/transformations-9gfpwY65.mjs +0 -196
- package/dist/transformations-9gfpwY65.mjs.map +0 -1
- package/dist/transport-BIfH7_hx.d.mts +0 -42
- package/dist/transport-BIfH7_hx.d.mts.map +0 -1
- package/dist/transport-DKWIq53q.mjs +0 -136
- package/dist/transport-DKWIq53q.mjs.map +0 -1
- package/dist/trusted-proxy-tKiVtyTD.mjs +0 -51
- package/dist/trusted-proxy-tKiVtyTD.mjs.map +0 -1
- package/dist/turnstile-DpsoyOfg.mjs +0 -53
- package/dist/turnstile-DpsoyOfg.mjs.map +0 -1
- package/dist/types-B4sUC2p1.d.mts +0 -198
- package/dist/types-B4sUC2p1.d.mts.map +0 -1
- package/dist/types-B7Lmsh1E.d.mts +0 -887
- package/dist/types-B7Lmsh1E.d.mts.map +0 -1
- package/dist/types-BZakh7Ym.mjs +0 -22
- package/dist/types-BZakh7Ym.mjs.map +0 -1
- package/dist/types-B_CppEmv.d.mts +0 -264
- package/dist/types-B_CppEmv.d.mts.map +0 -1
- package/dist/types-BcrBrE6-.mjs +0 -159
- package/dist/types-BcrBrE6-.mjs.map +0 -1
- package/dist/types-BkUg2yHx.mjs +0 -92
- package/dist/types-BkUg2yHx.mjs.map +0 -1
- package/dist/types-CAZgq9fO.d.mts +0 -124
- package/dist/types-CAZgq9fO.d.mts.map +0 -1
- package/dist/types-Cd-O03VG.d.mts +0 -363
- package/dist/types-Cd-O03VG.d.mts.map +0 -1
- package/dist/types-Cr-Kg-3D.d.mts +0 -1641
- package/dist/types-Cr-Kg-3D.d.mts.map +0 -1
- package/dist/types-D2fvWd1i.d.mts +0 -359
- package/dist/types-D2fvWd1i.d.mts.map +0 -1
- package/dist/types-D7HUsguf.mjs +0 -77
- package/dist/types-D7HUsguf.mjs.map +0 -1
- package/dist/types-DA1Te3Oy.d.mts +0 -198
- package/dist/types-DA1Te3Oy.d.mts.map +0 -1
- package/dist/types-DhV6Q5bP.mjs +0 -18
- package/dist/types-DhV6Q5bP.mjs.map +0 -1
- package/dist/types-DnnVSl6Y.d.mts +0 -85
- package/dist/types-DnnVSl6Y.d.mts.map +0 -1
- package/dist/types-VT4-BugW.mjs +0 -16
- package/dist/types-VT4-BugW.mjs.map +0 -1
- package/dist/upload-attempts-B68ZGNu9.mjs +0 -32
- package/dist/upload-attempts-B68ZGNu9.mjs.map +0 -1
- package/dist/url-pattern-CCeZMGOh.mjs +0 -33
- package/dist/url-pattern-CCeZMGOh.mjs.map +0 -1
- package/dist/user-DDSL-sGw.mjs +0 -171
- package/dist/user-DDSL-sGw.mjs.map +0 -1
- package/dist/utils-DdhmO9w9.mjs +0 -439
- package/dist/utils-DdhmO9w9.mjs.map +0 -1
- package/dist/validate-CHosPEhs.mjs +0 -453
- package/dist/validate-CHosPEhs.mjs.map +0 -1
- package/dist/validate-CM79QXYE.d.mts +0 -432
- package/dist/validate-CM79QXYE.d.mts.map +0 -1
- package/dist/validation-BFecQczG.mjs +0 -218
- package/dist/validation-BFecQczG.mjs.map +0 -1
- package/dist/version-BRZXVifl.mjs +0 -9
- package/dist/version-BRZXVifl.mjs.map +0 -1
- package/dist/version-DXsxRrob.mjs +0 -7
- package/dist/version-DXsxRrob.mjs.map +0 -1
- package/dist/widgets-WdV72brA.mjs +0 -126
- package/dist/widgets-WdV72brA.mjs.map +0 -1
- package/dist/wxr-taxonomies-BHTdqkmZ.d.mts +0 -34
- package/dist/wxr-taxonomies-BHTdqkmZ.d.mts.map +0 -1
- package/dist/wxr-taxonomies-DP6ESgMN.mjs +0 -372
- package/dist/wxr-taxonomies-DP6ESgMN.mjs.map +0 -1
- package/dist/zod-generator-D6uE4WiS.mjs +0 -389
- package/dist/zod-generator-D6uE4WiS.mjs.map +0 -1
- package/src/astro/routes/api/relations/[id]/translations.ts +0 -33
- package/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-CE1ECIg0.mjs → api-tokens-BLz2MtQs.mjs} +0 -0
- /package/dist/{ssrf-DpBH7aOt.mjs → ssrf-tA45vIPX.mjs} +0 -0
|
@@ -2,32 +2,33 @@ import "../../../../../../dialect-helpers-7_IqPdh9.mjs";
|
|
|
2
2
|
import "../../../../../../config-CvmjJcVw.mjs";
|
|
3
3
|
import "../../../../../../after-PcEvMY_6.mjs";
|
|
4
4
|
import "../../../../../../base64-DvnNgP7e.mjs";
|
|
5
|
-
import "../../../../../../object-cache-
|
|
5
|
+
import "../../../../../../object-cache-Bo6DGaC9.mjs";
|
|
6
6
|
import "../../../../../../slugify-T5GHH42D.mjs";
|
|
7
|
-
import "../../../../../../
|
|
8
|
-
import "../../../../../../
|
|
9
|
-
import "../../../../../../
|
|
10
|
-
import "../../../../../../
|
|
11
|
-
import
|
|
12
|
-
import "../../../../../../
|
|
13
|
-
import "../../../../../../
|
|
14
|
-
import "../../../../../../
|
|
15
|
-
import "../../../../../../
|
|
16
|
-
import "../../../../../../
|
|
17
|
-
import "../../../../../../
|
|
18
|
-
import "../../../../../../
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
21
|
-
import { i as
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import "../../../../../../
|
|
25
|
-
import "../../../../../../
|
|
26
|
-
import "../../../../../../
|
|
27
|
-
import "../../../../../../
|
|
28
|
-
import "../../../../../../
|
|
7
|
+
import "../../../../../../request-cache-C4CIo5ad.mjs";
|
|
8
|
+
import "../../../../../../url-Dn3IStq8.mjs";
|
|
9
|
+
import "../../../../../../types-j6MBDjlZ.mjs";
|
|
10
|
+
import "../../../../../../taxonomy-BesdHIwi.mjs";
|
|
11
|
+
import "../../../../../../resolve-D-kqyKns.mjs";
|
|
12
|
+
import { r as taxonomyTag } from "../../../../../../chrome-tags-CKELm-bo.mjs";
|
|
13
|
+
import "../../../../../../loader-B_bcoE1h.mjs";
|
|
14
|
+
import "../../../../../../collection-slugs-cache-BNRAPNiu.mjs";
|
|
15
|
+
import "../../../../../../taxonomies-DWv-OYT0.mjs";
|
|
16
|
+
import "../../../../../../errors-CjXd1LgH.mjs";
|
|
17
|
+
import "../../../../../../errors-CNvATh_7.mjs";
|
|
18
|
+
import "../../../../../../settings-B0zQj_Tj.mjs";
|
|
19
|
+
import "../../../../../../site-settings-AYFvhwQn.mjs";
|
|
20
|
+
import { c as handleTermDelete, l as handleTermGet, p as handleTermUpdate } from "../../../../../../taxonomies-DQGomz9p.mjs";
|
|
21
|
+
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../error-CEdm_AWU.mjs";
|
|
22
|
+
import { i as parseQuery, n as parseBody, t as isParseError } from "../../../../../../parse-Gt2l4Sld.mjs";
|
|
23
|
+
import { b as localeFilterQuery } from "../../../../../../redirects-D4EWeXAo.mjs";
|
|
24
|
+
import { Q as updateTermBody } from "../../../../../../entry-lock-PP1JCXBB.mjs";
|
|
25
|
+
import "../../../../../../media-D1z_jisb.mjs";
|
|
26
|
+
import "../../../../../../comments-BRtp992B.mjs";
|
|
27
|
+
import "../../../../../../byline-fields-DHJs0Mja.mjs";
|
|
28
|
+
import "../../../../../../menus-BQKqf0Up.mjs";
|
|
29
|
+
import "../../../../../../status-D39Fpy8R.mjs";
|
|
29
30
|
import "../../../../../../api/schemas/index.mjs";
|
|
30
|
-
import { i as requirePerm } from "../../../../../../authorize-
|
|
31
|
+
import { i as requirePerm } from "../../../../../../authorize-soZXK7U0.mjs";
|
|
31
32
|
|
|
32
33
|
//#region src/astro/routes/api/taxonomies/[name]/terms/[slug].ts
|
|
33
34
|
const prerender = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_slug_.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/taxonomies/[name]/terms/[slug].ts"],"sourcesContent":["/**\n * Single term endpoint\n *\n * GET /_emdash/api/taxonomies/:name/terms/:slug[?locale=xx]\n * PUT /_emdash/api/taxonomies/:name/terms/:slug[?locale=xx]\n * DELETE /_emdash/api/taxonomies/:name/terms/:slug[?locale=xx]\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleTermDelete, handleTermGet, handleTermUpdate } from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseBody, parseQuery } from \"#api/parse.js\";\nimport { localeFilterQuery, updateTermBody } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\n\nexport const prerender = false;\n\n/**\n * Get a single term\n */\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name, slug } = params;\n\tif (!name || !slug) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name and slug required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTermGet(emdash.db, name, slug, { locale: query.locale });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get term\", \"TERM_GET_ERROR\");\n\t}\n};\n\n/**\n * Update a term\n */\nexport const PUT: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name, slug } = params;\n\tif (!name || !slug) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name and slug required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst body = await parseBody(request, updateTermBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTermUpdate(emdash.db, name, slug, body, { locale: query.locale });\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to update term\", \"TERM_UPDATE_ERROR\");\n\t}\n};\n\n/**\n * Delete a term\n */\nexport const DELETE: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name, slug } = params;\n\tif (!name || !slug) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name and slug required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTermDelete(emdash.db, name, slug, { locale: query.locale });\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to delete term\", \"TERM_DELETE_ERROR\");\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"_slug_.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/taxonomies/[name]/terms/[slug].ts"],"sourcesContent":["/**\n * Single term endpoint\n *\n * GET /_emdash/api/taxonomies/:name/terms/:slug[?locale=xx]\n * PUT /_emdash/api/taxonomies/:name/terms/:slug[?locale=xx]\n * DELETE /_emdash/api/taxonomies/:name/terms/:slug[?locale=xx]\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleTermDelete, handleTermGet, handleTermUpdate } from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseBody, parseQuery } from \"#api/parse.js\";\nimport { localeFilterQuery, updateTermBody } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\n\nexport const prerender = false;\n\n/**\n * Get a single term\n */\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name, slug } = params;\n\tif (!name || !slug) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name and slug required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTermGet(emdash.db, name, slug, { locale: query.locale });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get term\", \"TERM_GET_ERROR\");\n\t}\n};\n\n/**\n * Update a term\n */\nexport const PUT: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name, slug } = params;\n\tif (!name || !slug) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name and slug required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst body = await parseBody(request, updateTermBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTermUpdate(emdash.db, name, slug, body, { locale: query.locale });\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to update term\", \"TERM_UPDATE_ERROR\");\n\t}\n};\n\n/**\n * Delete a term\n */\nexport const DELETE: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name, slug } = params;\n\tif (!name || !slug) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name and slug required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTermDelete(emdash.db, name, slug, { locale: query.locale });\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to delete term\", \"TERM_DELETE_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAa,YAAY;;;;AAKzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,MAAM,SAAS;AACvB,KAAI,CAAC,QAAQ,CAAC,KAAM,QAAO,SAAS,oBAAoB,mCAAmC,IAAI;CAE/F,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,kBAAkB;AACnD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,kBAAkB;AACjE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;AAEH,SAAO,aADQ,MAAM,cAAc,OAAO,IAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,QAAQ,CAAC,CACxD;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,sBAAsB,iBAAiB;;;;;;AAOnE,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;CAC1E,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,MAAM,SAAS;AACvB,KAAI,CAAC,QAAQ,CAAC,KAAM,QAAO,SAAS,oBAAoB,mCAAmC,IAAI;CAE/F,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,kBAAkB;AACjE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,eAAe;AACrD,MAAI,aAAa,KAAK,CAAE,QAAO;EAE/B,MAAM,SAAS,MAAM,iBAAiB,OAAO,IAAI,MAAM,MAAM,MAAM,EAAE,QAAQ,MAAM,QAAQ,CAAC;AAC5F,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,OAAO,QAAS,OAAM,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;AACzE,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,yBAAyB,oBAAoB;;;;;;AAOzE,MAAa,SAAmB,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;CAC7E,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,MAAM,SAAS;AACvB,KAAI,CAAC,QAAQ,CAAC,KAAM,QAAO,SAAS,oBAAoB,mCAAmC,IAAI;CAE/F,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,kBAAkB;AACjE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;EACH,MAAM,SAAS,MAAM,iBAAiB,OAAO,IAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,QAAQ,CAAC;AACtF,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,OAAO,QAAS,OAAM,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;AACzE,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,yBAAyB,oBAAoB"}
|
|
@@ -2,32 +2,33 @@ import "../../../../../../dialect-helpers-7_IqPdh9.mjs";
|
|
|
2
2
|
import "../../../../../../config-CvmjJcVw.mjs";
|
|
3
3
|
import "../../../../../../after-PcEvMY_6.mjs";
|
|
4
4
|
import "../../../../../../base64-DvnNgP7e.mjs";
|
|
5
|
-
import "../../../../../../object-cache-
|
|
5
|
+
import "../../../../../../object-cache-Bo6DGaC9.mjs";
|
|
6
6
|
import "../../../../../../slugify-T5GHH42D.mjs";
|
|
7
|
-
import "../../../../../../
|
|
8
|
-
import "../../../../../../
|
|
9
|
-
import "../../../../../../
|
|
10
|
-
import "../../../../../../
|
|
11
|
-
import
|
|
12
|
-
import "../../../../../../
|
|
13
|
-
import "../../../../../../
|
|
14
|
-
import "../../../../../../
|
|
15
|
-
import "../../../../../../
|
|
16
|
-
import "../../../../../../
|
|
17
|
-
import "../../../../../../
|
|
18
|
-
import "../../../../../../
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
21
|
-
import { i as
|
|
22
|
-
import "../../../../../../
|
|
23
|
-
import
|
|
24
|
-
import "../../../../../../
|
|
25
|
-
import "../../../../../../
|
|
26
|
-
import "../../../../../../
|
|
27
|
-
import "../../../../../../
|
|
28
|
-
import "../../../../../../
|
|
7
|
+
import "../../../../../../request-cache-C4CIo5ad.mjs";
|
|
8
|
+
import "../../../../../../url-Dn3IStq8.mjs";
|
|
9
|
+
import "../../../../../../types-j6MBDjlZ.mjs";
|
|
10
|
+
import "../../../../../../taxonomy-BesdHIwi.mjs";
|
|
11
|
+
import "../../../../../../resolve-D-kqyKns.mjs";
|
|
12
|
+
import { r as taxonomyTag } from "../../../../../../chrome-tags-CKELm-bo.mjs";
|
|
13
|
+
import "../../../../../../loader-B_bcoE1h.mjs";
|
|
14
|
+
import "../../../../../../collection-slugs-cache-BNRAPNiu.mjs";
|
|
15
|
+
import "../../../../../../taxonomies-DWv-OYT0.mjs";
|
|
16
|
+
import "../../../../../../errors-CjXd1LgH.mjs";
|
|
17
|
+
import "../../../../../../errors-CNvATh_7.mjs";
|
|
18
|
+
import "../../../../../../settings-B0zQj_Tj.mjs";
|
|
19
|
+
import "../../../../../../site-settings-AYFvhwQn.mjs";
|
|
20
|
+
import { s as handleTermCreate, u as handleTermList } from "../../../../../../taxonomies-DQGomz9p.mjs";
|
|
21
|
+
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../error-CEdm_AWU.mjs";
|
|
22
|
+
import { i as parseQuery, n as parseBody, t as isParseError } from "../../../../../../parse-Gt2l4Sld.mjs";
|
|
23
|
+
import "../../../../../../redirects-D4EWeXAo.mjs";
|
|
24
|
+
import { L as createTermBody, W as termListQuery } from "../../../../../../entry-lock-PP1JCXBB.mjs";
|
|
25
|
+
import "../../../../../../media-D1z_jisb.mjs";
|
|
26
|
+
import "../../../../../../comments-BRtp992B.mjs";
|
|
27
|
+
import "../../../../../../byline-fields-DHJs0Mja.mjs";
|
|
28
|
+
import "../../../../../../menus-BQKqf0Up.mjs";
|
|
29
|
+
import "../../../../../../status-D39Fpy8R.mjs";
|
|
29
30
|
import "../../../../../../api/schemas/index.mjs";
|
|
30
|
-
import { i as requirePerm } from "../../../../../../authorize-
|
|
31
|
+
import { i as requirePerm } from "../../../../../../authorize-soZXK7U0.mjs";
|
|
31
32
|
|
|
32
33
|
//#region src/astro/routes/api/taxonomies/[name]/terms/index.ts
|
|
33
34
|
const prerender = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/taxonomies/[name]/terms/index.ts"],"sourcesContent":["/**\n * Taxonomy terms list and create endpoint\n *\n * GET /_emdash/api/taxonomies/:name/terms[?locale=xx] - List terms (tree for hierarchical)\n * POST /_emdash/api/taxonomies/:name/terms - Create a new term (body may include locale & translationOf)\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleTermCreate, handleTermList } from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseBody, parseQuery } from \"#api/parse.js\";\nimport { createTermBody, termListQuery } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\n\nexport const prerender = false;\n\n/**\n * List all terms for a taxonomy\n */\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), termListQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTermList(emdash.db, name, {\n\t\t\tlocale: query.locale,\n\t\t\tincludeCounts: query.includeCounts,\n\t\t\tresolveFallback: query.resolveFallback,\n\t\t});\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to list terms\", \"TERM_LIST_ERROR\");\n\t}\n};\n\n/**\n * Create a new term\n */\nexport const POST: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst body = await parseBody(request, createTermBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTermCreate(emdash.db, name, body);\n\t\tif (!result.success) return unwrapResult(result, 201);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result, 201);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to create term\", \"TERM_CREATE_ERROR\");\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/taxonomies/[name]/terms/index.ts"],"sourcesContent":["/**\n * Taxonomy terms list and create endpoint\n *\n * GET /_emdash/api/taxonomies/:name/terms[?locale=xx] - List terms (tree for hierarchical)\n * POST /_emdash/api/taxonomies/:name/terms - Create a new term (body may include locale & translationOf)\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleTermCreate, handleTermList } from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseBody, parseQuery } from \"#api/parse.js\";\nimport { createTermBody, termListQuery } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\n\nexport const prerender = false;\n\n/**\n * List all terms for a taxonomy\n */\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), termListQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTermList(emdash.db, name, {\n\t\t\tlocale: query.locale,\n\t\t\tincludeCounts: query.includeCounts,\n\t\t\tresolveFallback: query.resolveFallback,\n\t\t});\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to list terms\", \"TERM_LIST_ERROR\");\n\t}\n};\n\n/**\n * Create a new term\n */\nexport const POST: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst body = await parseBody(request, createTermBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTermCreate(emdash.db, name, body);\n\t\tif (!result.success) return unwrapResult(result, 201);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result, 201);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to create term\", \"TERM_CREATE_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,YAAY;;;;AAKzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,SAAS;AACjB,KAAI,CAAC,KAAM,QAAO,SAAS,oBAAoB,0BAA0B,IAAI;CAE7E,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,kBAAkB;AACnD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,cAAc;AAC7D,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;AAMH,SAAO,aALQ,MAAM,eAAe,OAAO,IAAI,MAAM;GACpD,QAAQ,MAAM;GACd,eAAe,MAAM;GACrB,iBAAiB,MAAM;GACvB,CAAC,CACyB;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,wBAAwB,kBAAkB;;;;;;AAOtE,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;CAC3E,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,SAAS;AACjB,KAAI,CAAC,KAAM,QAAO,SAAS,oBAAoB,0BAA0B,IAAI;CAE7E,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;AAEnB,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,eAAe;AACrD,MAAI,aAAa,KAAK,CAAE,QAAO;EAE/B,MAAM,SAAS,MAAM,iBAAiB,OAAO,IAAI,MAAM,KAAK;AAC5D,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,QAAQ,IAAI;AACrD,MAAI,OAAO,QAAS,OAAM,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;AACzE,SAAO,aAAa,QAAQ,IAAI;UACxB,OAAO;AACf,SAAO,YAAY,OAAO,yBAAyB,oBAAoB"}
|
|
@@ -2,31 +2,32 @@ import "../../../../../dialect-helpers-7_IqPdh9.mjs";
|
|
|
2
2
|
import "../../../../../config-CvmjJcVw.mjs";
|
|
3
3
|
import "../../../../../after-PcEvMY_6.mjs";
|
|
4
4
|
import "../../../../../base64-DvnNgP7e.mjs";
|
|
5
|
-
import "../../../../../object-cache-
|
|
5
|
+
import "../../../../../object-cache-Bo6DGaC9.mjs";
|
|
6
6
|
import "../../../../../slugify-T5GHH42D.mjs";
|
|
7
|
-
import "../../../../../
|
|
8
|
-
import "../../../../../
|
|
9
|
-
import "../../../../../
|
|
10
|
-
import "../../../../../
|
|
11
|
-
import "../../../../../
|
|
12
|
-
import "../../../../../
|
|
13
|
-
import "../../../../../
|
|
14
|
-
import "../../../../../
|
|
15
|
-
import "../../../../../
|
|
16
|
-
import "../../../../../
|
|
17
|
-
import "../../../../../
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import { i as
|
|
21
|
-
import {
|
|
22
|
-
import "../../../../../
|
|
23
|
-
import "../../../../../
|
|
24
|
-
import "../../../../../
|
|
25
|
-
import "../../../../../
|
|
26
|
-
import "../../../../../
|
|
27
|
-
import "../../../../../
|
|
7
|
+
import "../../../../../request-cache-C4CIo5ad.mjs";
|
|
8
|
+
import "../../../../../url-Dn3IStq8.mjs";
|
|
9
|
+
import "../../../../../types-j6MBDjlZ.mjs";
|
|
10
|
+
import "../../../../../taxonomy-BesdHIwi.mjs";
|
|
11
|
+
import "../../../../../resolve-D-kqyKns.mjs";
|
|
12
|
+
import "../../../../../loader-B_bcoE1h.mjs";
|
|
13
|
+
import "../../../../../collection-slugs-cache-BNRAPNiu.mjs";
|
|
14
|
+
import "../../../../../taxonomies-DWv-OYT0.mjs";
|
|
15
|
+
import "../../../../../errors-CjXd1LgH.mjs";
|
|
16
|
+
import "../../../../../errors-CNvATh_7.mjs";
|
|
17
|
+
import "../../../../../settings-B0zQj_Tj.mjs";
|
|
18
|
+
import "../../../../../site-settings-AYFvhwQn.mjs";
|
|
19
|
+
import { i as handleTaxonomyGet, n as handleTaxonomyDefTranslations } from "../../../../../taxonomies-DQGomz9p.mjs";
|
|
20
|
+
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../error-CEdm_AWU.mjs";
|
|
21
|
+
import { i as parseQuery, t as isParseError } from "../../../../../parse-Gt2l4Sld.mjs";
|
|
22
|
+
import { b as localeFilterQuery } from "../../../../../redirects-D4EWeXAo.mjs";
|
|
23
|
+
import "../../../../../entry-lock-PP1JCXBB.mjs";
|
|
24
|
+
import "../../../../../media-D1z_jisb.mjs";
|
|
25
|
+
import "../../../../../comments-BRtp992B.mjs";
|
|
26
|
+
import "../../../../../byline-fields-DHJs0Mja.mjs";
|
|
27
|
+
import "../../../../../menus-BQKqf0Up.mjs";
|
|
28
|
+
import "../../../../../status-D39Fpy8R.mjs";
|
|
28
29
|
import "../../../../../api/schemas/index.mjs";
|
|
29
|
-
import { i as requirePerm } from "../../../../../authorize-
|
|
30
|
+
import { i as requirePerm } from "../../../../../authorize-soZXK7U0.mjs";
|
|
30
31
|
|
|
31
32
|
//#region src/astro/routes/api/taxonomies/[name]/translations.ts
|
|
32
33
|
const prerender = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/taxonomies/[name]/translations.ts"],"sourcesContent":["/**\n * Taxonomy definition translation endpoints\n *\n * GET /_emdash/api/taxonomies/:name/translations[?locale=xx]\n *\n * Creating a translation goes through `POST /_emdash/api/taxonomies` with\n * `translationOf`, so there is no POST here.\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleTaxonomyDefTranslations, handleTaxonomyGet } from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { localeFilterQuery } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\t// Any locale's row will do — they share the translation_group the list is\n\t\t// built from.\n\t\tconst anchor = await handleTaxonomyGet(emdash.db, name, { locale: query.locale });\n\t\tif (!anchor.success) return unwrapResult(anchor);\n\t\tconst result = await handleTaxonomyDefTranslations(emdash.db, anchor.data.taxonomy.id);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(\n\t\t\terror,\n\t\t\t\"Failed to list taxonomy translations\",\n\t\t\t\"TAXONOMY_TRANSLATIONS_ERROR\",\n\t\t);\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"translations.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/taxonomies/[name]/translations.ts"],"sourcesContent":["/**\n * Taxonomy definition translation endpoints\n *\n * GET /_emdash/api/taxonomies/:name/translations[?locale=xx]\n *\n * Creating a translation goes through `POST /_emdash/api/taxonomies` with\n * `translationOf`, so there is no POST here.\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleTaxonomyDefTranslations, handleTaxonomyGet } from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { localeFilterQuery } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\t// Any locale's row will do — they share the translation_group the list is\n\t\t// built from.\n\t\tconst anchor = await handleTaxonomyGet(emdash.db, name, { locale: query.locale });\n\t\tif (!anchor.success) return unwrapResult(anchor);\n\t\tconst result = await handleTaxonomyDefTranslations(emdash.db, anchor.data.taxonomy.id);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(\n\t\t\terror,\n\t\t\t\"Failed to list taxonomy translations\",\n\t\t\t\"TAXONOMY_TRANSLATIONS_ERROR\",\n\t\t);\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAa,YAAY;AAEzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,SAAS;AACjB,KAAI,CAAC,KAAM,QAAO,SAAS,oBAAoB,0BAA0B,IAAI;CAE7E,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,kBAAkB;AACnD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,kBAAkB;AACjE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;EAGH,MAAM,SAAS,MAAM,kBAAkB,OAAO,IAAI,MAAM,EAAE,QAAQ,MAAM,QAAQ,CAAC;AACjF,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAEhD,SAAO,aADQ,MAAM,8BAA8B,OAAO,IAAI,OAAO,KAAK,SAAS,GAAG,CAC3D;UACnB,OAAO;AACf,SAAO,YACN,OACA,wCACA,8BACA"}
|
|
@@ -2,32 +2,33 @@ import "../../../../dialect-helpers-7_IqPdh9.mjs";
|
|
|
2
2
|
import "../../../../config-CvmjJcVw.mjs";
|
|
3
3
|
import "../../../../after-PcEvMY_6.mjs";
|
|
4
4
|
import "../../../../base64-DvnNgP7e.mjs";
|
|
5
|
-
import "../../../../object-cache-
|
|
5
|
+
import "../../../../object-cache-Bo6DGaC9.mjs";
|
|
6
6
|
import "../../../../slugify-T5GHH42D.mjs";
|
|
7
|
-
import "../../../../
|
|
8
|
-
import "../../../../
|
|
9
|
-
import "../../../../
|
|
10
|
-
import "../../../../
|
|
11
|
-
import
|
|
12
|
-
import "../../../../
|
|
13
|
-
import "../../../../
|
|
14
|
-
import "../../../../
|
|
15
|
-
import "../../../../
|
|
16
|
-
import "../../../../
|
|
17
|
-
import "../../../../
|
|
18
|
-
import "../../../../
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
21
|
-
import { i as
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import "../../../../
|
|
25
|
-
import "../../../../
|
|
26
|
-
import "../../../../
|
|
27
|
-
import "../../../../
|
|
28
|
-
import "../../../../
|
|
7
|
+
import "../../../../request-cache-C4CIo5ad.mjs";
|
|
8
|
+
import "../../../../url-Dn3IStq8.mjs";
|
|
9
|
+
import "../../../../types-j6MBDjlZ.mjs";
|
|
10
|
+
import "../../../../taxonomy-BesdHIwi.mjs";
|
|
11
|
+
import "../../../../resolve-D-kqyKns.mjs";
|
|
12
|
+
import { r as taxonomyTag } from "../../../../chrome-tags-CKELm-bo.mjs";
|
|
13
|
+
import "../../../../loader-B_bcoE1h.mjs";
|
|
14
|
+
import "../../../../collection-slugs-cache-BNRAPNiu.mjs";
|
|
15
|
+
import "../../../../taxonomies-DWv-OYT0.mjs";
|
|
16
|
+
import "../../../../errors-CjXd1LgH.mjs";
|
|
17
|
+
import "../../../../errors-CNvATh_7.mjs";
|
|
18
|
+
import "../../../../settings-B0zQj_Tj.mjs";
|
|
19
|
+
import "../../../../site-settings-AYFvhwQn.mjs";
|
|
20
|
+
import { i as handleTaxonomyGet, o as handleTaxonomyUpdate, r as handleTaxonomyDelete } from "../../../../taxonomies-DQGomz9p.mjs";
|
|
21
|
+
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../error-CEdm_AWU.mjs";
|
|
22
|
+
import { i as parseQuery, n as parseBody, t as isParseError } from "../../../../parse-Gt2l4Sld.mjs";
|
|
23
|
+
import { b as localeFilterQuery } from "../../../../redirects-D4EWeXAo.mjs";
|
|
24
|
+
import { Z as updateTaxonomyDefBody } from "../../../../entry-lock-PP1JCXBB.mjs";
|
|
25
|
+
import "../../../../media-D1z_jisb.mjs";
|
|
26
|
+
import "../../../../comments-BRtp992B.mjs";
|
|
27
|
+
import "../../../../byline-fields-DHJs0Mja.mjs";
|
|
28
|
+
import "../../../../menus-BQKqf0Up.mjs";
|
|
29
|
+
import "../../../../status-D39Fpy8R.mjs";
|
|
29
30
|
import "../../../../api/schemas/index.mjs";
|
|
30
|
-
import { i as requirePerm } from "../../../../authorize-
|
|
31
|
+
import { i as requirePerm } from "../../../../authorize-soZXK7U0.mjs";
|
|
31
32
|
|
|
32
33
|
//#region src/astro/routes/api/taxonomies/[name].ts
|
|
33
34
|
const prerender = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_name_.mjs","names":[],"sources":["../../../../../src/astro/routes/api/taxonomies/[name].ts"],"sourcesContent":["/**\n * Single taxonomy definition endpoint\n *\n * GET /_emdash/api/taxonomies/:name[?locale=xx]\n * PUT /_emdash/api/taxonomies/:name[?locale=xx]\n * DELETE /_emdash/api/taxonomies/:name\n *\n * GET and PUT address one locale's definition. DELETE takes no locale — it\n * removes the taxonomy outright, terms and assignments included.\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport {\n\thandleTaxonomyDelete,\n\thandleTaxonomyGet,\n\thandleTaxonomyUpdate,\n} from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseBody, parseQuery } from \"#api/parse.js\";\nimport { localeFilterQuery, updateTaxonomyDefBody } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\n\nexport const prerender = false;\n\n/**\n * Get a single taxonomy definition\n */\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTaxonomyGet(emdash.db, name, { locale: query.locale });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get taxonomy\", \"TAXONOMY_GET_ERROR\");\n\t}\n};\n\n/**\n * Update a taxonomy definition\n */\nexport const PUT: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst body = await parseBody(request, updateTaxonomyDefBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTaxonomyUpdate(emdash.db, name, {\n\t\t\t...body,\n\t\t\tlocale: query.locale,\n\t\t});\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to update taxonomy\", \"TAXONOMY_UPDATE_ERROR\");\n\t}\n};\n\n/**\n * Delete a taxonomy, its terms, and their content assignments\n */\nexport const DELETE: APIRoute = async ({ params, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst result = await handleTaxonomyDelete(emdash.db, name);\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to delete taxonomy\", \"TAXONOMY_DELETE_ERROR\");\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"_name_.mjs","names":[],"sources":["../../../../../src/astro/routes/api/taxonomies/[name].ts"],"sourcesContent":["/**\n * Single taxonomy definition endpoint\n *\n * GET /_emdash/api/taxonomies/:name[?locale=xx]\n * PUT /_emdash/api/taxonomies/:name[?locale=xx]\n * DELETE /_emdash/api/taxonomies/:name\n *\n * GET and PUT address one locale's definition. DELETE takes no locale — it\n * removes the taxonomy outright, terms and assignments included.\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport {\n\thandleTaxonomyDelete,\n\thandleTaxonomyGet,\n\thandleTaxonomyUpdate,\n} from \"#api/handlers/taxonomies.js\";\nimport { isParseError, parseBody, parseQuery } from \"#api/parse.js\";\nimport { localeFilterQuery, updateTaxonomyDefBody } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\n\nexport const prerender = false;\n\n/**\n * Get a single taxonomy definition\n */\nexport const GET: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:read\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleTaxonomyGet(emdash.db, name, { locale: query.locale });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get taxonomy\", \"TAXONOMY_GET_ERROR\");\n\t}\n};\n\n/**\n * Update a taxonomy definition\n */\nexport const PUT: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\tconst query = parseQuery(new URL(request.url), localeFilterQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst body = await parseBody(request, updateTaxonomyDefBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTaxonomyUpdate(emdash.db, name, {\n\t\t\t...body,\n\t\t\tlocale: query.locale,\n\t\t});\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to update taxonomy\", \"TAXONOMY_UPDATE_ERROR\");\n\t}\n};\n\n/**\n * Delete a taxonomy, its terms, and their content assignments\n */\nexport const DELETE: APIRoute = async ({ params, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { name } = params;\n\tif (!name) return apiError(\"VALIDATION_ERROR\", \"Taxonomy name required\", 400);\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\n\tconst denied = requirePerm(user, \"taxonomies:manage\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst result = await handleTaxonomyDelete(emdash.db, name);\n\t\tif (!result.success) return unwrapResult(result);\n\t\tif (cache?.enabled) await cache.invalidate({ tags: [taxonomyTag(name)] });\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to delete taxonomy\", \"TAXONOMY_DELETE_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAa,YAAY;;;;AAKzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,SAAS;AACjB,KAAI,CAAC,KAAM,QAAO,SAAS,oBAAoB,0BAA0B,IAAI;CAE7E,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,kBAAkB;AACnD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,kBAAkB;AACjE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;AAEH,SAAO,aADQ,MAAM,kBAAkB,OAAO,IAAI,MAAM,EAAE,QAAQ,MAAM,QAAQ,CAAC,CACtD;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,0BAA0B,qBAAqB;;;;;;AAO3E,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;CAC1E,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,SAAS;AACjB,KAAI,CAAC,KAAM,QAAO,SAAS,oBAAoB,0BAA0B,IAAI;CAE7E,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;CAEnB,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,kBAAkB;AACjE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,sBAAsB;AAC5D,MAAI,aAAa,KAAK,CAAE,QAAO;EAE/B,MAAM,SAAS,MAAM,qBAAqB,OAAO,IAAI,MAAM;GAC1D,GAAG;GACH,QAAQ,MAAM;GACd,CAAC;AACF,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,OAAO,QAAS,OAAM,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;AACzE,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,6BAA6B,wBAAwB;;;;;;AAOjF,MAAa,SAAmB,OAAO,EAAE,QAAQ,QAAQ,YAAY;CACpE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,SAAS;AACjB,KAAI,CAAC,KAAM,QAAO,SAAS,oBAAoB,0BAA0B,IAAI;CAE7E,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAElB,MAAM,SAAS,YAAY,MAAM,oBAAoB;AACrD,KAAI,OAAQ,QAAO;AAEnB,KAAI;EACH,MAAM,SAAS,MAAM,qBAAqB,OAAO,IAAI,KAAK;AAC1D,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,MAAI,OAAO,QAAS,OAAM,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;AACzE,SAAO,aAAa,OAAO;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,6BAA6B,wBAAwB"}
|
|
@@ -3,44 +3,46 @@ import { r as getI18nConfig } from "../../../../config-CvmjJcVw.mjs";
|
|
|
3
3
|
import "../../../../datetime-normalization-PeiEdcRY.mjs";
|
|
4
4
|
import "../../../../after-PcEvMY_6.mjs";
|
|
5
5
|
import "../../../../base64-DvnNgP7e.mjs";
|
|
6
|
-
import { t as ContentRepository } from "../../../../content-
|
|
7
|
-
import "../../../../object-cache-
|
|
8
|
-
import { n as chunks } from "../../../../chunks-
|
|
6
|
+
import { t as ContentRepository } from "../../../../content-RzEXY3QX.mjs";
|
|
7
|
+
import "../../../../object-cache-Bo6DGaC9.mjs";
|
|
8
|
+
import { n as chunks } from "../../../../chunks-DBmkKmBH.mjs";
|
|
9
9
|
import "../../../../slugify-T5GHH42D.mjs";
|
|
10
|
-
import "../../../../
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import "../../../../
|
|
14
|
-
import "../../../../
|
|
15
|
-
import {
|
|
16
|
-
import "../../../../
|
|
17
|
-
import "../../../../
|
|
18
|
-
import
|
|
19
|
-
import "../../../../
|
|
20
|
-
import "../../../../
|
|
21
|
-
import
|
|
22
|
-
import "../../../../
|
|
23
|
-
import "../../../../
|
|
24
|
-
import "../../../../
|
|
25
|
-
import "../../../../
|
|
26
|
-
import "../../../../
|
|
27
|
-
import "../../../../
|
|
28
|
-
import "../../../../
|
|
29
|
-
import "../../../../
|
|
30
|
-
import "../../../../
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
import "../../../../
|
|
34
|
-
import {
|
|
35
|
-
import "../../../../
|
|
36
|
-
import
|
|
37
|
-
import "../../../../
|
|
38
|
-
import "../../../../
|
|
39
|
-
import "../../../../
|
|
40
|
-
import "../../../../
|
|
10
|
+
import "../../../../request-cache-C4CIo5ad.mjs";
|
|
11
|
+
import "../../../../url-Dn3IStq8.mjs";
|
|
12
|
+
import "../../../../types-j6MBDjlZ.mjs";
|
|
13
|
+
import "../../../../revision-CGkQA0e5.mjs";
|
|
14
|
+
import { t as TaxonomyRepository } from "../../../../taxonomy-BesdHIwi.mjs";
|
|
15
|
+
import { a as resolveLocalizedContentRoutePath, n as localizePath } from "../../../../resolve-D-kqyKns.mjs";
|
|
16
|
+
import "../../../../fts-manager-DU03MxWu.mjs";
|
|
17
|
+
import { r as taxonomyTag } from "../../../../chrome-tags-CKELm-bo.mjs";
|
|
18
|
+
import "../../../../loader-B_bcoE1h.mjs";
|
|
19
|
+
import "../../../../collection-slugs-cache-BNRAPNiu.mjs";
|
|
20
|
+
import { d as invalidateTermCache } from "../../../../taxonomies-DWv-OYT0.mjs";
|
|
21
|
+
import "../../../../capture-triggers-CdZfvHtF.mjs";
|
|
22
|
+
import "../../../../activation-DDuqAat2.mjs";
|
|
23
|
+
import "../../../../collection-deletion-JecE26cS.mjs";
|
|
24
|
+
import { n as SchemaRegistry } from "../../../../registry-CtHRqVe-.mjs";
|
|
25
|
+
import "../../../../hash-CY4QdeMJ.mjs";
|
|
26
|
+
import "../../../../zod-generator-DnfG5sGQ.mjs";
|
|
27
|
+
import "../../../../errors-CjXd1LgH.mjs";
|
|
28
|
+
import "../../../../canonical-CAecl1UQ.mjs";
|
|
29
|
+
import "../../../../digest-DiYAoZpf.mjs";
|
|
30
|
+
import { t as compileUrlPattern } from "../../../../url-pattern-DGAG6ZP2.mjs";
|
|
31
|
+
import "../../../../errors-CNvATh_7.mjs";
|
|
32
|
+
import "../../../../settings-B0zQj_Tj.mjs";
|
|
33
|
+
import "../../../../site-settings-AYFvhwQn.mjs";
|
|
34
|
+
import { a as unwrapResult, i as requireDb, t as apiError } from "../../../../error-CEdm_AWU.mjs";
|
|
35
|
+
import { n as parseBody, t as isParseError } from "../../../../parse-Gt2l4Sld.mjs";
|
|
36
|
+
import "../../../../redirects-D4EWeXAo.mjs";
|
|
37
|
+
import { F as bulkTagBody } from "../../../../entry-lock-PP1JCXBB.mjs";
|
|
38
|
+
import "../../../../media-D1z_jisb.mjs";
|
|
39
|
+
import "../../../../comments-BRtp992B.mjs";
|
|
40
|
+
import "../../../../byline-fields-DHJs0Mja.mjs";
|
|
41
|
+
import "../../../../menus-BQKqf0Up.mjs";
|
|
42
|
+
import "../../../../status-D39Fpy8R.mjs";
|
|
41
43
|
import "../../../../api/schemas/index.mjs";
|
|
42
|
-
import { r as getPublicOrigin } from "../../../../public-url-
|
|
43
|
-
import { i as requirePerm } from "../../../../authorize-
|
|
44
|
+
import { r as getPublicOrigin } from "../../../../public-url-B5a0QAh6.mjs";
|
|
45
|
+
import { i as requirePerm } from "../../../../authorize-soZXK7U0.mjs";
|
|
44
46
|
|
|
45
47
|
//#region src/api/handlers/bulk-tag.ts
|
|
46
48
|
const TRAILING_SLASHES = /\/+$/;
|
|
@@ -97,14 +99,14 @@ async function handleBulkTag(db, origin, input, invalidate) {
|
|
|
97
99
|
try {
|
|
98
100
|
const taxonomy = new TaxonomyRepository(db);
|
|
99
101
|
const term = await taxonomy.findById(input.termId);
|
|
100
|
-
if (!term
|
|
102
|
+
if (!term) return {
|
|
101
103
|
success: false,
|
|
102
104
|
error: {
|
|
103
105
|
code: "NOT_FOUND",
|
|
104
|
-
message: "
|
|
106
|
+
message: "Term not found"
|
|
105
107
|
}
|
|
106
108
|
};
|
|
107
|
-
const definitions = await db.selectFrom("_emdash_taxonomy_defs").select("collections").where("name", "=",
|
|
109
|
+
const definitions = await db.selectFrom("_emdash_taxonomy_defs").select("collections").where("name", "=", term.name).execute();
|
|
108
110
|
const allowed = new Set(definitions.flatMap((def) => {
|
|
109
111
|
const parsed = def.collections ? JSON.parse(def.collections) : [];
|
|
110
112
|
return Array.isArray(parsed) ? parsed.filter((value) => typeof value === "string") : [];
|
|
@@ -192,7 +194,7 @@ async function handleBulkTag(db, origin, input, invalidate) {
|
|
|
192
194
|
const siblingIds = /* @__PURE__ */ new Map();
|
|
193
195
|
if (input.apply && invalidate) for (const [collection, entryGroups] of groups) siblingIds.set(collection, await content.findTranslationIdsForGroups(collection, [...entryGroups]));
|
|
194
196
|
const seen = /* @__PURE__ */ new Set();
|
|
195
|
-
const purge = new Set([taxonomyTag(
|
|
197
|
+
const purge = new Set([taxonomyTag(term.name)]);
|
|
196
198
|
const results = [];
|
|
197
199
|
let changed = false;
|
|
198
200
|
for (const { source, resolved } of prepared) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk-tag.mjs","names":[],"sources":["../../../../../src/api/handlers/bulk-tag.ts","../../../../../src/astro/routes/api/taxonomies/bulk-tag.ts"],"sourcesContent":["import type { Kysely } from \"kysely\";\nimport type { z } from \"zod\";\n\nimport { taxonomyTag } from \"../../cache/chrome-tags.js\";\nimport { ContentRepository } from \"../../database/repositories/content.js\";\nimport { TaxonomyRepository } from \"../../database/repositories/taxonomy.js\";\nimport type { ContentItem } from \"../../database/repositories/types.js\";\nimport type { Database } from \"../../database/types.js\";\nimport { getI18nConfig } from \"../../i18n/config.js\";\nimport { localizePath, resolveLocalizedContentRoutePath } from \"../../i18n/resolve.js\";\nimport { SchemaRegistry } from \"../../schema/registry.js\";\nimport { compileUrlPattern } from \"../../schema/url-pattern.js\";\nimport { invalidateTermCache } from \"../../taxonomies/index.js\";\nimport { chunks } from \"../../utils/chunks.js\";\nimport type { bulkTagBody } from \"../schemas/taxonomies.js\";\nimport type { ApiResult } from \"../types.js\";\n\ntype BulkTagInput = z.infer<typeof bulkTagBody>;\ntype BulkTagSource = BulkTagInput[\"items\"][number];\ntype Collection = Awaited<ReturnType<SchemaRegistry[\"listCollections\"]>>[number];\ntype UrlCandidate = {\n\tcollection: Collection;\n\tlocale: string;\n\tidentifier: string;\n\tby: \"slug\" | \"id\";\n};\nconst TRAILING_SLASHES = /\\/+$/;\n\nexport interface BulkTagResult {\n\tinput: BulkTagSource;\n\tstatus: \"ready\" | \"added\" | \"skipped\" | \"unmatched\" | \"failed\";\n\treason?: \"not_found\" | \"ambiguous\" | \"save_failed\";\n\tentry?: { collection: string; id: string; title: string; locale: string };\n}\n\nfunction titleFor(item: ContentItem, collection: Collection): string {\n\tconst preferred = collection.titleField && item.data[collection.titleField];\n\tconst title = item.data.title;\n\tconst name = item.data.name;\n\treturn (\n\t\t(typeof preferred === \"string\" && preferred) ||\n\t\t(typeof title === \"string\" && title) ||\n\t\t(typeof name === \"string\" && name) ||\n\t\titem.slug ||\n\t\titem.id\n\t);\n}\n\nfunction normalizedPath(path: string): string {\n\treturn path.replace(TRAILING_SLASHES, \"\") || \"/\";\n}\n\nasync function urlCandidates(\n\turl: string,\n\torigin: string,\n\tcollections: Collection[],\n): Promise<{ path: string; candidates: UrlCandidate[] } | null> {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (parsed.origin !== origin || ![\"https:\", \"http:\"].includes(parsed.protocol)) return null;\n\n\tconst locales = getI18nConfig()?.locales ?? [\"en\"];\n\tconst candidates: UrlCandidate[] = [];\n\tfor (const collection of collections) {\n\t\tconst pattern = collection.urlPattern ?? `/${collection.slug}/{slug}`;\n\t\tfor (const locale of locales) {\n\t\t\tconst prefix = await localizePath(\"/\", locale);\n\t\t\tif (!prefix) continue;\n\t\t\tconst { regex, paramNames } = compileUrlPattern(`${prefix === \"/\" ? \"\" : prefix}${pattern}`);\n\t\t\tconst segments = regex.exec(parsed.pathname);\n\t\t\tif (!segments) continue;\n\t\t\tconst slugIndex = paramNames.indexOf(\"slug\");\n\t\t\tconst idIndex = paramNames.indexOf(\"id\");\n\t\t\tif (slugIndex < 0 && idIndex < 0) continue;\n\t\t\tlet identifier: string;\n\t\t\ttry {\n\t\t\t\tidentifier = decodeURIComponent(segments[1 + (slugIndex >= 0 ? slugIndex : idIndex)] ?? \"\");\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcandidates.push({ collection, locale, identifier, by: slugIndex >= 0 ? \"slug\" : \"id\" });\n\t\t}\n\t}\n\treturn { path: parsed.pathname, candidates };\n}\n\nexport async function handleBulkTag(\n\tdb: Kysely<Database>,\n\torigin: string,\n\tinput: BulkTagInput,\n\tinvalidate?: (tags: string[]) => Promise<void>,\n): Promise<ApiResult<{ results: BulkTagResult[]; cacheRefreshFailed: boolean }>> {\n\ttry {\n\t\tconst taxonomy = new TaxonomyRepository(db);\n\t\tconst term = await taxonomy.findById(input.termId);\n\t\tif (!term || term.name !== \"tag\") {\n\t\t\treturn { success: false, error: { code: \"NOT_FOUND\", message: \"Tag not found\" } };\n\t\t}\n\t\tconst definitions = await db\n\t\t\t.selectFrom(\"_emdash_taxonomy_defs\")\n\t\t\t.select(\"collections\")\n\t\t\t.where(\"name\", \"=\", \"tag\")\n\t\t\t.execute();\n\t\tconst allowed = new Set(\n\t\t\tdefinitions.flatMap((def) => {\n\t\t\t\tconst parsed: unknown = def.collections ? JSON.parse(def.collections) : [];\n\t\t\t\treturn Array.isArray(parsed)\n\t\t\t\t\t? parsed.filter((value): value is string => typeof value === \"string\")\n\t\t\t\t\t: [];\n\t\t\t}),\n\t\t);\n\t\tconst collections = (await new SchemaRegistry(db).listCollections()).filter((collection) =>\n\t\t\tallowed.has(collection.slug),\n\t\t);\n\t\tconst byCollection = new Map(collections.map((collection) => [collection.slug, collection]));\n\t\tconst content = new ContentRepository(db);\n\t\tconst idNeeds = new Map<string, Set<string>>();\n\t\tconst slugNeeds = new Map<string, { collection: string; locale: string; slugs: Set<string> }>();\n\t\tconst parsedUrls = new Map<number, Awaited<ReturnType<typeof urlCandidates>>>();\n\t\tfor (const [index, source] of input.items.entries()) {\n\t\t\tif (\"url\" in source) {\n\t\t\t\tconst parsed = await urlCandidates(source.url, origin, collections);\n\t\t\t\tparsedUrls.set(index, parsed);\n\t\t\t\tfor (const candidate of parsed?.candidates ?? []) {\n\t\t\t\t\tif (candidate.by === \"id\") {\n\t\t\t\t\t\tconst ids = idNeeds.get(candidate.collection.slug) ?? new Set<string>();\n\t\t\t\t\t\tids.add(candidate.identifier);\n\t\t\t\t\t\tidNeeds.set(candidate.collection.slug, ids);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst key = `${candidate.collection.slug}:${candidate.locale}`;\n\t\t\t\t\t\tconst group = slugNeeds.get(key) ?? {\n\t\t\t\t\t\t\tcollection: candidate.collection.slug,\n\t\t\t\t\t\t\tlocale: candidate.locale,\n\t\t\t\t\t\t\tslugs: new Set<string>(),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tgroup.slugs.add(candidate.identifier);\n\t\t\t\t\t\tslugNeeds.set(key, group);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (byCollection.has(source.collection)) {\n\t\t\t\tconst ids = idNeeds.get(source.collection) ?? new Set<string>();\n\t\t\t\tids.add(source.id);\n\t\t\t\tidNeeds.set(source.collection, ids);\n\t\t\t}\n\t\t}\n\t\tconst byId = new Map<string, Map<string, ContentItem>>();\n\t\tfor (const [collection, ids] of idNeeds) {\n\t\t\tbyId.set(collection, await content.findManyByIds(collection, [...ids]));\n\t\t}\n\t\tconst bySlug = new Map<string, Map<string, ContentItem>>();\n\t\tfor (const [key, group] of slugNeeds) {\n\t\t\tbySlug.set(\n\t\t\t\tkey,\n\t\t\t\tawait content.findManyBySlugsInLocale(group.collection, [...group.slugs], group.locale),\n\t\t\t);\n\t\t}\n\t\tconst prepared: Array<{\n\t\t\tsource: BulkTagSource;\n\t\t\tresolved: { item: ContentItem; collection: Collection } | \"not_found\" | \"ambiguous\";\n\t\t}> = [];\n\t\tconst groups = new Map<string, Set<string>>();\n\t\tfor (const [index, source] of input.items.entries()) {\n\t\t\tlet resolved: (typeof prepared)[number][\"resolved\"] = \"not_found\";\n\t\t\tif (\"url\" in source) {\n\t\t\t\tconst parsed = parsedUrls.get(index);\n\t\t\t\tconst matches = new Map<string, { item: ContentItem; collection: Collection }>();\n\t\t\t\tfor (const candidate of parsed?.candidates ?? []) {\n\t\t\t\t\tconst item =\n\t\t\t\t\t\tcandidate.by === \"id\"\n\t\t\t\t\t\t\t? byId.get(candidate.collection.slug)?.get(candidate.identifier)\n\t\t\t\t\t\t\t: bySlug\n\t\t\t\t\t\t\t\t\t.get(`${candidate.collection.slug}:${candidate.locale}`)\n\t\t\t\t\t\t\t\t\t?.get(candidate.identifier);\n\t\t\t\t\tif (!item || item.locale !== candidate.locale || item.status !== \"published\") continue;\n\t\t\t\t\tconst canonical = await resolveLocalizedContentRoutePath({\n\t\t\t\t\t\tpattern: candidate.collection.urlPattern ?? `/${candidate.collection.slug}/{slug}`,\n\t\t\t\t\t\tcollection: candidate.collection.slug,\n\t\t\t\t\t\tslug: item.slug ?? \"\",\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\tdate: item.publishedAt,\n\t\t\t\t\t\tlocale: candidate.locale,\n\t\t\t\t\t});\n\t\t\t\t\tif (canonical && parsed && normalizedPath(canonical) === normalizedPath(parsed.path)) {\n\t\t\t\t\t\tmatches.set(`${candidate.collection.slug}:${item.id}`, {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\tcollection: candidate.collection,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresolved = matches.size > 1 ? \"ambiguous\" : (matches.values().next().value ?? \"not_found\");\n\t\t\t} else {\n\t\t\t\tconst collection = byCollection.get(source.collection);\n\t\t\t\tconst item = byId.get(source.collection)?.get(source.id);\n\t\t\t\tif (item && collection) resolved = { item, collection };\n\t\t\t}\n\t\t\tprepared.push({ source, resolved });\n\t\t\tif (typeof resolved !== \"string\") {\n\t\t\t\tconst collectionGroups = groups.get(resolved.collection.slug) ?? new Set<string>();\n\t\t\t\tcollectionGroups.add(resolved.item.translationGroup ?? resolved.item.id);\n\t\t\t\tgroups.set(resolved.collection.slug, collectionGroups);\n\t\t\t}\n\t\t}\n\t\tconst termGroup = term.translationGroup ?? term.id;\n\t\tconst assigned = new Set<string>();\n\t\tif (!input.apply) {\n\t\t\tfor (const [collection, entryGroups] of groups) {\n\t\t\t\tfor (const batch of chunks([...entryGroups], 50)) {\n\t\t\t\t\tconst rows = await db\n\t\t\t\t\t\t.selectFrom(\"content_taxonomies\")\n\t\t\t\t\t\t.select(\"entry_id\")\n\t\t\t\t\t\t.where(\"collection\", \"=\", collection)\n\t\t\t\t\t\t.where(\"taxonomy_id\", \"=\", termGroup)\n\t\t\t\t\t\t.where(\"entry_id\", \"in\", batch)\n\t\t\t\t\t\t.execute();\n\t\t\t\t\tfor (const row of rows) assigned.add(`${collection}:${row.entry_id}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst siblingIds = new Map<string, Map<string, string[]>>();\n\t\tif (input.apply && invalidate) {\n\t\t\tfor (const [collection, entryGroups] of groups) {\n\t\t\t\tsiblingIds.set(\n\t\t\t\t\tcollection,\n\t\t\t\t\tawait content.findTranslationIdsForGroups(collection, [...entryGroups]),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst seen = new Set<string>();\n\t\tconst purge = new Set<string>([taxonomyTag(\"tag\")]);\n\t\tconst results: BulkTagResult[] = [];\n\t\tlet changed = false;\n\t\tfor (const { source, resolved } of prepared) {\n\t\t\tif (typeof resolved === \"string\") {\n\t\t\t\tif (\n\t\t\t\t\tinput.apply &&\n\t\t\t\t\tinput.refreshOnly &&\n\t\t\t\t\tinvalidate &&\n\t\t\t\t\t\"id\" in source &&\n\t\t\t\t\tbyCollection.has(source.collection)\n\t\t\t\t) {\n\t\t\t\t\tpurge.add(source.collection);\n\t\t\t\t\tpurge.add(source.id);\n\t\t\t\t}\n\t\t\t\tresults.push({ input: source, status: \"unmatched\", reason: resolved });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { item, collection } = resolved;\n\t\t\tconst entry = {\n\t\t\t\tcollection: collection.slug,\n\t\t\t\tid: item.id,\n\t\t\t\ttitle: titleFor(item, collection),\n\t\t\t\tlocale: item.locale ?? \"en\",\n\t\t\t};\n\t\t\tconst group = item.translationGroup ?? item.id;\n\t\t\tconst key = `${collection.slug}:${group}`;\n\t\t\tif (seen.has(key)) {\n\t\t\t\tresults.push({ input: source, status: \"skipped\", entry });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst inserted =\n\t\t\t\t\tinput.apply && !input.refreshOnly\n\t\t\t\t\t\t? await taxonomy.attachGroupsToEntry(collection.slug, item.id, [termGroup])\n\t\t\t\t\t\t: 0;\n\t\t\t\tif (inserted) changed = true;\n\t\t\t\tseen.add(key);\n\t\t\t\tif (input.apply && invalidate) {\n\t\t\t\t\tpurge.add(collection.slug);\n\t\t\t\t\tfor (const id of siblingIds.get(collection.slug)?.get(group) ?? [item.id]) purge.add(id);\n\t\t\t\t}\n\t\t\t\tresults.push({\n\t\t\t\t\tinput: source,\n\t\t\t\t\tstatus: input.apply\n\t\t\t\t\t\t? inserted\n\t\t\t\t\t\t\t? \"added\"\n\t\t\t\t\t\t\t: \"skipped\"\n\t\t\t\t\t\t: assigned.has(key)\n\t\t\t\t\t\t\t? \"skipped\"\n\t\t\t\t\t\t\t: \"ready\",\n\t\t\t\t\tentry,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[bulk-tag] Failed to tag entry:\", error);\n\t\t\t\tresults.push({ input: source, status: \"failed\", reason: \"save_failed\", entry });\n\t\t\t}\n\t\t}\n\t\tif (changed) invalidateTermCache();\n\t\tlet cacheRefreshFailed = false;\n\t\tif (input.apply && invalidate && (purge.size > 1 || input.refreshOnly)) {\n\t\t\ttry {\n\t\t\t\tfor (const batch of chunks([...purge], 100)) await invalidate(batch);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[bulk-tag] Failed to invalidate cache:\", error);\n\t\t\t\tcacheRefreshFailed = true;\n\t\t\t}\n\t\t}\n\t\treturn { success: true, data: { results, cacheRefreshFailed } };\n\t} catch (error) {\n\t\tconsole.error(\"[bulk-tag] Failed:\", error);\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: { code: \"BULK_TAG_ERROR\", message: \"Failed to bulk tag posts\" },\n\t\t};\n\t}\n}\n","import type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleBulkTag } from \"#api/handlers/bulk-tag.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\nimport { getPublicOrigin } from \"#api/public-url.js\";\nimport { bulkTagBody } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\nexport const POST: APIRoute = async ({ locals, request, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst dbError = requireDb(emdash?.db);\n\tif (dbError) return dbError;\n\tconst denied = requirePerm(user, \"content:edit_any\");\n\tif (denied) return denied;\n\tconst body = await parseBody(request, bulkTagBody);\n\tif (isParseError(body)) return body;\n\tif (!emdash) return apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\treturn unwrapResult(\n\t\tawait handleBulkTag(\n\t\t\temdash.db,\n\t\t\tgetPublicOrigin(new URL(request.url), emdash.config),\n\t\t\tbody,\n\t\t\tcache?.enabled ? (tags) => cache.invalidate({ tags }) : undefined,\n\t\t),\n\t);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bulk-tag.mjs","names":[],"sources":["../../../../../src/api/handlers/bulk-tag.ts","../../../../../src/astro/routes/api/taxonomies/bulk-tag.ts"],"sourcesContent":["import type { Kysely } from \"kysely\";\nimport type { z } from \"zod\";\n\nimport { taxonomyTag } from \"../../cache/chrome-tags.js\";\nimport { ContentRepository } from \"../../database/repositories/content.js\";\nimport { TaxonomyRepository } from \"../../database/repositories/taxonomy.js\";\nimport type { ContentItem } from \"../../database/repositories/types.js\";\nimport type { Database } from \"../../database/types.js\";\nimport { getI18nConfig } from \"../../i18n/config.js\";\nimport { localizePath, resolveLocalizedContentRoutePath } from \"../../i18n/resolve.js\";\nimport { SchemaRegistry } from \"../../schema/registry.js\";\nimport { compileUrlPattern } from \"../../schema/url-pattern.js\";\nimport { invalidateTermCache } from \"../../taxonomies/index.js\";\nimport { chunks } from \"../../utils/chunks.js\";\nimport type { bulkTagBody } from \"../schemas/taxonomies.js\";\nimport type { ApiResult } from \"../types.js\";\n\ntype BulkTagInput = z.infer<typeof bulkTagBody>;\ntype BulkTagSource = BulkTagInput[\"items\"][number];\ntype Collection = Awaited<ReturnType<SchemaRegistry[\"listCollections\"]>>[number];\ntype UrlCandidate = {\n\tcollection: Collection;\n\tlocale: string;\n\tidentifier: string;\n\tby: \"slug\" | \"id\";\n};\nconst TRAILING_SLASHES = /\\/+$/;\n\nexport interface BulkTagResult {\n\tinput: BulkTagSource;\n\tstatus: \"ready\" | \"added\" | \"skipped\" | \"unmatched\" | \"failed\";\n\treason?: \"not_found\" | \"ambiguous\" | \"save_failed\";\n\tentry?: { collection: string; id: string; title: string; locale: string };\n}\n\nfunction titleFor(item: ContentItem, collection: Collection): string {\n\tconst preferred = collection.titleField && item.data[collection.titleField];\n\tconst title = item.data.title;\n\tconst name = item.data.name;\n\treturn (\n\t\t(typeof preferred === \"string\" && preferred) ||\n\t\t(typeof title === \"string\" && title) ||\n\t\t(typeof name === \"string\" && name) ||\n\t\titem.slug ||\n\t\titem.id\n\t);\n}\n\nfunction normalizedPath(path: string): string {\n\treturn path.replace(TRAILING_SLASHES, \"\") || \"/\";\n}\n\nasync function urlCandidates(\n\turl: string,\n\torigin: string,\n\tcollections: Collection[],\n): Promise<{ path: string; candidates: UrlCandidate[] } | null> {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\treturn null;\n\t}\n\tif (parsed.origin !== origin || ![\"https:\", \"http:\"].includes(parsed.protocol)) return null;\n\n\tconst locales = getI18nConfig()?.locales ?? [\"en\"];\n\tconst candidates: UrlCandidate[] = [];\n\tfor (const collection of collections) {\n\t\tconst pattern = collection.urlPattern ?? `/${collection.slug}/{slug}`;\n\t\tfor (const locale of locales) {\n\t\t\tconst prefix = await localizePath(\"/\", locale);\n\t\t\tif (!prefix) continue;\n\t\t\tconst { regex, paramNames } = compileUrlPattern(`${prefix === \"/\" ? \"\" : prefix}${pattern}`);\n\t\t\tconst segments = regex.exec(parsed.pathname);\n\t\t\tif (!segments) continue;\n\t\t\tconst slugIndex = paramNames.indexOf(\"slug\");\n\t\t\tconst idIndex = paramNames.indexOf(\"id\");\n\t\t\tif (slugIndex < 0 && idIndex < 0) continue;\n\t\t\tlet identifier: string;\n\t\t\ttry {\n\t\t\t\tidentifier = decodeURIComponent(segments[1 + (slugIndex >= 0 ? slugIndex : idIndex)] ?? \"\");\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcandidates.push({ collection, locale, identifier, by: slugIndex >= 0 ? \"slug\" : \"id\" });\n\t\t}\n\t}\n\treturn { path: parsed.pathname, candidates };\n}\n\nexport async function handleBulkTag(\n\tdb: Kysely<Database>,\n\torigin: string,\n\tinput: BulkTagInput,\n\tinvalidate?: (tags: string[]) => Promise<void>,\n): Promise<ApiResult<{ results: BulkTagResult[]; cacheRefreshFailed: boolean }>> {\n\ttry {\n\t\tconst taxonomy = new TaxonomyRepository(db);\n\t\tconst term = await taxonomy.findById(input.termId);\n\t\tif (!term) {\n\t\t\treturn { success: false, error: { code: \"NOT_FOUND\", message: \"Term not found\" } };\n\t\t}\n\t\tconst definitions = await db\n\t\t\t.selectFrom(\"_emdash_taxonomy_defs\")\n\t\t\t.select(\"collections\")\n\t\t\t.where(\"name\", \"=\", term.name)\n\t\t\t.execute();\n\t\tconst allowed = new Set(\n\t\t\tdefinitions.flatMap((def) => {\n\t\t\t\tconst parsed: unknown = def.collections ? JSON.parse(def.collections) : [];\n\t\t\t\treturn Array.isArray(parsed)\n\t\t\t\t\t? parsed.filter((value): value is string => typeof value === \"string\")\n\t\t\t\t\t: [];\n\t\t\t}),\n\t\t);\n\t\tconst collections = (await new SchemaRegistry(db).listCollections()).filter((collection) =>\n\t\t\tallowed.has(collection.slug),\n\t\t);\n\t\tconst byCollection = new Map(collections.map((collection) => [collection.slug, collection]));\n\t\tconst content = new ContentRepository(db);\n\t\tconst idNeeds = new Map<string, Set<string>>();\n\t\tconst slugNeeds = new Map<string, { collection: string; locale: string; slugs: Set<string> }>();\n\t\tconst parsedUrls = new Map<number, Awaited<ReturnType<typeof urlCandidates>>>();\n\t\tfor (const [index, source] of input.items.entries()) {\n\t\t\tif (\"url\" in source) {\n\t\t\t\tconst parsed = await urlCandidates(source.url, origin, collections);\n\t\t\t\tparsedUrls.set(index, parsed);\n\t\t\t\tfor (const candidate of parsed?.candidates ?? []) {\n\t\t\t\t\tif (candidate.by === \"id\") {\n\t\t\t\t\t\tconst ids = idNeeds.get(candidate.collection.slug) ?? new Set<string>();\n\t\t\t\t\t\tids.add(candidate.identifier);\n\t\t\t\t\t\tidNeeds.set(candidate.collection.slug, ids);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst key = `${candidate.collection.slug}:${candidate.locale}`;\n\t\t\t\t\t\tconst group = slugNeeds.get(key) ?? {\n\t\t\t\t\t\t\tcollection: candidate.collection.slug,\n\t\t\t\t\t\t\tlocale: candidate.locale,\n\t\t\t\t\t\t\tslugs: new Set<string>(),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tgroup.slugs.add(candidate.identifier);\n\t\t\t\t\t\tslugNeeds.set(key, group);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (byCollection.has(source.collection)) {\n\t\t\t\tconst ids = idNeeds.get(source.collection) ?? new Set<string>();\n\t\t\t\tids.add(source.id);\n\t\t\t\tidNeeds.set(source.collection, ids);\n\t\t\t}\n\t\t}\n\t\tconst byId = new Map<string, Map<string, ContentItem>>();\n\t\tfor (const [collection, ids] of idNeeds) {\n\t\t\tbyId.set(collection, await content.findManyByIds(collection, [...ids]));\n\t\t}\n\t\tconst bySlug = new Map<string, Map<string, ContentItem>>();\n\t\tfor (const [key, group] of slugNeeds) {\n\t\t\tbySlug.set(\n\t\t\t\tkey,\n\t\t\t\tawait content.findManyBySlugsInLocale(group.collection, [...group.slugs], group.locale),\n\t\t\t);\n\t\t}\n\t\tconst prepared: Array<{\n\t\t\tsource: BulkTagSource;\n\t\t\tresolved: { item: ContentItem; collection: Collection } | \"not_found\" | \"ambiguous\";\n\t\t}> = [];\n\t\tconst groups = new Map<string, Set<string>>();\n\t\tfor (const [index, source] of input.items.entries()) {\n\t\t\tlet resolved: (typeof prepared)[number][\"resolved\"] = \"not_found\";\n\t\t\tif (\"url\" in source) {\n\t\t\t\tconst parsed = parsedUrls.get(index);\n\t\t\t\tconst matches = new Map<string, { item: ContentItem; collection: Collection }>();\n\t\t\t\tfor (const candidate of parsed?.candidates ?? []) {\n\t\t\t\t\tconst item =\n\t\t\t\t\t\tcandidate.by === \"id\"\n\t\t\t\t\t\t\t? byId.get(candidate.collection.slug)?.get(candidate.identifier)\n\t\t\t\t\t\t\t: bySlug\n\t\t\t\t\t\t\t\t\t.get(`${candidate.collection.slug}:${candidate.locale}`)\n\t\t\t\t\t\t\t\t\t?.get(candidate.identifier);\n\t\t\t\t\tif (!item || item.locale !== candidate.locale || item.status !== \"published\") continue;\n\t\t\t\t\tconst canonical = await resolveLocalizedContentRoutePath({\n\t\t\t\t\t\tpattern: candidate.collection.urlPattern ?? `/${candidate.collection.slug}/{slug}`,\n\t\t\t\t\t\tcollection: candidate.collection.slug,\n\t\t\t\t\t\tslug: item.slug ?? \"\",\n\t\t\t\t\t\tid: item.id,\n\t\t\t\t\t\tdate: item.publishedAt,\n\t\t\t\t\t\tlocale: candidate.locale,\n\t\t\t\t\t});\n\t\t\t\t\tif (canonical && parsed && normalizedPath(canonical) === normalizedPath(parsed.path)) {\n\t\t\t\t\t\tmatches.set(`${candidate.collection.slug}:${item.id}`, {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\tcollection: candidate.collection,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresolved = matches.size > 1 ? \"ambiguous\" : (matches.values().next().value ?? \"not_found\");\n\t\t\t} else {\n\t\t\t\tconst collection = byCollection.get(source.collection);\n\t\t\t\tconst item = byId.get(source.collection)?.get(source.id);\n\t\t\t\tif (item && collection) resolved = { item, collection };\n\t\t\t}\n\t\t\tprepared.push({ source, resolved });\n\t\t\tif (typeof resolved !== \"string\") {\n\t\t\t\tconst collectionGroups = groups.get(resolved.collection.slug) ?? new Set<string>();\n\t\t\t\tcollectionGroups.add(resolved.item.translationGroup ?? resolved.item.id);\n\t\t\t\tgroups.set(resolved.collection.slug, collectionGroups);\n\t\t\t}\n\t\t}\n\t\tconst termGroup = term.translationGroup ?? term.id;\n\t\tconst assigned = new Set<string>();\n\t\tif (!input.apply) {\n\t\t\tfor (const [collection, entryGroups] of groups) {\n\t\t\t\tfor (const batch of chunks([...entryGroups], 50)) {\n\t\t\t\t\tconst rows = await db\n\t\t\t\t\t\t.selectFrom(\"content_taxonomies\")\n\t\t\t\t\t\t.select(\"entry_id\")\n\t\t\t\t\t\t.where(\"collection\", \"=\", collection)\n\t\t\t\t\t\t.where(\"taxonomy_id\", \"=\", termGroup)\n\t\t\t\t\t\t.where(\"entry_id\", \"in\", batch)\n\t\t\t\t\t\t.execute();\n\t\t\t\t\tfor (const row of rows) assigned.add(`${collection}:${row.entry_id}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst siblingIds = new Map<string, Map<string, string[]>>();\n\t\tif (input.apply && invalidate) {\n\t\t\tfor (const [collection, entryGroups] of groups) {\n\t\t\t\tsiblingIds.set(\n\t\t\t\t\tcollection,\n\t\t\t\t\tawait content.findTranslationIdsForGroups(collection, [...entryGroups]),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst seen = new Set<string>();\n\t\tconst purge = new Set<string>([taxonomyTag(term.name)]);\n\t\tconst results: BulkTagResult[] = [];\n\t\tlet changed = false;\n\t\tfor (const { source, resolved } of prepared) {\n\t\t\tif (typeof resolved === \"string\") {\n\t\t\t\tif (\n\t\t\t\t\tinput.apply &&\n\t\t\t\t\tinput.refreshOnly &&\n\t\t\t\t\tinvalidate &&\n\t\t\t\t\t\"id\" in source &&\n\t\t\t\t\tbyCollection.has(source.collection)\n\t\t\t\t) {\n\t\t\t\t\tpurge.add(source.collection);\n\t\t\t\t\tpurge.add(source.id);\n\t\t\t\t}\n\t\t\t\tresults.push({ input: source, status: \"unmatched\", reason: resolved });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { item, collection } = resolved;\n\t\t\tconst entry = {\n\t\t\t\tcollection: collection.slug,\n\t\t\t\tid: item.id,\n\t\t\t\ttitle: titleFor(item, collection),\n\t\t\t\tlocale: item.locale ?? \"en\",\n\t\t\t};\n\t\t\tconst group = item.translationGroup ?? item.id;\n\t\t\tconst key = `${collection.slug}:${group}`;\n\t\t\tif (seen.has(key)) {\n\t\t\t\tresults.push({ input: source, status: \"skipped\", entry });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst inserted =\n\t\t\t\t\tinput.apply && !input.refreshOnly\n\t\t\t\t\t\t? await taxonomy.attachGroupsToEntry(collection.slug, item.id, [termGroup])\n\t\t\t\t\t\t: 0;\n\t\t\t\tif (inserted) changed = true;\n\t\t\t\tseen.add(key);\n\t\t\t\tif (input.apply && invalidate) {\n\t\t\t\t\tpurge.add(collection.slug);\n\t\t\t\t\tfor (const id of siblingIds.get(collection.slug)?.get(group) ?? [item.id]) purge.add(id);\n\t\t\t\t}\n\t\t\t\tresults.push({\n\t\t\t\t\tinput: source,\n\t\t\t\t\tstatus: input.apply\n\t\t\t\t\t\t? inserted\n\t\t\t\t\t\t\t? \"added\"\n\t\t\t\t\t\t\t: \"skipped\"\n\t\t\t\t\t\t: assigned.has(key)\n\t\t\t\t\t\t\t? \"skipped\"\n\t\t\t\t\t\t\t: \"ready\",\n\t\t\t\t\tentry,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[bulk-tag] Failed to tag entry:\", error);\n\t\t\t\tresults.push({ input: source, status: \"failed\", reason: \"save_failed\", entry });\n\t\t\t}\n\t\t}\n\t\tif (changed) invalidateTermCache();\n\t\tlet cacheRefreshFailed = false;\n\t\tif (input.apply && invalidate && (purge.size > 1 || input.refreshOnly)) {\n\t\t\ttry {\n\t\t\t\tfor (const batch of chunks([...purge], 100)) await invalidate(batch);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"[bulk-tag] Failed to invalidate cache:\", error);\n\t\t\t\tcacheRefreshFailed = true;\n\t\t\t}\n\t\t}\n\t\treturn { success: true, data: { results, cacheRefreshFailed } };\n\t} catch (error) {\n\t\tconsole.error(\"[bulk-tag] Failed:\", error);\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: { code: \"BULK_TAG_ERROR\", message: \"Failed to bulk tag posts\" },\n\t\t};\n\t}\n}\n","import type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleBulkTag } from \"#api/handlers/bulk-tag.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\nimport { getPublicOrigin } from \"#api/public-url.js\";\nimport { bulkTagBody } from \"#api/schemas.js\";\n\nexport const prerender = false;\n\nexport const POST: APIRoute = async ({ locals, request, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst dbError = requireDb(emdash?.db);\n\tif (dbError) return dbError;\n\tconst denied = requirePerm(user, \"content:edit_any\");\n\tif (denied) return denied;\n\tconst body = await parseBody(request, bulkTagBody);\n\tif (isParseError(body)) return body;\n\tif (!emdash) return apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\treturn unwrapResult(\n\t\tawait handleBulkTag(\n\t\t\temdash.db,\n\t\t\tgetPublicOrigin(new URL(request.url), emdash.config),\n\t\t\tbody,\n\t\t\tcache?.enabled ? (tags) => cache.invalidate({ tags }) : undefined,\n\t\t),\n\t);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,mBAAmB;AASzB,SAAS,SAAS,MAAmB,YAAgC;CACpE,MAAM,YAAY,WAAW,cAAc,KAAK,KAAK,WAAW;CAChE,MAAM,QAAQ,KAAK,KAAK;CACxB,MAAM,OAAO,KAAK,KAAK;AACvB,QACE,OAAO,cAAc,YAAY,aACjC,OAAO,UAAU,YAAY,SAC7B,OAAO,SAAS,YAAY,QAC7B,KAAK,QACL,KAAK;;AAIP,SAAS,eAAe,MAAsB;AAC7C,QAAO,KAAK,QAAQ,kBAAkB,GAAG,IAAI;;AAG9C,eAAe,cACd,KACA,QACA,aAC+D;CAC/D,IAAI;AACJ,KAAI;AACH,WAAS,IAAI,IAAI,IAAI;SACd;AACP,SAAO;;AAER,KAAI,OAAO,WAAW,UAAU,CAAC,CAAC,UAAU,QAAQ,CAAC,SAAS,OAAO,SAAS,CAAE,QAAO;CAEvF,MAAM,UAAU,eAAe,EAAE,WAAW,CAAC,KAAK;CAClD,MAAM,aAA6B,EAAE;AACrC,MAAK,MAAM,cAAc,aAAa;EACrC,MAAM,UAAU,WAAW,cAAc,IAAI,WAAW,KAAK;AAC7D,OAAK,MAAM,UAAU,SAAS;GAC7B,MAAM,SAAS,MAAM,aAAa,KAAK,OAAO;AAC9C,OAAI,CAAC,OAAQ;GACb,MAAM,EAAE,OAAO,eAAe,kBAAkB,GAAG,WAAW,MAAM,KAAK,SAAS,UAAU;GAC5F,MAAM,WAAW,MAAM,KAAK,OAAO,SAAS;AAC5C,OAAI,CAAC,SAAU;GACf,MAAM,YAAY,WAAW,QAAQ,OAAO;GAC5C,MAAM,UAAU,WAAW,QAAQ,KAAK;AACxC,OAAI,YAAY,KAAK,UAAU,EAAG;GAClC,IAAI;AACJ,OAAI;AACH,iBAAa,mBAAmB,SAAS,KAAK,aAAa,IAAI,YAAY,aAAa,GAAG;WACpF;AACP;;AAED,cAAW,KAAK;IAAE;IAAY;IAAQ;IAAY,IAAI,aAAa,IAAI,SAAS;IAAM,CAAC;;;AAGzF,QAAO;EAAE,MAAM,OAAO;EAAU;EAAY;;AAG7C,eAAsB,cACrB,IACA,QACA,OACA,YACgF;AAChF,KAAI;EACH,MAAM,WAAW,IAAI,mBAAmB,GAAG;EAC3C,MAAM,OAAO,MAAM,SAAS,SAAS,MAAM,OAAO;AAClD,MAAI,CAAC,KACJ,QAAO;GAAE,SAAS;GAAO,OAAO;IAAE,MAAM;IAAa,SAAS;IAAkB;GAAE;EAEnF,MAAM,cAAc,MAAM,GACxB,WAAW,wBAAwB,CACnC,OAAO,cAAc,CACrB,MAAM,QAAQ,KAAK,KAAK,KAAK,CAC7B,SAAS;EACX,MAAM,UAAU,IAAI,IACnB,YAAY,SAAS,QAAQ;GAC5B,MAAM,SAAkB,IAAI,cAAc,KAAK,MAAM,IAAI,YAAY,GAAG,EAAE;AAC1E,UAAO,MAAM,QAAQ,OAAO,GACzB,OAAO,QAAQ,UAA2B,OAAO,UAAU,SAAS,GACpE,EAAE;IACJ,CACF;EACD,MAAM,eAAe,MAAM,IAAI,eAAe,GAAG,CAAC,iBAAiB,EAAE,QAAQ,eAC5E,QAAQ,IAAI,WAAW,KAAK,CAC5B;EACD,MAAM,eAAe,IAAI,IAAI,YAAY,KAAK,eAAe,CAAC,WAAW,MAAM,WAAW,CAAC,CAAC;EAC5F,MAAM,UAAU,IAAI,kBAAkB,GAAG;EACzC,MAAM,0BAAU,IAAI,KAA0B;EAC9C,MAAM,4BAAY,IAAI,KAAyE;EAC/F,MAAM,6BAAa,IAAI,KAAwD;AAC/E,OAAK,MAAM,CAAC,OAAO,WAAW,MAAM,MAAM,SAAS,CAClD,KAAI,SAAS,QAAQ;GACpB,MAAM,SAAS,MAAM,cAAc,OAAO,KAAK,QAAQ,YAAY;AACnE,cAAW,IAAI,OAAO,OAAO;AAC7B,QAAK,MAAM,aAAa,QAAQ,cAAc,EAAE,CAC/C,KAAI,UAAU,OAAO,MAAM;IAC1B,MAAM,MAAM,QAAQ,IAAI,UAAU,WAAW,KAAK,oBAAI,IAAI,KAAa;AACvE,QAAI,IAAI,UAAU,WAAW;AAC7B,YAAQ,IAAI,UAAU,WAAW,MAAM,IAAI;UACrC;IACN,MAAM,MAAM,GAAG,UAAU,WAAW,KAAK,GAAG,UAAU;IACtD,MAAM,QAAQ,UAAU,IAAI,IAAI,IAAI;KACnC,YAAY,UAAU,WAAW;KACjC,QAAQ,UAAU;KAClB,uBAAO,IAAI,KAAa;KACxB;AACD,UAAM,MAAM,IAAI,UAAU,WAAW;AACrC,cAAU,IAAI,KAAK,MAAM;;aAGjB,aAAa,IAAI,OAAO,WAAW,EAAE;GAC/C,MAAM,MAAM,QAAQ,IAAI,OAAO,WAAW,oBAAI,IAAI,KAAa;AAC/D,OAAI,IAAI,OAAO,GAAG;AAClB,WAAQ,IAAI,OAAO,YAAY,IAAI;;EAGrC,MAAM,uBAAO,IAAI,KAAuC;AACxD,OAAK,MAAM,CAAC,YAAY,QAAQ,QAC/B,MAAK,IAAI,YAAY,MAAM,QAAQ,cAAc,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;EAExE,MAAM,yBAAS,IAAI,KAAuC;AAC1D,OAAK,MAAM,CAAC,KAAK,UAAU,UAC1B,QAAO,IACN,KACA,MAAM,QAAQ,wBAAwB,MAAM,YAAY,CAAC,GAAG,MAAM,MAAM,EAAE,MAAM,OAAO,CACvF;EAEF,MAAM,WAGD,EAAE;EACP,MAAM,yBAAS,IAAI,KAA0B;AAC7C,OAAK,MAAM,CAAC,OAAO,WAAW,MAAM,MAAM,SAAS,EAAE;GACpD,IAAI,WAAkD;AACtD,OAAI,SAAS,QAAQ;IACpB,MAAM,SAAS,WAAW,IAAI,MAAM;IACpC,MAAM,0BAAU,IAAI,KAA4D;AAChF,SAAK,MAAM,aAAa,QAAQ,cAAc,EAAE,EAAE;KACjD,MAAM,OACL,UAAU,OAAO,OACd,KAAK,IAAI,UAAU,WAAW,KAAK,EAAE,IAAI,UAAU,WAAW,GAC9D,OACC,IAAI,GAAG,UAAU,WAAW,KAAK,GAAG,UAAU,SAAS,EACtD,IAAI,UAAU,WAAW;AAC/B,SAAI,CAAC,QAAQ,KAAK,WAAW,UAAU,UAAU,KAAK,WAAW,YAAa;KAC9E,MAAM,YAAY,MAAM,iCAAiC;MACxD,SAAS,UAAU,WAAW,cAAc,IAAI,UAAU,WAAW,KAAK;MAC1E,YAAY,UAAU,WAAW;MACjC,MAAM,KAAK,QAAQ;MACnB,IAAI,KAAK;MACT,MAAM,KAAK;MACX,QAAQ,UAAU;MAClB,CAAC;AACF,SAAI,aAAa,UAAU,eAAe,UAAU,KAAK,eAAe,OAAO,KAAK,CACnF,SAAQ,IAAI,GAAG,UAAU,WAAW,KAAK,GAAG,KAAK,MAAM;MACtD;MACA,YAAY,UAAU;MACtB,CAAC;;AAGJ,eAAW,QAAQ,OAAO,IAAI,cAAe,QAAQ,QAAQ,CAAC,MAAM,CAAC,SAAS;UACxE;IACN,MAAM,aAAa,aAAa,IAAI,OAAO,WAAW;IACtD,MAAM,OAAO,KAAK,IAAI,OAAO,WAAW,EAAE,IAAI,OAAO,GAAG;AACxD,QAAI,QAAQ,WAAY,YAAW;KAAE;KAAM;KAAY;;AAExD,YAAS,KAAK;IAAE;IAAQ;IAAU,CAAC;AACnC,OAAI,OAAO,aAAa,UAAU;IACjC,MAAM,mBAAmB,OAAO,IAAI,SAAS,WAAW,KAAK,oBAAI,IAAI,KAAa;AAClF,qBAAiB,IAAI,SAAS,KAAK,oBAAoB,SAAS,KAAK,GAAG;AACxE,WAAO,IAAI,SAAS,WAAW,MAAM,iBAAiB;;;EAGxD,MAAM,YAAY,KAAK,oBAAoB,KAAK;EAChD,MAAM,2BAAW,IAAI,KAAa;AAClC,MAAI,CAAC,MAAM,MACV,MAAK,MAAM,CAAC,YAAY,gBAAgB,OACvC,MAAK,MAAM,SAAS,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,EAAE;GACjD,MAAM,OAAO,MAAM,GACjB,WAAW,qBAAqB,CAChC,OAAO,WAAW,CAClB,MAAM,cAAc,KAAK,WAAW,CACpC,MAAM,eAAe,KAAK,UAAU,CACpC,MAAM,YAAY,MAAM,MAAM,CAC9B,SAAS;AACX,QAAK,MAAM,OAAO,KAAM,UAAS,IAAI,GAAG,WAAW,GAAG,IAAI,WAAW;;EAIxE,MAAM,6BAAa,IAAI,KAAoC;AAC3D,MAAI,MAAM,SAAS,WAClB,MAAK,MAAM,CAAC,YAAY,gBAAgB,OACvC,YAAW,IACV,YACA,MAAM,QAAQ,4BAA4B,YAAY,CAAC,GAAG,YAAY,CAAC,CACvE;EAGH,MAAM,uBAAO,IAAI,KAAa;EAC9B,MAAM,QAAQ,IAAI,IAAY,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC;EACvD,MAAM,UAA2B,EAAE;EACnC,IAAI,UAAU;AACd,OAAK,MAAM,EAAE,QAAQ,cAAc,UAAU;AAC5C,OAAI,OAAO,aAAa,UAAU;AACjC,QACC,MAAM,SACN,MAAM,eACN,cACA,QAAQ,UACR,aAAa,IAAI,OAAO,WAAW,EAClC;AACD,WAAM,IAAI,OAAO,WAAW;AAC5B,WAAM,IAAI,OAAO,GAAG;;AAErB,YAAQ,KAAK;KAAE,OAAO;KAAQ,QAAQ;KAAa,QAAQ;KAAU,CAAC;AACtE;;GAED,MAAM,EAAE,MAAM,eAAe;GAC7B,MAAM,QAAQ;IACb,YAAY,WAAW;IACvB,IAAI,KAAK;IACT,OAAO,SAAS,MAAM,WAAW;IACjC,QAAQ,KAAK,UAAU;IACvB;GACD,MAAM,QAAQ,KAAK,oBAAoB,KAAK;GAC5C,MAAM,MAAM,GAAG,WAAW,KAAK,GAAG;AAClC,OAAI,KAAK,IAAI,IAAI,EAAE;AAClB,YAAQ,KAAK;KAAE,OAAO;KAAQ,QAAQ;KAAW;KAAO,CAAC;AACzD;;AAED,OAAI;IACH,MAAM,WACL,MAAM,SAAS,CAAC,MAAM,cACnB,MAAM,SAAS,oBAAoB,WAAW,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,GACzE;AACJ,QAAI,SAAU,WAAU;AACxB,SAAK,IAAI,IAAI;AACb,QAAI,MAAM,SAAS,YAAY;AAC9B,WAAM,IAAI,WAAW,KAAK;AAC1B,UAAK,MAAM,MAAM,WAAW,IAAI,WAAW,KAAK,EAAE,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,CAAE,OAAM,IAAI,GAAG;;AAEzF,YAAQ,KAAK;KACZ,OAAO;KACP,QAAQ,MAAM,QACX,WACC,UACA,YACD,SAAS,IAAI,IAAI,GAChB,YACA;KACJ;KACA,CAAC;YACM,OAAO;AACf,YAAQ,MAAM,mCAAmC,MAAM;AACvD,YAAQ,KAAK;KAAE,OAAO;KAAQ,QAAQ;KAAU,QAAQ;KAAe;KAAO,CAAC;;;AAGjF,MAAI,QAAS,sBAAqB;EAClC,IAAI,qBAAqB;AACzB,MAAI,MAAM,SAAS,eAAe,MAAM,OAAO,KAAK,MAAM,aACzD,KAAI;AACH,QAAK,MAAM,SAAS,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,CAAE,OAAM,WAAW,MAAM;WAC5D,OAAO;AACf,WAAQ,MAAM,0CAA0C,MAAM;AAC9D,wBAAqB;;AAGvB,SAAO;GAAE,SAAS;GAAM,MAAM;IAAE;IAAS;IAAoB;GAAE;UACvD,OAAO;AACf,UAAQ,MAAM,sBAAsB,MAAM;AAC1C,SAAO;GACN,SAAS;GACT,OAAO;IAAE,MAAM;IAAkB,SAAS;IAA4B;GACtE;;;;;;ACzSH,MAAa,YAAY;AAEzB,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,YAAY;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,UAAU,UAAU,QAAQ,GAAG;AACrC,KAAI,QAAS,QAAO;CACpB,MAAM,SAAS,YAAY,MAAM,mBAAmB;AACpD,KAAI,OAAQ,QAAO;CACnB,MAAM,OAAO,MAAM,UAAU,SAAS,YAAY;AAClD,KAAI,aAAa,KAAK,CAAE,QAAO;AAC/B,KAAI,CAAC,OAAQ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;AAChF,QAAO,aACN,MAAM,cACL,OAAO,IACP,gBAAgB,IAAI,IAAI,QAAQ,IAAI,EAAE,OAAO,OAAO,EACpD,MACA,OAAO,WAAW,SAAS,MAAM,WAAW,EAAE,MAAM,CAAC,GAAG,OACxD,CACD"}
|