emdash 0.26.0 → 0.28.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-DAAjOID4.d.mts → adapters-hUy8vOB-.d.mts} +1 -1
- package/dist/{adapters-DAAjOID4.d.mts.map → adapters-hUy8vOB-.d.mts.map} +1 -1
- package/dist/{allowed-origins-D5FxMUo8.mjs → allowed-origins-CRsJ6BPM.mjs} +2 -2
- package/dist/{allowed-origins-D5FxMUo8.mjs.map → allowed-origins-CRsJ6BPM.mjs.map} +1 -1
- package/dist/api/route-utils.d.mts +3 -3
- package/dist/api/route-utils.mjs +17 -16
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +1 -1
- package/dist/api/schemas/index.mjs +3 -3
- package/dist/{api-BMfveMoB.mjs → api-BFURZn1i.mjs} +104 -38
- package/dist/api-BFURZn1i.mjs.map +1 -0
- package/dist/{api-tokens-D6ppjIVi.mjs → api-tokens-DvqeZmVq.mjs} +2 -2
- package/dist/{api-tokens-D6ppjIVi.mjs.map → api-tokens-DvqeZmVq.mjs.map} +1 -1
- package/dist/{apply--IVNSdXn.mjs → apply-Bu-8nYHL.mjs} +113 -76
- package/dist/apply-Bu-8nYHL.mjs.map +1 -0
- package/dist/astro/index.d.mts +12 -11
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +13 -5
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +10 -9
- package/dist/astro/middleware/auth.d.mts.map +1 -1
- package/dist/astro/middleware/auth.mjs +52 -12
- package/dist/astro/middleware/auth.mjs.map +1 -1
- package/dist/astro/middleware/redirect.mjs +5 -5
- package/dist/astro/middleware/request-context.mjs +2 -2
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +2 -9
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +125 -71
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +6 -6
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +6 -6
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +5 -5
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +8 -8
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +8 -8
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +8 -8
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +14 -14
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +14 -14
- package/dist/astro/routes/api/admin/bylines/index.mjs +14 -14
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +12 -12
- package/dist/astro/routes/api/admin/comments/_id_.mjs +6 -6
- package/dist/astro/routes/api/admin/comments/bulk.mjs +10 -10
- package/dist/astro/routes/api/admin/comments/counts.mjs +6 -6
- package/dist/astro/routes/api/admin/comments/index.mjs +10 -10
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +4 -4
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +38 -37
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +38 -37
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +37 -36
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +37 -36
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +3 -3
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +37 -36
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +37 -36
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +36 -35
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +36 -35
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +3 -3
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +36 -35
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +2 -2
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +6 -6
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
- package/dist/astro/routes/api/admin/users/index.mjs +6 -6
- package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
- package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
- package/dist/astro/routes/api/auth/invite/complete.mjs +10 -10
- package/dist/astro/routes/api/auth/invite/index.mjs +7 -7
- package/dist/astro/routes/api/auth/invite/register-options.mjs +9 -9
- package/dist/astro/routes/api/auth/logout.mjs +3 -3
- package/dist/astro/routes/api/auth/magic-link/send.mjs +9 -9
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
- package/dist/astro/routes/api/auth/me.mjs +7 -7
- package/dist/astro/routes/api/auth/mode.mjs +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -6
- package/dist/astro/routes/api/auth/passkey/index.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/options.mjs +11 -11
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +9 -9
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +10 -10
- package/dist/astro/routes/api/auth/passkey/verify.mjs +10 -10
- package/dist/astro/routes/api/auth/signup/complete.mjs +10 -10
- package/dist/astro/routes/api/auth/signup/request.mjs +9 -9
- package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +13 -13
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +12 -12
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +10 -10
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +13 -13
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/authors.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/index.mjs +7 -7
- package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -7
- package/dist/astro/routes/api/dashboard.mjs +8 -8
- package/dist/astro/routes/api/dev/emails.mjs +3 -3
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +19 -11
- package/dist/astro/routes/api/import/probe.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +11 -40
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +12 -407
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +10 -9
- package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +9 -9
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +9 -9
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +19 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +97 -79
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +19 -11
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +40 -2
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +519 -39
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.d.mts.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +14 -5
- package/dist/astro/routes/api/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/mcp.mjs +39 -39
- package/dist/astro/routes/api/media/_id_/confirm.mjs +7 -7
- package/dist/astro/routes/api/media/_id_.mjs +7 -7
- package/dist/astro/routes/api/media/file/_...key_.mjs +2 -2
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +3 -3
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +3 -3
- package/dist/astro/routes/api/media/providers/index.mjs +3 -3
- package/dist/astro/routes/api/media/upload-url.mjs +8 -8
- package/dist/astro/routes/api/media.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/items.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_/translations.mjs +9 -9
- package/dist/astro/routes/api/menus/_name_.mjs +9 -9
- package/dist/astro/routes/api/menus/index.mjs +9 -9
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
- package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
- package/dist/astro/routes/api/oauth/register.mjs +3 -3
- package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
- package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
- package/dist/astro/routes/api/oauth/token.mjs +6 -6
- package/dist/astro/routes/api/openapi.json.mjs +4 -4
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
- package/dist/astro/routes/api/redirects/404s/index.mjs +9 -9
- package/dist/astro/routes/api/redirects/404s/summary.mjs +9 -9
- package/dist/astro/routes/api/redirects/_id_.mjs +10 -10
- package/dist/astro/routes/api/redirects/index.mjs +10 -10
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +3 -3
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +3 -3
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +36 -35
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +36 -35
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +36 -35
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +36 -35
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +36 -35
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +7 -6
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +36 -35
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +36 -35
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +10 -10
- package/dist/astro/routes/api/search/index.mjs +9 -9
- package/dist/astro/routes/api/search/rebuild.mjs +10 -10
- package/dist/astro/routes/api/search/stats.mjs +6 -6
- package/dist/astro/routes/api/search/suggest.mjs +9 -9
- package/dist/astro/routes/api/sections/_slug_.mjs +9 -9
- package/dist/astro/routes/api/sections/index.mjs +9 -9
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +12 -12
- package/dist/astro/routes/api/setup/admin-verify.mjs +11 -11
- package/dist/astro/routes/api/setup/admin.mjs +10 -10
- package/dist/astro/routes/api/setup/dev-bypass.d.mts.map +1 -1
- package/dist/astro/routes/api/setup/dev-bypass.mjs +28 -25
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +26 -25
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +4 -4
- package/dist/astro/routes/api/snapshot.mjs +6 -6
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +13 -13
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +13 -13
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +13 -13
- package/dist/astro/routes/api/taxonomies/index.mjs +13 -13
- package/dist/astro/routes/api/themes/preview.mjs +5 -5
- package/dist/astro/routes/api/typegen.mjs +5 -5
- package/dist/astro/routes/api/well-known/auth.mjs +1 -1
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +7 -7
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +9 -9
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +9 -9
- package/dist/astro/routes/api/widget-areas/_name_.mjs +5 -5
- package/dist/astro/routes/api/widget-areas/index.mjs +9 -9
- package/dist/astro/routes/api/widget-components.mjs +3 -3
- package/dist/astro/routes/robots.txt.mjs +6 -6
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +9 -9
- package/dist/astro/routes/sitemap.xml.mjs +7 -7
- package/dist/astro/types.d.mts +14 -12
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/{authorize-BZnOGJFo.mjs → authorize-Dz88F_Fw.mjs} +2 -2
- package/dist/{authorize-BZnOGJFo.mjs.map → authorize-Dz88F_Fw.mjs.map} +1 -1
- package/dist/{byline-LL8lyqdb.mjs → byline-Bm8ZgUP9.mjs} +6 -6
- package/dist/{byline-LL8lyqdb.mjs.map → byline-Bm8ZgUP9.mjs.map} +1 -1
- package/dist/{byline-fields-eyJMblSr.mjs → byline-fields-2Lp5Hbgf.mjs} +18 -3
- package/dist/byline-fields-2Lp5Hbgf.mjs.map +1 -0
- package/dist/{byline-fields-DaMKzkhO.mjs → byline-fields-CIx_GuN4.mjs} +1 -1
- package/dist/{byline-fields-DaMKzkhO.mjs.map → byline-fields-CIx_GuN4.mjs.map} +1 -1
- package/dist/{byline-fields-KD3JFRuH.d.mts → byline-fields-Cgrt9-aL.d.mts} +18 -3
- package/dist/{byline-fields-KD3JFRuH.d.mts.map → byline-fields-Cgrt9-aL.d.mts.map} +1 -1
- package/dist/{bylines-BmJ7Vg7J.mjs → bylines-6tm9mgQb.mjs} +4 -4
- package/dist/{bylines-BmJ7Vg7J.mjs.map → bylines-6tm9mgQb.mjs.map} +1 -1
- package/dist/{bylines-DE47vP8d.mjs → bylines-Woq87129.mjs} +6 -6
- package/dist/{bylines-DE47vP8d.mjs.map → bylines-Woq87129.mjs.map} +1 -1
- package/dist/{cache-D9jF5bYw.mjs → cache-CEBAZjir.mjs} +2 -2
- package/dist/{cache-D9jF5bYw.mjs.map → cache-CEBAZjir.mjs.map} +1 -1
- package/dist/{challenge-store-LhiqMccz.mjs → challenge-store-anhwVER0.mjs} +1 -1
- package/dist/{challenge-store-LhiqMccz.mjs.map → challenge-store-anhwVER0.mjs.map} +1 -1
- package/dist/{chunks-OCG163rN.mjs → chunks-B2isWQhr.mjs} +2 -2
- package/dist/{chunks-OCG163rN.mjs.map → chunks-B2isWQhr.mjs.map} +1 -1
- package/dist/cli/index.mjs +23 -22
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +2 -2
- package/dist/{comment-D9BLDpZI.mjs → comment-CzeatwBV.mjs} +3 -3
- package/dist/{comment-D9BLDpZI.mjs.map → comment-CzeatwBV.mjs.map} +1 -1
- package/dist/{comment-reaction-Drl9SkNu.mjs → comment-reaction-Cj9QJY7I.mjs} +2 -2
- package/dist/{comment-reaction-Drl9SkNu.mjs.map → comment-reaction-Cj9QJY7I.mjs.map} +1 -1
- package/dist/{comments-BjJ9SKGU.mjs → comments-BLE-jv5k.mjs} +3 -3
- package/dist/{comments-BjJ9SKGU.mjs.map → comments-BLE-jv5k.mjs.map} +1 -1
- package/dist/{components-CYt4uVK9.mjs → components-B_sATNUc.mjs} +1 -1
- package/dist/{components-CYt4uVK9.mjs.map → components-B_sATNUc.mjs.map} +1 -1
- package/dist/{content-ncUWWjna.mjs → content-DhgEth4k.mjs} +4 -4
- package/dist/{content-ncUWWjna.mjs.map → content-DhgEth4k.mjs.map} +1 -1
- package/dist/content-refresh-CA4uKwzH.mjs +1531 -0
- package/dist/content-refresh-CA4uKwzH.mjs.map +1 -0
- package/dist/{context-C_g-iJVA.mjs → context-CUsR9dXL.mjs} +76 -54
- package/dist/context-CUsR9dXL.mjs.map +1 -0
- package/dist/{cron-C5LVoNmP.mjs → cron-v4FTEFR_.mjs} +1 -1
- package/dist/{cron-C5LVoNmP.mjs.map → cron-v4FTEFR_.mjs.map} +1 -1
- package/dist/{dashboard-CotyqQrW.mjs → dashboard-EvEKF5en.mjs} +4 -4
- package/dist/{dashboard-CotyqQrW.mjs.map → dashboard-EvEKF5en.mjs.map} +1 -1
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +1 -1
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/{default-CeRG-Ot4.mjs → default-CM_D83Mg.mjs} +1 -1
- package/dist/{default-CeRG-Ot4.mjs.map → default-CM_D83Mg.mjs.map} +1 -1
- package/dist/{device-flow-DENDCQ9F.mjs → device-flow-CfGP18Uw.mjs} +4 -4
- package/dist/{device-flow-DENDCQ9F.mjs.map → device-flow-CfGP18Uw.mjs.map} +1 -1
- package/dist/{email-console-DJP32ucW.mjs → email-console-CIf4Lfvv.mjs} +1 -1
- package/dist/{email-console-DJP32ucW.mjs.map → email-console-CIf4Lfvv.mjs.map} +1 -1
- package/dist/{error-rVGiqWDt.mjs → error-CkAseSqZ.mjs} +2 -2
- package/dist/{error-rVGiqWDt.mjs.map → error-CkAseSqZ.mjs.map} +1 -1
- package/dist/{escape-Bjio4ZsM.mjs → escape-DqD0aCKu.mjs} +1 -1
- package/dist/{escape-Bjio4ZsM.mjs.map → escape-DqD0aCKu.mjs.map} +1 -1
- package/dist/{field-defs-cache-ljXzJCfc.mjs → field-defs-cache-WUI88LX5.mjs} +2 -2
- package/dist/{field-defs-cache-ljXzJCfc.mjs.map → field-defs-cache-WUI88LX5.mjs.map} +1 -1
- package/dist/{fts-manager-BbCCbEKA.mjs → fts-manager-BbFaF_V8.mjs} +2 -2
- package/dist/{fts-manager-BbCCbEKA.mjs.map → fts-manager-BbFaF_V8.mjs.map} +1 -1
- package/dist/{import-Bb1T9WJS.mjs → import-fYLf14Co.mjs} +514 -25
- package/dist/import-fYLf14Co.mjs.map +1 -0
- package/dist/{index-BRNabKrx.d.mts → index-B9sIxwe4.d.mts} +2420 -2379
- package/dist/index-B9sIxwe4.d.mts.map +1 -0
- package/dist/{index-Dt0OKJB4.d.mts → index-Bm-Gy8Mh.d.mts} +25 -4
- package/dist/index-Bm-Gy8Mh.d.mts.map +1 -0
- package/dist/index.d.mts +18 -17
- package/dist/index.mjs +54 -53
- package/dist/{load-DMjXghbZ.mjs → load-Djn3HWQS.mjs} +2 -2
- package/dist/{load-DMjXghbZ.mjs.map → load-Djn3HWQS.mjs.map} +1 -1
- package/dist/{loader-BA_zhkS_.mjs → loader-CB6YHeul.mjs} +6 -5
- package/dist/loader-CB6YHeul.mjs.map +1 -0
- package/dist/{manifest-schema-kPGX7VS-.mjs → manifest-schema-BHlgZM1W.mjs} +1 -1
- package/dist/{manifest-schema-kPGX7VS-.mjs.map → manifest-schema-BHlgZM1W.mjs.map} +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/local-runtime.d.mts +12 -11
- package/dist/media/local-runtime.d.mts.map +1 -1
- package/dist/media/local-runtime.mjs +5 -5
- package/dist/{media-C5t_eCnk.mjs → media-BrXIaMFN.mjs} +2 -2
- package/dist/{media-C5t_eCnk.mjs.map → media-BrXIaMFN.mjs.map} +1 -1
- package/dist/{media-allowlist-Du8t1u6a.mjs → media-allowlist-CRHEeJ_i.mjs} +1 -1
- package/dist/{media-allowlist-Du8t1u6a.mjs.map → media-allowlist-CRHEeJ_i.mjs.map} +1 -1
- package/dist/{media-url-O4rm9-SQ.mjs → media-url-CKi5XSw4.mjs} +1 -1
- package/dist/{media-url-O4rm9-SQ.mjs.map → media-url-CKi5XSw4.mjs.map} +1 -1
- package/dist/{menus-CBb6UrMU.mjs → menus-Cfivc2Ad.mjs} +3 -3
- package/dist/{menus-CBb6UrMU.mjs.map → menus-Cfivc2Ad.mjs.map} +1 -1
- package/dist/{menus-CYH09a41.mjs → menus-CsZ2ZEK2.mjs} +16 -12
- package/dist/{menus-CYH09a41.mjs.map → menus-CsZ2ZEK2.mjs.map} +1 -1
- package/dist/{mode-BB0F8xTC.mjs → mode-BM9QgEmt.mjs} +1 -1
- package/dist/{mode-BB0F8xTC.mjs.map → mode-BM9QgEmt.mjs.map} +1 -1
- package/dist/{oauth-authorization-CsvzIp_F.mjs → oauth-authorization-CXWkIGT4.mjs} +4 -4
- package/dist/{oauth-authorization-CsvzIp_F.mjs.map → oauth-authorization-CXWkIGT4.mjs.map} +1 -1
- package/dist/{oauth-clients-C9SYwEbZ.mjs → oauth-clients-BmTI5rsl.mjs} +1 -1
- package/dist/{oauth-clients-C9SYwEbZ.mjs.map → oauth-clients-BmTI5rsl.mjs.map} +1 -1
- package/dist/{oauth-state-store---zrApfB.mjs → oauth-state-store-YLFLcH5F.mjs} +1 -1
- package/dist/{oauth-state-store---zrApfB.mjs.map → oauth-state-store-YLFLcH5F.mjs.map} +1 -1
- package/dist/{oauth-user-lookup-SHsWRlG9.mjs → oauth-user-lookup-Bsc_GsX-.mjs} +1 -1
- package/dist/{oauth-user-lookup-SHsWRlG9.mjs.map → oauth-user-lookup-Bsc_GsX-.mjs.map} +1 -1
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{object-cache-CHbHv83-.mjs → object-cache-Bok5j2ae.mjs} +43 -3
- package/dist/object-cache-Bok5j2ae.mjs.map +1 -0
- package/dist/{options-41nCWqi9.d.mts → options-iMpRRxIe.d.mts} +3 -3
- package/dist/{options-41nCWqi9.d.mts.map → options-iMpRRxIe.d.mts.map} +1 -1
- package/dist/page/index.d.mts +2 -2
- package/dist/{parse-BwAdS7FZ.mjs → parse-GmjecGct.mjs} +2 -2
- package/dist/{parse-BwAdS7FZ.mjs.map → parse-GmjecGct.mjs.map} +1 -1
- package/dist/{passkey-config-C0YfSBko.mjs → passkey-config-De0ahnRg.mjs} +1 -1
- package/dist/{passkey-config-C0YfSBko.mjs.map → passkey-config-De0ahnRg.mjs.map} +1 -1
- package/dist/{placeholder-Cuce9U-m.d.mts → placeholder-BSKwzRe4.d.mts} +1 -1
- package/dist/{placeholder-Cuce9U-m.d.mts.map → placeholder-BSKwzRe4.d.mts.map} +1 -1
- package/dist/plugin-types.d.mts +1 -1
- package/dist/plugin-utils.d.mts +10 -9
- package/dist/plugin-utils.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +10 -9
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.mjs +2 -2
- package/dist/{portable-text-BICg8bTk.mjs → portable-text-cCa0cGV6.mjs} +1 -1
- package/dist/{portable-text-BICg8bTk.mjs.map → portable-text-cCa0cGV6.mjs.map} +1 -1
- package/dist/{preview-DKGCt2_p.mjs → preview-SSXNVPAC.mjs} +2 -2
- package/dist/{preview-DKGCt2_p.mjs.map → preview-SSXNVPAC.mjs.map} +1 -1
- package/dist/{public-url-CTVqgMmg.mjs → public-url-Danv47cS.mjs} +1 -1
- package/dist/{public-url-CTVqgMmg.mjs.map → public-url-Danv47cS.mjs.map} +1 -1
- package/dist/{query-BpQb-blG.mjs → query-ByGq6ver.mjs} +14 -14
- package/dist/{query-BpQb-blG.mjs.map → query-ByGq6ver.mjs.map} +1 -1
- package/dist/{rate-limit-Dap6HMNM.mjs → rate-limit-C_Lf63Dd.mjs} +2 -2
- package/dist/{rate-limit-Dap6HMNM.mjs.map → rate-limit-C_Lf63Dd.mjs.map} +1 -1
- package/dist/{redirect-CS-PHtNh.mjs → redirect-CoW3G-0U.mjs} +1 -1
- package/dist/{redirect-CS-PHtNh.mjs.map → redirect-CoW3G-0U.mjs.map} +1 -1
- package/dist/{redirect-_M0trWoo.mjs → redirect-IyfNirgS.mjs} +2 -2
- package/dist/{redirect-_M0trWoo.mjs.map → redirect-IyfNirgS.mjs.map} +1 -1
- package/dist/{redirects-w0V9vj_j.mjs → redirects-Bs1g42Ri.mjs} +4 -4
- package/dist/{redirects-w0V9vj_j.mjs.map → redirects-Bs1g42Ri.mjs.map} +1 -1
- package/dist/{redirects-Dcbuisoj.mjs → redirects-DXEXBAII.mjs} +2 -2
- package/dist/{redirects-Dcbuisoj.mjs.map → redirects-DXEXBAII.mjs.map} +1 -1
- package/dist/{registry-g8yYt4cC.mjs → registry-B65mUtPa.mjs} +122 -79
- package/dist/registry-B65mUtPa.mjs.map +1 -0
- package/dist/{request-meta-CmS1tDFf.mjs → request-meta-DbvXaAvU.mjs} +2 -2
- package/dist/{request-meta-CmS1tDFf.mjs.map → request-meta-DbvXaAvU.mjs.map} +1 -1
- package/dist/{resolve-C7I0qiR0.mjs → resolve-DR3wqMTy.mjs} +1 -1
- package/dist/{resolve-C7I0qiR0.mjs.map → resolve-DR3wqMTy.mjs.map} +1 -1
- package/dist/{runner-BbR3DfrL.d.mts → runner-DvFWoz8-.d.mts} +2 -2
- package/dist/{runner-BbR3DfrL.d.mts.map → runner-DvFWoz8-.d.mts.map} +1 -1
- package/dist/{runner-DPdt_Wpa.mjs → runner-K8XK101B.mjs} +351 -199
- package/dist/runner-K8XK101B.mjs.map +1 -0
- package/dist/runtime.d.mts +11 -10
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +2 -2
- package/dist/scheduled-publish-Drffrf2a.d.mts +11 -0
- package/dist/scheduled-publish-Drffrf2a.d.mts.map +1 -0
- package/dist/{schema-DoLd3j2e.mjs → schema-Blhoxp3P.mjs} +5 -5
- package/dist/{schema-DoLd3j2e.mjs.map → schema-Blhoxp3P.mjs.map} +1 -1
- package/dist/{search-BR0ZeZmh.mjs → search-DZN2HZ-V.mjs} +6 -4
- package/dist/search-DZN2HZ-V.mjs.map +1 -0
- package/dist/{secrets-BSf9pRRY.mjs → secrets-kp760LlD.mjs} +2 -2
- package/dist/{secrets-BSf9pRRY.mjs.map → secrets-kp760LlD.mjs.map} +1 -1
- package/dist/{sections-5J2YJPqJ.mjs → sections-CpF5SaGr.mjs} +3 -3
- package/dist/{sections-5J2YJPqJ.mjs.map → sections-CpF5SaGr.mjs.map} +1 -1
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +19 -18
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo/index.mjs +1 -1
- package/dist/{seo-BkhuuaaE.mjs → seo-89-53DDs.mjs} +1 -1
- package/dist/{seo-BkhuuaaE.mjs.map → seo-89-53DDs.mjs.map} +1 -1
- package/dist/{seo-DKeXHkzE.mjs → seo-DXu2UQnC.mjs} +3 -3
- package/dist/{seo-DKeXHkzE.mjs.map → seo-DXu2UQnC.mjs.map} +1 -1
- package/dist/{service-BbO2s8gT.mjs → service-DQmiBMzt.mjs} +3 -3
- package/dist/{service-BbO2s8gT.mjs.map → service-DQmiBMzt.mjs.map} +1 -1
- package/dist/{session-user-B8aLtKAH.mjs → session-user-Cascbax7.mjs} +1 -1
- package/dist/{session-user-B8aLtKAH.mjs.map → session-user-Cascbax7.mjs.map} +1 -1
- package/dist/{settings-BMNr9Dmi.mjs → settings-rZyHEcNT.mjs} +3 -3
- package/dist/{settings-BMNr9Dmi.mjs.map → settings-rZyHEcNT.mjs.map} +1 -1
- package/dist/{settings-DJeki-97.mjs → settings-zhmdKyJQ.mjs} +5 -5
- package/dist/{settings-DJeki-97.mjs.map → settings-zhmdKyJQ.mjs.map} +1 -1
- package/dist/{setup-complete-gEiySUc-.mjs → setup-complete-Cb3LRyzy.mjs} +1 -1
- package/dist/{setup-complete-gEiySUc-.mjs.map → setup-complete-Cb3LRyzy.mjs.map} +1 -1
- package/dist/{setup-nonce-DzS50zme.mjs → setup-nonce-Z8x0tHf8.mjs} +1 -1
- package/dist/{setup-nonce-DzS50zme.mjs.map → setup-nonce-Z8x0tHf8.mjs.map} +1 -1
- package/dist/{single-flight-cache-Cdfkic3t.mjs → single-flight-cache-BG3B_GhN.mjs} +1 -1
- package/dist/{single-flight-cache-Cdfkic3t.mjs.map → single-flight-cache-BG3B_GhN.mjs.map} +1 -1
- package/dist/{site-url-BLebyON8.mjs → site-url-BBfDTgZB.mjs} +1 -1
- package/dist/{site-url-BLebyON8.mjs.map → site-url-BBfDTgZB.mjs.map} +1 -1
- package/dist/{ssrf-BRKb343l.mjs → ssrf-1g7usGBg.mjs} +1 -1
- package/dist/{ssrf-BRKb343l.mjs.map → ssrf-1g7usGBg.mjs.map} +1 -1
- package/dist/{status-vUK0SA17.mjs → status-CqJQX1QN.mjs} +1 -1
- package/dist/{status-vUK0SA17.mjs.map → status-CqJQX1QN.mjs.map} +1 -1
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +1 -1
- package/dist/{taxonomies-CM_fUqLU.mjs → taxonomies-BGBd16Eu.mjs} +4 -4
- package/dist/{taxonomies-CM_fUqLU.mjs.map → taxonomies-BGBd16Eu.mjs.map} +1 -1
- package/dist/{taxonomies-D13i2ctt.mjs → taxonomies-Cnb4F-Pb.mjs} +7 -7
- package/dist/{taxonomies-D13i2ctt.mjs.map → taxonomies-Cnb4F-Pb.mjs.map} +1 -1
- package/dist/{taxonomy-BU0LjdVb.mjs → taxonomy-BxGxZZdu.mjs} +4 -4
- package/dist/{taxonomy-BU0LjdVb.mjs.map → taxonomy-BxGxZZdu.mjs.map} +1 -1
- package/dist/{tokens-LeuXF9gG.mjs → tokens-BGT0TUUo.mjs} +1 -1
- package/dist/{tokens-LeuXF9gG.mjs.map → tokens-BGT0TUUo.mjs.map} +1 -1
- package/dist/{transport-BZ-03aFT.d.mts → transport-BMDWHSgZ.d.mts} +1 -1
- package/dist/{transport-BZ-03aFT.d.mts.map → transport-BMDWHSgZ.d.mts.map} +1 -1
- package/dist/{transport-_2nBz7e9.mjs → transport-DPefPMcz.mjs} +1 -1
- package/dist/{transport-_2nBz7e9.mjs.map → transport-DPefPMcz.mjs.map} +1 -1
- package/dist/{trusted-proxy-DZY5WCn2.mjs → trusted-proxy-VTPRiX2s.mjs} +1 -1
- package/dist/{trusted-proxy-DZY5WCn2.mjs.map → trusted-proxy-VTPRiX2s.mjs.map} +1 -1
- package/dist/{types-ETmO_jQr.d.mts → types-BcLUUbbR.d.mts} +2 -2
- package/dist/{types-ETmO_jQr.d.mts.map → types-BcLUUbbR.d.mts.map} +1 -1
- package/dist/{types-BYnDBVwe.d.mts → types-CGbYowGQ.d.mts} +2 -2
- package/dist/{types-BYnDBVwe.d.mts.map → types-CGbYowGQ.d.mts.map} +1 -1
- package/dist/{types-BWqGVhFn.d.mts → types-CgvhU-hF.d.mts} +1 -1
- package/dist/{types-BWqGVhFn.d.mts.map → types-CgvhU-hF.d.mts.map} +1 -1
- package/dist/{types-fS7-VTdR.d.mts → types-ClUkdbWb.d.mts} +1 -1
- package/dist/{types-fS7-VTdR.d.mts.map → types-ClUkdbWb.d.mts.map} +1 -1
- package/dist/{types-CZgK3EMW.mjs → types-CuW0zWDA.mjs} +2 -2
- package/dist/{types-CZgK3EMW.mjs.map → types-CuW0zWDA.mjs.map} +1 -1
- package/dist/{types-BG8_XTLj.d.mts → types-DmHk7vAt.d.mts} +1 -1
- package/dist/{types-BG8_XTLj.d.mts.map → types-DmHk7vAt.d.mts.map} +1 -1
- package/dist/{types-CQAugunJ.mjs → types-Jo3UYd6b.mjs} +1 -1
- package/dist/{types-CQAugunJ.mjs.map → types-Jo3UYd6b.mjs.map} +1 -1
- package/dist/{types-xIfVRNLp.d.mts → types-_HFLRzTn.d.mts} +22 -1
- package/dist/types-_HFLRzTn.d.mts.map +1 -0
- package/dist/{types-DrYMm9s5.d.mts → types-ea9sAPck.d.mts} +1 -1
- package/dist/{types-DrYMm9s5.d.mts.map → types-ea9sAPck.d.mts.map} +1 -1
- package/dist/{types-CNlaBFzx.d.mts → types-g_aFIdW0.d.mts} +1 -1
- package/dist/{types-CNlaBFzx.d.mts.map → types-g_aFIdW0.d.mts.map} +1 -1
- package/dist/{types-CUsXGRVj.d.mts → types-vgEWF18A.d.mts} +19 -1
- package/dist/{types-CUsXGRVj.d.mts.map → types-vgEWF18A.d.mts.map} +1 -1
- package/dist/{user-DkG2jKCp.mjs → user-BjAOvU3Z.mjs} +3 -3
- package/dist/{user-DkG2jKCp.mjs.map → user-BjAOvU3Z.mjs.map} +1 -1
- package/dist/{utils-B7A57fm9.mjs → utils-BJXElxdw.mjs} +156 -7
- package/dist/utils-BJXElxdw.mjs.map +1 -0
- package/dist/{validate-CuJ1Ps9j.mjs → validate-CWSnKVIJ.mjs} +2 -2
- package/dist/{validate-CuJ1Ps9j.mjs.map → validate-CWSnKVIJ.mjs.map} +1 -1
- package/dist/{validate-CG0V0wNR.d.mts → validate-Z1b86_3B.d.mts} +11 -6
- package/dist/{validate-CG0V0wNR.d.mts.map → validate-Z1b86_3B.d.mts.map} +1 -1
- package/dist/{validation-CwUfTdGF.mjs → validation-c8WjhH8z.mjs} +8 -5
- package/dist/{validation-CwUfTdGF.mjs.map → validation-c8WjhH8z.mjs.map} +1 -1
- package/dist/version-CaccU7DM.mjs +7 -0
- package/dist/{version-BoNBItP_.mjs.map → version-CaccU7DM.mjs.map} +1 -1
- package/dist/{widgets-BfOZ-ajY.mjs → widgets-hWcIicX8.mjs} +3 -3
- package/dist/{widgets-BfOZ-ajY.mjs.map → widgets-hWcIicX8.mjs.map} +1 -1
- package/dist/wxr-taxonomies-0_uxSrmf.d.mts +34 -0
- package/dist/wxr-taxonomies-0_uxSrmf.d.mts.map +1 -0
- package/dist/wxr-taxonomies-BC3OYpvx.mjs +425 -0
- package/dist/wxr-taxonomies-BC3OYpvx.mjs.map +1 -0
- package/dist/{zod-generator-gFsRuNNy.mjs → zod-generator-CacrR-i8.mjs} +2 -2
- package/dist/{zod-generator-gFsRuNNy.mjs.map → zod-generator-CacrR-i8.mjs.map} +1 -1
- package/package.json +6 -6
- package/src/api/handlers/content.ts +69 -23
- package/src/api/handlers/plugins.ts +77 -10
- package/src/api/schemas/import.ts +19 -0
- package/src/astro/integration/runtime.ts +3 -6
- package/src/astro/integration/vite-config.ts +19 -1
- package/src/astro/middleware/auth.ts +10 -3
- package/src/astro/middleware/csp.ts +54 -3
- package/src/astro/middleware.ts +1 -0
- package/src/astro/routes/admin.astro +9 -0
- package/src/astro/routes/api/admin/plugins/[id]/disable.ts +6 -1
- package/src/astro/routes/api/admin/plugins/[id]/enable.ts +6 -1
- package/src/astro/routes/api/admin/plugins/[id]/index.ts +1 -0
- package/src/astro/routes/api/admin/plugins/index.ts +1 -0
- package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +122 -98
- package/src/astro/routes/api/import/wordpress-plugin/execute.ts +794 -44
- package/src/astro/routes/api/manifest.ts +20 -1
- package/src/astro/routes/api/setup/dev-bypass.ts +7 -2
- package/src/astro/types.ts +4 -0
- package/src/cli/commands/seed.ts +1 -1
- package/src/components/EmDashImage.astro +59 -23
- package/src/components/Image.astro +36 -35
- package/src/components/LiveSearch.astro +40 -4
- package/src/components/live-search-routing.ts +30 -0
- package/src/database/migrations/036_i18n_menus_and_taxonomies.ts +23 -18
- package/src/database/migrations/048_restore_content_taxonomies_term_index.ts +32 -0
- package/src/database/migrations/049_taxonomies_name_locale_index.ts +42 -0
- package/src/database/migrations/050_media_usage_index_status.ts +142 -0
- package/src/database/migrations/runner.ts +6 -0
- package/src/database/repositories/media-usage.ts +932 -58
- package/src/database/types.ts +22 -0
- package/src/emdash-runtime.ts +123 -3
- package/src/import/comments.ts +159 -0
- package/src/import/index.ts +8 -1
- package/src/import/settings.ts +65 -189
- package/src/import/sources/wordpress-plugin.ts +338 -42
- package/src/import/sources/wxr.ts +4 -1
- package/src/import/types.ts +12 -0
- package/src/import/utils.ts +207 -0
- package/src/import/wxr-taxonomies.ts +39 -0
- package/src/loader.ts +13 -2
- package/src/media/usage/content-fields.ts +119 -0
- package/src/media/usage/content-refresh.ts +524 -0
- package/src/media/usage/content-repair.ts +491 -0
- package/src/media/usage/content-snapshots.ts +435 -0
- package/src/media/usage/extractor.ts +4 -4
- package/src/media/usage/source-key.ts +22 -0
- package/src/menus/index.ts +17 -1
- package/src/object-cache/index.ts +82 -7
- package/src/plugins/context.ts +100 -71
- package/src/schema/registry.ts +240 -154
- package/src/search/query.ts +3 -0
- package/src/search/types.ts +2 -0
- package/src/seed/apply.ts +158 -101
- package/src/seed/types.ts +6 -1
- package/dist/api-BMfveMoB.mjs.map +0 -1
- package/dist/apply--IVNSdXn.mjs.map +0 -1
- package/dist/byline-fields-eyJMblSr.mjs.map +0 -1
- package/dist/context-C_g-iJVA.mjs.map +0 -1
- package/dist/import-Bb1T9WJS.mjs.map +0 -1
- package/dist/index-BRNabKrx.d.mts.map +0 -1
- package/dist/index-Dt0OKJB4.d.mts.map +0 -1
- package/dist/loader-BA_zhkS_.mjs.map +0 -1
- package/dist/object-cache-CHbHv83-.mjs.map +0 -1
- package/dist/registry-g8yYt4cC.mjs.map +0 -1
- package/dist/runner-DPdt_Wpa.mjs.map +0 -1
- package/dist/search-BR0ZeZmh.mjs.map +0 -1
- package/dist/types-xIfVRNLp.d.mts.map +0 -1
- package/dist/utils-B7A57fm9.mjs.map +0 -1
- package/dist/version-BoNBItP_.mjs +0 -7
- /package/dist/{api-tokens-B4BQybOp.mjs → api-tokens-DsvvCtdh.mjs} +0 -0
- /package/dist/{ssrf-CcX9zvMK.mjs → ssrf-CmuGgCq3.mjs} +0 -0
- /package/dist/{types-BvbeGEtr.mjs → types-DROWRxYV.mjs} +0 -0
package/src/database/types.ts
CHANGED
|
@@ -76,6 +76,12 @@ export interface MediaUsageSourceTable {
|
|
|
76
76
|
revision_id: string | null;
|
|
77
77
|
current_generation: string;
|
|
78
78
|
schema_version: Generated<number>;
|
|
79
|
+
source_updated_at: Generated<string | null>;
|
|
80
|
+
source_version: Generated<number | null>;
|
|
81
|
+
source_fingerprint: Generated<string | null>;
|
|
82
|
+
source_completeness: Generated<string>;
|
|
83
|
+
last_attempted_at: Generated<string | null>;
|
|
84
|
+
last_error_code: Generated<string | null>;
|
|
79
85
|
indexed_at: Generated<string>;
|
|
80
86
|
created_at: Generated<string>;
|
|
81
87
|
updated_at: Generated<string>;
|
|
@@ -97,6 +103,21 @@ export interface MediaUsageTable {
|
|
|
97
103
|
created_at: Generated<string>;
|
|
98
104
|
}
|
|
99
105
|
|
|
106
|
+
export interface MediaUsageIndexStatusTable {
|
|
107
|
+
adapter_id: string;
|
|
108
|
+
scope_type: string;
|
|
109
|
+
scope_key: string;
|
|
110
|
+
status: string;
|
|
111
|
+
schema_version: Generated<number>;
|
|
112
|
+
started_at: Generated<string | null>;
|
|
113
|
+
completed_at: Generated<string | null>;
|
|
114
|
+
cursor: Generated<string | null>;
|
|
115
|
+
indexed_source_count: Generated<number>;
|
|
116
|
+
failed_source_count: Generated<number>;
|
|
117
|
+
last_error_code: Generated<string | null>;
|
|
118
|
+
updated_at: Generated<string>;
|
|
119
|
+
}
|
|
120
|
+
|
|
100
121
|
export interface UserTable {
|
|
101
122
|
id: string;
|
|
102
123
|
email: string;
|
|
@@ -453,6 +474,7 @@ export interface Database {
|
|
|
453
474
|
media: MediaTable;
|
|
454
475
|
_emdash_media_usage_sources: MediaUsageSourceTable;
|
|
455
476
|
_emdash_media_usage: MediaUsageTable;
|
|
477
|
+
_emdash_media_usage_index_status: MediaUsageIndexStatusTable;
|
|
456
478
|
users: UserTable;
|
|
457
479
|
credentials: CredentialTable;
|
|
458
480
|
auth_tokens: AuthTokenTable;
|
package/src/emdash-runtime.ts
CHANGED
|
@@ -31,6 +31,12 @@ import type {
|
|
|
31
31
|
import { validateIdentifier } from "./database/validate.js";
|
|
32
32
|
import { normalizeMediaValue } from "./media/normalize.js";
|
|
33
33
|
import type { MediaProvider, MediaProviderCapabilities } from "./media/types.js";
|
|
34
|
+
import {
|
|
35
|
+
deleteContentMediaUsage,
|
|
36
|
+
findNonTranslatableSiblingContentIds,
|
|
37
|
+
markContentMediaUsageCollectionStale,
|
|
38
|
+
refreshContentMediaUsageAfterWrite,
|
|
39
|
+
} from "./media/usage/content-refresh.js";
|
|
34
40
|
import type { SandboxedPluginInstance, SandboxRunner } from "./plugins/sandbox/types.js";
|
|
35
41
|
import type {
|
|
36
42
|
ResolvedPlugin,
|
|
@@ -2570,6 +2576,9 @@ export class EmDashRuntime {
|
|
|
2570
2576
|
authorId: body.authorId,
|
|
2571
2577
|
bylines: body.bylines,
|
|
2572
2578
|
});
|
|
2579
|
+
if (result.success && result.data) {
|
|
2580
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2581
|
+
}
|
|
2573
2582
|
|
|
2574
2583
|
// Run afterSave hooks (fire-and-forget)
|
|
2575
2584
|
if (result.success && result.data) {
|
|
@@ -2664,6 +2673,7 @@ export class EmDashRuntime {
|
|
|
2664
2673
|
// Content table columns = published data (never written by saves).
|
|
2665
2674
|
// Draft data lives only in the revisions table.
|
|
2666
2675
|
let usesDraftRevisions = false;
|
|
2676
|
+
let draftStorageChanged = false;
|
|
2667
2677
|
if (processedData) {
|
|
2668
2678
|
try {
|
|
2669
2679
|
const collectionInfo = await this.schemaRegistry.getCollectionWithFields(collection);
|
|
@@ -2693,6 +2703,7 @@ export class EmDashRuntime {
|
|
|
2693
2703
|
if (bodyWithoutRev.skipRevision && existing.draftRevisionId) {
|
|
2694
2704
|
// Autosave: update existing draft revision in place
|
|
2695
2705
|
await revisionRepo.updateData(existing.draftRevisionId, mergedData);
|
|
2706
|
+
draftStorageChanged = true;
|
|
2696
2707
|
} else {
|
|
2697
2708
|
// Create new draft revision
|
|
2698
2709
|
const revision = await revisionRepo.create({
|
|
@@ -2711,6 +2722,7 @@ export class EmDashRuntime {
|
|
|
2711
2722
|
updated_at = ${new Date().toISOString()}
|
|
2712
2723
|
WHERE id = ${resolvedId}
|
|
2713
2724
|
`.execute(this.db);
|
|
2725
|
+
draftStorageChanged = true;
|
|
2714
2726
|
|
|
2715
2727
|
// Fire-and-forget: prune old revisions to prevent unbounded growth
|
|
2716
2728
|
void revisionRepo.pruneOldRevisions(collection, resolvedId, 50).catch(() => {});
|
|
@@ -2738,6 +2750,43 @@ export class EmDashRuntime {
|
|
|
2738
2750
|
// supporting collections, that's the just-saved draft, not the live
|
|
2739
2751
|
// columns.
|
|
2740
2752
|
const hydrated = await this.hydrateDraftData(result);
|
|
2753
|
+
if (hydrated.success && hydrated.data) {
|
|
2754
|
+
const contentIdsToRefresh = [resolvedId];
|
|
2755
|
+
if (!usesDraftRevisions && processedData) {
|
|
2756
|
+
try {
|
|
2757
|
+
contentIdsToRefresh.push(
|
|
2758
|
+
...(await findNonTranslatableSiblingContentIds(
|
|
2759
|
+
this.db,
|
|
2760
|
+
collection,
|
|
2761
|
+
resolvedId,
|
|
2762
|
+
hydrated.data.item.translationGroup,
|
|
2763
|
+
processedData,
|
|
2764
|
+
)),
|
|
2765
|
+
);
|
|
2766
|
+
} catch (error) {
|
|
2767
|
+
console.error(
|
|
2768
|
+
`[media-usage] Failed to discover synced i18n siblings for ${collection}/${resolvedId}:`,
|
|
2769
|
+
error,
|
|
2770
|
+
);
|
|
2771
|
+
try {
|
|
2772
|
+
await markContentMediaUsageCollectionStale(
|
|
2773
|
+
this.db,
|
|
2774
|
+
collection,
|
|
2775
|
+
"CONTENT_USAGE_REFRESH_ERROR",
|
|
2776
|
+
);
|
|
2777
|
+
} catch (staleError) {
|
|
2778
|
+
console.error(`[media-usage] Failed to mark ${collection} stale:`, staleError);
|
|
2779
|
+
}
|
|
2780
|
+
}
|
|
2781
|
+
}
|
|
2782
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, contentIdsToRefresh);
|
|
2783
|
+
} else if (draftStorageChanged) {
|
|
2784
|
+
try {
|
|
2785
|
+
await markContentMediaUsageCollectionStale(this.db, collection, "CONTENT_USAGE_STALE");
|
|
2786
|
+
} catch (error) {
|
|
2787
|
+
console.error(`[media-usage] Failed to mark ${collection} stale:`, error);
|
|
2788
|
+
}
|
|
2789
|
+
}
|
|
2741
2790
|
|
|
2742
2791
|
// Run afterSave hooks (fire-and-forget)
|
|
2743
2792
|
if (hydrated.success && hydrated.data) {
|
|
@@ -2776,6 +2825,9 @@ export class EmDashRuntime {
|
|
|
2776
2825
|
|
|
2777
2826
|
// Delete the content
|
|
2778
2827
|
const result = await handleContentDelete(this.db, collection, id);
|
|
2828
|
+
if (result.success) {
|
|
2829
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.id]);
|
|
2830
|
+
}
|
|
2779
2831
|
|
|
2780
2832
|
// Run afterDelete hooks (fire-and-forget)
|
|
2781
2833
|
if (result.success) {
|
|
@@ -2798,6 +2850,9 @@ export class EmDashRuntime {
|
|
|
2798
2850
|
|
|
2799
2851
|
async handleContentRestore(collection: string, id: string) {
|
|
2800
2852
|
const result = await handleContentRestore(this.db, collection, id);
|
|
2853
|
+
if (result.success && result.data) {
|
|
2854
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2855
|
+
}
|
|
2801
2856
|
|
|
2802
2857
|
// Run afterRestore hooks (fire-and-forget)
|
|
2803
2858
|
if (result.success) {
|
|
@@ -2809,6 +2864,9 @@ export class EmDashRuntime {
|
|
|
2809
2864
|
|
|
2810
2865
|
async handleContentPermanentDelete(collection: string, id: string) {
|
|
2811
2866
|
const result = await handleContentPermanentDelete(this.db, collection, id);
|
|
2867
|
+
if (result.success) {
|
|
2868
|
+
await this.deleteContentUsageAfterSuccessfulPermanentDelete(collection, result.data.id);
|
|
2869
|
+
}
|
|
2812
2870
|
|
|
2813
2871
|
// Run afterDelete hooks so plugins (e.g. AI Search) can clean up
|
|
2814
2872
|
if (result.success) {
|
|
@@ -2823,7 +2881,11 @@ export class EmDashRuntime {
|
|
|
2823
2881
|
}
|
|
2824
2882
|
|
|
2825
2883
|
async handleContentDuplicate(collection: string, id: string, authorId?: string) {
|
|
2826
|
-
|
|
2884
|
+
const result = await handleContentDuplicate(this.db, collection, id, authorId);
|
|
2885
|
+
if (result.success && result.data) {
|
|
2886
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2887
|
+
}
|
|
2888
|
+
return result;
|
|
2827
2889
|
}
|
|
2828
2890
|
|
|
2829
2891
|
// =========================================================================
|
|
@@ -2836,6 +2898,9 @@ export class EmDashRuntime {
|
|
|
2836
2898
|
options: { publishedAt?: string; requireScheduledDue?: boolean } = {},
|
|
2837
2899
|
) {
|
|
2838
2900
|
const result = await handleContentPublish(this.db, collection, id, options);
|
|
2901
|
+
if (result.success && result.data) {
|
|
2902
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2903
|
+
}
|
|
2839
2904
|
|
|
2840
2905
|
// Run afterPublish hooks (fire-and-forget)
|
|
2841
2906
|
if (result.success && result.data) {
|
|
@@ -2847,6 +2912,9 @@ export class EmDashRuntime {
|
|
|
2847
2912
|
|
|
2848
2913
|
async handleContentUnpublish(collection: string, id: string) {
|
|
2849
2914
|
const result = await handleContentUnpublish(this.db, collection, id);
|
|
2915
|
+
if (result.success && result.data) {
|
|
2916
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2917
|
+
}
|
|
2850
2918
|
|
|
2851
2919
|
// Run afterUnpublish hooks (fire-and-forget)
|
|
2852
2920
|
if (result.success && result.data) {
|
|
@@ -2858,6 +2926,9 @@ export class EmDashRuntime {
|
|
|
2858
2926
|
|
|
2859
2927
|
async handleContentSchedule(collection: string, id: string, scheduledAt: string) {
|
|
2860
2928
|
const result = await handleContentSchedule(this.db, collection, id, scheduledAt);
|
|
2929
|
+
if (result.success && result.data) {
|
|
2930
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2931
|
+
}
|
|
2861
2932
|
|
|
2862
2933
|
// Run afterSchedule hooks (fire-and-forget)
|
|
2863
2934
|
if (result.success && result.data) {
|
|
@@ -2869,6 +2940,9 @@ export class EmDashRuntime {
|
|
|
2869
2940
|
|
|
2870
2941
|
async handleContentUnschedule(collection: string, id: string) {
|
|
2871
2942
|
const result = await handleContentUnschedule(this.db, collection, id);
|
|
2943
|
+
if (result.success && result.data) {
|
|
2944
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2945
|
+
}
|
|
2872
2946
|
|
|
2873
2947
|
// Run afterUnschedule hooks (fire-and-forget)
|
|
2874
2948
|
if (result.success && result.data) {
|
|
@@ -2883,7 +2957,11 @@ export class EmDashRuntime {
|
|
|
2883
2957
|
}
|
|
2884
2958
|
|
|
2885
2959
|
async handleContentDiscardDraft(collection: string, id: string) {
|
|
2886
|
-
|
|
2960
|
+
const result = await handleContentDiscardDraft(this.db, collection, id);
|
|
2961
|
+
if (result.success && result.data) {
|
|
2962
|
+
await this.refreshContentUsageAfterSuccessfulWrite(collection, [result.data.item.id]);
|
|
2963
|
+
}
|
|
2964
|
+
return result;
|
|
2887
2965
|
}
|
|
2888
2966
|
|
|
2889
2967
|
async handleContentCompare(collection: string, id: string) {
|
|
@@ -3025,6 +3103,9 @@ export class EmDashRuntime {
|
|
|
3025
3103
|
// behavior for collections that opt out of the draft model.
|
|
3026
3104
|
if (!usesDraftRevisions) {
|
|
3027
3105
|
const result = await handleRevisionRestore(this.db, revisionId, callerUserId);
|
|
3106
|
+
if (result.success) {
|
|
3107
|
+
await this.refreshContentUsageAfterSuccessfulWrite(revision.collection, [revision.entryId]);
|
|
3108
|
+
}
|
|
3028
3109
|
return this.hydrateDraftData(result);
|
|
3029
3110
|
}
|
|
3030
3111
|
|
|
@@ -3060,7 +3141,11 @@ export class EmDashRuntime {
|
|
|
3060
3141
|
// columns and the next `content_get` would surface different
|
|
3061
3142
|
// values (the bug that motivated this rewrite).
|
|
3062
3143
|
const refetched = await handleContentGet(this.db, revision.collection, revision.entryId);
|
|
3063
|
-
|
|
3144
|
+
const hydrated = await this.hydrateDraftData(refetched);
|
|
3145
|
+
if (hydrated.success) {
|
|
3146
|
+
await this.refreshContentUsageAfterSuccessfulWrite(revision.collection, [revision.entryId]);
|
|
3147
|
+
}
|
|
3148
|
+
return hydrated;
|
|
3064
3149
|
} catch (error) {
|
|
3065
3150
|
console.error("[emdash] revision restore failed:", error);
|
|
3066
3151
|
return {
|
|
@@ -3073,6 +3158,41 @@ export class EmDashRuntime {
|
|
|
3073
3158
|
}
|
|
3074
3159
|
}
|
|
3075
3160
|
|
|
3161
|
+
private async refreshContentUsageAfterSuccessfulWrite(
|
|
3162
|
+
collection: string,
|
|
3163
|
+
contentIds: readonly string[],
|
|
3164
|
+
): Promise<void> {
|
|
3165
|
+
for (const contentId of new Set(contentIds)) {
|
|
3166
|
+
try {
|
|
3167
|
+
await refreshContentMediaUsageAfterWrite(this.db, collection, contentId);
|
|
3168
|
+
} catch (error) {
|
|
3169
|
+
console.error(
|
|
3170
|
+
`[media-usage] Failed after content write ${collection}/${contentId}:`,
|
|
3171
|
+
error,
|
|
3172
|
+
);
|
|
3173
|
+
}
|
|
3174
|
+
}
|
|
3175
|
+
}
|
|
3176
|
+
|
|
3177
|
+
private async deleteContentUsageAfterSuccessfulPermanentDelete(
|
|
3178
|
+
collection: string,
|
|
3179
|
+
contentId: string,
|
|
3180
|
+
): Promise<void> {
|
|
3181
|
+
try {
|
|
3182
|
+
const result = await deleteContentMediaUsage(this.db, collection, contentId);
|
|
3183
|
+
if (!result.success) {
|
|
3184
|
+
console.error(
|
|
3185
|
+
`[media-usage] Usage delete for ${collection}/${contentId} finished with ${result.errorCode}`,
|
|
3186
|
+
);
|
|
3187
|
+
}
|
|
3188
|
+
} catch (error) {
|
|
3189
|
+
console.error(
|
|
3190
|
+
`[media-usage] Failed after permanent content delete ${collection}/${contentId}:`,
|
|
3191
|
+
error,
|
|
3192
|
+
);
|
|
3193
|
+
}
|
|
3194
|
+
}
|
|
3195
|
+
|
|
3076
3196
|
// =========================================================================
|
|
3077
3197
|
// Plugin Routes
|
|
3078
3198
|
// =========================================================================
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comment import functions
|
|
3
|
+
*
|
|
4
|
+
* Import comments from the WordPress plugin API into EmDash's native
|
|
5
|
+
* comments table, preserving authors, dates, threading, and status.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Kysely } from "kysely";
|
|
9
|
+
import { ulid } from "ulidx";
|
|
10
|
+
|
|
11
|
+
import type { Database } from "../database/types.js";
|
|
12
|
+
import { invalidateCommentObjectCache } from "../object-cache/index.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Plugin API comment format (matches /emdash/v1/comments items)
|
|
16
|
+
*/
|
|
17
|
+
export interface PluginComment {
|
|
18
|
+
id: number;
|
|
19
|
+
post_id: number;
|
|
20
|
+
parent_id: number | null;
|
|
21
|
+
author_name: string;
|
|
22
|
+
author_email: string;
|
|
23
|
+
/** Plain-text body (the plugin strips HTML) */
|
|
24
|
+
body: string;
|
|
25
|
+
/** ISO 8601 UTC timestamp */
|
|
26
|
+
date_gmt: string;
|
|
27
|
+
status: "approved" | "pending";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Result of comment import operation
|
|
32
|
+
*/
|
|
33
|
+
export interface CommentsImportResult {
|
|
34
|
+
/** Number of comments created */
|
|
35
|
+
imported: number;
|
|
36
|
+
/** Comments skipped (unresolvable post reference or already imported) */
|
|
37
|
+
skipped: number;
|
|
38
|
+
/** Errors encountered */
|
|
39
|
+
errors: Array<{ comment: string; error: string }>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Import comments from the plugin API.
|
|
44
|
+
*
|
|
45
|
+
* Preserves original timestamps and threading. Comments whose post was
|
|
46
|
+
* not imported (no entry in `contentIdMap`) are skipped. Re-running the
|
|
47
|
+
* import is idempotent: a comment with the same post, author email, and
|
|
48
|
+
* timestamp is not created twice.
|
|
49
|
+
*
|
|
50
|
+
* @param comments - Comments from the plugin API (all pages, flat)
|
|
51
|
+
* @param db - Database connection
|
|
52
|
+
* @param contentIdMap - WP post ID -> EmDash content ID
|
|
53
|
+
* @param collectionMap - WP post ID -> EmDash collection slug
|
|
54
|
+
* @param rootIds - Optional pre-seeded WP-comment-ID -> EmDash-root-ID map.
|
|
55
|
+
* The chunked import passes the map accumulated from earlier pages so a
|
|
56
|
+
* reply in page N can thread onto a parent imported in page N-1; the
|
|
57
|
+
* function adds this page's entries to it.
|
|
58
|
+
*/
|
|
59
|
+
export async function importCommentsFromPlugin(
|
|
60
|
+
comments: PluginComment[],
|
|
61
|
+
db: Kysely<Database>,
|
|
62
|
+
contentIdMap: Map<number, string>,
|
|
63
|
+
collectionMap: Map<number, string>,
|
|
64
|
+
rootIds?: Map<number, string>,
|
|
65
|
+
): Promise<CommentsImportResult> {
|
|
66
|
+
const result: CommentsImportResult = {
|
|
67
|
+
imported: 0,
|
|
68
|
+
skipped: 0,
|
|
69
|
+
errors: [],
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// WP comment ID -> EmDash comment ID, for parent threading
|
|
73
|
+
const commentIdMap = new Map<number, string>();
|
|
74
|
+
|
|
75
|
+
// WP comment ID -> EmDash ID of its top-level ancestor. EmDash threads
|
|
76
|
+
// are one level deep (assembleThreads nests replies under roots only),
|
|
77
|
+
// so deeper WP threads are flattened onto their root comment.
|
|
78
|
+
const rootIdMap = rootIds ?? new Map<number, string>();
|
|
79
|
+
|
|
80
|
+
// Parents must exist before children reference them; WP comment IDs
|
|
81
|
+
// are chronological, so ID order guarantees parents come first.
|
|
82
|
+
const sorted = comments.toSorted((a, b) => a.id - b.id);
|
|
83
|
+
|
|
84
|
+
for (const comment of sorted) {
|
|
85
|
+
const label = `${comment.author_name || "Anonymous"} (${comment.date_gmt})`;
|
|
86
|
+
try {
|
|
87
|
+
const contentId = contentIdMap.get(comment.post_id);
|
|
88
|
+
const collection = collectionMap.get(comment.post_id);
|
|
89
|
+
if (!contentId || !collection) {
|
|
90
|
+
result.skipped++;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const parsed = new Date(comment.date_gmt);
|
|
95
|
+
const createdAt = Number.isNaN(parsed.getTime())
|
|
96
|
+
? new Date().toISOString()
|
|
97
|
+
: parsed.toISOString();
|
|
98
|
+
|
|
99
|
+
// Idempotency: same post + author + timestamp + body = already
|
|
100
|
+
// imported (body included so same-second comments from one author
|
|
101
|
+
// don't collide). ponytail: one SELECT per comment — fine at
|
|
102
|
+
// import scale; batch with WHERE IN for six-figure comment counts.
|
|
103
|
+
const existing = await db
|
|
104
|
+
.selectFrom("_emdash_comments")
|
|
105
|
+
.select("id")
|
|
106
|
+
.where("content_id", "=", contentId)
|
|
107
|
+
.where("author_email", "=", comment.author_email)
|
|
108
|
+
.where("created_at", "=", createdAt)
|
|
109
|
+
.where("body", "=", comment.body)
|
|
110
|
+
.executeTakeFirst();
|
|
111
|
+
const parentId =
|
|
112
|
+
comment.parent_id !== null ? (rootIdMap.get(comment.parent_id) ?? null) : null;
|
|
113
|
+
|
|
114
|
+
if (existing) {
|
|
115
|
+
commentIdMap.set(comment.id, existing.id);
|
|
116
|
+
rootIdMap.set(comment.id, parentId ?? existing.id);
|
|
117
|
+
result.skipped++;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const id = ulid();
|
|
122
|
+
|
|
123
|
+
await db
|
|
124
|
+
.insertInto("_emdash_comments")
|
|
125
|
+
.values({
|
|
126
|
+
id,
|
|
127
|
+
collection,
|
|
128
|
+
content_id: contentId,
|
|
129
|
+
parent_id: parentId,
|
|
130
|
+
author_name: comment.author_name || "Anonymous",
|
|
131
|
+
author_email: comment.author_email,
|
|
132
|
+
author_user_id: null,
|
|
133
|
+
body: comment.body,
|
|
134
|
+
status: comment.status,
|
|
135
|
+
ip_hash: null,
|
|
136
|
+
user_agent: null,
|
|
137
|
+
moderation_metadata: null,
|
|
138
|
+
created_at: createdAt,
|
|
139
|
+
updated_at: createdAt,
|
|
140
|
+
})
|
|
141
|
+
.execute();
|
|
142
|
+
|
|
143
|
+
commentIdMap.set(comment.id, id);
|
|
144
|
+
rootIdMap.set(comment.id, parentId ?? id);
|
|
145
|
+
result.imported++;
|
|
146
|
+
} catch (error) {
|
|
147
|
+
result.errors.push({
|
|
148
|
+
comment: label,
|
|
149
|
+
error: error instanceof Error ? error.message : String(error),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (result.imported > 0) {
|
|
155
|
+
invalidateCommentObjectCache();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return result;
|
|
159
|
+
}
|
package/src/import/index.ts
CHANGED
|
@@ -44,13 +44,20 @@ export {
|
|
|
44
44
|
// Sections import
|
|
45
45
|
export { importReusableBlocksAsSections, type SectionsImportResult } from "./sections.js";
|
|
46
46
|
|
|
47
|
+
// Comments import
|
|
48
|
+
export {
|
|
49
|
+
importCommentsFromPlugin,
|
|
50
|
+
type PluginComment,
|
|
51
|
+
type CommentsImportResult,
|
|
52
|
+
} from "./comments.js";
|
|
53
|
+
|
|
47
54
|
// Site settings import
|
|
48
55
|
export {
|
|
49
56
|
importSiteSettings,
|
|
50
57
|
parseSiteSettingsFromPlugin,
|
|
51
58
|
type SiteSettingsAnalysis,
|
|
52
59
|
type SettingsImportResult,
|
|
53
|
-
type
|
|
60
|
+
type SettingsMediaIds,
|
|
54
61
|
} from "./settings.js";
|
|
55
62
|
|
|
56
63
|
// Registry
|