dineway 0.1.49 → 0.2.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/activity-DUaz_w7p.mjs +79 -0
- package/dist/{activity-events-CwM7yxPW.mjs → activity-events-CJDvE2uc.mjs} +5 -113
- package/dist/actor-0QJ1Gbtf.mjs +37 -0
- package/dist/after-BfniwgIf.mjs +9 -0
- package/dist/{allowed-origins-CyGnbgBd.mjs → allowed-origins--OwHHiY8.mjs} +1 -1
- package/dist/api/route-utils.d.mts +9 -10
- package/dist/api/route-utils.mjs +16 -13
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +5 -4
- package/dist/{api-BMIxRIEN.mjs → api-B4PHIF4V.mjs} +93 -41
- package/dist/{api-tokens-DtvdtIkm.mjs → api-tokens-tbK_sORH.mjs} +6 -2
- package/dist/{apply-D_RlTYtC.mjs → apply-DjTqq6Ae.mjs} +117 -77
- package/dist/astro/image-endpoint.d.mts +7 -0
- package/dist/astro/image-endpoint.mjs +54 -0
- package/dist/astro/index.d.mts +34 -11
- package/dist/astro/index.mjs +163 -24
- package/dist/astro/integration/shims/use-sync-external-store-with-selector.js +71 -0
- package/dist/astro/integration/shims/use-sync-external-store.js +1 -0
- package/dist/astro/middleware/auth.d.mts +8 -18
- package/dist/astro/middleware/auth.mjs +42 -24
- package/dist/astro/middleware/redirect.mjs +13 -4
- package/dist/astro/middleware/request-context.mjs +8 -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.mjs +389 -206
- package/dist/astro/routes/admin.astro +6 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -6
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -6
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
- package/dist/astro/routes/api/admin/briefing.mjs +21 -17
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -8
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -8
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -8
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +17 -14
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +17 -14
- package/dist/astro/routes/api/admin/bylines/index.mjs +17 -14
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +14 -12
- package/dist/astro/routes/api/admin/comments/_id_.mjs +6 -5
- package/dist/astro/routes/api/admin/comments/bulk.mjs +11 -9
- package/dist/astro/routes/api/admin/comments/counts.mjs +6 -5
- package/dist/astro/routes/api/admin/comments/index.mjs +11 -9
- package/dist/astro/routes/api/admin/context/_id_/history.mjs +27 -24
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +27 -24
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +32 -28
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +32 -28
- package/dist/astro/routes/api/admin/context/diff.mjs +31 -27
- package/dist/astro/routes/api/admin/context/index.mjs +32 -28
- package/dist/astro/routes/api/admin/context/stale.mjs +31 -27
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +27 -24
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +31 -27
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +31 -27
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +28 -25
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -51
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +56 -51
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +47 -43
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -49
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +53 -48
- package/dist/astro/routes/api/admin/plugins/index.mjs +47 -43
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +46 -42
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +53 -48
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +46 -42
- package/dist/astro/routes/api/admin/plugins/updates.mjs +46 -42
- package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +5 -5
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +32 -63
- package/dist/astro/routes/api/admin/review-requests/index.d.mts +2 -1
- package/dist/astro/routes/api/admin/review-requests/index.mjs +58 -10
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +46 -42
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +46 -42
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -3
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +8 -7
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +4 -4
- package/dist/astro/routes/api/admin/users/index.mjs +7 -6
- package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
- package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
- package/dist/astro/routes/api/auth/invite/complete.mjs +12 -11
- package/dist/astro/routes/api/auth/invite/index.mjs +9 -8
- package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -10
- package/dist/astro/routes/api/auth/logout.mjs +2 -2
- package/dist/astro/routes/api/auth/magic-link/send.mjs +11 -10
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
- package/dist/astro/routes/api/auth/me.mjs +9 -8
- package/dist/astro/routes/api/auth/mode.mjs +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -5
- package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/options.mjs +12 -11
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -9
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -10
- package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -10
- package/dist/astro/routes/api/auth/setup-token/index.mjs +5 -5
- package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/signup/complete.mjs +12 -11
- package/dist/astro/routes/api/auth/signup/request.mjs +11 -10
- package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +15 -13
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.d.mts +8 -0
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +160 -0
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +49 -20
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +67 -32
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +16 -14
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -9
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +11 -9
- package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -6
- package/dist/astro/routes/api/dashboard.mjs +9 -8
- 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 +22 -10
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +9 -6
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +18 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +85 -37
- package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +20 -14
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +36 -32
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +17 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +121 -100
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +24 -12
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +55 -2
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +284 -55
- package/dist/astro/routes/api/manifest.mjs +14 -5
- package/dist/astro/routes/api/mcp.mjs +753 -170
- package/dist/astro/routes/api/media/_id_/confirm.mjs +38 -10
- package/dist/astro/routes/api/media/_id_.mjs +11 -7
- 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 +11 -10
- package/dist/astro/routes/api/media.mjs +28 -35
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +32 -28
- package/dist/astro/routes/api/menus/_name_/items.mjs +32 -28
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +32 -28
- package/dist/astro/routes/api/menus/_name_/translations.mjs +32 -28
- package/dist/astro/routes/api/menus/_name_.mjs +32 -28
- package/dist/astro/routes/api/menus/index.mjs +32 -28
- package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
- package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
- package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
- package/dist/astro/routes/api/oauth/register.mjs +4 -4
- package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
- package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
- package/dist/astro/routes/api/oauth/token.mjs +6 -6
- package/dist/astro/routes/api/openapi.json.mjs +4 -3
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +46 -31
- package/dist/astro/routes/api/redirects/404s/index.mjs +11 -10
- package/dist/astro/routes/api/redirects/404s/summary.mjs +11 -10
- package/dist/astro/routes/api/redirects/_id_.mjs +33 -29
- package/dist/astro/routes/api/redirects/index.mjs +33 -29
- 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 +48 -43
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +48 -43
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +48 -43
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +48 -43
- package/dist/astro/routes/api/schema/collections/index.mjs +48 -43
- package/dist/astro/routes/api/schema/index.mjs +14 -15
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +46 -42
- package/dist/astro/routes/api/schema/orphans/index.mjs +46 -42
- package/dist/astro/routes/api/search/enable.mjs +11 -10
- package/dist/astro/routes/api/search/index.mjs +10 -9
- package/dist/astro/routes/api/search/rebuild.mjs +11 -10
- package/dist/astro/routes/api/search/stats.mjs +6 -6
- package/dist/astro/routes/api/search/suggest.mjs +10 -9
- package/dist/astro/routes/api/sections/_slug_.mjs +32 -28
- package/dist/astro/routes/api/sections/index.mjs +32 -28
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +32 -28
- package/dist/astro/routes/api/setup/admin-verify.mjs +14 -13
- package/dist/astro/routes/api/setup/admin.mjs +12 -11
- package/dist/astro/routes/api/setup/dev-bypass.mjs +31 -25
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +29 -25
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +8 -7
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +35 -31
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +35 -31
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +35 -31
- package/dist/astro/routes/api/taxonomies/index.mjs +35 -31
- package/dist/astro/routes/api/themes/preview.mjs +5 -5
- 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 +31 -27
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +32 -28
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +32 -28
- package/dist/astro/routes/api/widget-areas/_name_.mjs +29 -26
- package/dist/astro/routes/api/widget-areas/index.mjs +32 -28
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +8 -7
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +23 -14
- package/dist/astro/routes/sitemap.xml.mjs +9 -8
- package/dist/astro/session-driver.d.mts +1 -1
- package/dist/astro/session-driver.mjs +2 -2
- package/dist/astro/types.d.mts +22 -13
- package/dist/{audit-BeNsSyfU.mjs → audit-B2pRxZ20.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-Dr14I98m.mjs → auth-control-guard-D71jourk.mjs} +1 -1
- package/dist/{authorize-BLO0m7fW.mjs → authorize-ZXPGPwKn.mjs} +1 -1
- package/dist/{briefing-CkTee1ex.mjs → briefing-0rf-su3-.mjs} +90 -28
- package/dist/{briefing-DJX6irto.mjs → briefing-kRhegBoF.mjs} +2 -1
- package/dist/bundle-CEcdUa1s.mjs +602 -0
- package/dist/{byline-BVC1lV6G.mjs → byline-7xR185Ly.mjs} +30 -62
- package/dist/{byline-fields-Cj39WhXC.mjs → byline-fields-BKzA0fJU.mjs} +1 -1
- package/dist/{byline-fields-uJlygdzM.d.mts → byline-fields-Ckeqd1OY.d.mts} +88 -35
- package/dist/{byline-fields-cNrLJVRs.mjs → byline-fields-WN7RQT4q.mjs} +10 -4
- package/dist/{byline-registry-4v6tXMNX.mjs → byline-registry-Ba54M74c.mjs} +2 -2
- package/dist/{bylines-LN9XISRo.mjs → bylines-C-EL6dh3.mjs} +9 -3
- package/dist/{bylines-DwokOFj6.mjs → bylines-CmZFCMr0.mjs} +5 -5
- package/dist/{cache-Bac05gBd.mjs → cache-DkVCKGio.mjs} +2 -2
- package/dist/{chunks-CuUt7K50.mjs → chunks-ChGNDY8r.mjs} +1 -1
- package/dist/cli/index.d.mts +29 -1
- package/dist/cli/index.mjs +1466 -1763
- package/dist/cli/plugin-kit.d.mts +75 -0
- package/dist/cli/plugin-kit.mjs +4 -0
- package/dist/client/external-auth-headers.d.mts +1 -1
- package/dist/client/index.d.mts +27 -52
- package/dist/client/index.mjs +34 -6
- package/dist/client-factory-BDD9azPJ.mjs +233 -0
- package/dist/{comment-Beue8-15.mjs → comment-DFALgsJD.mjs} +13 -3
- package/dist/comment-reaction-C37bf99u.mjs +58 -0
- package/dist/{comments-DcjFIfqX.mjs → comments-B3NwDBxl.mjs} +1 -1
- package/dist/{content-CBxYGWfL.mjs → content-DJcAYFhz.mjs} +51 -34
- package/dist/content-refresh-B4ZCmxgd.mjs +1576 -0
- package/dist/{context-Df1xVYyr.mjs → context-DnpXcp6Y.mjs} +2 -2
- package/dist/{context-CQVNZaR8.mjs → context-fSCYLL3c.mjs} +125 -53
- package/dist/{context-route-helpers-B9wj8Rmh.mjs → context-route-helpers-CI8XzcsK.mjs} +2 -1
- package/dist/{cron-DxCAU_Sn.mjs → cron-B1SL_lsb.mjs} +7 -3
- package/dist/{dashboard-B7ZUNuyF.mjs → dashboard-D0nj5oWg.mjs} +4 -4
- 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-BZVGftqi.mjs → device-flow-BJe6VEhP.mjs} +5 -5
- package/dist/{placeholder-d54Qr_7n.mjs → enrich-Ck9tfMqe.mjs} +36 -9
- package/dist/{error-DCSuUAZW.mjs → error-CSVaQNZy.mjs} +5 -0
- package/dist/{experimental-workflows-CSMffP6q.mjs → experimental-workflows-GVhUgzEs.mjs} +1 -1
- package/dist/field-defs-cache-DL-T2XVS.mjs +49 -0
- package/dist/forgeway-seo-client-G5ddhVHd.mjs +456 -0
- package/dist/{fts-manager-B5l_qwrA.mjs → fts-manager-ewTGohf4.mjs} +1 -1
- package/dist/{hitl-requests-7NlzVeUA.mjs → hitl-requests-DEFj8e6u.mjs} +2 -2
- package/dist/{hitl-route-helpers-k---_H3-.mjs → hitl-route-helpers-C23JHaWz.mjs} +5 -4
- package/dist/import-CXXL5pip.mjs +1354 -0
- package/dist/index-DcnOCD1e.d.mts +375 -0
- package/dist/index.d.mts +15 -16
- package/dist/index.mjs +85 -70
- package/dist/{jsonld-DZ67souc.d.mts → jsonld-DzKbhRZ4.d.mts} +8 -4
- package/dist/{load-D9OiGr2m.mjs → load-CFtJRT3c.mjs} +1 -1
- package/dist/{loader--GOYux8M.mjs → loader-aWkkc1_o.mjs} +117 -31
- package/dist/{manifest-schema-qh2P7RDX.mjs → manifest-schema-uA6pRFXi.mjs} +38 -1
- package/dist/mcp-reviewed-executor-Dn52L_yY.mjs +558 -0
- package/dist/media/image-endpoint.d.mts +32 -0
- package/dist/media/image-endpoint.mjs +111 -0
- package/dist/media/index.d.mts +27 -2
- package/dist/media/index.mjs +5 -3
- package/dist/media/local-runtime.d.mts +15 -11
- package/dist/media/local-runtime.mjs +9 -7
- package/dist/{media-CbKyYukG.mjs → media-CVMOoywq.mjs} +3 -1
- package/dist/{media-allowlist-BYxJIcTO.mjs → media-allowlist-zDNJmXCo.mjs} +1 -1
- package/dist/media-url-BdoLPvg8.mjs +20 -0
- package/dist/{menus-C7F0sCrC.mjs → menus-CCG2z5um.mjs} +80 -15
- package/dist/{menus-BZbXf-ej.mjs → menus-CmyIkRG5.mjs} +19 -5
- package/dist/{normalize-ByemhhfW.mjs → normalize-Cyt7JdF7.mjs} +8 -1
- package/dist/{oauth-authorization-DF-LCsIA.mjs → oauth-authorization-B9H7X85L.mjs} +5 -5
- package/dist/{oauth-clients-Du-V0fEm.mjs → oauth-clients-Dwl32-Uj.mjs} +2 -2
- package/dist/object-cache/memory.d.mts +14 -0
- package/dist/object-cache/memory.mjs +55 -0
- package/dist/object-cache-D51qOseS.mjs +419 -0
- package/dist/output-DhBe5_Pi.mjs +68 -0
- package/dist/page/index.d.mts +10 -3
- package/dist/page/index.mjs +2 -2
- package/dist/{parse-CneSgl7-.mjs → parse-i15EFSAE.mjs} +1 -1
- package/dist/{parser-DxfsARXL.mjs → parser-06LLLL4E.mjs} +151 -9
- package/dist/{placeholder-CXfoCtCd.d.mts → placeholder-DkWkXfDI.d.mts} +12 -4
- package/dist/plugin-utils.d.mts +8 -9
- package/dist/plugins/adapt-sandbox-entry.d.mts +8 -9
- package/dist/plugins/adapt-sandbox-entry.mjs +13 -2
- package/dist/{plugins-DzfqRREq.mjs → plugins-CPA2PtfY.mjs} +919 -66
- package/dist/{transport-LSdZVXHF.mjs → portable-text-BASHceim.mjs} +1 -134
- package/dist/portable-text-E79LyjGo.d.mts +45 -0
- package/dist/{preview-C-3YTX2U.mjs → preview-BjedZm8G.mjs} +4 -3
- package/dist/process-cache-CCDgti7j.mjs +106 -0
- package/dist/project-env-DKibmuP8.mjs +95 -0
- package/dist/{provider-loader-9it4vd6L.d.mts → provider-loader-DC2JdWeO.d.mts} +1 -1
- package/dist/{public-url-B4xV4rGa.d.mts → public-url-DQJCnYi9.d.mts} +1 -1
- package/dist/publication-authorization-RKiHXKtq.mjs +985 -0
- package/dist/{query-CZ3TH_Uu.mjs → query-C2U5u5_p.mjs} +11 -6
- package/dist/{query-Ds0EnMFX.mjs → query-DEv5x6yB.mjs} +281 -76
- package/dist/{rate-limit-i0G3IAOX.mjs → rate-limit-DglsAJSw.mjs} +2 -2
- package/dist/{redirect-CEACczxo.mjs → redirect-ubhEqQCQ.mjs} +2 -2
- package/dist/{redirects-ocRJmQHP.mjs → redirects-Bhpm8bRe.mjs} +35 -19
- package/dist/{redirects-DYj1yPxs.mjs → redirects-xs2yahLq.mjs} +47 -24
- package/dist/{registry-D7HACema.mjs → registry-BYYyb2tF.mjs} +148 -81
- package/dist/request-context.d.mts +2 -0
- package/dist/{request-meta-DAb6xaP9.mjs → request-meta-CFe1tW2M.mjs} +1 -1
- package/dist/review-payload-BysRWpxS.mjs +111 -0
- package/dist/{review-requests-BW2NxY-l.mjs → review-requests-CTWGnWUt.mjs} +1 -1
- package/dist/review-requests-D42VEP1l.mjs +142 -0
- package/dist/review-route-helpers-C31vO6SI.mjs +41 -0
- package/dist/runner-BgmttQmD.mjs +7444 -0
- package/dist/{runner-09sTqtv0.d.mts → runner-D6hzs8L9.d.mts} +1 -1
- package/dist/runtime.d.mts +9 -10
- package/dist/runtime.mjs +3 -3
- package/dist/schema-DUtnZxjZ.mjs +8 -0
- package/dist/{search-Gdrqj582.mjs → search-DUKgZUlm.mjs} +5 -3
- package/dist/{secrets-CeGpBFV2.mjs → secrets-ZV5rd8yV.mjs} +14 -11
- package/dist/{sections-BOjU13Y-.mjs → sections-DvFgsnda.mjs} +2 -2
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +21 -18
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo/index.mjs +3 -12
- package/dist/{seo-5lJOtB5J.mjs → seo-BLszyJxd.mjs} +22 -4
- package/dist/{seo-CLj8lS7Q.mjs → seo-BU8MLCS9.mjs} +5 -2
- package/dist/{seo-contributions-CqVvReEj.mjs → seo-contributions-GnCuL1ML.mjs} +11 -3
- package/dist/{service-jGlhrICs.mjs → service-FL3fB0Rx.mjs} +2 -2
- package/dist/session-user-Ct6GBLvn.mjs +22 -0
- package/dist/{settings-CUXOxzsT.mjs → settings-BECcAIRH.mjs} +28 -55
- package/dist/{settings-DlBsT2VS.mjs → settings-EzADu-dd.mjs} +2 -2
- package/dist/{setup-complete-BRrdPYjZ.mjs → setup-complete-Da0axZEE.mjs} +1 -1
- package/dist/{site-activity-DONFrMBJ.mjs → site-activity-h8smOlYI.mjs} +1 -1
- package/dist/{site-context-C8Az_P_I.mjs → site-context-B8T1kpUP.mjs} +337 -530
- package/dist/{site-url-DIMD68go.mjs → site-url-DJEid0ml.mjs} +1 -1
- package/dist/stable-hash-DshcXvRE.mjs +19 -0
- package/dist/status-NqWOSFAD.mjs +21 -0
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +1 -1
- package/dist/{taxonomies-D9Sw4wWM.mjs → taxonomies-BiM9NtgW.mjs} +36 -29
- package/dist/taxonomies-DSnY5nOa.mjs +443 -0
- package/dist/{taxonomy-B169Nm6B.mjs → taxonomy-0k_vRVsD.mjs} +44 -9
- package/dist/transport-C46KHLMP.mjs +134 -0
- package/dist/types-A8fPOJnl.mjs +69 -0
- package/dist/types-BLQCz46p.d.mts +118 -0
- package/dist/{types-CwawBUTa.d.mts → types-B_FlxIIl.d.mts} +4 -1
- package/dist/{types-CSgR9nQB.mjs → types-ChxYDRvx.mjs} +1 -1
- package/dist/{types-GaCtZ1k9.d.mts → types-Cw0PeCT_.d.mts} +18 -0
- package/dist/types-DuQn1G7-.d.mts +2973 -0
- package/dist/{runtime-C4-2lSFg.d.mts → types-DwoUifGE.d.mts} +5668 -3000
- package/dist/{types-DRIKLmJI.d.mts → types-opjX_kz6.d.mts} +17 -2
- package/dist/ui/server-runtime.d.mts +13 -15
- package/dist/ui/server-runtime.mjs +24 -20
- package/dist/url-guoXQQcV.mjs +33 -0
- package/dist/{user-DTLoZs16.mjs → user-BH-n01y3.mjs} +2 -2
- package/dist/{utils-B8hBJ9Oz.mjs → utils-D1SrKGtP.mjs} +129 -7
- package/dist/{validate-DzjCdy6v.d.mts → validate-CbVFoJgc.d.mts} +65 -8
- package/dist/{validate-DWmPO6oj.mjs → validate-D1HL-oLR.mjs} +11 -6
- package/dist/version-C3iVRuaF.mjs +6 -0
- package/dist/{widgets-BpJ8EpPd.mjs → widgets-BZrLrNgS.mjs} +46 -43
- package/dist/{wordpress-slugs-DHNR9LpG.mjs → wordpress-slugs-C3PWcowq.mjs} +1 -1
- package/dist/{zod-generator-K91-g665.mjs → zod-generator-C7AsLpSB.mjs} +42 -14
- package/package.json +38 -8
- package/src/components/Block.astro +50 -0
- package/src/components/Comments.astro +143 -1
- package/src/components/DinewayHead.astro +19 -2
- package/src/components/DinewayImage.astro +66 -33
- package/src/components/DinewayMedia.astro +1 -2
- package/src/components/Image.astro +85 -40
- package/src/components/InlinePortableTextEditor.tsx +12 -2
- package/src/components/JsonLdScript.astro +9 -0
- package/src/components/LiveSearch.astro +40 -4
- package/src/components/index.ts +4 -0
- package/src/components/live-search-routing.ts +30 -0
- package/src/components/portable-text-text-align.ts +15 -0
- package/src/ui.ts +2 -0
- package/dist/entity-aliases-4y93Yjuc.mjs +0 -51
- package/dist/import-4YBXbDkI.mjs +0 -684
- package/dist/index-CZiWCQDp.d.mts +0 -227
- package/dist/review-requests-Qum4713s.mjs +0 -79
- package/dist/runner-DzIpHGND.mjs +0 -2836
- package/dist/schema-Bsi-VpYv.mjs +0 -8
- package/dist/taxonomies-CZ-_DitR.mjs +0 -327
- package/dist/types-CuJOqHfM.d.mts +0 -758
- package/dist/types-DSPGWjxO.d.mts +0 -1247
- package/dist/types-nP9vGUFq.d.mts +0 -56
- package/dist/version-C4gfn0PJ.mjs +0 -6
- /package/dist/{adapters-OQCImOL7.d.mts → adapters-BiRymx02.d.mts} +0 -0
- /package/dist/{api-tokens-CYUoFGo7.mjs → api-tokens-Ypaly90d.mjs} +0 -0
- /package/dist/{challenge-store-DFxX0_15.mjs → challenge-store-D5pSY2S1.mjs} +0 -0
- /package/dist/{components--pg6zBvu.mjs → components-DImzlLhb.mjs} +0 -0
- /package/dist/{context-types-r8oFvyOq.mjs → context-types-eBuMDAg-.mjs} +0 -0
- /package/dist/{default-B6iaLvP7.mjs → default-D4Vygcy_.mjs} +0 -0
- /package/dist/{email-console-BOVqIYpB.mjs → email-console-Bp0r68iF.mjs} +0 -0
- /package/dist/{escape-BDgouFFY.mjs → escape-DN4Qmjsl.mjs} +0 -0
- /package/dist/{hash-BPmX6P8I.mjs → hash-mxxx2oPW.mjs} +0 -0
- /package/dist/{mime-CbKsKDCB.mjs → mime-C0vOHFm7.mjs} +0 -0
- /package/dist/{mode-CZqCF9dZ.mjs → mode-C8yZnIlR.mjs} +0 -0
- /package/dist/{oauth-state-store-qncPB_IU.mjs → oauth-state-store-CndT35iw.mjs} +0 -0
- /package/dist/{oauth-user-lookup-BFjWF8wK.mjs → oauth-user-lookup-CMehAaKs.mjs} +0 -0
- /package/dist/{options-LsPjZlqD.mjs → options-DQPTH5n0.mjs} +0 -0
- /package/dist/{passkey-config-DzHQK90v.mjs → passkey-config-NYukYGed.mjs} +0 -0
- /package/dist/{patterns-DKAX6oqN.mjs → patterns-CoqlXUvk.mjs} +0 -0
- /package/dist/{provider-loader-DzUxejk7.mjs → provider-loader-BtfrrzfD.mjs} +0 -0
- /package/dist/{public-url-B_m9IwdV.mjs → public-url-Cp6hyjVR.mjs} +0 -0
- /package/dist/{redirect-BjIBtDWY.mjs → redirect-DrbEmU9a.mjs} +0 -0
- /package/dist/{request-cache-ho99schz.mjs → request-cache-CBFjCwSt.mjs} +0 -0
- /package/dist/{resolve-DTuDyYKs.mjs → resolve-DE71WcL9.mjs} +0 -0
- /package/dist/{setup-nonce-pyGfc9hV.mjs → setup-nonce-BtkKnvxQ.mjs} +0 -0
- /package/dist/{sidecar-client-mJxwayYN.mjs → sidecar-client-Ctzfyyp-.mjs} +0 -0
- /package/dist/{slugify-BqebcqBg.mjs → slugify-KSsVD_D3.mjs} +0 -0
- /package/dist/{ssrf-DiKqWd3N.mjs → ssrf-FJqwQzj4.mjs} +0 -0
- /package/dist/{tokens-SLmgowfd.mjs → tokens-BDQU29Vd.mjs} +0 -0
- /package/dist/{transaction-CFLhEOuH.mjs → transaction-0LEAAy8R.mjs} +0 -0
- /package/dist/{transport-BnsNxh2l.d.mts → transport-D9pKAzFP.d.mts} +0 -0
- /package/dist/{trusted-proxy-BgIIcbsN.mjs → trusted-proxy-Dm7Mxvt6.mjs} +0 -0
- /package/dist/{types-CJ8DkL0q.mjs → types-B7TDDFMG.mjs} +0 -0
- /package/dist/{types-Dryvv7LH.d.mts → types-g0zMtraY.d.mts} +0 -0
- /package/dist/{types-Cg276-3z.mjs → types-mVVgRPaU.mjs} +0 -0
- /package/dist/{types-DZpT-PnG.d.mts → types-wFu80FrO.d.mts} +0 -0
- /package/dist/{url-w7Mp5qAD.mjs → url-EMAguGVk.mjs} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { t as OptionsRepository } from "./options-
|
|
2
|
-
import { t as RedirectRepository } from "./redirect-
|
|
3
|
-
import { a as validateDestinationParams, i as matchPattern, n as interpolateDestination, o as validatePattern, r as isPattern, t as compilePattern } from "./patterns-
|
|
4
|
-
import { i as invalidateRedirectCache } from "./cache-
|
|
1
|
+
import { t as OptionsRepository } from "./options-DQPTH5n0.mjs";
|
|
2
|
+
import { t as RedirectRepository } from "./redirect-ubhEqQCQ.mjs";
|
|
3
|
+
import { a as validateDestinationParams, i as matchPattern, n as interpolateDestination, o as validatePattern, r as isPattern, t as compilePattern } from "./patterns-CoqlXUvk.mjs";
|
|
4
|
+
import { i as invalidateRedirectCache } from "./cache-DkVCKGio.mjs";
|
|
5
|
+
import { n as isTerminalStatus } from "./status-NqWOSFAD.mjs";
|
|
5
6
|
|
|
6
7
|
//#region src/redirects/loops.ts
|
|
7
8
|
/**
|
|
@@ -176,7 +177,17 @@ async function handleRedirectList(db, params) {
|
|
|
176
177
|
async function handleRedirectCreate(db, input) {
|
|
177
178
|
try {
|
|
178
179
|
const repo = new RedirectRepository(db);
|
|
179
|
-
|
|
180
|
+
const type = input.type ?? 301;
|
|
181
|
+
const terminal = isTerminalStatus(type);
|
|
182
|
+
const destination = terminal ? "" : input.destination ?? "";
|
|
183
|
+
if (!terminal && !destination) return {
|
|
184
|
+
success: false,
|
|
185
|
+
error: {
|
|
186
|
+
code: "VALIDATION_ERROR",
|
|
187
|
+
message: "destination is required for redirect types"
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
if (!terminal && input.source === destination) return {
|
|
180
191
|
success: false,
|
|
181
192
|
error: {
|
|
182
193
|
code: "VALIDATION_ERROR",
|
|
@@ -193,14 +204,16 @@ async function handleRedirectCreate(db, input) {
|
|
|
193
204
|
message: `Invalid source pattern: ${patternError}`
|
|
194
205
|
}
|
|
195
206
|
};
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
207
|
+
if (!terminal) {
|
|
208
|
+
const destError = validateDestinationParams(input.source, destination);
|
|
209
|
+
if (destError) return {
|
|
210
|
+
success: false,
|
|
211
|
+
error: {
|
|
212
|
+
code: "VALIDATION_ERROR",
|
|
213
|
+
message: destError
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
}
|
|
204
217
|
}
|
|
205
218
|
if (await repo.findBySource(input.source)) return {
|
|
206
219
|
success: false,
|
|
@@ -209,14 +222,14 @@ async function handleRedirectCreate(db, input) {
|
|
|
209
222
|
message: `A redirect from "${input.source}" already exists`
|
|
210
223
|
}
|
|
211
224
|
};
|
|
212
|
-
if (input.enabled !== false) {
|
|
213
|
-
const loopPath = wouldCreateLoop(input.source,
|
|
225
|
+
if (!terminal && input.enabled !== false) {
|
|
226
|
+
const loopPath = wouldCreateLoop(input.source, destination, toEdges(await repo.findAllEnabled()));
|
|
214
227
|
if (loopPath) return loopError(loopPath);
|
|
215
228
|
}
|
|
216
229
|
const redirect = await repo.create({
|
|
217
230
|
source: input.source,
|
|
218
|
-
destination
|
|
219
|
-
type
|
|
231
|
+
destination,
|
|
232
|
+
type,
|
|
220
233
|
isPattern: sourceIsPattern,
|
|
221
234
|
enabled: input.enabled ?? true,
|
|
222
235
|
groupName: input.groupName ?? null
|
|
@@ -279,8 +292,17 @@ async function handleRedirectUpdate(db, id, input) {
|
|
|
279
292
|
}
|
|
280
293
|
};
|
|
281
294
|
const newSource = input.source ?? existing.source;
|
|
282
|
-
const
|
|
283
|
-
|
|
295
|
+
const newType = input.type ?? existing.type;
|
|
296
|
+
const terminal = isTerminalStatus(newType);
|
|
297
|
+
const newDest = terminal ? "" : input.destination ?? existing.destination;
|
|
298
|
+
if (!terminal && !newDest) return {
|
|
299
|
+
success: false,
|
|
300
|
+
error: {
|
|
301
|
+
code: "VALIDATION_ERROR",
|
|
302
|
+
message: "destination is required for redirect types"
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
if (!terminal && newSource === newDest) return {
|
|
284
306
|
success: false,
|
|
285
307
|
error: {
|
|
286
308
|
code: "VALIDATION_ERROR",
|
|
@@ -307,7 +329,7 @@ async function handleRedirectUpdate(db, id, input) {
|
|
|
307
329
|
}
|
|
308
330
|
};
|
|
309
331
|
}
|
|
310
|
-
if (isPattern(newSource)) {
|
|
332
|
+
if (!terminal && isPattern(newSource)) {
|
|
311
333
|
const destError = validateDestinationParams(newSource, newDest);
|
|
312
334
|
if (destError) return {
|
|
313
335
|
success: false,
|
|
@@ -317,14 +339,15 @@ async function handleRedirectUpdate(db, id, input) {
|
|
|
317
339
|
}
|
|
318
340
|
};
|
|
319
341
|
}
|
|
320
|
-
|
|
342
|
+
const newEnabled = input.enabled ?? existing.enabled;
|
|
343
|
+
if (!terminal && newEnabled && (input.source !== void 0 || input.destination !== void 0 || input.type !== void 0 || input.enabled === true && !existing.enabled)) {
|
|
321
344
|
const loopPath = wouldCreateLoop(newSource, newDest, toEdges(await repo.findAllEnabled()), id);
|
|
322
345
|
if (loopPath) return loopError(loopPath);
|
|
323
346
|
}
|
|
324
347
|
const updated = await repo.update(id, {
|
|
325
348
|
source: input.source,
|
|
326
|
-
destination: input.destination,
|
|
327
|
-
type:
|
|
349
|
+
destination: terminal ? "" : input.destination,
|
|
350
|
+
type: newType,
|
|
328
351
|
enabled: input.enabled,
|
|
329
352
|
groupName: input.groupName
|
|
330
353
|
});
|
|
@@ -390,7 +413,7 @@ function loopError(loopPath) {
|
|
|
390
413
|
};
|
|
391
414
|
}
|
|
392
415
|
function toEdges(redirects) {
|
|
393
|
-
return redirects.map((redirect) => ({
|
|
416
|
+
return redirects.filter((redirect) => !isTerminalStatus(redirect.type)).map((redirect) => ({
|
|
394
417
|
id: redirect.id,
|
|
395
418
|
source: redirect.source,
|
|
396
419
|
destination: redirect.destination,
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { a as __exportAll } from "./runner-
|
|
1
|
+
import { a as __exportAll } from "./runner-BgmttQmD.mjs";
|
|
2
2
|
import { t as validateIdentifier } from "./validate-VPnKoIzW.mjs";
|
|
3
3
|
import { i as currentTimestamp, l as listTablesLike, n as columnExists, u as tableExists } from "./dialect-helpers-fk43GbDb.mjs";
|
|
4
4
|
import { n as contentLocaleUpdatedIndexName, t as contentLocaleCreatedIndexName } from "./content-index-names-Bbu1FY1r.mjs";
|
|
5
|
-
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-
|
|
6
|
-
import { t as withTransaction } from "./transaction-
|
|
7
|
-
import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-
|
|
8
|
-
import {
|
|
5
|
+
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-ChGNDY8r.mjs";
|
|
6
|
+
import { t as withTransaction } from "./transaction-0LEAAy8R.mjs";
|
|
7
|
+
import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-B7TDDFMG.mjs";
|
|
8
|
+
import { a as markContentMediaUsageCollectionStaleSafely, n as deleteContentMediaUsageCollection } from "./content-refresh-B4ZCmxgd.mjs";
|
|
9
|
+
import { t as FTSManager } from "./fts-manager-ewTGohf4.mjs";
|
|
10
|
+
import { t as buildStableHash } from "./stable-hash-DshcXvRE.mjs";
|
|
9
11
|
import { sql } from "kysely";
|
|
10
12
|
import { ulid } from "ulidx";
|
|
11
13
|
|
|
@@ -93,9 +95,17 @@ var SchemaRegistry = class {
|
|
|
93
95
|
else fieldsByCollectionId.set(field.collectionId, [field]);
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
|
-
return collections.map((collection) =>
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
return Promise.all(collections.map(async (collection) => {
|
|
99
|
+
const fields = fieldsByCollectionId.get(collection.id) ?? [];
|
|
100
|
+
const schemaFingerprint = await buildStableHash({
|
|
101
|
+
collection,
|
|
102
|
+
fields
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
...collection,
|
|
106
|
+
fields,
|
|
107
|
+
schemaFingerprint
|
|
108
|
+
};
|
|
99
109
|
}));
|
|
100
110
|
}
|
|
101
111
|
/**
|
|
@@ -112,9 +122,14 @@ var SchemaRegistry = class {
|
|
|
112
122
|
const collection = await this.getCollection(slug);
|
|
113
123
|
if (!collection) return null;
|
|
114
124
|
const fields = await this.listFields(collection.id);
|
|
125
|
+
const schemaFingerprint = await buildStableHash({
|
|
126
|
+
collection,
|
|
127
|
+
fields
|
|
128
|
+
});
|
|
115
129
|
return {
|
|
116
130
|
...collection,
|
|
117
|
-
fields
|
|
131
|
+
fields,
|
|
132
|
+
schemaFingerprint
|
|
118
133
|
};
|
|
119
134
|
}
|
|
120
135
|
/**
|
|
@@ -226,11 +241,19 @@ var SchemaRegistry = class {
|
|
|
226
241
|
if (!options?.force) {
|
|
227
242
|
if (await this.collectionHasContent(slug)) throw new SchemaError(`Collection "${slug}" has content. Use force: true to delete.`, "COLLECTION_HAS_CONTENT");
|
|
228
243
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
await this.
|
|
232
|
-
|
|
233
|
-
|
|
244
|
+
let contentTableDropped = false;
|
|
245
|
+
try {
|
|
246
|
+
await withTransaction(this.db, async (trx) => {
|
|
247
|
+
await new FTSManager(trx).dropFtsTable(slug);
|
|
248
|
+
await this.dropContentTable(slug, trx);
|
|
249
|
+
contentTableDropped = true;
|
|
250
|
+
await trx.deleteFrom("_dineway_collections").where("id", "=", existing.id).execute();
|
|
251
|
+
});
|
|
252
|
+
await deleteContentMediaUsageCollection(this.db, slug);
|
|
253
|
+
} catch (error) {
|
|
254
|
+
if (contentTableDropped && !await tableExists(this.db, this.getTableName(slug))) await deleteContentMediaUsageCollection(this.db, slug);
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
234
257
|
}
|
|
235
258
|
/**
|
|
236
259
|
* List fields for a collection
|
|
@@ -260,34 +283,43 @@ var SchemaRegistry = class {
|
|
|
260
283
|
const columnType = FIELD_TYPE_TO_COLUMN[input.type];
|
|
261
284
|
const maxSort = await this.db.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).select((eb) => eb.fn.max("sort_order").as("max")).executeTakeFirst();
|
|
262
285
|
const sortOrder = input.sortOrder ?? (maxSort?.max ?? -1) + 1;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
286
|
+
let schemaMutated = false;
|
|
287
|
+
try {
|
|
288
|
+
const created = await withTransaction(this.db, async (trx) => {
|
|
289
|
+
await trx.insertInto("_dineway_fields").values({
|
|
290
|
+
id,
|
|
291
|
+
collection_id: collection.id,
|
|
292
|
+
slug: input.slug,
|
|
293
|
+
label: input.label,
|
|
294
|
+
type: input.type,
|
|
295
|
+
column_type: columnType,
|
|
296
|
+
required: input.required ? 1 : 0,
|
|
297
|
+
unique: input.unique ? 1 : 0,
|
|
298
|
+
default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : null,
|
|
299
|
+
validation: input.validation ? JSON.stringify(input.validation) : null,
|
|
300
|
+
widget: input.widget ?? null,
|
|
301
|
+
options: input.options ? JSON.stringify(input.options) : null,
|
|
302
|
+
sort_order: sortOrder,
|
|
303
|
+
searchable: input.searchable ? 1 : 0,
|
|
304
|
+
translatable: input.translatable === false ? 0 : 1
|
|
305
|
+
}).execute();
|
|
306
|
+
schemaMutated = true;
|
|
307
|
+
await this.addColumn(collectionSlug, input.slug, input.type, {
|
|
308
|
+
required: input.required,
|
|
309
|
+
defaultValue: input.defaultValue
|
|
310
|
+
}, trx);
|
|
311
|
+
const fieldRow = await trx.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).where("slug", "=", input.slug).selectAll().executeTakeFirst();
|
|
312
|
+
if (!fieldRow) throw new SchemaError("Failed to create field", "CREATE_FAILED");
|
|
313
|
+
const field = this.mapFieldRow(fieldRow);
|
|
314
|
+
if (input.searchable) await this.syncSearchState(collectionSlug, trx);
|
|
315
|
+
return field;
|
|
316
|
+
});
|
|
317
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
318
|
+
return created;
|
|
319
|
+
} catch (error) {
|
|
320
|
+
if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
321
|
+
throw error;
|
|
322
|
+
}
|
|
291
323
|
}
|
|
292
324
|
/**
|
|
293
325
|
* Ensure the content table for an existing collection exists.
|
|
@@ -327,25 +359,44 @@ var SchemaRegistry = class {
|
|
|
327
359
|
async updateField(collectionSlug, fieldSlug, input) {
|
|
328
360
|
const field = await this.getField(collectionSlug, fieldSlug);
|
|
329
361
|
if (!field) throw new SchemaError(`Field "${fieldSlug}" not found in collection "${collectionSlug}"`, "FIELD_NOT_FOUND");
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
362
|
+
let nextType = field.type;
|
|
363
|
+
let nextColumnType = field.columnType;
|
|
364
|
+
if (input.type !== void 0 && input.type !== field.type) {
|
|
365
|
+
nextColumnType = FIELD_TYPE_TO_COLUMN[input.type];
|
|
366
|
+
if (nextColumnType !== field.columnType) throw new SchemaError(`Cannot change field "${fieldSlug}" in collection "${collectionSlug}" from type "${field.type}" to "${input.type}" because the underlying column type would change from ${field.columnType} to ${nextColumnType}`, "FIELD_TYPE_COLUMN_CHANGE");
|
|
367
|
+
nextType = input.type;
|
|
368
|
+
}
|
|
369
|
+
const nextValidation = input.validation === void 0 ? field.validation : input.validation;
|
|
370
|
+
let schemaMutated = false;
|
|
371
|
+
try {
|
|
372
|
+
const updatedField = await withTransaction(this.db, async (trx) => {
|
|
373
|
+
await trx.updateTable("_dineway_fields").set({
|
|
374
|
+
label: input.label ?? field.label,
|
|
375
|
+
type: nextType,
|
|
376
|
+
column_type: nextColumnType,
|
|
377
|
+
required: input.required !== void 0 ? input.required ? 1 : 0 : field.required ? 1 : 0,
|
|
378
|
+
unique: input.unique !== void 0 ? input.unique ? 1 : 0 : field.unique ? 1 : 0,
|
|
379
|
+
searchable: input.searchable !== void 0 ? input.searchable ? 1 : 0 : field.searchable ? 1 : 0,
|
|
380
|
+
translatable: input.translatable !== void 0 ? input.translatable ? 1 : 0 : field.translatable ? 1 : 0,
|
|
381
|
+
default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : field.defaultValue !== void 0 ? JSON.stringify(field.defaultValue) : null,
|
|
382
|
+
validation: nextValidation ? JSON.stringify(nextValidation) : null,
|
|
383
|
+
widget: input.widget ?? field.widget ?? null,
|
|
384
|
+
options: input.options ? JSON.stringify(input.options) : field.options ? JSON.stringify(field.options) : null,
|
|
385
|
+
sort_order: input.sortOrder ?? field.sortOrder
|
|
386
|
+
}).where("id", "=", field.id).execute();
|
|
387
|
+
schemaMutated = true;
|
|
388
|
+
const updatedRow = await trx.selectFrom("_dineway_fields").where("collection_id", "=", field.collectionId).where("slug", "=", fieldSlug).selectAll().executeTakeFirst();
|
|
389
|
+
if (!updatedRow) throw new SchemaError("Failed to update field", "UPDATE_FAILED");
|
|
390
|
+
const updated = this.mapFieldRow(updatedRow);
|
|
391
|
+
if (input.searchable !== void 0 && input.searchable !== field.searchable) await this.syncSearchState(collectionSlug, trx);
|
|
392
|
+
return updated;
|
|
393
|
+
});
|
|
394
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
395
|
+
return updatedField;
|
|
396
|
+
} catch (error) {
|
|
397
|
+
if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
398
|
+
throw error;
|
|
399
|
+
}
|
|
349
400
|
}
|
|
350
401
|
/**
|
|
351
402
|
* Synchronize an existing FTS index with the collection's current state.
|
|
@@ -371,11 +422,19 @@ var SchemaRegistry = class {
|
|
|
371
422
|
async deleteField(collectionSlug, fieldSlug) {
|
|
372
423
|
const field = await this.getField(collectionSlug, fieldSlug);
|
|
373
424
|
if (!field) throw new SchemaError(`Field "${fieldSlug}" not found in collection "${collectionSlug}"`, "FIELD_NOT_FOUND");
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
425
|
+
let schemaMutated = false;
|
|
426
|
+
try {
|
|
427
|
+
await withTransaction(this.db, async (trx) => {
|
|
428
|
+
await trx.deleteFrom("_dineway_fields").where("id", "=", field.id).execute();
|
|
429
|
+
schemaMutated = true;
|
|
430
|
+
if (field.searchable) await this.syncSearchState(collectionSlug, trx);
|
|
431
|
+
await this.dropColumn(collectionSlug, fieldSlug, trx);
|
|
432
|
+
});
|
|
433
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
434
|
+
} catch (error) {
|
|
435
|
+
if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
436
|
+
throw error;
|
|
437
|
+
}
|
|
379
438
|
}
|
|
380
439
|
/**
|
|
381
440
|
* Reorder fields
|
|
@@ -664,21 +723,29 @@ var SchemaRegistry = class {
|
|
|
664
723
|
if (await this.getCollection(slug)) throw new SchemaError(`Collection "${slug}" is already registered`, "COLLECTION_EXISTS");
|
|
665
724
|
const id = ulid();
|
|
666
725
|
const label = options?.label || this.slugToLabel(slug);
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
726
|
+
let collectionRegistered = false;
|
|
727
|
+
try {
|
|
728
|
+
await this.db.insertInto("_dineway_collections").values({
|
|
729
|
+
id,
|
|
730
|
+
slug,
|
|
731
|
+
label,
|
|
732
|
+
label_singular: options?.labelSingular ?? null,
|
|
733
|
+
description: options?.description ?? null,
|
|
734
|
+
icon: null,
|
|
735
|
+
supports: JSON.stringify([]),
|
|
736
|
+
source: "discovered",
|
|
737
|
+
has_seo: 0,
|
|
738
|
+
url_pattern: null
|
|
739
|
+
}).execute();
|
|
740
|
+
collectionRegistered = true;
|
|
741
|
+
const collection = await this.getCollection(slug);
|
|
742
|
+
if (!collection) throw new SchemaError("Failed to register orphaned table", "REGISTER_FAILED");
|
|
743
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, slug, "CONTENT_USAGE_STALE");
|
|
744
|
+
return collection;
|
|
745
|
+
} catch (error) {
|
|
746
|
+
if (collectionRegistered) await markContentMediaUsageCollectionStaleSafely(this.db, slug, "CONTENT_USAGE_STALE");
|
|
747
|
+
throw error;
|
|
748
|
+
}
|
|
682
749
|
}
|
|
683
750
|
/**
|
|
684
751
|
* Convert slug to human-readable label
|
|
@@ -36,6 +36,8 @@ interface DinewayRequestContext {
|
|
|
36
36
|
* playground sidecar flows.
|
|
37
37
|
*/
|
|
38
38
|
db?: unknown;
|
|
39
|
+
/** Whether `db` points at an isolated session database instead of the site database. */
|
|
40
|
+
dbIsIsolated?: boolean;
|
|
39
41
|
/** Optional query recorder for per-request instrumentation. */
|
|
40
42
|
queryRecorder?: QueryRecorder;
|
|
41
43
|
/** Optional metrics collector for Server-Timing request counters. */
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { n as stableStringify, t as buildStableHash } from "./stable-hash-DshcXvRE.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/site-context/action-hash.ts
|
|
4
|
+
async function buildStableActionHash(value) {
|
|
5
|
+
return buildStableHash(value);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/site-context/review-payload.ts
|
|
10
|
+
var ReviewPayloadBuilder = class {
|
|
11
|
+
constructor(handlers) {
|
|
12
|
+
this.handlers = handlers;
|
|
13
|
+
}
|
|
14
|
+
async buildContentReviewPayload(input) {
|
|
15
|
+
const actionType = input.actionType ?? "content.publish";
|
|
16
|
+
const content = await this.loadContent(input.collection, input.id);
|
|
17
|
+
const compare = await this.loadCompare(input.collection, content.entryId);
|
|
18
|
+
const live = asRecord(compare.live);
|
|
19
|
+
const draft = asRecord(compare.draft) ?? content.data;
|
|
20
|
+
const hasChanges = typeof compare.hasChanges === "boolean" ? compare.hasChanges : stableStringify(live) !== stableStringify(draft);
|
|
21
|
+
const actionHash = await buildStableActionHash({
|
|
22
|
+
actionType,
|
|
23
|
+
collection: input.collection,
|
|
24
|
+
entryId: content.entryId,
|
|
25
|
+
liveRevisionId: content.liveRevisionId,
|
|
26
|
+
draftRevisionId: content.draftRevisionId,
|
|
27
|
+
reviewedRev: content.reviewedRev,
|
|
28
|
+
live,
|
|
29
|
+
draft
|
|
30
|
+
});
|
|
31
|
+
const scope = `content:${input.collection}:${content.entryId}`;
|
|
32
|
+
const summary = input.summary ?? `Review ${actionType} for ${input.collection}/${content.displayTitle ?? content.entryId}`;
|
|
33
|
+
return {
|
|
34
|
+
collection: input.collection,
|
|
35
|
+
entryId: content.entryId,
|
|
36
|
+
scope,
|
|
37
|
+
liveRevisionId: content.liveRevisionId,
|
|
38
|
+
draftRevisionId: content.draftRevisionId,
|
|
39
|
+
reviewedRev: content.reviewedRev,
|
|
40
|
+
actionType,
|
|
41
|
+
actionHash,
|
|
42
|
+
reviewPayload: {
|
|
43
|
+
kind: "content_review",
|
|
44
|
+
actionType,
|
|
45
|
+
summary,
|
|
46
|
+
target: {
|
|
47
|
+
collection: input.collection,
|
|
48
|
+
entryId: content.entryId,
|
|
49
|
+
scope,
|
|
50
|
+
liveRevisionId: content.liveRevisionId,
|
|
51
|
+
draftRevisionId: content.draftRevisionId,
|
|
52
|
+
reviewedRev: content.reviewedRev,
|
|
53
|
+
actionHash
|
|
54
|
+
},
|
|
55
|
+
content: {
|
|
56
|
+
id: content.entryId,
|
|
57
|
+
slug: content.slug,
|
|
58
|
+
status: content.status,
|
|
59
|
+
title: content.displayTitle,
|
|
60
|
+
updatedAt: content.updatedAt
|
|
61
|
+
},
|
|
62
|
+
diff: {
|
|
63
|
+
hasChanges,
|
|
64
|
+
live,
|
|
65
|
+
draft
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async loadContent(collection, id) {
|
|
71
|
+
const result = await this.handlers.handleContentGet(collection, id);
|
|
72
|
+
if (!result.success) throw new Error(result.error?.message ?? `Content item not found: ${collection}/${id}`);
|
|
73
|
+
const payload = asRecord(result.data);
|
|
74
|
+
const item = asRecord(payload?.item);
|
|
75
|
+
if (!payload || !item) throw new Error("Content get response did not include an item");
|
|
76
|
+
const entryId = stringOrNull(item.id);
|
|
77
|
+
const reviewedRev = stringOrNull(payload._rev);
|
|
78
|
+
if (!entryId) throw new Error("Content item is missing id");
|
|
79
|
+
if (!reviewedRev) throw new Error("Content item is missing _rev for review binding");
|
|
80
|
+
const data = asRecord(item.data) ?? {};
|
|
81
|
+
const title = stringOrNull(data.title) ?? stringOrNull(item.title) ?? stringOrNull(item.slug);
|
|
82
|
+
return {
|
|
83
|
+
entryId,
|
|
84
|
+
reviewedRev,
|
|
85
|
+
liveRevisionId: stringOrNull(item.liveRevisionId),
|
|
86
|
+
draftRevisionId: stringOrNull(item.draftRevisionId),
|
|
87
|
+
slug: stringOrNull(item.slug),
|
|
88
|
+
status: stringOrNull(item.status),
|
|
89
|
+
updatedAt: stringOrNull(item.updatedAt),
|
|
90
|
+
displayTitle: title,
|
|
91
|
+
data
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async loadCompare(collection, id) {
|
|
95
|
+
const result = await this.handlers.handleContentCompare(collection, id);
|
|
96
|
+
if (!result.success) throw new Error(result.error?.message ?? `Failed to compare content: ${collection}/${id}`);
|
|
97
|
+
return asRecord(result.data) ?? {};
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
function asRecord(value) {
|
|
101
|
+
return isRecord(value) ? value : null;
|
|
102
|
+
}
|
|
103
|
+
function isRecord(value) {
|
|
104
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
105
|
+
}
|
|
106
|
+
function stringOrNull(value) {
|
|
107
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//#endregion
|
|
111
|
+
export { buildStableActionHash as n, ReviewPayloadBuilder as t };
|