emdash 0.12.0 → 0.13.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-BktHA7EO.d.mts → adapters-9DybjTO6.d.mts} +1 -1
- package/dist/{adapters-BktHA7EO.d.mts.map → adapters-9DybjTO6.d.mts.map} +1 -1
- package/dist/allowed-origins-CDdG-4Gd.mjs +116 -0
- package/dist/allowed-origins-CDdG-4Gd.mjs.map +1 -0
- package/dist/api/route-utils.d.mts +68 -0
- package/dist/api/route-utils.d.mts.map +1 -0
- package/dist/api/route-utils.mjs +44 -0
- package/dist/api/route-utils.mjs.map +1 -0
- package/dist/api/schemas/index.d.mts +2 -0
- package/dist/api/schemas/index.mjs +4 -0
- package/dist/api-ayIQ7rIe.mjs +3941 -0
- package/dist/api-ayIQ7rIe.mjs.map +1 -0
- package/dist/api-tokens-D3C9v02m.mjs +3 -0
- package/dist/api-tokens-eYymBhIT.mjs +153 -0
- package/dist/api-tokens-eYymBhIT.mjs.map +1 -0
- package/dist/{apply-C1ZORgcy.mjs → apply-v4DBgjPw.mjs} +19 -346
- package/dist/apply-v4DBgjPw.mjs.map +1 -0
- package/dist/astro/index.d.mts +10 -6
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +42 -83
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +9 -5
- package/dist/astro/middleware/auth.d.mts.map +1 -1
- package/dist/astro/middleware/auth.mjs +25 -65
- package/dist/astro/middleware/auth.mjs.map +1 -1
- package/dist/astro/middleware/redirect.mjs +5 -5
- package/dist/astro/middleware/request-context.mjs +4 -4
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +140 -69
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/PluginRegistry.d.mts +15 -0
- package/dist/astro/routes/PluginRegistry.d.mts.map +1 -0
- package/dist/astro/routes/PluginRegistry.mjs +25 -0
- package/dist/astro/routes/PluginRegistry.mjs.map +1 -0
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts +15 -0
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +67 -0
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -0
- package/dist/astro/routes/api/admin/allowed-domains/index.d.mts +15 -0
- package/dist/astro/routes/api/admin/allowed-domains/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +67 -0
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts +11 -0
- package/dist/astro/routes/api/admin/api-tokens/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +33 -0
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/admin/api-tokens/index.d.mts +17 -0
- package/dist/astro/routes/api/admin/api-tokens/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +52 -0
- package/dist/astro/routes/api/admin/api-tokens/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts +10 -0
- package/dist/astro/routes/api/admin/bylines/_id_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +74 -0
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/bylines/index.d.mts +9 -0
- package/dist/astro/routes/api/admin/bylines/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/bylines/index.mjs +61 -0
- package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/comments/_id_/status.d.mts +8 -0
- package/dist/astro/routes/api/admin/comments/_id_/status.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +80 -0
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -0
- package/dist/astro/routes/api/admin/comments/_id_.d.mts +15 -0
- package/dist/astro/routes/api/admin/comments/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/comments/_id_.mjs +47 -0
- package/dist/astro/routes/api/admin/comments/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/admin/comments/bulk.d.mts +8 -0
- package/dist/astro/routes/api/admin/comments/bulk.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/comments/bulk.mjs +36 -0
- package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -0
- package/dist/astro/routes/api/admin/comments/counts.d.mts +8 -0
- package/dist/astro/routes/api/admin/comments/counts.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/comments/counts.mjs +25 -0
- package/dist/astro/routes/api/admin/comments/counts.mjs.map +1 -0
- package/dist/astro/routes/api/admin/comments/index.d.mts +11 -0
- package/dist/astro/routes/api/admin/comments/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/comments/index.mjs +40 -0
- package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts +8 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +48 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs.map +1 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +36 -0
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts +19 -0
- package/dist/astro/routes/api/admin/oauth-clients/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +69 -0
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/admin/oauth-clients/index.d.mts +15 -0
- package/dist/astro/routes/api/admin/oauth-clients/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +50 -0
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -0
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +59 -0
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +51 -0
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +58 -0
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +66 -0
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/index.mjs +49 -0
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +39 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +51 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +69 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +58 -0
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/registry/install.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +72 -0
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/updates.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/updates.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/updates.mjs +49 -0
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +51 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts +8 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +39 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/themes/marketplace/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +67 -0
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/disable.d.mts +8 -0
- package/dist/astro/routes/api/admin/users/_id_/disable.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +43 -0
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/enable.d.mts +8 -0
- package/dist/astro/routes/api/admin/users/_id_/enable.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +32 -0
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/index.d.mts +9 -0
- package/dist/astro/routes/api/admin/users/_id_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +106 -0
- package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts +8 -0
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +46 -0
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs.map +1 -0
- package/dist/astro/routes/api/admin/users/index.d.mts +8 -0
- package/dist/astro/routes/api/admin/users/index.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/users/index.mjs +56 -0
- package/dist/astro/routes/api/admin/users/index.mjs.map +1 -0
- package/dist/astro/routes/api/auth/dev-bypass.d.mts +9 -0
- package/dist/astro/routes/api/auth/dev-bypass.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/dev-bypass.mjs +84 -0
- package/dist/astro/routes/api/auth/dev-bypass.mjs.map +1 -0
- package/dist/astro/routes/api/auth/invite/accept.d.mts +8 -0
- package/dist/astro/routes/api/auth/invite/accept.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/invite/accept.mjs +34 -0
- package/dist/astro/routes/api/auth/invite/accept.mjs.map +1 -0
- package/dist/astro/routes/api/auth/invite/complete.d.mts +8 -0
- package/dist/astro/routes/api/auth/invite/complete.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/invite/complete.mjs +56 -0
- package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -0
- package/dist/astro/routes/api/auth/invite/index.d.mts +8 -0
- package/dist/astro/routes/api/auth/invite/index.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/invite/index.mjs +53 -0
- package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -0
- package/dist/astro/routes/api/auth/invite/register-options.d.mts +8 -0
- package/dist/astro/routes/api/auth/invite/register-options.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/invite/register-options.mjs +46 -0
- package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -0
- package/dist/astro/routes/api/auth/logout.d.mts +8 -0
- package/dist/astro/routes/api/auth/logout.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/logout.mjs +27 -0
- package/dist/astro/routes/api/auth/logout.mjs.map +1 -0
- package/dist/astro/routes/api/auth/magic-link/send.d.mts +8 -0
- package/dist/astro/routes/api/auth/magic-link/send.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/magic-link/send.mjs +50 -0
- package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -0
- package/dist/astro/routes/api/auth/magic-link/verify.d.mts +8 -0
- package/dist/astro/routes/api/auth/magic-link/verify.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +35 -0
- package/dist/astro/routes/api/auth/magic-link/verify.mjs.map +1 -0
- package/dist/astro/routes/api/auth/me.d.mts +14 -0
- package/dist/astro/routes/api/auth/me.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/me.mjs +43 -0
- package/dist/astro/routes/api/auth/me.mjs.map +1 -0
- package/dist/astro/routes/api/auth/mode.d.mts +8 -0
- package/dist/astro/routes/api/auth/mode.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/mode.mjs +29 -0
- package/dist/astro/routes/api/auth/mode.mjs.map +1 -0
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts +8 -0
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +130 -0
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs.map +1 -0
- package/dist/astro/routes/api/auth/oauth/_provider_.d.mts +8 -0
- package/dist/astro/routes/api/auth/oauth/_provider_.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +60 -0
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs.map +1 -0
- package/dist/astro/routes/api/auth/passkey/_id_.d.mts +15 -0
- package/dist/astro/routes/api/auth/passkey/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +64 -0
- package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/auth/passkey/index.d.mts +8 -0
- package/dist/astro/routes/api/auth/passkey/index.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/passkey/index.mjs +28 -0
- package/dist/astro/routes/api/auth/passkey/index.mjs.map +1 -0
- package/dist/astro/routes/api/auth/passkey/options.d.mts +8 -0
- package/dist/astro/routes/api/auth/passkey/options.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/passkey/options.mjs +48 -0
- package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -0
- package/dist/astro/routes/api/auth/passkey/register/options.d.mts +8 -0
- package/dist/astro/routes/api/auth/passkey/register/options.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +46 -0
- package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -0
- package/dist/astro/routes/api/auth/passkey/register/verify.d.mts +8 -0
- package/dist/astro/routes/api/auth/passkey/register/verify.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +61 -0
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -0
- package/dist/astro/routes/api/auth/passkey/verify.d.mts +8 -0
- package/dist/astro/routes/api/auth/passkey/verify.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/passkey/verify.mjs +49 -0
- package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -0
- package/dist/astro/routes/api/auth/signup/complete.d.mts +8 -0
- package/dist/astro/routes/api/auth/signup/complete.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/signup/complete.mjs +57 -0
- package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -0
- package/dist/astro/routes/api/auth/signup/request.d.mts +8 -0
- package/dist/astro/routes/api/auth/signup/request.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/signup/request.mjs +46 -0
- package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -0
- package/dist/astro/routes/api/auth/signup/verify.d.mts +8 -0
- package/dist/astro/routes/api/auth/signup/verify.d.mts.map +1 -0
- package/dist/astro/routes/api/auth/signup/verify.mjs +35 -0
- package/dist/astro/routes/api/auth/signup/verify.mjs.map +1 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +15 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +193 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +20 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +28 -0
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +30 -0
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +23 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +78 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +48 -0
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/restore.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +28 -0
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +22 -0
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts +9 -0
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +58 -0
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts +15 -0
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +85 -0
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/translations.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +43 -0
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +28 -0
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts +10 -0
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +88 -0
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/index.d.mts +9 -0
- package/dist/astro/routes/api/content/_collection_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/index.mjs +61 -0
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/trash.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/trash.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/trash.mjs +25 -0
- package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -0
- package/dist/astro/routes/api/dashboard.d.mts +8 -0
- package/dist/astro/routes/api/dashboard.d.mts.map +1 -0
- package/dist/astro/routes/api/dashboard.mjs +26 -0
- package/dist/astro/routes/api/dashboard.mjs.map +1 -0
- package/dist/astro/routes/api/dev/emails.d.mts +9 -0
- package/dist/astro/routes/api/dev/emails.d.mts.map +1 -0
- package/dist/astro/routes/api/dev/emails.mjs +20 -0
- package/dist/astro/routes/api/dev/emails.mjs.map +1 -0
- package/dist/astro/routes/api/import/probe.d.mts +18 -0
- package/dist/astro/routes/api/import/probe.d.mts.map +1 -0
- package/dist/astro/routes/api/import/probe.mjs +35 -0
- package/dist/astro/routes/api/import/probe.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress/analyze.d.mts +88 -0
- package/dist/astro/routes/api/import/wordpress/analyze.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +313 -0
- package/dist/astro/routes/api/import/wordpress/analyze.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +93 -0
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress/execute.mjs +593 -0
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress/media.d.mts +36 -0
- package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress/media.mjs +225 -0
- package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress/prepare.d.mts +20 -0
- package/dist/astro/routes/api/import/wordpress/prepare.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +120 -0
- package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts +49 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs +131 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +22 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +139 -0
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +16 -0
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +71 -0
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts +8 -0
- package/dist/astro/routes/api/import/wordpress-plugin/callback.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +29 -0
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs.map +1 -0
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +20 -0
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -0
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +219 -0
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -0
- package/dist/astro/routes/api/manifest.d.mts +8 -0
- package/dist/astro/routes/api/manifest.d.mts.map +1 -0
- package/dist/astro/routes/api/manifest.mjs +47 -0
- package/dist/astro/routes/api/manifest.mjs.map +1 -0
- package/dist/astro/routes/api/mcp.d.mts +16 -0
- package/dist/astro/routes/api/mcp.d.mts.map +1 -0
- package/dist/astro/routes/api/mcp.mjs +1414 -0
- package/dist/astro/routes/api/mcp.mjs.map +1 -0
- package/dist/astro/routes/api/media/_id_/confirm.d.mts +11 -0
- package/dist/astro/routes/api/media/_id_/confirm.d.mts.map +1 -0
- package/dist/astro/routes/api/media/_id_/confirm.mjs +61 -0
- package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -0
- package/dist/astro/routes/api/media/_id_.d.mts +23 -0
- package/dist/astro/routes/api/media/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/media/_id_.mjs +83 -0
- package/dist/astro/routes/api/media/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/media/file/_...key_.d.mts +8 -0
- package/dist/astro/routes/api/media/file/_...key_.d.mts.map +1 -0
- package/dist/astro/routes/api/media/file/_...key_.mjs +52 -0
- package/dist/astro/routes/api/media/file/_...key_.mjs.map +1 -0
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts +15 -0
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.d.mts.map +1 -0
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +52 -0
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs.map +1 -0
- package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts +15 -0
- package/dist/astro/routes/api/media/providers/_providerId_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +75 -0
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs.map +1 -0
- package/dist/astro/routes/api/media/providers/index.d.mts +11 -0
- package/dist/astro/routes/api/media/providers/index.d.mts.map +1 -0
- package/dist/astro/routes/api/media/providers/index.mjs +21 -0
- package/dist/astro/routes/api/media/providers/index.mjs.map +1 -0
- package/dist/astro/routes/api/media/upload-url.d.mts +11 -0
- package/dist/astro/routes/api/media/upload-url.d.mts.map +1 -0
- package/dist/astro/routes/api/media/upload-url.mjs +82 -0
- package/dist/astro/routes/api/media/upload-url.mjs.map +1 -0
- package/dist/astro/routes/api/media.d.mts +17 -0
- package/dist/astro/routes/api/media.d.mts.map +1 -0
- package/dist/astro/routes/api/media.mjs +138 -0
- package/dist/astro/routes/api/media.mjs.map +1 -0
- package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts +9 -0
- package/dist/astro/routes/api/menus/_name_/items/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +48 -0
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/menus/_name_/items.d.mts +8 -0
- package/dist/astro/routes/api/menus/_name_/items.d.mts.map +1 -0
- package/dist/astro/routes/api/menus/_name_/items.mjs +31 -0
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -0
- package/dist/astro/routes/api/menus/_name_/reorder.d.mts +8 -0
- package/dist/astro/routes/api/menus/_name_/reorder.d.mts.map +1 -0
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +31 -0
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -0
- package/dist/astro/routes/api/menus/_name_/translations.d.mts +9 -0
- package/dist/astro/routes/api/menus/_name_/translations.d.mts.map +1 -0
- package/dist/astro/routes/api/menus/_name_/translations.mjs +62 -0
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -0
- package/dist/astro/routes/api/menus/_name_.d.mts +10 -0
- package/dist/astro/routes/api/menus/_name_.d.mts.map +1 -0
- package/dist/astro/routes/api/menus/_name_.mjs +60 -0
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -0
- package/dist/astro/routes/api/menus/index.d.mts +9 -0
- package/dist/astro/routes/api/menus/index.d.mts.map +1 -0
- package/dist/astro/routes/api/menus/index.mjs +40 -0
- package/dist/astro/routes/api/menus/index.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/authorize.d.mts +9 -0
- package/dist/astro/routes/api/oauth/authorize.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/authorize.mjs +260 -0
- package/dist/astro/routes/api/oauth/authorize.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/device/authorize.d.mts +8 -0
- package/dist/astro/routes/api/oauth/device/authorize.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/device/authorize.mjs +32 -0
- package/dist/astro/routes/api/oauth/device/authorize.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/device/code.d.mts +8 -0
- package/dist/astro/routes/api/oauth/device/code.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/device/code.mjs +36 -0
- package/dist/astro/routes/api/oauth/device/code.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/device/token.d.mts +8 -0
- package/dist/astro/routes/api/oauth/device/token.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/device/token.mjs +47 -0
- package/dist/astro/routes/api/oauth/device/token.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/register.d.mts +9 -0
- package/dist/astro/routes/api/oauth/register.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/register.mjs +113 -0
- package/dist/astro/routes/api/oauth/register.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/token/refresh.d.mts +8 -0
- package/dist/astro/routes/api/oauth/token/refresh.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/token/refresh.mjs +30 -0
- package/dist/astro/routes/api/oauth/token/refresh.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/token/revoke.d.mts +8 -0
- package/dist/astro/routes/api/oauth/token/revoke.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/token/revoke.mjs +27 -0
- package/dist/astro/routes/api/oauth/token/revoke.mjs.map +1 -0
- package/dist/astro/routes/api/oauth/token.d.mts +9 -0
- package/dist/astro/routes/api/oauth/token.d.mts.map +1 -0
- package/dist/astro/routes/api/oauth/token.mjs +141 -0
- package/dist/astro/routes/api/oauth/token.mjs.map +1 -0
- package/dist/astro/routes/api/openapi.json.d.mts +8 -0
- package/dist/astro/routes/api/openapi.json.d.mts.map +1 -0
- package/dist/astro/routes/api/openapi.json.mjs +2642 -0
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -0
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +12 -0
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -0
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +78 -0
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -0
- package/dist/astro/routes/api/redirects/404s/index.d.mts +10 -0
- package/dist/astro/routes/api/redirects/404s/index.d.mts.map +1 -0
- package/dist/astro/routes/api/redirects/404s/index.mjs +62 -0
- package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -0
- package/dist/astro/routes/api/redirects/404s/summary.d.mts +8 -0
- package/dist/astro/routes/api/redirects/404s/summary.d.mts.map +1 -0
- package/dist/astro/routes/api/redirects/404s/summary.mjs +34 -0
- package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -0
- package/dist/astro/routes/api/redirects/_id_.d.mts +10 -0
- package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/redirects/_id_.mjs +71 -0
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/redirects/index.d.mts +9 -0
- package/dist/astro/routes/api/redirects/index.d.mts.map +1 -0
- package/dist/astro/routes/api/redirects/index.mjs +52 -0
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -0
- package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts +8 -0
- package/dist/astro/routes/api/revisions/_revisionId_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +19 -0
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs.map +1 -0
- package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts +8 -0
- package/dist/astro/routes/api/revisions/_revisionId_/restore.d.mts.map +1 -0
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +26 -0
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts +10 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +75 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts +9 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +63 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts +8 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +54 -0
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts +10 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +79 -0
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -0
- package/dist/astro/routes/api/schema/collections/index.d.mts +9 -0
- package/dist/astro/routes/api/schema/collections/index.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/collections/index.mjs +63 -0
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -0
- package/dist/astro/routes/api/schema/index.d.mts +8 -0
- package/dist/astro/routes/api/schema/index.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/index.mjs +82 -0
- package/dist/astro/routes/api/schema/index.mjs.map +1 -0
- package/dist/astro/routes/api/schema/orphans/_slug_.d.mts +8 -0
- package/dist/astro/routes/api/schema/orphans/_slug_.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +55 -0
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -0
- package/dist/astro/routes/api/schema/orphans/index.d.mts +8 -0
- package/dist/astro/routes/api/schema/orphans/index.d.mts.map +1 -0
- package/dist/astro/routes/api/schema/orphans/index.mjs +50 -0
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -0
- package/dist/astro/routes/api/search/enable.d.mts +16 -0
- package/dist/astro/routes/api/search/enable.d.mts.map +1 -0
- package/dist/astro/routes/api/search/enable.mjs +55 -0
- package/dist/astro/routes/api/search/enable.mjs.map +1 -0
- package/dist/astro/routes/api/search/index.d.mts +17 -0
- package/dist/astro/routes/api/search/index.d.mts.map +1 -0
- package/dist/astro/routes/api/search/index.mjs +52 -0
- package/dist/astro/routes/api/search/index.mjs.map +1 -0
- package/dist/astro/routes/api/search/rebuild.d.mts +14 -0
- package/dist/astro/routes/api/search/rebuild.d.mts.map +1 -0
- package/dist/astro/routes/api/search/rebuild.mjs +48 -0
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -0
- package/dist/astro/routes/api/search/stats.d.mts +11 -0
- package/dist/astro/routes/api/search/stats.d.mts.map +1 -0
- package/dist/astro/routes/api/search/stats.mjs +29 -0
- package/dist/astro/routes/api/search/stats.mjs.map +1 -0
- package/dist/astro/routes/api/search/suggest.d.mts +16 -0
- package/dist/astro/routes/api/search/suggest.d.mts.map +1 -0
- package/dist/astro/routes/api/search/suggest.mjs +43 -0
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -0
- package/dist/astro/routes/api/sections/_slug_.d.mts +10 -0
- package/dist/astro/routes/api/sections/_slug_.d.mts.map +1 -0
- package/dist/astro/routes/api/sections/_slug_.mjs +65 -0
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -0
- package/dist/astro/routes/api/sections/index.d.mts +9 -0
- package/dist/astro/routes/api/sections/index.d.mts.map +1 -0
- package/dist/astro/routes/api/sections/index.mjs +48 -0
- package/dist/astro/routes/api/sections/index.mjs.map +1 -0
- package/dist/astro/routes/api/settings/email.d.mts +18 -0
- package/dist/astro/routes/api/settings/email.d.mts.map +1 -0
- package/dist/astro/routes/api/settings/email.mjs +105 -0
- package/dist/astro/routes/api/settings/email.mjs.map +1 -0
- package/dist/astro/routes/api/settings.d.mts +21 -0
- package/dist/astro/routes/api/settings.d.mts.map +1 -0
- package/dist/astro/routes/api/settings.mjs +58 -0
- package/dist/astro/routes/api/settings.mjs.map +1 -0
- package/dist/astro/routes/api/setup/admin-verify.d.mts +8 -0
- package/dist/astro/routes/api/setup/admin-verify.d.mts.map +1 -0
- package/dist/astro/routes/api/setup/admin-verify.mjs +68 -0
- package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -0
- package/dist/astro/routes/api/setup/admin.d.mts +8 -0
- package/dist/astro/routes/api/setup/admin.d.mts.map +1 -0
- package/dist/astro/routes/api/setup/admin.mjs +69 -0
- package/dist/astro/routes/api/setup/admin.mjs.map +1 -0
- package/dist/astro/routes/api/setup/dev-bypass.d.mts +9 -0
- package/dist/astro/routes/api/setup/dev-bypass.d.mts.map +1 -0
- package/dist/astro/routes/api/setup/dev-bypass.mjs +139 -0
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -0
- package/dist/astro/routes/api/setup/dev-reset.d.mts +8 -0
- package/dist/astro/routes/api/setup/dev-reset.d.mts.map +1 -0
- package/dist/astro/routes/api/setup/dev-reset.mjs +25 -0
- package/dist/astro/routes/api/setup/dev-reset.mjs.map +1 -0
- package/dist/astro/routes/api/setup/index.d.mts +8 -0
- package/dist/astro/routes/api/setup/index.d.mts.map +1 -0
- package/dist/astro/routes/api/setup/index.mjs +93 -0
- package/dist/astro/routes/api/setup/index.mjs.map +1 -0
- package/dist/astro/routes/api/setup/status.d.mts +8 -0
- package/dist/astro/routes/api/setup/status.d.mts.map +1 -0
- package/dist/astro/routes/api/setup/status.mjs +60 -0
- package/dist/astro/routes/api/setup/status.mjs.map +1 -0
- package/dist/astro/routes/api/snapshot.d.mts +8 -0
- package/dist/astro/routes/api/snapshot.d.mts.map +1 -0
- package/dist/astro/routes/api/snapshot.mjs +270 -0
- package/dist/astro/routes/api/snapshot.mjs.map +1 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts +9 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.d.mts.map +1 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +72 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts +19 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.d.mts.map +1 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +80 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts +15 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.d.mts.map +1 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +59 -0
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -0
- package/dist/astro/routes/api/taxonomies/index.d.mts +15 -0
- package/dist/astro/routes/api/taxonomies/index.d.mts.map +1 -0
- package/dist/astro/routes/api/taxonomies/index.mjs +55 -0
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -0
- package/dist/astro/routes/api/themes/preview.d.mts +8 -0
- package/dist/astro/routes/api/themes/preview.d.mts.map +1 -0
- package/dist/astro/routes/api/themes/preview.mjs +49 -0
- package/dist/astro/routes/api/themes/preview.mjs.map +1 -0
- package/dist/astro/routes/api/typegen.d.mts +18 -0
- package/dist/astro/routes/api/typegen.d.mts.map +1 -0
- package/dist/astro/routes/api/typegen.mjs +78 -0
- package/dist/astro/routes/api/typegen.mjs.map +1 -0
- package/dist/astro/routes/api/well-known/auth.d.mts +8 -0
- package/dist/astro/routes/api/well-known/auth.d.mts.map +1 -0
- package/dist/astro/routes/api/well-known/auth.mjs +42 -0
- package/dist/astro/routes/api/well-known/auth.mjs.map +1 -0
- package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts +8 -0
- package/dist/astro/routes/api/well-known/oauth-authorization-server.d.mts.map +1 -0
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +32 -0
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs.map +1 -0
- package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts +8 -0
- package/dist/astro/routes/api/well-known/oauth-protected-resource.d.mts.map +1 -0
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +21 -0
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/_name_/reorder.d.mts.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +36 -0
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts +9 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +62 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts +8 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.d.mts.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +49 -0
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_.d.mts +9 -0
- package/dist/astro/routes/api/widget-areas/_name_.d.mts.map +1 -0
- package/dist/astro/routes/api/widget-areas/_name_.mjs +49 -0
- package/dist/astro/routes/api/widget-areas/_name_.mjs.map +1 -0
- package/dist/astro/routes/api/widget-areas/index.d.mts +9 -0
- package/dist/astro/routes/api/widget-areas/index.d.mts.map +1 -0
- package/dist/astro/routes/api/widget-areas/index.mjs +59 -0
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -0
- package/dist/astro/routes/api/widget-components.d.mts +8 -0
- package/dist/astro/routes/api/widget-components.d.mts.map +1 -0
- package/dist/astro/routes/api/widget-components.mjs +18 -0
- package/dist/astro/routes/api/widget-components.mjs.map +1 -0
- package/dist/astro/routes/robots.txt.d.mts +8 -0
- package/dist/astro/routes/robots.txt.d.mts.map +1 -0
- package/dist/astro/routes/robots.txt.mjs +61 -0
- package/dist/astro/routes/robots.txt.mjs.map +1 -0
- package/dist/astro/routes/sitemap-_collection_.xml.d.mts +8 -0
- package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -0
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +71 -0
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -0
- package/dist/astro/routes/sitemap.xml.d.mts +8 -0
- package/dist/astro/routes/sitemap.xml.d.mts.map +1 -0
- package/dist/astro/routes/sitemap.xml.mjs +64 -0
- package/dist/astro/routes/sitemap.xml.mjs.map +1 -0
- package/dist/astro/types.d.mts +48 -8
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/auth/providers/github.d.mts +13 -0
- package/dist/auth/providers/github.d.mts.map +1 -0
- package/dist/auth/providers/github.mjs +18 -0
- package/dist/auth/providers/github.mjs.map +1 -0
- package/dist/auth/providers/google.d.mts +13 -0
- package/dist/auth/providers/google.d.mts.map +1 -0
- package/dist/auth/providers/google.mjs +18 -0
- package/dist/auth/providers/google.mjs.map +1 -0
- package/dist/authorize-BlyCH-96.mjs +37 -0
- package/dist/authorize-BlyCH-96.mjs.map +1 -0
- package/dist/{base64-MBPo9ozB.mjs → base64-CqR-7kqF.mjs} +1 -1
- package/dist/{base64-MBPo9ozB.mjs.map → base64-CqR-7kqF.mjs.map} +1 -1
- package/dist/{byline-gFn1r0vA.mjs → byline-D09BaS4j.mjs} +4 -4
- package/dist/{byline-gFn1r0vA.mjs.map → byline-D09BaS4j.mjs.map} +1 -1
- package/dist/{bylines-DTFI8nDM.mjs → bylines-BTM2xtP8.mjs} +6 -6
- package/dist/{bylines-DTFI8nDM.mjs.map → bylines-BTM2xtP8.mjs.map} +1 -1
- package/dist/bylines-C6eYUWlZ.d.mts +1971 -0
- package/dist/bylines-C6eYUWlZ.d.mts.map +1 -0
- package/dist/{cache-BAJbeoZ8.mjs → cache-CXCpjWiL.mjs} +3 -3
- package/dist/{cache-BAJbeoZ8.mjs.map → cache-CXCpjWiL.mjs.map} +1 -1
- package/dist/challenge-store-CJ0OOHOr.mjs +49 -0
- package/dist/challenge-store-CJ0OOHOr.mjs.map +1 -0
- package/dist/{chunks-BK1oZS-l.mjs → chunks-DyGtu1Bv.mjs} +2 -2
- package/dist/{chunks-BK1oZS-l.mjs.map → chunks-DyGtu1Bv.mjs.map} +1 -1
- package/dist/cli/index.mjs +23 -18
- 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.d.mts.map +1 -1
- package/dist/client/index.mjs +2 -2
- package/dist/client/index.mjs.map +1 -1
- package/dist/comment-Dd9MI82-.mjs +247 -0
- package/dist/comment-Dd9MI82-.mjs.map +1 -0
- package/dist/comments-koGI0FrK.mjs +204 -0
- package/dist/comments-koGI0FrK.mjs.map +1 -0
- package/dist/components-mZem7pbe.mjs +108 -0
- package/dist/components-mZem7pbe.mjs.map +1 -0
- package/dist/{content-CERxPUN0.mjs → content-D6YG26WG.mjs} +10 -34
- package/dist/content-D6YG26WG.mjs.map +1 -0
- package/dist/context-qF8d3IPR.mjs +879 -0
- package/dist/context-qF8d3IPR.mjs.map +1 -0
- package/dist/cron-H8eJ46dv.mjs +264 -0
- package/dist/cron-H8eJ46dv.mjs.map +1 -0
- package/dist/dashboard-BmWSIUwY.mjs +105 -0
- package/dist/dashboard-BmWSIUwY.mjs.map +1 -0
- 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-B7P2pSCn.mjs → db-errors-CGN9kJfo.mjs} +1 -1
- package/dist/{db-errors-B7P2pSCn.mjs.map → db-errors-CGN9kJfo.mjs.map} +1 -1
- package/dist/{default-pHuz9WF6.mjs → default-Dbs22Gg4.mjs} +1 -1
- package/dist/{default-pHuz9WF6.mjs.map → default-Dbs22Gg4.mjs.map} +1 -1
- package/dist/device-flow-BqJRxa0Q.mjs +467 -0
- package/dist/device-flow-BqJRxa0Q.mjs.map +1 -0
- package/dist/email-console-Dmp5Q-P2.mjs +50 -0
- package/dist/email-console-Dmp5Q-P2.mjs.map +1 -0
- package/dist/error-tSQWIl5U.mjs +437 -0
- package/dist/error-tSQWIl5U.mjs.map +1 -0
- package/dist/escape-B8bdIryO.mjs +9 -0
- package/dist/escape-B8bdIryO.mjs.map +1 -0
- package/dist/fts-manager-B633C-kQ.mjs +339 -0
- package/dist/fts-manager-B633C-kQ.mjs.map +1 -0
- package/dist/hash-DlUxGhQS.mjs +33 -0
- package/dist/hash-DlUxGhQS.mjs.map +1 -0
- package/dist/import-CNfLOgDE.mjs +1531 -0
- package/dist/import-CNfLOgDE.mjs.map +1 -0
- package/dist/index-D2gvztOP.d.mts +262 -0
- package/dist/index-D2gvztOP.d.mts.map +1 -0
- package/dist/{index-Dlkzhb4C.d.mts → index-UmOMt9T-.d.mts} +310 -911
- package/dist/index-UmOMt9T-.d.mts.map +1 -0
- package/dist/index.d.mts +17 -11
- package/dist/index.mjs +57 -28
- package/dist/{load-DR1VwFXR.mjs → load-QzYRpVN3.mjs} +2 -2
- package/dist/{load-DR1VwFXR.mjs.map → load-QzYRpVN3.mjs.map} +1 -1
- package/dist/{loader-ou_PXAjg.mjs → loader-Cs6-Bqe6.mjs} +4 -4
- package/dist/{loader-ou_PXAjg.mjs.map → loader-Cs6-Bqe6.mjs.map} +1 -1
- package/dist/{manifest-schema-Bp6d4d4n.mjs → manifest-schema-HCtSh4Jq.mjs} +1 -1
- package/dist/{manifest-schema-Bp6d4d4n.mjs.map → manifest-schema-HCtSh4Jq.mjs.map} +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +2 -1
- package/dist/media/index.mjs.map +1 -1
- package/dist/media/local-runtime.d.mts +11 -7
- package/dist/media/local-runtime.d.mts.map +1 -1
- package/dist/media/local-runtime.mjs +7 -6
- package/dist/media/local-runtime.mjs.map +1 -1
- package/dist/media-Dg7he9uK.mjs +209 -0
- package/dist/media-Dg7he9uK.mjs.map +1 -0
- package/dist/media-allowlist-B8EX01DH.mjs +32 -0
- package/dist/media-allowlist-B8EX01DH.mjs.map +1 -0
- package/dist/menus-DOzIecHi.mjs +723 -0
- package/dist/menus-DOzIecHi.mjs.map +1 -0
- package/dist/menus-X4Z-eBA1.mjs +2788 -0
- package/dist/menus-X4Z-eBA1.mjs.map +1 -0
- package/dist/mime-KV5TqkMN.mjs +36 -0
- package/dist/mime-KV5TqkMN.mjs.map +1 -0
- package/dist/{mode-YhqNVef_.mjs → mode-DPRPvJYm.mjs} +1 -1
- package/dist/{mode-YhqNVef_.mjs.map → mode-DPRPvJYm.mjs.map} +1 -1
- package/dist/normalize-CN5kRSMC.mjs +151 -0
- package/dist/normalize-CN5kRSMC.mjs.map +1 -0
- package/dist/oauth-authorization-62GmpGIH.mjs +275 -0
- package/dist/oauth-authorization-62GmpGIH.mjs.map +1 -0
- package/dist/oauth-clients-D_B0_-Bz.mjs +266 -0
- package/dist/oauth-clients-D_B0_-Bz.mjs.map +1 -0
- package/dist/oauth-state-store-DpsZViTu.mjs +49 -0
- package/dist/oauth-state-store-DpsZViTu.mjs.map +1 -0
- package/dist/oauth-user-lookup-meyS2oB1.mjs +26 -0
- package/dist/oauth-user-lookup-meyS2oB1.mjs.map +1 -0
- package/dist/{options-nPxWnrya.mjs → options-BL4X94qY.mjs} +1 -1
- package/dist/{options-nPxWnrya.mjs.map → options-BL4X94qY.mjs.map} +1 -1
- package/dist/options-Cq64Wx0O.d.mts +207 -0
- package/dist/options-Cq64Wx0O.d.mts.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/parse-BFTPon-J.mjs +89 -0
- package/dist/parse-BFTPon-J.mjs.map +1 -0
- package/dist/passkey-config-Cg86_ISa.mjs +46 -0
- package/dist/passkey-config-Cg86_ISa.mjs.map +1 -0
- package/dist/{patterns-DsUZ4uxI.mjs → patterns-CqG5Ya3i.mjs} +54 -2
- package/dist/{patterns-DsUZ4uxI.mjs.map → patterns-CqG5Ya3i.mjs.map} +1 -1
- package/dist/{placeholder-CDPtkelt.d.mts → placeholder-D3cFCU9y.d.mts} +2 -1
- package/dist/{placeholder-CDPtkelt.d.mts.map → placeholder-D3cFCU9y.d.mts.map} +1 -1
- package/dist/placeholder-LqmHqvBw.mjs +143 -0
- package/dist/placeholder-LqmHqvBw.mjs.map +1 -0
- package/dist/plugin-types.d.mts +122 -0
- package/dist/plugin-types.d.mts.map +1 -0
- package/dist/plugin-types.mjs +1 -0
- package/dist/plugins/adapt-sandbox-entry.d.mts +20 -12
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.mjs +46 -23
- package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
- package/dist/preview-C1LOEbWZ.mjs +107 -0
- package/dist/preview-C1LOEbWZ.mjs.map +1 -0
- package/dist/{public-url-B1AxbbbQ.mjs → public-url-CseXl9Fv.mjs} +39 -2
- package/dist/{public-url-B1AxbbbQ.mjs.map → public-url-CseXl9Fv.mjs.map} +1 -1
- package/dist/{query-yA3-rFji.mjs → query-axZmO6Tn.mjs} +12 -12
- package/dist/{query-yA3-rFji.mjs.map → query-axZmO6Tn.mjs.map} +1 -1
- package/dist/rate-limit-t5CVjCO6.mjs +120 -0
- package/dist/rate-limit-t5CVjCO6.mjs.map +1 -0
- package/dist/redirect-DGRsLO2I.mjs +17 -0
- package/dist/redirect-DGRsLO2I.mjs.map +1 -0
- package/dist/{redirect-C5H7VGIX.mjs → redirect-DkaDxq8e.mjs} +3 -3
- package/dist/{redirect-C5H7VGIX.mjs.map → redirect-DkaDxq8e.mjs.map} +1 -1
- package/dist/redirects-D1fdd68T.mjs +573 -0
- package/dist/redirects-D1fdd68T.mjs.map +1 -0
- package/dist/redirects-Dmj6KRU3.mjs +1141 -0
- package/dist/redirects-Dmj6KRU3.mjs.map +1 -0
- package/dist/{registry-Do34mz_P.mjs → registry-BnCeHYsf.mjs} +8 -300
- package/dist/registry-BnCeHYsf.mjs.map +1 -0
- package/dist/{request-cache-D4I69LeL.mjs → request-cache-dzCt8TZB.mjs} +1 -1
- package/dist/{request-cache-D4I69LeL.mjs.map → request-cache-dzCt8TZB.mjs.map} +1 -1
- package/dist/request-meta-CLCwSQOS.mjs +140 -0
- package/dist/request-meta-CLCwSQOS.mjs.map +1 -0
- package/dist/{runner-Iu3IZSDM.d.mts → runner-DcfZewkO.d.mts} +2 -2
- package/dist/{runner-Iu3IZSDM.d.mts.map → runner-DcfZewkO.d.mts.map} +1 -1
- package/dist/{runner-DIcU2UCC.mjs → runner-DdnQIwz_.mjs} +436 -187
- package/dist/runner-DdnQIwz_.mjs.map +1 -0
- package/dist/runtime.d.mts +10 -6
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +3 -3
- package/dist/schema-BmqagCwG.mjs +41 -0
- package/dist/schema-BmqagCwG.mjs.map +1 -0
- package/dist/search-CPrvO5u8.mjs +376 -0
- package/dist/search-CPrvO5u8.mjs.map +1 -0
- package/dist/{secrets-CZ8rxLX3.mjs → secrets-6pgZyq0K.mjs} +3 -3
- package/dist/{secrets-CZ8rxLX3.mjs.map → secrets-6pgZyq0K.mjs.map} +1 -1
- package/dist/sections-Cm-zb-gZ.mjs +346 -0
- package/dist/sections-Cm-zb-gZ.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +19 -15
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo-BoR4wCUh.mjs +86 -0
- package/dist/seo-BoR4wCUh.mjs.map +1 -0
- package/dist/seo-DRq9-EPP.mjs +130 -0
- package/dist/seo-DRq9-EPP.mjs.map +1 -0
- package/dist/service-vByySp-2.mjs +195 -0
- package/dist/service-vByySp-2.mjs.map +1 -0
- package/dist/settings-CBBj7HUd.mjs +51 -0
- package/dist/settings-CBBj7HUd.mjs.map +1 -0
- package/dist/settings-xQKsWnzQ.mjs +235 -0
- package/dist/settings-xQKsWnzQ.mjs.map +1 -0
- package/dist/setup-BGAJ2uXs.mjs +137 -0
- package/dist/setup-BGAJ2uXs.mjs.map +1 -0
- package/dist/setup-complete-C6ZCLhKo.mjs +26 -0
- package/dist/setup-complete-C6ZCLhKo.mjs.map +1 -0
- package/dist/setup-nonce-CY1gQiAU.mjs +25 -0
- package/dist/setup-nonce-CY1gQiAU.mjs.map +1 -0
- package/dist/site-url-D-M4Fd8O.mjs +13 -0
- package/dist/site-url-D-M4Fd8O.mjs.map +1 -0
- package/dist/slugify-Cjh1ssOZ.mjs +30 -0
- package/dist/slugify-Cjh1ssOZ.mjs.map +1 -0
- package/dist/ssrf-CTul4uQi.mjs +1 -0
- package/dist/ssrf-DzFN_qV-.mjs +332 -0
- package/dist/ssrf-DzFN_qV-.mjs.map +1 -0
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +1 -1
- package/dist/{taxonomies-JmQQZiG1.mjs → taxonomies-Cn9UpaR2.mjs} +7 -7
- package/dist/{taxonomies-JmQQZiG1.mjs.map → taxonomies-Cn9UpaR2.mjs.map} +1 -1
- package/dist/taxonomies-Dc0mzlms.mjs +508 -0
- package/dist/taxonomies-Dc0mzlms.mjs.map +1 -0
- package/dist/{taxonomy-D6NvlKo8.mjs → taxonomy-wPfusMK9.mjs} +3 -3
- package/dist/{taxonomy-D6NvlKo8.mjs.map → taxonomy-wPfusMK9.mjs.map} +1 -1
- package/dist/{tokens-CyRDPVW2.mjs → tokens-DILYNZMi.mjs} +2 -2
- package/dist/{tokens-CyRDPVW2.mjs.map → tokens-DILYNZMi.mjs.map} +1 -1
- package/dist/{transaction-D44LBXvU.mjs → transaction-NQj4VJ7Z.mjs} +1 -1
- package/dist/{transaction-D44LBXvU.mjs.map → transaction-NQj4VJ7Z.mjs.map} +1 -1
- package/dist/{transport-DX_5rpsq.d.mts → transport-GeXlLscf.d.mts} +1 -1
- package/dist/{transport-DX_5rpsq.d.mts.map → transport-GeXlLscf.d.mts.map} +1 -1
- package/dist/{transport-xpzIjCIB.mjs → transport-fw-mKJzT.mjs} +1 -1
- package/dist/{transport-xpzIjCIB.mjs.map → transport-fw-mKJzT.mjs.map} +1 -1
- package/dist/trusted-proxy-CJhQIk65.mjs +51 -0
- package/dist/trusted-proxy-CJhQIk65.mjs.map +1 -0
- package/dist/{types-DgSc9Rpc.d.mts → types-B05e2naf.d.mts} +5 -59
- package/dist/types-B05e2naf.d.mts.map +1 -0
- package/dist/{types-B1gLSAH2.d.mts → types-BWhaSS7U.d.mts} +2 -75
- package/dist/types-BWhaSS7U.d.mts.map +1 -0
- package/dist/{types-BQx6ZXpR.d.mts → types-C1KKK4VP.d.mts} +3 -1
- package/dist/{types-BQx6ZXpR.d.mts.map → types-C1KKK4VP.d.mts.map} +1 -1
- package/dist/types-Cb2UCDJg.d.mts +345 -0
- package/dist/types-Cb2UCDJg.d.mts.map +1 -0
- package/dist/{types-BIgulNsW.mjs → types-CwXMEPRr.mjs} +10 -3
- package/dist/types-CwXMEPRr.mjs.map +1 -0
- package/dist/{types-B_CXXnzh.d.mts → types-CzvJd1ND.d.mts} +7 -1
- package/dist/{types-B_CXXnzh.d.mts.map → types-CzvJd1ND.d.mts.map} +1 -1
- package/dist/types-DFowNO60.d.mts +198 -0
- package/dist/types-DFowNO60.d.mts.map +1 -0
- package/dist/{types-56BKbld_.mjs → types-DSZl1Dsv.mjs} +1 -1
- package/dist/{types-56BKbld_.mjs.map → types-DSZl1Dsv.mjs.map} +1 -1
- package/dist/types-DW1l0gCv.d.mts +75 -0
- package/dist/types-DW1l0gCv.d.mts.map +1 -0
- package/dist/types-Db67HHlU.mjs +3 -0
- package/dist/{types-C-aFbqmA.d.mts → types-DmxPPXGf.d.mts} +1 -1
- package/dist/{types-C-aFbqmA.d.mts.map → types-DmxPPXGf.d.mts.map} +1 -1
- package/dist/{types-PafqtQuM.mjs → types-Dz9CGX_d.mjs} +1 -1
- package/dist/{types-PafqtQuM.mjs.map → types-Dz9CGX_d.mjs.map} +1 -1
- package/dist/user-Dr1bOCqS.mjs +155 -0
- package/dist/user-Dr1bOCqS.mjs.map +1 -0
- package/dist/utils-_F-rWBTN.mjs +286 -0
- package/dist/utils-_F-rWBTN.mjs.map +1 -0
- package/dist/{validate-BcC3m2O7.d.mts → validate-BpQGsmd7.d.mts} +5 -4
- package/dist/validate-BpQGsmd7.d.mts.map +1 -0
- package/dist/{validate-UK4Ja1uo.mjs → validate-DlFxcVVK.mjs} +3 -3
- package/dist/{validate-UK4Ja1uo.mjs.map → validate-DlFxcVVK.mjs.map} +1 -1
- package/dist/{validation-Vc5DQkJa.mjs → validation-BiFJqUp5.mjs} +6 -5
- package/dist/{validation-Vc5DQkJa.mjs.map → validation-BiFJqUp5.mjs.map} +1 -1
- package/dist/version-Dw7Z5PVU.mjs +7 -0
- package/dist/{version-BdP--J1g.mjs.map → version-Dw7Z5PVU.mjs.map} +1 -1
- package/dist/widgets-B9j_yzlk.mjs +106 -0
- package/dist/widgets-B9j_yzlk.mjs.map +1 -0
- package/dist/zod-generator-DSyz01KE.mjs +234 -0
- package/dist/zod-generator-DSyz01KE.mjs.map +1 -0
- package/locals.d.ts +1 -1
- package/package.json +37 -14
- package/src/api/handlers/content.ts +1 -0
- package/src/api/handlers/index.ts +7 -0
- package/src/api/handlers/marketplace.ts +27 -6
- package/src/api/handlers/menus.ts +157 -580
- package/src/api/handlers/plugins.ts +77 -31
- package/src/api/handlers/registry.ts +1086 -0
- package/src/api/openapi/document.ts +10 -4
- package/src/api/schemas/content.ts +1 -0
- package/src/api/schemas/menus.ts +27 -23
- package/src/api/types.ts +6 -0
- package/src/astro/integration/index.ts +1 -0
- package/src/astro/integration/route-naming.ts +19 -0
- package/src/astro/integration/routes.ts +25 -3
- package/src/astro/integration/runtime.ts +35 -8
- package/src/astro/middleware/auth.ts +8 -2
- package/src/astro/middleware/csp.ts +25 -3
- package/src/astro/middleware.ts +3 -0
- package/src/astro/routes/api/admin/plugins/[id]/enable.ts +10 -0
- package/src/astro/routes/api/admin/plugins/registry/install.ts +107 -0
- package/src/astro/routes/api/auth/invite/register-options.ts +8 -1
- package/src/astro/routes/api/import/wordpress/execute.ts +185 -6
- package/src/astro/routes/api/menus/[name]/items/[id].ts +69 -0
- package/src/astro/routes/api/menus/[name]/items.ts +4 -65
- package/src/astro/types.ts +38 -0
- package/src/cli/wxr/parser.ts +263 -0
- package/src/client/index.ts +2 -1
- package/src/database/migrations/036_i18n_menus_and_taxonomies.ts +166 -49
- package/src/database/migrations/038_registry_plugin_state.ts +130 -0
- package/src/database/migrations/039_fix_fts5_triggers.ts +264 -0
- package/src/database/migrations/runner.ts +4 -0
- package/src/database/repositories/content.ts +5 -1
- package/src/database/repositories/index.ts +14 -0
- package/src/database/repositories/menu.ts +644 -0
- package/src/database/repositories/types.ts +6 -0
- package/src/database/types.ts +5 -1
- package/src/emdash-runtime.ts +122 -34
- package/src/import/sources/wordpress-plugin.ts +9 -2
- package/src/import/sources/wxr.ts +16 -2
- package/src/import/ssrf.ts +20 -500
- package/src/import/wxr-taxonomies.ts +730 -0
- package/src/index.ts +3 -10
- package/src/media/normalize.ts +37 -4
- package/src/plugin-types.ts +240 -0
- package/src/plugins/adapt-sandbox-entry.ts +115 -39
- package/src/plugins/define-plugin.ts +34 -56
- package/src/plugins/index.ts +1 -9
- package/src/plugins/marketplace.ts +63 -4
- package/src/plugins/sandbox/index.ts +1 -1
- package/src/plugins/sandbox/noop.ts +2 -2
- package/src/plugins/sandbox/types.ts +7 -4
- package/src/plugins/state.ts +84 -38
- package/src/plugins/types.ts +2 -79
- package/src/registry/config.ts +311 -0
- package/src/registry/plugin-id.ts +116 -0
- package/src/registry/types.ts +206 -0
- package/src/search/fts-manager.ts +77 -15
- package/src/security/ssrf.ts +501 -0
- package/dist/apply-C1ZORgcy.mjs.map +0 -1
- package/dist/content-CERxPUN0.mjs.map +0 -1
- package/dist/error-D6LuHLw9.mjs +0 -27
- package/dist/error-D6LuHLw9.mjs.map +0 -1
- package/dist/index-Dlkzhb4C.d.mts.map +0 -1
- package/dist/placeholder-Ci0RLeCk.mjs +0 -268
- package/dist/placeholder-Ci0RLeCk.mjs.map +0 -1
- package/dist/registry-Do34mz_P.mjs.map +0 -1
- package/dist/runner-DIcU2UCC.mjs.map +0 -1
- package/dist/search-n-ZCMfr3.mjs +0 -9914
- package/dist/search-n-ZCMfr3.mjs.map +0 -1
- package/dist/settings-nTXPRi3D.mjs +0 -440
- package/dist/settings-nTXPRi3D.mjs.map +0 -1
- package/dist/types-B1gLSAH2.d.mts.map +0 -1
- package/dist/types-BIgulNsW.mjs.map +0 -1
- package/dist/types-Cug_RO3W.mjs +0 -16
- package/dist/types-Cug_RO3W.mjs.map +0 -1
- package/dist/types-DgSc9Rpc.d.mts.map +0 -1
- package/dist/validate-BcC3m2O7.d.mts.map +0 -1
- package/dist/version-BdP--J1g.mjs +0 -7
- package/dist/zod-generator-CHnJUP2l.mjs +0 -137
- package/dist/zod-generator-CHnJUP2l.mjs.map +0 -1
package/src/cli/wxr/parser.ts
CHANGED
|
@@ -75,7 +75,202 @@ export interface WxrPost {
|
|
|
75
75
|
tags: string[];
|
|
76
76
|
/** Custom taxonomy assignments beyond categories/tags */
|
|
77
77
|
customTaxonomies?: Map<string, string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Display labels for per-item category/tag/custom-taxonomy assignments,
|
|
80
|
+
* captured from `<category domain="..." nicename="...">Label</category>`
|
|
81
|
+
* text content. Used by the importer to back-fill term labels when a
|
|
82
|
+
* `<wp:category>` or `<wp:tag>` block wasn't present at the top of the
|
|
83
|
+
* WXR (older / hand-edited exports). Keyed by
|
|
84
|
+
* `${normalisedTaxonomy}\u0000${slug}` so categories and tags don't
|
|
85
|
+
* collide.
|
|
86
|
+
*/
|
|
87
|
+
taxonomyLabels?: Map<string, string>;
|
|
78
88
|
meta: Map<string, string>;
|
|
89
|
+
/**
|
|
90
|
+
* BCP 47 locale code extracted from a detected multilingual plugin
|
|
91
|
+
* (WPML's `_icl_lang_code` or Polylang's per-post language taxonomy).
|
|
92
|
+
* Absent when no per-post locale could be determined.
|
|
93
|
+
*/
|
|
94
|
+
locale?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Source-side translation group ID extracted from a detected multilingual
|
|
97
|
+
* plugin (WPML's `trid` / `_icl_translation_id`, or a synthesized id derived
|
|
98
|
+
* from Polylang's `_translations` meta). Posts sharing a `translationGroup`
|
|
99
|
+
* are translations of one another. The string is opaque -- consumers use it
|
|
100
|
+
* only as a key to link posts.
|
|
101
|
+
*/
|
|
102
|
+
translationGroup?: string;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* WPML stores per-post language in postmeta as `_icl_lang_code`. The shared
|
|
107
|
+
* translation id is `trid` (this is the group ID -- every translation of the
|
|
108
|
+
* same content shares it). `_icl_translation_id` exists on some exports too
|
|
109
|
+
* but is a per-translation row id from `wp_icl_translations`, NOT the group
|
|
110
|
+
* id, so it must NOT be used as the group key. We accept it only when `trid`
|
|
111
|
+
* is absent and trust the export to be internally consistent (the only case
|
|
112
|
+
* where that's reasonable is single-post exports with no real grouping).
|
|
113
|
+
*
|
|
114
|
+
* See `wpml_element_trid` in the WPML hook docs: "the ID of the translation
|
|
115
|
+
* group".
|
|
116
|
+
*/
|
|
117
|
+
const WPML_LOCALE_META_KEYS = ["_icl_lang_code"] as const;
|
|
118
|
+
const WPML_TRID_META_KEYS = ["trid", "_icl_translation_id"] as const;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Polylang stores per-post language in postmeta as `_locale` on newer
|
|
122
|
+
* exports. The actual language taxonomy assignment lives on
|
|
123
|
+
* `customTaxonomies.language`, which we use as a fallback. Translation
|
|
124
|
+
* grouping is encoded in `_translations` as a serialized PHP map of
|
|
125
|
+
* `{ lang_code => post_id }`; we synthesize a stable group key from the
|
|
126
|
+
* sorted IDs so every member of the group resolves to the same string.
|
|
127
|
+
*/
|
|
128
|
+
const POLYLANG_LOCALE_META_KEY = "_locale";
|
|
129
|
+
const POLYLANG_TRANSLATIONS_META_KEY = "_translations";
|
|
130
|
+
const POLYLANG_LANG_TAXONOMY = "language";
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Extract a list of post-IDs from Polylang's `_translations` PHP-serialized
|
|
134
|
+
* value. The format we care about is roughly:
|
|
135
|
+
*
|
|
136
|
+
* a:2:{s:2:"en";i:1;s:2:"ar";i:7;}
|
|
137
|
+
*
|
|
138
|
+
* We don't need to round-trip the PHP value -- we just need a stable group
|
|
139
|
+
* key shared by every translation of the same content. Concatenating the
|
|
140
|
+
* sorted IDs gives us exactly that: every post in the group derives the
|
|
141
|
+
* same key from its own copy of `_translations`.
|
|
142
|
+
*
|
|
143
|
+
* Naïve `/i:(\d+);/g` would also match `i:N;` literals embedded INSIDE
|
|
144
|
+
* string values (e.g. `s:11:"i:42;hello";`), which would silently corrupt
|
|
145
|
+
* the group key. We walk the serialized blob token-by-token instead.
|
|
146
|
+
*
|
|
147
|
+
* PHP serializes `s:LEN:"..."` with LEN counted in BYTES, not characters
|
|
148
|
+
* (UTF-8 byte length). JS string positions are UTF-16 code units, so we
|
|
149
|
+
* encode to bytes via `TextEncoder` and walk byte offsets. Single-byte-only
|
|
150
|
+
* inputs (the common case for Polylang's `_translations` which only stores
|
|
151
|
+
* ASCII locale codes) take the same path; the encoder is cheap.
|
|
152
|
+
*/
|
|
153
|
+
function polylangTranslationGroupFromMeta(serialized: string): string | undefined {
|
|
154
|
+
// Operate on the UTF-8 byte view so `s:LEN:` advances the right number
|
|
155
|
+
// of bytes when the payload contains multibyte characters.
|
|
156
|
+
const encoder = new TextEncoder();
|
|
157
|
+
const bytes = encoder.encode(serialized);
|
|
158
|
+
const decoder = new TextDecoder("utf-8");
|
|
159
|
+
|
|
160
|
+
const ids: number[] = [];
|
|
161
|
+
let i = 0;
|
|
162
|
+
const n = bytes.length;
|
|
163
|
+
const CHAR_S = 0x73; // 's'
|
|
164
|
+
const CHAR_I = 0x69; // 'i'
|
|
165
|
+
const CHAR_COLON = 0x3a; // ':'
|
|
166
|
+
const CHAR_SEMI = 0x3b; // ';'
|
|
167
|
+
const CHAR_QUOTE = 0x22; // '"'
|
|
168
|
+
|
|
169
|
+
const indexOf = (byte: number, from: number): number => {
|
|
170
|
+
for (let k = from; k < n; k++) {
|
|
171
|
+
if (bytes[k] === byte) return k;
|
|
172
|
+
}
|
|
173
|
+
return -1;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
while (i < n) {
|
|
177
|
+
const ch = bytes[i];
|
|
178
|
+
if (ch === CHAR_S && bytes[i + 1] === CHAR_COLON) {
|
|
179
|
+
// s:LEN:"..."; — skip the entire string value: the LEN digits,
|
|
180
|
+
// the opening quote, the payload of exactly LEN bytes, the
|
|
181
|
+
// closing quote, and the trailing semicolon.
|
|
182
|
+
const lenStart = i + 2;
|
|
183
|
+
const lenEnd = indexOf(CHAR_COLON, lenStart);
|
|
184
|
+
if (lenEnd === -1) break;
|
|
185
|
+
const lenText = decoder.decode(bytes.slice(lenStart, lenEnd));
|
|
186
|
+
const len = Number.parseInt(lenText, 10);
|
|
187
|
+
if (!Number.isFinite(len) || len < 0) {
|
|
188
|
+
i = lenEnd + 1;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
// lenEnd+1 should be `"`. Defensively check before advancing
|
|
192
|
+
// over the payload -- a malformed input shouldn't crash the
|
|
193
|
+
// import; just skip past this token.
|
|
194
|
+
if (bytes[lenEnd + 1] !== CHAR_QUOTE) {
|
|
195
|
+
i = lenEnd + 1;
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const payloadStart = lenEnd + 2;
|
|
199
|
+
const afterPayload = payloadStart + len;
|
|
200
|
+
// afterPayload should point at the closing `"`; +2 past `";`.
|
|
201
|
+
i = afterPayload + 2;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (ch === CHAR_I && bytes[i + 1] === CHAR_COLON) {
|
|
205
|
+
const valStart = i + 2;
|
|
206
|
+
const valEnd = indexOf(CHAR_SEMI, valStart);
|
|
207
|
+
if (valEnd === -1) break;
|
|
208
|
+
const idText = decoder.decode(bytes.slice(valStart, valEnd));
|
|
209
|
+
const id = Number.parseInt(idText, 10);
|
|
210
|
+
if (Number.isFinite(id)) ids.push(id);
|
|
211
|
+
i = valEnd + 1;
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
// Any other token (a:LEN:{...}, b:0;, N;, {, }, :, ;, etc.) -- just
|
|
215
|
+
// advance one byte. We only care about integer literals; everything
|
|
216
|
+
// else is structural.
|
|
217
|
+
i++;
|
|
218
|
+
}
|
|
219
|
+
if (ids.length === 0) return undefined;
|
|
220
|
+
const sorted = [...new Set(ids)].toSorted((a, b) => a - b);
|
|
221
|
+
return `pll:${sorted.join(",")}`;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Promote multilingual-plugin metadata from `post.meta` and
|
|
226
|
+
* `post.customTaxonomies` into `post.locale` / `post.translationGroup`.
|
|
227
|
+
*
|
|
228
|
+
* Called once per `<item>` after all of its `<wp:postmeta>` and per-item
|
|
229
|
+
* `<category>` entries have been parsed. Safe to call on posts that have no
|
|
230
|
+
* multilingual metadata -- it's a no-op in that case.
|
|
231
|
+
*
|
|
232
|
+
* WPML wins over Polylang when both are present (they shouldn't co-exist on
|
|
233
|
+
* the same site, but defensive precedence avoids ambiguity).
|
|
234
|
+
*/
|
|
235
|
+
function promoteI18nMetadata(post: WxrPost): void {
|
|
236
|
+
// WPML
|
|
237
|
+
for (const key of WPML_LOCALE_META_KEYS) {
|
|
238
|
+
const value = post.meta.get(key);
|
|
239
|
+
if (value) {
|
|
240
|
+
post.locale = value;
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
for (const key of WPML_TRID_META_KEYS) {
|
|
245
|
+
const value = post.meta.get(key);
|
|
246
|
+
if (value) {
|
|
247
|
+
post.translationGroup = `wpml:${value}`;
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Polylang fallbacks (only fill what WPML didn't already provide)
|
|
253
|
+
if (!post.locale) {
|
|
254
|
+
const pllLocale = post.meta.get(POLYLANG_LOCALE_META_KEY);
|
|
255
|
+
if (pllLocale) {
|
|
256
|
+
post.locale = pllLocale;
|
|
257
|
+
} else {
|
|
258
|
+
// Polylang's primary language signal is a taxonomy assignment
|
|
259
|
+
// on the `language` custom taxonomy. The nicename is the locale
|
|
260
|
+
// code (e.g. "en", "ar").
|
|
261
|
+
const langTaxonomy = post.customTaxonomies?.get(POLYLANG_LANG_TAXONOMY);
|
|
262
|
+
const firstLang = langTaxonomy?.[0];
|
|
263
|
+
if (firstLang) post.locale = firstLang;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (!post.translationGroup) {
|
|
268
|
+
const pllTranslations = post.meta.get(POLYLANG_TRANSLATIONS_META_KEY);
|
|
269
|
+
if (pllTranslations) {
|
|
270
|
+
const group = polylangTranslationGroupFromMeta(pllTranslations);
|
|
271
|
+
if (group) post.translationGroup = group;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
79
274
|
}
|
|
80
275
|
|
|
81
276
|
export interface WxrAttachment {
|
|
@@ -156,6 +351,32 @@ function attrStr(attr: string | { value: string } | undefined): string {
|
|
|
156
351
|
return "";
|
|
157
352
|
}
|
|
158
353
|
|
|
354
|
+
/**
|
|
355
|
+
* Normalise a `<category domain="...">` value to the matching EmDash
|
|
356
|
+
* taxonomy name so per-item label captures can be retrieved later using
|
|
357
|
+
* the same key.
|
|
358
|
+
*/
|
|
359
|
+
function normaliseDomain(domain: string): string {
|
|
360
|
+
if (domain === "post_tag") return "tag";
|
|
361
|
+
return domain;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Persist the human label of a `<category>` text body keyed by the
|
|
366
|
+
* normalised `(taxonomy, slug)` pair. Skips trivial labels that equal the
|
|
367
|
+
* slug (no information vs. just storing the slug).
|
|
368
|
+
*/
|
|
369
|
+
function captureItemCategoryLabel(
|
|
370
|
+
item: WxrPost,
|
|
371
|
+
pair: { domain: string; nicename: string },
|
|
372
|
+
label: string,
|
|
373
|
+
): void {
|
|
374
|
+
if (!label || label === pair.nicename) return;
|
|
375
|
+
if (!item.taxonomyLabels) item.taxonomyLabels = new Map();
|
|
376
|
+
const key = `${normaliseDomain(pair.domain)}\u0000${pair.nicename}`;
|
|
377
|
+
if (!item.taxonomyLabels.has(key)) item.taxonomyLabels.set(key, label);
|
|
378
|
+
}
|
|
379
|
+
|
|
159
380
|
/** Type guard for complete WxrTerm (all required fields present) */
|
|
160
381
|
function isCompleteWxrTerm(term: Partial<WxrTerm>): term is WxrTerm {
|
|
161
382
|
return (
|
|
@@ -194,6 +415,11 @@ export function parseWxr(stream: Readable): Promise<WxrData> {
|
|
|
194
415
|
let currentAuthor: WxrAuthor | null = null;
|
|
195
416
|
let currentTerm: Partial<WxrTerm> | null = null;
|
|
196
417
|
let currentMetaKey = "";
|
|
418
|
+
// Per-item category element currently open. Captured at opentag so
|
|
419
|
+
// we can pair the text body (the human label) with the slug when
|
|
420
|
+
// closetag fires. WXR per-item category elements look like:
|
|
421
|
+
// <category domain="category" nicename="hello-world">Hello World</category>
|
|
422
|
+
let pendingItemCategory: { domain: string; nicename: string } | null = null;
|
|
197
423
|
|
|
198
424
|
// Track nav_menu_item posts for post-processing
|
|
199
425
|
const navMenuItemPosts: WxrPost[] = [];
|
|
@@ -229,8 +455,10 @@ export function parseWxr(stream: Readable): Promise<WxrData> {
|
|
|
229
455
|
const nicename = attrStr(node.attributes.nicename);
|
|
230
456
|
if (domain === "category" && nicename) {
|
|
231
457
|
currentItem.categories.push(nicename);
|
|
458
|
+
pendingItemCategory = { domain, nicename };
|
|
232
459
|
} else if (domain === "post_tag" && nicename) {
|
|
233
460
|
currentItem.tags.push(nicename);
|
|
461
|
+
pendingItemCategory = { domain, nicename };
|
|
234
462
|
} else if (domain && nicename && domain !== "category" && domain !== "post_tag") {
|
|
235
463
|
// Custom taxonomy (including nav_menu)
|
|
236
464
|
if (!currentItem.customTaxonomies) {
|
|
@@ -239,6 +467,7 @@ export function parseWxr(stream: Readable): Promise<WxrData> {
|
|
|
239
467
|
const existing = currentItem.customTaxonomies.get(domain) || [];
|
|
240
468
|
existing.push(nicename);
|
|
241
469
|
currentItem.customTaxonomies.set(domain, existing);
|
|
470
|
+
pendingItemCategory = { domain, nicename };
|
|
242
471
|
}
|
|
243
472
|
}
|
|
244
473
|
});
|
|
@@ -369,6 +598,18 @@ export function parseWxr(stream: Readable): Promise<WxrData> {
|
|
|
369
598
|
};
|
|
370
599
|
}
|
|
371
600
|
break;
|
|
601
|
+
case "category":
|
|
602
|
+
// Per-item category text body = the human label for
|
|
603
|
+
// the term (`<category nicename="hello-world">Hello
|
|
604
|
+
// World</category>`). Backfilling from per-item
|
|
605
|
+
// elements (older / hand-edited exports without top-
|
|
606
|
+
// level `<wp:category>` blocks) lands the right label
|
|
607
|
+
// instead of slug-cased nonsense.
|
|
608
|
+
if (pendingItemCategory && text) {
|
|
609
|
+
captureItemCategoryLabel(currentItem, pendingItemCategory, text);
|
|
610
|
+
}
|
|
611
|
+
pendingItemCategory = null;
|
|
612
|
+
break;
|
|
372
613
|
case "item":
|
|
373
614
|
// End of item - categorize and store
|
|
374
615
|
if (currentAttachment) {
|
|
@@ -379,6 +620,10 @@ export function parseWxr(stream: Readable): Promise<WxrData> {
|
|
|
379
620
|
navMenuItemPosts.push(currentItem);
|
|
380
621
|
data.posts.push(currentItem);
|
|
381
622
|
} else if (currentItem.postType !== "attachment") {
|
|
623
|
+
// Promote multilingual plugin metadata before storing.
|
|
624
|
+
// All postmeta and per-item categories are parsed by the time
|
|
625
|
+
// the closing </item> tag fires, so it's safe to inspect them.
|
|
626
|
+
promoteI18nMetadata(currentItem);
|
|
382
627
|
// Store all non-attachment post types (posts, pages, custom post types)
|
|
383
628
|
data.posts.push(currentItem);
|
|
384
629
|
}
|
|
@@ -551,6 +796,9 @@ export function parseWxrString(xml: string): Promise<WxrData> {
|
|
|
551
796
|
let currentAuthor: WxrAuthor | null = null;
|
|
552
797
|
let currentTerm: Partial<WxrTerm> | null = null;
|
|
553
798
|
let currentMetaKey = "";
|
|
799
|
+
// Per-item category element currently open (see streaming-parser
|
|
800
|
+
// counterpart above for rationale).
|
|
801
|
+
let pendingItemCategory: { domain: string; nicename: string } | null = null;
|
|
554
802
|
|
|
555
803
|
// Track nav_menu_item posts for post-processing
|
|
556
804
|
const navMenuItemPosts: WxrPost[] = [];
|
|
@@ -586,8 +834,10 @@ export function parseWxrString(xml: string): Promise<WxrData> {
|
|
|
586
834
|
const nicename = attrStr(node.attributes.nicename);
|
|
587
835
|
if (domain === "category" && nicename) {
|
|
588
836
|
currentItem.categories.push(nicename);
|
|
837
|
+
pendingItemCategory = { domain, nicename };
|
|
589
838
|
} else if (domain === "post_tag" && nicename) {
|
|
590
839
|
currentItem.tags.push(nicename);
|
|
840
|
+
pendingItemCategory = { domain, nicename };
|
|
591
841
|
} else if (domain && nicename && domain !== "category" && domain !== "post_tag") {
|
|
592
842
|
// Custom taxonomy (including nav_menu)
|
|
593
843
|
if (!currentItem.customTaxonomies) {
|
|
@@ -596,6 +846,7 @@ export function parseWxrString(xml: string): Promise<WxrData> {
|
|
|
596
846
|
const existing = currentItem.customTaxonomies.get(domain) || [];
|
|
597
847
|
existing.push(nicename);
|
|
598
848
|
currentItem.customTaxonomies.set(domain, existing);
|
|
849
|
+
pendingItemCategory = { domain, nicename };
|
|
599
850
|
}
|
|
600
851
|
}
|
|
601
852
|
};
|
|
@@ -728,6 +979,14 @@ export function parseWxrString(xml: string): Promise<WxrData> {
|
|
|
728
979
|
currentItem.meta.set(currentMetaKey, text);
|
|
729
980
|
}
|
|
730
981
|
break;
|
|
982
|
+
case "category":
|
|
983
|
+
// Per-item category text body = human label. See
|
|
984
|
+
// streaming-parser counterpart for rationale.
|
|
985
|
+
if (pendingItemCategory && text) {
|
|
986
|
+
captureItemCategoryLabel(currentItem, pendingItemCategory, text);
|
|
987
|
+
}
|
|
988
|
+
pendingItemCategory = null;
|
|
989
|
+
break;
|
|
731
990
|
case "item":
|
|
732
991
|
// End of item - categorize and store
|
|
733
992
|
if (currentAttachment) {
|
|
@@ -738,6 +997,10 @@ export function parseWxrString(xml: string): Promise<WxrData> {
|
|
|
738
997
|
navMenuItemPosts.push(currentItem);
|
|
739
998
|
data.posts.push(currentItem);
|
|
740
999
|
} else if (currentItem.postType !== "attachment") {
|
|
1000
|
+
// Promote multilingual plugin metadata before storing.
|
|
1001
|
+
// All postmeta and per-item categories are parsed by the time
|
|
1002
|
+
// the closing </item> tag fires, so it's safe to inspect them.
|
|
1003
|
+
promoteI18nMetadata(currentItem);
|
|
741
1004
|
data.posts.push(currentItem);
|
|
742
1005
|
}
|
|
743
1006
|
currentItem = null;
|
package/src/client/index.ts
CHANGED
|
@@ -737,10 +737,11 @@ export class EmDashClient {
|
|
|
737
737
|
if (options?.cursor) params.set("cursor", options.cursor);
|
|
738
738
|
|
|
739
739
|
const qs = params.toString();
|
|
740
|
-
|
|
740
|
+
const data = await this.request<{ terms: Term[] }>(
|
|
741
741
|
"GET",
|
|
742
742
|
`/taxonomies/${encodeURIComponent(taxonomy)}/terms${qs ? `?${qs}` : ""}`,
|
|
743
743
|
);
|
|
744
|
+
return { items: data.terms };
|
|
744
745
|
}
|
|
745
746
|
|
|
746
747
|
/** Create a taxonomy term */
|
|
@@ -20,18 +20,26 @@ export async function up(db: Kysely<unknown>): Promise<void> {
|
|
|
20
20
|
const defaultLocale = getDefaultLocale();
|
|
21
21
|
|
|
22
22
|
if (isSqlite(db)) {
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
23
|
+
// Rebuild children before parents to drop FKs that would CASCADE
|
|
24
|
+
// on D1. D1 enforces FKs but ignores `PRAGMA foreign_keys = OFF`
|
|
25
|
+
// (the standard SQLite escape), and its replacement
|
|
26
|
+
// `PRAGMA defer_foreign_keys = ON` only defers constraint
|
|
27
|
+
// validation, not CASCADE actions — so DROP TABLE <parent> still
|
|
28
|
+
// wipes child rows (#1021). The FKs have to be physically removed
|
|
29
|
+
// before the drop.
|
|
30
|
+
// - `content_taxonomies.taxonomy_id` → `taxonomies(id) ON DELETE CASCADE`
|
|
31
|
+
// - `_emdash_menu_items.menu_id` → `_emdash_menus(id) ON DELETE CASCADE`
|
|
32
|
+
// - `_emdash_menu_items.parent_id` → `_emdash_menu_items(id) ON DELETE CASCADE`
|
|
33
|
+
// Both FKs on `_emdash_menu_items` are stripped during the rebuild.
|
|
34
|
+
// The runtime (`MenuRepository.delete` / `setItems`) already
|
|
35
|
+
// performs the child-delete explicitly, so the loss of the cascade
|
|
36
|
+
// is invisible to callers.
|
|
37
|
+
await rebuildContentTaxonomies(db);
|
|
38
|
+
await rebuildMenuItems(db, defaultLocale);
|
|
39
|
+
await rebuildMenus(db, defaultLocale);
|
|
40
|
+
await rebuildTaxonomies(db, defaultLocale);
|
|
41
|
+
await rebuildTaxonomyDefs(db, defaultLocale);
|
|
42
|
+
await remapMenuItemRefs(db);
|
|
35
43
|
return;
|
|
36
44
|
}
|
|
37
45
|
|
|
@@ -79,17 +87,62 @@ async function rebuildMenus(db: Kysely<unknown>, defaultLocale: string): Promise
|
|
|
79
87
|
.execute();
|
|
80
88
|
}
|
|
81
89
|
|
|
82
|
-
async function
|
|
90
|
+
async function rebuildMenuItems(db: Kysely<unknown>, defaultLocale: string): Promise<void> {
|
|
91
|
+
// Full table rebuild rather than ALTER TABLE ADD COLUMN: this strips
|
|
92
|
+
// the `menu_id` and `parent_id` FKs from migration 005 so the
|
|
93
|
+
// subsequent `DROP TABLE _emdash_menus` can't cascade-wipe menu items
|
|
94
|
+
// on D1 (#1021). The FKs were never load-bearing at runtime — D1
|
|
95
|
+
// disables FK enforcement, and `MenuRepository` always deletes
|
|
96
|
+
// children explicitly. Mirrors `rebuildContentTaxonomies` below.
|
|
83
97
|
if (await hasColumn(db, "_emdash_menu_items", "locale")) return;
|
|
98
|
+
await sql.raw(`DROP TABLE IF EXISTS "_emdash_menu_items_new"`).execute(db);
|
|
84
99
|
|
|
85
100
|
await db.schema
|
|
86
|
-
.
|
|
101
|
+
.createTable("_emdash_menu_items_new")
|
|
102
|
+
.addColumn("id", "text", (c) => c.primaryKey())
|
|
103
|
+
.addColumn("menu_id", "text", (c) => c.notNull())
|
|
104
|
+
.addColumn("parent_id", "text")
|
|
105
|
+
.addColumn("sort_order", "integer", (c) => c.notNull().defaultTo(0))
|
|
106
|
+
.addColumn("type", "text", (c) => c.notNull())
|
|
107
|
+
.addColumn("reference_collection", "text")
|
|
108
|
+
.addColumn("reference_id", "text")
|
|
109
|
+
.addColumn("custom_url", "text")
|
|
110
|
+
.addColumn("label", "text", (c) => c.notNull())
|
|
111
|
+
.addColumn("title_attr", "text")
|
|
112
|
+
.addColumn("target", "text")
|
|
113
|
+
.addColumn("css_classes", "text")
|
|
114
|
+
.addColumn("created_at", "text", (c) => c.defaultTo(currentTimestamp(db)))
|
|
87
115
|
.addColumn("locale", "text", (c) => c.notNull().defaultTo(defaultLocale))
|
|
116
|
+
.addColumn("translation_group", "text")
|
|
88
117
|
.execute();
|
|
89
|
-
await db.schema.alterTable("_emdash_menu_items").addColumn("translation_group", "text").execute();
|
|
90
118
|
|
|
91
|
-
await sql`
|
|
119
|
+
await sql`
|
|
120
|
+
INSERT INTO _emdash_menu_items_new (
|
|
121
|
+
id, menu_id, parent_id, sort_order, type, reference_collection,
|
|
122
|
+
reference_id, custom_url, label, title_attr, target, css_classes,
|
|
123
|
+
created_at, locale, translation_group
|
|
124
|
+
)
|
|
125
|
+
SELECT
|
|
126
|
+
id, menu_id, parent_id, sort_order, type, reference_collection,
|
|
127
|
+
reference_id, custom_url, label, title_attr, target, css_classes,
|
|
128
|
+
created_at, ${defaultLocale}, id
|
|
129
|
+
FROM _emdash_menu_items
|
|
130
|
+
`.execute(db);
|
|
92
131
|
|
|
132
|
+
await db.schema.dropTable("_emdash_menu_items").execute();
|
|
133
|
+
await sql`ALTER TABLE _emdash_menu_items_new RENAME TO _emdash_menu_items`.execute(db);
|
|
134
|
+
|
|
135
|
+
// Indexes from migration 005 are dropped with the underlying table; recreate.
|
|
136
|
+
await db.schema
|
|
137
|
+
.createIndex("idx_menu_items_menu")
|
|
138
|
+
.on("_emdash_menu_items")
|
|
139
|
+
.columns(["menu_id", "sort_order"])
|
|
140
|
+
.execute();
|
|
141
|
+
await db.schema
|
|
142
|
+
.createIndex("idx_menu_items_parent")
|
|
143
|
+
.on("_emdash_menu_items")
|
|
144
|
+
.column("parent_id")
|
|
145
|
+
.execute();
|
|
93
146
|
await db.schema
|
|
94
147
|
.createIndex("idx__emdash_menu_items_locale")
|
|
95
148
|
.on("_emdash_menu_items")
|
|
@@ -118,8 +171,16 @@ async function rebuildTaxonomies(db: Kysely<unknown>, defaultLocale: string): Pr
|
|
|
118
171
|
.addColumn("locale", "text", (c) => c.notNull().defaultTo(defaultLocale))
|
|
119
172
|
.addColumn("translation_group", "text")
|
|
120
173
|
.addUniqueConstraint("taxonomies_name_slug_locale_unique", ["name", "slug", "locale"])
|
|
121
|
-
|
|
122
|
-
|
|
174
|
+
// Self-FK points at `taxonomies_new` (not `taxonomies`) so dropping
|
|
175
|
+
// the old table doesn't fire ON DELETE SET NULL against parent_id
|
|
176
|
+
// values on D1. SQLite's RENAME rewrites the FK target to the new
|
|
177
|
+
// name automatically.
|
|
178
|
+
.addForeignKeyConstraint(
|
|
179
|
+
"taxonomies_parent_fk",
|
|
180
|
+
["parent_id"],
|
|
181
|
+
"taxonomies_new",
|
|
182
|
+
["id"],
|
|
183
|
+
(cb) => cb.onDelete("set null"),
|
|
123
184
|
)
|
|
124
185
|
.execute();
|
|
125
186
|
|
|
@@ -181,8 +242,13 @@ async function rebuildTaxonomyDefs(db: Kysely<unknown>, defaultLocale: string):
|
|
|
181
242
|
}
|
|
182
243
|
|
|
183
244
|
async function rebuildContentTaxonomies(db: Kysely<unknown>): Promise<void> {
|
|
184
|
-
//
|
|
185
|
-
//
|
|
245
|
+
// Drops the FK so `taxonomy_id` can point at a translation_group rather
|
|
246
|
+
// than a row id. Runs before `rebuildTaxonomies` so the drop is safe on D1.
|
|
247
|
+
// No remap is needed here: `rebuildTaxonomies` later seeds `translation_group
|
|
248
|
+
// = id` for every preserved row, so the row-id values we copy resolve as
|
|
249
|
+
// translation_group references after the migration completes. This coupling
|
|
250
|
+
// is load-bearing — if the translation_group seed ever changes, this needs
|
|
251
|
+
// an explicit remap *after* `rebuildTaxonomies` runs.
|
|
186
252
|
const fks = await sql<{ id: number }>`PRAGMA foreign_key_list(content_taxonomies)`.execute(db);
|
|
187
253
|
if (fks.rows.length === 0) return;
|
|
188
254
|
|
|
@@ -197,15 +263,17 @@ async function rebuildContentTaxonomies(db: Kysely<unknown>): Promise<void> {
|
|
|
197
263
|
|
|
198
264
|
await sql`
|
|
199
265
|
INSERT OR IGNORE INTO content_taxonomies_new (collection, entry_id, taxonomy_id)
|
|
200
|
-
SELECT
|
|
201
|
-
(SELECT t.translation_group FROM taxonomies t WHERE t.id = ct.taxonomy_id),
|
|
202
|
-
ct.taxonomy_id
|
|
203
|
-
)
|
|
204
|
-
FROM content_taxonomies ct
|
|
266
|
+
SELECT collection, entry_id, taxonomy_id FROM content_taxonomies
|
|
205
267
|
`.execute(db);
|
|
206
268
|
|
|
207
269
|
await db.schema.dropTable("content_taxonomies").execute();
|
|
208
270
|
await sql`ALTER TABLE content_taxonomies_new RENAME TO content_taxonomies`.execute(db);
|
|
271
|
+
|
|
272
|
+
// SQLite drops indexes when the underlying table is dropped. Restore the
|
|
273
|
+
// taxonomy_id index from migration 015.
|
|
274
|
+
await sql`CREATE INDEX IF NOT EXISTS idx_content_taxonomies_term ON content_taxonomies(taxonomy_id)`.execute(
|
|
275
|
+
db,
|
|
276
|
+
);
|
|
209
277
|
}
|
|
210
278
|
|
|
211
279
|
async function remapMenuItemRefs(db: Kysely<unknown>): Promise<void> {
|
|
@@ -302,6 +370,34 @@ function validateSystemIdent(name: string): void {
|
|
|
302
370
|
if (!SYSTEM_IDENT.test(name)) throw new Error(`Invalid identifier: "${name}"`);
|
|
303
371
|
}
|
|
304
372
|
|
|
373
|
+
/**
|
|
374
|
+
* down() restores the FK on content_taxonomies. Rows whose taxonomy_id doesn't
|
|
375
|
+
* resolve to a (translation_group, defaultLocale) pair would fail the rebuild
|
|
376
|
+
* after other tables are already stripped — leaving the user mid-rollback.
|
|
377
|
+
* Surface dangling rows up front instead.
|
|
378
|
+
*/
|
|
379
|
+
async function assertContentTaxonomiesResolve(
|
|
380
|
+
db: Kysely<unknown>,
|
|
381
|
+
defaultLocale: string,
|
|
382
|
+
): Promise<void> {
|
|
383
|
+
const result = await sql<{ count: number | string }>`
|
|
384
|
+
SELECT COUNT(*) AS count FROM content_taxonomies ct
|
|
385
|
+
WHERE NOT EXISTS (
|
|
386
|
+
SELECT 1 FROM taxonomies t
|
|
387
|
+
WHERE t.translation_group = ct.taxonomy_id AND t.locale = ${defaultLocale}
|
|
388
|
+
)
|
|
389
|
+
`.execute(db);
|
|
390
|
+
const count = Number(result.rows[0]?.count ?? 0);
|
|
391
|
+
if (count > 0) {
|
|
392
|
+
throw new Error(
|
|
393
|
+
`Cannot revert migration 036_i18n_menus_and_taxonomies: ` +
|
|
394
|
+
`${count} row(s) in "content_taxonomies" reference a translation_group ` +
|
|
395
|
+
`with no row in "taxonomies" at locale="${defaultLocale}". ` +
|
|
396
|
+
`Clean up the dangling associations before rolling back.`,
|
|
397
|
+
);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
305
401
|
/**
|
|
306
402
|
* down() is destructive on multi-locale installs (dropping `locale` collapses
|
|
307
403
|
* translated rows onto an ambiguous unique key). Refuse to run when any row
|
|
@@ -331,6 +427,7 @@ async function assertSingleLocale(db: Kysely<unknown>, defaultLocale: string): P
|
|
|
331
427
|
export async function down(db: Kysely<unknown>): Promise<void> {
|
|
332
428
|
const defaultLocale = getDefaultLocale();
|
|
333
429
|
await assertSingleLocale(db, defaultLocale);
|
|
430
|
+
await assertContentTaxonomiesResolve(db, defaultLocale);
|
|
334
431
|
|
|
335
432
|
const widenedTables = [
|
|
336
433
|
"_emdash_menus",
|
|
@@ -340,23 +437,28 @@ export async function down(db: Kysely<unknown>): Promise<void> {
|
|
|
340
437
|
];
|
|
341
438
|
|
|
342
439
|
if (isSqlite(db)) {
|
|
343
|
-
//
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
await sql.raw(`DROP INDEX IF EXISTS idx_${t}_locale`).execute(db);
|
|
349
|
-
await sql.raw(`DROP INDEX IF EXISTS idx_${t}_translation_group`).execute(db);
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
await rebuildContentTaxonomiesDown(db, defaultLocale);
|
|
353
|
-
await rebuildMenusDown(db);
|
|
354
|
-
await rebuildMenuItemsDown(db);
|
|
355
|
-
await rebuildTaxonomiesDown(db);
|
|
356
|
-
await rebuildTaxonomyDefsDown(db);
|
|
357
|
-
} finally {
|
|
358
|
-
await sql.raw(`PRAGMA foreign_keys = ON`).execute(db);
|
|
440
|
+
// Indexes first: the locale index on _emdash_menu_items would
|
|
441
|
+
// otherwise block its DROP COLUMN.
|
|
442
|
+
for (const t of widenedTables) {
|
|
443
|
+
await sql.raw(`DROP INDEX IF EXISTS idx_${t}_locale`).execute(db);
|
|
444
|
+
await sql.raw(`DROP INDEX IF EXISTS idx_${t}_translation_group`).execute(db);
|
|
359
445
|
}
|
|
446
|
+
|
|
447
|
+
// Remap content_taxonomies values back to row ids while `taxonomies`
|
|
448
|
+
// still has `translation_group` + `locale`. No FK is restored yet, so
|
|
449
|
+
// the subsequent DROP TABLE taxonomies can't cascade on D1 (#1021).
|
|
450
|
+
await remapContentTaxonomiesDown(db, defaultLocale);
|
|
451
|
+
// Menus first: safe because up() stripped the cascade FK from
|
|
452
|
+
// _emdash_menu_items.menu_id, so dropping _emdash_menus doesn't
|
|
453
|
+
// cascade. The FK from migration 005 is NOT restored on
|
|
454
|
+
// _emdash_menu_items: the runtime deletes children explicitly,
|
|
455
|
+
// so the only observable effect of the FK was the #1021 cascade
|
|
456
|
+
// we're trying to avoid.
|
|
457
|
+
await rebuildMenusDown(db);
|
|
458
|
+
await rebuildMenuItemsDown(db);
|
|
459
|
+
await rebuildTaxonomiesDown(db);
|
|
460
|
+
await rebuildTaxonomyDefsDown(db);
|
|
461
|
+
await restoreContentTaxonomiesFk(db);
|
|
360
462
|
return;
|
|
361
463
|
}
|
|
362
464
|
|
|
@@ -368,10 +470,24 @@ export async function down(db: Kysely<unknown>): Promise<void> {
|
|
|
368
470
|
}
|
|
369
471
|
}
|
|
370
472
|
|
|
371
|
-
async function
|
|
473
|
+
async function remapContentTaxonomiesDown(
|
|
372
474
|
db: Kysely<unknown>,
|
|
373
475
|
defaultLocale: string,
|
|
374
476
|
): Promise<void> {
|
|
477
|
+
// Map translation_group back to row id (assertSingleLocale guarantees 1:1)
|
|
478
|
+
// without restoring the FK — that happens after `taxonomies` is rebuilt.
|
|
479
|
+
await sql`
|
|
480
|
+
UPDATE content_taxonomies
|
|
481
|
+
SET taxonomy_id = COALESCE(
|
|
482
|
+
(SELECT t.id FROM taxonomies t
|
|
483
|
+
WHERE t.translation_group = content_taxonomies.taxonomy_id
|
|
484
|
+
AND t.locale = ${defaultLocale}),
|
|
485
|
+
taxonomy_id
|
|
486
|
+
)
|
|
487
|
+
`.execute(db);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
async function restoreContentTaxonomiesFk(db: Kysely<unknown>): Promise<void> {
|
|
375
491
|
await sql.raw(`DROP TABLE IF EXISTS "content_taxonomies_new"`).execute(db);
|
|
376
492
|
await db.schema
|
|
377
493
|
.createTable("content_taxonomies_new")
|
|
@@ -388,18 +504,17 @@ async function rebuildContentTaxonomiesDown(
|
|
|
388
504
|
)
|
|
389
505
|
.execute();
|
|
390
506
|
|
|
391
|
-
// Map translation_group back to a row id (assertSingleLocale guarantees a 1:1 match).
|
|
392
507
|
await sql`
|
|
393
508
|
INSERT OR IGNORE INTO content_taxonomies_new (collection, entry_id, taxonomy_id)
|
|
394
|
-
SELECT
|
|
395
|
-
(SELECT t.id FROM taxonomies t WHERE t.translation_group = ct.taxonomy_id AND t.locale = ${defaultLocale}),
|
|
396
|
-
ct.taxonomy_id
|
|
397
|
-
)
|
|
398
|
-
FROM content_taxonomies ct
|
|
509
|
+
SELECT collection, entry_id, taxonomy_id FROM content_taxonomies
|
|
399
510
|
`.execute(db);
|
|
400
511
|
|
|
401
512
|
await db.schema.dropTable("content_taxonomies").execute();
|
|
402
513
|
await sql`ALTER TABLE content_taxonomies_new RENAME TO content_taxonomies`.execute(db);
|
|
514
|
+
|
|
515
|
+
await sql`CREATE INDEX IF NOT EXISTS idx_content_taxonomies_term ON content_taxonomies(taxonomy_id)`.execute(
|
|
516
|
+
db,
|
|
517
|
+
);
|
|
403
518
|
}
|
|
404
519
|
|
|
405
520
|
async function rebuildMenusDown(db: Kysely<unknown>): Promise<void> {
|
|
@@ -421,7 +536,9 @@ async function rebuildMenusDown(db: Kysely<unknown>): Promise<void> {
|
|
|
421
536
|
}
|
|
422
537
|
|
|
423
538
|
async function rebuildMenuItemsDown(db: Kysely<unknown>): Promise<void> {
|
|
424
|
-
// No UNIQUE on (locale,…) here, so DROP COLUMN
|
|
539
|
+
// No UNIQUE on (locale,…) here, so DROP COLUMN suffices. The migration-005
|
|
540
|
+
// FKs are NOT restored: up() removed them to fix #1021, and the runtime
|
|
541
|
+
// already deletes child rows explicitly so the cascade isn't needed.
|
|
425
542
|
await sql.raw(`ALTER TABLE _emdash_menu_items DROP COLUMN locale`).execute(db);
|
|
426
543
|
await sql.raw(`ALTER TABLE _emdash_menu_items DROP COLUMN translation_group`).execute(db);
|
|
427
544
|
}
|