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
|
@@ -525,6 +525,20 @@ export interface CachedQueryOptions<T> {
|
|
|
525
525
|
* failing `set` is dropped.
|
|
526
526
|
*/
|
|
527
527
|
export async function cachedQuery<T>(options: CachedQueryOptions<T>): Promise<T> {
|
|
528
|
+
return cachedQueryWithEpochs(options);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* {@link cachedQuery} that also passes `onEpochs` the namespace epochs the read
|
|
533
|
+
* is checked against and stored under, in namespace order, before the cached
|
|
534
|
+
* value is returned or `load` runs. Not called when the cache is disabled or
|
|
535
|
+
* bypassed.
|
|
536
|
+
*
|
|
537
|
+
* @internal
|
|
538
|
+
*/
|
|
539
|
+
export async function cachedQueryWithEpochs<T>(
|
|
540
|
+
options: CachedQueryOptions<T> & { onEpochs?: (epochs: readonly number[]) => void },
|
|
541
|
+
): Promise<T> {
|
|
528
542
|
const backend = await getBackend();
|
|
529
543
|
if (!backend || shouldBypass()) {
|
|
530
544
|
return options.load();
|
|
@@ -545,6 +559,7 @@ export async function cachedQuery<T>(options: CachedQueryOptions<T>): Promise<T>
|
|
|
545
559
|
() => null,
|
|
546
560
|
);
|
|
547
561
|
const currentEpochs = await epochsPromise;
|
|
562
|
+
options.onEpochs?.(currentEpochs);
|
|
548
563
|
const raw = await rawPromise;
|
|
549
564
|
if (raw !== null) {
|
|
550
565
|
const decoded = decode(raw);
|
|
@@ -777,6 +792,8 @@ export const CacheNamespace = {
|
|
|
777
792
|
SCHEMA: "schema",
|
|
778
793
|
/** Public (approved) comments. */
|
|
779
794
|
COMMENTS: "comments",
|
|
795
|
+
/** Widget areas and their widgets. */
|
|
796
|
+
WIDGETS: "widgets",
|
|
780
797
|
} as const;
|
|
781
798
|
|
|
782
799
|
/** Namespace for a content collection's cached queries. */
|
|
@@ -835,6 +852,11 @@ export function invalidateMenuObjectCache(): void {
|
|
|
835
852
|
invalidateObjectCache(CacheNamespace.MENUS);
|
|
836
853
|
}
|
|
837
854
|
|
|
855
|
+
/** Invalidate cached widget areas. */
|
|
856
|
+
export function invalidateWidgetObjectCache(): void {
|
|
857
|
+
invalidateObjectCache(CacheNamespace.WIDGETS);
|
|
858
|
+
}
|
|
859
|
+
|
|
838
860
|
/** Invalidate cached collection schema/metadata reads (e.g. getCollectionInfo). */
|
|
839
861
|
export function invalidateSchemaObjectCache(): void {
|
|
840
862
|
invalidateObjectCache(CacheNamespace.SCHEMA);
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from "../database/repositories/types.js";
|
|
9
9
|
import type { Database } from "../database/types.js";
|
|
10
10
|
import { validateIdentifier } from "../database/validate.js";
|
|
11
|
+
import { localeMatches } from "../i18n/query.js";
|
|
11
12
|
import { chunks, SQL_BATCH_SIZE } from "../utils/chunks.js";
|
|
12
13
|
import type { BylineAccess, BylineCreditInfo, BylineInfo } from "./types.js";
|
|
13
14
|
|
|
@@ -116,7 +117,8 @@ export function createBylineAccess(db: Kysely<Database>): BylineAccess {
|
|
|
116
117
|
.orderBy("created_at", "desc")
|
|
117
118
|
.orderBy("id", "desc")
|
|
118
119
|
.limit(limit + 1);
|
|
119
|
-
if (options?.locale !== undefined)
|
|
120
|
+
if (options?.locale !== undefined)
|
|
121
|
+
query = query.where(localeMatches("locale", options.locale));
|
|
120
122
|
if (options?.cursor) {
|
|
121
123
|
const decoded = decodeCursor(options.cursor);
|
|
122
124
|
query = query.where((eb) =>
|
package/src/plugins/context.ts
CHANGED
|
@@ -403,8 +403,7 @@ export function createTaxonomyAccess(db: Kysely<Database>): TaxonomyAccess {
|
|
|
403
403
|
|
|
404
404
|
return {
|
|
405
405
|
async getAll(options?: TaxonomyReadOptions): Promise<TaxonomyDefInfo[]> {
|
|
406
|
-
|
|
407
|
-
if (options?.locale !== undefined) query = query.where("d.locale", "=", options.locale);
|
|
406
|
+
const query = selectTaxonomyDefs(db, options?.locale);
|
|
408
407
|
const rows = await query.orderBy("d.name", "asc").execute();
|
|
409
408
|
return rows.map((row) => ({
|
|
410
409
|
name: row.name,
|
|
@@ -135,19 +135,23 @@ export async function createStorageIndexes(
|
|
|
135
135
|
});
|
|
136
136
|
await createSql.execute(db);
|
|
137
137
|
|
|
138
|
-
// Track in _plugin_indexes table
|
|
138
|
+
// Track in _plugin_indexes table. Only rewrite the row when the stored
|
|
139
|
+
// fields differ from the declared ones so repeated identical syncs do
|
|
140
|
+
// not perform needless writes (see issue #4228).
|
|
141
|
+
const fieldsJson = JSON.stringify(fields);
|
|
139
142
|
await db
|
|
140
143
|
.insertInto("_plugin_indexes")
|
|
141
144
|
.values({
|
|
142
145
|
plugin_id: pluginId,
|
|
143
146
|
collection,
|
|
144
147
|
index_name: indexName,
|
|
145
|
-
fields:
|
|
148
|
+
fields: fieldsJson,
|
|
146
149
|
})
|
|
147
150
|
.onConflict((oc) =>
|
|
148
151
|
oc
|
|
149
152
|
.columns(["plugin_id", "collection", "index_name"])
|
|
150
|
-
.doUpdateSet({ fields:
|
|
153
|
+
.doUpdateSet({ fields: fieldsJson })
|
|
154
|
+
.whereRef("_plugin_indexes.fields", "!=", "excluded.fields"),
|
|
151
155
|
)
|
|
152
156
|
.execute();
|
|
153
157
|
|
package/src/query.ts
CHANGED
|
@@ -25,11 +25,20 @@
|
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
import type { ContentSeo } from "./database/repositories/types.js";
|
|
28
|
-
import { getFallbackChain, getI18nConfig, isI18nEnabled } from "./i18n/config.js";
|
|
29
28
|
import {
|
|
29
|
+
getFallbackChain,
|
|
30
|
+
getI18nConfig,
|
|
31
|
+
getLocaleCandidates,
|
|
32
|
+
isI18nEnabled,
|
|
33
|
+
resolveConfiguredLocale,
|
|
34
|
+
} from "./i18n/config.js";
|
|
35
|
+
import { resolveLocale } from "./i18n/resolve.js";
|
|
36
|
+
import {
|
|
37
|
+
creditFromFoldedAuthorByline,
|
|
30
38
|
creditsFromFoldedBylines,
|
|
31
39
|
CURSOR_RAW_VALUES,
|
|
32
40
|
encodeSortCursor,
|
|
41
|
+
FOLDED_AUTHOR_BYLINE,
|
|
33
42
|
FOLDED_BYLINES,
|
|
34
43
|
FOLDED_BYLINES_EXIST,
|
|
35
44
|
FOLDED_TERMS,
|
|
@@ -309,7 +318,7 @@ export async function getPublishedDates(
|
|
|
309
318
|
options?: { locale?: string },
|
|
310
319
|
): Promise<PublishedDatesResult> {
|
|
311
320
|
const locale = effectiveLocaleKey(options) || undefined;
|
|
312
|
-
const key = `publishedDates:${JSON.stringify([type, locale])}`;
|
|
321
|
+
const key = `publishedDates:v2:${JSON.stringify([type, locale])}`;
|
|
313
322
|
try {
|
|
314
323
|
return await requestCached(key, () =>
|
|
315
324
|
cachedQuery<PublishedDatesResult>({
|
|
@@ -318,20 +327,13 @@ export async function getPublishedDates(
|
|
|
318
327
|
load: async () => {
|
|
319
328
|
const rows = await loadPublishedDates(type, locale);
|
|
320
329
|
const dates: Date[] = [];
|
|
321
|
-
let lastModified: Date | undefined;
|
|
322
330
|
for (const row of rows) {
|
|
323
331
|
if (row.published_at) {
|
|
324
332
|
const date = new Date(row.published_at);
|
|
325
333
|
if (!Number.isNaN(date.getTime())) dates.push(date);
|
|
326
334
|
}
|
|
327
|
-
if (row.updated_at) {
|
|
328
|
-
const modified = new Date(row.updated_at);
|
|
329
|
-
if (!Number.isNaN(modified.getTime()) && (!lastModified || modified > lastModified)) {
|
|
330
|
-
lastModified = modified;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
335
|
}
|
|
334
|
-
return { dates, cacheHint: { tags: [type]
|
|
336
|
+
return { dates, cacheHint: { tags: [type] } };
|
|
335
337
|
},
|
|
336
338
|
}),
|
|
337
339
|
);
|
|
@@ -619,7 +621,7 @@ async function loadCollectionCached<T extends string, D = InferCollectionData<T>
|
|
|
619
621
|
): Promise<CollectionResult<D>> {
|
|
620
622
|
const snapshot = await cachedQuery<ContentSnapshot<CachedCollectionValue>>({
|
|
621
623
|
namespace: contentNamespaces(type),
|
|
622
|
-
key: `collection:${collectionCacheKey(type, filter)}|loc=${effectiveLocaleKey(filter)}`,
|
|
624
|
+
key: `collection:v2:${collectionCacheKey(type, filter)}|loc=${effectiveLocaleKey(filter)}`,
|
|
623
625
|
load: async () => {
|
|
624
626
|
const result = await getEmDashCollectionUncached<T, D>(type, filter);
|
|
625
627
|
if (result.error) {
|
|
@@ -781,7 +783,7 @@ function collectionCacheKey(type: string, filter?: CollectionFilter): string {
|
|
|
781
783
|
filter.offset ?? "",
|
|
782
784
|
filter.where ? stableStringify(filter.where) : "",
|
|
783
785
|
filter.orderBy ? JSON.stringify(filter.orderBy) : "",
|
|
784
|
-
filter.locale
|
|
786
|
+
filter.locale === undefined ? "" : resolveConfiguredLocale(filter.locale),
|
|
785
787
|
];
|
|
786
788
|
return `collection:${type}:${parts.join("|")}`;
|
|
787
789
|
}
|
|
@@ -915,11 +917,7 @@ function reviveEntry<D>(raw: unknown): ContentEntry<D> {
|
|
|
915
917
|
|
|
916
918
|
/** Resolve the effective locale used by content reads, for the L2 cache key. */
|
|
917
919
|
function effectiveLocaleKey(filter?: { locale?: string }): string {
|
|
918
|
-
|
|
919
|
-
const i18nConfig = getI18nConfig();
|
|
920
|
-
return (
|
|
921
|
-
filter?.locale ?? ctx?.locale ?? (isI18nEnabled() ? i18nConfig!.defaultLocale : undefined) ?? ""
|
|
922
|
-
);
|
|
920
|
+
return resolveLocale(filter?.locale) ?? "";
|
|
923
921
|
}
|
|
924
922
|
|
|
925
923
|
async function getEmDashCollectionUncached<T extends string, D = InferCollectionData<T>>(
|
|
@@ -932,9 +930,7 @@ async function getEmDashCollectionUncached<T extends string, D = InferCollection
|
|
|
932
930
|
// Resolve locale: explicit filter > ALS context > defaultLocale (when i18n enabled)
|
|
933
931
|
// Without this, queries return all locale rows, producing broken IDs
|
|
934
932
|
const ctx = getRequestContext();
|
|
935
|
-
const
|
|
936
|
-
const resolvedLocale =
|
|
937
|
-
filter?.locale ?? ctx?.locale ?? (isI18nEnabled() ? i18nConfig!.defaultLocale : undefined);
|
|
933
|
+
const resolvedLocale = resolveLocale(filter?.locale);
|
|
938
934
|
|
|
939
935
|
const requestedLimit = filter?.limit;
|
|
940
936
|
// cursor and offset are mutually exclusive on the loader filter union, so
|
|
@@ -1095,12 +1091,9 @@ async function attachReferences<D>(
|
|
|
1095
1091
|
|
|
1096
1092
|
const references: ReferencePages = {};
|
|
1097
1093
|
const tags: string[] = [];
|
|
1098
|
-
let lastModified: Date | undefined;
|
|
1099
1094
|
for (const [field, page] of Object.entries(pages)) {
|
|
1100
1095
|
for (const child of page.entries) {
|
|
1101
1096
|
tags.push(...child.cacheHint.tags);
|
|
1102
|
-
const modified = child.cacheHint.lastModified;
|
|
1103
|
-
if (modified && (!lastModified || modified > lastModified)) lastModified = modified;
|
|
1104
1097
|
}
|
|
1105
1098
|
references[field] = {
|
|
1106
1099
|
entries: page.entries.map((child) => wrapReferencedEntry(page.collection, child)),
|
|
@@ -1108,16 +1101,16 @@ async function attachReferences<D>(
|
|
|
1108
1101
|
};
|
|
1109
1102
|
}
|
|
1110
1103
|
entry.references = references;
|
|
1111
|
-
return { tags
|
|
1104
|
+
return { tags };
|
|
1112
1105
|
}
|
|
1113
1106
|
|
|
1114
1107
|
/**
|
|
1115
1108
|
* Fold the children's cache hint into the entry's own.
|
|
1116
1109
|
*
|
|
1117
1110
|
* A render that shows a referenced entry has read that row, so the route's tags
|
|
1118
|
-
* have to name it
|
|
1119
|
-
*
|
|
1120
|
-
*
|
|
1111
|
+
* have to name it. Without this the route cache's
|
|
1112
|
+
* `invalidate({ tags: [collection, id] })` on a child write would never reach
|
|
1113
|
+
* the pages that render the child.
|
|
1121
1114
|
*/
|
|
1122
1115
|
function mergeCacheHints(base: CacheHint, extra: CacheHint): CacheHint {
|
|
1123
1116
|
if (!extra.tags?.length && !extra.lastModified) return base;
|
|
@@ -1197,7 +1190,8 @@ async function resolveEmDashEntry<T extends string, D = InferCollectionData<T>>(
|
|
|
1197
1190
|
const serveDrafts = isPreviewMode || isEditMode;
|
|
1198
1191
|
|
|
1199
1192
|
// Resolve locale: explicit option > ALS context > undefined (no filter)
|
|
1200
|
-
const
|
|
1193
|
+
const rawLocale = options?.locale ?? ctx?.locale;
|
|
1194
|
+
const requestedLocale = rawLocale === undefined ? undefined : resolveConfiguredLocale(rawLocale);
|
|
1201
1195
|
const references = options?.references;
|
|
1202
1196
|
const portableTextFields = isEditMode ? await getPortableTextFieldSlugs(type) : undefined;
|
|
1203
1197
|
|
|
@@ -1344,7 +1338,14 @@ async function resolveEmDashEntry<T extends string, D = InferCollectionData<T>>(
|
|
|
1344
1338
|
const locale = localeChain[i];
|
|
1345
1339
|
const fallbackLocale = i > 0 ? locale : undefined;
|
|
1346
1340
|
|
|
1347
|
-
const { entry, error, cacheHint } = await getLiveEntry(COLLECTION_NAME, {
|
|
1341
|
+
const { entry, error, cacheHint } = await getLiveEntry(COLLECTION_NAME, {
|
|
1342
|
+
type,
|
|
1343
|
+
id,
|
|
1344
|
+
locale,
|
|
1345
|
+
...(locale !== undefined && getLocaleCandidates(locale).length > 1
|
|
1346
|
+
? { publishedOnly: true }
|
|
1347
|
+
: {}),
|
|
1348
|
+
});
|
|
1348
1349
|
if (error) {
|
|
1349
1350
|
// Astro reports a missing entry as an error; try the next locale.
|
|
1350
1351
|
if (error.name === "LiveEntryNotFoundError") continue;
|
|
@@ -1376,7 +1377,7 @@ async function resolveEmDashEntry<T extends string, D = InferCollectionData<T>>(
|
|
|
1376
1377
|
|
|
1377
1378
|
const snapshot = await cachedQuery<ContentSnapshot<CachedEntryValue>>({
|
|
1378
1379
|
namespace: namespaces,
|
|
1379
|
-
key: `entry:${id}|loc=${requestedLocale ?? ""}${referenceKey}`,
|
|
1380
|
+
key: `entry:v2:${id}|loc=${requestedLocale ?? ""}${referenceKey}`,
|
|
1380
1381
|
load: async () => {
|
|
1381
1382
|
const result = await resolveNormal();
|
|
1382
1383
|
if (result.error) {
|
|
@@ -1446,7 +1447,8 @@ export async function getEmDashReferences<D = Record<string, unknown>>(
|
|
|
1446
1447
|
const ctx = getRequestContext();
|
|
1447
1448
|
const preview = ctx?.preview;
|
|
1448
1449
|
const isEditMode = ctx?.editMode ?? false;
|
|
1449
|
-
const
|
|
1450
|
+
const rawLocale = options?.locale ?? ctx?.locale;
|
|
1451
|
+
const locale = rawLocale === undefined ? undefined : resolveConfiguredLocale(rawLocale);
|
|
1450
1452
|
|
|
1451
1453
|
try {
|
|
1452
1454
|
const { getDb } = await import("./loader.js");
|
|
@@ -1489,17 +1491,14 @@ export async function getEmDashReferences<D = Record<string, unknown>>(
|
|
|
1489
1491
|
if (!page) return { entries: [] };
|
|
1490
1492
|
|
|
1491
1493
|
const tags: string[] = [];
|
|
1492
|
-
let lastModified: Date | undefined;
|
|
1493
1494
|
for (const child of page.entries) {
|
|
1494
1495
|
tags.push(...child.cacheHint.tags);
|
|
1495
|
-
const modified = child.cacheHint.lastModified;
|
|
1496
|
-
if (modified && (!lastModified || modified > lastModified)) lastModified = modified;
|
|
1497
1496
|
}
|
|
1498
1497
|
|
|
1499
1498
|
return {
|
|
1500
1499
|
entries: page.entries.map((child) => wrapReferencedEntry<D>(page.collection, child)),
|
|
1501
1500
|
...(page.nextCursor === undefined ? {} : { nextCursor: page.nextCursor }),
|
|
1502
|
-
cacheHint: { tags
|
|
1501
|
+
cacheHint: { tags },
|
|
1503
1502
|
};
|
|
1504
1503
|
} catch (error) {
|
|
1505
1504
|
return { entries: [], error: error instanceof Error ? error : new Error(String(error)) };
|
|
@@ -1548,17 +1547,30 @@ async function hydrateEntryBylines<D>(type: string, entries: ContentEntry<D>[]):
|
|
|
1548
1547
|
if (entries.length === 0) return;
|
|
1549
1548
|
|
|
1550
1549
|
// Fast path: bylines were folded into the content query. Parse the JSON
|
|
1551
|
-
// (no extra round trip)
|
|
1552
|
-
//
|
|
1553
|
-
//
|
|
1554
|
-
//
|
|
1550
|
+
// (no extra round trip): explicit credits, plus the author-fallback byline
|
|
1551
|
+
// for an entry with none. Custom byline field values can't be expressed in
|
|
1552
|
+
// the folded subquery, so when any credit resolves they are loaded for the
|
|
1553
|
+
// folded bylines in one batched pass. The query path below handles only
|
|
1554
|
+
// what the fold can't vouch for.
|
|
1555
1555
|
if (entries.every((e) => FOLDED_BYLINES in entryData(e))) {
|
|
1556
1556
|
const parsed = entries.map((entry) => {
|
|
1557
1557
|
const data = entryData(entry);
|
|
1558
1558
|
const folded = Reflect.get(data, FOLDED_BYLINES);
|
|
1559
1559
|
const rows = Array.isArray(folded) ? folded : [];
|
|
1560
1560
|
const credits = creditsFromFoldedBylines(rows);
|
|
1561
|
-
|
|
1561
|
+
// The fold is complete for an entry with no explicit credit when its
|
|
1562
|
+
// author fallback was folded too and it has a locale: the query path
|
|
1563
|
+
// resolves the fallback in that same locale (`(user_id, locale)` is
|
|
1564
|
+
// unique), and a `primaryBylineId` without an explicit credit
|
|
1565
|
+
// resolves to no byline on both paths.
|
|
1566
|
+
const authorFolded = FOLDED_AUTHOR_BYLINE in data && dataStr(data, "locale") !== "";
|
|
1567
|
+
if (credits.length === 0 && authorFolded && dataStr(data, "primaryBylineId") === "") {
|
|
1568
|
+
const author = Reflect.get(data, FOLDED_AUTHOR_BYLINE);
|
|
1569
|
+
if (dataStr(data, "authorId") !== "" && isRecord(author)) {
|
|
1570
|
+
credits.push(creditFromFoldedAuthorByline(author));
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
return { data, credits, complete: credits.length > 0 || authorFolded };
|
|
1562
1574
|
});
|
|
1563
1575
|
|
|
1564
1576
|
// An empty `_emdash_bylines` table makes an empty fold authoritative: no
|
|
@@ -1572,34 +1584,36 @@ async function hydrateEntryBylines<D>(type: string, entries: ContentEntry<D>[]):
|
|
|
1572
1584
|
|
|
1573
1585
|
// Fall back to the full query path when the fold can't be trusted to be
|
|
1574
1586
|
// complete: an entry with a byline reference (explicit primary, or an
|
|
1575
|
-
// author for the author-fallback) but no folded credits
|
|
1576
|
-
//
|
|
1577
|
-
//
|
|
1587
|
+
// author for the author-fallback) but no folded credits, and no folded
|
|
1588
|
+
// author fallback either — e.g. a row read without the author column,
|
|
1589
|
+
// or an entry with no locale, which the locale-correlated subqueries
|
|
1590
|
+
// can't match.
|
|
1578
1591
|
let needsQueryPath =
|
|
1579
1592
|
!knownEmpty &&
|
|
1580
1593
|
parsed.some(
|
|
1581
1594
|
(p) =>
|
|
1582
|
-
p.
|
|
1595
|
+
!p.complete &&
|
|
1583
1596
|
(dataStr(p.data, "authorId") !== "" || dataStr(p.data, "primaryBylineId") !== ""),
|
|
1584
1597
|
);
|
|
1585
|
-
|
|
1586
|
-
|
|
1598
|
+
|
|
1599
|
+
// Custom byline fields: only bylines that resolved need their values, so
|
|
1600
|
+
// an entry set with no credits skips the field-definition probe too.
|
|
1601
|
+
const summaries = parsed.flatMap((p) => p.credits.map((c) => c.byline));
|
|
1602
|
+
if (!needsQueryPath && summaries.length > 0) {
|
|
1587
1603
|
try {
|
|
1588
1604
|
const { getDb } = await import("./loader.js");
|
|
1589
|
-
const
|
|
1590
|
-
|
|
1591
|
-
hasCustomFields = (await getBylineFieldDefs(db)).length > 0;
|
|
1605
|
+
const { BylineRepository } = await import("./database/repositories/byline.js");
|
|
1606
|
+
await new BylineRepository(await getDb()).hydrateBylineCustomFields(summaries);
|
|
1592
1607
|
} catch (error) {
|
|
1593
1608
|
// A missing table is expected pre-migration and means there are no
|
|
1594
1609
|
// custom fields — the fold's values are complete. Any other error
|
|
1595
|
-
//
|
|
1596
|
-
//
|
|
1597
|
-
// folded bylines with empty customFields.
|
|
1610
|
+
// means the values can't be trusted, so fall back to the query
|
|
1611
|
+
// path rather than risk serving bylines with empty customFields.
|
|
1598
1612
|
if (!isMissingTableError(error)) needsQueryPath = true;
|
|
1599
1613
|
}
|
|
1600
1614
|
}
|
|
1601
1615
|
|
|
1602
|
-
if (!needsQueryPath
|
|
1616
|
+
if (!needsQueryPath) {
|
|
1603
1617
|
for (const p of parsed) {
|
|
1604
1618
|
p.data.bylines = p.credits;
|
|
1605
1619
|
p.data.byline = p.credits[0]?.byline ?? null;
|
|
@@ -19,6 +19,7 @@ import { after } from "../after.js";
|
|
|
19
19
|
import { RedirectRepository } from "../database/repositories/redirect.js";
|
|
20
20
|
import { withTransaction } from "../database/transaction.js";
|
|
21
21
|
import type { Database } from "../database/types.js";
|
|
22
|
+
import { normalizeSiteSettingsVersion, siteSettingsVersionQuery } from "../settings/version.js";
|
|
22
23
|
import { chunks, SQL_BATCH_SIZE } from "../utils/chunks.js";
|
|
23
24
|
import { isMissingTableError } from "../utils/db-errors.js";
|
|
24
25
|
import {
|
|
@@ -296,12 +297,29 @@ function parseEntries(payload: string): ArtifactEntry[] | null {
|
|
|
296
297
|
}
|
|
297
298
|
}
|
|
298
299
|
|
|
300
|
+
function observeSiteSettingsVersion(
|
|
301
|
+
callback: ((version: string | null) => void) | undefined,
|
|
302
|
+
raw: string | null | undefined,
|
|
303
|
+
): void {
|
|
304
|
+
if (!callback) return;
|
|
305
|
+
let version: string | null = null;
|
|
306
|
+
try {
|
|
307
|
+
if (raw) version = normalizeSiteSettingsVersion(raw);
|
|
308
|
+
} catch {
|
|
309
|
+
// A failed settings check must not prevent valid redirects from loading.
|
|
310
|
+
}
|
|
311
|
+
callback(version);
|
|
312
|
+
}
|
|
313
|
+
|
|
299
314
|
/**
|
|
300
315
|
* Loads and verifies the active generation. Returns null when nothing is
|
|
301
316
|
* published, the generation is stale, or any artifact is missing, altered, or
|
|
302
317
|
* out of place.
|
|
303
318
|
*/
|
|
304
|
-
async function loadPublishedRedirects(
|
|
319
|
+
async function loadPublishedRedirects(
|
|
320
|
+
db: Kysely<Database>,
|
|
321
|
+
onSiteSettingsVersion?: (version: string | null) => void,
|
|
322
|
+
): Promise<RedirectRuleSet | null> {
|
|
305
323
|
const rows = await db
|
|
306
324
|
.selectFrom("_emdash_redirect_state as state")
|
|
307
325
|
.leftJoin(
|
|
@@ -314,6 +332,7 @@ async function loadPublishedRedirects(db: Kysely<Database>): Promise<RedirectRul
|
|
|
314
332
|
"state.revision",
|
|
315
333
|
"state.generation",
|
|
316
334
|
"state.generation_revision",
|
|
335
|
+
...(onSiteSettingsVersion ? [siteSettingsVersionQuery(db).as("site_settings_version")] : []),
|
|
317
336
|
"link.position",
|
|
318
337
|
"link.digest",
|
|
319
338
|
"artifact.kind",
|
|
@@ -324,6 +343,7 @@ async function loadPublishedRedirects(db: Kysely<Database>): Promise<RedirectRul
|
|
|
324
343
|
.execute();
|
|
325
344
|
|
|
326
345
|
const state = rows[0];
|
|
346
|
+
observeSiteSettingsVersion(onSiteSettingsVersion, state?.site_settings_version);
|
|
327
347
|
if (!state?.generation) return null;
|
|
328
348
|
if (Number(state.revision) > Number(state.generation_revision)) return null;
|
|
329
349
|
|
|
@@ -432,14 +452,20 @@ function scheduleRedirectRepair(db: Kysely<Database>): void {
|
|
|
432
452
|
* current and verifies, otherwise the rules table. Before the artifact tables exist the
|
|
433
453
|
* rules table is read directly.
|
|
434
454
|
*/
|
|
435
|
-
export function createRedirectSource(
|
|
455
|
+
export function createRedirectSource(
|
|
456
|
+
db: Kysely<Database>,
|
|
457
|
+
onSiteSettingsVersion?: (version: string | null) => void,
|
|
458
|
+
): RedirectSource {
|
|
436
459
|
return {
|
|
437
460
|
async load() {
|
|
438
461
|
let published: RedirectRuleSet | null;
|
|
439
462
|
try {
|
|
440
|
-
published = await loadPublishedRedirects(db);
|
|
463
|
+
published = await loadPublishedRedirects(db, onSiteSettingsVersion);
|
|
441
464
|
} catch (error) {
|
|
442
|
-
if (isMissingTableError(error))
|
|
465
|
+
if (isMissingTableError(error)) {
|
|
466
|
+
onSiteSettingsVersion?.(null);
|
|
467
|
+
return loadRulesTable(db);
|
|
468
|
+
}
|
|
443
469
|
throw error;
|
|
444
470
|
}
|
|
445
471
|
if (published) return published;
|
|
@@ -449,9 +475,17 @@ export function createRedirectSource(db: Kysely<Database>): RedirectSource {
|
|
|
449
475
|
async isCurrent(version) {
|
|
450
476
|
const state = await db
|
|
451
477
|
.selectFrom("_emdash_redirect_state")
|
|
452
|
-
.select([
|
|
478
|
+
.select([
|
|
479
|
+
"revision",
|
|
480
|
+
"generation",
|
|
481
|
+
"generation_revision",
|
|
482
|
+
...(onSiteSettingsVersion
|
|
483
|
+
? [siteSettingsVersionQuery(db).as("site_settings_version")]
|
|
484
|
+
: []),
|
|
485
|
+
])
|
|
453
486
|
.where("id", "=", 1)
|
|
454
487
|
.executeTakeFirst();
|
|
488
|
+
observeSiteSettingsVersion(onSiteSettingsVersion, state?.site_settings_version);
|
|
455
489
|
return (
|
|
456
490
|
state?.generation === version && Number(state.revision) <= Number(state.generation_revision)
|
|
457
491
|
);
|
|
@@ -16,7 +16,7 @@ import type { Database } from "../database/types.js";
|
|
|
16
16
|
import { getDb } from "../loader.js";
|
|
17
17
|
import { cachedQuery, CacheNamespace } from "../object-cache/index.js";
|
|
18
18
|
import { requestCached } from "../request-cache.js";
|
|
19
|
-
import { isMissingTableError } from "../utils/db-errors.js";
|
|
19
|
+
import { isMissingColumnError, isMissingTableError } from "../utils/db-errors.js";
|
|
20
20
|
|
|
21
21
|
/** One reference field, as a render needs it. */
|
|
22
22
|
export interface ReferenceFieldBinding {
|
|
@@ -43,7 +43,7 @@ function isRecord(value: unknown): value is Record<string, unknown> {
|
|
|
43
43
|
async function loadBindings(
|
|
44
44
|
db: Kysely<Database>,
|
|
45
45
|
collection: string,
|
|
46
|
-
): Promise<ReferenceFieldBinding[]> {
|
|
46
|
+
): Promise<ReferenceFieldBinding[] | null> {
|
|
47
47
|
// The relation's id joins in here rather than being looked up per field at
|
|
48
48
|
// render time: the field stores a slug, but the link table is keyed by id.
|
|
49
49
|
const relationSlug = jsonExtractExpr(db, "validation", "relation");
|
|
@@ -62,7 +62,8 @@ async function loadBindings(
|
|
|
62
62
|
`.execute(db);
|
|
63
63
|
rows = result.rows;
|
|
64
64
|
} catch (error) {
|
|
65
|
-
|
|
65
|
+
// A partial schema is transient; don't retain its degraded result in cache.
|
|
66
|
+
if (isMissingTableError(error) || isMissingColumnError(error)) return null;
|
|
66
67
|
throw error;
|
|
67
68
|
}
|
|
68
69
|
|
|
@@ -109,7 +110,8 @@ export function getReferenceFieldMap(
|
|
|
109
110
|
namespace: CacheNamespace.SCHEMA,
|
|
110
111
|
key: `reference-field-map:${collection}`,
|
|
111
112
|
load: async () => loadBindings(await getDb(), collection),
|
|
113
|
+
cacheable: (value) => value !== null,
|
|
112
114
|
});
|
|
113
|
-
return new Map(bindings.map((binding) => [binding.slug, binding]));
|
|
115
|
+
return new Map((bindings ?? []).map((binding) => [binding.slug, binding]));
|
|
114
116
|
});
|
|
115
117
|
}
|
package/src/request-context.ts
CHANGED
|
@@ -21,6 +21,7 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
21
21
|
|
|
22
22
|
import type { QueryRecorder } from "./database/instrumentation.js";
|
|
23
23
|
import type { DeferredTaskTracker } from "./deferred-tasks.js";
|
|
24
|
+
import type { SiteSettings } from "./settings/types.js";
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
27
|
* Lightweight always-on counters surfaced in Server-Timing.
|
|
@@ -73,6 +74,13 @@ export interface EmDashRequestContext {
|
|
|
73
74
|
* eventually-consistent object-cache snapshot.
|
|
74
75
|
*/
|
|
75
76
|
routeCacheFill?: boolean;
|
|
77
|
+
/** Shares verified settings with components that render after cache headers are sent. @internal */
|
|
78
|
+
siteSettings?: {
|
|
79
|
+
snapshot?: { data: Partial<SiteSettings>; version: string };
|
|
80
|
+
version?: string;
|
|
81
|
+
live?: boolean;
|
|
82
|
+
onRead: (version: string) => void;
|
|
83
|
+
};
|
|
76
84
|
/** Preview token info, if this is a preview request */
|
|
77
85
|
preview?: {
|
|
78
86
|
collection: string;
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Stored on globalThis behind a Symbol key (same pattern as the taxonomy-defs
|
|
14
14
|
* cache in `taxonomies/index.ts`) so bundler chunk duplication cannot produce
|
|
15
|
-
* two independent caches.
|
|
16
|
-
*
|
|
15
|
+
* two independent caches. It holds the resolved set behind a reclaimable
|
|
16
|
+
* single-flight lock, never an in-flight promise (see
|
|
17
|
+
* `utils/single-flight-cache.ts`).
|
|
17
18
|
*
|
|
18
19
|
* Freshness:
|
|
19
20
|
* - Primed for free at isolate boot: runtime init's auto-seed gate already
|
|
@@ -37,23 +38,30 @@
|
|
|
37
38
|
|
|
38
39
|
import type { Kysely } from "kysely";
|
|
39
40
|
|
|
41
|
+
import { after } from "../after.js";
|
|
40
42
|
import type { Database } from "../database/types.js";
|
|
41
43
|
import { requestCached } from "../request-cache.js";
|
|
42
44
|
import { getRequestContext } from "../request-context.js";
|
|
45
|
+
import {
|
|
46
|
+
createSingleFlightCache,
|
|
47
|
+
invalidateSingleFlightCache,
|
|
48
|
+
type SingleFlightCache,
|
|
49
|
+
singleFlightCached,
|
|
50
|
+
} from "../utils/single-flight-cache.js";
|
|
43
51
|
|
|
44
52
|
interface SlugsHolder {
|
|
45
|
-
|
|
46
|
-
/** When the cached
|
|
53
|
+
cache: SingleFlightCache<Set<string>>;
|
|
54
|
+
/** When the cached set was fetched; gates bounded revalidation. */
|
|
47
55
|
fetchedAt: number;
|
|
48
56
|
}
|
|
49
57
|
|
|
50
|
-
const HOLDER_KEY = Symbol.for("emdash:collection-slugs");
|
|
58
|
+
const HOLDER_KEY = Symbol.for("emdash:collection-slugs@2");
|
|
51
59
|
const g = globalThis as Record<symbol, unknown>;
|
|
52
60
|
const holder: SlugsHolder =
|
|
53
61
|
// eslint-disable-next-line typescript/no-unsafe-type-assertion -- globalThis singleton pattern (see request-cache.ts)
|
|
54
62
|
(g[HOLDER_KEY] as SlugsHolder | undefined) ??
|
|
55
63
|
(() => {
|
|
56
|
-
const h: SlugsHolder = {
|
|
64
|
+
const h: SlugsHolder = { cache: createSingleFlightCache(), fetchedAt: 0 };
|
|
57
65
|
g[HOLDER_KEY] = h;
|
|
58
66
|
return h;
|
|
59
67
|
})();
|
|
@@ -67,14 +75,15 @@ async function fetchSlugs(db: Kysely<Database>): Promise<Set<string>> {
|
|
|
67
75
|
}
|
|
68
76
|
|
|
69
77
|
function loadSlugs(db: Kysely<Database>): Promise<Set<string>> {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
return singleFlightCached(
|
|
79
|
+
holder.cache,
|
|
80
|
+
async () => {
|
|
81
|
+
const slugs = await fetchSlugs(db);
|
|
82
|
+
holder.fetchedAt = Date.now();
|
|
83
|
+
return slugs;
|
|
84
|
+
},
|
|
85
|
+
{ anchor: (promise) => after(() => promise), ownerTimeoutMs: 30_000 },
|
|
86
|
+
);
|
|
78
87
|
}
|
|
79
88
|
|
|
80
89
|
/**
|
|
@@ -96,7 +105,9 @@ export async function filterToRegisteredCollections(
|
|
|
96
105
|
let slugs = await loadSlugs(db);
|
|
97
106
|
let present = collections.filter((slug) => slugs.has(slug));
|
|
98
107
|
if (present.length < collections.length && Date.now() - holder.fetchedAt > revalidateWindowMs) {
|
|
99
|
-
|
|
108
|
+
// Stamped before the refetch so parallel readers of the stale set skip their own.
|
|
109
|
+
holder.fetchedAt = Date.now();
|
|
110
|
+
invalidateSingleFlightCache(holder.cache);
|
|
100
111
|
slugs = await loadSlugs(db);
|
|
101
112
|
present = collections.filter((slug) => slugs.has(slug));
|
|
102
113
|
}
|
|
@@ -109,7 +120,10 @@ export async function filterToRegisteredCollections(
|
|
|
109
120
|
* auto-seed gate.
|
|
110
121
|
*/
|
|
111
122
|
export function primeRegisteredCollections(slugs: readonly string[]): void {
|
|
112
|
-
|
|
123
|
+
const { cache } = holder;
|
|
124
|
+
cache.value = new Set(slugs);
|
|
125
|
+
cache.hasValue = true;
|
|
126
|
+
cache.valueVersion = cache.version;
|
|
113
127
|
holder.fetchedAt = Date.now();
|
|
114
128
|
}
|
|
115
129
|
|
|
@@ -119,7 +133,7 @@ export function primeRegisteredCollections(slugs: readonly string[]): void {
|
|
|
119
133
|
* create/delete). Other isolates converge through bounded revalidation.
|
|
120
134
|
*/
|
|
121
135
|
export function resetRegisteredCollectionsCache(): void {
|
|
122
|
-
holder.
|
|
136
|
+
invalidateSingleFlightCache(holder.cache);
|
|
123
137
|
holder.fetchedAt = 0;
|
|
124
138
|
}
|
|
125
139
|
|