dineway 0.1.49 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{activity-events-CwM7yxPW.mjs → activity-events-y6eT8UW6.mjs} +6 -38
- package/dist/actor-CrObAPV0.mjs +37 -0
- package/dist/after-BfniwgIf.mjs +9 -0
- package/dist/{allowed-origins-CyGnbgBd.mjs → allowed-origins-_oeyP6x-.mjs} +1 -1
- package/dist/api/route-utils.d.mts +10 -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-ByrU2q-Z.mjs} +60 -36
- package/dist/{api-tokens-DtvdtIkm.mjs → api-tokens-CjVMQT-X.mjs} +6 -2
- package/dist/{apply-D_RlTYtC.mjs → apply-bZswmZPm.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 +35 -11
- package/dist/astro/index.mjs +157 -23
- 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 +10 -10
- 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 +333 -192
- 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 +26 -24
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +26 -24
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +31 -28
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +31 -28
- package/dist/astro/routes/api/admin/context/diff.mjs +30 -27
- package/dist/astro/routes/api/admin/context/index.mjs +31 -28
- package/dist/astro/routes/api/admin/context/stale.mjs +30 -27
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +26 -24
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +30 -27
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +30 -27
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +27 -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 +55 -51
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +55 -51
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +47 -43
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +53 -49
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +52 -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 +52 -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 +31 -27
- package/dist/astro/routes/api/admin/review-requests/index.mjs +10 -9
- 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 +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +10 -9
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +10 -9
- 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 +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +10 -9
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +10 -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 +19 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +84 -37
- package/dist/astro/routes/api/import/wordpress/media.d.mts +13 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +19 -13
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +35 -32
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +18 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +120 -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 +56 -2
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +283 -55
- package/dist/astro/routes/api/manifest.mjs +14 -5
- package/dist/astro/routes/api/mcp.mjs +265 -69
- 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 +27 -34
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +31 -28
- package/dist/astro/routes/api/menus/_name_/items.mjs +31 -28
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +31 -28
- package/dist/astro/routes/api/menus/_name_/translations.mjs +31 -28
- package/dist/astro/routes/api/menus/_name_.mjs +31 -28
- package/dist/astro/routes/api/menus/index.mjs +31 -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 +30 -30
- 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 +32 -29
- package/dist/astro/routes/api/redirects/index.mjs +32 -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 +47 -43
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +47 -43
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +47 -43
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +47 -43
- package/dist/astro/routes/api/schema/collections/index.mjs +47 -43
- package/dist/astro/routes/api/schema/index.mjs +13 -14
- 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 +31 -28
- package/dist/astro/routes/api/sections/index.mjs +31 -28
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +31 -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 +34 -31
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +34 -31
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +34 -31
- package/dist/astro/routes/api/taxonomies/index.mjs +34 -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 +30 -27
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +31 -28
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +31 -28
- package/dist/astro/routes/api/widget-areas/_name_.mjs +28 -26
- package/dist/astro/routes/api/widget-areas/index.mjs +31 -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 +21 -13
- package/dist/{audit-BeNsSyfU.mjs → audit-ByVKIwWF.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-CqeUmQsv.mjs} +1 -1
- package/dist/{authorize-BLO0m7fW.mjs → authorize-CcBxcHtz.mjs} +1 -1
- package/dist/{briefing-DJX6irto.mjs → briefing-BJaJI8dm.mjs} +2 -1
- package/dist/{briefing-CkTee1ex.mjs → briefing-CawZ59CY.mjs} +90 -28
- package/dist/bundle-7C_DpkEq.mjs +602 -0
- package/dist/{byline-BVC1lV6G.mjs → byline-e51-fWRs.mjs} +30 -62
- package/dist/{byline-fields-uJlygdzM.d.mts → byline-fields-CUvbslGc.d.mts} +80 -37
- package/dist/{byline-fields-Cj39WhXC.mjs → byline-fields-D-N5qVIG.mjs} +1 -1
- package/dist/{byline-fields-cNrLJVRs.mjs → byline-fields-DOJO16Gm.mjs} +3 -3
- package/dist/{byline-registry-4v6tXMNX.mjs → byline-registry-87nNnYl4.mjs} +2 -2
- package/dist/{bylines-LN9XISRo.mjs → bylines-CMQNCNFh.mjs} +9 -3
- package/dist/{bylines-DwokOFj6.mjs → bylines-y4LO-dTj.mjs} +5 -5
- package/dist/{cache-Bac05gBd.mjs → cache-C-FNTFYK.mjs} +2 -2
- package/dist/{chunks-CuUt7K50.mjs → chunks-CxBt-GxR.mjs} +1 -1
- package/dist/cli/index.mjs +94 -659
- package/dist/client/external-auth-headers.d.mts +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.mjs +2 -1
- package/dist/{comment-Beue8-15.mjs → comment-DlA4iChg.mjs} +13 -3
- package/dist/comment-reaction-DfFao1ST.mjs +58 -0
- package/dist/{comments-DcjFIfqX.mjs → comments-DApFGMsP.mjs} +1 -1
- package/dist/{content-CBxYGWfL.mjs → content-Bh4BDjv8.mjs} +51 -34
- package/dist/content-refresh-CgutSUfO.mjs +1576 -0
- package/dist/{context-CQVNZaR8.mjs → context-C5W3G18y.mjs} +111 -50
- package/dist/{context-Df1xVYyr.mjs → context-CK4ym2Sf.mjs} +2 -2
- package/dist/{context-route-helpers-B9wj8Rmh.mjs → context-route-helpers-MASyGgWf.mjs} +2 -1
- package/dist/{cron-DxCAU_Sn.mjs → cron-cKcNTix_.mjs} +7 -3
- package/dist/{dashboard-B7ZUNuyF.mjs → dashboard-DQkVT7Ei.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-BnqRH-T9.mjs} +5 -5
- package/dist/{placeholder-d54Qr_7n.mjs → enrich-DIFIFA8O.mjs} +36 -9
- package/dist/{error-DCSuUAZW.mjs → error-CytFlgcd.mjs} +5 -0
- package/dist/field-defs-cache-DRNdhBJv.mjs +49 -0
- package/dist/{fts-manager-B5l_qwrA.mjs → fts-manager-Crzypjqu.mjs} +1 -1
- package/dist/hitl-Hw1RmWOq.mjs +677 -0
- package/dist/{hitl-requests-7NlzVeUA.mjs → hitl-requests-B4Vbcmaq.mjs} +2 -2
- package/dist/{hitl-route-helpers-k---_H3-.mjs → hitl-route-helpers-hEVzvP8l.mjs} +5 -4
- package/dist/import-Bh9biJfx.mjs +1354 -0
- package/dist/{index-CZiWCQDp.d.mts → index-D4y6NGiy.d.mts} +75 -3
- package/dist/index.d.mts +17 -16
- package/dist/index.mjs +80 -68
- package/dist/{jsonld-DZ67souc.d.mts → jsonld-Dq0gsnOH.d.mts} +8 -4
- package/dist/{load-D9OiGr2m.mjs → load-DmYeniXl.mjs} +1 -1
- package/dist/{loader--GOYux8M.mjs → loader-CjWqjweO.mjs} +117 -31
- package/dist/{manifest-schema-qh2P7RDX.mjs → manifest-schema-BxVPYMJR.mjs} +34 -1
- package/dist/mcp-reviewed-executor-TwVbMzG6.mjs +555 -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 +16 -11
- package/dist/media/local-runtime.mjs +9 -7
- package/dist/{media-CbKyYukG.mjs → media-DMj0grzC.mjs} +3 -1
- package/dist/{media-allowlist-BYxJIcTO.mjs → media-allowlist-BlVCSzHx.mjs} +1 -1
- package/dist/media-url-lEKSrpr9.mjs +20 -0
- package/dist/{menus-BZbXf-ej.mjs → menus-TaW1gKnk.mjs} +19 -5
- package/dist/{menus-C7F0sCrC.mjs → menus-xvsnVZXw.mjs} +80 -15
- package/dist/{normalize-ByemhhfW.mjs → normalize-5ek_z7de.mjs} +8 -1
- package/dist/{oauth-authorization-DF-LCsIA.mjs → oauth-authorization-DiaGvRVz.mjs} +5 -5
- package/dist/{oauth-clients-Du-V0fEm.mjs → oauth-clients-Dl9E8dEM.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/page/index.d.mts +4 -3
- package/dist/page/index.mjs +2 -2
- package/dist/{parse-CneSgl7-.mjs → parse-CbymENaR.mjs} +1 -1
- package/dist/{parser-DxfsARXL.mjs → parser-C1nYd-81.mjs} +151 -9
- package/dist/{placeholder-CXfoCtCd.d.mts → placeholder-uvNRZBX9.d.mts} +12 -4
- package/dist/plugin-utils.d.mts +9 -9
- package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
- package/dist/plugins/adapt-sandbox-entry.mjs +11 -2
- package/dist/{plugins-DzfqRREq.mjs → plugins-BolVa-tl.mjs} +831 -63
- package/dist/{transport-LSdZVXHF.mjs → portable-text-dA_UlJwW.mjs} +1 -134
- package/dist/{preview-C-3YTX2U.mjs → preview-vSVg6fwG.mjs} +4 -3
- package/dist/process-cache-7xgAO9JY.mjs +106 -0
- package/dist/{provider-loader-9it4vd6L.d.mts → provider-loader-MD8zAbnH.d.mts} +1 -1
- package/dist/{public-url-B4xV4rGa.d.mts → public-url-gsp3oUbu.d.mts} +1 -1
- package/dist/{query-Ds0EnMFX.mjs → query-CfRCdaL3.mjs} +281 -76
- package/dist/{query-CZ3TH_Uu.mjs → query-jaAmw8E1.mjs} +11 -6
- package/dist/{rate-limit-i0G3IAOX.mjs → rate-limit-ZLdyWoZF.mjs} +2 -2
- package/dist/{redirect-CEACczxo.mjs → redirect-BAjt4Z6b.mjs} +2 -2
- package/dist/{redirects-DYj1yPxs.mjs → redirects-BTdwpQtE.mjs} +47 -24
- package/dist/{redirects-ocRJmQHP.mjs → redirects-CA-xylPG.mjs} +19 -11
- package/dist/{registry-D7HACema.mjs → registry-CtyVedcN.mjs} +130 -77
- package/dist/request-context.d.mts +2 -0
- package/dist/{request-meta-DAb6xaP9.mjs → request-meta-CUypToDJ.mjs} +1 -1
- package/dist/{review-requests-Qum4713s.mjs → review-requests-C9Ff11Vq.mjs} +1 -1
- package/dist/{review-requests-BW2NxY-l.mjs → review-requests-DUyEmtmG.mjs} +1 -1
- package/dist/{runner-09sTqtv0.d.mts → runner-1tC2tIRV.d.mts} +1 -1
- package/dist/runner-DB7CRfOF.mjs +6740 -0
- package/dist/{runtime-C4-2lSFg.d.mts → runtime-BOeiQsCv.d.mts} +1952 -1489
- package/dist/runtime.d.mts +10 -10
- package/dist/runtime.mjs +3 -3
- package/dist/schema-DXdYj4R3.mjs +8 -0
- package/dist/{search-Gdrqj582.mjs → search-DSaLgEFI.mjs} +5 -3
- package/dist/{secrets-CeGpBFV2.mjs → secrets-CDZo2k8L.mjs} +14 -11
- package/dist/{sections-BOjU13Y-.mjs → sections-PVVXHGfp.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-CLj8lS7Q.mjs → seo-CQG3GCHQ.mjs} +5 -2
- package/dist/{seo-contributions-CqVvReEj.mjs → seo-contributions-C1EnikHB.mjs} +11 -3
- package/dist/{seo-5lJOtB5J.mjs → seo-qa7Dn0jK.mjs} +22 -4
- package/dist/{service-jGlhrICs.mjs → service-DiN4ZuPp.mjs} +2 -2
- package/dist/session-user-CAKImna3.mjs +22 -0
- package/dist/{settings-CUXOxzsT.mjs → settings-BbqgHWpU.mjs} +28 -55
- package/dist/{settings-DlBsT2VS.mjs → settings-i4VPP8bT.mjs} +2 -2
- package/dist/{setup-complete-BRrdPYjZ.mjs → setup-complete-B8fl-mjV.mjs} +1 -1
- package/dist/{site-activity-DONFrMBJ.mjs → site-activity-Dy3FROs0.mjs} +1 -1
- package/dist/{site-context-C8Az_P_I.mjs → site-context-DQiL8Fl5.mjs} +23 -652
- package/dist/{site-url-DIMD68go.mjs → site-url-BML3GQYm.mjs} +1 -1
- package/dist/status-DANd8ERo.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-9s-v03H-.mjs} +36 -29
- package/dist/taxonomies-DRiixp_E.mjs +443 -0
- package/dist/{taxonomy-B169Nm6B.mjs → taxonomy-Dvsw6BOs.mjs} +44 -9
- package/dist/transport-BNmCqLu7.mjs +134 -0
- package/dist/types-4garmdWa.mjs +66 -0
- package/dist/{types-DSPGWjxO.d.mts → types-C8XW6L19.d.mts} +225 -4
- package/dist/{types-GaCtZ1k9.d.mts → types-CDpH6MA4.d.mts} +18 -0
- package/dist/{types-DRIKLmJI.d.mts → types-C_ly5eTp.d.mts} +17 -2
- package/dist/types-DF7ZuGGk.d.mts +118 -0
- package/dist/types-DU0bU2Wu.d.mts +2392 -0
- package/dist/{types-CwawBUTa.d.mts → types-DW_-sFyz.d.mts} +2 -1
- package/dist/{types-CSgR9nQB.mjs → types-Dq1qT19x.mjs} +1 -1
- package/dist/ui/server-runtime.d.mts +15 -15
- package/dist/ui/server-runtime.mjs +24 -20
- package/dist/url-Cac7a9QZ.mjs +33 -0
- package/dist/{user-DTLoZs16.mjs → user-BIZPzCb9.mjs} +2 -2
- package/dist/{utils-B8hBJ9Oz.mjs → utils-CMDhr5Xd.mjs} +129 -7
- package/dist/{validate-DzjCdy6v.d.mts → validate-CZvb-BKB.d.mts} +10 -7
- package/dist/{validate-DWmPO6oj.mjs → validate-DNs0pTSc.mjs} +11 -6
- package/dist/version-BTvfRGc6.mjs +6 -0
- package/dist/{widgets-BpJ8EpPd.mjs → widgets-f0ibZUIq.mjs} +46 -43
- package/dist/{wordpress-slugs-DHNR9LpG.mjs → wordpress-slugs-BhHJX8XE.mjs} +1 -1
- package/dist/{zod-generator-K91-g665.mjs → zod-generator-B7TMjyFJ.mjs} +41 -13
- package/package.json +30 -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/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/version-C4gfn0PJ.mjs +0 -6
- /package/dist/{adapters-OQCImOL7.d.mts → adapters-NVSs4UH7.d.mts} +0 -0
- /package/dist/{api-tokens-CYUoFGo7.mjs → api-tokens-2r7OWi_I.mjs} +0 -0
- /package/dist/{challenge-store-DFxX0_15.mjs → challenge-store-Bjlepa2E.mjs} +0 -0
- /package/dist/{components--pg6zBvu.mjs → components-Bclf98Be.mjs} +0 -0
- /package/dist/{context-types-r8oFvyOq.mjs → context-types-DqTo6C79.mjs} +0 -0
- /package/dist/{default-B6iaLvP7.mjs → default--K40jqm0.mjs} +0 -0
- /package/dist/{email-console-BOVqIYpB.mjs → email-console-ChgKFO8-.mjs} +0 -0
- /package/dist/{escape-BDgouFFY.mjs → escape-Bd4P_xKg.mjs} +0 -0
- /package/dist/{experimental-workflows-CSMffP6q.mjs → experimental-workflows-BMsUnIAw.mjs} +0 -0
- /package/dist/{mime-CbKsKDCB.mjs → mime-CA7Lgovc.mjs} +0 -0
- /package/dist/{mode-CZqCF9dZ.mjs → mode-C4CIyjtR.mjs} +0 -0
- /package/dist/{oauth-state-store-qncPB_IU.mjs → oauth-state-store-CNoXafF7.mjs} +0 -0
- /package/dist/{oauth-user-lookup-BFjWF8wK.mjs → oauth-user-lookup-Ygw4bNyt.mjs} +0 -0
- /package/dist/{options-LsPjZlqD.mjs → options-DQPTH5n0.mjs} +0 -0
- /package/dist/{passkey-config-DzHQK90v.mjs → passkey-config-BUwu8BA3.mjs} +0 -0
- /package/dist/{patterns-DKAX6oqN.mjs → patterns-BhAvqO0S.mjs} +0 -0
- /package/dist/{provider-loader-DzUxejk7.mjs → provider-loader-D0w9dqjm.mjs} +0 -0
- /package/dist/{public-url-B_m9IwdV.mjs → public-url-BEz_sM9n.mjs} +0 -0
- /package/dist/{redirect-BjIBtDWY.mjs → redirect-wphRBv4y.mjs} +0 -0
- /package/dist/{request-cache-ho99schz.mjs → request-cache-D9GQBxMP.mjs} +0 -0
- /package/dist/{resolve-DTuDyYKs.mjs → resolve-Cb6Dbz-C.mjs} +0 -0
- /package/dist/{setup-nonce-pyGfc9hV.mjs → setup-nonce-CoyjILvW.mjs} +0 -0
- /package/dist/{sidecar-client-mJxwayYN.mjs → sidecar-client-C3mqXg4C.mjs} +0 -0
- /package/dist/{slugify-BqebcqBg.mjs → slugify-KSsVD_D3.mjs} +0 -0
- /package/dist/{ssrf-DiKqWd3N.mjs → ssrf-DWe8jwAp.mjs} +0 -0
- /package/dist/{tokens-SLmgowfd.mjs → tokens-1RK1n6ED.mjs} +0 -0
- /package/dist/{transaction-CFLhEOuH.mjs → transaction-C2EOMTJA.mjs} +0 -0
- /package/dist/{transport-BnsNxh2l.d.mts → transport-CcJu3Co8.d.mts} +0 -0
- /package/dist/{trusted-proxy-BgIIcbsN.mjs → trusted-proxy-DTXQ2IMv.mjs} +0 -0
- /package/dist/{types-CJ8DkL0q.mjs → types-B3t5cxhU.mjs} +0 -0
- /package/dist/{types-nP9vGUFq.d.mts → types-C46EvNdc.d.mts} +0 -0
- /package/dist/{types-Cg276-3z.mjs → types-C5CVgwsV.mjs} +0 -0
- /package/dist/{types-DZpT-PnG.d.mts → types-POH8PQZh.d.mts} +0 -0
- /package/dist/{types-Dryvv7LH.d.mts → types-Rc3gQqqw.d.mts} +0 -0
- /package/dist/{url-w7Mp5qAD.mjs → url-CpyFDFpO.mjs} +0 -0
package/dist/astro/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as INTERNAL_MEDIA_PREFIX } from "../normalize-
|
|
2
|
-
import { n as VERSION, t as COMMIT } from "../version-
|
|
3
|
-
import { t as defaultSeed } from "../default
|
|
4
|
-
import { n as validateAllowedOrigins, r as validateOriginShape } from "../allowed-origins-
|
|
1
|
+
import { t as INTERNAL_MEDIA_PREFIX } from "../normalize-5ek_z7de.mjs";
|
|
2
|
+
import { n as VERSION, t as COMMIT } from "../version-BTvfRGc6.mjs";
|
|
3
|
+
import { t as defaultSeed } from "../default--K40jqm0.mjs";
|
|
4
|
+
import { n as validateAllowedOrigins, r as validateOriginShape } from "../allowed-origins-_oeyP6x-.mjs";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
@@ -61,6 +61,27 @@ function local(config) {
|
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/astro/object-cache/adapters.ts
|
|
66
|
+
/**
|
|
67
|
+
* In-isolate memory object cache.
|
|
68
|
+
*
|
|
69
|
+
* Caches query results across requests within a single process. On Node this
|
|
70
|
+
* is a genuine cross-request cache; on multi-process deployments each process
|
|
71
|
+
* keeps its own cache. Useful for local development regardless of target.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* dineway({ objectCache: memoryCache({ defaultTtl: 600 }) })
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
function memoryCache(options = {}) {
|
|
79
|
+
return {
|
|
80
|
+
entrypoint: "dineway/object-cache/memory",
|
|
81
|
+
config: { ...options }
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
64
85
|
//#endregion
|
|
65
86
|
//#region src/astro/integration/font-provider.ts
|
|
66
87
|
/**
|
|
@@ -196,10 +217,28 @@ function resolveRoute(route) {
|
|
|
196
217
|
return resolve(__dirname, "../routes", route);
|
|
197
218
|
}
|
|
198
219
|
}
|
|
220
|
+
const PUBLIC_ROUTE_OVERRIDE_EXTENSIONS = [
|
|
221
|
+
".astro",
|
|
222
|
+
".js",
|
|
223
|
+
".ts",
|
|
224
|
+
".jsx",
|
|
225
|
+
".tsx",
|
|
226
|
+
".mjs",
|
|
227
|
+
".mts",
|
|
228
|
+
".md",
|
|
229
|
+
".mdx",
|
|
230
|
+
".html"
|
|
231
|
+
];
|
|
232
|
+
function hasUserDefinedPublicRoute(srcDir, basename) {
|
|
233
|
+
const srcDirPath = fileURLToPath(srcDir);
|
|
234
|
+
return PUBLIC_ROUTE_OVERRIDE_EXTENSIONS.some((extension) => {
|
|
235
|
+
return existsSync(resolve(srcDirPath, "pages", `${basename}${extension}`)) || existsSync(resolve(srcDirPath, "pages", basename, `index${extension}`));
|
|
236
|
+
});
|
|
237
|
+
}
|
|
199
238
|
/**
|
|
200
239
|
* Injects all core Dineway routes.
|
|
201
240
|
*/
|
|
202
|
-
function injectCoreRoutes(injectRoute) {
|
|
241
|
+
function injectCoreRoutes(injectRoute, options = {}) {
|
|
203
242
|
injectRoute({
|
|
204
243
|
pattern: "/_dineway/admin/[...path]",
|
|
205
244
|
entrypoint: resolveRoute("admin.astro")
|
|
@@ -744,6 +783,10 @@ function injectCoreRoutes(injectRoute) {
|
|
|
744
783
|
pattern: "/_dineway/api/comments/[collection]/[contentId]",
|
|
745
784
|
entrypoint: resolveRoute("api/comments/[collection]/[contentId]/index.ts")
|
|
746
785
|
});
|
|
786
|
+
injectRoute({
|
|
787
|
+
pattern: "/_dineway/api/comments/[collection]/[contentId]/reactions",
|
|
788
|
+
entrypoint: resolveRoute("api/comments/[collection]/[contentId]/reactions.ts")
|
|
789
|
+
});
|
|
747
790
|
injectRoute({
|
|
748
791
|
pattern: "/_dineway/api/admin/comments",
|
|
749
792
|
entrypoint: resolveRoute("api/admin/comments/index.ts")
|
|
@@ -764,7 +807,7 @@ function injectCoreRoutes(injectRoute) {
|
|
|
764
807
|
pattern: "/_dineway/api/admin/comments/[id]",
|
|
765
808
|
entrypoint: resolveRoute("api/admin/comments/[id].ts")
|
|
766
809
|
});
|
|
767
|
-
injectRoute({
|
|
810
|
+
if (!options.srcDir || !hasUserDefinedPublicRoute(options.srcDir, "sitemap.xml")) injectRoute({
|
|
768
811
|
pattern: "/sitemap.xml",
|
|
769
812
|
entrypoint: resolveRoute("sitemap.xml.ts")
|
|
770
813
|
});
|
|
@@ -772,7 +815,7 @@ function injectCoreRoutes(injectRoute) {
|
|
|
772
815
|
pattern: "/sitemap-[collection].xml",
|
|
773
816
|
entrypoint: resolveRoute("sitemap-[collection].xml.ts")
|
|
774
817
|
});
|
|
775
|
-
injectRoute({
|
|
818
|
+
if (!options.srcDir || !hasUserDefinedPublicRoute(options.srcDir, "robots.txt")) injectRoute({
|
|
776
819
|
pattern: "/robots.txt",
|
|
777
820
|
entrypoint: resolveRoute("robots.txt.ts")
|
|
778
821
|
});
|
|
@@ -947,6 +990,8 @@ const VIRTUAL_DIALECT_ID = "virtual:dineway/dialect";
|
|
|
947
990
|
const RESOLVED_VIRTUAL_DIALECT_ID = "\0" + VIRTUAL_DIALECT_ID;
|
|
948
991
|
const VIRTUAL_STORAGE_ID = "virtual:dineway/storage";
|
|
949
992
|
const RESOLVED_VIRTUAL_STORAGE_ID = "\0" + VIRTUAL_STORAGE_ID;
|
|
993
|
+
const VIRTUAL_OBJECT_CACHE_ID = "virtual:dineway/object-cache";
|
|
994
|
+
const RESOLVED_VIRTUAL_OBJECT_CACHE_ID = "\0" + VIRTUAL_OBJECT_CACHE_ID;
|
|
950
995
|
const VIRTUAL_ADMIN_REGISTRY_ID = "virtual:dineway/admin-registry";
|
|
951
996
|
const RESOLVED_VIRTUAL_ADMIN_REGISTRY_ID = "\0" + VIRTUAL_ADMIN_REGISTRY_ID;
|
|
952
997
|
const VIRTUAL_PLUGINS_ID = "virtual:dineway/plugins";
|
|
@@ -993,7 +1038,19 @@ function generateStorageModule(storageEntrypoint) {
|
|
|
993
1038
|
return `
|
|
994
1039
|
import { createStorage as _createStorage } from "${storageEntrypoint}";
|
|
995
1040
|
export const createStorage = _createStorage;
|
|
996
|
-
`;
|
|
1041
|
+
`;
|
|
1042
|
+
}
|
|
1043
|
+
/**
|
|
1044
|
+
* Generates the object-cache virtual module.
|
|
1045
|
+
* Statically imports the configured backend factory.
|
|
1046
|
+
*/
|
|
1047
|
+
function generateObjectCacheModule(objectCacheEntrypoint, config) {
|
|
1048
|
+
if (!objectCacheEntrypoint) return [`export const createObjectCache = undefined;`, `export const objectCacheConfig = {};`].join("\n");
|
|
1049
|
+
return `
|
|
1050
|
+
import { createObjectCache as _createObjectCache } from "${objectCacheEntrypoint}";
|
|
1051
|
+
export const createObjectCache = _createObjectCache;
|
|
1052
|
+
export const objectCacheConfig = ${JSON.stringify(config ?? {})};
|
|
1053
|
+
`;
|
|
997
1054
|
}
|
|
998
1055
|
/**
|
|
999
1056
|
* Generates the auth virtual module.
|
|
@@ -1049,6 +1106,7 @@ function generatePluginsModule(descriptors) {
|
|
|
1049
1106
|
const instantiations = [];
|
|
1050
1107
|
let needsAdapter = false;
|
|
1051
1108
|
descriptors.forEach((descriptor, index) => {
|
|
1109
|
+
if (!descriptor.entrypoint) throw new Error(`[dineway] Plugin "${descriptor.id}" has no \`entrypoint\`. The Astro integration's \`plugins: []\` option requires plugins that resolve to a file or package entrypoint so they can be bundled at build time. Inline \`definePlugin({...})\` results are not supported; move the plugin into its own module and reference a factory descriptor with an \`entrypoint\`.`);
|
|
1052
1110
|
if (descriptor.format === "standard") {
|
|
1053
1111
|
needsAdapter = true;
|
|
1054
1112
|
const varName = `pluginDef${index}`;
|
|
@@ -1060,7 +1118,9 @@ function generatePluginsModule(descriptors) {
|
|
|
1060
1118
|
allowedHosts: descriptor.allowedHosts,
|
|
1061
1119
|
storage: descriptor.storage,
|
|
1062
1120
|
adminPages: descriptor.adminPages,
|
|
1063
|
-
adminWidgets: descriptor.adminWidgets
|
|
1121
|
+
adminWidgets: descriptor.adminWidgets,
|
|
1122
|
+
portableTextBlocks: descriptor.portableTextBlocks,
|
|
1123
|
+
fieldWidgets: descriptor.fieldWidgets
|
|
1064
1124
|
})})`);
|
|
1065
1125
|
} else {
|
|
1066
1126
|
const varName = `createPlugin${index}`;
|
|
@@ -1249,6 +1309,8 @@ export const sandboxedPlugins = [];
|
|
|
1249
1309
|
storage: ${JSON.stringify(descriptor.storage ?? {})},
|
|
1250
1310
|
adminPages: ${JSON.stringify(descriptor.adminPages ?? [])},
|
|
1251
1311
|
adminWidgets: ${JSON.stringify(descriptor.adminWidgets ?? [])},
|
|
1312
|
+
portableTextBlocks: ${JSON.stringify(descriptor.portableTextBlocks ?? [])},
|
|
1313
|
+
fieldWidgets: ${JSON.stringify(descriptor.fieldWidgets ?? [])},
|
|
1252
1314
|
adminEntry: ${JSON.stringify(descriptor.adminEntry)},
|
|
1253
1315
|
// Code read from: ${filePath}
|
|
1254
1316
|
code: ${JSON.stringify(code)},
|
|
@@ -1334,6 +1396,12 @@ function resolveAdminSource(projectRoot) {
|
|
|
1334
1396
|
if (existsSync(srcEntry) && isInside(repoRoot, projectRoot)) return resolve(packageRoot, "src");
|
|
1335
1397
|
} catch {}
|
|
1336
1398
|
}
|
|
1399
|
+
function resolveIntegrationShim(fileName) {
|
|
1400
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
1401
|
+
const sourceShimPath = resolve(currentDir, "shims", fileName);
|
|
1402
|
+
if (existsSync(sourceShimPath)) return sourceShimPath;
|
|
1403
|
+
return resolve(currentDir, "..", "..", "src", "astro", "integration", "shims", fileName);
|
|
1404
|
+
}
|
|
1337
1405
|
/**
|
|
1338
1406
|
* Creates the Dineway virtual modules Vite plugin.
|
|
1339
1407
|
*/
|
|
@@ -1349,6 +1417,7 @@ function createVirtualModulesPlugin(options) {
|
|
|
1349
1417
|
if (id === VIRTUAL_CONFIG_ID) return RESOLVED_VIRTUAL_CONFIG_ID;
|
|
1350
1418
|
if (id === VIRTUAL_DIALECT_ID) return RESOLVED_VIRTUAL_DIALECT_ID;
|
|
1351
1419
|
if (id === VIRTUAL_STORAGE_ID) return RESOLVED_VIRTUAL_STORAGE_ID;
|
|
1420
|
+
if (id === VIRTUAL_OBJECT_CACHE_ID) return RESOLVED_VIRTUAL_OBJECT_CACHE_ID;
|
|
1352
1421
|
if (id === VIRTUAL_ADMIN_REGISTRY_ID) return RESOLVED_VIRTUAL_ADMIN_REGISTRY_ID;
|
|
1353
1422
|
if (id === VIRTUAL_PLUGINS_ID) return RESOLVED_VIRTUAL_PLUGINS_ID;
|
|
1354
1423
|
if (id === VIRTUAL_SANDBOX_RUNNER_ID) return RESOLVED_VIRTUAL_SANDBOX_RUNNER_ID;
|
|
@@ -1363,6 +1432,7 @@ function createVirtualModulesPlugin(options) {
|
|
|
1363
1432
|
if (id === RESOLVED_VIRTUAL_CONFIG_ID) return generateConfigModule(serializableConfig);
|
|
1364
1433
|
if (id === RESOLVED_VIRTUAL_DIALECT_ID) return generateDialectModule(resolvedConfig.database?.entrypoint, resolvedConfig.database?.type, resolvedConfig.database?.config);
|
|
1365
1434
|
if (id === RESOLVED_VIRTUAL_STORAGE_ID) return generateStorageModule(resolvedConfig.storage?.entrypoint);
|
|
1435
|
+
if (id === RESOLVED_VIRTUAL_OBJECT_CACHE_ID) return generateObjectCacheModule(resolvedConfig.objectCache?.entrypoint, resolvedConfig.objectCache?.config);
|
|
1366
1436
|
if (id === RESOLVED_VIRTUAL_PLUGINS_ID) return generatePluginsModule(pluginDescriptors);
|
|
1367
1437
|
if (id === RESOLVED_VIRTUAL_ADMIN_REGISTRY_ID) return generateAdminRegistryModule([...pluginDescriptors, ...resolvedConfig.sandboxed ?? []]);
|
|
1368
1438
|
if (id === RESOLVED_VIRTUAL_SANDBOX_RUNNER_ID) return generateSandboxRunnerModule(resolvedConfig.sandboxRunner);
|
|
@@ -1386,6 +1456,7 @@ function createVirtualModulesPlugin(options) {
|
|
|
1386
1456
|
* Modules that contain native Node.js addons or Node-only code.
|
|
1387
1457
|
* These must be external in SSR to avoid bundling failures on Node.
|
|
1388
1458
|
*/
|
|
1459
|
+
const ADMIN_STYLES_ALIAS = /^@dineway-ai\/admin\/styles\.css/;
|
|
1389
1460
|
const NODE_NATIVE_EXTERNALS = [
|
|
1390
1461
|
"better-sqlite3",
|
|
1391
1462
|
"bindings",
|
|
@@ -1403,6 +1474,8 @@ function createViteConfig(options, command) {
|
|
|
1403
1474
|
const adminSourcePath = isDev ? resolveAdminSource(projectRoot) : void 0;
|
|
1404
1475
|
const useSource = adminSourcePath !== void 0;
|
|
1405
1476
|
const devPlugins = adminSourcePath ? [linguiMacroPlugin(adminSourcePath, adminDistPath)] : [];
|
|
1477
|
+
const useSyncExternalStoreShimPath = resolveIntegrationShim("use-sync-external-store.js");
|
|
1478
|
+
const useSyncExternalStoreWithSelectorShimPath = resolveIntegrationShim("use-sync-external-store-with-selector.js");
|
|
1406
1479
|
return {
|
|
1407
1480
|
define: {
|
|
1408
1481
|
__DINEWAY_VERSION__: JSON.stringify(VERSION),
|
|
@@ -1417,7 +1490,7 @@ function createViteConfig(options, command) {
|
|
|
1417
1490
|
],
|
|
1418
1491
|
alias: [
|
|
1419
1492
|
{
|
|
1420
|
-
find:
|
|
1493
|
+
find: ADMIN_STYLES_ALIAS,
|
|
1421
1494
|
replacement: resolve(adminDistPath, "styles.css")
|
|
1422
1495
|
},
|
|
1423
1496
|
{
|
|
@@ -1427,12 +1500,28 @@ function createViteConfig(options, command) {
|
|
|
1427
1500
|
{
|
|
1428
1501
|
find: "@dineway-ai/admin",
|
|
1429
1502
|
replacement: useSource ? adminSourcePath : adminDistPath
|
|
1503
|
+
},
|
|
1504
|
+
{
|
|
1505
|
+
find: "use-sync-external-store/shim/with-selector.js",
|
|
1506
|
+
replacement: useSyncExternalStoreWithSelectorShimPath
|
|
1507
|
+
},
|
|
1508
|
+
{
|
|
1509
|
+
find: "use-sync-external-store/shim/with-selector",
|
|
1510
|
+
replacement: useSyncExternalStoreWithSelectorShimPath
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
find: "use-sync-external-store/shim/index.js",
|
|
1514
|
+
replacement: useSyncExternalStoreShimPath
|
|
1515
|
+
},
|
|
1516
|
+
{
|
|
1517
|
+
find: "use-sync-external-store/shim",
|
|
1518
|
+
replacement: useSyncExternalStoreShimPath
|
|
1430
1519
|
}
|
|
1431
1520
|
]
|
|
1432
1521
|
},
|
|
1433
1522
|
plugins: [createVirtualModulesPlugin(options), ...useSource ? devPlugins : []],
|
|
1434
1523
|
ssr: {
|
|
1435
|
-
external: NODE_NATIVE_EXTERNALS,
|
|
1524
|
+
external: [...NODE_NATIVE_EXTERNALS, "dineway > zod"],
|
|
1436
1525
|
noExternal: ["dineway", "@dineway-ai/admin"]
|
|
1437
1526
|
},
|
|
1438
1527
|
optimizeDeps: {
|
|
@@ -1463,9 +1552,10 @@ const DINEWAY_SESSION_DRIVER = { entrypoint: "dineway/astro/session-driver" };
|
|
|
1463
1552
|
/**
|
|
1464
1553
|
* Build `image.remotePatterns` entries so Astro will optimize Dineway media.
|
|
1465
1554
|
*
|
|
1466
|
-
* Astro's image services only transform
|
|
1467
|
-
*
|
|
1468
|
-
* to the media proxy route, and a
|
|
1555
|
+
* Astro's image services only build transform URLs for sources allowed via
|
|
1556
|
+
* `image.domains` / `image.remotePatterns`. Dineway authorizes storage public
|
|
1557
|
+
* URL hosts, the configured site origin scoped to the media proxy route, and a
|
|
1558
|
+
* dev-only host-agnostic media route pattern.
|
|
1469
1559
|
*
|
|
1470
1560
|
* @internal Exported for unit testing.
|
|
1471
1561
|
*/
|
|
@@ -1494,6 +1584,19 @@ function buildImageRemotePatterns(storage, siteUrl, command) {
|
|
|
1494
1584
|
if (command === "dev") patterns.push({ pathname: `${INTERNAL_MEDIA_PREFIX}**` });
|
|
1495
1585
|
return patterns;
|
|
1496
1586
|
}
|
|
1587
|
+
const OVERRIDABLE_IMAGE_ENDPOINTS = new Set([
|
|
1588
|
+
"astro/assets/endpoint/generic",
|
|
1589
|
+
"astro/assets/endpoint/node",
|
|
1590
|
+
"astro/assets/endpoint/dev"
|
|
1591
|
+
]);
|
|
1592
|
+
const PASSTHROUGH_IMAGE_ENDPOINTS = new Set(["@astrojs/cloudflare/image-passthrough-endpoint"]);
|
|
1593
|
+
function resolveImageEndpoint(opts) {
|
|
1594
|
+
if (opts.imagesDisabled) return {};
|
|
1595
|
+
const current = opts.currentEntrypoint;
|
|
1596
|
+
if (current === void 0 || OVERRIDABLE_IMAGE_ENDPOINTS.has(current)) return { entrypoint: "dineway/image-endpoint" };
|
|
1597
|
+
if (PASSTHROUGH_IMAGE_ENDPOINTS.has(current)) return {};
|
|
1598
|
+
return { warn: `A custom image.endpoint (${current}) is configured; Dineway will not wrap it, so storage-backed media may render unoptimized.` };
|
|
1599
|
+
}
|
|
1497
1600
|
const dim = (s) => `\x1b[2m${s}\x1b[22m`;
|
|
1498
1601
|
const bold = (s) => `\x1b[1m${s}\x1b[22m`;
|
|
1499
1602
|
const cyan = (s) => `\x1b[36m${s}\x1b[39m`;
|
|
@@ -1501,14 +1604,31 @@ const cyan = (s) => `\x1b[36m${s}\x1b[39m`;
|
|
|
1501
1604
|
function printBanner(_logger) {
|
|
1502
1605
|
const banner = `
|
|
1503
1606
|
|
|
1504
|
-
${bold(cyan("— D I N E W A Y —"))}
|
|
1607
|
+
${bold(cyan("— D I N E W A Y —"))} ${dim(`v${VERSION}`)}
|
|
1505
1608
|
`;
|
|
1506
1609
|
console.log(banner);
|
|
1507
1610
|
}
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1611
|
+
function buildDevServerInfo(baseUrl, mcpEnabled) {
|
|
1612
|
+
return {
|
|
1613
|
+
adminUrl: `${baseUrl}/_dineway/admin`,
|
|
1614
|
+
...mcpEnabled ? { mcpUrl: `${baseUrl}/_dineway/api/mcp` } : {},
|
|
1615
|
+
devBypassUrl: `${baseUrl}/_dineway/api/setup/dev-bypass?redirect=/_dineway/admin`,
|
|
1616
|
+
devBypassDescription: "Skips passkey setup/auth and signs you in as a dev admin"
|
|
1617
|
+
};
|
|
1618
|
+
}
|
|
1619
|
+
function getDevServerBaseUrl(address) {
|
|
1620
|
+
if (!address || typeof address === "string") return null;
|
|
1621
|
+
let host = address.address;
|
|
1622
|
+
if (host === "::1" || host === "::" || host === "0.0.0.0") host = "localhost";
|
|
1623
|
+
else if (address.family === "IPv6") host = `[${host}]`;
|
|
1624
|
+
return `http://${host}:${address.port}`;
|
|
1625
|
+
}
|
|
1626
|
+
function printDevServerInfo(baseUrl, mcpEnabled) {
|
|
1627
|
+
const info = buildDevServerInfo(baseUrl, mcpEnabled);
|
|
1628
|
+
console.log(`\n ${dim("›")} Admin UI ${cyan(info.adminUrl)}`);
|
|
1629
|
+
if (info.mcpUrl) console.log(` ${dim("›")} MCP server ${cyan(info.mcpUrl)}`);
|
|
1630
|
+
console.log(` ${dim("›")} Dev bypass ${cyan(info.devBypassUrl)}`);
|
|
1631
|
+
console.log(` ${dim(info.devBypassDescription)}`);
|
|
1512
1632
|
console.log("");
|
|
1513
1633
|
}
|
|
1514
1634
|
/**
|
|
@@ -1568,10 +1688,12 @@ function dineway(config = {}) {
|
|
|
1568
1688
|
trustedProxyHeaders: resolvedConfig.trustedProxyHeaders
|
|
1569
1689
|
};
|
|
1570
1690
|
const useExternalAuth = !!(resolvedConfig.auth && "entrypoint" in resolvedConfig.auth);
|
|
1691
|
+
let astroCommand;
|
|
1571
1692
|
return {
|
|
1572
1693
|
name: "dineway",
|
|
1573
1694
|
hooks: {
|
|
1574
1695
|
"astro:config:setup": ({ injectRoute, addMiddleware, logger, updateConfig, config: astroConfig, command }) => {
|
|
1696
|
+
astroCommand = command;
|
|
1575
1697
|
printBanner(logger);
|
|
1576
1698
|
if (astroConfig.i18n) {
|
|
1577
1699
|
const routing = astroConfig.i18n.routing;
|
|
@@ -1615,10 +1737,18 @@ function dineway(config = {}) {
|
|
|
1615
1737
|
]
|
|
1616
1738
|
}];
|
|
1617
1739
|
const imageRemotePatterns = buildImageRemotePatterns(resolvedConfig.storage, resolvedConfig.siteUrl, command);
|
|
1740
|
+
const { entrypoint: imageEndpoint, warn: imageEndpointWarning } = resolveImageEndpoint({
|
|
1741
|
+
imagesDisabled: resolvedConfig.images === false,
|
|
1742
|
+
currentEntrypoint: astroConfig.image?.endpoint?.entrypoint
|
|
1743
|
+
});
|
|
1744
|
+
if (imageEndpointWarning) logger.warn(imageEndpointWarning);
|
|
1745
|
+
const imageConfig = {};
|
|
1746
|
+
if (imageRemotePatterns.length) imageConfig.remotePatterns = imageRemotePatterns;
|
|
1747
|
+
if (imageEndpoint) imageConfig.endpoint = { entrypoint: imageEndpoint };
|
|
1618
1748
|
updateConfig({
|
|
1619
1749
|
security: securityConfig,
|
|
1620
1750
|
session: sessionConfig,
|
|
1621
|
-
...
|
|
1751
|
+
...Object.keys(imageConfig).length ? { image: imageConfig } : {},
|
|
1622
1752
|
fonts: dinewayFonts,
|
|
1623
1753
|
vite: createViteConfig({
|
|
1624
1754
|
serializableConfig,
|
|
@@ -1627,7 +1757,7 @@ function dineway(config = {}) {
|
|
|
1627
1757
|
astroConfig
|
|
1628
1758
|
}, command)
|
|
1629
1759
|
});
|
|
1630
|
-
injectCoreRoutes(injectRoute);
|
|
1760
|
+
injectCoreRoutes(injectRoute, { srcDir: astroConfig.srcDir });
|
|
1631
1761
|
if (resolvedConfig.authProviders?.length) injectAuthProviderRoutes(injectRoute, resolvedConfig.authProviders);
|
|
1632
1762
|
if (!useExternalAuth) injectBuiltinAuthRoutes(injectRoute);
|
|
1633
1763
|
if (resolvedConfig.mcp !== false) injectMcpRoute(injectRoute);
|
|
@@ -1661,9 +1791,13 @@ function dineway(config = {}) {
|
|
|
1661
1791
|
entrypoint: "dineway/middleware/request-context",
|
|
1662
1792
|
order: "pre"
|
|
1663
1793
|
});
|
|
1664
|
-
printRoutesSummary(logger);
|
|
1665
1794
|
},
|
|
1666
1795
|
"astro:server:setup": ({ server, logger }) => {
|
|
1796
|
+
if (astroCommand === "dev") server.httpServer?.once("listening", () => {
|
|
1797
|
+
const baseUrl = getDevServerBaseUrl(server.httpServer?.address() ?? null);
|
|
1798
|
+
if (!baseUrl) return;
|
|
1799
|
+
printDevServerInfo(baseUrl, resolvedConfig.mcp !== false);
|
|
1800
|
+
});
|
|
1667
1801
|
server.httpServer?.once("listening", async () => {
|
|
1668
1802
|
const { writeFile, readFile } = await import("node:fs/promises");
|
|
1669
1803
|
const { resolve } = await import("node:path");
|
|
@@ -1704,4 +1838,4 @@ function dineway(config = {}) {
|
|
|
1704
1838
|
}
|
|
1705
1839
|
|
|
1706
1840
|
//#endregion
|
|
1707
|
-
export { dineway as default, getStoredConfig, local, s3 };
|
|
1841
|
+
export { dineway as default, getStoredConfig, local, memoryCache, s3 };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
const objectIs =
|
|
4
|
+
typeof Object.is === "function"
|
|
5
|
+
? Object.is
|
|
6
|
+
: (x, y) => (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);
|
|
7
|
+
|
|
8
|
+
export function useSyncExternalStoreWithSelector(
|
|
9
|
+
subscribe,
|
|
10
|
+
getSnapshot,
|
|
11
|
+
getServerSnapshot,
|
|
12
|
+
selector,
|
|
13
|
+
isEqual,
|
|
14
|
+
) {
|
|
15
|
+
const instRef = React.useRef(null);
|
|
16
|
+
if (instRef.current === null) {
|
|
17
|
+
instRef.current = { hasValue: false, value: null };
|
|
18
|
+
}
|
|
19
|
+
const inst = instRef.current;
|
|
20
|
+
|
|
21
|
+
const [getSelection, getServerSelection] = React.useMemo(() => {
|
|
22
|
+
let hasMemo = false;
|
|
23
|
+
let memoizedSnapshot;
|
|
24
|
+
let memoizedSelection;
|
|
25
|
+
|
|
26
|
+
const memoizedSelector = (nextSnapshot) => {
|
|
27
|
+
if (!hasMemo) {
|
|
28
|
+
hasMemo = true;
|
|
29
|
+
memoizedSnapshot = nextSnapshot;
|
|
30
|
+
const nextSelection = selector(nextSnapshot);
|
|
31
|
+
if (isEqual !== undefined && inst.hasValue) {
|
|
32
|
+
const currentSelection = inst.value;
|
|
33
|
+
if (isEqual(currentSelection, nextSelection)) {
|
|
34
|
+
memoizedSelection = currentSelection;
|
|
35
|
+
return currentSelection;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
memoizedSelection = nextSelection;
|
|
39
|
+
return nextSelection;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const previousSelection = memoizedSelection;
|
|
43
|
+
if (objectIs(memoizedSnapshot, nextSnapshot)) {
|
|
44
|
+
return previousSelection;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const nextSelection = selector(nextSnapshot);
|
|
48
|
+
if (isEqual !== undefined && isEqual(previousSelection, nextSelection)) {
|
|
49
|
+
memoizedSnapshot = nextSnapshot;
|
|
50
|
+
return previousSelection;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
memoizedSnapshot = nextSnapshot;
|
|
54
|
+
memoizedSelection = nextSelection;
|
|
55
|
+
return nextSelection;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return [
|
|
59
|
+
() => memoizedSelector(getSnapshot()),
|
|
60
|
+
getServerSnapshot === undefined ? undefined : () => memoizedSelector(getServerSnapshot()),
|
|
61
|
+
];
|
|
62
|
+
}, [getSnapshot, getServerSnapshot, selector, isEqual]);
|
|
63
|
+
|
|
64
|
+
const value = React.useSyncExternalStore(subscribe, getSelection, getServerSelection);
|
|
65
|
+
React.useEffect(() => {
|
|
66
|
+
inst.hasValue = true;
|
|
67
|
+
inst.value = value;
|
|
68
|
+
}, [inst, value]);
|
|
69
|
+
React.useDebugValue(value);
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useSyncExternalStore } from "react";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import "../../runtime-
|
|
2
|
-
import "../../types-
|
|
3
|
-
import "../../types-
|
|
4
|
-
import "../../types-
|
|
5
|
-
import "../../runner-
|
|
6
|
-
import "../../index-
|
|
7
|
-
import "../../byline-fields-uJlygdzM.mjs";
|
|
8
|
-
import "../../types-GaCtZ1k9.mjs";
|
|
9
|
-
import "../../validate-DzjCdy6v.mjs";
|
|
1
|
+
import "../../runtime-BOeiQsCv.mjs";
|
|
2
|
+
import "../../types-DU0bU2Wu.mjs";
|
|
3
|
+
import "../../types-C8XW6L19.mjs";
|
|
4
|
+
import "../../types-Rc3gQqqw.mjs";
|
|
5
|
+
import "../../runner-1tC2tIRV.mjs";
|
|
6
|
+
import "../../index-D4y6NGiy.mjs";
|
|
10
7
|
import { DinewayHandlers } from "../types.mjs";
|
|
8
|
+
import "../../byline-fields-CUvbslGc.mjs";
|
|
9
|
+
import "../../types-CDpH6MA4.mjs";
|
|
10
|
+
import "../../validate-CZvb-BKB.mjs";
|
|
11
11
|
import { Kysely } from "kysely";
|
|
12
|
-
import { User } from "@dineway-ai/auth";
|
|
12
|
+
import { RoleLevel, User } from "@dineway-ai/auth";
|
|
13
13
|
import * as astro from "astro";
|
|
14
14
|
|
|
15
15
|
//#region src/site-context/actor.d.ts
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { t as apiError } from "../../error-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { t as apiError } from "../../error-CytFlgcd.mjs";
|
|
2
|
+
import { i as hasScope } from "../../api-tokens-2r7OWi_I.mjs";
|
|
3
|
+
import { n as getPublicOrigin } from "../../public-url-BEz_sM9n.mjs";
|
|
4
|
+
import { t as getAuthMode } from "../../mode-C4CIyjtR.mjs";
|
|
5
|
+
import { t as resolveSessionUser } from "../../session-user-CAKImna3.mjs";
|
|
6
|
+
import { a as resolveApiToken, o as resolveOAuthToken } from "../../api-tokens-CjVMQT-X.mjs";
|
|
6
7
|
import { ulid } from "ulidx";
|
|
7
8
|
import { defineMiddleware } from "astro:middleware";
|
|
8
9
|
import { createKyselyAdapter } from "@dineway-ai/auth/adapters/kysely";
|
|
@@ -52,25 +53,41 @@ function checkPublicCsrf(request, url, publicOrigin) {
|
|
|
52
53
|
|
|
53
54
|
//#endregion
|
|
54
55
|
//#region src/astro/middleware/csp.ts
|
|
56
|
+
const S3_ADAPTER_ENTRYPOINT = "dineway/storage/s3";
|
|
55
57
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* Applied via middleware header rather than Astro's built-in CSP because
|
|
59
|
-
* Astro's auto-hashing defeats 'unsafe-inline' (CSP3 ignores 'unsafe-inline'
|
|
60
|
-
* when hashes are present), which would break user-facing pages.
|
|
61
|
-
*
|
|
62
|
-
* img-src allows any HTTPS origin because the admin renders user content that
|
|
63
|
-
* may reference external images (migrations, external hosting, embeds).
|
|
64
|
-
* Plugin security does not rely on img-src -- sandboxed plugins run behind the
|
|
65
|
-
* host-mediated `SandboxRunner` boundary with no DOM access, and connect-src
|
|
66
|
-
* 'self' blocks fetch-based exfiltration from the admin itself.
|
|
58
|
+
* S3-compatible adapters resolve omitted fields from matching S3_* env vars at
|
|
59
|
+
* runtime, so the CSP helper must mirror that endpoint lookup.
|
|
67
60
|
*/
|
|
68
|
-
function
|
|
61
|
+
function getConfiguredStorageEndpoint(storage) {
|
|
62
|
+
const config = storage?.config;
|
|
63
|
+
if (typeof config === "object" && config !== null && "endpoint" in config) {
|
|
64
|
+
const endpoint = config.endpoint;
|
|
65
|
+
if (typeof endpoint === "string") return endpoint;
|
|
66
|
+
}
|
|
67
|
+
if (storage?.entrypoint === S3_ADAPTER_ENTRYPOINT) {
|
|
68
|
+
const envEndpoint = typeof process !== "undefined" && process.env ? process.env.S3_ENDPOINT : void 0;
|
|
69
|
+
if (envEndpoint) return envEndpoint;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function getHttpOrigin(rawUrl) {
|
|
73
|
+
if (!rawUrl) return void 0;
|
|
74
|
+
try {
|
|
75
|
+
const url = new URL(rawUrl);
|
|
76
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") return void 0;
|
|
77
|
+
return url.origin;
|
|
78
|
+
} catch {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function buildDinewayCsp(storageEndpoint) {
|
|
83
|
+
const connectSrc = ["connect-src 'self'"];
|
|
84
|
+
const storageOrigin = getHttpOrigin(storageEndpoint);
|
|
85
|
+
if (storageOrigin) connectSrc.push(storageOrigin);
|
|
69
86
|
return [
|
|
70
87
|
"default-src 'self'",
|
|
71
88
|
"script-src 'self' 'unsafe-inline'",
|
|
72
89
|
"style-src 'self' 'unsafe-inline'",
|
|
73
|
-
"
|
|
90
|
+
connectSrc.join(" "),
|
|
74
91
|
"form-action 'self'",
|
|
75
92
|
"frame-ancestors 'none'",
|
|
76
93
|
"img-src 'self' https: data: blob:",
|
|
@@ -143,7 +160,8 @@ const PUBLIC_API_EXACT = new Set([
|
|
|
143
160
|
"/_dineway/api/auth/setup-token/verify",
|
|
144
161
|
"/_dineway/api/oauth/token",
|
|
145
162
|
"/_dineway/api/snapshot",
|
|
146
|
-
"/_dineway/api/search"
|
|
163
|
+
"/_dineway/api/search",
|
|
164
|
+
"/_dineway/api/search/suggest"
|
|
147
165
|
]);
|
|
148
166
|
const CSRF_EXEMPT_PUBLIC_ROUTES = new Set([
|
|
149
167
|
"/_dineway/api/auth/setup-token/verify",
|
|
@@ -229,11 +247,11 @@ const onRequest = defineMiddleware(async (context, next) => {
|
|
|
229
247
|
const scopeError = enforceTokenScope(url.pathname, method, context.locals.tokenScopes);
|
|
230
248
|
if (scopeError) return scopeError;
|
|
231
249
|
const response = await next();
|
|
232
|
-
if (!import.meta.env.DEV) response.headers.set("Content-Security-Policy", buildDinewayCsp());
|
|
250
|
+
if (!import.meta.env.DEV) response.headers.set("Content-Security-Policy", buildDinewayCsp(getConfiguredStorageEndpoint(context.locals.dineway?.config.storage)));
|
|
233
251
|
return response;
|
|
234
252
|
}
|
|
235
253
|
const response = await handleDinewayAuth(context, next);
|
|
236
|
-
if (!import.meta.env.DEV) response.headers.set("Content-Security-Policy", buildDinewayCsp());
|
|
254
|
+
if (!import.meta.env.DEV) response.headers.set("Content-Security-Policy", buildDinewayCsp(getConfiguredStorageEndpoint(context.locals.dineway?.config.storage)));
|
|
237
255
|
return response;
|
|
238
256
|
});
|
|
239
257
|
/**
|
|
@@ -283,7 +301,7 @@ async function handlePluginRouteAuth(context, next) {
|
|
|
283
301
|
}
|
|
284
302
|
try {
|
|
285
303
|
const { session } = context;
|
|
286
|
-
const sessionUser = await session
|
|
304
|
+
const sessionUser = await resolveSessionUser(session);
|
|
287
305
|
if (sessionUser?.id && dineway?.db) {
|
|
288
306
|
const user = await createKyselyAdapter(dineway.db).getUserById(sessionUser.id);
|
|
289
307
|
if (user && !user.disabled) locals.user = user;
|
|
@@ -301,7 +319,7 @@ async function handlePublicRouteAuth(context, next) {
|
|
|
301
319
|
const { locals, session } = context;
|
|
302
320
|
const { dineway } = locals;
|
|
303
321
|
try {
|
|
304
|
-
const sessionUser = await session
|
|
322
|
+
const sessionUser = await resolveSessionUser(session);
|
|
305
323
|
if (sessionUser?.id && dineway?.db) {
|
|
306
324
|
const user = await createKyselyAdapter(dineway.db).getUserById(sessionUser.id);
|
|
307
325
|
if (user && !user.disabled) locals.user = user;
|
|
@@ -441,7 +459,7 @@ async function handlePasskeyAuth(context, next, isApiRoute) {
|
|
|
441
459
|
const { url, locals, session } = context;
|
|
442
460
|
const { dineway } = locals;
|
|
443
461
|
try {
|
|
444
|
-
const sessionUser = await session
|
|
462
|
+
const sessionUser = await resolveSessionUser(session);
|
|
445
463
|
if (!sessionUser?.id) {
|
|
446
464
|
if (isApiRoute) return Response.json({ error: {
|
|
447
465
|
code: "NOT_AUTHENTICATED",
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import "../../dialect-helpers-fk43GbDb.mjs";
|
|
2
2
|
import { getRequestContext } from "../../request-context.mjs";
|
|
3
3
|
import "../../base64-F8-DUraK.mjs";
|
|
4
|
-
import "../../types-
|
|
5
|
-
import { r as getDb } from "../../loader
|
|
6
|
-
import { n as alternateTrailingSlashPath, t as RedirectRepository } from "../../redirect-
|
|
7
|
-
import { a as matchCachedPatterns, n as compileRedirectRules, o as setCachedRedirects, r as getCachedRedirects } from "../../cache-
|
|
4
|
+
import "../../types-Dq1qT19x.mjs";
|
|
5
|
+
import { r as getDb } from "../../loader-CjWqjweO.mjs";
|
|
6
|
+
import { n as alternateTrailingSlashPath, t as RedirectRepository } from "../../redirect-BAjt4Z6b.mjs";
|
|
7
|
+
import { a as matchCachedPatterns, n as compileRedirectRules, o as setCachedRedirects, r as getCachedRedirects } from "../../cache-C-FNTFYK.mjs";
|
|
8
|
+
import { n as isTerminalStatus } from "../../status-DANd8ERo.mjs";
|
|
8
9
|
import { defineMiddleware } from "astro:middleware";
|
|
9
10
|
|
|
10
11
|
//#region src/astro/middleware/redirect.ts
|
|
@@ -61,6 +62,10 @@ const onRequest = defineMiddleware(async (context, next) => {
|
|
|
61
62
|
rules = cached.patterns;
|
|
62
63
|
}
|
|
63
64
|
if (exact) {
|
|
65
|
+
if (isTerminalStatus(exact.type)) {
|
|
66
|
+
repo.recordHit(exact.id).catch(() => {});
|
|
67
|
+
return new Response(null, { status: exact.type });
|
|
68
|
+
}
|
|
64
69
|
if (exact.destination.startsWith("//") || exact.destination.startsWith("/\\")) return next();
|
|
65
70
|
repo.recordHit(exact.id).catch(() => {});
|
|
66
71
|
const code = isRedirectCode(exact.type) ? exact.type : 301;
|
|
@@ -69,6 +74,10 @@ const onRequest = defineMiddleware(async (context, next) => {
|
|
|
69
74
|
const patternMatch = matchCachedPatterns(rules, pathname);
|
|
70
75
|
if (patternMatch) {
|
|
71
76
|
const { redirect, destination } = patternMatch;
|
|
77
|
+
if (isTerminalStatus(redirect.type)) {
|
|
78
|
+
repo.recordHit(redirect.id).catch(() => {});
|
|
79
|
+
return new Response(null, { status: redirect.type });
|
|
80
|
+
}
|
|
72
81
|
if (destination.startsWith("//") || destination.startsWith("/\\")) return next();
|
|
73
82
|
repo.recordHit(redirect.id).catch(() => {});
|
|
74
83
|
const code = isRedirectCode(redirect.type) ? redirect.type : 301;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { runWithContext } from "../../request-context.mjs";
|
|
2
2
|
import "../../base64-F8-DUraK.mjs";
|
|
3
|
-
import "../../options-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import "../../options-DQPTH5n0.mjs";
|
|
4
|
+
import { a as resolveSecretsCached } from "../../secrets-CDZo2k8L.mjs";
|
|
5
|
+
import { n as parseContentId, r as verifyPreviewToken } from "../../tokens-1RK1n6ED.mjs";
|
|
6
6
|
import { defineMiddleware } from "astro:middleware";
|
|
7
7
|
|
|
8
8
|
//#region src/visual-editing/toolbar.ts
|
|
@@ -1319,10 +1319,12 @@ async function injectToolbar(response, toolbarHtml) {
|
|
|
1319
1319
|
const html = await response.text();
|
|
1320
1320
|
if (!html.includes("</body>")) return new Response(html, response);
|
|
1321
1321
|
const injected = html.replace("</body>", `${toolbarHtml}</body>`);
|
|
1322
|
-
|
|
1322
|
+
const result = new Response(injected, {
|
|
1323
1323
|
status: response.status,
|
|
1324
1324
|
headers: response.headers
|
|
1325
1325
|
});
|
|
1326
|
+
result.headers.set("Cache-Control", "private, no-store");
|
|
1327
|
+
return result;
|
|
1326
1328
|
}
|
|
1327
1329
|
const onRequest = defineMiddleware(async (context, next) => {
|
|
1328
1330
|
const { cookies, url } = context;
|
|
@@ -1332,7 +1334,8 @@ const onRequest = defineMiddleware(async (context, next) => {
|
|
|
1332
1334
|
const requestDb = context.locals.__dinewayRequestDb;
|
|
1333
1335
|
if (requestDb) return runWithContext({
|
|
1334
1336
|
editMode: cookies.get("dineway-edit-mode")?.value === "true",
|
|
1335
|
-
db: requestDb
|
|
1337
|
+
db: requestDb,
|
|
1338
|
+
dbIsIsolated: true
|
|
1336
1339
|
}, () => next());
|
|
1337
1340
|
const hasEditCookie = cookies.get("dineway-edit-mode")?.value === "true";
|
|
1338
1341
|
const hasPreviewToken = url.searchParams.has("_preview");
|