emdash 0.15.0 → 0.16.1
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/api/route-utils.mjs +10 -10
- package/dist/api/schemas/index.d.mts +1 -1
- package/dist/{api-CLwG_3dh.mjs → api-BNKqxyFX.mjs} +54 -14
- package/dist/{api-CLwG_3dh.mjs.map → api-BNKqxyFX.mjs.map} +1 -1
- package/dist/{apply-wJhM_bwU.mjs → apply-BOPaD-s9.mjs} +16 -16
- package/dist/{apply-wJhM_bwU.mjs.map → apply-BOPaD-s9.mjs.map} +1 -1
- package/dist/astro/index.d.mts +3 -3
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +33 -1
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +3 -3
- package/dist/astro/middleware/auth.mjs +2 -2
- package/dist/astro/middleware/redirect.mjs +4 -4
- package/dist/astro/middleware/request-context.mjs +1 -1
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +66 -46
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +3 -3
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +3 -3
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +2 -2
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +3 -3
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +8 -8
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +9 -9
- package/dist/astro/routes/api/admin/bylines/index.mjs +9 -9
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +7 -7
- package/dist/astro/routes/api/admin/comments/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/bulk.mjs +6 -6
- package/dist/astro/routes/api/admin/comments/counts.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/index.mjs +6 -6
- 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 +3 -3
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +3 -3
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/index.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +3 -3
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +27 -27
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +41 -28
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.d.mts +8 -0
- package/dist/astro/routes/api/admin/plugins/registry/artifact.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +301 -0
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -0
- package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +46 -28
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +27 -27
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +27 -27
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +3 -3
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +27 -27
- 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 +3 -3
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
- package/dist/astro/routes/api/admin/users/index.mjs +3 -3
- package/dist/astro/routes/api/auth/dev-bypass.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
- package/dist/astro/routes/api/auth/invite/complete.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/index.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/register-options.mjs +3 -3
- package/dist/astro/routes/api/auth/logout.mjs +2 -2
- package/dist/astro/routes/api/auth/magic-link/send.mjs +4 -4
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/me.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/index.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/options.mjs +4 -4
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/verify.mjs +3 -3
- package/dist/astro/routes/api/auth/signup/complete.mjs +3 -3
- package/dist/astro/routes/api/auth/signup/request.mjs +4 -4
- package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +6 -6
- 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 +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +4 -4
- 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 +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +8 -8
- 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 +4 -4
- package/dist/astro/routes/api/content/_collection_/index.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/trash.mjs +4 -4
- package/dist/astro/routes/api/dashboard.mjs +7 -7
- package/dist/astro/routes/api/dev/emails.mjs +2 -2
- package/dist/astro/routes/api/import/probe.mjs +4 -4
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.mjs +8 -8
- package/dist/astro/routes/api/import/wordpress/media.mjs +4 -4
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +6 -6
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts +11 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs +17 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-url-helpers.mjs.map +1 -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 +7 -7
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +4 -4
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +5 -5
- package/dist/astro/routes/api/manifest.mjs +3 -3
- package/dist/astro/routes/api/mcp.mjs +26 -26
- package/dist/astro/routes/api/media/_id_/confirm.mjs +4 -4
- package/dist/astro/routes/api/media/_id_.mjs +4 -4
- 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 +4 -4
- package/dist/astro/routes/api/media.mjs +5 -5
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +5 -5
- package/dist/astro/routes/api/menus/_name_/items.mjs +5 -5
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +5 -5
- package/dist/astro/routes/api/menus/_name_/translations.mjs +5 -5
- package/dist/astro/routes/api/menus/_name_.mjs +5 -5
- package/dist/astro/routes/api/menus/index.mjs +5 -5
- package/dist/astro/routes/api/oauth/device/authorize.mjs +3 -3
- package/dist/astro/routes/api/oauth/device/code.mjs +4 -4
- package/dist/astro/routes/api/oauth/device/token.mjs +4 -4
- package/dist/astro/routes/api/oauth/register.mjs +2 -2
- package/dist/astro/routes/api/oauth/token/refresh.mjs +3 -3
- package/dist/astro/routes/api/oauth/token/revoke.mjs +3 -3
- package/dist/astro/routes/api/oauth/token.mjs +2 -2
- package/dist/astro/routes/api/openapi.json.mjs +2 -2
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +3 -3
- package/dist/astro/routes/api/redirects/404s/index.mjs +6 -6
- package/dist/astro/routes/api/redirects/404s/summary.mjs +6 -6
- package/dist/astro/routes/api/redirects/_id_.mjs +7 -7
- package/dist/astro/routes/api/redirects/index.mjs +7 -7
- 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 +27 -27
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +27 -27
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +27 -27
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +27 -27
- package/dist/astro/routes/api/schema/collections/index.mjs +27 -27
- package/dist/astro/routes/api/schema/index.mjs +6 -6
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +27 -27
- package/dist/astro/routes/api/schema/orphans/index.mjs +27 -27
- package/dist/astro/routes/api/search/enable.mjs +7 -7
- package/dist/astro/routes/api/search/index.mjs +6 -6
- package/dist/astro/routes/api/search/rebuild.mjs +7 -7
- package/dist/astro/routes/api/search/stats.mjs +6 -6
- package/dist/astro/routes/api/search/suggest.mjs +6 -6
- package/dist/astro/routes/api/sections/_slug_.mjs +6 -6
- package/dist/astro/routes/api/sections/index.mjs +6 -6
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +8 -8
- package/dist/astro/routes/api/setup/admin-verify.mjs +3 -3
- package/dist/astro/routes/api/setup/admin.mjs +3 -3
- package/dist/astro/routes/api/setup/dev-bypass.mjs +15 -15
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +16 -16
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +4 -4
- package/dist/astro/routes/api/snapshot.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +9 -9
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +9 -9
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +9 -9
- package/dist/astro/routes/api/taxonomies/index.mjs +9 -9
- package/dist/astro/routes/api/themes/preview.mjs +3 -3
- package/dist/astro/routes/api/typegen.mjs +5 -5
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +4 -4
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +6 -6
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +6 -6
- package/dist/astro/routes/api/widget-areas/_name_.mjs +5 -5
- package/dist/astro/routes/api/widget-areas/index.mjs +6 -6
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +4 -4
- package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +58 -13
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
- package/dist/astro/routes/sitemap.xml.mjs +5 -5
- package/dist/astro/types.d.mts +10 -3
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/{authorize-Bkwe8kuL.mjs → authorize-Bn4S4DUT.mjs} +2 -2
- package/dist/{authorize-Bkwe8kuL.mjs.map → authorize-Bn4S4DUT.mjs.map} +1 -1
- package/dist/{byline-CTaWkMh5.mjs → byline-BDylH_m4.mjs} +3 -3
- package/dist/{byline-CTaWkMh5.mjs.map → byline-BDylH_m4.mjs.map} +1 -1
- package/dist/{bylines-H0Xh5TMy.mjs → bylines-B7TFEvFf.mjs} +2 -2
- package/dist/{bylines-H0Xh5TMy.mjs.map → bylines-B7TFEvFf.mjs.map} +1 -1
- package/dist/{bylines-DtDRNF1n.d.mts → bylines-DWLnr6-k.d.mts} +17 -17
- package/dist/{bylines-DtDRNF1n.d.mts.map → bylines-DWLnr6-k.d.mts.map} +1 -1
- package/dist/{bylines-BYHWU3T7.mjs → bylines-n6nykUyI.mjs} +6 -6
- package/dist/{bylines-BYHWU3T7.mjs.map → bylines-n6nykUyI.mjs.map} +1 -1
- package/dist/{cache-CNk1jIxp.mjs → cache-BcI1yUjR.mjs} +2 -2
- package/dist/{cache-CNk1jIxp.mjs.map → cache-BcI1yUjR.mjs.map} +1 -1
- package/dist/{chunks-BkfVdD-3.mjs → chunks-cYG4SnIP.mjs} +2 -2
- package/dist/{chunks-BkfVdD-3.mjs.map → chunks-cYG4SnIP.mjs.map} +1 -1
- package/dist/cli/index.mjs +61 -15
- 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/{comment-_yzlBYPx.mjs → comment-C76G-9tz.mjs} +2 -2
- package/dist/{comment-_yzlBYPx.mjs.map → comment-C76G-9tz.mjs.map} +1 -1
- package/dist/{comments-DxID-rsd.mjs → comments-CCxFFGY1.mjs} +3 -3
- package/dist/{comments-DxID-rsd.mjs.map → comments-CCxFFGY1.mjs.map} +1 -1
- package/dist/{content-C0ooIs-f.mjs → content-8voQNTXX.mjs} +3 -3
- package/dist/{content-C0ooIs-f.mjs.map → content-8voQNTXX.mjs.map} +1 -1
- package/dist/{context-sAnCaUIR.mjs → context-B7qiYrz2.mjs} +7 -7
- package/dist/{context-sAnCaUIR.mjs.map → context-B7qiYrz2.mjs.map} +1 -1
- package/dist/{dashboard-Cqw3ay2X.mjs → dashboard-BeaFSPpx.mjs} +4 -4
- package/dist/{dashboard-Cqw3ay2X.mjs.map → dashboard-BeaFSPpx.mjs.map} +1 -1
- package/dist/db/index.d.mts +1 -1
- package/dist/db/index.mjs +1 -1
- package/dist/db/sqlite.mjs +1 -1
- package/dist/{db-errors-CGN9kJfo.mjs → db-errors-BiYqoX-n.mjs} +14 -2
- package/dist/db-errors-BiYqoX-n.mjs.map +1 -0
- package/dist/{error-CPh_8eLq.mjs → error-ChfADBuu.mjs} +5 -3
- package/dist/error-ChfADBuu.mjs.map +1 -0
- package/dist/errors-9P_FDrJ_.mjs +17 -0
- package/dist/errors-9P_FDrJ_.mjs.map +1 -0
- package/dist/{fts-manager-Mnrtn-r2.mjs → fts-manager-C_b-4x8u.mjs} +2 -2
- package/dist/{fts-manager-Mnrtn-r2.mjs.map → fts-manager-C_b-4x8u.mjs.map} +1 -1
- package/dist/{index-Bv1Wf1zB.d.mts → index-D_p_jIP1.d.mts} +153 -109
- package/dist/index-D_p_jIP1.d.mts.map +1 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +38 -38
- package/dist/{load-DmXNVhst.mjs → load-CLFRjk9r.mjs} +2 -2
- package/dist/{load-DmXNVhst.mjs.map → load-CLFRjk9r.mjs.map} +1 -1
- package/dist/{loader-Chm5h7Gr.mjs → loader-D-vIJjfY.mjs} +86 -46
- package/dist/loader-D-vIJjfY.mjs.map +1 -0
- package/dist/media/local-runtime.d.mts +3 -3
- package/dist/media/local-runtime.mjs +4 -4
- package/dist/{media-oqRcNiQf.mjs → media-CKQd8AYU.mjs} +2 -2
- package/dist/{media-oqRcNiQf.mjs.map → media-CKQd8AYU.mjs.map} +1 -1
- package/dist/{menus-C75SSmRy.mjs → menus-C-nWT5Tu.mjs} +17 -11
- package/dist/menus-C-nWT5Tu.mjs.map +1 -0
- package/dist/{menus-Bjf5R1Qq.mjs → menus-arUNspyU.mjs} +2 -2
- package/dist/{menus-Bjf5R1Qq.mjs.map → menus-arUNspyU.mjs.map} +1 -1
- package/dist/{parse-3-caTKgt.mjs → parse-DHbXfvxO.mjs} +2 -2
- package/dist/{parse-3-caTKgt.mjs.map → parse-DHbXfvxO.mjs.map} +1 -1
- package/dist/plugin-utils.d.mts +25 -10
- package/dist/plugin-utils.d.mts.map +1 -1
- package/dist/plugin-utils.mjs +11 -10
- package/dist/plugin-utils.mjs.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +3 -3
- package/dist/{query-BJn8TOPk.mjs → query-7m6-l0f_.mjs} +21 -14
- package/dist/query-7m6-l0f_.mjs.map +1 -0
- package/dist/{rate-limit-D_-gAeJ0.mjs → rate-limit-D8RAXN8b.mjs} +2 -2
- package/dist/{rate-limit-D_-gAeJ0.mjs.map → rate-limit-D8RAXN8b.mjs.map} +1 -1
- package/dist/{redirect-CNv4mHX2.mjs → redirect-CjfDGrTd.mjs} +2 -2
- package/dist/{redirect-CNv4mHX2.mjs.map → redirect-CjfDGrTd.mjs.map} +1 -1
- package/dist/{redirects-B-CUZ1Xh.mjs → redirects-CowoEHdE.mjs} +3 -3
- package/dist/{redirects-B-CUZ1Xh.mjs.map → redirects-CowoEHdE.mjs.map} +1 -1
- package/dist/{registry-DqrAQDXH.mjs → registry-Cyp-dx6J.mjs} +4 -4
- package/dist/{registry-DqrAQDXH.mjs.map → registry-Cyp-dx6J.mjs.map} +1 -1
- package/dist/resolve-D6sM-SgF.mjs +143 -0
- package/dist/resolve-D6sM-SgF.mjs.map +1 -0
- package/dist/{runner-CNHRo1mT.d.mts → runner-DSQBurMS.d.mts} +7 -4
- package/dist/runner-DSQBurMS.d.mts.map +1 -0
- package/dist/{runner-CGlojznK.mjs → runner-Drnvs96u.mjs} +20 -24
- package/dist/{runner-CGlojznK.mjs.map → runner-Drnvs96u.mjs.map} +1 -1
- package/dist/runtime.d.mts +3 -3
- package/dist/runtime.mjs +2 -2
- package/dist/{schema-Djdlfi5G.mjs → schema-CI9mYPX3.mjs} +4 -4
- package/dist/{schema-Djdlfi5G.mjs.map → schema-CI9mYPX3.mjs.map} +1 -1
- package/dist/{search-By-NN3da.mjs → search-DKz_mGBP.mjs} +4 -4
- package/dist/{search-By-NN3da.mjs.map → search-DKz_mGBP.mjs.map} +1 -1
- package/dist/{sections-DcBIlOq1.mjs → sections-DBbCDIAT.mjs} +3 -3
- package/dist/{sections-DcBIlOq1.mjs.map → sections-DBbCDIAT.mjs.map} +1 -1
- package/dist/seed/index.mjs +13 -13
- package/dist/{seo-bjDoq9Eg.mjs → seo-BGCyDlkb.mjs} +2 -2
- package/dist/{seo-bjDoq9Eg.mjs.map → seo-BGCyDlkb.mjs.map} +1 -1
- package/dist/{seo-BoR4wCUh.mjs → seo-Dq707mNQ.mjs} +5 -3
- package/dist/seo-Dq707mNQ.mjs.map +1 -0
- package/dist/{service-BuuTdGAT.mjs → service-B0H7U1Y9.mjs} +2 -2
- package/dist/{service-BuuTdGAT.mjs.map → service-B0H7U1Y9.mjs.map} +1 -1
- package/dist/{settings-hcubRfkr.mjs → settings-BSXRtTzk.mjs} +3 -3
- package/dist/{settings-hcubRfkr.mjs.map → settings-BSXRtTzk.mjs.map} +1 -1
- package/dist/{settings-CJnKiWuR.mjs → settings-DfwNyQkf.mjs} +3 -3
- package/dist/{settings-CJnKiWuR.mjs.map → settings-DfwNyQkf.mjs.map} +1 -1
- package/dist/{taxonomies-CLs9HPE2.mjs → taxonomies-4vx0nmMr.mjs} +4 -4
- package/dist/{taxonomies-CLs9HPE2.mjs.map → taxonomies-4vx0nmMr.mjs.map} +1 -1
- package/dist/{taxonomies-WamPVA2x.mjs → taxonomies-CcvrMLbR.mjs} +7 -7
- package/dist/{taxonomies-WamPVA2x.mjs.map → taxonomies-CcvrMLbR.mjs.map} +1 -1
- package/dist/{taxonomy-D4Uc2LsZ.mjs → taxonomy-zqGQUqgu.mjs} +3 -3
- package/dist/{taxonomy-D4Uc2LsZ.mjs.map → taxonomy-zqGQUqgu.mjs.map} +1 -1
- package/dist/{transport-DOxLfUir.d.mts → transport-C2MGqtL6.d.mts} +1 -1
- package/dist/{transport-DOxLfUir.d.mts.map → transport-C2MGqtL6.d.mts.map} +1 -1
- package/dist/{types-ByV5sgsv.mjs → types-B0bmgwMG.mjs} +2 -2
- package/dist/{types-ByV5sgsv.mjs.map → types-B0bmgwMG.mjs.map} +1 -1
- package/dist/{user-D3BD5zdT.mjs → user-hUSOaIJy.mjs} +2 -2
- package/dist/{user-D3BD5zdT.mjs.map → user-hUSOaIJy.mjs.map} +1 -1
- package/dist/{validate-mz87i8_1.mjs → validate-IGltez8n.mjs} +2 -2
- package/dist/{validate-mz87i8_1.mjs.map → validate-IGltez8n.mjs.map} +1 -1
- package/dist/{validation-DKHhXjPr.mjs → validation-Bmymau7y.mjs} +6 -6
- package/dist/{validation-DKHhXjPr.mjs.map → validation-Bmymau7y.mjs.map} +1 -1
- package/dist/version-ITD3PlQd.mjs +7 -0
- package/dist/{version-Ct7C6RSo.mjs.map → version-ITD3PlQd.mjs.map} +1 -1
- package/dist/{widgets-lShIQXU5.mjs → widgets-yHQa4c6c.mjs} +2 -2
- package/dist/{widgets-lShIQXU5.mjs.map → widgets-yHQa4c6c.mjs.map} +1 -1
- package/dist/{zod-generator-dvxgmd1M.mjs → zod-generator-B80aap1J.mjs} +2 -2
- package/dist/{zod-generator-dvxgmd1M.mjs.map → zod-generator-B80aap1J.mjs.map} +1 -1
- package/package.json +7 -7
- package/src/api/errors.ts +2 -0
- package/src/api/handlers/index.ts +2 -0
- package/src/api/handlers/registry.ts +69 -1
- package/src/api/handlers/seo.ts +16 -1
- package/src/api/handlers/snapshot.ts +1 -1
- package/src/astro/integration/index.ts +26 -0
- package/src/astro/integration/routes.ts +5 -0
- package/src/astro/integration/runtime.ts +8 -0
- package/src/astro/middleware.ts +4 -0
- package/src/astro/public-plugin-api-routes.ts +41 -0
- package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +4 -0
- package/src/astro/routes/api/admin/plugins/registry/artifact.ts +388 -0
- package/src/astro/routes/api/admin/plugins/registry/install.ts +7 -1
- package/src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts +22 -0
- package/src/astro/routes/api/import/wordpress/rewrite-urls.ts +5 -2
- package/src/astro/routes/sitemap-[collection].xml.ts +114 -14
- package/src/astro/types.ts +14 -0
- package/src/content/converters/portable-text-to-prosemirror.ts +35 -11
- package/src/database/connection.ts +3 -10
- package/src/database/errors.ts +14 -0
- package/src/database/index.ts +3 -1
- package/src/database/migrations/runner.ts +29 -21
- package/src/emdash-runtime.ts +1 -0
- package/src/i18n/resolve.ts +152 -0
- package/src/index.ts +2 -0
- package/src/loader.ts +133 -59
- package/src/plugin-utils.ts +23 -0
- package/src/query.ts +24 -5
- package/src/utils/db-errors.ts +24 -0
- package/dist/connection-2igzM-AT.mjs +0 -57
- package/dist/connection-2igzM-AT.mjs.map +0 -1
- package/dist/db-errors-CGN9kJfo.mjs.map +0 -1
- package/dist/error-CPh_8eLq.mjs.map +0 -1
- package/dist/index-Bv1Wf1zB.d.mts.map +0 -1
- package/dist/loader-Chm5h7Gr.mjs.map +0 -1
- package/dist/menus-C75SSmRy.mjs.map +0 -1
- package/dist/query-BJn8TOPk.mjs.map +0 -1
- package/dist/resolve-Cj98DuqN.mjs +0 -39
- package/dist/resolve-Cj98DuqN.mjs.map +0 -1
- package/dist/runner-CNHRo1mT.d.mts.map +0 -1
- package/dist/seo-BoR4wCUh.mjs.map +0 -1
- package/dist/version-Ct7C6RSo.mjs +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../../types-
|
|
3
|
-
import { a as unwrapResult, t as apiError } from "../../../../../../error-
|
|
4
|
-
import { n as requirePerm } from "../../../../../../authorize-
|
|
2
|
+
import "../../../../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { a as unwrapResult, t as apiError } from "../../../../../../error-ChfADBuu.mjs";
|
|
4
|
+
import { n as requirePerm } from "../../../../../../authorize-Bn4S4DUT.mjs";
|
|
5
5
|
import { hasPermission } from "@emdash-cms/auth";
|
|
6
6
|
|
|
7
7
|
//#region src/astro/routes/api/content/[collection]/[id]/translations.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../../types-
|
|
3
|
-
import { a as unwrapResult, o as mapErrorStatus, t as apiError } from "../../../../../../error-
|
|
4
|
-
import { t as requireOwnerPerm } from "../../../../../../authorize-
|
|
2
|
+
import "../../../../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { a as unwrapResult, o as mapErrorStatus, t as apiError } from "../../../../../../error-ChfADBuu.mjs";
|
|
4
|
+
import { t as requireOwnerPerm } from "../../../../../../authorize-Bn4S4DUT.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/astro/routes/api/content/[collection]/[id]/unpublish.ts
|
|
7
7
|
const prerender = false;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
3
|
-
import { a as unwrapResult, o as mapErrorStatus, t as apiError } from "../../../../../error-
|
|
4
|
-
import { n as parseBody, t as isParseError } from "../../../../../parse-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { a as unwrapResult, o as mapErrorStatus, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
4
|
+
import { n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
5
5
|
import { pn as contentUpdateBody } from "../../../../../redirects-COMLwsV5.mjs";
|
|
6
6
|
import "../../../../../setup-Cf_TyOv5.mjs";
|
|
7
7
|
import "../../../../../api/schemas/index.mjs";
|
|
8
|
-
import { n as requirePerm, t as requireOwnerPerm } from "../../../../../authorize-
|
|
8
|
+
import { n as requirePerm, t as requireOwnerPerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
9
9
|
import { hasPermission } from "@emdash-cms/auth";
|
|
10
10
|
|
|
11
11
|
//#region src/astro/routes/api/content/[collection]/[id].ts
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
3
|
-
import { a as unwrapResult, o as mapErrorStatus, t as apiError } from "../../../../../error-
|
|
4
|
-
import { i as parseQuery, n as parseBody, t as isParseError } from "../../../../../parse-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { a as unwrapResult, o as mapErrorStatus, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
4
|
+
import { i as parseQuery, n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
5
5
|
import { $t as contentCreateBody, tn as contentListQuery } from "../../../../../redirects-COMLwsV5.mjs";
|
|
6
6
|
import "../../../../../setup-Cf_TyOv5.mjs";
|
|
7
7
|
import "../../../../../api/schemas/index.mjs";
|
|
8
|
-
import { n as requirePerm, t as requireOwnerPerm } from "../../../../../authorize-
|
|
8
|
+
import { n as requirePerm, t as requireOwnerPerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
9
9
|
import { hasPermission } from "@emdash-cms/auth";
|
|
10
10
|
|
|
11
11
|
//#region src/astro/routes/api/content/[collection]/index.ts
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
3
|
-
import { a as unwrapResult, t as apiError } from "../../../../../error-
|
|
4
|
-
import { i as parseQuery, t as isParseError } from "../../../../../parse-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { a as unwrapResult, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
4
|
+
import { i as parseQuery, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
5
5
|
import { fn as contentTrashQuery } from "../../../../../redirects-COMLwsV5.mjs";
|
|
6
6
|
import "../../../../../setup-Cf_TyOv5.mjs";
|
|
7
7
|
import "../../../../../api/schemas/index.mjs";
|
|
8
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
8
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/astro/routes/api/content/[collection]/trash.ts
|
|
11
11
|
const prerender = false;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "../../../content-
|
|
1
|
+
import "../../../content-8voQNTXX.mjs";
|
|
2
2
|
import "../../../base64-CqR-7kqF.mjs";
|
|
3
|
-
import "../../../types-
|
|
4
|
-
import "../../../media-
|
|
5
|
-
import "../../../user-
|
|
6
|
-
import { t as handleDashboardStats } from "../../../dashboard-
|
|
7
|
-
import { a as unwrapResult, r as handleError, t as apiError } from "../../../error-
|
|
8
|
-
import { n as requirePerm } from "../../../authorize-
|
|
3
|
+
import "../../../types-B0bmgwMG.mjs";
|
|
4
|
+
import "../../../media-CKQd8AYU.mjs";
|
|
5
|
+
import "../../../user-hUSOaIJy.mjs";
|
|
6
|
+
import { t as handleDashboardStats } from "../../../dashboard-BeaFSPpx.mjs";
|
|
7
|
+
import { a as unwrapResult, r as handleError, t as apiError } from "../../../error-ChfADBuu.mjs";
|
|
8
|
+
import { n as requirePerm } from "../../../authorize-Bn4S4DUT.mjs";
|
|
9
9
|
|
|
10
10
|
//#region src/astro/routes/api/dashboard.ts
|
|
11
11
|
const prerender = false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../types-
|
|
3
|
-
import { n as apiSuccess, t as apiError } from "../../../../error-
|
|
2
|
+
import "../../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { n as apiSuccess, t as apiError } from "../../../../error-ChfADBuu.mjs";
|
|
4
4
|
import { i as getDevEmails, n as clearDevEmails } from "../../../../email-console-CubRll9q.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/astro/routes/api/dev/emails.ts
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../types-
|
|
2
|
+
import "../../../../types-B0bmgwMG.mjs";
|
|
3
3
|
import { t as SsrfError } from "../../../../ssrf-MZ-zrG6-.mjs";
|
|
4
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../error-
|
|
5
|
-
import { n as parseBody, t as isParseError } from "../../../../parse-
|
|
4
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../error-ChfADBuu.mjs";
|
|
5
|
+
import { n as parseBody, t as isParseError } from "../../../../parse-DHbXfvxO.mjs";
|
|
6
6
|
import "../../../../redirects-COMLwsV5.mjs";
|
|
7
7
|
import { o as importProbeBody } from "../../../../setup-Cf_TyOv5.mjs";
|
|
8
8
|
import "../../../../api/schemas/index.mjs";
|
|
9
9
|
import { l as probeUrl } from "../../../../import-DG80rC_I.mjs";
|
|
10
10
|
import "../../../../ssrf-BIcd-aXW.mjs";
|
|
11
11
|
import "../../../../utils-C3wTAP-P.mjs";
|
|
12
|
-
import { n as requirePerm } from "../../../../authorize-
|
|
12
|
+
import { n as requirePerm } from "../../../../authorize-Bn4S4DUT.mjs";
|
|
13
13
|
|
|
14
14
|
//#region src/astro/routes/api/import/probe.ts
|
|
15
15
|
const prerender = false;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
3
|
import { r as RESERVED_COLLECTION_SLUGS } from "../../../../../types-DSZl1Dsv.mjs";
|
|
4
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
5
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
4
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
5
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
6
6
|
import mime from "mime/lite";
|
|
7
7
|
import { SchemaRegistry, parseWxrString } from "emdash";
|
|
8
8
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../../../../../options-DhV-gwJb.mjs";
|
|
2
2
|
import "../../../../../types-DaqNzqVt.mjs";
|
|
3
3
|
import "../../../../../types-DGHWRQgr.mjs";
|
|
4
|
-
import "../../../../../bylines-
|
|
5
|
-
import "../../../../../index-
|
|
6
|
-
import "../../../../../runner-
|
|
4
|
+
import "../../../../../bylines-DWLnr6-k.mjs";
|
|
5
|
+
import "../../../../../index-D_p_jIP1.mjs";
|
|
6
|
+
import "../../../../../runner-DSQBurMS.mjs";
|
|
7
7
|
import "../../../../../index-CC42STEm.mjs";
|
|
8
8
|
import "../../../../../types-bYmRn_Uy.mjs";
|
|
9
9
|
import "../../../../../validate-DQtHw9NT.mjs";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "../../../../../dialect-helpers-BKCvISIQ.mjs";
|
|
2
2
|
import { n as slugify } from "../../../../../slugify-Cjh1ssOZ.mjs";
|
|
3
3
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
4
|
-
import "../../../../../types-
|
|
5
|
-
import { t as TaxonomyRepository } from "../../../../../taxonomy-
|
|
6
|
-
import { t as BylineRepository } from "../../../../../byline-
|
|
4
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
5
|
+
import { t as TaxonomyRepository } from "../../../../../taxonomy-zqGQUqgu.mjs";
|
|
6
|
+
import { t as BylineRepository } from "../../../../../byline-BDylH_m4.mjs";
|
|
7
7
|
import "../../../../../request-cache-dzCt8TZB.mjs";
|
|
8
|
-
import "../../../../../loader-
|
|
9
|
-
import {
|
|
10
|
-
import { l as invalidateTermCache } from "../../../../../taxonomies-
|
|
11
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
8
|
+
import "../../../../../loader-D-vIJjfY.mjs";
|
|
9
|
+
import { i as resolveLocaleChain } from "../../../../../resolve-D6sM-SgF.mjs";
|
|
10
|
+
import { l as invalidateTermCache } from "../../../../../taxonomies-CcvrMLbR.mjs";
|
|
11
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
12
12
|
import { m as resolveImportByline } from "../../../../../utils-C3wTAP-P.mjs";
|
|
13
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
13
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
14
14
|
import { sanitizeSlug } from "./analyze.mjs";
|
|
15
15
|
import { gutenbergToPortableText } from "@emdash-cms/gutenberg-to-portable-text";
|
|
16
16
|
import { ContentRepository, importReusableBlocksAsSections, parseWxrDate, parseWxrString } from "emdash";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
3
|
import { a as validateExternalUrl, r as ssrfSafeFetch, t as SsrfError } from "../../../../../ssrf-MZ-zrG6-.mjs";
|
|
4
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
5
|
-
import { n as parseBody, t as isParseError } from "../../../../../parse-
|
|
4
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
5
|
+
import { n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
6
6
|
import "../../../../../redirects-COMLwsV5.mjs";
|
|
7
7
|
import { s as wpMediaImportBody } from "../../../../../setup-Cf_TyOv5.mjs";
|
|
8
8
|
import "../../../../../api/schemas/index.mjs";
|
|
9
9
|
import "../../../../../ssrf-BIcd-aXW.mjs";
|
|
10
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
10
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
11
11
|
import { ulid } from "ulidx";
|
|
12
12
|
import mime from "mime/lite";
|
|
13
13
|
import * as path from "node:path";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
3
|
import { t as FIELD_TYPES } from "../../../../../types-DSZl1Dsv.mjs";
|
|
4
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
5
|
-
import { n as parseBody, t as isParseError } from "../../../../../parse-
|
|
4
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
5
|
+
import { n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
6
6
|
import "../../../../../redirects-COMLwsV5.mjs";
|
|
7
7
|
import { u as wpPrepareBody } from "../../../../../setup-Cf_TyOv5.mjs";
|
|
8
8
|
import "../../../../../api/schemas/index.mjs";
|
|
9
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
9
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
10
10
|
import { capitalize, sanitizeSlug, singularize } from "./analyze.mjs";
|
|
11
11
|
|
|
12
12
|
//#region src/astro/routes/api/import/wordpress/prepare.ts
|
|
@@ -31,7 +31,7 @@ const POST = async ({ request, locals }) => {
|
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
async function prepareImport(db, request) {
|
|
34
|
-
const { SchemaRegistry } = await import("../../../../../registry-
|
|
34
|
+
const { SchemaRegistry } = await import("../../../../../registry-Cyp-dx6J.mjs").then((n) => n.r);
|
|
35
35
|
const registry = new SchemaRegistry(db);
|
|
36
36
|
const result = {
|
|
37
37
|
success: true,
|
|
@@ -97,7 +97,7 @@ async function prepareImport(db, request) {
|
|
|
97
97
|
"post",
|
|
98
98
|
"page"
|
|
99
99
|
].includes(collectionSlug)) {
|
|
100
|
-
const { FTSManager } = await import("../../../../../fts-manager-
|
|
100
|
+
const { FTSManager } = await import("../../../../../fts-manager-C_b-4x8u.mjs").then((n) => n.n);
|
|
101
101
|
const ftsManager = new FTSManager(db);
|
|
102
102
|
if ((await ftsManager.getSearchableFields(collectionSlug)).length > 0) try {
|
|
103
103
|
await ftsManager.enableSearch(collectionSlug);
|
|
@@ -7,6 +7,16 @@ declare function getBaseUrl(url: string): string;
|
|
|
7
7
|
* Build a map of base URLs to new URLs for flexible matching
|
|
8
8
|
*/
|
|
9
9
|
declare function buildBaseUrlMap(urlMap: Record<string, string>): Map<string, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Extract the URL to match from a stored media field value.
|
|
12
|
+
*
|
|
13
|
+
* Image/file columns hold a JSON-stringified MediaValue
|
|
14
|
+
* (e.g. `{"provider":"external","id":"","src":"https://.../hero.jpg"}`), but legacy
|
|
15
|
+
* rows may hold a bare URL string. Returns the inner `src` for a MediaValue, otherwise
|
|
16
|
+
* the value unchanged. Without this, the whole JSON blob is passed to findMatchingUrl()
|
|
17
|
+
* and the embedded URL is never matched.
|
|
18
|
+
*/
|
|
19
|
+
declare function extractMediaUrl(value: string): string;
|
|
10
20
|
/**
|
|
11
21
|
* Find matching new URL for a given URL, checking exact, base, and WordPress image-size matches
|
|
12
22
|
*/
|
|
@@ -45,5 +55,5 @@ declare function rewriteStringUrls(value: string, exactMap: Record<string, strin
|
|
|
45
55
|
urlsRewritten: number;
|
|
46
56
|
};
|
|
47
57
|
//#endregion
|
|
48
|
-
export { PortableTextBlock, buildBaseUrlMap, findMatchingUrl, getBaseUrl, rewritePortableTextUrls, rewriteStringUrls };
|
|
58
|
+
export { PortableTextBlock, buildBaseUrlMap, extractMediaUrl, findMatchingUrl, getBaseUrl, rewritePortableTextUrls, rewriteStringUrls };
|
|
49
59
|
//# sourceMappingURL=rewrite-url-helpers.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-url-helpers.d.mts","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts"],"mappings":";;AAOA;;iBAAgB,UAAA,CAAW,GAAA;;;AAa3B;iBAAgB,eAAA,CAAgB,MAAA,EAAQ,MAAA,mBAAyB,GAAA
|
|
1
|
+
{"version":3,"file":"rewrite-url-helpers.d.mts","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts"],"mappings":";;AAOA;;iBAAgB,UAAA,CAAW,GAAA;;;AAa3B;iBAAgB,eAAA,CAAgB,MAAA,EAAQ,MAAA,mBAAyB,GAAA;;;;;;;;AAkBjE;;iBAAgB,eAAA,CAAgB,KAAA;;;AAgBhC;iBAAgB,eAAA,CACf,GAAA,UACA,QAAA,EAAU,MAAA,kBACV,OAAA,EAAS,GAAA;;;;UAuBO,iBAAA;EAChB,KAAA;EACA,IAAA;EACA,KAAA;IACC,KAAA;IACA,IAAA;IACA,GAAA;EAAA;EAED,IAAA;EAEA,MAAA,GAAS,iBAAA;EACT,OAAA,GAAU,KAAA;IAAQ,OAAA,GAAU,iBAAA;EAAA;EAAA,CAC3B,GAAA;AAAA;;;;iBAMc,uBAAA,CACf,MAAA,EAAQ,iBAAA,IACR,QAAA,EAAU,MAAA,kBACV,OAAA,EAAS,GAAA;EACL,OAAA;EAAkB,aAAA;AAAA;;;;iBAuDP,iBAAA,CACf,KAAA,UACA,QAAA,EAAU,MAAA,kBACV,OAAA,EAAS,GAAA;EACL,QAAA;EAAkB,OAAA;EAAkB,aAAA;AAAA"}
|
|
@@ -25,6 +25,22 @@ function buildBaseUrlMap(urlMap) {
|
|
|
25
25
|
return baseMap;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
+
* Extract the URL to match from a stored media field value.
|
|
29
|
+
*
|
|
30
|
+
* Image/file columns hold a JSON-stringified MediaValue
|
|
31
|
+
* (e.g. `{"provider":"external","id":"","src":"https://.../hero.jpg"}`), but legacy
|
|
32
|
+
* rows may hold a bare URL string. Returns the inner `src` for a MediaValue, otherwise
|
|
33
|
+
* the value unchanged. Without this, the whole JSON blob is passed to findMatchingUrl()
|
|
34
|
+
* and the embedded URL is never matched.
|
|
35
|
+
*/
|
|
36
|
+
function extractMediaUrl(value) {
|
|
37
|
+
try {
|
|
38
|
+
const parsed = JSON.parse(value);
|
|
39
|
+
if (parsed && typeof parsed.src === "string") return parsed.src;
|
|
40
|
+
} catch {}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
28
44
|
* Find matching new URL for a given URL, checking exact, base, and WordPress image-size matches
|
|
29
45
|
*/
|
|
30
46
|
function findMatchingUrl(url, exactMap, baseMap) {
|
|
@@ -127,5 +143,5 @@ function buildBaseUrlMatchRegex(baseUrl) {
|
|
|
127
143
|
}
|
|
128
144
|
|
|
129
145
|
//#endregion
|
|
130
|
-
export { buildBaseUrlMap, findMatchingUrl, getBaseUrl, rewritePortableTextUrls, rewriteStringUrls };
|
|
146
|
+
export { buildBaseUrlMap, extractMediaUrl, findMatchingUrl, getBaseUrl, rewritePortableTextUrls, rewriteStringUrls };
|
|
131
147
|
//# sourceMappingURL=rewrite-url-helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-url-helpers.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts"],"sourcesContent":["const REGEX_SPECIAL_CHARS = /[.*+?^${}()|[\\]\\\\]/g;\nconst WORDPRESS_IMAGE_SIZE_SUFFIX = /-\\d+x\\d+(?=\\.[^./?#]+$)/;\nconst BASE_URL_EXTENSION = /^(.+)(\\.[^./?#]+)$/;\n\n/**\n * Strip query parameters from a URL for base matching\n */\nexport function getBaseUrl(url: string): string {\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn `${parsed.origin}${parsed.pathname}`;\n\t} catch {\n\t\t// If URL parsing fails, try simple string split\n\t\treturn url.split(\"?\")[0] || url;\n\t}\n}\n\n/**\n * Build a map of base URLs to new URLs for flexible matching\n */\nexport function buildBaseUrlMap(urlMap: Record<string, string>): Map<string, string> {\n\tconst baseMap = new Map<string, string>();\n\tfor (const [oldUrl, newUrl] of Object.entries(urlMap)) {\n\t\tconst baseUrl = getBaseUrl(oldUrl);\n\t\tbaseMap.set(baseUrl, newUrl);\n\t}\n\treturn baseMap;\n}\n\n/**\n * Find matching new URL for a given URL, checking exact, base, and WordPress image-size matches\n */\nexport function findMatchingUrl(\n\turl: string,\n\texactMap: Record<string, string>,\n\tbaseMap: Map<string, string>,\n): string | null {\n\tif (exactMap[url]) {\n\t\treturn exactMap[url];\n\t}\n\n\tconst baseUrl = getBaseUrl(url);\n\tconst baseMatch = baseMap.get(baseUrl);\n\tif (baseMatch) {\n\t\treturn baseMatch;\n\t}\n\n\tconst wordPressImageMatch = baseMap.get(stripWordPressImageSizeSuffix(baseUrl));\n\tif (wordPressImageMatch) {\n\t\treturn wordPressImageMatch;\n\t}\n\n\treturn null;\n}\n\n/**\n * Portable Text block type (simplified for URL rewriting)\n */\nexport interface PortableTextBlock {\n\t_type: string;\n\t_key?: string;\n\tasset?: {\n\t\t_type?: string;\n\t\t_ref?: string;\n\t\turl?: string;\n\t};\n\tlink?: string;\n\t// For nested content like galleries\n\timages?: PortableTextBlock[];\n\tcolumns?: Array<{ content?: PortableTextBlock[] }>;\n\t[key: string]: unknown;\n}\n\n/**\n * Rewrite URLs in a Portable Text array, returning whether any changes were made\n */\nexport function rewritePortableTextUrls(\n\tblocks: PortableTextBlock[],\n\texactMap: Record<string, string>,\n\tbaseMap: Map<string, string>,\n): { changed: boolean; urlsRewritten: number } {\n\tlet changed = false;\n\tlet urlsRewritten = 0;\n\n\tfor (const block of blocks) {\n\t\t// Handle image blocks\n\t\tif (block._type === \"image\" && block.asset?.url) {\n\t\t\tconst newUrl = findMatchingUrl(block.asset.url, exactMap, baseMap);\n\t\t\tif (newUrl) {\n\t\t\t\tblock.asset.url = newUrl;\n\t\t\t\tblock.asset._ref = newUrl; // Also update the reference\n\t\t\t\tchanged = true;\n\t\t\t\turlsRewritten++;\n\t\t\t}\n\t\t}\n\n\t\t// Handle image link URLs (for linked images)\n\t\tif (block._type === \"image\" && block.link) {\n\t\t\tconst newUrl = findMatchingUrl(block.link, exactMap, baseMap);\n\t\t\tif (newUrl) {\n\t\t\t\tblock.link = newUrl;\n\t\t\t\tchanged = true;\n\t\t\t\turlsRewritten++;\n\t\t\t}\n\t\t}\n\n\t\t// Handle gallery blocks with nested images\n\t\tif (block._type === \"gallery\" && Array.isArray(block.images)) {\n\t\t\tconst result = rewritePortableTextUrls(block.images, exactMap, baseMap);\n\t\t\tif (result.changed) {\n\t\t\t\tchanged = true;\n\t\t\t\turlsRewritten += result.urlsRewritten;\n\t\t\t}\n\t\t}\n\n\t\t// Handle columns blocks with nested content\n\t\tif (block._type === \"columns\" && Array.isArray(block.columns)) {\n\t\t\tfor (const column of block.columns) {\n\t\t\t\tif (Array.isArray(column.content)) {\n\t\t\t\t\tconst result = rewritePortableTextUrls(column.content, exactMap, baseMap);\n\t\t\t\t\tif (result.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\turlsRewritten += result.urlsRewritten;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { changed, urlsRewritten };\n}\n\n/**\n * Rewrite URLs in a string field using simple string replacement\n */\nexport function rewriteStringUrls(\n\tvalue: string,\n\texactMap: Record<string, string>,\n\tbaseMap: Map<string, string>,\n): { newValue: string; changed: boolean; urlsRewritten: number } {\n\tlet newValue = value;\n\tlet changed = false;\n\tlet urlsRewritten = 0;\n\n\t// Try exact matches first\n\tfor (const [oldUrl, newUrl] of Object.entries(exactMap)) {\n\t\tif (newValue.includes(oldUrl)) {\n\t\t\tnewValue = newValue.split(oldUrl).join(newUrl);\n\t\t\tchanged = true;\n\t\t\turlsRewritten++;\n\t\t}\n\t}\n\n\t// For base URL matching in strings, we need to be more careful\n\t// Only match if we find a URL that starts with the base\n\tfor (const [baseUrl, newUrl] of baseMap.entries()) {\n\t\t// Look for the base URL followed by optional query string or end\n\t\tconst regex = buildBaseUrlMatchRegex(baseUrl);\n\t\tconst matches = newValue.match(regex);\n\t\tif (matches) {\n\t\t\tfor (const match of matches) {\n\t\t\t\t// Don't replace if we already have an exact match in the map\n\t\t\t\tif (!exactMap[match]) {\n\t\t\t\t\tnewValue = newValue.split(match).join(newUrl);\n\t\t\t\t\tchanged = true;\n\t\t\t\t\turlsRewritten++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { newValue, changed, urlsRewritten };\n}\n\n/**\n * Escape special regex characters in a string\n */\nfunction escapeRegExp(string: string): string {\n\treturn string.replace(REGEX_SPECIAL_CHARS, \"\\\\$&\");\n}\n\nfunction stripWordPressImageSizeSuffix(url: string): string {\n\treturn url.replace(WORDPRESS_IMAGE_SIZE_SUFFIX, \"\");\n}\n\nfunction buildBaseUrlMatchRegex(baseUrl: string): RegExp {\n\tconst extensionMatch = BASE_URL_EXTENSION.exec(baseUrl);\n\tconst basePattern = extensionMatch\n\t\t? `${escapeRegExp(extensionMatch[1])}(?:-\\\\d+x\\\\d+)?${escapeRegExp(extensionMatch[2])}`\n\t\t: escapeRegExp(baseUrl);\n\n\treturn new RegExp(\n\t\t`${basePattern}(\\\\?[^\"'\\\\s]*)?(?=$|[\"'\\\\s<>)\\\\],;:!?]|\\\\.(?=$|[\"'\\\\s<>)\\\\]]))`,\n\t\t\"g\",\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rewrite-url-helpers.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-url-helpers.ts"],"sourcesContent":["const REGEX_SPECIAL_CHARS = /[.*+?^${}()|[\\]\\\\]/g;\nconst WORDPRESS_IMAGE_SIZE_SUFFIX = /-\\d+x\\d+(?=\\.[^./?#]+$)/;\nconst BASE_URL_EXTENSION = /^(.+)(\\.[^./?#]+)$/;\n\n/**\n * Strip query parameters from a URL for base matching\n */\nexport function getBaseUrl(url: string): string {\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\treturn `${parsed.origin}${parsed.pathname}`;\n\t} catch {\n\t\t// If URL parsing fails, try simple string split\n\t\treturn url.split(\"?\")[0] || url;\n\t}\n}\n\n/**\n * Build a map of base URLs to new URLs for flexible matching\n */\nexport function buildBaseUrlMap(urlMap: Record<string, string>): Map<string, string> {\n\tconst baseMap = new Map<string, string>();\n\tfor (const [oldUrl, newUrl] of Object.entries(urlMap)) {\n\t\tconst baseUrl = getBaseUrl(oldUrl);\n\t\tbaseMap.set(baseUrl, newUrl);\n\t}\n\treturn baseMap;\n}\n\n/**\n * Extract the URL to match from a stored media field value.\n *\n * Image/file columns hold a JSON-stringified MediaValue\n * (e.g. `{\"provider\":\"external\",\"id\":\"\",\"src\":\"https://.../hero.jpg\"}`), but legacy\n * rows may hold a bare URL string. Returns the inner `src` for a MediaValue, otherwise\n * the value unchanged. Without this, the whole JSON blob is passed to findMatchingUrl()\n * and the embedded URL is never matched.\n */\nexport function extractMediaUrl(value: string): string {\n\ttry {\n\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- shape validated below\n\t\tconst parsed = JSON.parse(value) as { src?: unknown };\n\t\tif (parsed && typeof parsed.src === \"string\") {\n\t\t\treturn parsed.src;\n\t\t}\n\t} catch {\n\t\t// Not JSON — treat the column value as a bare URL.\n\t}\n\treturn value;\n}\n\n/**\n * Find matching new URL for a given URL, checking exact, base, and WordPress image-size matches\n */\nexport function findMatchingUrl(\n\turl: string,\n\texactMap: Record<string, string>,\n\tbaseMap: Map<string, string>,\n): string | null {\n\tif (exactMap[url]) {\n\t\treturn exactMap[url];\n\t}\n\n\tconst baseUrl = getBaseUrl(url);\n\tconst baseMatch = baseMap.get(baseUrl);\n\tif (baseMatch) {\n\t\treturn baseMatch;\n\t}\n\n\tconst wordPressImageMatch = baseMap.get(stripWordPressImageSizeSuffix(baseUrl));\n\tif (wordPressImageMatch) {\n\t\treturn wordPressImageMatch;\n\t}\n\n\treturn null;\n}\n\n/**\n * Portable Text block type (simplified for URL rewriting)\n */\nexport interface PortableTextBlock {\n\t_type: string;\n\t_key?: string;\n\tasset?: {\n\t\t_type?: string;\n\t\t_ref?: string;\n\t\turl?: string;\n\t};\n\tlink?: string;\n\t// For nested content like galleries\n\timages?: PortableTextBlock[];\n\tcolumns?: Array<{ content?: PortableTextBlock[] }>;\n\t[key: string]: unknown;\n}\n\n/**\n * Rewrite URLs in a Portable Text array, returning whether any changes were made\n */\nexport function rewritePortableTextUrls(\n\tblocks: PortableTextBlock[],\n\texactMap: Record<string, string>,\n\tbaseMap: Map<string, string>,\n): { changed: boolean; urlsRewritten: number } {\n\tlet changed = false;\n\tlet urlsRewritten = 0;\n\n\tfor (const block of blocks) {\n\t\t// Handle image blocks\n\t\tif (block._type === \"image\" && block.asset?.url) {\n\t\t\tconst newUrl = findMatchingUrl(block.asset.url, exactMap, baseMap);\n\t\t\tif (newUrl) {\n\t\t\t\tblock.asset.url = newUrl;\n\t\t\t\tblock.asset._ref = newUrl; // Also update the reference\n\t\t\t\tchanged = true;\n\t\t\t\turlsRewritten++;\n\t\t\t}\n\t\t}\n\n\t\t// Handle image link URLs (for linked images)\n\t\tif (block._type === \"image\" && block.link) {\n\t\t\tconst newUrl = findMatchingUrl(block.link, exactMap, baseMap);\n\t\t\tif (newUrl) {\n\t\t\t\tblock.link = newUrl;\n\t\t\t\tchanged = true;\n\t\t\t\turlsRewritten++;\n\t\t\t}\n\t\t}\n\n\t\t// Handle gallery blocks with nested images\n\t\tif (block._type === \"gallery\" && Array.isArray(block.images)) {\n\t\t\tconst result = rewritePortableTextUrls(block.images, exactMap, baseMap);\n\t\t\tif (result.changed) {\n\t\t\t\tchanged = true;\n\t\t\t\turlsRewritten += result.urlsRewritten;\n\t\t\t}\n\t\t}\n\n\t\t// Handle columns blocks with nested content\n\t\tif (block._type === \"columns\" && Array.isArray(block.columns)) {\n\t\t\tfor (const column of block.columns) {\n\t\t\t\tif (Array.isArray(column.content)) {\n\t\t\t\t\tconst result = rewritePortableTextUrls(column.content, exactMap, baseMap);\n\t\t\t\t\tif (result.changed) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\turlsRewritten += result.urlsRewritten;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { changed, urlsRewritten };\n}\n\n/**\n * Rewrite URLs in a string field using simple string replacement\n */\nexport function rewriteStringUrls(\n\tvalue: string,\n\texactMap: Record<string, string>,\n\tbaseMap: Map<string, string>,\n): { newValue: string; changed: boolean; urlsRewritten: number } {\n\tlet newValue = value;\n\tlet changed = false;\n\tlet urlsRewritten = 0;\n\n\t// Try exact matches first\n\tfor (const [oldUrl, newUrl] of Object.entries(exactMap)) {\n\t\tif (newValue.includes(oldUrl)) {\n\t\t\tnewValue = newValue.split(oldUrl).join(newUrl);\n\t\t\tchanged = true;\n\t\t\turlsRewritten++;\n\t\t}\n\t}\n\n\t// For base URL matching in strings, we need to be more careful\n\t// Only match if we find a URL that starts with the base\n\tfor (const [baseUrl, newUrl] of baseMap.entries()) {\n\t\t// Look for the base URL followed by optional query string or end\n\t\tconst regex = buildBaseUrlMatchRegex(baseUrl);\n\t\tconst matches = newValue.match(regex);\n\t\tif (matches) {\n\t\t\tfor (const match of matches) {\n\t\t\t\t// Don't replace if we already have an exact match in the map\n\t\t\t\tif (!exactMap[match]) {\n\t\t\t\t\tnewValue = newValue.split(match).join(newUrl);\n\t\t\t\t\tchanged = true;\n\t\t\t\t\turlsRewritten++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { newValue, changed, urlsRewritten };\n}\n\n/**\n * Escape special regex characters in a string\n */\nfunction escapeRegExp(string: string): string {\n\treturn string.replace(REGEX_SPECIAL_CHARS, \"\\\\$&\");\n}\n\nfunction stripWordPressImageSizeSuffix(url: string): string {\n\treturn url.replace(WORDPRESS_IMAGE_SIZE_SUFFIX, \"\");\n}\n\nfunction buildBaseUrlMatchRegex(baseUrl: string): RegExp {\n\tconst extensionMatch = BASE_URL_EXTENSION.exec(baseUrl);\n\tconst basePattern = extensionMatch\n\t\t? `${escapeRegExp(extensionMatch[1])}(?:-\\\\d+x\\\\d+)?${escapeRegExp(extensionMatch[2])}`\n\t\t: escapeRegExp(baseUrl);\n\n\treturn new RegExp(\n\t\t`${basePattern}(\\\\?[^\"'\\\\s]*)?(?=$|[\"'\\\\s<>)\\\\],;:!?]|\\\\.(?=$|[\"'\\\\s<>)\\\\]]))`,\n\t\t\"g\",\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-urls.d.mts","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-urls.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"rewrite-urls.d.mts","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-urls.ts"],"mappings":";;;UAiCiB,iBAAA;EAQA;EANhB,OAAA;EAMgD;EAJhD,YAAA,EAAc,MAAA;EAIuC;EAFrD,aAAA;EAKqB;EAHrB,MAAA,EAAQ,KAAA;IAAQ,UAAA;IAAoB,EAAA;IAAY,KAAA;EAAA;AAAA;AAAA,cAGpC,SAAA;AAAA,cAEA,IAAA,EAAM,QAAA"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as validateIdentifier } from "../../../../../validate-VPnKoIzW.mjs";
|
|
2
2
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
3
|
-
import "../../../../../types-
|
|
3
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
4
4
|
import { t as normalizeMediaValue } from "../../../../../normalize-CN5kRSMC.mjs";
|
|
5
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
6
|
-
import { n as parseBody, t as isParseError } from "../../../../../parse-
|
|
5
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
6
|
+
import { n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
7
7
|
import "../../../../../redirects-COMLwsV5.mjs";
|
|
8
8
|
import { d as wpRewriteUrlsBody } from "../../../../../setup-Cf_TyOv5.mjs";
|
|
9
9
|
import "../../../../../api/schemas/index.mjs";
|
|
10
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
11
|
-
import { buildBaseUrlMap, findMatchingUrl, rewritePortableTextUrls, rewriteStringUrls } from "./rewrite-url-helpers.mjs";
|
|
10
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
11
|
+
import { buildBaseUrlMap, extractMediaUrl, findMatchingUrl, rewritePortableTextUrls, rewriteStringUrls } from "./rewrite-url-helpers.mjs";
|
|
12
12
|
import { sql } from "kysely";
|
|
13
13
|
|
|
14
14
|
//#region src/astro/routes/api/import/wordpress/rewrite-urls.ts
|
|
@@ -34,7 +34,7 @@ const POST = async ({ request, locals }) => {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
async function rewriteUrls(db, urlMap, getProvider, collections) {
|
|
37
|
-
const { SchemaRegistry } = await import("../../../../../registry-
|
|
37
|
+
const { SchemaRegistry } = await import("../../../../../registry-Cyp-dx6J.mjs").then((n) => n.r);
|
|
38
38
|
const registry = new SchemaRegistry(db);
|
|
39
39
|
const result = {
|
|
40
40
|
updated: 0,
|
|
@@ -96,7 +96,7 @@ async function rewriteUrls(db, urlMap, getProvider, collections) {
|
|
|
96
96
|
for (const field of mediaFields) {
|
|
97
97
|
const value = row[field.slug];
|
|
98
98
|
if (!value || typeof value !== "string") continue;
|
|
99
|
-
const newUrl = findMatchingUrl(value, urlMap, baseMap);
|
|
99
|
+
const newUrl = findMatchingUrl(extractMediaUrl(value), urlMap, baseMap);
|
|
100
100
|
if (newUrl) {
|
|
101
101
|
try {
|
|
102
102
|
const normalized = await normalizeMediaValue(newUrl, getProvider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewrite-urls.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-urls.ts"],"sourcesContent":["/**\n * WordPress URL rewrite endpoint\n *\n * POST /_emdash/api/import/wordpress/rewrite-urls\n *\n * Rewrites old WordPress media URLs in Portable Text content\n * to point to newly imported EmDash media URLs.\n *\n * Handles URL variants (e.g., image.jpg vs image.jpg?w=200) by matching\n * on the base URL path without query parameters.\n */\n\nimport type { APIRoute } from \"astro\";\nimport { sql } from \"kysely\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess, handleError } from \"#api/error.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\nimport { wpRewriteUrlsBody } from \"#api/schemas.js\";\nimport { validateIdentifier } from \"#db/validate.js\";\nimport { normalizeMediaValue } from \"#media/normalize.js\";\nimport type { MediaProvider } from \"#media/types.js\";\nimport type { EmDashHandlers } from \"#types\";\n\nimport {\n\tbuildBaseUrlMap,\n\tfindMatchingUrl,\n\trewritePortableTextUrls,\n\trewriteStringUrls,\n} from \"./rewrite-url-helpers.js\";\nimport type { PortableTextBlock } from \"./rewrite-url-helpers.js\";\n\nexport interface RewriteUrlsResult {\n\t/** Total items updated */\n\tupdated: number;\n\t/** Updates by collection */\n\tbyCollection: Record<string, number>;\n\t/** URLs that were rewritten */\n\turlsRewritten: number;\n\t/** Any errors encountered */\n\terrors: Array<{ collection: string; id: string; error: string }>;\n}\n\nexport const prerender = false;\n\nexport const POST: APIRoute = async ({ request, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NO_DB\", \"Database not initialized\", 500);\n\t}\n\n\tconst denied = requirePerm(user, \"import:execute\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst body = await parseBody(request, wpRewriteUrlsBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst urlEntries = Object.entries(body.urlMap);\n\t\tif (urlEntries.length === 0) {\n\t\t\treturn apiSuccess({\n\t\t\t\tupdated: 0,\n\t\t\t\tbyCollection: {},\n\t\t\t\turlsRewritten: 0,\n\t\t\t\terrors: [],\n\t\t\t});\n\t\t}\n\n\t\tconst getProvider = (id: string) => emdash.getMediaProvider(id);\n\t\tconst result = await rewriteUrls(emdash.db, body.urlMap, getProvider, body.collections);\n\n\t\treturn apiSuccess(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to rewrite URLs\", \"REWRITE_ERROR\");\n\t}\n};\n\nasync function rewriteUrls(\n\tdb: NonNullable<EmDashHandlers[\"db\"]>,\n\turlMap: Record<string, string>,\n\tgetProvider: (id: string) => MediaProvider | undefined,\n\tcollections?: string[],\n): Promise<RewriteUrlsResult> {\n\tconst { SchemaRegistry } = await import(\"#schema/registry.js\");\n\tconst registry = new SchemaRegistry(db);\n\n\tconst result: RewriteUrlsResult = {\n\t\tupdated: 0,\n\t\tbyCollection: {},\n\t\turlsRewritten: 0,\n\t\terrors: [],\n\t};\n\n\t// Build base URL map for flexible matching\n\tconst baseMap = buildBaseUrlMap(urlMap);\n\n\t// Get all collections or filter to specified ones\n\tconst allCollections = await registry.listCollections();\n\tconst targetCollections = collections?.length\n\t\t? allCollections.filter((c) => collections.includes(c.slug))\n\t\t: allCollections;\n\n\tfor (const collection of targetCollections) {\n\t\t// Get fields that might contain URLs\n\t\tconst fields = await registry.listFields(collection.id);\n\t\tconst portableTextFields = fields.filter((f) => f.type === \"portableText\");\n\t\tconst stringFields = fields.filter((f) => [\"text\", \"string\"].includes(f.type));\n\t\t// Image and file fields store URLs directly as TEXT\n\t\tconst mediaFields = fields.filter((f) => [\"image\", \"file\"].includes(f.type));\n\n\t\tif (portableTextFields.length === 0 && stringFields.length === 0 && mediaFields.length === 0)\n\t\t\tcontinue;\n\n\t\t// Get table name\n\t\tvalidateIdentifier(collection.slug, \"collection slug\");\n\t\tconst tableName = `ec_${collection.slug}`;\n\n\t\ttry {\n\t\t\t// Query all rows\n\t\t\tconst rows = await sql<{ id: string; [key: string]: unknown }>`\n\t\t\t\tSELECT * FROM ${sql.ref(tableName)}\n\t\t\t\tWHERE deleted_at IS NULL\n\t\t\t`.execute(db);\n\n\t\t\tfor (const row of rows.rows) {\n\t\t\t\tlet rowUpdated = false;\n\t\t\t\tconst updates: Record<string, unknown> = {};\n\t\t\t\tlet rowUrlsRewritten = 0;\n\n\t\t\t\t// Handle Portable Text fields - parse JSON and rewrite URLs in blocks\n\t\t\t\tfor (const field of portableTextFields) {\n\t\t\t\t\tconst value = row[field.slug];\n\t\t\t\t\tif (!value || typeof value !== \"string\") continue;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- JSON.parse returns unknown; validated by Array.isArray below\n\t\t\t\t\t\tconst blocks = JSON.parse(value) as PortableTextBlock[];\n\t\t\t\t\t\tif (!Array.isArray(blocks)) continue;\n\n\t\t\t\t\t\tconst rewriteResult = rewritePortableTextUrls(blocks, urlMap, baseMap);\n\n\t\t\t\t\t\tif (rewriteResult.changed) {\n\t\t\t\t\t\t\tupdates[field.slug] = JSON.stringify(blocks);\n\t\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\t\trowUrlsRewritten += rewriteResult.urlsRewritten;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Not valid JSON, try string replacement as fallback\n\t\t\t\t\t\tconst stringResult = rewriteStringUrls(value, urlMap, baseMap);\n\t\t\t\t\t\tif (stringResult.changed) {\n\t\t\t\t\t\t\tupdates[field.slug] = stringResult.newValue;\n\t\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\t\trowUrlsRewritten += stringResult.urlsRewritten;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle string/text fields - simple string replacement\n\t\t\t\tfor (const field of stringFields) {\n\t\t\t\t\tconst value = row[field.slug];\n\t\t\t\t\tif (!value || typeof value !== \"string\") continue;\n\n\t\t\t\t\tconst stringResult = rewriteStringUrls(value, urlMap, baseMap);\n\t\t\t\t\tif (stringResult.changed) {\n\t\t\t\t\t\tupdates[field.slug] = stringResult.newValue;\n\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\trowUrlsRewritten += stringResult.urlsRewritten;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle image/file fields - normalize to MediaValue objects\n\t\t\t\tfor (const field of mediaFields) {\n\t\t\t\t\tconst value = row[field.slug];\n\t\t\t\t\tif (!value || typeof value !== \"string\") continue;\n\n\t\t\t\t\t// Try to find a matching rewritten URL\n\t\t\t\t\tconst newUrl = findMatchingUrl(value, urlMap, baseMap);\n\t\t\t\t\tif (newUrl) {\n\t\t\t\t\t\t// Normalize into a proper MediaValue instead of storing a bare URL\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst normalized = await normalizeMediaValue(newUrl, getProvider);\n\t\t\t\t\t\t\tupdates[field.slug] = normalized ? JSON.stringify(normalized) : newUrl;\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tupdates[field.slug] = newUrl;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\trowUrlsRewritten++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (rowUpdated) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Build update query dynamically\n\t\t\t\t\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- Kysely dynamic table requires type assertion\n\t\t\t\t\t\tlet query = db.updateTable(tableName as any).where(\"id\", \"=\", row.id);\n\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(updates)) {\n\t\t\t\t\t\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- Kysely dynamic column update requires type assertion\n\t\t\t\t\t\t\tquery = query.set({ [key]: value } as any);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait query.execute();\n\n\t\t\t\t\t\tresult.updated++;\n\t\t\t\t\t\tresult.urlsRewritten += rowUrlsRewritten;\n\t\t\t\t\t\tresult.byCollection[collection.slug] = (result.byCollection[collection.slug] || 0) + 1;\n\t\t\t\t\t} catch (updateError) {\n\t\t\t\t\t\tresult.errors.push({\n\t\t\t\t\t\t\tcollection: collection.slug,\n\t\t\t\t\t\t\tid: row.id,\n\t\t\t\t\t\t\terror: updateError instanceof Error ? updateError.message : \"Update failed\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (queryError) {\n\t\t\tresult.errors.push({\n\t\t\t\tcollection: collection.slug,\n\t\t\t\tid: \"*\",\n\t\t\t\terror: queryError instanceof Error ? queryError.message : \"Query failed for collection\",\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":";;;;;;;;;;;;;;AA2CA,MAAa,YAAY;AAEzB,MAAa,OAAiB,OAAO,EAAE,SAAS,aAAa;CAC5D,MAAM,EAAE,QAAQ,SAAS;AAEzB,KAAI,CAAC,QAAQ,GACZ,QAAO,SAAS,SAAS,4BAA4B,IAAI;CAG1D,MAAM,SAAS,YAAY,MAAM,iBAAiB;AAClD,KAAI,OAAQ,QAAO;AAEnB,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,kBAAkB;AACxD,MAAI,aAAa,KAAK,CAAE,QAAO;AAG/B,MADmB,OAAO,QAAQ,KAAK,OAAO,CAC/B,WAAW,EACzB,QAAO,WAAW;GACjB,SAAS;GACT,cAAc,EAAE;GAChB,eAAe;GACf,QAAQ,EAAE;GACV,CAAC;EAGH,MAAM,eAAe,OAAe,OAAO,iBAAiB,GAAG;AAG/D,SAAO,WAFQ,MAAM,YAAY,OAAO,IAAI,KAAK,QAAQ,aAAa,KAAK,YAAY,CAE9D;UACjB,OAAO;AACf,SAAO,YAAY,OAAO,0BAA0B,gBAAgB;;;AAItE,eAAe,YACd,IACA,QACA,aACA,aAC6B;CAC7B,MAAM,EAAE,mBAAmB,MAAM,OAAO;CACxC,MAAM,WAAW,IAAI,eAAe,GAAG;CAEvC,MAAM,SAA4B;EACjC,SAAS;EACT,cAAc,EAAE;EAChB,eAAe;EACf,QAAQ,EAAE;EACV;CAGD,MAAM,UAAU,gBAAgB,OAAO;CAGvC,MAAM,iBAAiB,MAAM,SAAS,iBAAiB;CACvD,MAAM,oBAAoB,aAAa,SACpC,eAAe,QAAQ,MAAM,YAAY,SAAS,EAAE,KAAK,CAAC,GAC1D;AAEH,MAAK,MAAM,cAAc,mBAAmB;EAE3C,MAAM,SAAS,MAAM,SAAS,WAAW,WAAW,GAAG;EACvD,MAAM,qBAAqB,OAAO,QAAQ,MAAM,EAAE,SAAS,eAAe;EAC1E,MAAM,eAAe,OAAO,QAAQ,MAAM,CAAC,QAAQ,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;EAE9E,MAAM,cAAc,OAAO,QAAQ,MAAM,CAAC,SAAS,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;AAE5E,MAAI,mBAAmB,WAAW,KAAK,aAAa,WAAW,KAAK,YAAY,WAAW,EAC1F;AAGD,qBAAmB,WAAW,MAAM,kBAAkB;EACtD,MAAM,YAAY,MAAM,WAAW;AAEnC,MAAI;GAEH,MAAM,OAAO,MAAM,GAA2C;oBAC7C,IAAI,IAAI,UAAU,CAAC;;KAElC,QAAQ,GAAG;AAEb,QAAK,MAAM,OAAO,KAAK,MAAM;IAC5B,IAAI,aAAa;IACjB,MAAM,UAAmC,EAAE;IAC3C,IAAI,mBAAmB;AAGvB,SAAK,MAAM,SAAS,oBAAoB;KACvC,MAAM,QAAQ,IAAI,MAAM;AACxB,SAAI,CAAC,SAAS,OAAO,UAAU,SAAU;AAEzC,SAAI;MAEH,MAAM,SAAS,KAAK,MAAM,MAAM;AAChC,UAAI,CAAC,MAAM,QAAQ,OAAO,CAAE;MAE5B,MAAM,gBAAgB,wBAAwB,QAAQ,QAAQ,QAAQ;AAEtE,UAAI,cAAc,SAAS;AAC1B,eAAQ,MAAM,QAAQ,KAAK,UAAU,OAAO;AAC5C,oBAAa;AACb,2BAAoB,cAAc;;aAE5B;MAEP,MAAM,eAAe,kBAAkB,OAAO,QAAQ,QAAQ;AAC9D,UAAI,aAAa,SAAS;AACzB,eAAQ,MAAM,QAAQ,aAAa;AACnC,oBAAa;AACb,2BAAoB,aAAa;;;;AAMpC,SAAK,MAAM,SAAS,cAAc;KACjC,MAAM,QAAQ,IAAI,MAAM;AACxB,SAAI,CAAC,SAAS,OAAO,UAAU,SAAU;KAEzC,MAAM,eAAe,kBAAkB,OAAO,QAAQ,QAAQ;AAC9D,SAAI,aAAa,SAAS;AACzB,cAAQ,MAAM,QAAQ,aAAa;AACnC,mBAAa;AACb,0BAAoB,aAAa;;;AAKnC,SAAK,MAAM,SAAS,aAAa;KAChC,MAAM,QAAQ,IAAI,MAAM;AACxB,SAAI,CAAC,SAAS,OAAO,UAAU,SAAU;KAGzC,MAAM,SAAS,gBAAgB,OAAO,QAAQ,QAAQ;AACtD,SAAI,QAAQ;AAEX,UAAI;OACH,MAAM,aAAa,MAAM,oBAAoB,QAAQ,YAAY;AACjE,eAAQ,MAAM,QAAQ,aAAa,KAAK,UAAU,WAAW,GAAG;cACzD;AACP,eAAQ,MAAM,QAAQ;;AAEvB,mBAAa;AACb;;;AAIF,QAAI,WACH,KAAI;KAGH,IAAI,QAAQ,GAAG,YAAY,UAAiB,CAAC,MAAM,MAAM,KAAK,IAAI,GAAG;AAErE,UAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,CAEjD,SAAQ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAQ;AAG3C,WAAM,MAAM,SAAS;AAErB,YAAO;AACP,YAAO,iBAAiB;AACxB,YAAO,aAAa,WAAW,SAAS,OAAO,aAAa,WAAW,SAAS,KAAK;aAC7E,aAAa;AACrB,YAAO,OAAO,KAAK;MAClB,YAAY,WAAW;MACvB,IAAI,IAAI;MACR,OAAO,uBAAuB,QAAQ,YAAY,UAAU;MAC5D,CAAC;;;WAIG,YAAY;AACpB,UAAO,OAAO,KAAK;IAClB,YAAY,WAAW;IACvB,IAAI;IACJ,OAAO,sBAAsB,QAAQ,WAAW,UAAU;IAC1D,CAAC;;;AAIJ,QAAO"}
|
|
1
|
+
{"version":3,"file":"rewrite-urls.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress/rewrite-urls.ts"],"sourcesContent":["/**\n * WordPress URL rewrite endpoint\n *\n * POST /_emdash/api/import/wordpress/rewrite-urls\n *\n * Rewrites old WordPress media URLs in Portable Text content\n * to point to newly imported EmDash media URLs.\n *\n * Handles URL variants (e.g., image.jpg vs image.jpg?w=200) by matching\n * on the base URL path without query parameters.\n */\n\nimport type { APIRoute } from \"astro\";\nimport { sql } from \"kysely\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess, handleError } from \"#api/error.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\nimport { wpRewriteUrlsBody } from \"#api/schemas.js\";\nimport { validateIdentifier } from \"#db/validate.js\";\nimport { normalizeMediaValue } from \"#media/normalize.js\";\nimport type { MediaProvider } from \"#media/types.js\";\nimport type { EmDashHandlers } from \"#types\";\n\nimport {\n\tbuildBaseUrlMap,\n\textractMediaUrl,\n\tfindMatchingUrl,\n\trewritePortableTextUrls,\n\trewriteStringUrls,\n} from \"./rewrite-url-helpers.js\";\nimport type { PortableTextBlock } from \"./rewrite-url-helpers.js\";\n\nexport interface RewriteUrlsResult {\n\t/** Total items updated */\n\tupdated: number;\n\t/** Updates by collection */\n\tbyCollection: Record<string, number>;\n\t/** URLs that were rewritten */\n\turlsRewritten: number;\n\t/** Any errors encountered */\n\terrors: Array<{ collection: string; id: string; error: string }>;\n}\n\nexport const prerender = false;\n\nexport const POST: APIRoute = async ({ request, locals }) => {\n\tconst { emdash, user } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NO_DB\", \"Database not initialized\", 500);\n\t}\n\n\tconst denied = requirePerm(user, \"import:execute\");\n\tif (denied) return denied;\n\n\ttry {\n\t\tconst body = await parseBody(request, wpRewriteUrlsBody);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst urlEntries = Object.entries(body.urlMap);\n\t\tif (urlEntries.length === 0) {\n\t\t\treturn apiSuccess({\n\t\t\t\tupdated: 0,\n\t\t\t\tbyCollection: {},\n\t\t\t\turlsRewritten: 0,\n\t\t\t\terrors: [],\n\t\t\t});\n\t\t}\n\n\t\tconst getProvider = (id: string) => emdash.getMediaProvider(id);\n\t\tconst result = await rewriteUrls(emdash.db, body.urlMap, getProvider, body.collections);\n\n\t\treturn apiSuccess(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to rewrite URLs\", \"REWRITE_ERROR\");\n\t}\n};\n\nasync function rewriteUrls(\n\tdb: NonNullable<EmDashHandlers[\"db\"]>,\n\turlMap: Record<string, string>,\n\tgetProvider: (id: string) => MediaProvider | undefined,\n\tcollections?: string[],\n): Promise<RewriteUrlsResult> {\n\tconst { SchemaRegistry } = await import(\"#schema/registry.js\");\n\tconst registry = new SchemaRegistry(db);\n\n\tconst result: RewriteUrlsResult = {\n\t\tupdated: 0,\n\t\tbyCollection: {},\n\t\turlsRewritten: 0,\n\t\terrors: [],\n\t};\n\n\t// Build base URL map for flexible matching\n\tconst baseMap = buildBaseUrlMap(urlMap);\n\n\t// Get all collections or filter to specified ones\n\tconst allCollections = await registry.listCollections();\n\tconst targetCollections = collections?.length\n\t\t? allCollections.filter((c) => collections.includes(c.slug))\n\t\t: allCollections;\n\n\tfor (const collection of targetCollections) {\n\t\t// Get fields that might contain URLs\n\t\tconst fields = await registry.listFields(collection.id);\n\t\tconst portableTextFields = fields.filter((f) => f.type === \"portableText\");\n\t\tconst stringFields = fields.filter((f) => [\"text\", \"string\"].includes(f.type));\n\t\t// Image and file fields store URLs directly as TEXT\n\t\tconst mediaFields = fields.filter((f) => [\"image\", \"file\"].includes(f.type));\n\n\t\tif (portableTextFields.length === 0 && stringFields.length === 0 && mediaFields.length === 0)\n\t\t\tcontinue;\n\n\t\t// Get table name\n\t\tvalidateIdentifier(collection.slug, \"collection slug\");\n\t\tconst tableName = `ec_${collection.slug}`;\n\n\t\ttry {\n\t\t\t// Query all rows\n\t\t\tconst rows = await sql<{ id: string; [key: string]: unknown }>`\n\t\t\t\tSELECT * FROM ${sql.ref(tableName)}\n\t\t\t\tWHERE deleted_at IS NULL\n\t\t\t`.execute(db);\n\n\t\t\tfor (const row of rows.rows) {\n\t\t\t\tlet rowUpdated = false;\n\t\t\t\tconst updates: Record<string, unknown> = {};\n\t\t\t\tlet rowUrlsRewritten = 0;\n\n\t\t\t\t// Handle Portable Text fields - parse JSON and rewrite URLs in blocks\n\t\t\t\tfor (const field of portableTextFields) {\n\t\t\t\t\tconst value = row[field.slug];\n\t\t\t\t\tif (!value || typeof value !== \"string\") continue;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- JSON.parse returns unknown; validated by Array.isArray below\n\t\t\t\t\t\tconst blocks = JSON.parse(value) as PortableTextBlock[];\n\t\t\t\t\t\tif (!Array.isArray(blocks)) continue;\n\n\t\t\t\t\t\tconst rewriteResult = rewritePortableTextUrls(blocks, urlMap, baseMap);\n\n\t\t\t\t\t\tif (rewriteResult.changed) {\n\t\t\t\t\t\t\tupdates[field.slug] = JSON.stringify(blocks);\n\t\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\t\trowUrlsRewritten += rewriteResult.urlsRewritten;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Not valid JSON, try string replacement as fallback\n\t\t\t\t\t\tconst stringResult = rewriteStringUrls(value, urlMap, baseMap);\n\t\t\t\t\t\tif (stringResult.changed) {\n\t\t\t\t\t\t\tupdates[field.slug] = stringResult.newValue;\n\t\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\t\trowUrlsRewritten += stringResult.urlsRewritten;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle string/text fields - simple string replacement\n\t\t\t\tfor (const field of stringFields) {\n\t\t\t\t\tconst value = row[field.slug];\n\t\t\t\t\tif (!value || typeof value !== \"string\") continue;\n\n\t\t\t\t\tconst stringResult = rewriteStringUrls(value, urlMap, baseMap);\n\t\t\t\t\tif (stringResult.changed) {\n\t\t\t\t\t\tupdates[field.slug] = stringResult.newValue;\n\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\trowUrlsRewritten += stringResult.urlsRewritten;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handle image/file fields - normalize to MediaValue objects\n\t\t\t\tfor (const field of mediaFields) {\n\t\t\t\t\tconst value = row[field.slug];\n\t\t\t\t\tif (!value || typeof value !== \"string\") continue;\n\n\t\t\t\t\t// Values are stored as JSON MediaValue objects (e.g. featured_image from\n\t\t\t\t\t// import normalizes to {\"provider\":\"external\",\"src\":\"<wp url>\"}). Match on the\n\t\t\t\t\t// inner `src`, falling back to the raw value for legacy bare-URL rows.\n\t\t\t\t\tconst newUrl = findMatchingUrl(extractMediaUrl(value), urlMap, baseMap);\n\t\t\t\t\tif (newUrl) {\n\t\t\t\t\t\t// Normalize into a proper MediaValue instead of storing a bare URL\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst normalized = await normalizeMediaValue(newUrl, getProvider);\n\t\t\t\t\t\t\tupdates[field.slug] = normalized ? JSON.stringify(normalized) : newUrl;\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\tupdates[field.slug] = newUrl;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowUpdated = true;\n\t\t\t\t\t\trowUrlsRewritten++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (rowUpdated) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Build update query dynamically\n\t\t\t\t\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- Kysely dynamic table requires type assertion\n\t\t\t\t\t\tlet query = db.updateTable(tableName as any).where(\"id\", \"=\", row.id);\n\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(updates)) {\n\t\t\t\t\t\t\t// eslint-disable-next-line typescript/no-unsafe-type-assertion -- Kysely dynamic column update requires type assertion\n\t\t\t\t\t\t\tquery = query.set({ [key]: value } as any);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait query.execute();\n\n\t\t\t\t\t\tresult.updated++;\n\t\t\t\t\t\tresult.urlsRewritten += rowUrlsRewritten;\n\t\t\t\t\t\tresult.byCollection[collection.slug] = (result.byCollection[collection.slug] || 0) + 1;\n\t\t\t\t\t} catch (updateError) {\n\t\t\t\t\t\tresult.errors.push({\n\t\t\t\t\t\t\tcollection: collection.slug,\n\t\t\t\t\t\t\tid: row.id,\n\t\t\t\t\t\t\terror: updateError instanceof Error ? updateError.message : \"Update failed\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (queryError) {\n\t\t\tresult.errors.push({\n\t\t\t\tcollection: collection.slug,\n\t\t\t\tid: \"*\",\n\t\t\t\terror: queryError instanceof Error ? queryError.message : \"Query failed for collection\",\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../../../types-
|
|
2
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
3
3
|
import { n as resolveAndValidateExternalUrl, t as SsrfError } from "../../../../../ssrf-MZ-zrG6-.mjs";
|
|
4
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
5
|
-
import { n as parseBody, t as isParseError } from "../../../../../parse-
|
|
4
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
5
|
+
import { n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
6
6
|
import "../../../../../redirects-COMLwsV5.mjs";
|
|
7
7
|
import { c as wpPluginAnalyzeBody } from "../../../../../setup-Cf_TyOv5.mjs";
|
|
8
8
|
import "../../../../../api/schemas/index.mjs";
|
|
9
9
|
import { s as getSource } from "../../../../../import-DG80rC_I.mjs";
|
|
10
10
|
import "../../../../../ssrf-BIcd-aXW.mjs";
|
|
11
11
|
import "../../../../../utils-C3wTAP-P.mjs";
|
|
12
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
12
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
13
13
|
import { SchemaRegistry } from "emdash";
|
|
14
14
|
|
|
15
15
|
//#region src/astro/routes/api/import/wordpress-plugin/analyze.ts
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import "../../../../../dialect-helpers-BKCvISIQ.mjs";
|
|
2
2
|
import { n as slugify } from "../../../../../slugify-Cjh1ssOZ.mjs";
|
|
3
3
|
import "../../../../../base64-CqR-7kqF.mjs";
|
|
4
|
-
import "../../../../../types-
|
|
5
|
-
import { t as BylineRepository } from "../../../../../byline-
|
|
4
|
+
import "../../../../../types-B0bmgwMG.mjs";
|
|
5
|
+
import { t as BylineRepository } from "../../../../../byline-BDylH_m4.mjs";
|
|
6
6
|
import { n as resolveAndValidateExternalUrl, t as SsrfError } from "../../../../../ssrf-MZ-zrG6-.mjs";
|
|
7
|
-
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-
|
|
8
|
-
import { n as parseBody, t as isParseError } from "../../../../../parse-
|
|
7
|
+
import { n as apiSuccess, r as handleError, t as apiError } from "../../../../../error-ChfADBuu.mjs";
|
|
8
|
+
import { n as parseBody, t as isParseError } from "../../../../../parse-DHbXfvxO.mjs";
|
|
9
9
|
import "../../../../../redirects-COMLwsV5.mjs";
|
|
10
10
|
import { l as wpPluginExecuteBody } from "../../../../../setup-Cf_TyOv5.mjs";
|
|
11
11
|
import "../../../../../api/schemas/index.mjs";
|
|
12
12
|
import { s as getSource } from "../../../../../import-DG80rC_I.mjs";
|
|
13
13
|
import "../../../../../ssrf-BIcd-aXW.mjs";
|
|
14
14
|
import { m as resolveImportByline } from "../../../../../utils-C3wTAP-P.mjs";
|
|
15
|
-
import { n as requirePerm } from "../../../../../authorize-
|
|
15
|
+
import { n as requirePerm } from "../../../../../authorize-Bn4S4DUT.mjs";
|
|
16
16
|
import { ContentRepository, SchemaRegistry } from "emdash";
|
|
17
17
|
|
|
18
18
|
//#region src/astro/routes/api/import/wordpress-plugin/execute.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../../../base64-CqR-7kqF.mjs";
|
|
2
|
-
import "../../../types-
|
|
3
|
-
import { r as handleError } from "../../../error-
|
|
4
|
-
import { n as VERSION, t as COMMIT } from "../../../version-
|
|
2
|
+
import "../../../types-B0bmgwMG.mjs";
|
|
3
|
+
import { r as handleError } from "../../../error-ChfADBuu.mjs";
|
|
4
|
+
import { n as VERSION, t as COMMIT } from "../../../version-ITD3PlQd.mjs";
|
|
5
5
|
import { t as getAuthMode } from "../../../mode-CaaiebZI.mjs";
|
|
6
6
|
|
|
7
7
|
//#region src/astro/routes/api/manifest.ts
|