emdash 1.3.0 → 1.4.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/{activation-Dim4YMM7.mjs → activation-CGlyigmg.mjs} +3 -3
- package/dist/{activation-Dim4YMM7.mjs.map → activation-CGlyigmg.mjs.map} +1 -1
- package/dist/{adapters-F_xorvWv.d.mts → adapters-D9a1PfqH.d.mts} +1 -1
- package/dist/{adapters-F_xorvWv.d.mts.map → adapters-D9a1PfqH.d.mts.map} +1 -1
- package/dist/{after-PcEvMY_6.mjs → after-32yNRvd2.mjs} +5 -2
- package/dist/{after-PcEvMY_6.mjs.map → after-32yNRvd2.mjs.map} +1 -1
- package/dist/api/route-utils.d.mts +4 -4
- package/dist/api/route-utils.mjs +50 -49
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +1 -1
- package/dist/api/schemas/index.mjs +7 -7
- package/dist/{api-D-7BNHoz.mjs → api--PYoyeTo.mjs} +121 -48
- package/dist/api--PYoyeTo.mjs.map +1 -0
- package/dist/api-tokens-DqSlkDVI.mjs +9 -0
- package/dist/api-tokens-DqSlkDVI.mjs.map +1 -0
- package/dist/{api-tokens-Bx38ZCQp.mjs → api-tokens-GNCsIegW.mjs} +3 -3
- package/dist/{api-tokens-Bx38ZCQp.mjs.map → api-tokens-GNCsIegW.mjs.map} +1 -1
- package/dist/{apply-T7ATgzCh.mjs → apply-DVnupNeS.mjs} +149 -91
- package/dist/apply-DVnupNeS.mjs.map +1 -0
- package/dist/{approvals-D-m6wvGl.mjs → approvals-DTtYSB27.mjs} +2 -2
- package/dist/{approvals-D-m6wvGl.mjs.map → approvals-DTtYSB27.mjs.map} +1 -1
- package/dist/{artifacts-htGyfCSt.mjs → artifacts-Dvdp2KK-.mjs} +29 -13
- package/dist/artifacts-Dvdp2KK-.mjs.map +1 -0
- package/dist/astro/image-endpoint.mjs +12 -2
- package/dist/astro/image-endpoint.mjs.map +1 -1
- package/dist/astro/index.d.mts +15 -14
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +59 -8
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +13 -12
- package/dist/astro/middleware/auth.d.mts.map +1 -1
- package/dist/astro/middleware/auth.mjs +10 -8
- package/dist/astro/middleware/auth.mjs.map +1 -1
- package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
- package/dist/astro/middleware/redirect.d.mts.map +1 -1
- package/dist/astro/middleware/redirect.mjs +129 -49
- package/dist/astro/middleware/redirect.mjs.map +1 -1
- package/dist/astro/middleware/request-context.d.mts.map +1 -1
- package/dist/astro/middleware/request-context.mjs +18 -9
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware.d.mts +13 -12
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +111 -101
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +11 -11
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +11 -11
- 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 +6 -6
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +14 -14
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +14 -14
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +14 -14
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +25 -25
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +25 -25
- package/dist/astro/routes/api/admin/bylines/index.mjs +25 -25
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +17 -17
- package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/bulk.mjs +16 -16
- package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/index.mjs +16 -16
- package/dist/astro/routes/api/admin/core-update.mjs +6 -6
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +5 -5
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +4 -4
- package/dist/astro/routes/api/admin/media-usage/activation.mjs +18 -18
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +19 -19
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +19 -19
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +22 -21
- package/dist/astro/routes/api/admin/media-usage/progress.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +26 -25
- package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +19 -19
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +19 -19
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +66 -65
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +5 -5
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +66 -65
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +66 -65
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +73 -72
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +66 -65
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +66 -65
- 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 +73 -72
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +66 -65
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +66 -65
- 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 +74 -73
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +68 -67
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/publisher-handle.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +67 -66
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +66 -65
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +66 -65
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +66 -65
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/_...path_.mjs +3 -3
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/approve.mjs +33 -32
- 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 +33 -32
- package/dist/astro/routes/api/admin/transfer/approvals/_id_/deny.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs +35 -34
- package/dist/astro/routes/api/admin/transfer/approvals/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs +35 -34
- package/dist/astro/routes/api/admin/transfer/capabilities.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/_id_/advance.mjs +35 -34
- 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 +36 -35
- 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 +36 -35
- 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 +35 -34
- 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 +36 -35
- package/dist/astro/routes/api/admin/transfer/exports/_id_/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs +37 -36
- package/dist/astro/routes/api/admin/transfer/exports/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/_id_/abandon.mjs +35 -34
- 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 +35 -34
- 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 +37 -36
- 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 +35 -34
- 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 +37 -36
- 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 +35 -34
- 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 +35 -34
- 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 +37 -36
- 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 +35 -34
- 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 +35 -34
- package/dist/astro/routes/api/admin/transfer/imports/_id_/receipt.mjs.map +1 -1
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs +37 -36
- package/dist/astro/routes/api/admin/transfer/imports/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -3
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +12 -12
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +4 -4
- package/dist/astro/routes/api/admin/users/index.mjs +11 -11
- package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
- package/dist/astro/routes/api/auth/handover.mjs +5 -5
- package/dist/astro/routes/api/auth/invite/accept.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/complete.mjs +15 -15
- package/dist/astro/routes/api/auth/invite/index.mjs +12 -12
- package/dist/astro/routes/api/auth/invite/register-options.mjs +13 -13
- package/dist/astro/routes/api/auth/logout.mjs +3 -3
- package/dist/astro/routes/api/auth/magic-link/send.mjs +14 -14
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +13 -13
- package/dist/astro/routes/api/auth/me.mjs +12 -12
- package/dist/astro/routes/api/auth/mode.mjs +3 -3
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +8 -8
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +11 -11
- package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/options.mjs +15 -15
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +13 -13
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +13 -13
- package/dist/astro/routes/api/auth/passkey/verify.mjs +15 -15
- package/dist/astro/routes/api/auth/signup/complete.mjs +15 -15
- package/dist/astro/routes/api/auth/signup/request.mjs +13 -13
- package/dist/astro/routes/api/auth/signup/verify.mjs +3 -3
- package/dist/astro/routes/api/calendar.mjs +12 -12
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +17 -17
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +15 -15
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +15 -15
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +9 -9
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +29 -28
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +15 -15
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +34 -33
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +34 -33
- 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 +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +15 -15
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +35 -27
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +8 -4
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +15 -15
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +15 -15
- package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/index.mjs +12 -12
- package/dist/astro/routes/api/content/_collection_/trash.mjs +12 -12
- package/dist/astro/routes/api/dashboard.mjs +22 -16
- package/dist/astro/routes/api/dashboard.mjs.map +1 -1
- package/dist/astro/routes/api/dev/emails.mjs +3 -3
- package/dist/astro/routes/api/dev/scheduled-tasks.mjs +97 -95
- package/dist/astro/routes/api/dev/scheduled-tasks.mjs.map +1 -1
- package/dist/astro/routes/api/health.mjs +4 -4
- package/dist/astro/routes/api/import/probe.d.mts +4 -3
- package/dist/astro/routes/api/import/probe.d.mts.map +1 -1
- package/dist/astro/routes/api/import/probe.mjs +27 -25
- package/dist/astro/routes/api/import/probe.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.d.mts +4 -3
- package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +7 -29
- package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +14 -13
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +29 -29
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +13 -12
- package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +14 -14
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +19 -19
- package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +14 -13
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +25 -24
- 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 +27 -25
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +14 -13
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +39 -38
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +4 -4
- package/dist/astro/routes/api/mcp.mjs +99 -83
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +16 -16
- package/dist/astro/routes/api/media/_id_/replace.mjs +12 -12
- package/dist/astro/routes/api/media/_id_/upload.mjs +6 -6
- package/dist/astro/routes/api/media/_id_/usage.mjs +28 -27
- package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_.mjs +26 -25
- package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +5 -5
- package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -1
- package/dist/astro/routes/api/media/file/_...key_.mjs +62 -8
- package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -1
- package/dist/astro/routes/api/media/folders/_id_.mjs +13 -13
- package/dist/astro/routes/api/media/folders/index.mjs +13 -13
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
- package/dist/astro/routes/api/media/providers/index.mjs +4 -4
- package/dist/astro/routes/api/media/upload-url.mjs +15 -15
- package/dist/astro/routes/api/media.mjs +30 -29
- package/dist/astro/routes/api/media.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +17 -15
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.mjs +17 -15
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +17 -15
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.mjs +17 -15
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_.mjs +17 -15
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/index.mjs +17 -15
- package/dist/astro/routes/api/menus/index.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.mjs +2 -2
- package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/code.mjs +8 -8
- package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
- package/dist/astro/routes/api/oauth/register.mjs +5 -5
- package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
- package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
- package/dist/astro/routes/api/oauth/token.d.mts.map +1 -1
- package/dist/astro/routes/api/oauth/token.mjs +7 -7
- package/dist/astro/routes/api/oauth/token.mjs.map +1 -1
- package/dist/astro/routes/api/openapi.json.mjs +12 -12
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +9 -9
- 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 +21 -20
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/index.mjs +21 -20
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/index.mjs +34 -33
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +34 -33
- package/dist/astro/routes/api/relations/index.mjs.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +15 -15
- package/dist/astro/routes/api/schema/block-types/_slug_/index.mjs +66 -65
- 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 +66 -65
- 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 +66 -65
- package/dist/astro/routes/api/schema/block-types/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +66 -65
- 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 +66 -65
- 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 +66 -65
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +66 -65
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +66 -65
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +66 -65
- 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 +66 -65
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +66 -65
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +20 -18
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +19 -17
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +20 -18
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +13 -11
- package/dist/astro/routes/api/search/stats.mjs.map +1 -1
- package/dist/astro/routes/api/search/suggest.mjs +19 -17
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +19 -17
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +19 -17
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/export.mjs +7 -7
- package/dist/astro/routes/api/settings/backups/index.mjs +8 -8
- package/dist/astro/routes/api/settings/domain-notify.mjs +7 -7
- package/dist/astro/routes/api/settings/domain.mjs +19 -17
- package/dist/astro/routes/api/settings/domain.mjs.map +1 -1
- package/dist/astro/routes/api/settings/email.mjs +5 -5
- package/dist/astro/routes/api/settings.mjs +25 -23
- package/dist/astro/routes/api/settings.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.mjs +18 -18
- package/dist/astro/routes/api/setup/admin.mjs +14 -14
- package/dist/astro/routes/api/setup/dev-bypass.mjs +45 -44
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +3 -3
- package/dist/astro/routes/api/setup/index.mjs +48 -47
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +4 -4
- package/dist/astro/routes/api/site/domain-proof.mjs +17 -15
- package/dist/astro/routes/api/site/domain-proof.mjs.map +1 -1
- package/dist/astro/routes/api/snapshot.mjs +9 -9
- 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 +25 -24
- 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 +35 -34
- 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.mjs +5 -5
- package/dist/astro/routes/api/visual-editing/action-token.mjs +5 -5
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +17 -17
- package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +3 -3
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +1 -1
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +24 -13
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +22 -17
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +21 -17
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.mjs +14 -10
- package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/index.mjs +21 -17
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
- package/dist/astro/routes/api/widget-components.mjs +3 -3
- package/dist/astro/routes/robots.txt.mjs +16 -14
- package/dist/astro/routes/robots.txt.mjs.map +1 -1
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +18 -16
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
- package/dist/astro/routes/sitemap.xml.mjs +16 -14
- package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
- package/dist/astro/types.d.mts +22 -20
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/{audit-_gieLVGU.mjs → audit-B8XE-0UV.mjs} +2 -2
- package/dist/{audit-_gieLVGU.mjs.map → audit-B8XE-0UV.mjs.map} +1 -1
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/auth/providers/microsoft.d.mts +1 -1
- package/dist/{authorize-DPFBGbE6.mjs → authorize-NJgp8kLI.mjs} +2 -2
- package/dist/{authorize-DPFBGbE6.mjs.map → authorize-NJgp8kLI.mjs.map} +1 -1
- package/dist/{backup-3FgVxiDJ.mjs → backup-8rPSJ28a.mjs} +4 -4
- package/dist/{backup-3FgVxiDJ.mjs.map → backup-8rPSJ28a.mjs.map} +1 -1
- package/dist/{block-types-CYcG56JB.mjs → block-types-BbOrfnWs.mjs} +5 -5
- package/dist/{block-types-CYcG56JB.mjs.map → block-types-BbOrfnWs.mjs.map} +1 -1
- package/dist/{block-values-gCX4HBSl.mjs → block-values-Dg0-8PPS.mjs} +4 -4
- package/dist/{block-values-gCX4HBSl.mjs.map → block-values-Dg0-8PPS.mjs.map} +1 -1
- package/dist/{byline-BR1qhyiw.mjs → byline-DHJS-GGb.mjs} +123 -38
- package/dist/byline-DHJS-GGb.mjs.map +1 -0
- package/dist/{byline-fields-BLXZnX7N.mjs → byline-fields-CiR8FvvF.mjs} +3 -3
- package/dist/{byline-fields-BLXZnX7N.mjs.map → byline-fields-CiR8FvvF.mjs.map} +1 -1
- package/dist/{byline-fields-4ClDC88c.mjs → byline-fields-D6KYsEa7.mjs} +2 -2
- package/dist/{byline-fields-4ClDC88c.mjs.map → byline-fields-D6KYsEa7.mjs.map} +1 -1
- package/dist/{byline-registry-dvt4N3xV.mjs → byline-registry-BhzpO41z.mjs} +3 -3
- package/dist/{byline-registry-dvt4N3xV.mjs.map → byline-registry-BhzpO41z.mjs.map} +1 -1
- package/dist/{bylines-CVOvRUL7.mjs → bylines-Bsg5cH4S.mjs} +7 -7
- package/dist/bylines-Bsg5cH4S.mjs.map +1 -0
- package/dist/{bylines-DxOs9B7z.mjs → bylines-f_ZEc6Sn.mjs} +8 -8
- package/dist/{bylines-DxOs9B7z.mjs.map → bylines-f_ZEc6Sn.mjs.map} +1 -1
- package/dist/{cache-CEU9wo_h.mjs → cache-5DHbpEWu.mjs} +4 -4
- package/dist/{cache-CEU9wo_h.mjs.map → cache-5DHbpEWu.mjs.map} +1 -1
- package/dist/{capture-triggers-CT6dK9zd.mjs → capture-triggers-BezAvWcB.mjs} +2 -2
- package/dist/{capture-triggers-CT6dK9zd.mjs.map → capture-triggers-BezAvWcB.mjs.map} +1 -1
- package/dist/{challenge-store-C17BYx2-.mjs → challenge-store-B1C0V4b3.mjs} +1 -1
- package/dist/{challenge-store-C17BYx2-.mjs.map → challenge-store-B1C0V4b3.mjs.map} +1 -1
- package/dist/{chunks-xC4UD5-S.mjs → chunks-DiW8VMwz.mjs} +2 -2
- package/dist/{chunks-xC4UD5-S.mjs.map → chunks-DiW8VMwz.mjs.map} +1 -1
- package/dist/cli/index.mjs +53 -52
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +61 -61
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +3 -2
- package/dist/client/index.mjs.map +1 -1
- package/dist/{collection-slugs-cache-e09QeJQt.mjs → collection-slugs-cache-DIrLjqH-.mjs} +20 -14
- package/dist/collection-slugs-cache-DIrLjqH-.mjs.map +1 -0
- package/dist/{comment-UvIWDKcW.mjs → comment-DB74Zpa4.mjs} +18 -8
- package/dist/comment-DB74Zpa4.mjs.map +1 -0
- package/dist/{comment-reaction-dGp6_FRo.mjs → comment-reaction-BScxIWUn.mjs} +2 -2
- package/dist/{comment-reaction-dGp6_FRo.mjs.map → comment-reaction-BScxIWUn.mjs.map} +1 -1
- package/dist/{comments-pej-_BUO.mjs → comments-Cor_zKml.mjs} +3 -3
- package/dist/{comments-pej-_BUO.mjs.map → comments-Cor_zKml.mjs.map} +1 -1
- package/dist/config-Cs_AwWXI.mjs +106 -0
- package/dist/config-Cs_AwWXI.mjs.map +1 -0
- package/dist/{config-CFMojMFK.d.mts → config-D44_8G9J.d.mts} +3 -1
- package/dist/config-D44_8G9J.d.mts.map +1 -0
- package/dist/{config-Bsm_u_oE.d.mts → config-sDhZvkLR.d.mts} +56 -20
- package/dist/config-sDhZvkLR.d.mts.map +1 -0
- package/dist/{content-DQSRZTVw.mjs → content-BKHUVsE5.mjs} +67 -30
- package/dist/content-BKHUVsE5.mjs.map +1 -0
- package/dist/{content-list-query-CYKcY6Vi.d.mts → content-list-query-ByP4jRpZ.d.mts} +1 -1
- package/dist/{content-list-query-CYKcY6Vi.d.mts.map → content-list-query-ByP4jRpZ.d.mts.map} +1 -1
- package/dist/{content-policy-Dm32n9C6.mjs → content-policy-BmE0MPZY.mjs} +1 -1
- package/dist/{content-policy-Dm32n9C6.mjs.map → content-policy-BmE0MPZY.mjs.map} +1 -1
- package/dist/{content-repair-DNh5--x5.mjs → content-repair-Ukdxoq-R.mjs} +4 -4
- package/dist/{content-repair-DNh5--x5.mjs.map → content-repair-Ukdxoq-R.mjs.map} +1 -1
- package/dist/{context-BYptmCN0.mjs → context-CzjejcsE.mjs} +32 -33
- package/dist/context-CzjejcsE.mjs.map +1 -0
- package/dist/{credits-B9iORdWB.mjs → credits-BKREepht.mjs} +3 -3
- package/dist/{credits-B9iORdWB.mjs.map → credits-BKREepht.mjs.map} +1 -1
- package/dist/{dashboard-D0jcgBD7.mjs → dashboard-ynr1qJWM.mjs} +10 -9
- package/dist/dashboard-ynr1qJWM.mjs.map +1 -0
- package/dist/database/migration-lock.mjs +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +3 -3
- package/dist/db/libsql-migrations.d.mts +1 -1
- package/dist/db/libsql-migrations.mjs +5 -5
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres-migrations.d.mts +1 -1
- package/dist/db/postgres-migrations.mjs +5 -5
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite-migrations.d.mts +1 -1
- package/dist/db/sqlite-migrations.mjs +5 -5
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/{db-errors-CBD5yMro.mjs → db-errors-unnO6yiZ.mjs} +12 -2
- package/dist/db-errors-unnO6yiZ.mjs.map +1 -0
- package/dist/deferred-tasks-wlMFJL95.d.mts +10 -0
- package/dist/deferred-tasks-wlMFJL95.d.mts.map +1 -0
- package/dist/{destination-r2zIAZ2S.mjs → destination-DR3IHjmy.mjs} +1 -1
- package/dist/{destination-r2zIAZ2S.mjs.map → destination-DR3IHjmy.mjs.map} +1 -1
- package/dist/{device-flow-BkFKBoAn.mjs → device-flow-D1U392GC.mjs} +3 -5
- package/dist/device-flow-D1U392GC.mjs.map +1 -0
- package/dist/{dialect-helpers-7_IqPdh9.mjs → dialect-helpers-B1XN2HGB.mjs} +10 -3
- package/dist/dialect-helpers-B1XN2HGB.mjs.map +1 -0
- package/dist/{direct-executor-Cbxzg4qe.mjs → direct-executor-Bs2g0ake.mjs} +4 -4
- package/dist/{direct-executor-Cbxzg4qe.mjs.map → direct-executor-Bs2g0ake.mjs.map} +1 -1
- package/dist/{dist-Cfu8mMBs.mjs → dist-BUmWMTbN.mjs} +1 -1
- package/dist/{dist-Cfu8mMBs.mjs.map → dist-BUmWMTbN.mjs.map} +1 -1
- package/dist/{email-locale-BJ8DjTzZ.mjs → email-locale-Bs3HFdnq.mjs} +1 -1
- package/dist/{email-locale-BJ8DjTzZ.mjs.map → email-locale-Bs3HFdnq.mjs.map} +1 -1
- package/dist/{emdash-runtime-DVi7vtXC.mjs → emdash-runtime-C8T-pZpS.mjs} +108 -62
- package/dist/emdash-runtime-C8T-pZpS.mjs.map +1 -0
- package/dist/{enrich-Duu4sV3a.mjs → enrich-DFlfnd3u.mjs} +3 -3
- package/dist/{enrich-Duu4sV3a.mjs.map → enrich-DFlfnd3u.mjs.map} +1 -1
- package/dist/{entry-lock-C7VX0NGK.d.mts → entry-lock-BulbgPBX.d.mts} +23 -23
- package/dist/{entry-lock-C7VX0NGK.d.mts.map → entry-lock-BulbgPBX.d.mts.map} +1 -1
- package/dist/{entry-lock-Df6-XhIu.mjs → entry-lock-CRVmruM0.mjs} +4 -4
- package/dist/{entry-lock-Df6-XhIu.mjs.map → entry-lock-CRVmruM0.mjs.map} +1 -1
- package/dist/{entry-lock-DLxCffFW.mjs → entry-lock-D-zJQ4q6.mjs} +3 -3
- package/dist/{entry-lock-DLxCffFW.mjs.map → entry-lock-D-zJQ4q6.mjs.map} +1 -1
- package/dist/{entry-locks-DJAqVweV.mjs → entry-locks-CJ9uhqg1.mjs} +2 -2
- package/dist/{entry-locks-DJAqVweV.mjs.map → entry-locks-CJ9uhqg1.mjs.map} +1 -1
- package/dist/{env-types-C3FCVBWe.mjs → env-types-BE3bCvfP.mjs} +5 -5
- package/dist/{env-types-C3FCVBWe.mjs.map → env-types-BE3bCvfP.mjs.map} +1 -1
- package/dist/{error-CVWeIOku.mjs → error-BCMgPxdn.mjs} +3 -3
- package/dist/{error-CVWeIOku.mjs.map → error-BCMgPxdn.mjs.map} +1 -1
- package/dist/{errors-BOYNdIo3.mjs → errors-8gJqv-XV.mjs} +15 -2
- package/dist/{errors-BOYNdIo3.mjs.map → errors-8gJqv-XV.mjs.map} +1 -1
- package/dist/{fence-C3MUitUN.mjs → fence-Dagicj14.mjs} +4 -4
- package/dist/{fence-C3MUitUN.mjs.map → fence-Dagicj14.mjs.map} +1 -1
- package/dist/{field-map-Bft9LKak.mjs → field-map-BSXdNGt5.mjs} +11 -10
- package/dist/field-map-BSXdNGt5.mjs.map +1 -0
- package/dist/{focal-point-JX8kcOTQ.mjs → focal-point-CgCcr1Ca.mjs} +1 -1
- package/dist/{focal-point-JX8kcOTQ.mjs.map → focal-point-CgCcr1Ca.mjs.map} +1 -1
- package/dist/{fts-manager-Beg3e4bI.mjs → fts-manager-6861qcwk.mjs} +68 -22
- package/dist/fts-manager-6861qcwk.mjs.map +1 -0
- package/dist/{gc-ByyAYiYE.mjs → gc-CNkXB3mE.mjs} +8 -8
- package/dist/{gc-ByyAYiYE.mjs.map → gc-CNkXB3mE.mjs.map} +1 -1
- package/dist/{hook-result-BrdLyOdI.d.mts → hook-result-f8t7hIuu.d.mts} +1 -1
- package/dist/{hook-result-BrdLyOdI.d.mts.map → hook-result-f8t7hIuu.d.mts.map} +1 -1
- package/dist/{hreflang-CY_F5OjF.d.mts → hreflang-8dUOJAPJ.d.mts} +2 -2
- package/dist/{hreflang-CY_F5OjF.d.mts.map → hreflang-8dUOJAPJ.d.mts.map} +1 -1
- package/dist/{hreflang-C8Jb-hrf.mjs → hreflang-BW5A4FLK.mjs} +8 -8
- package/dist/{hreflang-C8Jb-hrf.mjs.map → hreflang-BW5A4FLK.mjs.map} +1 -1
- package/dist/{http-route-dispatch-CyeW6iPv.mjs → http-route-dispatch-rXKvTNm9.mjs} +5 -5
- package/dist/{http-route-dispatch-CyeW6iPv.mjs.map → http-route-dispatch-rXKvTNm9.mjs.map} +1 -1
- package/dist/{identity-Cael5uTT.mjs → identity-CPRRSovU.mjs} +3 -3
- package/dist/{identity-Cael5uTT.mjs.map → identity-CPRRSovU.mjs.map} +1 -1
- package/dist/{import-BUXjdZUn.mjs → import-yVbfPyfd.mjs} +5 -5
- package/dist/{import-BUXjdZUn.mjs.map → import-yVbfPyfd.mjs.map} +1 -1
- package/dist/index-VM7Fzxwe.d.mts +260 -0
- package/dist/index-VM7Fzxwe.d.mts.map +1 -0
- package/dist/index.d.mts +25 -24
- package/dist/index.mjs +89 -88
- package/dist/{install-finalization-3JX5qQEA.mjs → install-finalization-RU6VrHOX.mjs} +1 -1
- package/dist/{install-finalization-3JX5qQEA.mjs.map → install-finalization-RU6VrHOX.mjs.map} +1 -1
- package/dist/{json-recordset-BUjxhr77.mjs → json-recordset-D0WhN2UA.mjs} +2 -2
- package/dist/{json-recordset-BUjxhr77.mjs.map → json-recordset-D0WhN2UA.mjs.map} +1 -1
- package/dist/{lifecycle-7vUJeFRe.mjs → lifecycle-B8d7Rdqx.mjs} +1 -1
- package/dist/{lifecycle-7vUJeFRe.mjs.map → lifecycle-B8d7Rdqx.mjs.map} +1 -1
- package/dist/{load-CdAG9wz-.mjs → load-D4xtzm6h.mjs} +2 -2
- package/dist/{load-CdAG9wz-.mjs.map → load-D4xtzm6h.mjs.map} +1 -1
- package/dist/{loader-CswroUbe.mjs → loader-DhnedqY4.mjs} +199 -101
- package/dist/loader-DhnedqY4.mjs.map +1 -0
- package/dist/{loops-uA4iTOzd.mjs → loops-B2YS-Zzr.mjs} +2 -2
- package/dist/{loops-uA4iTOzd.mjs.map → loops-B2YS-Zzr.mjs.map} +1 -1
- package/dist/{manifest-builder-B8zjuH3f.mjs → manifest-builder-g1FLviel.mjs} +10 -3
- package/dist/manifest-builder-g1FLviel.mjs.map +1 -0
- package/dist/media/image-endpoint.d.mts +3 -2
- package/dist/media/image-endpoint.d.mts.map +1 -1
- package/dist/media/image-endpoint.mjs +17 -8
- package/dist/media/image-endpoint.mjs.map +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +7 -6
- package/dist/media/index.mjs.map +1 -1
- package/dist/media/local-runtime.d.mts +15 -14
- package/dist/media/local-runtime.d.mts.map +1 -1
- package/dist/media/local-runtime.mjs +20 -15
- package/dist/media/local-runtime.mjs.map +1 -1
- package/dist/{media-1WC65OCB.mjs → media-BR4_t-Wd.mjs} +3 -3
- package/dist/{media-1WC65OCB.mjs.map → media-BR4_t-Wd.mjs.map} +1 -1
- package/dist/{media--dJRU6i2.mjs → media-CikS-q6E.mjs} +4 -4
- package/dist/{media--dJRU6i2.mjs.map → media-CikS-q6E.mjs.map} +1 -1
- package/dist/{media-Bws9f18T.mjs → media-DepNLhPq.mjs} +14 -4
- package/dist/media-DepNLhPq.mjs.map +1 -0
- package/dist/{media-allowlist-BJB7MFx6.mjs → media-allowlist-BMBLqyWh.mjs} +2 -2
- package/dist/{media-allowlist-BJB7MFx6.mjs.map → media-allowlist-BMBLqyWh.mjs.map} +1 -1
- package/dist/{media-folders-Dn3C16B8.mjs → media-folders-CI0Wydfo.mjs} +2 -2
- package/dist/{media-folders-Dn3C16B8.mjs.map → media-folders-CI0Wydfo.mjs.map} +1 -1
- package/dist/{media-usage-CF0WVcLO.mjs → media-usage-X1_20MY-.mjs} +8 -8
- package/dist/{media-usage-CF0WVcLO.mjs.map → media-usage-X1_20MY-.mjs.map} +1 -1
- package/dist/{media-usage-activation-C9HwVw5w.mjs → media-usage-activation-bWusy3M2.mjs} +3 -3
- package/dist/{media-usage-activation-C9HwVw5w.mjs.map → media-usage-activation-bWusy3M2.mjs.map} +1 -1
- package/dist/{media-usage-work-m3AWTmmC.mjs → media-usage-work-B2RaoJIa.mjs} +4 -4
- package/dist/{media-usage-work-m3AWTmmC.mjs.map → media-usage-work-B2RaoJIa.mjs.map} +1 -1
- package/dist/{media-usage-work-CkLa5-nc.mjs → media-usage-work-BCK2J-v_.mjs} +7 -7
- package/dist/{media-usage-work-CkLa5-nc.mjs.map → media-usage-work-BCK2J-v_.mjs.map} +1 -1
- package/dist/{menus-BCVSSp1z.mjs → menus-B0Qqv_cS.mjs} +176 -92
- package/dist/menus-B0Qqv_cS.mjs.map +1 -0
- package/dist/{menus-Cl4kwdt7.mjs → menus-oypxT1pI.mjs} +134 -53
- package/dist/menus-oypxT1pI.mjs.map +1 -0
- package/dist/{menus-BSzwObhV.mjs → menus-uEAxWAm1.mjs} +3 -3
- package/dist/{menus-BSzwObhV.mjs.map → menus-uEAxWAm1.mjs.map} +1 -1
- package/dist/migrations/index.d.mts +1 -1
- package/dist/migrations/index.mjs +5 -5
- package/dist/{mime-B5M9R53H.mjs → mime-D1We9jUx.mjs} +1 -1
- package/dist/{mime-B5M9R53H.mjs.map → mime-D1We9jUx.mjs.map} +1 -1
- package/dist/{normalize-BuWa0lvd.mjs → normalize-Cx-bNwhP.mjs} +41 -12
- package/dist/normalize-Cx-bNwhP.mjs.map +1 -0
- package/dist/{oauth-authorization-TpEJrYB7.mjs → oauth-authorization-CPLgBrdo.mjs} +19 -6
- package/dist/oauth-authorization-CPLgBrdo.mjs.map +1 -0
- package/dist/{oauth-state-store-CHMn_mwc.mjs → oauth-state-store-BndCfRum.mjs} +1 -1
- package/dist/{oauth-state-store-CHMn_mwc.mjs.map → oauth-state-store-BndCfRum.mjs.map} +1 -1
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{object-cache-Bo6DGaC9.mjs → object-cache-DmKr09La.mjs} +21 -4
- package/dist/{object-cache-Bo6DGaC9.mjs.map → object-cache-DmKr09La.mjs.map} +1 -1
- package/dist/{options-DJWaq3Ie.d.mts → options-BUUgroHg.d.mts} +3 -3
- package/dist/{options-DJWaq3Ie.d.mts.map → options-BUUgroHg.d.mts.map} +1 -1
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.mjs +16 -14
- package/dist/page/index.mjs.map +1 -1
- package/dist/{parse-DgQ2NABT.mjs → parse-B_b6gZxG.mjs} +2 -2
- package/dist/{parse-DgQ2NABT.mjs.map → parse-B_b6gZxG.mjs.map} +1 -1
- package/dist/{parse-CWHOFc6z.d.mts → parse-Dndx1QmN.d.mts} +3 -3
- package/dist/{parse-CWHOFc6z.d.mts.map → parse-Dndx1QmN.d.mts.map} +1 -1
- package/dist/{passkey-config-D0kdzEao.mjs → passkey-config-D2Lua5__.mjs} +1 -1
- package/dist/{passkey-config-D0kdzEao.mjs.map → passkey-config-D2Lua5__.mjs.map} +1 -1
- package/dist/{patterns-CMNnYCgf.mjs → patterns-CryGz_EV.mjs} +1 -1
- package/dist/{patterns-CMNnYCgf.mjs.map → patterns-CryGz_EV.mjs.map} +1 -1
- package/dist/{placeholder-D41vk11_.d.mts → placeholder-CSKu5OkD.d.mts} +9 -1
- package/dist/placeholder-CSKu5OkD.d.mts.map +1 -0
- package/dist/plugin-test-runtime.d.mts +17 -15
- package/dist/plugin-test-runtime.d.mts.map +1 -1
- package/dist/plugin-test-runtime.mjs +99 -98
- package/dist/plugin-types.d.mts +2 -2
- package/dist/plugin-utils.d.mts +13 -12
- package/dist/plugin-utils.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +13 -12
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/host.d.mts +5 -5
- package/dist/plugins/host.mjs +48 -47
- package/dist/{policy-DLQ--Hnm.mjs → policy-BPugqmeV.mjs} +13 -5
- package/dist/policy-BPugqmeV.mjs.map +1 -0
- package/dist/{protocol-79kUO7jP.d.mts → protocol-PoAfD_9W.d.mts} +2 -2
- package/dist/{protocol-79kUO7jP.d.mts.map → protocol-PoAfD_9W.d.mts.map} +1 -1
- package/dist/{public-plugin-api-routes-BuAMJ8nN.mjs → public-plugin-api-routes-CMljrTby.mjs} +9 -9
- package/dist/{public-plugin-api-routes-BuAMJ8nN.mjs.map → public-plugin-api-routes-CMljrTby.mjs.map} +1 -1
- package/dist/{public-submission-Di3TsgzX.mjs → public-submission-ayqoyee4.mjs} +10 -10
- package/dist/{public-submission-Di3TsgzX.mjs.map → public-submission-ayqoyee4.mjs.map} +1 -1
- package/dist/query-BFHjCzSh.mjs +37 -0
- package/dist/query-BFHjCzSh.mjs.map +1 -0
- package/dist/{query-CpnRlBh8.mjs → query-D62NntCZ.mjs} +55 -65
- package/dist/query-D62NntCZ.mjs.map +1 -0
- package/dist/{query-haKvLAWl.mjs → query-LmPY2y0C.mjs} +5 -5
- package/dist/{query-haKvLAWl.mjs.map → query-LmPY2y0C.mjs.map} +1 -1
- package/dist/{rate-limit-Xp4d0NBY.mjs → rate-limit-C04Llsoc.mjs} +3 -3
- package/dist/{rate-limit-Xp4d0NBY.mjs.map → rate-limit-C04Llsoc.mjs.map} +1 -1
- package/dist/{redirect-DiS_3mA4.mjs → redirect-DjLdw427.mjs} +6 -6
- package/dist/{redirect-DiS_3mA4.mjs.map → redirect-DjLdw427.mjs.map} +1 -1
- package/dist/{redirect-paths-CNYq7w80.mjs → redirect-paths-DOaVBp6E.mjs} +1 -1
- package/dist/{redirect-paths-CNYq7w80.mjs.map → redirect-paths-DOaVBp6E.mjs.map} +1 -1
- package/dist/{redirects-BHpy-VsZ.mjs → redirects-Cpq1catN.mjs} +6 -6
- package/dist/{redirects-BHpy-VsZ.mjs.map → redirects-Cpq1catN.mjs.map} +1 -1
- package/dist/{redirects-BEVSRMa2.mjs → redirects-CyvvZrCJ.mjs} +2 -2
- package/dist/{redirects-BEVSRMa2.mjs.map → redirects-CyvvZrCJ.mjs.map} +1 -1
- package/dist/{registry-TUVaid9Z.mjs → registry-B0-O575m.mjs} +25 -20
- package/dist/registry-B0-O575m.mjs.map +1 -0
- package/dist/{relations-CA_QuMTU.mjs → relations-WIOojTL4.mjs} +24 -11
- package/dist/relations-WIOojTL4.mjs.map +1 -0
- package/dist/{request-cache-C4CIo5ad.mjs → request-cache-5z2WzWmh.mjs} +1 -1
- package/dist/{request-cache-C4CIo5ad.mjs.map → request-cache-5z2WzWmh.mjs.map} +1 -1
- package/dist/request-context.d.mts +12 -1
- package/dist/request-context.d.mts.map +1 -1
- package/dist/request-context.mjs.map +1 -1
- package/dist/{resolve-DwNM-CXl.mjs → resolve-BNnm8EkB.mjs} +14 -13
- package/dist/{resolve-DwNM-CXl.mjs.map → resolve-BNnm8EkB.mjs.map} +1 -1
- package/dist/{resolve-D-kqyKns.mjs → resolve-DdNXBJSr.mjs} +4 -4
- package/dist/resolve-DdNXBJSr.mjs.map +1 -0
- package/dist/{revision-BVp8S0e_.mjs → revision-Dx7Uth1X.mjs} +5 -5
- package/dist/{revision-BVp8S0e_.mjs.map → revision-Dx7Uth1X.mjs.map} +1 -1
- package/dist/{routes-BerZFrvV.mjs → routes-avqgc-8r.mjs} +3 -3
- package/dist/{routes-BerZFrvV.mjs.map → routes-avqgc-8r.mjs.map} +1 -1
- package/dist/{runner-C5NeAkBQ.mjs → runner-Bkkfk4O8.mjs} +78 -4
- package/dist/runner-Bkkfk4O8.mjs.map +1 -0
- package/dist/{runner-BObHz5FC.d.mts → runner-Dfgp6-S_.d.mts} +7 -2
- package/dist/runner-Dfgp6-S_.d.mts.map +1 -0
- package/dist/runtime.d.mts +14 -13
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +8 -6
- package/dist/runtime.mjs.map +1 -1
- package/dist/schema/project-env-types.mjs +43 -42
- package/dist/schema/project-env-types.mjs.map +1 -1
- package/dist/{schema-DJRfvM_o.mjs → schema-B-3rntlX.mjs} +11 -11
- package/dist/{schema-DJRfvM_o.mjs.map → schema-B-3rntlX.mjs.map} +1 -1
- package/dist/{schema-C4OBuv6Z.mjs → schema-BqBlUZtb.mjs} +4 -4
- package/dist/{schema-C4OBuv6Z.mjs.map → schema-BqBlUZtb.mjs.map} +1 -1
- package/dist/{scopes-BU03K7Uo.mjs → scopes-DNaY7Ey0.mjs} +3 -3
- package/dist/{scopes-BU03K7Uo.mjs.map → scopes-DNaY7Ey0.mjs.map} +1 -1
- package/dist/{search-DfVzks89.mjs → search-BPWTnpnD.mjs} +32 -32
- package/dist/search-BPWTnpnD.mjs.map +1 -0
- package/dist/{secrets-Cc_O3Kp-.mjs → secrets-Dswzrz3k.mjs} +2 -2
- package/dist/{secrets-Cc_O3Kp-.mjs.map → secrets-Dswzrz3k.mjs.map} +1 -1
- package/dist/{sections-BMy4JVUz.mjs → sections-rSao6rBG.mjs} +3 -3
- package/dist/{sections-BMy4JVUz.mjs.map → sections-rSao6rBG.mjs.map} +1 -1
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +42 -41
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +30 -28
- package/dist/seo/index.mjs.map +1 -1
- package/dist/{seo-VZYOEy8f.mjs → seo-B_H_pqOd.mjs} +3 -3
- package/dist/{seo-VZYOEy8f.mjs.map → seo-B_H_pqOd.mjs.map} +1 -1
- package/dist/{service-Bo_usgSk.mjs → service-DpiUQVpp.mjs} +2 -2
- package/dist/{service-Bo_usgSk.mjs.map → service-DpiUQVpp.mjs.map} +1 -1
- package/dist/{session-user-DlpPdf8L.mjs → session-user-DiE4JKPP.mjs} +4 -4
- package/dist/{session-user-DlpPdf8L.mjs.map → session-user-DiE4JKPP.mjs.map} +1 -1
- package/dist/{settings-DS914jjE.mjs → settings--XlUdUaI.mjs} +3 -3
- package/dist/{settings-DS914jjE.mjs.map → settings--XlUdUaI.mjs.map} +1 -1
- package/dist/{settings-CWb84sDm.mjs → settings-D932YP2-.mjs} +111 -44
- package/dist/settings-D932YP2-.mjs.map +1 -0
- package/dist/{setup-complete-BuNxAUiN.mjs → setup-complete-qsJYWutC.mjs} +2 -2
- package/dist/{setup-complete-BuNxAUiN.mjs.map → setup-complete-qsJYWutC.mjs.map} +1 -1
- package/dist/{setup-nonce-BnEAX0iy.mjs → setup-nonce-CBFgUFXw.mjs} +1 -1
- package/dist/{setup-nonce-BnEAX0iy.mjs.map → setup-nonce-CBFgUFXw.mjs.map} +1 -1
- package/dist/{site-domain-Bq5j5bVg.mjs → site-domain-oRGS_JfA.mjs} +2 -2
- package/dist/{site-domain-Bq5j5bVg.mjs.map → site-domain-oRGS_JfA.mjs.map} +1 -1
- package/dist/{sitemap-name-BTg2NJJv.mjs → sitemap-name-B8QP8wud.mjs} +1 -1
- package/dist/{sitemap-name-BTg2NJJv.mjs.map → sitemap-name-B8QP8wud.mjs.map} +1 -1
- package/dist/{slugify-bu2-jKia.mjs → slugify-BDEG9pLk.mjs} +1 -1
- package/dist/{slugify-bu2-jKia.mjs.map → slugify-BDEG9pLk.mjs.map} +1 -1
- package/dist/{snapshot-DYsG4uOq.mjs → snapshot-BjaXDZQ5.mjs} +2 -2
- package/dist/{snapshot-DYsG4uOq.mjs.map → snapshot-BjaXDZQ5.mjs.map} +1 -1
- package/dist/{stage-D8DWgPcO.mjs → stage-CZQnXM_G.mjs} +3 -3
- package/dist/{stage-D8DWgPcO.mjs.map → stage-CZQnXM_G.mjs.map} +1 -1
- package/dist/{staged-CD_imitH.mjs → staged-ByBmPFtX.mjs} +3 -3
- package/dist/{staged-CD_imitH.mjs.map → staged-ByBmPFtX.mjs.map} +1 -1
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/{storage-query-DRyu3bSU.d.mts → storage-query-BFp06Y0s.d.mts} +22 -10
- package/dist/storage-query-BFp06Y0s.d.mts.map +1 -0
- package/dist/{taxonomies-Dd9JJv_a.mjs → taxonomies-5SR76j11.mjs} +15 -17
- package/dist/taxonomies-5SR76j11.mjs.map +1 -0
- package/dist/{taxonomies-ChnU7Mc8.mjs → taxonomies-B__VmCKQ.mjs} +64 -58
- package/dist/taxonomies-B__VmCKQ.mjs.map +1 -0
- package/dist/{taxonomy-C_C_LBAU.mjs → taxonomy-CMI5fczd.mjs} +30 -17
- package/dist/taxonomy-CMI5fczd.mjs.map +1 -0
- package/dist/{transaction-BVYIo_yu.mjs → transaction-CkoQ5wqQ.mjs} +1 -1
- package/dist/{transaction-BVYIo_yu.mjs.map → transaction-CkoQ5wqQ.mjs.map} +1 -1
- package/dist/{transfer-WmWiR3xf.mjs → transfer-BbKfufJ4.mjs} +2 -2
- package/dist/{transfer-WmWiR3xf.mjs.map → transfer-BbKfufJ4.mjs.map} +1 -1
- package/dist/{transfer-ClH6w6BV.mjs → transfer-DTGblAj2.mjs} +71 -34
- package/dist/{transfer-ClH6w6BV.mjs.map → transfer-DTGblAj2.mjs.map} +1 -1
- package/dist/{transfer-download--ofRj9Cw.mjs → transfer-download-D9LQEDX0.mjs} +1 -1
- package/dist/{transfer-download--ofRj9Cw.mjs.map → transfer-download-D9LQEDX0.mjs.map} +1 -1
- package/dist/{transport-DxiXnbXk.d.mts → transport-Dm5QzpT_.d.mts} +1 -1
- package/dist/{transport-DxiXnbXk.d.mts.map → transport-Dm5QzpT_.d.mts.map} +1 -1
- package/dist/{transport-BjbqNiPI.mjs → transport-Dzpn5b3i.mjs} +4 -3
- package/dist/transport-Dzpn5b3i.mjs.map +1 -0
- package/dist/{turnstile-CJwvsOqw.mjs → turnstile-Cs2wfkJG.mjs} +1 -1
- package/dist/{turnstile-CJwvsOqw.mjs.map → turnstile-Cs2wfkJG.mjs.map} +1 -1
- package/dist/{types-BA3ey2QH.d.mts → types-BAsCk5KU.d.mts} +1 -1
- package/dist/{types-BA3ey2QH.d.mts.map → types-BAsCk5KU.d.mts.map} +1 -1
- package/dist/{types-RLgeIpnF.d.mts → types-BuvSwT9Y.d.mts} +8 -7
- package/dist/{types-RLgeIpnF.d.mts.map → types-BuvSwT9Y.d.mts.map} +1 -1
- package/dist/{types-CNB-dj6F.d.mts → types-C4KT3Md2.d.mts} +10 -6
- package/dist/types-C4KT3Md2.d.mts.map +1 -0
- package/dist/{types-DvqVxZXa.d.mts → types-CVXHwIBB.d.mts} +1 -1
- package/dist/{types-DvqVxZXa.d.mts.map → types-CVXHwIBB.d.mts.map} +1 -1
- package/dist/{types-BGmQ0uXs.mjs → types-C_asjp1J.mjs} +1 -1
- package/dist/types-C_asjp1J.mjs.map +1 -0
- package/dist/{types-DHO7Pd25.d.mts → types-CadaL_k8.d.mts} +1 -1
- package/dist/{types-DHO7Pd25.d.mts.map → types-CadaL_k8.d.mts.map} +1 -1
- package/dist/{types-QoPHm-2w.d.mts → types-CjftrmZR.d.mts} +3 -3
- package/dist/{types-QoPHm-2w.d.mts.map → types-CjftrmZR.d.mts.map} +1 -1
- package/dist/{types-DCFavOii.d.mts → types-DKwRUA-x.d.mts} +1 -1
- package/dist/{types-DCFavOii.d.mts.map → types-DKwRUA-x.d.mts.map} +1 -1
- package/dist/{types-D2NEXtgB.mjs → types-DwhEvIVb.mjs} +8 -2
- package/dist/types-DwhEvIVb.mjs.map +1 -0
- package/dist/{types-Bwpzb5o6.d.mts → types-GwAyS5SH.d.mts} +1 -1
- package/dist/{types-Bwpzb5o6.d.mts.map → types-GwAyS5SH.d.mts.map} +1 -1
- package/dist/{types-slSqujQL.d.mts → types-uU2YNYSt.d.mts} +6 -1
- package/dist/types-uU2YNYSt.d.mts.map +1 -0
- package/dist/{update-check-BxNg9T6N.mjs → update-check-ABBJgg6M.mjs} +4 -4
- package/dist/{update-check-BxNg9T6N.mjs.map → update-check-ABBJgg6M.mjs.map} +1 -1
- package/dist/{url-Dn3IStq8.mjs → url-DTfGDJhI.mjs} +1 -1
- package/dist/{url-Dn3IStq8.mjs.map → url-DTfGDJhI.mjs.map} +1 -1
- package/dist/{user-BlCTKVAm.mjs → user-By8SzQxS.mjs} +3 -3
- package/dist/{user-BlCTKVAm.mjs.map → user-By8SzQxS.mjs.map} +1 -1
- package/dist/{utils-TPt7w2cS.mjs → utils-D5uOi6WS.mjs} +13 -5
- package/dist/utils-D5uOi6WS.mjs.map +1 -0
- package/dist/{index-BB9sVisO.d.mts → utils-Szp4iBQB.d.mts} +9 -256
- package/dist/utils-Szp4iBQB.d.mts.map +1 -0
- package/dist/{validate-emKxGC5F.d.mts → validate-DDvxy6qG.d.mts} +8 -8
- package/dist/{validate-emKxGC5F.d.mts.map → validate-DDvxy6qG.d.mts.map} +1 -1
- package/dist/{validate-DxYhJQA-.mjs → validate-Dz-TIOFB.mjs} +7 -7
- package/dist/{validate-DxYhJQA-.mjs.map → validate-Dz-TIOFB.mjs.map} +1 -1
- package/dist/{validation-Ckq4vsVg.mjs → validation-Fc9ZSUS_.mjs} +17 -16
- package/dist/{validation-Ckq4vsVg.mjs.map → validation-Fc9ZSUS_.mjs.map} +1 -1
- package/dist/version-Bu6Nlbb5.mjs +7 -0
- package/dist/{version-DHmGpcch.mjs.map → version-Bu6Nlbb5.mjs.map} +1 -1
- package/dist/version-DqB7LIO7.mjs +49 -0
- package/dist/version-DqB7LIO7.mjs.map +1 -0
- package/dist/{widgets-DA5XmvVC.mjs → widgets-BUx_Mf2q.mjs} +18 -5
- package/dist/widgets-BUx_Mf2q.mjs.map +1 -0
- package/dist/{wxr-taxonomies-RgRG0d5e.mjs → wxr-taxonomies-DbJtWrWM.mjs} +7 -6
- package/dist/wxr-taxonomies-DbJtWrWM.mjs.map +1 -0
- package/dist/{wxr-taxonomies-CrMonejI.d.mts → wxr-taxonomies-Dy2i2ON3.d.mts} +1 -1
- package/dist/wxr-taxonomies-Dy2i2ON3.d.mts.map +1 -0
- package/dist/{zod-generator-D0JKy94C.mjs → zod-generator--nlM0930.mjs} +5 -4
- package/dist/zod-generator--nlM0930.mjs.map +1 -0
- package/package.json +5 -5
- package/src/api/handlers/bulk-tag.ts +11 -3
- package/src/api/handlers/bylines.ts +6 -2
- package/src/api/handlers/content.ts +154 -23
- package/src/api/handlers/dashboard.ts +13 -6
- package/src/api/handlers/device-flow.ts +1 -3
- package/src/api/handlers/menus.ts +27 -13
- package/src/api/handlers/oauth-authorization.ts +1 -3
- package/src/api/handlers/relations.ts +15 -1
- package/src/api/handlers/taxonomies.ts +27 -17
- package/src/astro/image-endpoint.ts +23 -2
- package/src/astro/integration/admin-nav.ts +52 -0
- package/src/astro/integration/index.ts +7 -0
- package/src/astro/integration/runtime.ts +14 -0
- package/src/astro/integration/shims/use-sync-external-store-with-selector.js +2 -0
- package/src/astro/integration/shims/use-sync-external-store.js +4 -1
- package/src/astro/integration/vite-config.ts +16 -8
- package/src/astro/middleware/auth.ts +9 -2
- package/src/astro/middleware/redirect.ts +158 -63
- package/src/astro/middleware/request-context.ts +1 -0
- package/src/astro/middleware.ts +17 -4
- package/src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts +4 -1
- package/src/astro/routes/api/content/[collection]/[id]/translations.ts +14 -1
- package/src/astro/routes/api/dashboard.ts +2 -0
- package/src/astro/routes/api/import/wordpress/analyze.ts +5 -29
- package/src/astro/routes/api/import/wordpress-plugin/execute.ts +3 -3
- package/src/astro/routes/api/media/file/[...key].ts +31 -7
- package/src/astro/routes/api/oauth/token.ts +5 -1
- package/src/astro/routes/api/widget-areas/[name]/reorder.ts +7 -1
- package/src/astro/routes/api/widget-areas/[name]/widgets/[id].ts +3 -1
- package/src/astro/routes/api/widget-areas/[name]/widgets.ts +2 -1
- package/src/astro/routes/api/widget-areas/[name].ts +2 -1
- package/src/astro/routes/api/widget-areas/index.ts +2 -1
- package/src/astro/types.ts +4 -3
- package/src/auth/api-tokens.ts +3 -0
- package/src/auth/types.ts +6 -0
- package/src/cleanup.ts +44 -0
- package/src/cli/commands/export-seed.ts +6 -4
- package/src/cli/commands/login.ts +2 -4
- package/src/client/index.ts +1 -0
- package/src/client/transport.ts +11 -7
- package/src/components/EmDashImage.astro +14 -2
- package/src/components/InlinePortableTextEditor.tsx +4 -1
- package/src/components/inline-bubble-menu.tsx +109 -95
- package/src/components/inline-image.tsx +54 -48
- package/src/database/dialect-helpers.ts +10 -3
- package/src/database/migrations/content-sized.ts +82 -0
- package/src/database/migrations/policy.ts +28 -2
- package/src/database/migrations/runner.ts +48 -0
- package/src/database/repositories/byline.ts +95 -31
- package/src/database/repositories/comment.ts +17 -7
- package/src/database/repositories/content.ts +96 -23
- package/src/database/repositories/media.ts +17 -0
- package/src/database/repositories/menu.ts +236 -139
- package/src/database/repositories/taxonomy-def.ts +9 -2
- package/src/database/repositories/taxonomy.ts +47 -14
- package/src/database/repositories/types.ts +14 -3
- package/src/database/types.ts +1 -1
- package/src/emdash-runtime.ts +60 -17
- package/src/fields/image.ts +1 -0
- package/src/i18n/config.ts +58 -10
- package/src/i18n/normalize.ts +16 -2
- package/src/i18n/query.ts +47 -0
- package/src/i18n/resolve.ts +8 -3
- package/src/import/utils.ts +15 -2
- package/src/import/wxr-taxonomies.ts +3 -2
- package/src/index.ts +1 -0
- package/src/loader.ts +183 -114
- package/src/mcp/server.ts +28 -1
- package/src/media/caption.ts +30 -0
- package/src/media/content-disposition.ts +56 -0
- package/src/media/image-endpoint.ts +13 -6
- package/src/media/local-runtime.ts +3 -0
- package/src/media/normalize.ts +17 -8
- package/src/media/responsive.ts +12 -2
- package/src/media/types.ts +16 -3
- package/src/media/usage/content-fields.ts +2 -1
- package/src/menus/index.ts +158 -36
- package/src/migrations/manifest.ts +1 -0
- package/src/object-cache/index.ts +22 -0
- package/src/plugin-test-runtime.ts +1 -0
- package/src/plugins/byline-access.ts +3 -1
- package/src/plugins/context.ts +1 -2
- package/src/plugins/storage-indexes.ts +7 -3
- package/src/query.ts +67 -53
- package/src/redirects/artifacts.ts +39 -5
- package/src/references/field-map.ts +6 -4
- package/src/request-context.ts +8 -0
- package/src/schema/collection-slugs-cache.ts +31 -17
- package/src/schema/registry.ts +9 -0
- package/src/schema/types.ts +7 -6
- package/src/schema/zod-generator.ts +2 -1
- package/src/search/fts-manager.ts +103 -31
- package/src/search/query.ts +31 -64
- package/src/seed/apply.ts +221 -109
- package/src/seed/types.ts +6 -4
- package/src/settings/index.ts +135 -35
- package/src/settings/version.ts +54 -0
- package/src/taxonomies/index.ts +99 -85
- package/src/taxonomies/term-counts.ts +2 -1
- package/src/transfer/import/advance.ts +12 -1
- package/src/transfer/import/scaffold.ts +7 -1
- package/src/transfer/import/stages.ts +53 -2
- package/src/utils/db-errors.ts +15 -0
- package/src/utils/revalidating-cache.ts +85 -0
- package/src/virtual-modules.d.ts +1 -0
- package/src/visual-editing/toolbar.ts +7 -2
- package/src/widgets/index.ts +27 -13
- package/dist/api-D-7BNHoz.mjs.map +0 -1
- package/dist/api-tokens-CdP49zVF.mjs +0 -3
- package/dist/apply-T7ATgzCh.mjs.map +0 -1
- package/dist/artifacts-htGyfCSt.mjs.map +0 -1
- package/dist/byline-BR1qhyiw.mjs.map +0 -1
- package/dist/bylines-CVOvRUL7.mjs.map +0 -1
- package/dist/collection-slugs-cache-e09QeJQt.mjs.map +0 -1
- package/dist/comment-UvIWDKcW.mjs.map +0 -1
- package/dist/config-Bsm_u_oE.d.mts.map +0 -1
- package/dist/config-CFMojMFK.d.mts.map +0 -1
- package/dist/config-CvmjJcVw.mjs +0 -73
- package/dist/config-CvmjJcVw.mjs.map +0 -1
- package/dist/content-DQSRZTVw.mjs.map +0 -1
- package/dist/context-BYptmCN0.mjs.map +0 -1
- package/dist/dashboard-D0jcgBD7.mjs.map +0 -1
- package/dist/db-errors-CBD5yMro.mjs.map +0 -1
- package/dist/deferred-tasks-ZvUECSzI.d.mts +0 -9
- package/dist/deferred-tasks-ZvUECSzI.d.mts.map +0 -1
- package/dist/device-flow-BkFKBoAn.mjs.map +0 -1
- package/dist/dialect-helpers-7_IqPdh9.mjs.map +0 -1
- package/dist/emdash-runtime-DVi7vtXC.mjs.map +0 -1
- package/dist/field-defs-cache-Dez5iWJJ.mjs +0 -77
- package/dist/field-defs-cache-Dez5iWJJ.mjs.map +0 -1
- package/dist/field-map-Bft9LKak.mjs.map +0 -1
- package/dist/fts-manager-Beg3e4bI.mjs.map +0 -1
- package/dist/index-BB9sVisO.d.mts.map +0 -1
- package/dist/loader-CswroUbe.mjs.map +0 -1
- package/dist/manifest-builder-B8zjuH3f.mjs.map +0 -1
- package/dist/media-Bws9f18T.mjs.map +0 -1
- package/dist/menus-BCVSSp1z.mjs.map +0 -1
- package/dist/menus-Cl4kwdt7.mjs.map +0 -1
- package/dist/normalize-BuWa0lvd.mjs.map +0 -1
- package/dist/oauth-authorization-TpEJrYB7.mjs.map +0 -1
- package/dist/placeholder-D41vk11_.d.mts.map +0 -1
- package/dist/policy-DLQ--Hnm.mjs.map +0 -1
- package/dist/query-CpnRlBh8.mjs.map +0 -1
- package/dist/registry-TUVaid9Z.mjs.map +0 -1
- package/dist/relations-CA_QuMTU.mjs.map +0 -1
- package/dist/resolve-D-kqyKns.mjs.map +0 -1
- package/dist/runner-BObHz5FC.d.mts.map +0 -1
- package/dist/runner-C5NeAkBQ.mjs.map +0 -1
- package/dist/search-DfVzks89.mjs.map +0 -1
- package/dist/settings-CWb84sDm.mjs.map +0 -1
- package/dist/storage-query-DRyu3bSU.d.mts.map +0 -1
- package/dist/taxonomies-ChnU7Mc8.mjs.map +0 -1
- package/dist/taxonomies-Dd9JJv_a.mjs.map +0 -1
- package/dist/taxonomy-C_C_LBAU.mjs.map +0 -1
- package/dist/transport-BjbqNiPI.mjs.map +0 -1
- package/dist/types-BGmQ0uXs.mjs.map +0 -1
- package/dist/types-CNB-dj6F.d.mts.map +0 -1
- package/dist/types-D2NEXtgB.mjs.map +0 -1
- package/dist/types-slSqujQL.d.mts.map +0 -1
- package/dist/utils-TPt7w2cS.mjs.map +0 -1
- package/dist/version-DHmGpcch.mjs +0 -7
- package/dist/widgets-DA5XmvVC.mjs.map +0 -1
- package/dist/wxr-taxonomies-CrMonejI.d.mts.map +0 -1
- package/dist/wxr-taxonomies-RgRG0d5e.mjs.map +0 -1
- package/dist/zod-generator-D0JKy94C.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-url.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/content/[collection]/[id]/preview-url.ts"],"sourcesContent":["/**\n * Preview URL endpoint - generates a signed preview URL for content\n *\n * POST /_emdash/api/content/{collection}/{id}/preview-url\n *\n * Request body:\n * {\n * expiresIn?: string | number; // Default: \"1h\"\n * pathPattern?: string; // Overrides the resolved default (see below)\n * }\n *\n * Path resolution precedence (highest first):\n * 1. `pathPattern` in the request body (per-call override)\n * 2. `EMDASH_PREVIEW_PATH_PATTERN` env (project-wide override)\n * 3. the collection's configured `url_pattern` — so preview links match the\n * same routes the sitemap and \"View published\" links already use (incl.\n * custom permalinks like `/blog/{slug}`), resolved via the shared\n * `interpolateUrlPattern` + `localizePath` helpers.\n * 4. the generic `/{collection}/{id}` fallback.\n *\n * Response:\n * {\n * url: string; // The preview URL with token\n * expiresAt: number; // Unix timestamp when token expires\n * }\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess, handleError, unwrapResult } from \"#api/error.js\";\nimport { parseOptionalBody, isParseError } from \"#api/parse.js\";\nimport { contentPreviewUrlBody } from \"#api/schemas.js\";\nimport { resolveSecretsCached } from \"#config/secrets.js\";\nimport { buildPreviewUrl, generatePreviewToken, getPreviewUrl } from \"#preview/index.js\";\nimport { getCollectionInfoWithDb } from \"#schema/query.js\";\n\nimport { getI18nConfig } from \"../../../../../../i18n/config.js\";\nimport { interpolateUrlPattern, localizePath } from \"../../../../../../i18n/resolve.js\";\n\nexport const prerender = false;\n\nconst DURATION_PATTERN = /^(\\d+)([smhdw])$/;\n\nexport const POST: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\tconst denied = requirePerm(user, \"content:read_drafts\");\n\tif (denied) return denied;\n\tconst collection = params.collection!;\n\tconst id = params.id!;\n\n\t// Resolve the preview secret. Env override wins; otherwise a stable\n\t// site-specific value is read from (or generated into) the options table.\n\t// The resolver always returns a usable secret, so this path can no\n\t// longer be silently disabled by a missing env var.\n\tconst { previewSecret } = await resolveSecretsCached(emdash.db);\n\n\t// Verify the content exists. The fetched item also yields the entry's\n\t// locale and slug, used below to resolve the public path.\n\tlet entryLocale: string | null = null;\n\tlet entrySlug: string | null = null;\n\tif (emdash?.handleContentGet) {\n\t\tconst result = await emdash.handleContentGet(collection, id);\n\t\tif (!result.success) return unwrapResult(result);\n\t\tentryLocale = result.data?.item?.locale ?? null;\n\t\tentrySlug = result.data?.item?.slug ?? null;\n\t}\n\n\t// Parse request body\n\tconst body = await parseOptionalBody(request, contentPreviewUrlBody, {});\n\tif (isParseError(body)) return body;\n\n\tconst expiresIn = body.expiresIn || \"1h\";\n\t// A project-wide default `pathPattern` (body or env) always wins so callers\n\t// can force a specific shape. When neither is set we resolve the\n\t// collection's own `url_pattern` below.\n\tconst explicitPattern = body.pathPattern || import.meta.env.EMDASH_PREVIEW_PATH_PATTERN || null;\n\n\t// Resolve the locale segment substituted for the `{locale}` placeholder in\n\t// an explicit pattern: empty when the entry is in the default locale and\n\t// `prefixDefaultLocale` is `false`, the entry's own locale otherwise.\n\tconst i18n = getI18nConfig();\n\tlet localeSegment = \"\";\n\tif (entryLocale && i18n) {\n\t\tconst isDefault = entryLocale === i18n.defaultLocale;\n\t\tlocaleSegment = isDefault && !i18n.prefixDefaultLocale ? \"\" : entryLocale;\n\t} else if (entryLocale) {\n\t\tlocaleSegment = entryLocale;\n\t}\n\n\t// Calculate expiry timestamp\n\tconst expiresInSeconds = typeof expiresIn === \"number\" ? expiresIn : parseExpiresIn(expiresIn);\n\tconst expiresAt = Math.floor(Date.now() / 1000) + expiresInSeconds;\n\n\ttry {\n\t\t// No explicit override: reuse the collection's `url_pattern` so the\n\t\t// preview link points at the same route the sitemap and \"View\n\t\t// published\" links already use (custom permalinks like `/blog/{slug}`).\n\t\t// Without this the generic `/{collection}/{id}` fallback 404s on any\n\t\t// site whose content isn't served at that path.\n\t\tif (!explicitPattern) {\n\t\t\t// Resolved outside the shared catch: a schema lookup failure is a\n\t\t\t// pattern-resolution problem, not a token-signing one.\n\t\t\tlet collectionInfo;\n\t\t\ttry {\n\t\t\t\tcollectionInfo = await getCollectionInfoWithDb(emdash.db, collection);\n\t\t\t} catch (error) {\n\t\t\t\treturn handleError(\n\t\t\t\t\terror,\n\t\t\t\t\t\"Failed to resolve the collection URL pattern\",\n\t\t\t\t\t\"PREVIEW_URL_ERROR\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (collectionInfo?.urlPattern) {\n\t\t\t\tconst path = interpolateUrlPattern({\n\t\t\t\t\tpattern: collectionInfo.urlPattern,\n\t\t\t\t\tcollection,\n\t\t\t\t\tslug: entrySlug || id,\n\t\t\t\t\tid,\n\t\t\t\t});\n\t\t\t\t// `localizePath` returns null when the entry's locale isn't in the\n\t\t\t\t// configured i18n list; fall back to the un-prefixed path so we\n\t\t\t\t// still hand back a usable preview link rather than failing.\n\t\t\t\tconst localized = await localizePath(path, entryLocale ?? \"\");\n\t\t\t\tconst token = await generatePreviewToken({\n\t\t\t\t\tcontentId: `${collection}:${id}`,\n\t\t\t\t\texpiresIn,\n\t\t\t\t\tsecret: previewSecret,\n\t\t\t\t});\n\t\t\t\tconst url = buildPreviewUrl({ path: localized ?? path, token });\n\t\t\t\treturn apiSuccess({ url, expiresAt });\n\t\t\t}\n\t\t}\n\n\t\tconst url = await getPreviewUrl({\n\t\t\tcollection,\n\t\t\tid,\n\t\t\tsecret: previewSecret,\n\t\t\texpiresIn,\n\t\t\tpathPattern: explicitPattern || \"/{collection}/{id}\",\n\t\t\tlocale: localeSegment,\n\t\t});\n\n\t\treturn apiSuccess({ url, expiresAt });\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to generate preview URL\", \"TOKEN_ERROR\");\n\t}\n};\n\n/**\n * Parse duration string to seconds\n */\nfunction parseExpiresIn(duration: string): number {\n\tconst match = duration.match(DURATION_PATTERN);\n\tif (!match) {\n\t\treturn 3600; // Default 1 hour\n\t}\n\n\tconst value = parseInt(match[1], 10);\n\tconst unit = match[2];\n\n\tswitch (unit) {\n\t\tcase \"s\":\n\t\t\treturn value;\n\t\tcase \"m\":\n\t\t\treturn value * 60;\n\t\tcase \"h\":\n\t\t\treturn value * 60 * 60;\n\t\tcase \"d\":\n\t\t\treturn value * 60 * 60 * 24;\n\t\tcase \"w\":\n\t\t\treturn value * 60 * 60 * 24 * 7;\n\t\tdefault:\n\t\t\treturn 3600;\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"preview-url.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/content/[collection]/[id]/preview-url.ts"],"sourcesContent":["/**\n * Preview URL endpoint - generates a signed preview URL for content\n *\n * POST /_emdash/api/content/{collection}/{id}/preview-url\n *\n * Request body:\n * {\n * expiresIn?: string | number; // Default: \"1h\"\n * pathPattern?: string; // Overrides the resolved default (see below)\n * }\n *\n * Path resolution precedence (highest first):\n * 1. `pathPattern` in the request body (per-call override)\n * 2. `EMDASH_PREVIEW_PATH_PATTERN` env (project-wide override)\n * 3. the collection's configured `url_pattern` — so preview links match the\n * same routes the sitemap and \"View published\" links already use (incl.\n * custom permalinks like `/blog/{slug}`), resolved via the shared\n * `interpolateUrlPattern` + `localizePath` helpers.\n * 4. the generic `/{collection}/{id}` fallback.\n *\n * Response:\n * {\n * url: string; // The preview URL with token\n * expiresAt: number; // Unix timestamp when token expires\n * }\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess, handleError, unwrapResult } from \"#api/error.js\";\nimport { parseOptionalBody, isParseError } from \"#api/parse.js\";\nimport { contentPreviewUrlBody } from \"#api/schemas.js\";\nimport { resolveSecretsCached } from \"#config/secrets.js\";\nimport { buildPreviewUrl, generatePreviewToken, getPreviewUrl } from \"#preview/index.js\";\nimport { getCollectionInfoWithDb } from \"#schema/query.js\";\n\nimport { getI18nConfig } from \"../../../../../../i18n/config.js\";\nimport { interpolateUrlPattern, localizePath } from \"../../../../../../i18n/resolve.js\";\n\nexport const prerender = false;\n\nconst DURATION_PATTERN = /^(\\d+)([smhdw])$/;\n\nexport const POST: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\tconst denied = requirePerm(user, \"content:read_drafts\");\n\tif (denied) return denied;\n\tconst collection = params.collection!;\n\tconst id = params.id!;\n\n\t// Resolve the preview secret. Env override wins; otherwise a stable\n\t// site-specific value is read from (or generated into) the options table.\n\t// The resolver always returns a usable secret, so this path can no\n\t// longer be silently disabled by a missing env var.\n\tconst { previewSecret } = await resolveSecretsCached(emdash.db);\n\n\t// Verify the content exists. The fetched item also yields the entry's\n\t// locale and slug, used below to resolve the public path.\n\tlet entryLocale: string | null = null;\n\tlet entrySlug: string | null = null;\n\tif (emdash?.handleContentGet) {\n\t\tconst result = await emdash.handleContentGet(collection, id);\n\t\tif (!result.success) return unwrapResult(result);\n\t\tentryLocale = result.data?.item?.locale ?? null;\n\t\tentrySlug = result.data?.item?.slug ?? null;\n\t}\n\n\t// Parse request body\n\tconst body = await parseOptionalBody(request, contentPreviewUrlBody, {});\n\tif (isParseError(body)) return body;\n\n\tconst expiresIn = body.expiresIn || \"1h\";\n\t// A project-wide default `pathPattern` (body or env) always wins so callers\n\t// can force a specific shape. When neither is set we resolve the\n\t// collection's own `url_pattern` below.\n\tconst explicitPattern = body.pathPattern || import.meta.env.EMDASH_PREVIEW_PATH_PATTERN || null;\n\n\t// Resolve the locale segment substituted for the `{locale}` placeholder in\n\t// an explicit pattern: empty when the entry is in the default locale and\n\t// `prefixDefaultLocale` is `false`, the entry's own locale otherwise.\n\tconst i18n = getI18nConfig();\n\tlet localeSegment = \"\";\n\tif (entryLocale && i18n) {\n\t\tconst isDefault = entryLocale === i18n.defaultLocale;\n\t\tlocaleSegment = isDefault && !i18n.prefixDefaultLocale ? \"\" : entryLocale;\n\t} else if (entryLocale) {\n\t\tlocaleSegment = entryLocale;\n\t}\n\n\t// Calculate expiry timestamp\n\tconst expiresInSeconds = typeof expiresIn === \"number\" ? expiresIn : parseExpiresIn(expiresIn);\n\tconst expiresAt = Math.floor(Date.now() / 1000) + expiresInSeconds;\n\n\ttry {\n\t\t// No explicit override: reuse the collection's `url_pattern` so the\n\t\t// preview link points at the same route the sitemap and \"View\n\t\t// published\" links already use (custom permalinks like `/blog/{slug}`).\n\t\t// Without this the generic `/{collection}/{id}` fallback 404s on any\n\t\t// site whose content isn't served at that path.\n\t\tif (!explicitPattern) {\n\t\t\t// Resolved outside the shared catch: a schema lookup failure is a\n\t\t\t// pattern-resolution problem, not a token-signing one.\n\t\t\tlet collectionInfo;\n\t\t\ttry {\n\t\t\t\tcollectionInfo = await getCollectionInfoWithDb(emdash.db, collection);\n\t\t\t} catch (error) {\n\t\t\t\treturn handleError(\n\t\t\t\t\terror,\n\t\t\t\t\t\"Failed to resolve the collection URL pattern\",\n\t\t\t\t\t\"PREVIEW_URL_ERROR\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (collectionInfo?.urlPattern) {\n\t\t\t\tconst path = interpolateUrlPattern({\n\t\t\t\t\tpattern: collectionInfo.urlPattern,\n\t\t\t\t\tcollection,\n\t\t\t\t\tslug: entrySlug || id,\n\t\t\t\t\tid,\n\t\t\t\t});\n\t\t\t\t// `localizePath` returns null when the entry's locale isn't in the\n\t\t\t\t// configured i18n list; fall back to the un-prefixed path so we\n\t\t\t\t// still hand back a usable preview link rather than failing.\n\t\t\t\tconst localized = await localizePath(path, entryLocale ?? \"\");\n\t\t\t\tconst token = await generatePreviewToken({\n\t\t\t\t\tcontentId: `${collection}:${id}`,\n\t\t\t\t\texpiresIn,\n\t\t\t\t\tsecret: previewSecret,\n\t\t\t\t});\n\t\t\t\tconst url = buildPreviewUrl({ path: localized ?? path, token });\n\t\t\t\treturn apiSuccess({ url, expiresAt });\n\t\t\t}\n\t\t}\n\n\t\tconst url = await getPreviewUrl({\n\t\t\tcollection,\n\t\t\tid,\n\t\t\tsecret: previewSecret,\n\t\t\texpiresIn,\n\t\t\tpathPattern: explicitPattern || \"/{collection}/{id}\",\n\t\t\tlocale: localeSegment,\n\t\t});\n\n\t\treturn apiSuccess({ url, expiresAt });\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to generate preview URL\", \"TOKEN_ERROR\");\n\t}\n};\n\n/**\n * Parse duration string to seconds\n */\nfunction parseExpiresIn(duration: string): number {\n\tconst match = duration.match(DURATION_PATTERN);\n\tif (!match) {\n\t\treturn 3600; // Default 1 hour\n\t}\n\n\tconst value = parseInt(match[1], 10);\n\tconst unit = match[2];\n\n\tswitch (unit) {\n\t\tcase \"s\":\n\t\t\treturn value;\n\t\tcase \"m\":\n\t\t\treturn value * 60;\n\t\tcase \"h\":\n\t\t\treturn value * 60 * 60;\n\t\tcase \"d\":\n\t\t\treturn value * 60 * 60 * 24;\n\t\tcase \"w\":\n\t\t\treturn value * 60 * 60 * 24 * 7;\n\t\tdefault:\n\t\t\treturn 3600;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAa,YAAY;AAEzB,MAAM,mBAAmB;AAEzB,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACpE,MAAM,EAAE,QAAQ,SAAS;AACzB,KAAI,CAAC,QAAQ,GACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;CAEpE,MAAM,SAAS,YAAY,MAAM,sBAAsB;AACvD,KAAI,OAAQ,QAAO;CACnB,MAAM,aAAa,OAAO;CAC1B,MAAM,KAAK,OAAO;CAMlB,MAAM,EAAE,kBAAkB,MAAM,qBAAqB,OAAO,GAAG;CAI/D,IAAI,cAA6B;CACjC,IAAI,YAA2B;AAC/B,KAAI,QAAQ,kBAAkB;EAC7B,MAAM,SAAS,MAAM,OAAO,iBAAiB,YAAY,GAAG;AAC5D,MAAI,CAAC,OAAO,QAAS,QAAO,aAAa,OAAO;AAChD,gBAAc,OAAO,MAAM,MAAM,UAAU;AAC3C,cAAY,OAAO,MAAM,MAAM,QAAQ;;CAIxC,MAAM,OAAO,MAAM,kBAAkB,SAAS,uBAAuB,EAAE,CAAC;AACxE,KAAI,aAAa,KAAK,CAAE,QAAO;CAE/B,MAAM,YAAY,KAAK,aAAa;CAIpC,MAAM,kBAAkB,KAAK,eAAe,OAAO,KAAK,IAAI,+BAA+B;CAK3F,MAAM,OAAO,eAAe;CAC5B,IAAI,gBAAgB;AACpB,KAAI,eAAe,KAElB,iBADkB,gBAAgB,KAAK,iBACV,CAAC,KAAK,sBAAsB,KAAK;UACpD,YACV,iBAAgB;CAIjB,MAAM,mBAAmB,OAAO,cAAc,WAAW,YAAY,eAAe,UAAU;CAC9F,MAAM,YAAY,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK,GAAG;AAElD,KAAI;AAMH,MAAI,CAAC,iBAAiB;GAGrB,IAAI;AACJ,OAAI;AACH,qBAAiB,MAAM,wBAAwB,OAAO,IAAI,WAAW;YAC7D,OAAO;AACf,WAAO,YACN,OACA,gDACA,oBACA;;AAEF,OAAI,gBAAgB,YAAY;IAC/B,MAAM,OAAO,sBAAsB;KAClC,SAAS,eAAe;KACxB;KACA,MAAM,aAAa;KACnB;KACA,CAAC;IAIF,MAAM,YAAY,MAAM,aAAa,MAAM,eAAe,GAAG;IAC7D,MAAM,QAAQ,MAAM,qBAAqB;KACxC,WAAW,GAAG,WAAW,GAAG;KAC5B;KACA,QAAQ;KACR,CAAC;AAEF,WAAO,WAAW;KAAE,KADR,gBAAgB;MAAE,MAAM,aAAa;MAAM;MAAO,CAAC;KACtC;KAAW,CAAC;;;AAavC,SAAO,WAAW;GAAE,KATR,MAAM,cAAc;IAC/B;IACA;IACA,QAAQ;IACR;IACA,aAAa,mBAAmB;IAChC,QAAQ;IACR,CAAC;GAEuB;GAAW,CAAC;UAC7B,OAAO;AACf,SAAO,YAAY,OAAO,kCAAkC,cAAc;;;;;;AAO5E,SAAS,eAAe,UAA0B;CACjD,MAAM,QAAQ,SAAS,MAAM,iBAAiB;AAC9C,KAAI,CAAC,MACJ,QAAO;CAGR,MAAM,QAAQ,SAAS,MAAM,IAAI,GAAG;AAGpC,SAFa,MAAM,IAEnB;EACC,KAAK,IACJ,QAAO;EACR,KAAK,IACJ,QAAO,QAAQ;EAChB,KAAK,IACJ,QAAO,QAAQ,KAAK;EACrB,KAAK,IACJ,QAAO,QAAQ,KAAK,KAAK;EAC1B,KAAK,IACJ,QAAO,QAAQ,KAAK,KAAK,KAAK;EAC/B,QACC,QAAO"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import "../../../../../../dialect-helpers-
|
|
2
|
-
import "../../../../../../config-
|
|
1
|
+
import "../../../../../../dialect-helpers-B1XN2HGB.mjs";
|
|
2
|
+
import "../../../../../../config-Cs_AwWXI.mjs";
|
|
3
3
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
4
|
-
import "../../../../../../url-
|
|
5
|
-
import "../../../../../../types-
|
|
6
|
-
import "../../../../../../entry-locks-
|
|
4
|
+
import "../../../../../../url-DTfGDJhI.mjs";
|
|
5
|
+
import "../../../../../../types-DwhEvIVb.mjs";
|
|
6
|
+
import "../../../../../../entry-locks-CJ9uhqg1.mjs";
|
|
7
7
|
import "../../../../../../errors-B4f4It-2.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { r as mapErrorStatus } from "../../../../../../errors-8gJqv-XV.mjs";
|
|
9
9
|
import "../../../../../../settings-Dd1uivmQ.mjs";
|
|
10
10
|
import "../../../../../../site-settings-DRHfX7bq.mjs";
|
|
11
|
-
import { a as unwrapResult, t as apiError } from "../../../../../../error-
|
|
12
|
-
import { r as parseOptionalBody, t as isParseError } from "../../../../../../parse-
|
|
13
|
-
import "../../../../../../redirects-
|
|
14
|
-
import { Ft as contentPublishBody } from "../../../../../../entry-lock-
|
|
15
|
-
import "../../../../../../media-
|
|
11
|
+
import { a as unwrapResult, t as apiError } from "../../../../../../error-BCMgPxdn.mjs";
|
|
12
|
+
import { r as parseOptionalBody, t as isParseError } from "../../../../../../parse-B_b6gZxG.mjs";
|
|
13
|
+
import "../../../../../../redirects-CyvvZrCJ.mjs";
|
|
14
|
+
import { Ft as contentPublishBody } from "../../../../../../entry-lock-CRVmruM0.mjs";
|
|
15
|
+
import "../../../../../../media-BR4_t-Wd.mjs";
|
|
16
16
|
import "../../../../../../comments-yiRFx3w5.mjs";
|
|
17
|
-
import "../../../../../../byline-fields-
|
|
18
|
-
import "../../../../../../menus-
|
|
17
|
+
import "../../../../../../byline-fields-CiR8FvvF.mjs";
|
|
18
|
+
import "../../../../../../menus-uEAxWAm1.mjs";
|
|
19
19
|
import "../../../../../../status-BFNdxzKc.mjs";
|
|
20
20
|
import "../../../../../../api/schemas/index.mjs";
|
|
21
|
-
import { a as requireOwnerPerm } from "../../../../../../authorize-
|
|
22
|
-
import { t as claimEntryLockForWrite } from "../../../../../../entry-lock-
|
|
21
|
+
import { a as requireOwnerPerm } from "../../../../../../authorize-NJgp8kLI.mjs";
|
|
22
|
+
import { t as claimEntryLockForWrite } from "../../../../../../entry-lock-D-zJQ4q6.mjs";
|
|
23
23
|
import { t as invalidateRouteCache } from "../../../../../../route-cache-QSOyDEw0.mjs";
|
|
24
24
|
import { hasPermission } from "@emdash-cms/auth";
|
|
25
25
|
|
|
@@ -1,47 +1,48 @@
|
|
|
1
|
-
import "../../../../../../../../dialect-helpers-
|
|
2
|
-
import "../../../../../../../../config-
|
|
1
|
+
import "../../../../../../../../dialect-helpers-B1XN2HGB.mjs";
|
|
2
|
+
import "../../../../../../../../config-Cs_AwWXI.mjs";
|
|
3
3
|
import "../../../../../../../../datetime-normalization-PeiEdcRY.mjs";
|
|
4
|
-
import "../../../../../../../../after-
|
|
4
|
+
import "../../../../../../../../after-32yNRvd2.mjs";
|
|
5
5
|
import "../../../../../../../../base64-BQBZwXCx.mjs";
|
|
6
|
-
import "../../../../../../../../content-
|
|
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 "../../../../../../../../
|
|
6
|
+
import "../../../../../../../../content-BKHUVsE5.mjs";
|
|
7
|
+
import "../../../../../../../../query-BFHjCzSh.mjs";
|
|
8
|
+
import "../../../../../../../../object-cache-DmKr09La.mjs";
|
|
9
|
+
import "../../../../../../../../slugify-BDEG9pLk.mjs";
|
|
10
|
+
import "../../../../../../../../request-cache-5z2WzWmh.mjs";
|
|
11
|
+
import "../../../../../../../../url-DTfGDJhI.mjs";
|
|
12
|
+
import "../../../../../../../../types-DwhEvIVb.mjs";
|
|
13
|
+
import "../../../../../../../../revision-Dx7Uth1X.mjs";
|
|
14
|
+
import "../../../../../../../../staged-ByBmPFtX.mjs";
|
|
15
|
+
import "../../../../../../../../fts-manager-6861qcwk.mjs";
|
|
16
|
+
import "../../../../../../../../loader-DhnedqY4.mjs";
|
|
17
|
+
import "../../../../../../../../json-recordset-D0WhN2UA.mjs";
|
|
18
|
+
import "../../../../../../../../collection-slugs-cache-DIrLjqH-.mjs";
|
|
19
|
+
import "../../../../../../../../media-usage-work-BCK2J-v_.mjs";
|
|
20
|
+
import "../../../../../../../../capture-triggers-BezAvWcB.mjs";
|
|
21
|
+
import "../../../../../../../../activation-CGlyigmg.mjs";
|
|
22
|
+
import "../../../../../../../../registry-B0-O575m.mjs";
|
|
22
23
|
import "../../../../../../../../hash-BJaeek87.mjs";
|
|
23
|
-
import "../../../../../../../../zod-generator
|
|
24
|
+
import "../../../../../../../../zod-generator--nlM0930.mjs";
|
|
24
25
|
import "../../../../../../../../errors-B4f4It-2.mjs";
|
|
25
26
|
import "../../../../../../../../canonical-BudtH-Fx.mjs";
|
|
26
27
|
import "../../../../../../../../digest-DJ1tHCgy.mjs";
|
|
27
|
-
import "../../../../../../../../block-values-
|
|
28
|
-
import "../../../../../../../../query-
|
|
29
|
-
import "../../../../../../../../schema-
|
|
30
|
-
import { r as handleReferenceChildrenGet } from "../../../../../../../../relations-
|
|
31
|
-
import "../../../../../../../../errors-
|
|
28
|
+
import "../../../../../../../../block-values-Dg0-8PPS.mjs";
|
|
29
|
+
import "../../../../../../../../query-LmPY2y0C.mjs";
|
|
30
|
+
import "../../../../../../../../schema-BqBlUZtb.mjs";
|
|
31
|
+
import { r as handleReferenceChildrenGet } from "../../../../../../../../relations-WIOojTL4.mjs";
|
|
32
|
+
import "../../../../../../../../errors-8gJqv-XV.mjs";
|
|
32
33
|
import "../../../../../../../../settings-Dd1uivmQ.mjs";
|
|
33
34
|
import "../../../../../../../../site-settings-DRHfX7bq.mjs";
|
|
34
|
-
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../../../error-
|
|
35
|
-
import { i as parseQuery, t as isParseError } from "../../../../../../../../parse-
|
|
36
|
-
import { g as cursorPaginationQuery } from "../../../../../../../../redirects-
|
|
37
|
-
import "../../../../../../../../entry-lock-
|
|
38
|
-
import "../../../../../../../../media-
|
|
35
|
+
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../../../error-BCMgPxdn.mjs";
|
|
36
|
+
import { i as parseQuery, t as isParseError } from "../../../../../../../../parse-B_b6gZxG.mjs";
|
|
37
|
+
import { g as cursorPaginationQuery } from "../../../../../../../../redirects-CyvvZrCJ.mjs";
|
|
38
|
+
import "../../../../../../../../entry-lock-CRVmruM0.mjs";
|
|
39
|
+
import "../../../../../../../../media-BR4_t-Wd.mjs";
|
|
39
40
|
import "../../../../../../../../comments-yiRFx3w5.mjs";
|
|
40
|
-
import "../../../../../../../../byline-fields-
|
|
41
|
-
import "../../../../../../../../menus-
|
|
41
|
+
import "../../../../../../../../byline-fields-CiR8FvvF.mjs";
|
|
42
|
+
import "../../../../../../../../menus-uEAxWAm1.mjs";
|
|
42
43
|
import "../../../../../../../../status-BFNdxzKc.mjs";
|
|
43
44
|
import "../../../../../../../../api/schemas/index.mjs";
|
|
44
|
-
import { o as requirePerm } from "../../../../../../../../authorize-
|
|
45
|
+
import { o as requirePerm } from "../../../../../../../../authorize-NJgp8kLI.mjs";
|
|
45
46
|
import { hasPermission } from "@emdash-cms/auth";
|
|
46
47
|
|
|
47
48
|
//#region src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts
|
package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"children.mjs","names":[],"sources":["../../../../../../../../../src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts"],"sourcesContent":["/**\n * Content-entry reference children endpoint (parent side), read-only.\n *\n * GET /_emdash/api/content/:collection/:id/references/:relation/children\n *\n * A selection is written with the entry that holds it, through the `references`\n * key of the content create and update bodies. Writing edges here instead would\n * put them live on a collection that keeps drafts, past staging, discard and\n * publication.\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleReferenceChildrenGet } from \"#api/handlers/relations.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { cursorPaginationQuery } 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 { collection, id, relation } = params;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\n\tif (!collection || !id || !relation) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and relation required\", 400);\n\t}\n\n\tconst query = parseQuery(new URL(request.url), cursorPaginationQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleReferenceChildrenGet(\n\t\t\temdash.db,\n\t\t\tcollection,\n\t\t\tid,\n\t\t\trelation,\n\t\t\t{ limit: query.limit, cursor: query.cursor },\n\t\t\thasPermission(user, \"content:read_drafts\"),\n\t\t);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get references\", \"REFERENCES_GET_ERROR\");\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"children.mjs","names":[],"sources":["../../../../../../../../../src/astro/routes/api/content/[collection]/[id]/references/[relation]/children.ts"],"sourcesContent":["/**\n * Content-entry reference children endpoint (parent side), read-only.\n *\n * GET /_emdash/api/content/:collection/:id/references/:relation/children\n *\n * A selection is written with the entry that holds it, through the `references`\n * key of the content create and update bodies. Writing edges here instead would\n * put them live on a collection that keeps drafts, past staging, discard and\n * publication.\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleReferenceChildrenGet } from \"#api/handlers/relations.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { cursorPaginationQuery } 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 { collection, id, relation } = params;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\n\tif (!collection || !id || !relation) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and relation required\", 400);\n\t}\n\n\tconst query = parseQuery(new URL(request.url), cursorPaginationQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleReferenceChildrenGet(\n\t\t\temdash.db,\n\t\t\tcollection,\n\t\t\tid,\n\t\t\trelation,\n\t\t\t{ limit: query.limit, cursor: query.cursor },\n\t\t\thasPermission(user, \"content:read_drafts\"),\n\t\t);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get references\", \"REFERENCES_GET_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAa,YAAY;AAEzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,YAAY,IAAI,aAAa;CAErC,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAClB,MAAM,SAAS,YAAY,MAAM,eAAe;AAChD,KAAI,OAAQ,QAAO;AAEnB,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAC1B,QAAO,SAAS,oBAAoB,yCAAyC,IAAI;CAGlF,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,sBAAsB;AACrE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;AASH,SAAO,aARQ,MAAM,2BACpB,OAAO,IACP,YACA,IACA,UACA;GAAE,OAAO,MAAM;GAAO,QAAQ,MAAM;GAAQ,EAC5C,cAAc,MAAM,sBAAsB,CAC1C,CAC0B;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,4BAA4B,uBAAuB"}
|
|
@@ -1,47 +1,48 @@
|
|
|
1
|
-
import "../../../../../../../../dialect-helpers-
|
|
2
|
-
import "../../../../../../../../config-
|
|
1
|
+
import "../../../../../../../../dialect-helpers-B1XN2HGB.mjs";
|
|
2
|
+
import "../../../../../../../../config-Cs_AwWXI.mjs";
|
|
3
3
|
import "../../../../../../../../datetime-normalization-PeiEdcRY.mjs";
|
|
4
|
-
import "../../../../../../../../after-
|
|
4
|
+
import "../../../../../../../../after-32yNRvd2.mjs";
|
|
5
5
|
import "../../../../../../../../base64-BQBZwXCx.mjs";
|
|
6
|
-
import "../../../../../../../../content-
|
|
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 "../../../../../../../../
|
|
6
|
+
import "../../../../../../../../content-BKHUVsE5.mjs";
|
|
7
|
+
import "../../../../../../../../query-BFHjCzSh.mjs";
|
|
8
|
+
import "../../../../../../../../object-cache-DmKr09La.mjs";
|
|
9
|
+
import "../../../../../../../../slugify-BDEG9pLk.mjs";
|
|
10
|
+
import "../../../../../../../../request-cache-5z2WzWmh.mjs";
|
|
11
|
+
import "../../../../../../../../url-DTfGDJhI.mjs";
|
|
12
|
+
import "../../../../../../../../types-DwhEvIVb.mjs";
|
|
13
|
+
import "../../../../../../../../revision-Dx7Uth1X.mjs";
|
|
14
|
+
import "../../../../../../../../staged-ByBmPFtX.mjs";
|
|
15
|
+
import "../../../../../../../../fts-manager-6861qcwk.mjs";
|
|
16
|
+
import "../../../../../../../../loader-DhnedqY4.mjs";
|
|
17
|
+
import "../../../../../../../../json-recordset-D0WhN2UA.mjs";
|
|
18
|
+
import "../../../../../../../../collection-slugs-cache-DIrLjqH-.mjs";
|
|
19
|
+
import "../../../../../../../../media-usage-work-BCK2J-v_.mjs";
|
|
20
|
+
import "../../../../../../../../capture-triggers-BezAvWcB.mjs";
|
|
21
|
+
import "../../../../../../../../activation-CGlyigmg.mjs";
|
|
22
|
+
import "../../../../../../../../registry-B0-O575m.mjs";
|
|
22
23
|
import "../../../../../../../../hash-BJaeek87.mjs";
|
|
23
|
-
import "../../../../../../../../zod-generator
|
|
24
|
+
import "../../../../../../../../zod-generator--nlM0930.mjs";
|
|
24
25
|
import "../../../../../../../../errors-B4f4It-2.mjs";
|
|
25
26
|
import "../../../../../../../../canonical-BudtH-Fx.mjs";
|
|
26
27
|
import "../../../../../../../../digest-DJ1tHCgy.mjs";
|
|
27
|
-
import "../../../../../../../../block-values-
|
|
28
|
-
import "../../../../../../../../query-
|
|
29
|
-
import "../../../../../../../../schema-
|
|
30
|
-
import { i as handleReferenceParentsGet } from "../../../../../../../../relations-
|
|
31
|
-
import "../../../../../../../../errors-
|
|
28
|
+
import "../../../../../../../../block-values-Dg0-8PPS.mjs";
|
|
29
|
+
import "../../../../../../../../query-LmPY2y0C.mjs";
|
|
30
|
+
import "../../../../../../../../schema-BqBlUZtb.mjs";
|
|
31
|
+
import { i as handleReferenceParentsGet } from "../../../../../../../../relations-WIOojTL4.mjs";
|
|
32
|
+
import "../../../../../../../../errors-8gJqv-XV.mjs";
|
|
32
33
|
import "../../../../../../../../settings-Dd1uivmQ.mjs";
|
|
33
34
|
import "../../../../../../../../site-settings-DRHfX7bq.mjs";
|
|
34
|
-
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../../../error-
|
|
35
|
-
import { i as parseQuery, t as isParseError } from "../../../../../../../../parse-
|
|
36
|
-
import { g as cursorPaginationQuery } from "../../../../../../../../redirects-
|
|
37
|
-
import "../../../../../../../../entry-lock-
|
|
38
|
-
import "../../../../../../../../media-
|
|
35
|
+
import { a as unwrapResult, i as requireDb, r as handleError, t as apiError } from "../../../../../../../../error-BCMgPxdn.mjs";
|
|
36
|
+
import { i as parseQuery, t as isParseError } from "../../../../../../../../parse-B_b6gZxG.mjs";
|
|
37
|
+
import { g as cursorPaginationQuery } from "../../../../../../../../redirects-CyvvZrCJ.mjs";
|
|
38
|
+
import "../../../../../../../../entry-lock-CRVmruM0.mjs";
|
|
39
|
+
import "../../../../../../../../media-BR4_t-Wd.mjs";
|
|
39
40
|
import "../../../../../../../../comments-yiRFx3w5.mjs";
|
|
40
|
-
import "../../../../../../../../byline-fields-
|
|
41
|
-
import "../../../../../../../../menus-
|
|
41
|
+
import "../../../../../../../../byline-fields-CiR8FvvF.mjs";
|
|
42
|
+
import "../../../../../../../../menus-uEAxWAm1.mjs";
|
|
42
43
|
import "../../../../../../../../status-BFNdxzKc.mjs";
|
|
43
44
|
import "../../../../../../../../api/schemas/index.mjs";
|
|
44
|
-
import { o as requirePerm } from "../../../../../../../../authorize-
|
|
45
|
+
import { o as requirePerm } from "../../../../../../../../authorize-NJgp8kLI.mjs";
|
|
45
46
|
import { hasPermission } from "@emdash-cms/auth";
|
|
46
47
|
|
|
47
48
|
//#region src/astro/routes/api/content/[collection]/[id]/references/[relation]/parents.ts
|
package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parents.mjs","names":[],"sources":["../../../../../../../../../src/astro/routes/api/content/[collection]/[id]/references/[relation]/parents.ts"],"sourcesContent":["/**\n * Content-entry reference parents endpoint (child side, read-only backlink)\n *\n * GET /_emdash/api/content/:collection/:id/references/:relation/parents\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleReferenceParentsGet } from \"#api/handlers/relations.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { cursorPaginationQuery } 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 { collection, id, relation } = params;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\n\tif (!collection || !id || !relation) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and relation required\", 400);\n\t}\n\n\tconst query = parseQuery(new URL(request.url), cursorPaginationQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleReferenceParentsGet(\n\t\t\temdash.db,\n\t\t\tcollection,\n\t\t\tid,\n\t\t\trelation,\n\t\t\t{ limit: query.limit, cursor: query.cursor },\n\t\t\thasPermission(user, \"content:read_drafts\"),\n\t\t);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get references\", \"REFERENCES_GET_ERROR\");\n\t}\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"parents.mjs","names":[],"sources":["../../../../../../../../../src/astro/routes/api/content/[collection]/[id]/references/[relation]/parents.ts"],"sourcesContent":["/**\n * Content-entry reference parents endpoint (child side, read-only backlink)\n *\n * GET /_emdash/api/content/:collection/:id/references/:relation/parents\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, handleError, requireDb, unwrapResult } from \"#api/error.js\";\nimport { handleReferenceParentsGet } from \"#api/handlers/relations.js\";\nimport { isParseError, parseQuery } from \"#api/parse.js\";\nimport { cursorPaginationQuery } 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 { collection, id, relation } = params;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\n\tif (!collection || !id || !relation) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and relation required\", 400);\n\t}\n\n\tconst query = parseQuery(new URL(request.url), cursorPaginationQuery);\n\tif (isParseError(query)) return query;\n\n\ttry {\n\t\tconst result = await handleReferenceParentsGet(\n\t\t\temdash.db,\n\t\t\tcollection,\n\t\t\tid,\n\t\t\trelation,\n\t\t\t{ limit: query.limit, cursor: query.cursor },\n\t\t\thasPermission(user, \"content:read_drafts\"),\n\t\t);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get references\", \"REFERENCES_GET_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAa,YAAY;AAEzB,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,YAAY,IAAI,aAAa;CAErC,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAClB,MAAM,SAAS,YAAY,MAAM,eAAe;AAChD,KAAI,OAAQ,QAAO;AAEnB,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAC1B,QAAO,SAAS,oBAAoB,yCAAyC,IAAI;CAGlF,MAAM,QAAQ,WAAW,IAAI,IAAI,QAAQ,IAAI,EAAE,sBAAsB;AACrE,KAAI,aAAa,MAAM,CAAE,QAAO;AAEhC,KAAI;AASH,SAAO,aARQ,MAAM,0BACpB,OAAO,IACP,YACA,IACA,UACA;GAAE,OAAO,MAAM;GAAO,QAAQ,MAAM;GAAQ,EAC5C,cAAc,MAAM,sBAAsB,CAC1C,CAC0B;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,4BAA4B,uBAAuB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
2
|
-
import "../../../../../../types-
|
|
2
|
+
import "../../../../../../types-DwhEvIVb.mjs";
|
|
3
3
|
import "../../../../../../errors-B4f4It-2.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { a as unwrapResult, t as apiError } from "../../../../../../error-
|
|
6
|
-
import { a as requireOwnerPerm } from "../../../../../../authorize-
|
|
4
|
+
import { r as mapErrorStatus } from "../../../../../../errors-8gJqv-XV.mjs";
|
|
5
|
+
import { a as unwrapResult, t as apiError } from "../../../../../../error-BCMgPxdn.mjs";
|
|
6
|
+
import { a as requireOwnerPerm } from "../../../../../../authorize-NJgp8kLI.mjs";
|
|
7
7
|
import { t as invalidateRouteCache } from "../../../../../../route-cache-QSOyDEw0.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/astro/routes/api/content/[collection]/[id]/restore.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
2
|
-
import "../../../../../../types-
|
|
2
|
+
import "../../../../../../types-DwhEvIVb.mjs";
|
|
3
3
|
import "../../../../../../errors-B4f4It-2.mjs";
|
|
4
|
-
import "../../../../../../errors-
|
|
5
|
-
import { a as unwrapResult, t as apiError } from "../../../../../../error-
|
|
6
|
-
import { o as requirePerm } from "../../../../../../authorize-
|
|
4
|
+
import "../../../../../../errors-8gJqv-XV.mjs";
|
|
5
|
+
import { a as unwrapResult, t as apiError } from "../../../../../../error-BCMgPxdn.mjs";
|
|
6
|
+
import { o as requirePerm } from "../../../../../../authorize-NJgp8kLI.mjs";
|
|
7
7
|
|
|
8
8
|
//#region src/astro/routes/api/content/[collection]/[id]/revisions.ts
|
|
9
9
|
const prerender = false;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import "../../../../../../dialect-helpers-
|
|
2
|
-
import "../../../../../../config-
|
|
1
|
+
import "../../../../../../dialect-helpers-B1XN2HGB.mjs";
|
|
2
|
+
import "../../../../../../config-Cs_AwWXI.mjs";
|
|
3
3
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
4
|
-
import "../../../../../../url-
|
|
5
|
-
import "../../../../../../types-
|
|
6
|
-
import "../../../../../../entry-locks-
|
|
4
|
+
import "../../../../../../url-DTfGDJhI.mjs";
|
|
5
|
+
import "../../../../../../types-DwhEvIVb.mjs";
|
|
6
|
+
import "../../../../../../entry-locks-CJ9uhqg1.mjs";
|
|
7
7
|
import "../../../../../../errors-B4f4It-2.mjs";
|
|
8
|
-
import {
|
|
8
|
+
import { r as mapErrorStatus } from "../../../../../../errors-8gJqv-XV.mjs";
|
|
9
9
|
import "../../../../../../settings-Dd1uivmQ.mjs";
|
|
10
10
|
import "../../../../../../site-settings-DRHfX7bq.mjs";
|
|
11
|
-
import { a as unwrapResult, t as apiError } from "../../../../../../error-
|
|
12
|
-
import { n as parseBody, t as isParseError } from "../../../../../../parse-
|
|
13
|
-
import "../../../../../../redirects-
|
|
14
|
-
import { zt as contentScheduleBody } from "../../../../../../entry-lock-
|
|
15
|
-
import "../../../../../../media-
|
|
11
|
+
import { a as unwrapResult, t as apiError } from "../../../../../../error-BCMgPxdn.mjs";
|
|
12
|
+
import { n as parseBody, t as isParseError } from "../../../../../../parse-B_b6gZxG.mjs";
|
|
13
|
+
import "../../../../../../redirects-CyvvZrCJ.mjs";
|
|
14
|
+
import { zt as contentScheduleBody } from "../../../../../../entry-lock-CRVmruM0.mjs";
|
|
15
|
+
import "../../../../../../media-BR4_t-Wd.mjs";
|
|
16
16
|
import "../../../../../../comments-yiRFx3w5.mjs";
|
|
17
|
-
import "../../../../../../byline-fields-
|
|
18
|
-
import "../../../../../../menus-
|
|
17
|
+
import "../../../../../../byline-fields-CiR8FvvF.mjs";
|
|
18
|
+
import "../../../../../../menus-uEAxWAm1.mjs";
|
|
19
19
|
import "../../../../../../status-BFNdxzKc.mjs";
|
|
20
20
|
import "../../../../../../api/schemas/index.mjs";
|
|
21
|
-
import { a as requireOwnerPerm } from "../../../../../../authorize-
|
|
22
|
-
import { t as claimEntryLockForWrite } from "../../../../../../entry-lock-
|
|
21
|
+
import { a as requireOwnerPerm } from "../../../../../../authorize-NJgp8kLI.mjs";
|
|
22
|
+
import { t as claimEntryLockForWrite } from "../../../../../../entry-lock-D-zJQ4q6.mjs";
|
|
23
23
|
import { t as invalidateRouteCache } from "../../../../../../route-cache-QSOyDEw0.mjs";
|
|
24
24
|
|
|
25
25
|
//#region src/astro/routes/api/content/[collection]/[id]/schedule.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_taxonomy_.d.mts","names":[],"sources":["../../../../../../../../src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"_taxonomy_.d.mts","names":[],"sources":["../../../../../../../../src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts"],"mappings":";;;cA0Ba,SAAA;AAuCb;;;AAAA,cAAa,GAAA,EAAK,QAAA;;AA0ClB;;cAAa,IAAA,EAAM,QAAA"}
|
|
@@ -1,41 +1,49 @@
|
|
|
1
|
-
import "../../../../../../../dialect-helpers-
|
|
2
|
-
import { r as getI18nConfig } from "../../../../../../../config-
|
|
1
|
+
import "../../../../../../../dialect-helpers-B1XN2HGB.mjs";
|
|
2
|
+
import { r as getI18nConfig } from "../../../../../../../config-Cs_AwWXI.mjs";
|
|
3
3
|
import "../../../../../../../datetime-normalization-PeiEdcRY.mjs";
|
|
4
|
-
import "../../../../../../../after-
|
|
4
|
+
import "../../../../../../../after-32yNRvd2.mjs";
|
|
5
5
|
import "../../../../../../../base64-BQBZwXCx.mjs";
|
|
6
|
-
import { t as ContentRepository } from "../../../../../../../content-
|
|
7
|
-
import "../../../../../../../
|
|
8
|
-
import
|
|
9
|
-
import "../../../../../../../
|
|
10
|
-
import "../../../../../../../
|
|
11
|
-
import "../../../../../../../
|
|
12
|
-
import "../../../../../../../
|
|
13
|
-
import "../../../../../../../
|
|
14
|
-
import
|
|
15
|
-
import "../../../../../../../
|
|
6
|
+
import { t as ContentRepository } from "../../../../../../../content-BKHUVsE5.mjs";
|
|
7
|
+
import "../../../../../../../query-BFHjCzSh.mjs";
|
|
8
|
+
import "../../../../../../../object-cache-DmKr09La.mjs";
|
|
9
|
+
import { n as chunks } from "../../../../../../../chunks-DiW8VMwz.mjs";
|
|
10
|
+
import "../../../../../../../slugify-BDEG9pLk.mjs";
|
|
11
|
+
import "../../../../../../../request-cache-5z2WzWmh.mjs";
|
|
12
|
+
import "../../../../../../../url-DTfGDJhI.mjs";
|
|
13
|
+
import "../../../../../../../types-DwhEvIVb.mjs";
|
|
14
|
+
import "../../../../../../../revision-Dx7Uth1X.mjs";
|
|
15
|
+
import { t as TaxonomyRepository } from "../../../../../../../taxonomy-CMI5fczd.mjs";
|
|
16
|
+
import "../../../../../../../resolve-DdNXBJSr.mjs";
|
|
16
17
|
import { r as taxonomyTag } from "../../../../../../../chrome-tags-BIKBMZYO.mjs";
|
|
17
|
-
import "../../../../../../../loader-
|
|
18
|
-
import "../../../../../../../json-recordset-
|
|
19
|
-
import "../../../../../../../collection-slugs-cache-
|
|
20
|
-
import { d as invalidateTermCache } from "../../../../../../../taxonomies-
|
|
18
|
+
import "../../../../../../../loader-DhnedqY4.mjs";
|
|
19
|
+
import "../../../../../../../json-recordset-D0WhN2UA.mjs";
|
|
20
|
+
import "../../../../../../../collection-slugs-cache-DIrLjqH-.mjs";
|
|
21
|
+
import { d as invalidateTermCache } from "../../../../../../../taxonomies-B__VmCKQ.mjs";
|
|
21
22
|
import "../../../../../../../errors-B4f4It-2.mjs";
|
|
22
|
-
import "../../../../../../../errors-
|
|
23
|
+
import "../../../../../../../errors-8gJqv-XV.mjs";
|
|
23
24
|
import "../../../../../../../settings-Dd1uivmQ.mjs";
|
|
24
25
|
import "../../../../../../../site-settings-DRHfX7bq.mjs";
|
|
25
|
-
import { i as requireDb, n as apiSuccess, r as handleError, t as apiError } from "../../../../../../../error-
|
|
26
|
-
import { n as parseBody, t as isParseError } from "../../../../../../../parse-
|
|
27
|
-
import "../../../../../../../redirects-
|
|
28
|
-
import { Ht as contentTermsBody } from "../../../../../../../entry-lock-
|
|
29
|
-
import "../../../../../../../media-
|
|
26
|
+
import { i as requireDb, n as apiSuccess, r as handleError, t as apiError } from "../../../../../../../error-BCMgPxdn.mjs";
|
|
27
|
+
import { n as parseBody, t as isParseError } from "../../../../../../../parse-B_b6gZxG.mjs";
|
|
28
|
+
import "../../../../../../../redirects-CyvvZrCJ.mjs";
|
|
29
|
+
import { Ht as contentTermsBody } from "../../../../../../../entry-lock-CRVmruM0.mjs";
|
|
30
|
+
import "../../../../../../../media-BR4_t-Wd.mjs";
|
|
30
31
|
import "../../../../../../../comments-yiRFx3w5.mjs";
|
|
31
|
-
import "../../../../../../../byline-fields-
|
|
32
|
-
import "../../../../../../../menus-
|
|
32
|
+
import "../../../../../../../byline-fields-CiR8FvvF.mjs";
|
|
33
|
+
import "../../../../../../../menus-uEAxWAm1.mjs";
|
|
33
34
|
import "../../../../../../../status-BFNdxzKc.mjs";
|
|
34
35
|
import "../../../../../../../api/schemas/index.mjs";
|
|
35
|
-
import { i as requireEntryEditPerm, o as requirePerm, r as requireAnyPerm } from "../../../../../../../authorize-
|
|
36
|
+
import { i as requireEntryEditPerm, o as requirePerm, r as requireAnyPerm } from "../../../../../../../authorize-NJgp8kLI.mjs";
|
|
36
37
|
import { t as invalidateRouteCache } from "../../../../../../../route-cache-QSOyDEw0.mjs";
|
|
38
|
+
import { hasPermission } from "@emdash-cms/auth";
|
|
37
39
|
|
|
38
40
|
//#region src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts
|
|
41
|
+
/**
|
|
42
|
+
* Content-taxonomy association endpoint
|
|
43
|
+
*
|
|
44
|
+
* GET /_emdash/api/content/:collection/:id/terms/:taxonomy - Get terms for an entry
|
|
45
|
+
* POST /_emdash/api/content/:collection/:id/terms/:taxonomy - Set terms for an entry
|
|
46
|
+
*/
|
|
39
47
|
const prerender = false;
|
|
40
48
|
const MAX_CACHE_PURGE_TAGS = 100;
|
|
41
49
|
function assignmentResponse(assignments, entryLocale) {
|
|
@@ -74,7 +82,7 @@ const GET = async ({ params, locals }) => {
|
|
|
74
82
|
if (!collection || !id || !taxonomy) return apiError("VALIDATION_ERROR", "Collection, id, and taxonomy required", 400);
|
|
75
83
|
try {
|
|
76
84
|
const entry = await new ContentRepository(emdash.db).findByIdOrSlug(collection, id);
|
|
77
|
-
if (!entry) return apiError("NOT_FOUND", "Content not found", 404);
|
|
85
|
+
if (!entry || entry.status !== "published" && !hasPermission(user, "content:read_drafts")) return apiError("NOT_FOUND", "Content not found", 404);
|
|
78
86
|
const locale = entry.locale || getI18nConfig()?.defaultLocale || "en";
|
|
79
87
|
const defaultLocale = getI18nConfig()?.defaultLocale ?? "en";
|
|
80
88
|
return apiSuccess(assignmentResponse(await new TaxonomyRepository(emdash.db).getTermAssignmentsForEntry(collection, entry.id, taxonomy, locale, defaultLocale), locale));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_taxonomy_.mjs","names":[],"sources":["../../../../../../../../src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts"],"sourcesContent":["/**\n * Content-taxonomy association endpoint\n *\n * GET /_emdash/api/content/:collection/:id/terms/:taxonomy - Get terms for an entry\n * POST /_emdash/api/content/:collection/:id/terms/:taxonomy - Set terms for an entry\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { requireAnyPerm, requireEntryEditPerm, requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess, handleError, requireDb } from \"#api/error.js\";\nimport { parseBody, isParseError } from \"#api/parse.js\";\nimport { contentTermsBody } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\nimport { invalidateRouteCache } from \"#cache/route-cache.js\";\nimport { ContentRepository } from \"#db/repositories/content.js\";\nimport {\n\tTaxonomyRepository,\n\ttype TaxonomyAssignmentResolution,\n} from \"#db/repositories/taxonomy.js\";\nimport { invalidateTermCache } from \"#taxonomies/index.js\";\nimport { chunks } from \"#utils/chunks.js\";\n\nimport { getI18nConfig } from \"../../../../../../../i18n/config.js\";\n\nexport const prerender = false;\n\nconst MAX_CACHE_PURGE_TAGS = 100;\n\nfunction assignmentResponse(assignments: TaxonomyAssignmentResolution[], entryLocale: string) {\n\tconst config = getI18nConfig();\n\tconst defaultLocale = config?.defaultLocale ?? \"en\";\n\treturn {\n\t\tterms: assignments.flatMap(({ term }) =>\n\t\t\tterm\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: term.id,\n\t\t\t\t\t\t\tname: term.name,\n\t\t\t\t\t\t\tslug: term.slug,\n\t\t\t\t\t\t\tlabel: term.label,\n\t\t\t\t\t\t\tparentId: term.parentId,\n\t\t\t\t\t\t\tlocale: term.locale,\n\t\t\t\t\t\t\ttranslationGroup: term.translationGroup,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t\t),\n\t\tunresolved: assignments\n\t\t\t.filter(({ term }) => term === null)\n\t\t\t.map(({ translationGroup, availableLocales, translations }) => ({\n\t\t\t\ttranslationGroup,\n\t\t\t\tavailableLocales,\n\t\t\t\ttranslations,\n\t\t\t})),\n\t\tentryLocale,\n\t\tdefaultLocale,\n\t\timplicitDefaultLocale: config === null,\n\t};\n}\n\n/**\n * Get terms assigned to an entry\n */\nexport const GET: APIRoute = async ({ params, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { collection, id, taxonomy } = params;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\n\tif (!collection || !id || !taxonomy) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and taxonomy required\", 400);\n\t}\n\n\ttry {\n\t\t// Assignments store content and term translation groups. Resolve the\n\t\t// entry's locale server-side so the response includes only that locale's\n\t\t// term variant.\n\t\tconst entry = await new ContentRepository(emdash.db).findByIdOrSlug(collection, id);\n\t\tif (!entry) return apiError(\"NOT_FOUND\", \"Content not found\", 404);\n\t\tconst locale = entry.locale || getI18nConfig()?.defaultLocale || \"en\";\n\t\tconst defaultLocale = getI18nConfig()?.defaultLocale ?? \"en\";\n\n\t\tconst repo = new TaxonomyRepository(emdash.db);\n\t\tconst assignments = await repo.getTermAssignmentsForEntry(\n\t\t\tcollection,\n\t\t\tentry.id,\n\t\t\ttaxonomy,\n\t\t\tlocale,\n\t\t\tdefaultLocale,\n\t\t);\n\n\t\treturn apiSuccess(assignmentResponse(assignments, locale));\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get entry terms\", \"TERMS_GET_ERROR\");\n\t}\n};\n\n/**\n * Set terms for an entry (replaces existing)\n */\nexport const POST: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { collection, id, taxonomy } = params;\n\n\tif (!collection || !id || !taxonomy) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and taxonomy required\", 400);\n\t}\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requireAnyPerm(user, [\"content:edit_own\", \"content:edit_own_drafts\"]);\n\tif (denied) return denied;\n\n\tif (!emdash.handleContentGet) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\t// Verify the content exists before modifying its terms\n\tconst existing = await emdash.handleContentGet(collection, id);\n\tif (!existing.success) {\n\t\treturn apiError(\n\t\t\texisting.error?.code ?? \"NOT_FOUND\",\n\t\t\texisting.error?.message ?? \"Content not found\",\n\t\t\texisting.error?.code === \"NOT_FOUND\" ? 404 : 500,\n\t\t);\n\t}\n\n\t// Check ownership for edit permission\n\tconst existingData =\n\t\texisting.data && typeof existing.data === \"object\"\n\t\t\t? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- handler returns unknown data; narrowed by typeof check above\n\t\t\t\t(existing.data as Record<string, unknown>)\n\t\t\t: undefined;\n\t// Handler returns { item, _rev } — extract the item for ownership check\n\tconst existingItem =\n\t\texistingData?.item && typeof existingData.item === \"object\"\n\t\t\t? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- narrowed by typeof check above\n\t\t\t\t(existingData.item as Record<string, unknown>)\n\t\t\t: existingData;\n\tconst authorId = typeof existingItem?.authorId === \"string\" ? existingItem.authorId : \"\";\n\tconst editDenied = requireEntryEditPerm(user, { authorId, status: existingItem?.status });\n\tif (editDenied) return editDenied;\n\n\t// Resolve the canonical content ID from the handler result.\n\t// The URL `id` param may be a slug; we must use the real ID for term storage.\n\tconst canonicalId = typeof existingItem?.id === \"string\" ? existingItem.id : id;\n\t// The assignment spans the content translation group, while the response\n\t// includes only the term variant matching this entry's locale.\n\tconst entryLocale =\n\t\ttypeof existingItem?.locale === \"string\"\n\t\t\t? existingItem.locale\n\t\t\t: (getI18nConfig()?.defaultLocale ?? \"en\");\n\n\ttry {\n\t\tconst body = await parseBody(request, contentTermsBody);\n\t\tif (isParseError(body)) return body;\n\t\tconst { termIds } = body;\n\n\t\tconst repo = new TaxonomyRepository(emdash.db);\n\n\t\t// Verify all term IDs exist and belong to the correct taxonomy\n\t\tfor (const termId of termIds) {\n\t\t\tconst term = await repo.findById(termId);\n\t\t\tif (!term) {\n\t\t\t\treturn apiError(\"NOT_FOUND\", `Term ID '${termId}' not found`, 404);\n\t\t\t}\n\t\t\tif (term.name !== taxonomy) {\n\t\t\t\treturn apiError(\n\t\t\t\t\t\"VALIDATION_ERROR\",\n\t\t\t\t\t`Term ID '${termId}' does not belong to taxonomy '${taxonomy}'`,\n\t\t\t\t\t400,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Set the terms (replaces existing) using the canonical ID\n\t\tawait repo.setTermsForEntry(collection, canonicalId, taxonomy, termIds);\n\n\t\t// Term assignments changed — invalidate the hasAnyTermAssignments cache\n\t\t// so hydration on subsequent reads issues a fresh query.\n\t\tinvalidateTermCache();\n\t\tif (cache?.enabled) {\n\t\t\tconst translationGroup = existingItem?.translationGroup;\n\t\t\tconst siblingIds =\n\t\t\t\ttypeof translationGroup === \"string\"\n\t\t\t\t\t? await new ContentRepository(emdash.db).findTranslationIds(collection, translationGroup)\n\t\t\t\t\t: [];\n\t\t\tconst tags = [collection, ...new Set([canonicalId, ...siblingIds]), taxonomyTag(taxonomy)];\n\t\t\tfor (const tagBatch of chunks(tags, MAX_CACHE_PURGE_TAGS)) {\n\t\t\t\tawait invalidateRouteCache(cache, tagBatch);\n\t\t\t}\n\t\t}\n\n\t\t// Get the updated terms using the canonical ID, scoped to the entry locale\n\t\tconst assignments = await repo.getTermAssignmentsForEntry(\n\t\t\tcollection,\n\t\t\tcanonicalId,\n\t\t\ttaxonomy,\n\t\t\tentryLocale,\n\t\t\tgetI18nConfig()?.defaultLocale ?? \"en\",\n\t\t);\n\n\t\treturn apiSuccess(assignmentResponse(assignments, entryLocale));\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to set entry terms\", \"TERMS_SET_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,YAAY;AAEzB,MAAM,uBAAuB;AAE7B,SAAS,mBAAmB,aAA6C,aAAqB;CAC7F,MAAM,SAAS,eAAe;CAC9B,MAAM,gBAAgB,QAAQ,iBAAiB;AAC/C,QAAO;EACN,OAAO,YAAY,SAAS,EAAE,WAC7B,OACG,CACA;GACC,IAAI,KAAK;GACT,MAAM,KAAK;GACX,MAAM,KAAK;GACX,OAAO,KAAK;GACZ,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,kBAAkB,KAAK;GACvB,CACD,GACA,EAAE,CACL;EACD,YAAY,YACV,QAAQ,EAAE,WAAW,SAAS,KAAK,CACnC,KAAK,EAAE,kBAAkB,kBAAkB,oBAAoB;GAC/D;GACA;GACA;GACA,EAAE;EACJ;EACA;EACA,uBAAuB,WAAW;EAClC;;;;;AAMF,MAAa,MAAgB,OAAO,EAAE,QAAQ,aAAa;CAC1D,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,YAAY,IAAI,aAAa;CAErC,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAClB,MAAM,SAAS,YAAY,MAAM,eAAe;AAChD,KAAI,OAAQ,QAAO;AAEnB,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAC1B,QAAO,SAAS,oBAAoB,yCAAyC,IAAI;AAGlF,KAAI;EAIH,MAAM,QAAQ,MAAM,IAAI,kBAAkB,OAAO,GAAG,CAAC,eAAe,YAAY,GAAG;AACnF,MAAI,CAAC,MAAO,QAAO,SAAS,aAAa,qBAAqB,IAAI;EAClE,MAAM,SAAS,MAAM,UAAU,eAAe,EAAE,iBAAiB;EACjE,MAAM,gBAAgB,eAAe,EAAE,iBAAiB;AAWxD,SAAO,WAAW,mBARE,MADP,IAAI,mBAAmB,OAAO,GAAG,CACf,2BAC9B,YACA,MAAM,IACN,UACA,QACA,cACA,EAEiD,OAAO,CAAC;UAClD,OAAO;AACf,SAAO,YAAY,OAAO,6BAA6B,kBAAkB;;;;;;AAO3E,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;CAC3E,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,YAAY,IAAI,aAAa;AAErC,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAC1B,QAAO,SAAS,oBAAoB,yCAAyC,IAAI;CAGlF,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAClB,MAAM,SAAS,eAAe,MAAM,CAAC,oBAAoB,0BAA0B,CAAC;AACpF,KAAI,OAAQ,QAAO;AAEnB,KAAI,CAAC,OAAO,iBACX,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;CAIpE,MAAM,WAAW,MAAM,OAAO,iBAAiB,YAAY,GAAG;AAC9D,KAAI,CAAC,SAAS,QACb,QAAO,SACN,SAAS,OAAO,QAAQ,aACxB,SAAS,OAAO,WAAW,qBAC3B,SAAS,OAAO,SAAS,cAAc,MAAM,IAC7C;CAIF,MAAM,eACL,SAAS,QAAQ,OAAO,SAAS,SAAS,WAEvC,SAAS,OACT;CAEJ,MAAM,eACL,cAAc,QAAQ,OAAO,aAAa,SAAS,WAEhD,aAAa,OACb;CAEJ,MAAM,aAAa,qBAAqB,MAAM;EAAE,UAD/B,OAAO,cAAc,aAAa,WAAW,aAAa,WAAW;EAC5B,QAAQ,cAAc;EAAQ,CAAC;AACzF,KAAI,WAAY,QAAO;CAIvB,MAAM,cAAc,OAAO,cAAc,OAAO,WAAW,aAAa,KAAK;CAG7E,MAAM,cACL,OAAO,cAAc,WAAW,WAC7B,aAAa,SACZ,eAAe,EAAE,iBAAiB;AAEvC,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,iBAAiB;AACvD,MAAI,aAAa,KAAK,CAAE,QAAO;EAC/B,MAAM,EAAE,YAAY;EAEpB,MAAM,OAAO,IAAI,mBAAmB,OAAO,GAAG;AAG9C,OAAK,MAAM,UAAU,SAAS;GAC7B,MAAM,OAAO,MAAM,KAAK,SAAS,OAAO;AACxC,OAAI,CAAC,KACJ,QAAO,SAAS,aAAa,YAAY,OAAO,cAAc,IAAI;AAEnE,OAAI,KAAK,SAAS,SACjB,QAAO,SACN,oBACA,YAAY,OAAO,iCAAiC,SAAS,IAC7D,IACA;;AAKH,QAAM,KAAK,iBAAiB,YAAY,aAAa,UAAU,QAAQ;AAIvE,uBAAqB;AACrB,MAAI,OAAO,SAAS;GACnB,MAAM,mBAAmB,cAAc;GACvC,MAAM,aACL,OAAO,qBAAqB,WACzB,MAAM,IAAI,kBAAkB,OAAO,GAAG,CAAC,mBAAmB,YAAY,iBAAiB,GACvF,EAAE;GACN,MAAM,OAAO;IAAC;IAAY,GAAG,IAAI,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;IAAE,YAAY,SAAS;IAAC;AAC1F,QAAK,MAAM,YAAY,OAAO,MAAM,qBAAqB,CACxD,OAAM,qBAAqB,OAAO,SAAS;;AAa7C,SAAO,WAAW,mBARE,MAAM,KAAK,2BAC9B,YACA,aACA,UACA,aACA,eAAe,EAAE,iBAAiB,KAClC,EAEiD,YAAY,CAAC;UACvD,OAAO;AACf,SAAO,YAAY,OAAO,6BAA6B,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"_taxonomy_.mjs","names":[],"sources":["../../../../../../../../src/astro/routes/api/content/[collection]/[id]/terms/[taxonomy].ts"],"sourcesContent":["/**\n * Content-taxonomy association endpoint\n *\n * GET /_emdash/api/content/:collection/:id/terms/:taxonomy - Get terms for an entry\n * POST /_emdash/api/content/:collection/:id/terms/:taxonomy - Set terms for an entry\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requireAnyPerm, requireEntryEditPerm, requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess, handleError, requireDb } from \"#api/error.js\";\nimport { parseBody, isParseError } from \"#api/parse.js\";\nimport { contentTermsBody } from \"#api/schemas.js\";\nimport { taxonomyTag } from \"#cache/chrome-tags.js\";\nimport { invalidateRouteCache } from \"#cache/route-cache.js\";\nimport { ContentRepository } from \"#db/repositories/content.js\";\nimport {\n\tTaxonomyRepository,\n\ttype TaxonomyAssignmentResolution,\n} from \"#db/repositories/taxonomy.js\";\nimport { invalidateTermCache } from \"#taxonomies/index.js\";\nimport { chunks } from \"#utils/chunks.js\";\n\nimport { getI18nConfig } from \"../../../../../../../i18n/config.js\";\n\nexport const prerender = false;\n\nconst MAX_CACHE_PURGE_TAGS = 100;\n\nfunction assignmentResponse(assignments: TaxonomyAssignmentResolution[], entryLocale: string) {\n\tconst config = getI18nConfig();\n\tconst defaultLocale = config?.defaultLocale ?? \"en\";\n\treturn {\n\t\tterms: assignments.flatMap(({ term }) =>\n\t\t\tterm\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: term.id,\n\t\t\t\t\t\t\tname: term.name,\n\t\t\t\t\t\t\tslug: term.slug,\n\t\t\t\t\t\t\tlabel: term.label,\n\t\t\t\t\t\t\tparentId: term.parentId,\n\t\t\t\t\t\t\tlocale: term.locale,\n\t\t\t\t\t\t\ttranslationGroup: term.translationGroup,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t\t),\n\t\tunresolved: assignments\n\t\t\t.filter(({ term }) => term === null)\n\t\t\t.map(({ translationGroup, availableLocales, translations }) => ({\n\t\t\t\ttranslationGroup,\n\t\t\t\tavailableLocales,\n\t\t\t\ttranslations,\n\t\t\t})),\n\t\tentryLocale,\n\t\tdefaultLocale,\n\t\timplicitDefaultLocale: config === null,\n\t};\n}\n\n/**\n * Get terms assigned to an entry\n */\nexport const GET: APIRoute = async ({ params, locals }) => {\n\tconst { emdash, user } = locals;\n\tconst { collection, id, taxonomy } = params;\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\n\tif (!collection || !id || !taxonomy) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and taxonomy required\", 400);\n\t}\n\n\ttry {\n\t\t// Assignments store content and term translation groups. Resolve the\n\t\t// entry's locale server-side so the response includes only that locale's\n\t\t// term variant.\n\t\tconst entry = await new ContentRepository(emdash.db).findByIdOrSlug(collection, id);\n\t\tif (!entry || (entry.status !== \"published\" && !hasPermission(user, \"content:read_drafts\"))) {\n\t\t\treturn apiError(\"NOT_FOUND\", \"Content not found\", 404);\n\t\t}\n\t\tconst locale = entry.locale || getI18nConfig()?.defaultLocale || \"en\";\n\t\tconst defaultLocale = getI18nConfig()?.defaultLocale ?? \"en\";\n\n\t\tconst repo = new TaxonomyRepository(emdash.db);\n\t\tconst assignments = await repo.getTermAssignmentsForEntry(\n\t\t\tcollection,\n\t\t\tentry.id,\n\t\t\ttaxonomy,\n\t\t\tlocale,\n\t\t\tdefaultLocale,\n\t\t);\n\n\t\treturn apiSuccess(assignmentResponse(assignments, locale));\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to get entry terms\", \"TERMS_GET_ERROR\");\n\t}\n};\n\n/**\n * Set terms for an entry (replaces existing)\n */\nexport const POST: APIRoute = async ({ params, request, locals, cache }) => {\n\tconst { emdash, user } = locals;\n\tconst { collection, id, taxonomy } = params;\n\n\tif (!collection || !id || !taxonomy) {\n\t\treturn apiError(\"VALIDATION_ERROR\", \"Collection, id, and taxonomy required\", 400);\n\t}\n\n\tconst dbErr = requireDb(emdash?.db);\n\tif (dbErr) return dbErr;\n\tconst denied = requireAnyPerm(user, [\"content:edit_own\", \"content:edit_own_drafts\"]);\n\tif (denied) return denied;\n\n\tif (!emdash.handleContentGet) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\t// Verify the content exists before modifying its terms\n\tconst existing = await emdash.handleContentGet(collection, id);\n\tif (!existing.success) {\n\t\treturn apiError(\n\t\t\texisting.error?.code ?? \"NOT_FOUND\",\n\t\t\texisting.error?.message ?? \"Content not found\",\n\t\t\texisting.error?.code === \"NOT_FOUND\" ? 404 : 500,\n\t\t);\n\t}\n\n\t// Check ownership for edit permission\n\tconst existingData =\n\t\texisting.data && typeof existing.data === \"object\"\n\t\t\t? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- handler returns unknown data; narrowed by typeof check above\n\t\t\t\t(existing.data as Record<string, unknown>)\n\t\t\t: undefined;\n\t// Handler returns { item, _rev } — extract the item for ownership check\n\tconst existingItem =\n\t\texistingData?.item && typeof existingData.item === \"object\"\n\t\t\t? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- narrowed by typeof check above\n\t\t\t\t(existingData.item as Record<string, unknown>)\n\t\t\t: existingData;\n\tconst authorId = typeof existingItem?.authorId === \"string\" ? existingItem.authorId : \"\";\n\tconst editDenied = requireEntryEditPerm(user, { authorId, status: existingItem?.status });\n\tif (editDenied) return editDenied;\n\n\t// Resolve the canonical content ID from the handler result.\n\t// The URL `id` param may be a slug; we must use the real ID for term storage.\n\tconst canonicalId = typeof existingItem?.id === \"string\" ? existingItem.id : id;\n\t// The assignment spans the content translation group, while the response\n\t// includes only the term variant matching this entry's locale.\n\tconst entryLocale =\n\t\ttypeof existingItem?.locale === \"string\"\n\t\t\t? existingItem.locale\n\t\t\t: (getI18nConfig()?.defaultLocale ?? \"en\");\n\n\ttry {\n\t\tconst body = await parseBody(request, contentTermsBody);\n\t\tif (isParseError(body)) return body;\n\t\tconst { termIds } = body;\n\n\t\tconst repo = new TaxonomyRepository(emdash.db);\n\n\t\t// Verify all term IDs exist and belong to the correct taxonomy\n\t\tfor (const termId of termIds) {\n\t\t\tconst term = await repo.findById(termId);\n\t\t\tif (!term) {\n\t\t\t\treturn apiError(\"NOT_FOUND\", `Term ID '${termId}' not found`, 404);\n\t\t\t}\n\t\t\tif (term.name !== taxonomy) {\n\t\t\t\treturn apiError(\n\t\t\t\t\t\"VALIDATION_ERROR\",\n\t\t\t\t\t`Term ID '${termId}' does not belong to taxonomy '${taxonomy}'`,\n\t\t\t\t\t400,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Set the terms (replaces existing) using the canonical ID\n\t\tawait repo.setTermsForEntry(collection, canonicalId, taxonomy, termIds);\n\n\t\t// Term assignments changed — invalidate the hasAnyTermAssignments cache\n\t\t// so hydration on subsequent reads issues a fresh query.\n\t\tinvalidateTermCache();\n\t\tif (cache?.enabled) {\n\t\t\tconst translationGroup = existingItem?.translationGroup;\n\t\t\tconst siblingIds =\n\t\t\t\ttypeof translationGroup === \"string\"\n\t\t\t\t\t? await new ContentRepository(emdash.db).findTranslationIds(collection, translationGroup)\n\t\t\t\t\t: [];\n\t\t\tconst tags = [collection, ...new Set([canonicalId, ...siblingIds]), taxonomyTag(taxonomy)];\n\t\t\tfor (const tagBatch of chunks(tags, MAX_CACHE_PURGE_TAGS)) {\n\t\t\t\tawait invalidateRouteCache(cache, tagBatch);\n\t\t\t}\n\t\t}\n\n\t\t// Get the updated terms using the canonical ID, scoped to the entry locale\n\t\tconst assignments = await repo.getTermAssignmentsForEntry(\n\t\t\tcollection,\n\t\t\tcanonicalId,\n\t\t\ttaxonomy,\n\t\t\tentryLocale,\n\t\t\tgetI18nConfig()?.defaultLocale ?? \"en\",\n\t\t);\n\n\t\treturn apiSuccess(assignmentResponse(assignments, entryLocale));\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to set entry terms\", \"TERMS_SET_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAa,YAAY;AAEzB,MAAM,uBAAuB;AAE7B,SAAS,mBAAmB,aAA6C,aAAqB;CAC7F,MAAM,SAAS,eAAe;CAC9B,MAAM,gBAAgB,QAAQ,iBAAiB;AAC/C,QAAO;EACN,OAAO,YAAY,SAAS,EAAE,WAC7B,OACG,CACA;GACC,IAAI,KAAK;GACT,MAAM,KAAK;GACX,MAAM,KAAK;GACX,OAAO,KAAK;GACZ,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,kBAAkB,KAAK;GACvB,CACD,GACA,EAAE,CACL;EACD,YAAY,YACV,QAAQ,EAAE,WAAW,SAAS,KAAK,CACnC,KAAK,EAAE,kBAAkB,kBAAkB,oBAAoB;GAC/D;GACA;GACA;GACA,EAAE;EACJ;EACA;EACA,uBAAuB,WAAW;EAClC;;;;;AAMF,MAAa,MAAgB,OAAO,EAAE,QAAQ,aAAa;CAC1D,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,YAAY,IAAI,aAAa;CAErC,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAClB,MAAM,SAAS,YAAY,MAAM,eAAe;AAChD,KAAI,OAAQ,QAAO;AAEnB,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAC1B,QAAO,SAAS,oBAAoB,yCAAyC,IAAI;AAGlF,KAAI;EAIH,MAAM,QAAQ,MAAM,IAAI,kBAAkB,OAAO,GAAG,CAAC,eAAe,YAAY,GAAG;AACnF,MAAI,CAAC,SAAU,MAAM,WAAW,eAAe,CAAC,cAAc,MAAM,sBAAsB,CACzF,QAAO,SAAS,aAAa,qBAAqB,IAAI;EAEvD,MAAM,SAAS,MAAM,UAAU,eAAe,EAAE,iBAAiB;EACjE,MAAM,gBAAgB,eAAe,EAAE,iBAAiB;AAWxD,SAAO,WAAW,mBARE,MADP,IAAI,mBAAmB,OAAO,GAAG,CACf,2BAC9B,YACA,MAAM,IACN,UACA,QACA,cACA,EAEiD,OAAO,CAAC;UAClD,OAAO;AACf,SAAO,YAAY,OAAO,6BAA6B,kBAAkB;;;;;;AAO3E,MAAa,OAAiB,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;CAC3E,MAAM,EAAE,QAAQ,SAAS;CACzB,MAAM,EAAE,YAAY,IAAI,aAAa;AAErC,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAC1B,QAAO,SAAS,oBAAoB,yCAAyC,IAAI;CAGlF,MAAM,QAAQ,UAAU,QAAQ,GAAG;AACnC,KAAI,MAAO,QAAO;CAClB,MAAM,SAAS,eAAe,MAAM,CAAC,oBAAoB,0BAA0B,CAAC;AACpF,KAAI,OAAQ,QAAO;AAEnB,KAAI,CAAC,OAAO,iBACX,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;CAIpE,MAAM,WAAW,MAAM,OAAO,iBAAiB,YAAY,GAAG;AAC9D,KAAI,CAAC,SAAS,QACb,QAAO,SACN,SAAS,OAAO,QAAQ,aACxB,SAAS,OAAO,WAAW,qBAC3B,SAAS,OAAO,SAAS,cAAc,MAAM,IAC7C;CAIF,MAAM,eACL,SAAS,QAAQ,OAAO,SAAS,SAAS,WAEvC,SAAS,OACT;CAEJ,MAAM,eACL,cAAc,QAAQ,OAAO,aAAa,SAAS,WAEhD,aAAa,OACb;CAEJ,MAAM,aAAa,qBAAqB,MAAM;EAAE,UAD/B,OAAO,cAAc,aAAa,WAAW,aAAa,WAAW;EAC5B,QAAQ,cAAc;EAAQ,CAAC;AACzF,KAAI,WAAY,QAAO;CAIvB,MAAM,cAAc,OAAO,cAAc,OAAO,WAAW,aAAa,KAAK;CAG7E,MAAM,cACL,OAAO,cAAc,WAAW,WAC7B,aAAa,SACZ,eAAe,EAAE,iBAAiB;AAEvC,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,iBAAiB;AACvD,MAAI,aAAa,KAAK,CAAE,QAAO;EAC/B,MAAM,EAAE,YAAY;EAEpB,MAAM,OAAO,IAAI,mBAAmB,OAAO,GAAG;AAG9C,OAAK,MAAM,UAAU,SAAS;GAC7B,MAAM,OAAO,MAAM,KAAK,SAAS,OAAO;AACxC,OAAI,CAAC,KACJ,QAAO,SAAS,aAAa,YAAY,OAAO,cAAc,IAAI;AAEnE,OAAI,KAAK,SAAS,SACjB,QAAO,SACN,oBACA,YAAY,OAAO,iCAAiC,SAAS,IAC7D,IACA;;AAKH,QAAM,KAAK,iBAAiB,YAAY,aAAa,UAAU,QAAQ;AAIvE,uBAAqB;AACrB,MAAI,OAAO,SAAS;GACnB,MAAM,mBAAmB,cAAc;GACvC,MAAM,aACL,OAAO,qBAAqB,WACzB,MAAM,IAAI,kBAAkB,OAAO,GAAG,CAAC,mBAAmB,YAAY,iBAAiB,GACvF,EAAE;GACN,MAAM,OAAO;IAAC;IAAY,GAAG,IAAI,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;IAAE,YAAY,SAAS;IAAC;AAC1F,QAAK,MAAM,YAAY,OAAO,MAAM,qBAAqB,CACxD,OAAM,qBAAqB,OAAO,SAAS;;AAa7C,SAAO,WAAW,mBARE,MAAM,KAAK,2BAC9B,YACA,aACA,UACA,aACA,eAAe,EAAE,iBAAiB,KAClC,EAEiD,YAAY,CAAC;UACvD,OAAO;AACf,SAAO,YAAY,OAAO,6BAA6B,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.d.mts","names":[],"sources":["../../../../../../../src/astro/routes/api/content/[collection]/[id]/translations.ts"],"mappings":";;;cAca,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"translations.d.mts","names":[],"sources":["../../../../../../../src/astro/routes/api/content/[collection]/[id]/translations.ts"],"mappings":";;;cAca,SAAA;AAAA,cAmBA,GAAA,EAAK,QAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../../../../../../base64-BQBZwXCx.mjs";
|
|
2
|
-
import "../../../../../../types-
|
|
2
|
+
import "../../../../../../types-DwhEvIVb.mjs";
|
|
3
3
|
import "../../../../../../errors-B4f4It-2.mjs";
|
|
4
|
-
import "../../../../../../errors-
|
|
5
|
-
import { a as unwrapResult, t as apiError } from "../../../../../../error-
|
|
6
|
-
import { o as requirePerm } from "../../../../../../authorize-
|
|
4
|
+
import "../../../../../../errors-8gJqv-XV.mjs";
|
|
5
|
+
import { a as unwrapResult, t as apiError } from "../../../../../../error-BCMgPxdn.mjs";
|
|
6
|
+
import { o as requirePerm } from "../../../../../../authorize-NJgp8kLI.mjs";
|
|
7
7
|
import { hasPermission } from "@emdash-cms/auth";
|
|
8
8
|
|
|
9
9
|
//#region src/astro/routes/api/content/[collection]/[id]/translations.ts
|
|
@@ -18,6 +18,9 @@ const prerender = false;
|
|
|
18
18
|
function isPublished(t) {
|
|
19
19
|
return typeof t === "object" && t !== null && "status" in t && t.status === "published";
|
|
20
20
|
}
|
|
21
|
+
function isEntry(t, idOrSlug) {
|
|
22
|
+
return typeof t === "object" && t !== null && ("id" in t && t.id === idOrSlug || "slug" in t && t.slug === idOrSlug);
|
|
23
|
+
}
|
|
21
24
|
const GET = async ({ params, locals }) => {
|
|
22
25
|
const { emdash, user } = locals;
|
|
23
26
|
if (!emdash?.handleContentTranslations) return apiError("NOT_CONFIGURED", "EmDash is not initialized", 500);
|
|
@@ -29,6 +32,7 @@ const GET = async ({ params, locals }) => {
|
|
|
29
32
|
if (result.success && !hasPermission(user, "content:read_drafts")) {
|
|
30
33
|
const data = result.data && typeof result.data === "object" ? result.data : void 0;
|
|
31
34
|
const filtered = (Array.isArray(data?.translations) ? data.translations : []).filter(isPublished);
|
|
35
|
+
if (!filtered.some((t) => isEntry(t, id))) return apiError("NOT_FOUND", `Content item not found: ${id}`, 404);
|
|
32
36
|
return unwrapResult({
|
|
33
37
|
success: true,
|
|
34
38
|
data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/content/[collection]/[id]/translations.ts"],"sourcesContent":["/**\n * Content translations endpoint\n *\n * GET /_emdash/api/content/{collection}/{id}/translations\n *\n * Returns all locale variants linked to the same translation group.\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, unwrapResult } from \"#api/error.js\";\n\nexport const prerender = false;\n\nfunction isPublished(t: unknown): boolean {\n\treturn (\n\t\ttypeof t === \"object\" &&\n\t\tt !== null &&\n\t\t\"status\" in t &&\n\t\t(t as Record<string, unknown>).status === \"published\"\n\t);\n}\n\nexport const GET: APIRoute = async ({ params, locals }) => {\n\tconst { emdash, user } = locals;\n\tif (!emdash?.handleContentTranslations) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\tconst collection = params.collection!;\n\tconst id = params.id!;\n\n\tconst result = await emdash.handleContentTranslations(collection, id);\n\n\t// Filter out non-published translations for users without read_drafts so a\n\t// subscriber can't enumerate locales that aren't yet live.\n\tif (result.success && !hasPermission(user, \"content:read_drafts\")) {\n\t\tconst data =\n\t\t\tresult.data && typeof result.data === \"object\"\n\t\t\t\t? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- handler returns unknown data; narrowed by typeof check\n\t\t\t\t\t(result.data as Record<string, unknown>)\n\t\t\t\t: undefined;\n\t\tconst translations = Array.isArray(data?.translations) ? data.translations : [];\n\t\tconst filtered = translations.filter(isPublished);\n\t\treturn unwrapResult({\n\t\t\tsuccess: true,\n\t\t\tdata: { ...data, translations: filtered },\n\t\t});\n\t}\n\n\treturn unwrapResult(result);\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAcA,MAAa,YAAY;AAEzB,SAAS,YAAY,GAAqB;AACzC,QACC,OAAO,MAAM,YACb,MAAM,QACN,YAAY,KACX,EAA8B,WAAW;;AAI5C,MAAa,MAAgB,OAAO,EAAE,QAAQ,aAAa;CAC1D,MAAM,EAAE,QAAQ,SAAS;AACzB,KAAI,CAAC,QAAQ,0BACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;CAEpE,MAAM,SAAS,YAAY,MAAM,eAAe;AAChD,KAAI,OAAQ,QAAO;CACnB,MAAM,aAAa,OAAO;CAC1B,MAAM,KAAK,OAAO;CAElB,MAAM,SAAS,MAAM,OAAO,0BAA0B,YAAY,GAAG;
|
|
1
|
+
{"version":3,"file":"translations.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/content/[collection]/[id]/translations.ts"],"sourcesContent":["/**\n * Content translations endpoint\n *\n * GET /_emdash/api/content/{collection}/{id}/translations\n *\n * Returns all locale variants linked to the same translation group.\n */\n\nimport { hasPermission } from \"@emdash-cms/auth\";\nimport type { APIRoute } from \"astro\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, unwrapResult } from \"#api/error.js\";\n\nexport const prerender = false;\n\nfunction isPublished(t: unknown): boolean {\n\treturn (\n\t\ttypeof t === \"object\" &&\n\t\tt !== null &&\n\t\t\"status\" in t &&\n\t\t(t as Record<string, unknown>).status === \"published\"\n\t);\n}\n\nfunction isEntry(t: unknown, idOrSlug: string): boolean {\n\treturn (\n\t\ttypeof t === \"object\" &&\n\t\tt !== null &&\n\t\t((\"id\" in t && t.id === idOrSlug) || (\"slug\" in t && t.slug === idOrSlug))\n\t);\n}\n\nexport const GET: APIRoute = async ({ params, locals }) => {\n\tconst { emdash, user } = locals;\n\tif (!emdash?.handleContentTranslations) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\tconst denied = requirePerm(user, \"content:read\");\n\tif (denied) return denied;\n\tconst collection = params.collection!;\n\tconst id = params.id!;\n\n\tconst result = await emdash.handleContentTranslations(collection, id);\n\n\t// Filter out non-published translations for users without read_drafts so a\n\t// subscriber can't enumerate locales that aren't yet live. The requested\n\t// entry is one of the translations; if it isn't published, return 404 so\n\t// its id or slug can't be probed either.\n\tif (result.success && !hasPermission(user, \"content:read_drafts\")) {\n\t\tconst data =\n\t\t\tresult.data && typeof result.data === \"object\"\n\t\t\t\t? // eslint-disable-next-line typescript/no-unsafe-type-assertion -- handler returns unknown data; narrowed by typeof check\n\t\t\t\t\t(result.data as Record<string, unknown>)\n\t\t\t\t: undefined;\n\t\tconst translations = Array.isArray(data?.translations) ? data.translations : [];\n\t\tconst filtered = translations.filter(isPublished);\n\t\tif (!filtered.some((t) => isEntry(t, id))) {\n\t\t\treturn apiError(\"NOT_FOUND\", `Content item not found: ${id}`, 404);\n\t\t}\n\t\treturn unwrapResult({\n\t\t\tsuccess: true,\n\t\t\tdata: { ...data, translations: filtered },\n\t\t});\n\t}\n\n\treturn unwrapResult(result);\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAcA,MAAa,YAAY;AAEzB,SAAS,YAAY,GAAqB;AACzC,QACC,OAAO,MAAM,YACb,MAAM,QACN,YAAY,KACX,EAA8B,WAAW;;AAI5C,SAAS,QAAQ,GAAY,UAA2B;AACvD,QACC,OAAO,MAAM,YACb,MAAM,SACJ,QAAQ,KAAK,EAAE,OAAO,YAAc,UAAU,KAAK,EAAE,SAAS;;AAIlE,MAAa,MAAgB,OAAO,EAAE,QAAQ,aAAa;CAC1D,MAAM,EAAE,QAAQ,SAAS;AACzB,KAAI,CAAC,QAAQ,0BACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;CAEpE,MAAM,SAAS,YAAY,MAAM,eAAe;AAChD,KAAI,OAAQ,QAAO;CACnB,MAAM,aAAa,OAAO;CAC1B,MAAM,KAAK,OAAO;CAElB,MAAM,SAAS,MAAM,OAAO,0BAA0B,YAAY,GAAG;AAMrE,KAAI,OAAO,WAAW,CAAC,cAAc,MAAM,sBAAsB,EAAE;EAClE,MAAM,OACL,OAAO,QAAQ,OAAO,OAAO,SAAS,WAEnC,OAAO,OACP;EAEJ,MAAM,YADe,MAAM,QAAQ,MAAM,aAAa,GAAG,KAAK,eAAe,EAAE,EACjD,OAAO,YAAY;AACjD,MAAI,CAAC,SAAS,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,CACxC,QAAO,SAAS,aAAa,2BAA2B,MAAM,IAAI;AAEnE,SAAO,aAAa;GACnB,SAAS;GACT,MAAM;IAAE,GAAG;IAAM,cAAc;IAAU;GACzC,CAAC;;AAGH,QAAO,aAAa,OAAO"}
|