dineway 0.2.39 → 0.2.41
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/{activity-LXZdjKwI.mjs → activity-BuhkMdv8.mjs} +2 -2
- package/dist/{activity-events-DoqeOM8x.mjs → activity-events-DkHsy7Y0.mjs} +1 -1
- package/dist/{allowed-origins-DiVrMLxh.mjs → allowed-origins-Clitkhiv.mjs} +1 -1
- package/dist/api/route-utils.d.mts +15 -12
- package/dist/api/route-utils.mjs +27 -20
- package/dist/api/schemas/index.d.mts +1 -1
- package/dist/api/schemas/index.mjs +10 -5
- package/dist/{api-COSxvdOi.mjs → api-CMbsIQ46.mjs} +41 -13
- package/dist/{api-tokens-CNHnKO57.mjs → api-tokens-ciHNTdN2.mjs} +1 -1
- package/dist/{apply-D4rZHDyg.mjs → apply-B5qoX19G.mjs} +62 -18
- package/dist/astro/index.d.mts +16 -13
- package/dist/astro/index.mjs +31 -5
- package/dist/astro/middleware/auth.d.mts +14 -11
- package/dist/astro/middleware/auth.mjs +8 -8
- package/dist/astro/middleware/redirect.mjs +10 -6
- package/dist/astro/middleware/request-context.mjs +5 -5
- package/dist/astro/middleware/seed.d.mts +1 -1
- package/dist/astro/middleware/seed.mjs +2 -2
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +2 -2
- package/dist/astro/middleware.mjs +266 -176
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +12 -7
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +12 -7
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
- package/dist/astro/routes/api/admin/briefing.mjs +41 -22
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +14 -10
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +14 -10
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +14 -10
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +25 -19
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +25 -19
- package/dist/astro/routes/api/admin/bylines/index.mjs +25 -19
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +20 -16
- package/dist/astro/routes/api/admin/comments/_id_.mjs +10 -7
- package/dist/astro/routes/api/admin/comments/bulk.mjs +18 -13
- package/dist/astro/routes/api/admin/comments/counts.mjs +10 -7
- package/dist/astro/routes/api/admin/comments/index.mjs +18 -13
- package/dist/astro/routes/api/admin/context/_id_/history.mjs +51 -39
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +51 -39
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +57 -44
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +57 -44
- package/dist/astro/routes/api/admin/context/diff.mjs +56 -43
- package/dist/astro/routes/api/admin/context/index.mjs +57 -44
- package/dist/astro/routes/api/admin/context/stale.mjs +56 -43
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +51 -39
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +56 -43
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +56 -43
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +52 -40
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +7 -7
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +78 -68
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +78 -68
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +71 -60
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +78 -67
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +78 -67
- package/dist/astro/routes/api/admin/plugins/index.mjs +71 -60
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +71 -60
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +78 -67
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +71 -60
- package/dist/astro/routes/api/admin/plugins/updates.mjs +71 -60
- package/dist/astro/routes/api/admin/review-requests/_id_/image.mjs +38 -23
- package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +46 -36
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +63 -52
- package/dist/astro/routes/api/admin/review-requests/_id_/revoke.mjs +9 -9
- package/dist/astro/routes/api/admin/review-requests/index.mjs +61 -50
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +71 -60
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +71 -60
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +11 -7
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
- package/dist/astro/routes/api/admin/users/index.mjs +12 -7
- package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
- package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
- package/dist/astro/routes/api/auth/invite/complete.mjs +17 -12
- package/dist/astro/routes/api/auth/invite/index.mjs +14 -9
- package/dist/astro/routes/api/auth/invite/register-options.mjs +16 -11
- package/dist/astro/routes/api/auth/logout.mjs +2 -2
- package/dist/astro/routes/api/auth/magic-link/send.mjs +17 -12
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/me.mjs +14 -11
- 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 +3 -3
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +12 -7
- package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/options.mjs +19 -14
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +16 -11
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +17 -12
- package/dist/astro/routes/api/auth/passkey/verify.mjs +17 -12
- package/dist/astro/routes/api/auth/setup-token/index.mjs +6 -6
- package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/signup/complete.mjs +17 -12
- package/dist/astro/routes/api/auth/signup/request.mjs +17 -12
- package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +14 -11
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +23 -19
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +23 -18
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +8 -8
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +8 -8
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +8 -8
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +25 -20
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +41 -31
- package/dist/astro/routes/api/content/_collection_/_id_/release-readiness.mjs +14 -9
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +8 -8
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +41 -31
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +30 -20
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +8 -8
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +25 -14
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +25 -14
- package/dist/astro/routes/api/content/_collection_/trash.mjs +13 -8
- package/dist/astro/routes/api/dashboard.mjs +21 -13
- package/dist/astro/routes/api/dev/emails.mjs +2 -2
- package/dist/astro/routes/api/health.mjs +1 -1
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +30 -23
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +13 -10
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +14 -11
- package/dist/astro/routes/api/import/wordpress/execute.mjs +58 -47
- package/dist/astro/routes/api/import/wordpress/media.d.mts +14 -11
- package/dist/astro/routes/api/import/wordpress/media.mjs +17 -14
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +61 -48
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +15 -12
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +58 -45
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +32 -26
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +14 -11
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +63 -52
- package/dist/astro/routes/api/integration/artifact.mjs +9 -9
- package/dist/astro/routes/api/integration/dispatch.mjs +14 -14
- package/dist/astro/routes/api/integrations/_provider_.mjs +9 -9
- package/dist/astro/routes/api/integrations/index.mjs +8 -8
- package/dist/astro/routes/api/manifest.mjs +5 -5
- package/dist/astro/routes/api/mcp.mjs +141 -93
- package/dist/astro/routes/api/media/_id_/confirm.mjs +15 -12
- package/dist/astro/routes/api/media/_id_.mjs +14 -9
- package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
- package/dist/astro/routes/api/media/providers/index.mjs +2 -2
- package/dist/astro/routes/api/media/upload-url.mjs +16 -13
- package/dist/astro/routes/api/media.mjs +19 -16
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +57 -44
- package/dist/astro/routes/api/menus/_name_/items.mjs +57 -44
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +57 -44
- package/dist/astro/routes/api/menus/_name_/translations.mjs +57 -44
- package/dist/astro/routes/api/menus/_name_.mjs +57 -44
- package/dist/astro/routes/api/menus/index.mjs +57 -44
- package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
- package/dist/astro/routes/api/oauth/device/authorize.mjs +5 -5
- 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 +4 -4
- package/dist/astro/routes/api/oauth/token/refresh.mjs +5 -5
- package/dist/astro/routes/api/oauth/token/revoke.mjs +5 -5
- package/dist/astro/routes/api/oauth/token.mjs +6 -6
- package/dist/astro/routes/api/openapi.json.mjs +10 -5
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
- package/dist/astro/routes/api/redirects/404s/index.mjs +15 -13
- package/dist/astro/routes/api/redirects/404s/summary.mjs +15 -13
- package/dist/astro/routes/api/redirects/_id_.mjs +57 -44
- package/dist/astro/routes/api/redirects/index.mjs +57 -44
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +73 -62
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +73 -62
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +73 -62
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +73 -62
- package/dist/astro/routes/api/schema/collections/index.mjs +73 -62
- package/dist/astro/routes/api/schema/index.mjs +13 -10
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +71 -60
- package/dist/astro/routes/api/schema/orphans/index.mjs +71 -60
- package/dist/astro/routes/api/search/enable.mjs +20 -13
- package/dist/astro/routes/api/search/index.mjs +19 -12
- package/dist/astro/routes/api/search/rebuild.mjs +20 -13
- package/dist/astro/routes/api/search/stats.mjs +12 -7
- package/dist/astro/routes/api/search/suggest.mjs +19 -12
- package/dist/astro/routes/api/sections/_slug_.mjs +57 -44
- package/dist/astro/routes/api/sections/index.mjs +57 -44
- package/dist/astro/routes/api/settings/email.mjs +5 -5
- package/dist/astro/routes/api/settings/reviews.mjs +11 -11
- package/dist/astro/routes/api/settings.mjs +57 -44
- package/dist/astro/routes/api/setup/admin-verify.mjs +19 -14
- package/dist/astro/routes/api/setup/admin.mjs +17 -12
- package/dist/astro/routes/api/setup/dev-bypass.mjs +44 -32
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +47 -34
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +9 -9
- package/dist/astro/routes/api/system/heartbeat.mjs +2 -2
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +60 -47
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +60 -47
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +60 -47
- package/dist/astro/routes/api/taxonomies/index.mjs +60 -47
- package/dist/astro/routes/api/themes/preview.mjs +7 -7
- package/dist/astro/routes/api/typegen.mjs +4 -4
- package/dist/astro/routes/api/well-known/auth.mjs +3 -3
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +56 -43
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +57 -44
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +57 -44
- package/dist/astro/routes/api/widget-areas/_name_.mjs +53 -41
- package/dist/astro/routes/api/widget-areas/index.mjs +57 -44
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +14 -9
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +20 -16
- package/dist/astro/routes/sitemap.xml.mjs +19 -15
- package/dist/astro/session-driver.d.mts +1 -1
- package/dist/astro/session-driver.mjs +8 -3
- package/dist/astro/types.d.mts +21 -14
- package/dist/{atomic-authority-CnBQJ14T.mjs → atomic-authority-Bf5QZboB.mjs} +2 -2
- package/dist/{audit-Cl495Ze3.mjs → audit-hXJBTPY0.mjs} +1 -1
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/{auth-control-guard-DbjgJdlo.mjs → auth-control-guard-DpUP6Fs_.mjs} +1 -1
- package/dist/{authorize-DDmgmnW-.mjs → authorize-DWNOqMKq.mjs} +1 -1
- package/dist/{briefing-DsD-Ouwc.mjs → briefing-BzvBeIJh.mjs} +1 -1
- package/dist/{briefing-COw-WcYz.mjs → briefing-DYiV93rg.mjs} +995 -7
- package/dist/{bundle-bhiszAui.mjs → bundle-DWn5eFKz.mjs} +2 -2
- package/dist/{byline-TYk2kad6.mjs → byline-3qjp1-oa.mjs} +65 -14
- package/dist/{byline-fields-CKhPED5o.d.mts → byline-fields-Bne2v0ti.d.mts} +42 -38
- package/dist/{byline-fields-BKj5f3Ub.mjs → byline-fields-DRMCc0V_.mjs} +1 -1
- package/dist/{byline-fields-DZ46DF10.mjs → byline-fields-wWu2Cb3l.mjs} +3 -3
- package/dist/{byline-registry-CJihchD1.mjs → byline-registry-Caj0_gbU.mjs} +1 -1
- package/dist/{bylines-6T9iVC9j.mjs → bylines-BSn9O1Wx.mjs} +3 -3
- package/dist/{bylines-CvTSCAw9.mjs → bylines-CGuJi-zu.mjs} +5 -5
- package/dist/{patterns-Ay-4KImK.mjs → cache-DsEbwFVE.mjs} +51 -1
- package/dist/{chunks-C8vSD_5L.mjs → chunks-Bb56aCtB.mjs} +1 -1
- package/dist/cli/index.mjs +488 -58
- package/dist/cli/plugin-kit.d.mts +14 -11
- package/dist/cli/plugin-kit.mjs +2 -2
- package/dist/client/external-auth-headers.d.mts +1 -1
- package/dist/client/index.d.mts +16 -13
- package/dist/client/index.mjs +2 -2
- package/dist/{client-factory-C1ZQCMog.mjs → client-factory-BLbm250o.mjs} +1 -1
- package/dist/{comment-DAQfUjqt.mjs → comment-BWDG1nQm.mjs} +2 -2
- package/dist/{comment-reaction-Dp3G7UZc.mjs → comment-reaction-B7pLTlQ7.mjs} +1 -1
- package/dist/{comments-BrvIaRAx.mjs → comments-xkten8nV.mjs} +1 -1
- package/dist/config-6R0bchVE.mjs +125 -0
- package/dist/{content-CIKsrvU9.mjs → content-BigS8BAv.mjs} +302 -45
- package/dist/content-Dr22fzA_.mjs +390 -0
- package/dist/{content-refresh-BilzqcLt.mjs → content-refresh-DJuFIqQ4.mjs} +14 -8
- package/dist/content-storage/index.d.mts +180 -0
- package/dist/content-storage/index.mjs +29 -0
- package/dist/content-storage/store.d.mts +3 -0
- package/dist/content-storage/store.mjs +5 -0
- package/dist/{review-payload-Bap86e75.mjs → content-write-DAZCNKWl.mjs} +838 -131
- package/dist/{context-DAs_MZjJ.mjs → context-0806nV9h.mjs} +292 -23
- package/dist/{context-DVTvucNb.mjs → context-CCsI5nTK.mjs} +2 -2
- package/dist/{context-route-helpers-BP-UJ4u8.mjs → context-route-helpers-TP3EqxRQ.mjs} +2 -2
- package/dist/{dashboard-BAjWCGCP.mjs → dashboard-CSrnhBO6.mjs} +4 -4
- package/dist/database/batch.d.mts +1 -1
- package/dist/database/batch.mjs +1 -1
- package/dist/database/d1/index.d.mts +14 -11
- package/dist/database/d1/index.mjs +4 -4
- package/dist/database/instrumentation.mjs +3 -2
- 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/{device-flow-Dh0rNlh1.mjs → device-flow-SoZh-HvN.mjs} +3 -3
- package/dist/{discovery-V0e0Gg8j.mjs → discovery-49qXmdwv.mjs} +4 -4
- package/dist/{enrich-B7PIJ8Iy.mjs → enrich-CAMsD1aT.mjs} +1 -1
- package/dist/{error-B5a45Tfb.mjs → error-sL4aemcW.mjs} +2 -0
- package/dist/{evidence-Vnp_fQbC.mjs → evidence-B3O9_VKm.mjs} +7 -7
- package/dist/{field-defs-cache-aXUeXJdC.mjs → field-defs-cache-dn5Tw79A.mjs} +4 -4
- package/dist/{fts-manager-BrPpYtK0.mjs → fts-manager-Zu5ITic0.mjs} +1 -1
- package/dist/{hitl-requests-BxMMON3s.mjs → hitl-requests-B5vOPseK.mjs} +2 -2
- package/dist/{hitl-route-helpers-sdnjpx2k.mjs → hitl-route-helpers-C3icmGdj.mjs} +5 -5
- package/dist/hook-events-BQw73jc7.d.mts +32 -0
- package/dist/{import-C2-v4FCs.mjs → import-CKnKQj3f.mjs} +9 -9
- package/dist/{index-BVGe04wF.d.mts → index-CLj17kW9.d.mts} +12 -5
- package/dist/index.d.mts +19 -16
- package/dist/index.mjs +107 -98
- package/dist/{integration-credentials-DMEXZU2J.mjs → integration-credentials-DpuRw1kx.mjs} +2 -2
- package/dist/{jsonld-XWmmAoVo.d.mts → jsonld-CN91qtDw.d.mts} +2 -2
- package/dist/{load-DvCVppOF.mjs → load-CiRTddkJ.mjs} +1 -1
- package/dist/{loader-Dp6zLmQm.mjs → loader-CCwWFQSh.mjs} +16 -5
- package/dist/{manifest-schema-CCvogfrP.mjs → manifest-schema-DaQpgyTB.mjs} +1 -1
- package/dist/{mcp-reviewed-executor-B8Gbin3T.mjs → mcp-reviewed-executor-DA6Q9sDc.mjs} +6 -6
- package/dist/media/image-endpoint.mjs +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +2 -2
- package/dist/media/local-runtime.d.mts +16 -13
- package/dist/media/local-runtime.mjs +3 -3
- package/dist/{media-C5ba8fvI.mjs → media-BjH5OD-A.mjs} +1 -1
- package/dist/{media-allowlist-DQvscVkS.mjs → media-allowlist-C8HJ2O61.mjs} +1 -1
- package/dist/{menus-CyNpBQrX.mjs → menus-CbBi7Ad7.mjs} +2 -2
- package/dist/{menus-w5xwT-f5.mjs → menus-D0c8CeVg.mjs} +7 -7
- package/dist/migration-DJuj7ZwN.mjs +526 -0
- package/dist/{migrations-CLlX25HO.mjs → migrations-BAjF60cl.mjs} +1 -1
- package/dist/{oauth-authorization-CdqJZUMf.mjs → oauth-authorization-CSSRMOKn.mjs} +4 -4
- package/dist/{oauth-clients-CHNb9MAZ.mjs → oauth-clients-DX5HIJJv.mjs} +2 -2
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{object-cache-mxCW-Rpt.mjs → object-cache-DyI1SOBK.mjs} +3 -1
- package/dist/owned-metadata-BPmUjZqI.mjs +69 -0
- package/dist/page/index.d.mts +15 -12
- package/dist/page/index.mjs +1 -1
- package/dist/{parse-THHCpJLB.mjs → parse-C6kCR1OT.mjs} +1 -1
- package/dist/plugin-utils.d.mts +14 -11
- package/dist/plugins/adapt-sandbox-entry.d.mts +14 -11
- package/dist/plugins/adapt-sandbox-entry.mjs +1 -1
- package/dist/{plugins-pfraURNp.mjs → plugins-V0W65r3v.mjs} +16 -962
- package/dist/{policy-B6mVa7ib.mjs → policy-DbceGc4P.mjs} +2 -2
- package/dist/{preview-Bh7D7F27.mjs → preview-CWiIjMDi.mjs} +2 -2
- package/dist/{provider-loader-DT7vQ5FI.d.mts → provider-loader-oLKm1AU8.d.mts} +1 -1
- package/dist/{public-url-Ccv0Xmue.d.mts → public-url-CEC1vj02.d.mts} +2 -2
- package/dist/{public-url-BvnTaacI.d.mts → public-url-CKrUov8D.d.mts} +1 -1
- package/dist/{publication-authorization-B_HJSnzR.mjs → publication-authorization-wMR-tEQ_.mjs} +43 -17
- package/dist/{query-xspvw7Ui.mjs → query-DDi367tF.mjs} +14 -14
- package/dist/{query-DLeahg3x.mjs → query-DLnnpEuf.mjs} +4 -4
- package/dist/{rate-limit-BsBr_U9g.mjs → rate-limit-DeVLLe4z.mjs} +2 -2
- package/dist/{redirect-BQFa1THe.mjs → redirect-CJ-FAbNK.mjs} +2 -2
- package/dist/{redirects-DJcsgz_X.mjs → redirects-BKi6mek4.mjs} +4 -5
- package/dist/{redirects-CVfxefrz.mjs → redirects-I78-ZYLV.mjs} +5 -386
- package/dist/{registry-Dclv9iHv.mjs → registry-zXXZezu-.mjs} +7 -7
- package/dist/{release-B3Q-9B7N.mjs → release-Cpi0-Bzq.mjs} +173 -22
- package/dist/request-context.d.mts +30 -0
- package/dist/{request-meta-CjORiJQ_.mjs → request-meta-DZYuLXx_.mjs} +1 -1
- package/dist/review-payload-Bhi52CbI.mjs +112 -0
- package/dist/{review-requests-CcSUTm_l.mjs → review-requests-C-ScxD9n.mjs} +2 -2
- package/dist/{review-requests-CUVn0RBl.mjs → review-requests-DZYM51yI.mjs} +2 -2
- package/dist/{review-route-helpers-CKBfGKCi.mjs → review-route-helpers-DXNDyx_q.mjs} +2 -2
- package/dist/{revision-W6FDfDqx.mjs → revision-B_HYO2AE.mjs} +42 -7
- package/dist/revisions-CQ7rMP5d.mjs +55 -0
- package/dist/{revocation-C_ZQvGRT.mjs → revocation-4we8kfBg.mjs} +2 -2
- package/dist/{runner-CRU7BXjr.mjs → runner-CuG8o1uW.mjs} +558 -487
- package/dist/{runner-SoP1rphP.d.mts → runner-DXQkyPeX.d.mts} +1 -1
- package/dist/{runs-BtaAiLTw.mjs → runs-BjgLfqCn.mjs} +5 -5
- package/dist/runtime-Bs2JMbb2.d.mts +45 -0
- package/dist/runtime-Ch5G-tnG.mjs +400 -0
- package/dist/runtime.d.mts +15 -12
- package/dist/runtime.mjs +9 -4
- package/dist/schema-BA05k0TN.mjs +8 -0
- package/dist/{search-BI9uKr7U.mjs → search-DMrzhfx_.mjs} +4 -98
- package/dist/{secrets-D_pergcD.mjs → secrets-CIYcw9T9.mjs} +4 -4
- package/dist/{sections-BqqYq9RW.mjs → sections-BTrSEhqB.mjs} +2 -2
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +38 -26
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +12 -9
- package/dist/{seo-Bs_DUxJf.mjs → seo-Cv7ud_m2.mjs} +44 -5
- package/dist/{seo-B-5PsaJO.mjs → seo-DkjtBh-y.mjs} +1 -1
- package/dist/{service-W2xuGLgw.mjs → service-BBJM08uD.mjs} +2 -2
- package/dist/{service-B65aJsN7.mjs → service-CkMuD5AE.mjs} +3 -3
- package/dist/{settings-DsBzKeUQ.mjs → settings-BUONaNnG.mjs} +7 -7
- package/dist/{settings-CyJ2-MKx.mjs → settings-CI-NtWEc.mjs} +2 -2
- package/dist/{setup-complete-DeivSVJi.mjs → setup-complete-DoVbVrHx.mjs} +1 -1
- package/dist/{site-activity-DU0UPDji.mjs → site-activity-hpfJkmxQ.mjs} +1 -1
- package/dist/{site-context-Dic2jHuw.mjs → site-context-BW3GRCJH.mjs} +15 -15
- package/dist/{site-url-Tw6CfBB2.mjs → site-url-CYatfe3q.mjs} +1 -1
- package/dist/{state-DM7blWfT.mjs → state-CKkqoA6i.mjs} +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 +2 -2
- package/dist/{store-32e6dfD-.mjs → store-BzaAtszy.mjs} +3 -3
- package/dist/submission-DLgjQ_Ew.mjs +205 -0
- package/dist/{taxonomies-BFsUR7kc.mjs → taxonomies-C02-Vuh3.mjs} +3 -3
- package/dist/{taxonomies-lWGNLKgn.mjs → taxonomies-D5wO9zmB.mjs} +7 -7
- package/dist/{taxonomy-DN6i1upz.mjs → taxonomy-BK7JmHlo.mjs} +53 -3
- package/dist/terms-EskuqbKE.mjs +104 -0
- package/dist/text-extraction-CdqMGYQK.mjs +96 -0
- package/dist/{tokens-D-StaTAQ.mjs → tokens-D8HEH277.mjs} +1 -1
- package/dist/{trusted-proxy-hYufGFPK.mjs → trusted-proxy-Dg3U9Lrv.mjs} +1 -1
- package/dist/{types-RFzE_V1M.mjs → types-BI3ULB3A.mjs} +2 -2
- package/dist/{types-CJynaYg1.d.mts → types-C3jUu4Bc.d.mts} +90 -34
- package/dist/{types-B--VyN3n.d.mts → types-Dpv_MvwZ.d.mts} +1 -1
- package/dist/{types-CgcOeaiQ.d.mts → types-ex-UrNlz.d.mts} +1 -1
- package/dist/types-qOEot0UQ.d.mts +83 -0
- package/dist/ui/server-runtime.d.mts +18 -15
- package/dist/ui/server-runtime.mjs +29 -25
- package/dist/{user-Btai9rl3.mjs → user-Bl2_8rhJ.mjs} +2 -2
- package/dist/{utils-CYxGuO_P.mjs → utils-CklSLz9F.mjs} +2 -2
- package/dist/{validate-C05z0m7M.mjs → validate-C-yk7mmX.mjs} +3 -3
- package/dist/{validate-kmN2lS8H.d.mts → validate-DUscf6VG.d.mts} +3 -3
- package/dist/version-BlE1LEPb.mjs +6 -0
- package/dist/version-store-BXv2D0de.mjs +208 -0
- package/dist/version-store-B_THJCc0.d.mts +98 -0
- package/dist/{widgets-BOrDZdQ3.mjs → widgets-9xHBhL_L.mjs} +3 -3
- package/dist/{wordpress-slugs-ROzITIBK.mjs → wordpress-slugs-yaeD7cxn.mjs} +1 -1
- package/dist/{worker-Bg35R37I.mjs → worker-CC_Rt1pB.mjs} +10 -10
- package/dist/write-intent-DuHVqks9.mjs +108 -0
- package/dist/{zod-generator-DkrWuID7.mjs → zod-generator-B5Pt8fv0.mjs} +2 -2
- package/package.json +16 -4
- package/dist/cache-B5NSHhxG.mjs +0 -52
- package/dist/cron-C7HCJPPl.mjs +0 -271
- package/dist/schema-CosVhHJt.mjs +0 -8
- package/dist/submission-DJmRejGR.mjs +0 -411
- package/dist/version-BnLdwIT1.mjs +0 -6
- /package/dist/{actor-DxUAJgQX.mjs → actor-D0AW80ld.mjs} +0 -0
- /package/dist/{adapter-symbols-Bq3JsWGM.d.mts → adapter-symbols-B9mi-BUh.d.mts} +0 -0
- /package/dist/{adapters-C8nRpUuj.d.mts → adapters-lDnJjNDz.d.mts} +0 -0
- /package/dist/{api-tokens-0N3nafqZ.mjs → api-tokens-CdfsE9PL.mjs} +0 -0
- /package/dist/{base64-Cz-aU0X1.mjs → base64-qvSs0Gxy.mjs} +0 -0
- /package/dist/{challenge-store-BPn3goP9.mjs → challenge-store-7IZ_NqWg.mjs} +0 -0
- /package/dist/{components-rFN8NH3N.mjs → components-JA6tFHmE.mjs} +0 -0
- /package/dist/{context-types-CPWAJRs5.mjs → context-types-DDIJhGLs.mjs} +0 -0
- /package/dist/{default-BS6VQRkB.mjs → default-C2azCFSB.mjs} +0 -0
- /package/dist/{email-console-GqK6hgMJ.mjs → email-console-BYQp_5Qr.mjs} +0 -0
- /package/dist/{escape-CE7xOWzJ.mjs → escape-4_NNa6GR.mjs} +0 -0
- /package/dist/{experimental-workflows-BbxpWwBy.mjs → experimental-workflows-CPNiI2EL.mjs} +0 -0
- /package/dist/{forgeway-account-DcTxh3Gw.mjs → forgeway-account-YzraapbX.mjs} +0 -0
- /package/dist/{hash-D2Rqd2J2.mjs → hash-qSYPMJ8w.mjs} +0 -0
- /package/dist/{media-url-D9kdpoLS.mjs → media-url-D5E1a47B.mjs} +0 -0
- /package/dist/{mime-BnVhH671.mjs → mime-FkfazULS.mjs} +0 -0
- /package/dist/{mode-D0gePRtf.mjs → mode-C3RI5Z5t.mjs} +0 -0
- /package/dist/{normalize-aTwryvvi.mjs → normalize-DrmlLn40.mjs} +0 -0
- /package/dist/{oauth-authority-P5YMSk2z.mjs → oauth-authority-DVlLFhsZ.mjs} +0 -0
- /package/dist/{oauth-state-store-CMqLdo4I.mjs → oauth-state-store-nf-78RbK.mjs} +0 -0
- /package/dist/{options-JiLWB6Bt.mjs → options-yFkLUuTw.mjs} +0 -0
- /package/dist/{output-7HDrYTSQ.mjs → output-ljHaxIHX.mjs} +0 -0
- /package/dist/{parser-kettsjWc.mjs → parser-CTlxybRo.mjs} +0 -0
- /package/dist/{passkey-config-DVzQ3dv3.mjs → passkey-config-BLon3ct9.mjs} +0 -0
- /package/dist/{placeholder-DJLP_HY7.d.mts → placeholder-DdZV3I8x.d.mts} +0 -0
- /package/dist/{portable-text-tQhvPLf1.mjs → portable-text-CSbRjM-T.mjs} +0 -0
- /package/dist/{portable-text-BE7nszX6.d.mts → portable-text-HNmwL-7L.d.mts} +0 -0
- /package/dist/{process-cache-C19OA3am.mjs → process-cache-CMy5M80h.mjs} +0 -0
- /package/dist/{provider-loader-DERzBMUz.mjs → provider-loader-DlaT1usE.mjs} +0 -0
- /package/dist/{public-discovery-BGyhuD5U.mjs → public-discovery-BnqYofSK.mjs} +0 -0
- /package/dist/{public-url-DFXUU6Wp.mjs → public-url-BHjYWuaN.mjs} +0 -0
- /package/dist/{public-url-sR8SVmTt.mjs → public-url-GQygrYmg.mjs} +0 -0
- /package/dist/{redirect-BxacnBYL.mjs → redirect-CokmLN5o.mjs} +0 -0
- /package/dist/{request-cache-8_ifFzVw.mjs → request-cache-CizvDoxV.mjs} +0 -0
- /package/dist/{resolve-DEKC4qVa.mjs → resolve-BxFGSKYu.mjs} +0 -0
- /package/dist/{runtime-env-CPTzh0mZ.mjs → runtime-env-DpYGy4pT.mjs} +0 -0
- /package/dist/{scheduled-publish-BxdShRGs.d.mts → scheduled-publish-eCNGpvNm.d.mts} +0 -0
- /package/dist/{seo-contributions-LEFs1d7w.mjs → seo-contributions-ZKqrqsdT.mjs} +0 -0
- /package/dist/{service-kQ5ljRzX.mjs → service-DeX1PRNt.mjs} +0 -0
- /package/dist/{session-user-eweCNKzW.mjs → session-user-D36BRaZY.mjs} +0 -0
- /package/dist/{setup-nonce-B6A5Y1ea.mjs → setup-nonce-B9IO7PbK.mjs} +0 -0
- /package/dist/{sidecar-client-BwPhhz-F.mjs → sidecar-client-2hx5G46s.mjs} +0 -0
- /package/dist/{slugify-kD31VIv2.mjs → slugify-DvoaEPtL.mjs} +0 -0
- /package/dist/{ssrf-C9dyjU8O.mjs → ssrf-DcD8vn3E.mjs} +0 -0
- /package/dist/{stable-hash-B9Tbb2f_.mjs → stable-hash-9RDJgfif.mjs} +0 -0
- /package/dist/{status-Bjf_uSrW.mjs → status-B2xUokyJ.mjs} +0 -0
- /package/dist/{transport-BrU1aDY5.mjs → transport-BHYE4pox.mjs} +0 -0
- /package/dist/{transport-CZbtxgKZ.d.mts → transport-CVU5rp7W.d.mts} +0 -0
- /package/dist/{types-DNBL-4Sn.mjs → types-B3Uq7Czg.mjs} +0 -0
- /package/dist/{types-DsJTXStN.d.mts → types-BJztoTbF.d.mts} +0 -0
- /package/dist/{types-COvyXIp7.mjs → types-BgUxCuwu.mjs} +0 -0
- /package/dist/{types-KFzuijKE.d.mts → types-C0heD9oI.d.mts} +0 -0
- /package/dist/{types-B03h5jt_.d.mts → types-DheoByey.d.mts} +0 -0
- /package/dist/{types-SlLXjRpg.d.mts → types-I5LHzk_M.d.mts} +0 -0
- /package/dist/{types-PLJ9hlhh.mjs → types-Nm0cMxEh.mjs} +0 -0
- /package/dist/{types-CtGSEKEJ.d.mts → types-PxxPTFSl.d.mts} +0 -0
- /package/dist/{url-DGG3hw_h.mjs → url-Coamqvs4.mjs} +0 -0
- /package/dist/{url-DUz3LbCs.mjs → url-dn4mFfCI.mjs} +0 -0
- /package/dist/{workers-build-5UQ4j69Q.mjs → workers-build-4926MPc0.mjs} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { c as __exportAll } from "./runner-
|
|
1
|
+
import { c as __exportAll } from "./runner-CuG8o1uW.mjs";
|
|
2
2
|
import { getRequestContext } from "./request-context.mjs";
|
|
3
|
-
import { a as resetTaxonomyNamesCache, o as isMissingTableError, r as getDb } from "./loader-
|
|
4
|
-
import {
|
|
5
|
-
import { n as
|
|
6
|
-
import {
|
|
7
|
-
import { n as resolveLocaleChain, t as resolveLocale } from "./resolve-
|
|
3
|
+
import { a as resetTaxonomyNamesCache, o as isMissingTableError, r as getDb } from "./loader-CCwWFQSh.mjs";
|
|
4
|
+
import { i as setRequestCacheEntry, n as peekRequestCache, r as requestCached } from "./request-cache-CizvDoxV.mjs";
|
|
5
|
+
import { d as invalidateTaxonomyObjectCache, f as isObjectCacheActive, n as cachedQuery, t as CacheNamespace } from "./object-cache-DyI1SOBK.mjs";
|
|
6
|
+
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-Bb56aCtB.mjs";
|
|
7
|
+
import { n as resolveLocaleChain, t as resolveLocale } from "./resolve-BxFGSKYu.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/taxonomies/index.ts
|
|
10
10
|
/**
|
|
@@ -393,7 +393,7 @@ function primeFoldedEntryTerms(collection, perEntry, options = {}) {
|
|
|
393
393
|
* Get entries by term.
|
|
394
394
|
*/
|
|
395
395
|
async function getEntriesByTerm(collection, taxonomyName, termSlug, options = {}) {
|
|
396
|
-
const { getDinewayCollection } = await import("./query-
|
|
396
|
+
const { getDinewayCollection } = await import("./query-DDi367tF.mjs").then((n) => n.o);
|
|
397
397
|
const queryOptions = { where: { [taxonomyName]: termSlug } };
|
|
398
398
|
if (options.locale !== void 0) queryOptions.locale = options.locale;
|
|
399
399
|
const { entries } = await getDinewayCollection(collection, queryOptions);
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { c as __exportAll } from "./runner-
|
|
2
|
-
import {
|
|
1
|
+
import { c as __exportAll } from "./runner-CuG8o1uW.mjs";
|
|
2
|
+
import { atomicBatch } from "./database/batch.mjs";
|
|
3
|
+
import { r as getContentStorage } from "./runtime-Ch5G-tnG.mjs";
|
|
4
|
+
import { d as invalidateTaxonomyObjectCache } from "./object-cache-DyI1SOBK.mjs";
|
|
5
|
+
import { r as snapshotContentTermChanges } from "./terms-EskuqbKE.mjs";
|
|
6
|
+
import { sql } from "kysely";
|
|
3
7
|
import { ulid } from "ulidx";
|
|
4
8
|
|
|
5
9
|
//#region src/database/repositories/taxonomy.ts
|
|
@@ -120,9 +124,30 @@ var TaxonomyRepository = class {
|
|
|
120
124
|
if (deleted) invalidateTaxonomyObjectCache();
|
|
121
125
|
return deleted;
|
|
122
126
|
}
|
|
127
|
+
async writeRoutedTerms(collection, entryId, terms, checks = []) {
|
|
128
|
+
const { prepareContentWrite } = await import("./content-write-DAZCNKWl.mjs").then((n) => n.t);
|
|
129
|
+
const prepared = await prepareContentWrite(this.db, collection, {
|
|
130
|
+
id: entryId,
|
|
131
|
+
terms,
|
|
132
|
+
stageDraft: false
|
|
133
|
+
});
|
|
134
|
+
await atomicBatch(this.db, {
|
|
135
|
+
checks: [...prepared.batch.checks ?? [], ...checks],
|
|
136
|
+
statements: prepared.batch.statements
|
|
137
|
+
});
|
|
138
|
+
prepared.afterCommit();
|
|
139
|
+
invalidateTaxonomyObjectCache();
|
|
140
|
+
}
|
|
123
141
|
async attachToEntry(collection, entryId, taxonomyId) {
|
|
124
142
|
const group = await this.resolveTranslationGroup(taxonomyId);
|
|
125
143
|
if (!group) return;
|
|
144
|
+
if (getContentStorage(this.db, collection)) {
|
|
145
|
+
const source = await snapshotContentTermChanges(this.db, collection, entryId);
|
|
146
|
+
const term = (await this.findTranslations(group))[0];
|
|
147
|
+
if (!term || source.changes[term.name]?.includes(group)) return;
|
|
148
|
+
await this.writeRoutedTerms(collection, entryId, { [term.name]: [...source.changes[term.name] ?? [], group] }, source.checks);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
126
151
|
const row = {
|
|
127
152
|
collection,
|
|
128
153
|
entry_id: entryId,
|
|
@@ -134,6 +159,13 @@ var TaxonomyRepository = class {
|
|
|
134
159
|
async detachFromEntry(collection, entryId, taxonomyId) {
|
|
135
160
|
const group = await this.resolveTranslationGroup(taxonomyId);
|
|
136
161
|
if (!group) return;
|
|
162
|
+
if (getContentStorage(this.db, collection)) {
|
|
163
|
+
const source = await snapshotContentTermChanges(this.db, collection, entryId);
|
|
164
|
+
const term = (await this.findTranslations(group))[0];
|
|
165
|
+
if (!term || !source.changes[term.name]?.includes(group)) return;
|
|
166
|
+
await this.writeRoutedTerms(collection, entryId, { [term.name]: source.changes[term.name].filter((id) => id !== group) }, source.checks);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
137
169
|
await this.db.deleteFrom("content_taxonomies").where("collection", "=", collection).where("entry_id", "=", entryId).where("taxonomy_id", "=", group).execute();
|
|
138
170
|
invalidateTaxonomyObjectCache();
|
|
139
171
|
}
|
|
@@ -153,6 +185,10 @@ var TaxonomyRepository = class {
|
|
|
153
185
|
* Term ids OR translation_groups are accepted and normalised to groups.
|
|
154
186
|
*/
|
|
155
187
|
async setTermsForEntry(collection, entryId, taxonomyName, termIds) {
|
|
188
|
+
if (getContentStorage(this.db, collection)) {
|
|
189
|
+
await this.writeRoutedTerms(collection, entryId, { [taxonomyName]: termIds });
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
156
192
|
const groups = [];
|
|
157
193
|
for (const id of termIds) {
|
|
158
194
|
const group = await this.resolveTranslationGroup(id);
|
|
@@ -172,6 +208,12 @@ var TaxonomyRepository = class {
|
|
|
172
208
|
if (toRemove.length > 0 || toAdd.length > 0) invalidateTaxonomyObjectCache();
|
|
173
209
|
}
|
|
174
210
|
async clearEntryTerms(collection, entryId) {
|
|
211
|
+
if (getContentStorage(this.db, collection) && (await sql`SELECT id FROM ${sql.table(`ec_${collection}`)} WHERE id=${entryId}`.execute(this.db)).rows.length) {
|
|
212
|
+
const source = await snapshotContentTermChanges(this.db, collection, entryId);
|
|
213
|
+
const count = Object.values(source.changes).reduce((sum, ids) => sum + ids.length, 0);
|
|
214
|
+
if (count) await this.writeRoutedTerms(collection, entryId, Object.fromEntries(Object.keys(source.changes).map((name) => [name, []])), source.checks);
|
|
215
|
+
return count;
|
|
216
|
+
}
|
|
175
217
|
const result = await this.db.deleteFrom("content_taxonomies").where("collection", "=", collection).where("entry_id", "=", entryId).executeTakeFirst();
|
|
176
218
|
const removed = Number(result.numDeletedRows ?? 0);
|
|
177
219
|
if (removed > 0) invalidateTaxonomyObjectCache();
|
|
@@ -183,6 +225,14 @@ var TaxonomyRepository = class {
|
|
|
183
225
|
* source's term assignments. Safe to call when the source has no terms.
|
|
184
226
|
*/
|
|
185
227
|
async copyEntryTerms(collection, sourceEntryId, targetEntryId) {
|
|
228
|
+
if (getContentStorage(this.db, collection)) {
|
|
229
|
+
const source = await snapshotContentTermChanges(this.db, collection, sourceEntryId);
|
|
230
|
+
const target = await snapshotContentTermChanges(this.db, collection, targetEntryId);
|
|
231
|
+
const changed = Object.entries(source.changes).filter(([name, ids]) => ids.some((id) => !target.changes[name]?.includes(id)));
|
|
232
|
+
if (!changed.length) return;
|
|
233
|
+
await this.writeRoutedTerms(collection, targetEntryId, Object.fromEntries(changed.map(([name, ids]) => [name, [...new Set([...target.changes[name] ?? [], ...ids])]])), [...source.checks, ...target.checks]);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
186
236
|
const rows = await this.db.selectFrom("content_taxonomies").select(["taxonomy_id"]).where("collection", "=", collection).where("entry_id", "=", sourceEntryId).execute();
|
|
187
237
|
if (rows.length === 0) return;
|
|
188
238
|
await this.db.insertInto("content_taxonomies").values(rows.map((r) => ({
|
|
@@ -226,7 +276,7 @@ var TaxonomyRepository = class {
|
|
|
226
276
|
*/
|
|
227
277
|
async countEntriesForTerms(translationGroups) {
|
|
228
278
|
if (translationGroups.length === 0) return /* @__PURE__ */ new Map();
|
|
229
|
-
const { chunks, SQL_BATCH_SIZE } = await import("./chunks-
|
|
279
|
+
const { chunks, SQL_BATCH_SIZE } = await import("./chunks-Bb56aCtB.mjs").then((n) => n.r);
|
|
230
280
|
const counts = /* @__PURE__ */ new Map();
|
|
231
281
|
for (const chunk of chunks(translationGroups, SQL_BATCH_SIZE)) {
|
|
232
282
|
const rows = await this.db.selectFrom("content_taxonomies").select(["taxonomy_id", (eb) => eb.fn.count("entry_id").as("count")]).where("taxonomy_id", "in", chunk).groupBy("taxonomy_id").execute();
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { rowUnchanged } from "./database/batch.mjs";
|
|
2
|
+
import { t as DinewayValidationError } from "./types-BI3ULB3A.mjs";
|
|
3
|
+
import { sql } from "kysely";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
|
|
6
|
+
//#region src/content-storage/terms.ts
|
|
7
|
+
const contentTermChangesSchema = z.record(z.string().regex(/^[a-z][a-z0-9_]{0,62}$/), z.array(z.string().min(1).max(128)).max(100));
|
|
8
|
+
async function snapshotContentTermChanges(db, collection, entryId) {
|
|
9
|
+
const rows = await db.selectFrom("content_taxonomies").selectAll().where("collection", "=", collection).where("entry_id", "=", entryId).execute();
|
|
10
|
+
const checks = [...rows.map((row) => rowUnchanged("content_taxonomies", row)), sql`(SELECT COUNT(*) FROM content_taxonomies WHERE collection = ${collection} AND entry_id = ${entryId}) = ${rows.length}`];
|
|
11
|
+
const changes = {};
|
|
12
|
+
for (const row of rows) {
|
|
13
|
+
const term = await db.selectFrom("taxonomies").selectAll().where("translation_group", "=", row.taxonomy_id).orderBy("locale").executeTakeFirst();
|
|
14
|
+
if (!term) throw new DinewayValidationError("An assigned term is missing.");
|
|
15
|
+
checks.push(rowUnchanged("taxonomies", term));
|
|
16
|
+
(changes[term.name] ??= []).push(row.taxonomy_id);
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
changes,
|
|
20
|
+
checks
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Prepare assignments together with content, so partition resolution sees the submitted terms. */
|
|
24
|
+
async function prepareContentTerms(db, collection, entryId, input, locale) {
|
|
25
|
+
const changes = contentTermChangesSchema.parse(input);
|
|
26
|
+
const checks = [];
|
|
27
|
+
const statements = [];
|
|
28
|
+
const replaced = [];
|
|
29
|
+
const assignments = [];
|
|
30
|
+
for (const [name, ids] of Object.entries(changes)) {
|
|
31
|
+
const definitions = await db.selectFrom("_dineway_taxonomy_defs").selectAll().where("name", "=", name).execute();
|
|
32
|
+
if (!definitions.some((definition) => definition.collections === null || z.array(z.string()).parse(JSON.parse(definition.collections)).includes(collection))) throw new DinewayValidationError(`Taxonomy ${name} is not assigned to ${collection}.`);
|
|
33
|
+
checks.push(...definitions.map((definition) => rowUnchanged("_dineway_taxonomy_defs", definition)));
|
|
34
|
+
const groups = /* @__PURE__ */ new Set();
|
|
35
|
+
for (const id of new Set(ids)) {
|
|
36
|
+
const rows = await db.selectFrom("taxonomies").selectAll().where("name", "=", name).where((eb) => eb.or([eb("id", "=", id), eb("translation_group", "=", id)])).execute();
|
|
37
|
+
const term = rows.find((row) => row.locale === locale) ?? rows.find((row) => row.id === id);
|
|
38
|
+
if (!term?.translation_group) throw new DinewayValidationError(`Term ${id} is unavailable in taxonomy ${name}.`);
|
|
39
|
+
checks.push(rowUnchanged("taxonomies", term));
|
|
40
|
+
groups.add(term.translation_group);
|
|
41
|
+
}
|
|
42
|
+
const current = await db.selectFrom("content_taxonomies").selectAll().where("collection", "=", collection).where("entry_id", "=", entryId).where("taxonomy_id", "in", db.selectFrom("taxonomies").select("translation_group").where("name", "=", name)).execute();
|
|
43
|
+
replaced.push(...current.map((row) => row.taxonomy_id));
|
|
44
|
+
assignments.push(...groups);
|
|
45
|
+
checks.push(...current.map((row) => rowUnchanged("content_taxonomies", row)), sql`(SELECT COUNT(*) FROM content_taxonomies WHERE collection = ${collection} AND entry_id = ${entryId} AND taxonomy_id IN (SELECT translation_group FROM taxonomies WHERE name = ${name})) = ${current.length}`);
|
|
46
|
+
statements.push(db.deleteFrom("content_taxonomies").where("collection", "=", collection).where("entry_id", "=", entryId).where("taxonomy_id", "in", db.selectFrom("taxonomies").select("translation_group").where("name", "=", name)).compile());
|
|
47
|
+
for (const group of groups) statements.push(db.insertInto("content_taxonomies").values({
|
|
48
|
+
collection,
|
|
49
|
+
entry_id: entryId,
|
|
50
|
+
taxonomy_id: group
|
|
51
|
+
}).onConflict((oc) => oc.doNothing()).compile());
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
checks,
|
|
55
|
+
statements,
|
|
56
|
+
replaced,
|
|
57
|
+
assignments
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function snapshotPartitionTerms(db, collection, entryId, name, locale, selected) {
|
|
61
|
+
const checks = [];
|
|
62
|
+
const assignments = await db.selectFrom("content_taxonomies").selectAll().where("collection", "=", collection).where("entry_id", "=", entryId).execute();
|
|
63
|
+
checks.push(...assignments.map((row) => rowUnchanged("content_taxonomies", row)), sql`(SELECT COUNT(*) FROM content_taxonomies WHERE collection = ${collection} AND entry_id = ${entryId}) = ${assignments.length}`);
|
|
64
|
+
const ids = selected ?? assignments.map((row) => row.taxonomy_id);
|
|
65
|
+
const terms = [];
|
|
66
|
+
const seen = /* @__PURE__ */ new Set();
|
|
67
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
68
|
+
const visit = async (id, isSelected) => {
|
|
69
|
+
const rows = await db.selectFrom("taxonomies").selectAll().where("name", "=", name).where((eb) => eb.or([eb("id", "=", id), eb("translation_group", "=", id)])).execute();
|
|
70
|
+
const term = rows.find((row) => row.locale === locale) ?? rows.find((row) => row.id === id) ?? rows.toSorted((a, b) => a.locale.localeCompare(b.locale))[0];
|
|
71
|
+
if (!term?.translation_group) {
|
|
72
|
+
if (selected) throw new DinewayValidationError(`Partition term ${id} is missing from ${name}.`);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (ancestors.has(term.id)) throw new DinewayValidationError("Partition taxonomy contains a parent cycle.");
|
|
76
|
+
if (seen.has(term.id)) {
|
|
77
|
+
if (isSelected) terms.find((value) => value.id === term.id).selected = true;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (seen.size >= 100) throw new DinewayValidationError("Partition taxonomy exceeds 100 terms and ancestors.");
|
|
81
|
+
seen.add(term.id);
|
|
82
|
+
checks.push(rowUnchanged("taxonomies", term));
|
|
83
|
+
terms.push({
|
|
84
|
+
id: term.id,
|
|
85
|
+
group: term.translation_group,
|
|
86
|
+
name: term.name,
|
|
87
|
+
slug: term.slug,
|
|
88
|
+
parentId: term.parent_id,
|
|
89
|
+
selected: isSelected,
|
|
90
|
+
data: term.data ? z.record(z.string(), z.json()).parse(JSON.parse(term.data)) : null
|
|
91
|
+
});
|
|
92
|
+
ancestors.add(term.id);
|
|
93
|
+
if (term.parent_id) await visit(term.parent_id, false);
|
|
94
|
+
ancestors.delete(term.id);
|
|
95
|
+
};
|
|
96
|
+
for (const id of [...ids].toSorted()) await visit(id, true);
|
|
97
|
+
return {
|
|
98
|
+
terms,
|
|
99
|
+
checks
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
export { snapshotPartitionTerms as i, prepareContentTerms as n, snapshotContentTermChanges as r, contentTermChangesSchema as t };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { toPlainText } from "@portabletext/toolkit";
|
|
2
|
+
|
|
3
|
+
//#region src/search/text-extraction.ts
|
|
4
|
+
/**
|
|
5
|
+
* Text Extraction
|
|
6
|
+
*
|
|
7
|
+
* Extracts plain text from Portable Text blocks for FTS indexing.
|
|
8
|
+
* Uses @portabletext/toolkit as base with extensions for custom block types.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Validate that a value looks like a Portable Text block array.
|
|
12
|
+
* Each element must have at least a `_type` string property.
|
|
13
|
+
*/
|
|
14
|
+
function isPortableTextArray(value) {
|
|
15
|
+
return value.every((item) => typeof item === "object" && item !== null && "_type" in item && typeof item._type === "string");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Extract additional text from custom block types that toPlainText doesn't handle
|
|
19
|
+
*/
|
|
20
|
+
function extractCustomBlockText(block) {
|
|
21
|
+
if (block._type === "code" && "code" in block && typeof block.code === "string") return block.code;
|
|
22
|
+
if (block._type === "image") {
|
|
23
|
+
const parts = [];
|
|
24
|
+
if ("alt" in block && typeof block.alt === "string" && block.alt) parts.push(block.alt);
|
|
25
|
+
if ("caption" in block && typeof block.caption === "string" && block.caption) parts.push(block.caption);
|
|
26
|
+
return parts.join(" ");
|
|
27
|
+
}
|
|
28
|
+
return "";
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract plain text from Portable Text blocks
|
|
32
|
+
*
|
|
33
|
+
* Uses @portabletext/toolkit's toPlainText for standard blocks,
|
|
34
|
+
* plus extracts text from custom block types (code, images with alt/caption).
|
|
35
|
+
*
|
|
36
|
+
* @param blocks - Array of Portable Text blocks (or a JSON string)
|
|
37
|
+
* @returns Plain text content
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const text = extractPlainText([
|
|
42
|
+
* {
|
|
43
|
+
* _type: "block",
|
|
44
|
+
* _key: "abc",
|
|
45
|
+
* children: [{ _type: "span", _key: "s1", text: "Hello World" }]
|
|
46
|
+
* }
|
|
47
|
+
* ]);
|
|
48
|
+
* // Returns: "Hello World"
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
function extractPlainText(blocks) {
|
|
52
|
+
if (!blocks) return "";
|
|
53
|
+
let parsedBlocks;
|
|
54
|
+
if (typeof blocks === "string") try {
|
|
55
|
+
parsedBlocks = JSON.parse(blocks);
|
|
56
|
+
} catch {
|
|
57
|
+
return blocks;
|
|
58
|
+
}
|
|
59
|
+
else parsedBlocks = blocks;
|
|
60
|
+
if (!Array.isArray(parsedBlocks)) return "";
|
|
61
|
+
return [toPlainText(parsedBlocks.map((b) => {
|
|
62
|
+
const obj = { _type: b._type };
|
|
63
|
+
for (const [key, val] of Object.entries(b)) obj[key] = val;
|
|
64
|
+
return obj;
|
|
65
|
+
})), ...parsedBlocks.map(extractCustomBlockText).filter((text) => text.length > 0)].filter((t) => t.length > 0).join("\n");
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Extract searchable text from a content entry
|
|
69
|
+
*
|
|
70
|
+
* Extracts text from specified fields, handling both plain text and Portable Text.
|
|
71
|
+
*
|
|
72
|
+
* @param entry - Content entry data
|
|
73
|
+
* @param fields - Field names to extract text from
|
|
74
|
+
* @returns Object mapping field names to extracted text
|
|
75
|
+
*/
|
|
76
|
+
function extractSearchableFields(entry, fields) {
|
|
77
|
+
const result = {};
|
|
78
|
+
for (const field of fields) {
|
|
79
|
+
const value = entry[field];
|
|
80
|
+
if (value === null || value === void 0) {
|
|
81
|
+
result[field] = "";
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (typeof value === "string") if (value.startsWith("[")) result[field] = extractPlainText(value);
|
|
85
|
+
else result[field] = value;
|
|
86
|
+
else if (Array.isArray(value)) if (isPortableTextArray(value)) result[field] = extractPlainText(value);
|
|
87
|
+
else result[field] = JSON.stringify(value);
|
|
88
|
+
else if (typeof value === "object") result[field] = JSON.stringify(value);
|
|
89
|
+
else if (typeof value === "number" || typeof value === "boolean") result[field] = `${value}`;
|
|
90
|
+
else result[field] = "";
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
//#endregion
|
|
96
|
+
export { extractSearchableFields as n, extractPlainText as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as __exportAll } from "./runner-
|
|
2
|
-
import { r as encodeBase64, t as decodeBase64 } from "./base64-
|
|
1
|
+
import { c as __exportAll } from "./runner-CuG8o1uW.mjs";
|
|
2
|
+
import { r as encodeBase64, t as decodeBase64 } from "./base64-qvSs0Gxy.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/database/repositories/types.ts
|
|
5
5
|
var types_exports = /* @__PURE__ */ __exportAll({
|