emdash 0.22.0 → 0.24.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/{adapters-hUy8vOB-.d.mts → adapters-DAAjOID4.d.mts} +1 -1
- package/dist/{adapters-hUy8vOB-.d.mts.map → adapters-DAAjOID4.d.mts.map} +1 -1
- package/dist/{allowed-origins-DjlhyfNN.mjs → allowed-origins-D5FxMUo8.mjs} +2 -2
- package/dist/{allowed-origins-DjlhyfNN.mjs.map → allowed-origins-D5FxMUo8.mjs.map} +1 -1
- package/dist/api/route-utils.d.mts +3 -3
- package/dist/api/route-utils.mjs +15 -15
- package/dist/api/schemas/index.d.mts +1 -1
- package/dist/api/schemas/index.mjs +3 -3
- package/dist/{api-BDuM4bEy.mjs → api-d_0wi9fW.mjs} +20 -20
- package/dist/{api-BDuM4bEy.mjs.map → api-d_0wi9fW.mjs.map} +1 -1
- package/dist/{api-tokens-ViYKeIp9.mjs → api-tokens-D6ppjIVi.mjs} +2 -2
- package/dist/{api-tokens-ViYKeIp9.mjs.map → api-tokens-D6ppjIVi.mjs.map} +1 -1
- package/dist/{apply-wDqQoxX4.mjs → apply-BE9UaWX0.mjs} +17 -17
- package/dist/{apply-wDqQoxX4.mjs.map → apply-BE9UaWX0.mjs.map} +1 -1
- package/dist/astro/index.d.mts +11 -11
- package/dist/astro/index.mjs +36 -11
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +9 -9
- package/dist/astro/middleware/auth.mjs +7 -7
- package/dist/astro/middleware/redirect.mjs +5 -5
- package/dist/astro/middleware/request-context.d.mts.map +1 -1
- package/dist/astro/middleware/request-context.mjs +5 -3
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +1 -1
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +362 -141
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +5 -5
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +8 -8
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +8 -8
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +8 -8
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +13 -12
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +13 -12
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.mjs +13 -12
- package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +11 -11
- package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/bulk.mjs +9 -9
- package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/index.mjs +9 -9
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +4 -4
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- 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 +35 -34
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +35 -34
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +3 -3
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +34 -33
- 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 +34 -33
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +34 -33
- 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 +35 -34
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +35 -34
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +34 -33
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +34 -33
- 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 +3 -3
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +34 -33
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +2 -2
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +6 -6
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
- package/dist/astro/routes/api/admin/users/index.mjs +6 -6
- package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
- package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
- package/dist/astro/routes/api/auth/invite/complete.mjs +10 -10
- package/dist/astro/routes/api/auth/invite/index.mjs +7 -7
- package/dist/astro/routes/api/auth/invite/register-options.mjs +9 -9
- package/dist/astro/routes/api/auth/logout.mjs +3 -3
- package/dist/astro/routes/api/auth/magic-link/send.mjs +9 -9
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
- package/dist/astro/routes/api/auth/me.mjs +7 -7
- package/dist/astro/routes/api/auth/mode.mjs +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
- package/dist/astro/routes/api/auth/passkey/index.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/options.mjs +11 -11
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +9 -9
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +10 -10
- package/dist/astro/routes/api/auth/passkey/verify.mjs +10 -10
- package/dist/astro/routes/api/auth/signup/complete.mjs +10 -10
- package/dist/astro/routes/api/auth/signup/request.mjs +9 -9
- package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +12 -12
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +11 -11
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +10 -10
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +12 -12
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/authors.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/index.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
- package/dist/astro/routes/api/dashboard.mjs +7 -7
- package/dist/astro/routes/api/dev/emails.mjs +3 -3
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +11 -11
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
- package/dist/astro/routes/api/import/wordpress/execute.mjs +10 -9
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +9 -9
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +9 -9
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +9 -9
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +11 -11
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +13 -12
- 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 +39 -39
- package/dist/astro/routes/api/media/_id_/confirm.mjs +7 -7
- package/dist/astro/routes/api/media/_id_.mjs +7 -7
- package/dist/astro/routes/api/media/file/_...key_.mjs +2 -2
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +3 -3
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +3 -3
- package/dist/astro/routes/api/media/providers/index.mjs +3 -3
- package/dist/astro/routes/api/media/upload-url.mjs +9 -9
- package/dist/astro/routes/api/media.mjs +12 -12
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +8 -8
- package/dist/astro/routes/api/menus/_name_/items.mjs +8 -8
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +8 -8
- package/dist/astro/routes/api/menus/_name_/translations.mjs +8 -8
- package/dist/astro/routes/api/menus/_name_.mjs +8 -8
- package/dist/astro/routes/api/menus/index.mjs +8 -8
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
- package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
- package/dist/astro/routes/api/oauth/register.mjs +3 -3
- 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.mjs +6 -6
- package/dist/astro/routes/api/openapi.json.mjs +4 -4
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
- package/dist/astro/routes/api/redirects/404s/index.mjs +9 -9
- package/dist/astro/routes/api/redirects/404s/summary.mjs +9 -9
- package/dist/astro/routes/api/redirects/_id_.mjs +10 -10
- package/dist/astro/routes/api/redirects/index.mjs +10 -10
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +3 -3
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +34 -33
- 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 +34 -33
- 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 +34 -33
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +34 -33
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +34 -33
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +8 -7
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +34 -33
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +34 -33
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +10 -10
- package/dist/astro/routes/api/search/index.mjs +9 -9
- package/dist/astro/routes/api/search/rebuild.mjs +10 -10
- package/dist/astro/routes/api/search/stats.mjs +6 -6
- package/dist/astro/routes/api/search/suggest.mjs +9 -9
- package/dist/astro/routes/api/sections/_slug_.mjs +9 -9
- package/dist/astro/routes/api/sections/index.mjs +9 -9
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +11 -11
- package/dist/astro/routes/api/setup/admin-verify.mjs +11 -11
- package/dist/astro/routes/api/setup/admin.mjs +10 -10
- package/dist/astro/routes/api/setup/dev-bypass.mjs +23 -22
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +24 -23
- 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/snapshot.mjs +6 -6
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +12 -12
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +12 -12
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +12 -12
- package/dist/astro/routes/api/taxonomies/index.mjs +12 -12
- package/dist/astro/routes/api/themes/preview.mjs +5 -5
- package/dist/astro/routes/api/typegen.mjs +5 -5
- package/dist/astro/routes/api/well-known/auth.mjs +1 -1
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +7 -7
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +9 -9
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +9 -9
- package/dist/astro/routes/api/widget-areas/_name_.mjs +5 -5
- package/dist/astro/routes/api/widget-areas/index.mjs +9 -9
- package/dist/astro/routes/api/widget-components.mjs +3 -3
- package/dist/astro/routes/robots.txt.mjs +5 -5
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +8 -8
- package/dist/astro/routes/sitemap.xml.mjs +6 -6
- package/dist/astro/types.d.mts +12 -12
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/{authorize-C0EYoUeV.mjs → authorize-B__u-iZJ.mjs} +2 -2
- package/dist/{authorize-C0EYoUeV.mjs.map → authorize-B__u-iZJ.mjs.map} +1 -1
- package/dist/{byline-CC0WS4Gu.mjs → byline-C-YajfV7.mjs} +18 -76
- package/dist/byline-C-YajfV7.mjs.map +1 -0
- package/dist/{byline-fields-53i9Et0x.mjs → byline-fields-B-KXkg5R.mjs} +2 -2
- package/dist/{byline-fields-53i9Et0x.mjs.map → byline-fields-B-KXkg5R.mjs.map} +1 -1
- package/dist/{byline-fields-DNp0HNKc.mjs → byline-fields-DaMKzkhO.mjs} +1 -1
- package/dist/{byline-fields-DNp0HNKc.mjs.map → byline-fields-DaMKzkhO.mjs.map} +1 -1
- package/dist/{byline-fields-jy07PZJM.d.mts → byline-fields-RFPkDLRw.d.mts} +21 -1
- package/dist/byline-fields-RFPkDLRw.d.mts.map +1 -0
- package/dist/{bylines-CCO1CYnH.mjs → bylines-BMtJnPnG.mjs} +7 -7
- package/dist/{bylines-CCO1CYnH.mjs.map → bylines-BMtJnPnG.mjs.map} +1 -1
- package/dist/{bylines-DGekMGGm.mjs → bylines-D4KADDAi.mjs} +4 -4
- package/dist/{bylines-DGekMGGm.mjs.map → bylines-D4KADDAi.mjs.map} +1 -1
- package/dist/{cache-pXTpun6s.mjs → cache-BUJe2w6Z.mjs} +2 -2
- package/dist/{cache-pXTpun6s.mjs.map → cache-BUJe2w6Z.mjs.map} +1 -1
- package/dist/{challenge-store-C6E_kWTs.mjs → challenge-store-LhiqMccz.mjs} +1 -1
- package/dist/{challenge-store-C6E_kWTs.mjs.map → challenge-store-LhiqMccz.mjs.map} +1 -1
- package/dist/{chunks-SyjZaYwV.mjs → chunks-BHgcHh2C.mjs} +2 -2
- package/dist/{chunks-SyjZaYwV.mjs.map → chunks-BHgcHh2C.mjs.map} +1 -1
- package/dist/cli/index.mjs +25 -24
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +2 -2
- package/dist/{comment-80UyJJUR.mjs → comment-BDx50EX5.mjs} +2 -2
- package/dist/{comment-80UyJJUR.mjs.map → comment-BDx50EX5.mjs.map} +1 -1
- package/dist/{comment-reaction-B6AdcpXw.mjs → comment-reaction-Gv_pgfI3.mjs} +2 -2
- package/dist/{comment-reaction-B6AdcpXw.mjs.map → comment-reaction-Gv_pgfI3.mjs.map} +1 -1
- package/dist/{comments-CtPkT2tp.mjs → comments-CXHuQ6jI.mjs} +3 -3
- package/dist/{comments-CtPkT2tp.mjs.map → comments-CXHuQ6jI.mjs.map} +1 -1
- package/dist/{components-D6ZnrzbB.mjs → components-CYt4uVK9.mjs} +1 -1
- package/dist/{components-D6ZnrzbB.mjs.map → components-CYt4uVK9.mjs.map} +1 -1
- package/dist/{content-2PTDNnoh.mjs → content-PoVGKjp0.mjs} +3 -3
- package/dist/{content-2PTDNnoh.mjs.map → content-PoVGKjp0.mjs.map} +1 -1
- package/dist/{context-f1__jpzF.mjs → context-Dvws41_A.mjs} +62 -24
- package/dist/context-Dvws41_A.mjs.map +1 -0
- package/dist/{cron-CQPxBjYs.mjs → cron-C5LVoNmP.mjs} +14 -2
- package/dist/cron-C5LVoNmP.mjs.map +1 -0
- package/dist/{dashboard-BOESNcwE.mjs → dashboard-DsYU8JKS.mjs} +4 -4
- package/dist/{dashboard-BOESNcwE.mjs.map → dashboard-DsYU8JKS.mjs.map} +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +1 -1
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/{db-errors-CrC5w3Jz.mjs → db-errors-UXB1CK42.mjs} +1 -1
- package/dist/{db-errors-CrC5w3Jz.mjs.map → db-errors-UXB1CK42.mjs.map} +1 -1
- package/dist/{default-CpBEPn6a.mjs → default-CeRG-Ot4.mjs} +1 -1
- package/dist/{default-CpBEPn6a.mjs.map → default-CeRG-Ot4.mjs.map} +1 -1
- package/dist/{device-flow-Bn-qiDrw.mjs → device-flow-DENDCQ9F.mjs} +4 -4
- package/dist/{device-flow-Bn-qiDrw.mjs.map → device-flow-DENDCQ9F.mjs.map} +1 -1
- package/dist/{email-console-B9VS6eN4.mjs → email-console-DJP32ucW.mjs} +1 -1
- package/dist/{email-console-B9VS6eN4.mjs.map → email-console-DJP32ucW.mjs.map} +1 -1
- package/dist/{error-BQ1pxs0L.mjs → error-lq_fL-RS.mjs} +2 -2
- package/dist/{error-BQ1pxs0L.mjs.map → error-lq_fL-RS.mjs.map} +1 -1
- package/dist/{escape-BtbJWyaW.mjs → escape-Bjio4ZsM.mjs} +1 -1
- package/dist/{escape-BtbJWyaW.mjs.map → escape-Bjio4ZsM.mjs.map} +1 -1
- package/dist/field-defs-cache-CYYx8xlG.mjs +77 -0
- package/dist/field-defs-cache-CYYx8xlG.mjs.map +1 -0
- package/dist/{fts-manager-DtiWqwNJ.mjs → fts-manager-DW_NR-Fs.mjs} +2 -2
- package/dist/{fts-manager-DtiWqwNJ.mjs.map → fts-manager-DW_NR-Fs.mjs.map} +1 -1
- package/dist/{hash-BowcuPwv.mjs → hash-DrvzIXcz.mjs} +1 -1
- package/dist/{hash-BowcuPwv.mjs.map → hash-DrvzIXcz.mjs.map} +1 -1
- package/dist/{import-DqSGOlmR.mjs → import-Bb1T9WJS.mjs} +3 -3
- package/dist/{import-DqSGOlmR.mjs.map → import-Bb1T9WJS.mjs.map} +1 -1
- package/dist/{index-C2dLNT6S.d.mts → index-BroXT-vD.d.mts} +136 -38
- package/dist/index-BroXT-vD.d.mts.map +1 -0
- package/dist/{index-ZDEwR7qW.d.mts → index-qbL02uhs.d.mts} +3 -3
- package/dist/{index-ZDEwR7qW.d.mts.map → index-qbL02uhs.d.mts.map} +1 -1
- package/dist/index.d.mts +17 -17
- package/dist/index.mjs +55 -54
- package/dist/{load-Dtoo7KcJ.mjs → load-DMFi4n1p.mjs} +2 -2
- package/dist/{load-Dtoo7KcJ.mjs.map → load-DMFi4n1p.mjs.map} +1 -1
- package/dist/{loader-C8Z48Uof.mjs → loader-BR2SgfEc.mjs} +77 -12
- package/dist/loader-BR2SgfEc.mjs.map +1 -0
- package/dist/{manifest-schema-DDSbwkAL.mjs → manifest-schema-BWKnQYQF.mjs} +1 -1
- package/dist/{manifest-schema-DDSbwkAL.mjs.map → manifest-schema-BWKnQYQF.mjs.map} +1 -1
- package/dist/media/image-endpoint.mjs +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +2 -2
- package/dist/media/local-runtime.d.mts +19 -11
- package/dist/media/local-runtime.d.mts.map +1 -1
- package/dist/media/local-runtime.mjs +11 -9
- package/dist/media/local-runtime.mjs.map +1 -1
- package/dist/{media-Bw0sA6rb.mjs → media-CTjJoJTh.mjs} +2 -2
- package/dist/{media-Bw0sA6rb.mjs.map → media-CTjJoJTh.mjs.map} +1 -1
- package/dist/{media-allowlist-DunzrKFM.mjs → media-allowlist-B77I5_bw.mjs} +2 -2
- package/dist/{media-allowlist-DunzrKFM.mjs.map → media-allowlist-B77I5_bw.mjs.map} +1 -1
- package/dist/{media-url-S22B6aPr.mjs → media-url-O4rm9-SQ.mjs} +1 -1
- package/dist/{media-url-S22B6aPr.mjs.map → media-url-O4rm9-SQ.mjs.map} +1 -1
- package/dist/{menus-CYs0WZoL.mjs → menus-8O6xNcYW.mjs} +2 -2
- package/dist/{menus-CYs0WZoL.mjs.map → menus-8O6xNcYW.mjs.map} +1 -1
- package/dist/{menus-DOs1MQJg.mjs → menus-GvRSpgIA.mjs} +57 -14
- package/dist/menus-GvRSpgIA.mjs.map +1 -0
- package/dist/{mime-DYpsOAny.mjs → mime-BTzvzJ8M.mjs} +1 -1
- package/dist/{mime-DYpsOAny.mjs.map → mime-BTzvzJ8M.mjs.map} +1 -1
- package/dist/{mode-CFh8Dw8G.mjs → mode-BB0F8xTC.mjs} +1 -1
- package/dist/{mode-CFh8Dw8G.mjs.map → mode-BB0F8xTC.mjs.map} +1 -1
- package/dist/{normalize-Uam4_Vkr.mjs → normalize-ClbNIenm.mjs} +1 -1
- package/dist/{normalize-Uam4_Vkr.mjs.map → normalize-ClbNIenm.mjs.map} +1 -1
- package/dist/{oauth-authorization-BN-t83Uy.mjs → oauth-authorization-CsvzIp_F.mjs} +4 -4
- package/dist/{oauth-authorization-BN-t83Uy.mjs.map → oauth-authorization-CsvzIp_F.mjs.map} +1 -1
- package/dist/{oauth-clients-R6I_V0qz.mjs → oauth-clients-C9SYwEbZ.mjs} +1 -1
- package/dist/{oauth-clients-R6I_V0qz.mjs.map → oauth-clients-C9SYwEbZ.mjs.map} +1 -1
- package/dist/{oauth-state-store-Csoc6kkR.mjs → oauth-state-store---zrApfB.mjs} +1 -1
- package/dist/{oauth-state-store-Csoc6kkR.mjs.map → oauth-state-store---zrApfB.mjs.map} +1 -1
- package/dist/{oauth-user-lookup-d7VYjTpx.mjs → oauth-user-lookup-SHsWRlG9.mjs} +1 -1
- package/dist/{oauth-user-lookup-d7VYjTpx.mjs.map → oauth-user-lookup-SHsWRlG9.mjs.map} +1 -1
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{options-DFFpvNJU.d.mts → options-CqECG0gM.d.mts} +3 -3
- package/dist/{options-DFFpvNJU.d.mts.map → options-CqECG0gM.d.mts.map} +1 -1
- package/dist/page/index.d.mts +2 -2
- package/dist/{parse-qrHlnzTy.mjs → parse-DHI873qU.mjs} +2 -2
- package/dist/{parse-qrHlnzTy.mjs.map → parse-DHI873qU.mjs.map} +1 -1
- package/dist/{passkey-config-BJTbcnI5.mjs → passkey-config-C0YfSBko.mjs} +1 -1
- package/dist/{passkey-config-BJTbcnI5.mjs.map → passkey-config-C0YfSBko.mjs.map} +1 -1
- package/dist/{placeholder-CIDCpyEY.mjs → placeholder-B0s2mWu5.mjs} +1 -1
- package/dist/{placeholder-CIDCpyEY.mjs.map → placeholder-B0s2mWu5.mjs.map} +1 -1
- package/dist/{placeholder-CirPauNG.d.mts → placeholder-QoI4gEzP.d.mts} +1 -1
- package/dist/{placeholder-CirPauNG.d.mts.map → placeholder-QoI4gEzP.d.mts.map} +1 -1
- package/dist/plugin-types.d.mts +1 -1
- package/dist/plugin-utils.d.mts +9 -9
- package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
- package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
- package/dist/{portable-text-BIFhrU6T.mjs → portable-text-BICg8bTk.mjs} +1 -1
- package/dist/{portable-text-BIFhrU6T.mjs.map → portable-text-BICg8bTk.mjs.map} +1 -1
- package/dist/{preview-IDye9SPQ.mjs → preview-DKGCt2_p.mjs} +2 -2
- package/dist/{preview-IDye9SPQ.mjs.map → preview-DKGCt2_p.mjs.map} +1 -1
- package/dist/{public-url-8lFyQ8ZF.mjs → public-url-CTVqgMmg.mjs} +1 -1
- package/dist/{public-url-8lFyQ8ZF.mjs.map → public-url-CTVqgMmg.mjs.map} +1 -1
- package/dist/{query-B1RVFUNM.mjs → query-DZdlS6Cu.mjs} +92 -14
- package/dist/query-DZdlS6Cu.mjs.map +1 -0
- package/dist/{rate-limit-DfNAqIWW.mjs → rate-limit-D1Y6VFVP.mjs} +2 -2
- package/dist/{rate-limit-DfNAqIWW.mjs.map → rate-limit-D1Y6VFVP.mjs.map} +1 -1
- package/dist/{redirect-Bifv_yHv.mjs → redirect-C1KVGYWe.mjs} +2 -2
- package/dist/{redirect-Bifv_yHv.mjs.map → redirect-C1KVGYWe.mjs.map} +1 -1
- package/dist/{redirect-B4wuX2A5.mjs → redirect-CS-PHtNh.mjs} +1 -1
- package/dist/{redirect-B4wuX2A5.mjs.map → redirect-CS-PHtNh.mjs.map} +1 -1
- package/dist/{redirects-CT_vb3NV.mjs → redirects-DgnypVir.mjs} +4 -4
- package/dist/{redirects-CT_vb3NV.mjs.map → redirects-DgnypVir.mjs.map} +1 -1
- package/dist/{redirects-DUvXgzCX.mjs → redirects-x9eFPeyi.mjs} +4 -2
- package/dist/redirects-x9eFPeyi.mjs.map +1 -0
- package/dist/{registry-CjK96fHD.mjs → registry-CJkCubOJ.mjs} +4 -4
- package/dist/{registry-CjK96fHD.mjs.map → registry-CJkCubOJ.mjs.map} +1 -1
- package/dist/{request-meta-ei3ATilC.mjs → request-meta-CmS1tDFf.mjs} +2 -2
- package/dist/{request-meta-ei3ATilC.mjs.map → request-meta-CmS1tDFf.mjs.map} +1 -1
- package/dist/{resolve-CpbBglV0.mjs → resolve-C7I0qiR0.mjs} +1 -1
- package/dist/{resolve-CpbBglV0.mjs.map → resolve-C7I0qiR0.mjs.map} +1 -1
- package/dist/{runner-DYYnW530.mjs → runner-BsquExlK.mjs} +246 -174
- package/dist/runner-BsquExlK.mjs.map +1 -0
- package/dist/{runner-jdXtFEd3.d.mts → runner-CEtq-6Sm.d.mts} +2 -2
- package/dist/{runner-jdXtFEd3.d.mts.map → runner-CEtq-6Sm.d.mts.map} +1 -1
- package/dist/runtime.d.mts +10 -10
- package/dist/runtime.mjs +2 -2
- package/dist/{schema-5z2Jfnbm.mjs → schema-DMjXuvNU.mjs} +4 -4
- package/dist/{schema-5z2Jfnbm.mjs.map → schema-DMjXuvNU.mjs.map} +1 -1
- package/dist/{search-D9FkoM-k.mjs → search-D1wKk3lc.mjs} +4 -4
- package/dist/{search-D9FkoM-k.mjs.map → search-D1wKk3lc.mjs.map} +1 -1
- package/dist/{secrets-BUE5UQys.mjs → secrets-BSf9pRRY.mjs} +2 -2
- package/dist/{secrets-BUE5UQys.mjs.map → secrets-BSf9pRRY.mjs.map} +1 -1
- package/dist/{sections-DWYZo6HK.mjs → sections-CCMic8dB.mjs} +3 -3
- package/dist/{sections-DWYZo6HK.mjs.map → sections-CCMic8dB.mjs.map} +1 -1
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +17 -16
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo/index.mjs +1 -1
- package/dist/{seo-Cu47j3mJ.mjs → seo-3QrZ1EPT.mjs} +2 -2
- package/dist/{seo-Cu47j3mJ.mjs.map → seo-3QrZ1EPT.mjs.map} +1 -1
- package/dist/{seo-DRnqnstF.mjs → seo-DCEF-AVr.mjs} +1 -1
- package/dist/{seo-DRnqnstF.mjs.map → seo-DCEF-AVr.mjs.map} +1 -1
- package/dist/{service-DTmtqCnw.mjs → service-CQHK_10l.mjs} +3 -3
- package/dist/{service-DTmtqCnw.mjs.map → service-CQHK_10l.mjs.map} +1 -1
- package/dist/{session-user-DmtPMNa1.mjs → session-user-B8aLtKAH.mjs} +1 -1
- package/dist/{session-user-DmtPMNa1.mjs.map → session-user-B8aLtKAH.mjs.map} +1 -1
- package/dist/{settings-DUrVDN0c.mjs → settings-C3Yi5Co3.mjs} +3 -3
- package/dist/{settings-DUrVDN0c.mjs.map → settings-C3Yi5Co3.mjs.map} +1 -1
- package/dist/{settings-yaxu9mU-.mjs → settings-D9rvaLuY.mjs} +4 -4
- package/dist/{settings-yaxu9mU-.mjs.map → settings-D9rvaLuY.mjs.map} +1 -1
- package/dist/{setup-complete-BWFHzgvZ.mjs → setup-complete-gEiySUc-.mjs} +1 -1
- package/dist/{setup-complete-BWFHzgvZ.mjs.map → setup-complete-gEiySUc-.mjs.map} +1 -1
- package/dist/{setup-nonce-DFWG-J5c.mjs → setup-nonce-DzS50zme.mjs} +1 -1
- package/dist/{setup-nonce-DFWG-J5c.mjs.map → setup-nonce-DzS50zme.mjs.map} +1 -1
- package/dist/{single-flight-cache-B5p5cNOL.mjs → single-flight-cache-Cdfkic3t.mjs} +1 -1
- package/dist/{single-flight-cache-B5p5cNOL.mjs.map → single-flight-cache-Cdfkic3t.mjs.map} +1 -1
- package/dist/{site-url-BOTPgmeM.mjs → site-url-BLebyON8.mjs} +1 -1
- package/dist/{site-url-BOTPgmeM.mjs.map → site-url-BLebyON8.mjs.map} +1 -1
- package/dist/{ssrf-B0VeRLrp.mjs → ssrf-BRKb343l.mjs} +1 -1
- package/dist/{ssrf-B0VeRLrp.mjs.map → ssrf-BRKb343l.mjs.map} +1 -1
- package/dist/{status-CB2basWJ.mjs → status-vUK0SA17.mjs} +1 -1
- package/dist/{status-CB2basWJ.mjs.map → status-vUK0SA17.mjs.map} +1 -1
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +1 -1
- package/dist/{taxonomies-Be9B1jEj.mjs → taxonomies-CurpLtNC.mjs} +52 -24
- package/dist/taxonomies-CurpLtNC.mjs.map +1 -0
- package/dist/{taxonomies-CJmkEpdS.mjs → taxonomies-DhLaNJji.mjs} +34 -27
- package/dist/taxonomies-DhLaNJji.mjs.map +1 -0
- package/dist/{taxonomy-B2HQuVf5.mjs → taxonomy-BBUlGug5.mjs} +33 -7
- package/dist/taxonomy-BBUlGug5.mjs.map +1 -0
- package/dist/{tokens-BvrJvIB6.mjs → tokens-LeuXF9gG.mjs} +1 -1
- package/dist/{tokens-BvrJvIB6.mjs.map → tokens-LeuXF9gG.mjs.map} +1 -1
- package/dist/{transport-k7YjfmEn.d.mts → transport-BZ-03aFT.d.mts} +1 -1
- package/dist/{transport-k7YjfmEn.d.mts.map → transport-BZ-03aFT.d.mts.map} +1 -1
- package/dist/{transport-B4rXnSTf.mjs → transport-_2nBz7e9.mjs} +1 -1
- package/dist/{transport-B4rXnSTf.mjs.map → transport-_2nBz7e9.mjs.map} +1 -1
- package/dist/{trusted-proxy-DY1_UqHr.mjs → trusted-proxy-DZY5WCn2.mjs} +1 -1
- package/dist/{trusted-proxy-DY1_UqHr.mjs.map → trusted-proxy-DZY5WCn2.mjs.map} +1 -1
- package/dist/{types-Czg1S3gB.d.mts → types-B-gIxFCE.d.mts} +1 -1
- package/dist/{types-Czg1S3gB.d.mts.map → types-B-gIxFCE.d.mts.map} +1 -1
- package/dist/{types-DXLVzV2w.d.mts → types-BG8_XTLj.d.mts} +1 -1
- package/dist/{types-DXLVzV2w.d.mts.map → types-BG8_XTLj.d.mts.map} +1 -1
- package/dist/{types-CWGYDYqF.d.mts → types-BWh2MjmA.d.mts} +15 -2
- package/dist/types-BWh2MjmA.d.mts.map +1 -0
- package/dist/{types-CgvhU-hF.d.mts → types-BWqGVhFn.d.mts} +1 -1
- package/dist/{types-CgvhU-hF.d.mts.map → types-BWqGVhFn.d.mts.map} +1 -1
- package/dist/{types-DYF2_Vf4.mjs → types-CQAugunJ.mjs} +1 -1
- package/dist/{types-DYF2_Vf4.mjs.map → types-CQAugunJ.mjs.map} +1 -1
- package/dist/{types-DPCpkzvS.d.mts → types-CTLJYMhN.d.mts} +1 -1
- package/dist/{types-DPCpkzvS.d.mts.map → types-CTLJYMhN.d.mts.map} +1 -1
- package/dist/{types-CmivgZbp.d.mts → types-CUsXGRVj.d.mts} +1 -1
- package/dist/{types-CmivgZbp.d.mts.map → types-CUsXGRVj.d.mts.map} +1 -1
- package/dist/{types-DXOIbece.mjs → types-CmI1OyQg.mjs} +2 -2
- package/dist/types-CmI1OyQg.mjs.map +1 -0
- package/dist/{types-CKNXt63n.d.mts → types-DrYMm9s5.d.mts} +1 -1
- package/dist/{types-CKNXt63n.d.mts.map → types-DrYMm9s5.d.mts.map} +1 -1
- package/dist/{types-CIKX2HO5.d.mts → types-TTx8uP7V.d.mts} +2 -2
- package/dist/{types-CIKX2HO5.d.mts.map → types-TTx8uP7V.d.mts.map} +1 -1
- package/dist/{types-DCNNfeCv.d.mts → types-fS7-VTdR.d.mts} +1 -1
- package/dist/{types-DCNNfeCv.d.mts.map → types-fS7-VTdR.d.mts.map} +1 -1
- package/dist/{user-Db-Rti_z.mjs → user-JAuc8VUf.mjs} +3 -3
- package/dist/{user-Db-Rti_z.mjs.map → user-JAuc8VUf.mjs.map} +1 -1
- package/dist/{utils-LbHcSRTj.mjs → utils-B7A57fm9.mjs} +1 -1
- package/dist/{utils-LbHcSRTj.mjs.map → utils-B7A57fm9.mjs.map} +1 -1
- package/dist/{validate-Bwl64sxv.mjs → validate-BzXHWnkV.mjs} +2 -2
- package/dist/{validate-Bwl64sxv.mjs.map → validate-BzXHWnkV.mjs.map} +1 -1
- package/dist/{validate-CE2M0nvx.d.mts → validate-DOFrIb-c.d.mts} +5 -5
- package/dist/{validate-CE2M0nvx.d.mts.map → validate-DOFrIb-c.d.mts.map} +1 -1
- package/dist/{validation-C_yOvFaO.mjs → validation-CY1gk4Ar.mjs} +6 -6
- package/dist/{validation-C_yOvFaO.mjs.map → validation-CY1gk4Ar.mjs.map} +1 -1
- package/dist/version-B5nHxI5Y.mjs +7 -0
- package/dist/{version-RnYXYjzD.mjs.map → version-B5nHxI5Y.mjs.map} +1 -1
- package/dist/{widgets-8GONuRHo.mjs → widgets-Dri0spI4.mjs} +3 -3
- package/dist/{widgets-8GONuRHo.mjs.map → widgets-Dri0spI4.mjs.map} +1 -1
- package/dist/{zod-generator-D481JjzD.mjs → zod-generator-xEHODMJf.mjs} +51 -15
- package/dist/zod-generator-xEHODMJf.mjs.map +1 -0
- package/package.json +8 -7
- package/src/api/handlers/taxonomies.ts +62 -32
- package/src/api/schemas/bylines.ts +8 -0
- package/src/astro/integration/shims/use-sync-external-store-with-selector.js +71 -0
- package/src/astro/integration/shims/use-sync-external-store.js +1 -0
- package/src/astro/integration/virtual-modules.ts +8 -0
- package/src/astro/integration/vite-config.ts +56 -9
- package/src/astro/middleware/request-context.ts +6 -1
- package/src/astro/middleware/scoped-db.ts +131 -0
- package/src/astro/middleware/stream-end-metrics.ts +4 -8
- package/src/astro/middleware.ts +103 -31
- package/src/astro/routes/admin.astro +5 -1
- package/src/astro/routes/api/schema/index.ts +9 -3
- package/src/cli/commands/export-seed.ts +15 -11
- package/src/components/Block.astro +71 -0
- package/src/components/EmDashMedia.astro +1 -2
- package/src/components/Image.astro +36 -2
- package/src/components/InlinePortableTextEditor.tsx +10 -2
- package/src/components/index.ts +5 -0
- package/src/components/portable-text-text-align.ts +38 -0
- package/src/content/converters/portable-text-to-prosemirror.ts +5 -1
- package/src/content/converters/prosemirror-to-portable-text.ts +8 -0
- package/src/content/converters/types.ts +1 -0
- package/src/database/migrations/045_taxonomy_parent_group.ts +68 -0
- package/src/database/migrations/runner.ts +2 -0
- package/src/database/repositories/byline.ts +14 -0
- package/src/database/repositories/taxonomy.ts +50 -7
- package/src/database/repositories/types.ts +13 -0
- package/src/emdash-runtime.ts +226 -71
- package/src/loader.ts +161 -13
- package/src/media/local-runtime.ts +18 -5
- package/src/plugins/context.ts +94 -22
- package/src/plugins/cron.ts +18 -2
- package/src/plugins/routes.ts +40 -1
- package/src/query.ts +201 -19
- package/src/schema/zod-generator.ts +53 -8
- package/src/taxonomies/index.ts +46 -8
- package/src/ui.ts +5 -0
- package/src/virtual-modules.d.ts +13 -0
- package/dist/byline-CC0WS4Gu.mjs.map +0 -1
- package/dist/byline-fields-jy07PZJM.d.mts.map +0 -1
- package/dist/context-f1__jpzF.mjs.map +0 -1
- package/dist/cron-CQPxBjYs.mjs.map +0 -1
- package/dist/index-C2dLNT6S.d.mts.map +0 -1
- package/dist/loader-C8Z48Uof.mjs.map +0 -1
- package/dist/menus-DOs1MQJg.mjs.map +0 -1
- package/dist/query-B1RVFUNM.mjs.map +0 -1
- package/dist/redirects-DUvXgzCX.mjs.map +0 -1
- package/dist/runner-DYYnW530.mjs.map +0 -1
- package/dist/taxonomies-Be9B1jEj.mjs.map +0 -1
- package/dist/taxonomies-CJmkEpdS.mjs.map +0 -1
- package/dist/taxonomy-B2HQuVf5.mjs.map +0 -1
- package/dist/types-CWGYDYqF.d.mts.map +0 -1
- package/dist/types-DXOIbece.mjs.map +0 -1
- package/dist/version-RnYXYjzD.mjs +0 -7
- package/dist/zod-generator-D481JjzD.mjs.map +0 -1
- /package/dist/{api-tokens-BVH-H8Z9.mjs → api-tokens-B4BQybOp.mjs} +0 -0
- /package/dist/{ssrf-Cz1e2QPn.mjs → ssrf-CcX9zvMK.mjs} +0 -0
- /package/dist/{types-Bfr2Pj6z.mjs → types-BvbeGEtr.mjs} +0 -0
package/src/components/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ export { default as EmDashImage } from "./EmDashImage.astro";
|
|
|
36
36
|
export { default as EmDashMedia } from "./EmDashMedia.astro";
|
|
37
37
|
|
|
38
38
|
// Portable Text block type components
|
|
39
|
+
export { default as Block } from "./Block.astro";
|
|
39
40
|
export { default as Image } from "./Image.astro";
|
|
40
41
|
export { default as Code } from "./Code.astro";
|
|
41
42
|
export { default as Embed } from "./Embed.astro";
|
|
@@ -57,6 +58,7 @@ export { default as Underline } from "./marks/Underline.astro";
|
|
|
57
58
|
export { default as StrikeThrough } from "./marks/StrikeThrough.astro";
|
|
58
59
|
export { default as Link } from "./marks/Link.astro";
|
|
59
60
|
|
|
61
|
+
import BlockComponent from "./Block.astro";
|
|
60
62
|
import BreakComponent from "./Break.astro";
|
|
61
63
|
import ButtonComponent from "./Button.astro";
|
|
62
64
|
import ButtonsComponent from "./Buttons.astro";
|
|
@@ -77,11 +79,14 @@ import TableComponent from "./Table.astro";
|
|
|
77
79
|
* Pre-configured components for EmDash Portable Text content
|
|
78
80
|
*
|
|
79
81
|
* Includes renderers for:
|
|
82
|
+
* - Block styles: paragraph, h1..h6, blockquote — with `textAlign` honoured
|
|
83
|
+
* as a WordPress-style `has-text-align-{value}` class (#1201)
|
|
80
84
|
* - Block types: image, code, embed, gallery, columns, break, htmlBlock, table,
|
|
81
85
|
* button, buttons, cover, file, pullquote
|
|
82
86
|
* - Marks: superscript, subscript, underline, strike-through, link
|
|
83
87
|
*/
|
|
84
88
|
export const emdashComponents = {
|
|
89
|
+
block: BlockComponent,
|
|
85
90
|
type: {
|
|
86
91
|
image: ImageComponent,
|
|
87
92
|
code: CodeComponent,
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps a Portable Text block's `textAlign` to a WordPress-style class name
|
|
3
|
+
* (`has-text-align-{value}`) for public rendering. Used by the Portable Text
|
|
4
|
+
* `Block` override in `./Block.astro`.
|
|
5
|
+
*
|
|
6
|
+
* `left` is the document default and intentionally does not produce a class —
|
|
7
|
+
* this matches the converter's omit-on-default rule (see
|
|
8
|
+
* `src/content/converters/prosemirror-to-portable-text.ts`) so untouched
|
|
9
|
+
* content stays bytewise identical and renders without an extra class.
|
|
10
|
+
*
|
|
11
|
+
* Related: https://github.com/emdash-cms/emdash/issues/1201
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
type AlignClassName = "has-text-align-center" | "has-text-align-right" | "has-text-align-justify";
|
|
15
|
+
|
|
16
|
+
const ALIGN_CLASS_MAP: Record<string, AlignClassName> = {
|
|
17
|
+
center: "has-text-align-center",
|
|
18
|
+
right: "has-text-align-right",
|
|
19
|
+
justify: "has-text-align-justify",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns the CSS class for a textAlign value, or `undefined` when no class
|
|
24
|
+
* should be emitted (default left, missing, or unknown values).
|
|
25
|
+
*
|
|
26
|
+
* Allowlist-only by design: arbitrary strings are rejected so a hand-edited
|
|
27
|
+
* or imported Portable Text block cannot inject attacker-controlled class
|
|
28
|
+
* names into the rendered HTML.
|
|
29
|
+
*/
|
|
30
|
+
export function textAlignClassName(value: string | undefined): AlignClassName | undefined {
|
|
31
|
+
if (value === undefined) return undefined;
|
|
32
|
+
// `Object.hasOwn` (not `in`) so prototype keys like "toString" or
|
|
33
|
+
// "constructor" can't slip through as valid alignments.
|
|
34
|
+
if (Object.hasOwn(ALIGN_CLASS_MAP, value)) {
|
|
35
|
+
return ALIGN_CLASS_MAP[value];
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
@@ -164,7 +164,10 @@ function convertTextBlock(block: PortableTextTextBlock): ProseMirrorNode | null
|
|
|
164
164
|
const level = parseInt(style.substring(1), 10);
|
|
165
165
|
return {
|
|
166
166
|
type: "heading",
|
|
167
|
-
attrs: {
|
|
167
|
+
attrs: {
|
|
168
|
+
level,
|
|
169
|
+
...(block.textAlign ? { textAlign: block.textAlign } : {}),
|
|
170
|
+
},
|
|
168
171
|
content: content.length > 0 ? content : undefined,
|
|
169
172
|
};
|
|
170
173
|
}
|
|
@@ -184,6 +187,7 @@ function convertTextBlock(block: PortableTextTextBlock): ProseMirrorNode | null
|
|
|
184
187
|
default:
|
|
185
188
|
return {
|
|
186
189
|
type: "paragraph",
|
|
190
|
+
attrs: block.textAlign ? { textAlign: block.textAlign } : undefined,
|
|
187
191
|
content: content.length > 0 ? content : undefined,
|
|
188
192
|
};
|
|
189
193
|
}
|
|
@@ -106,12 +106,16 @@ function convertParagraph(node: ProseMirrorNode): PortableTextTextBlock | null {
|
|
|
106
106
|
return null;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
const ta = node.attrs?.textAlign;
|
|
110
|
+
const textAlign = ta === "center" || ta === "right" || ta === "justify" ? ta : undefined;
|
|
111
|
+
|
|
109
112
|
return {
|
|
110
113
|
_type: "block",
|
|
111
114
|
_key: generateKey(),
|
|
112
115
|
style: "normal",
|
|
113
116
|
children,
|
|
114
117
|
markDefs: markDefs.length > 0 ? markDefs : undefined,
|
|
118
|
+
...(textAlign ? { textAlign } : {}),
|
|
115
119
|
};
|
|
116
120
|
}
|
|
117
121
|
|
|
@@ -147,12 +151,16 @@ function convertHeading(node: ProseMirrorNode): PortableTextTextBlock | null {
|
|
|
147
151
|
return null;
|
|
148
152
|
}
|
|
149
153
|
|
|
154
|
+
const ta = node.attrs?.textAlign;
|
|
155
|
+
const textAlign = ta === "center" || ta === "right" || ta === "justify" ? ta : undefined;
|
|
156
|
+
|
|
150
157
|
return {
|
|
151
158
|
_type: "block",
|
|
152
159
|
_key: generateKey(),
|
|
153
160
|
style,
|
|
154
161
|
children,
|
|
155
162
|
markDefs: markDefs.length > 0 ? markDefs : undefined,
|
|
163
|
+
...(textAlign ? { textAlign } : {}),
|
|
156
164
|
};
|
|
157
165
|
}
|
|
158
166
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Kysely } from "kysely";
|
|
2
|
+
import { sql } from "kysely";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Store the parent's `translation_group` in `taxonomies.parent_id` instead of a
|
|
6
|
+
* locale-bound row id.
|
|
7
|
+
*
|
|
8
|
+
* Before this, a term's `parent_id` pointed at one specific parent *row* (one
|
|
9
|
+
* locale). A child translated in another locale could end up parented to a row
|
|
10
|
+
* in a different locale, silently flattening that locale's tree (#1347). Every
|
|
11
|
+
* other taxonomy i18n relationship already keys off `translation_group`
|
|
12
|
+
* (`content_taxonomies.taxonomy_id`, `_emdash_menu_items.reference_id`), so this
|
|
13
|
+
* aligns parentage with that model: a child links to the parent *concept* and
|
|
14
|
+
* stays nested in whichever locale that parent has been translated into.
|
|
15
|
+
*
|
|
16
|
+
* Backfill rewrites every existing `parent_id` from the referenced parent row's
|
|
17
|
+
* id to that parent's `translation_group`. A `translation_group` normally equals
|
|
18
|
+
* its anchor row's id, so the self-FK on `parent_id` stays valid. We only
|
|
19
|
+
* rewrite when that anchor row still exists; if a parent's anchor was deleted
|
|
20
|
+
* but a sibling translation survives, the existing locale-bound id is left as-is
|
|
21
|
+
* rather than rewritten to a dangling FK value. Such a child then renders as a
|
|
22
|
+
* root rather than nested — an accepted degradation for an already-inconsistent
|
|
23
|
+
* dataset (its `translation_group` already points at a deleted row, which breaks
|
|
24
|
+
* `content_taxonomies` joins too). New deletes can't recreate this state: a
|
|
25
|
+
* parent with children in any locale is undeletable. The correlated subquery is
|
|
26
|
+
* a no-op for rows that already hold a group (an anchor row's id resolves to
|
|
27
|
+
* itself), so the migration is safe to re-run.
|
|
28
|
+
*
|
|
29
|
+
* Dialect-independent: the correlated-subquery `UPDATE` runs on SQLite (incl.
|
|
30
|
+
* D1) and Postgres alike.
|
|
31
|
+
*/
|
|
32
|
+
export async function up(db: Kysely<unknown>): Promise<void> {
|
|
33
|
+
await sql`
|
|
34
|
+
UPDATE taxonomies
|
|
35
|
+
SET parent_id = (
|
|
36
|
+
SELECT p.translation_group FROM taxonomies p WHERE p.id = taxonomies.parent_id
|
|
37
|
+
)
|
|
38
|
+
WHERE parent_id IS NOT NULL
|
|
39
|
+
AND EXISTS (
|
|
40
|
+
SELECT 1 FROM taxonomies p
|
|
41
|
+
WHERE p.id = taxonomies.parent_id
|
|
42
|
+
AND p.translation_group IS NOT NULL
|
|
43
|
+
-- Only rewrite to a translation_group that is itself a live row
|
|
44
|
+
-- id, so the self-FK on parent_id can never dangle.
|
|
45
|
+
AND EXISTS (SELECT 1 FROM taxonomies a WHERE a.id = p.translation_group)
|
|
46
|
+
)
|
|
47
|
+
`.execute(db);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Map each `parent_id` group back to the row id of the parent in the same
|
|
52
|
+
* locale (the pre-migration shape). Rows with no same-locale parent are left as
|
|
53
|
+
* they are rather than nulled, so a rollback never silently detaches a subtree.
|
|
54
|
+
*/
|
|
55
|
+
export async function down(db: Kysely<unknown>): Promise<void> {
|
|
56
|
+
await sql`
|
|
57
|
+
UPDATE taxonomies
|
|
58
|
+
SET parent_id = COALESCE(
|
|
59
|
+
(
|
|
60
|
+
SELECT c.id FROM taxonomies c
|
|
61
|
+
WHERE c.translation_group = taxonomies.parent_id
|
|
62
|
+
AND c.locale = taxonomies.locale
|
|
63
|
+
),
|
|
64
|
+
parent_id
|
|
65
|
+
)
|
|
66
|
+
WHERE parent_id IS NOT NULL
|
|
67
|
+
`.execute(db);
|
|
68
|
+
}
|
|
@@ -46,6 +46,7 @@ import * as m041 from "./041_content_locale_list_index.js";
|
|
|
46
46
|
import * as m042 from "./042_byline_fields.js";
|
|
47
47
|
import * as m043 from "./043_content_references.js";
|
|
48
48
|
import * as m044 from "./044_comment_reactions.js";
|
|
49
|
+
import * as m045 from "./045_taxonomy_parent_group.js";
|
|
49
50
|
|
|
50
51
|
const MIGRATIONS: Readonly<Record<string, Migration>> = Object.freeze({
|
|
51
52
|
"001_initial": m001,
|
|
@@ -91,6 +92,7 @@ const MIGRATIONS: Readonly<Record<string, Migration>> = Object.freeze({
|
|
|
91
92
|
"042_byline_fields": m042,
|
|
92
93
|
"043_content_references": m043,
|
|
93
94
|
"044_comment_reactions": m044,
|
|
95
|
+
"045_taxonomy_parent_group": m045,
|
|
94
96
|
});
|
|
95
97
|
|
|
96
98
|
/** Total number of registered migrations. Exported for use in tests. */
|
|
@@ -37,6 +37,8 @@ type BylineRow = Selectable<BylineTable>;
|
|
|
37
37
|
type BylineRowWithAvatar = BylineRow & {
|
|
38
38
|
avatar_storage_key?: string | null;
|
|
39
39
|
avatar_alt?: string | null;
|
|
40
|
+
avatar_blurhash?: string | null;
|
|
41
|
+
avatar_dominant_color?: string | null;
|
|
40
42
|
};
|
|
41
43
|
|
|
42
44
|
export interface CreateBylineInput {
|
|
@@ -113,6 +115,8 @@ function rowToByline(row: BylineRowWithAvatar): BylineSummary {
|
|
|
113
115
|
avatarMediaId: row.avatar_media_id,
|
|
114
116
|
avatarStorageKey: row.avatar_storage_key ?? null,
|
|
115
117
|
avatarAlt: row.avatar_alt ?? null,
|
|
118
|
+
avatarBlurhash: row.avatar_blurhash ?? null,
|
|
119
|
+
avatarDominantColor: row.avatar_dominant_color ?? null,
|
|
116
120
|
websiteUrl: row.website_url,
|
|
117
121
|
userId: row.user_id,
|
|
118
122
|
isGuest: row.is_guest === 1,
|
|
@@ -944,6 +948,8 @@ export class BylineRepository {
|
|
|
944
948
|
"b.avatar_media_id as avatar_media_id",
|
|
945
949
|
"m.storage_key as avatar_storage_key",
|
|
946
950
|
"m.alt as avatar_alt",
|
|
951
|
+
"m.blurhash as avatar_blurhash",
|
|
952
|
+
"m.dominant_color as avatar_dominant_color",
|
|
947
953
|
"b.website_url as website_url",
|
|
948
954
|
"b.user_id as user_id",
|
|
949
955
|
"b.is_guest as is_guest",
|
|
@@ -971,6 +977,8 @@ export class BylineRepository {
|
|
|
971
977
|
avatar_media_id: row.avatar_media_id,
|
|
972
978
|
avatar_storage_key: row.avatar_storage_key,
|
|
973
979
|
avatar_alt: row.avatar_alt,
|
|
980
|
+
avatar_blurhash: row.avatar_blurhash,
|
|
981
|
+
avatar_dominant_color: row.avatar_dominant_color,
|
|
974
982
|
website_url: row.website_url,
|
|
975
983
|
user_id: row.user_id,
|
|
976
984
|
is_guest: row.is_guest,
|
|
@@ -1080,6 +1088,8 @@ export class BylineRepository {
|
|
|
1080
1088
|
"b.avatar_media_id as avatar_media_id",
|
|
1081
1089
|
"m.storage_key as avatar_storage_key",
|
|
1082
1090
|
"m.alt as avatar_alt",
|
|
1091
|
+
"m.blurhash as avatar_blurhash",
|
|
1092
|
+
"m.dominant_color as avatar_dominant_color",
|
|
1083
1093
|
"b.website_url as website_url",
|
|
1084
1094
|
"b.user_id as user_id",
|
|
1085
1095
|
"b.is_guest as is_guest",
|
|
@@ -1104,6 +1114,8 @@ export class BylineRepository {
|
|
|
1104
1114
|
avatar_media_id: row.avatar_media_id,
|
|
1105
1115
|
avatar_storage_key: row.avatar_storage_key,
|
|
1106
1116
|
avatar_alt: row.avatar_alt,
|
|
1117
|
+
avatar_blurhash: row.avatar_blurhash,
|
|
1118
|
+
avatar_dominant_color: row.avatar_dominant_color,
|
|
1107
1119
|
website_url: row.website_url,
|
|
1108
1120
|
user_id: row.user_id,
|
|
1109
1121
|
is_guest: row.is_guest,
|
|
@@ -1182,6 +1194,8 @@ export class BylineRepository {
|
|
|
1182
1194
|
"b.avatar_media_id as avatar_media_id",
|
|
1183
1195
|
"m.storage_key as avatar_storage_key",
|
|
1184
1196
|
"m.alt as avatar_alt",
|
|
1197
|
+
"m.blurhash as avatar_blurhash",
|
|
1198
|
+
"m.dominant_color as avatar_dominant_color",
|
|
1185
1199
|
"b.website_url as website_url",
|
|
1186
1200
|
"b.user_id as user_id",
|
|
1187
1201
|
"b.is_guest as is_guest",
|
|
@@ -64,7 +64,13 @@ export class TaxonomyRepository {
|
|
|
64
64
|
|
|
65
65
|
// Empty-string parentId is coerced to null defensively. Higher layers
|
|
66
66
|
// also normalize this — see handleTermCreate / handleTermUpdate.
|
|
67
|
-
|
|
67
|
+
// `parent_id` stores the parent's locale-agnostic translation_group (not a
|
|
68
|
+
// row id), mirroring content_taxonomies.taxonomy_id, so a child stays
|
|
69
|
+
// nested in every locale's tree. resolveTranslationGroup accepts either a
|
|
70
|
+
// row id or an already-resolved group, so this is idempotent.
|
|
71
|
+
const parentInput =
|
|
72
|
+
input.parentId === undefined || input.parentId === "" ? null : input.parentId;
|
|
73
|
+
const parentId = parentInput ? await this.resolveParentRef(parentInput) : null;
|
|
68
74
|
|
|
69
75
|
let translationGroup = id;
|
|
70
76
|
if (input.translationOf) {
|
|
@@ -150,14 +156,26 @@ export class TaxonomyRepository {
|
|
|
150
156
|
return rows.map((row) => this.rowToTaxonomy(row));
|
|
151
157
|
}
|
|
152
158
|
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Children of a term. Accepts a term id OR a translation_group and resolves
|
|
161
|
+
* to the group, since `parent_id` stores the parent's translation_group.
|
|
162
|
+
* Pass `locale` to scope to one locale's tree (children share the parent's
|
|
163
|
+
* group across locales); omit it to find children in every locale (used to
|
|
164
|
+
* block deletes that would orphan a sibling translation's subtree).
|
|
165
|
+
*/
|
|
166
|
+
async findChildren(parentIdOrGroup: string, locale?: string): Promise<Taxonomy[]> {
|
|
167
|
+
const group = await this.resolveTranslationGroup(parentIdOrGroup);
|
|
168
|
+
if (!group) return [];
|
|
169
|
+
|
|
170
|
+
let query = this.db
|
|
155
171
|
.selectFrom("taxonomies")
|
|
156
172
|
.selectAll()
|
|
157
|
-
.where("parent_id", "=",
|
|
173
|
+
.where("parent_id", "=", group)
|
|
158
174
|
.orderBy("label", "asc")
|
|
159
|
-
.orderBy("id", "asc")
|
|
160
|
-
|
|
175
|
+
.orderBy("id", "asc");
|
|
176
|
+
if (locale !== undefined) query = query.where("locale", "=", locale);
|
|
177
|
+
|
|
178
|
+
const rows = await query.execute();
|
|
161
179
|
return rows.map((row) => this.rowToTaxonomy(row));
|
|
162
180
|
}
|
|
163
181
|
|
|
@@ -184,7 +202,12 @@ export class TaxonomyRepository {
|
|
|
184
202
|
if (input.label !== undefined) updates.label = input.label;
|
|
185
203
|
if (input.parentId !== undefined) {
|
|
186
204
|
// Defense in depth: empty-string parentId means null (no parent).
|
|
187
|
-
|
|
205
|
+
// Otherwise persist the parent's translation_group (locale-agnostic),
|
|
206
|
+
// matching create() — see the note there.
|
|
207
|
+
updates.parent_id =
|
|
208
|
+
input.parentId === "" || input.parentId === null
|
|
209
|
+
? null
|
|
210
|
+
: await this.resolveParentRef(input.parentId);
|
|
188
211
|
}
|
|
189
212
|
if (input.data !== undefined) updates.data = JSON.stringify(input.data);
|
|
190
213
|
|
|
@@ -394,6 +417,26 @@ export class TaxonomyRepository {
|
|
|
394
417
|
return Number(result?.count ?? 0);
|
|
395
418
|
}
|
|
396
419
|
|
|
420
|
+
/**
|
|
421
|
+
* Resolve a parent reference (a row id or a translation_group) to the value
|
|
422
|
+
* persisted in `parent_id`: the parent's translation_group, which is
|
|
423
|
+
* locale-agnostic so the child stays nested in every locale. A
|
|
424
|
+
* translation_group normally equals its anchor row's id, which satisfies the
|
|
425
|
+
* self-FK on `parent_id`. If that anchor row is missing (a translation whose
|
|
426
|
+
* anchor was deleted), fall back to the id we were given so we never write a
|
|
427
|
+
* dangling FK value.
|
|
428
|
+
*/
|
|
429
|
+
private async resolveParentRef(idOrGroup: string): Promise<string> {
|
|
430
|
+
const group = await this.resolveTranslationGroup(idOrGroup);
|
|
431
|
+
if (!group) return idOrGroup;
|
|
432
|
+
const anchor = await this.db
|
|
433
|
+
.selectFrom("taxonomies")
|
|
434
|
+
.select("id")
|
|
435
|
+
.where("id", "=", group)
|
|
436
|
+
.executeTakeFirst();
|
|
437
|
+
return anchor ? group : idOrGroup;
|
|
438
|
+
}
|
|
439
|
+
|
|
397
440
|
private async resolveTranslationGroup(idOrGroup: string): Promise<string | null> {
|
|
398
441
|
const row = await this.db
|
|
399
442
|
.selectFrom("taxonomies")
|
|
@@ -78,6 +78,19 @@ export interface BylineSummary {
|
|
|
78
78
|
avatarStorageKey?: string | null;
|
|
79
79
|
/** Avatar media alt text, from the same media join. Null when not joined. */
|
|
80
80
|
avatarAlt?: string | null;
|
|
81
|
+
/**
|
|
82
|
+
* Avatar media blurhash (LQIP placeholder, migration 024), folded in by the
|
|
83
|
+
* same media join as `avatarStorageKey`. Lets a renderer paint a blurred
|
|
84
|
+
* placeholder while the full avatar loads, with no extra media lookup.
|
|
85
|
+
* Null when the byline has no avatar, the media row has no blurhash, or the
|
|
86
|
+
* byline was loaded through a finder that doesn't join media.
|
|
87
|
+
*/
|
|
88
|
+
avatarBlurhash?: string | null;
|
|
89
|
+
/**
|
|
90
|
+
* Avatar media dominant colour (LQIP placeholder, migration 024), from the
|
|
91
|
+
* same media join. Null under the same conditions as `avatarBlurhash`.
|
|
92
|
+
*/
|
|
93
|
+
avatarDominantColor?: string | null;
|
|
81
94
|
websiteUrl: string | null;
|
|
82
95
|
userId: string | null;
|
|
83
96
|
isGuest: boolean;
|