dineway 0.1.48 → 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-C9u37D5z.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-DhipQNLb.mjs → allowed-origins-_oeyP6x-.mjs} +1 -1
- package/dist/api/route-utils.d.mts +10 -10
- package/dist/api/route-utils.mjs +17 -14
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +5 -4
- package/dist/{api-Eiy8_zVZ.mjs → api-ByrU2q-Z.mjs} +61 -37
- package/dist/{api-tokens-DtvdtIkm.mjs → api-tokens-CjVMQT-X.mjs} +6 -2
- package/dist/{apply-CX3no7XE.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 +14 -5
- package/dist/astro/middleware/request-context.mjs +9 -6
- 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 +334 -193
- 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 +22 -18
- 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 +18 -15
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +18 -15
- package/dist/astro/routes/api/admin/bylines/index.mjs +18 -15
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +15 -13
- package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -6
- package/dist/astro/routes/api/admin/comments/bulk.mjs +12 -10
- package/dist/astro/routes/api/admin/comments/counts.mjs +7 -6
- package/dist/astro/routes/api/admin/comments/index.mjs +12 -10
- package/dist/astro/routes/api/admin/context/_id_/history.mjs +27 -25
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +27 -25
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +32 -29
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +32 -29
- package/dist/astro/routes/api/admin/context/diff.mjs +31 -28
- package/dist/astro/routes/api/admin/context/index.mjs +32 -29
- package/dist/astro/routes/api/admin/context/stale.mjs +31 -28
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +27 -25
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +31 -28
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +31 -28
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +28 -26
- 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 -52
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +56 -52
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +48 -44
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -50
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +53 -49
- package/dist/astro/routes/api/admin/plugins/index.mjs +48 -44
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +47 -43
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +53 -49
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +47 -43
- package/dist/astro/routes/api/admin/plugins/updates.mjs +47 -43
- package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +6 -6
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +32 -28
- package/dist/astro/routes/api/admin/review-requests/index.mjs +11 -10
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +47 -43
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +47 -43
- 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 +10 -9
- 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 +6 -6
- 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 +16 -14
- 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 -6
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -6
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -6
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +12 -11
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -6
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +17 -15
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -6
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -6
- package/dist/astro/routes/api/dashboard.mjs +10 -9
- 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 +23 -11
- 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 +85 -38
- package/dist/astro/routes/api/import/wordpress/media.d.mts +13 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +20 -14
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +36 -33
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +18 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +121 -101
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -13
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +56 -2
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +284 -56
- package/dist/astro/routes/api/manifest.mjs +14 -5
- package/dist/astro/routes/api/mcp.mjs +266 -70
- package/dist/astro/routes/api/media/_id_/confirm.mjs +39 -11
- 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 +12 -11
- package/dist/astro/routes/api/media.mjs +28 -35
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +32 -29
- package/dist/astro/routes/api/menus/_name_/items.mjs +32 -29
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +32 -29
- package/dist/astro/routes/api/menus/_name_/translations.mjs +32 -29
- package/dist/astro/routes/api/menus/_name_.mjs +32 -29
- package/dist/astro/routes/api/menus/index.mjs +32 -29
- 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 +12 -11
- package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
- package/dist/astro/routes/api/redirects/_id_.mjs +33 -30
- package/dist/astro/routes/api/redirects/index.mjs +33 -30
- 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 -44
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +48 -44
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +48 -44
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +48 -44
- package/dist/astro/routes/api/schema/collections/index.mjs +48 -44
- package/dist/astro/routes/api/schema/index.mjs +13 -14
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +47 -43
- package/dist/astro/routes/api/schema/orphans/index.mjs +47 -43
- package/dist/astro/routes/api/search/enable.mjs +12 -11
- package/dist/astro/routes/api/search/index.mjs +11 -10
- package/dist/astro/routes/api/search/rebuild.mjs +12 -11
- package/dist/astro/routes/api/search/stats.mjs +7 -7
- package/dist/astro/routes/api/search/suggest.mjs +11 -10
- package/dist/astro/routes/api/sections/_slug_.mjs +32 -29
- package/dist/astro/routes/api/sections/index.mjs +32 -29
- package/dist/astro/routes/api/settings/email.mjs +4 -4
- package/dist/astro/routes/api/settings.mjs +32 -29
- 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 +32 -26
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +30 -26
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +9 -8
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +35 -32
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +35 -32
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +35 -32
- package/dist/astro/routes/api/taxonomies/index.mjs +35 -32
- package/dist/astro/routes/api/themes/preview.mjs +6 -6
- 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 -28
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +32 -29
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +32 -29
- package/dist/astro/routes/api/widget-areas/_name_.mjs +29 -27
- package/dist/astro/routes/api/widget-areas/index.mjs +32 -29
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +9 -8
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +24 -15
- package/dist/astro/routes/sitemap.xml.mjs +10 -9
- package/dist/astro/session-driver.d.mts +1 -1
- package/dist/astro/session-driver.mjs +3 -3
- package/dist/astro/types.d.mts +21 -13
- package/dist/{audit-D1cbG7xH.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-CObXGOGz.mjs → briefing-BJaJI8dm.mjs} +2 -1
- package/dist/{briefing-gKWiGLt1.mjs → briefing-CawZ59CY.mjs} +90 -28
- package/dist/bundle-7C_DpkEq.mjs +602 -0
- package/dist/{byline-1ntDwv8c.mjs → byline-e51-fWRs.mjs} +30 -62
- package/dist/{byline-fields-BX7rWKNU.d.mts → byline-fields-CUvbslGc.d.mts} +49 -6
- package/dist/{byline-fields-C9_iaPaM.mjs → byline-fields-D-N5qVIG.mjs} +1 -1
- package/dist/{byline-fields-B-ZkoVft.mjs → byline-fields-DOJO16Gm.mjs} +3 -3
- package/dist/{byline-registry-CUSvkasJ.mjs → byline-registry-87nNnYl4.mjs} +2 -2
- package/dist/{bylines-bC15ZqAv.mjs → bylines-CMQNCNFh.mjs} +9 -3
- package/dist/{bylines-DtxChhN_.mjs → bylines-y4LO-dTj.mjs} +5 -5
- package/dist/{cache-DbKyr60Q.mjs → cache-C-FNTFYK.mjs} +2 -2
- package/dist/{chunks-C5zp2xir.mjs → chunks-CxBt-GxR.mjs} +1 -1
- package/dist/cli/index.mjs +820 -1276
- 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-CXDOQ93N.mjs → comment-DlA4iChg.mjs} +13 -3
- package/dist/comment-reaction-DfFao1ST.mjs +58 -0
- package/dist/{comments-hK-rdzJ9.mjs → comments-DApFGMsP.mjs} +1 -1
- package/dist/{content-QaryevFO.mjs → content-Bh4BDjv8.mjs} +51 -34
- package/dist/content-refresh-CgutSUfO.mjs +1576 -0
- package/dist/{context-CoYb_fvK.mjs → context-C5W3G18y.mjs} +111 -50
- package/dist/{context-DBL1ib4v.mjs → context-CK4ym2Sf.mjs} +2 -2
- package/dist/{context-route-helpers-CYQVmbIm.mjs → context-route-helpers-MASyGgWf.mjs} +2 -1
- package/dist/{cron-DxCAU_Sn.mjs → cron-cKcNTix_.mjs} +7 -3
- package/dist/{dashboard-DNlqsknJ.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-DygsFPGL.mjs → device-flow-BnqRH-T9.mjs} +5 -5
- package/dist/{placeholder-BDo81Is5.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-CIZlScg5.mjs → fts-manager-Crzypjqu.mjs} +1 -1
- package/dist/hitl-Hw1RmWOq.mjs +677 -0
- package/dist/{hitl-requests-CGQwOEiq.mjs → hitl-requests-B4Vbcmaq.mjs} +2 -2
- package/dist/{hitl-route-helpers-GSDLNPpN.mjs → hitl-route-helpers-hEVzvP8l.mjs} +5 -4
- package/dist/import-Bh9biJfx.mjs +1354 -0
- package/dist/{index-CwRuZ-u8.d.mts → index-D4y6NGiy.d.mts} +75 -3
- package/dist/index.d.mts +17 -16
- package/dist/index.mjs +81 -69
- package/dist/{jsonld-DZ67souc.d.mts → jsonld-Dq0gsnOH.d.mts} +8 -4
- package/dist/{load-xE01Jm0V.mjs → load-DmYeniXl.mjs} +1 -1
- package/dist/{loader-tg63WSY2.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 +10 -8
- package/dist/{media-DUAjMfvR.mjs → media-DMj0grzC.mjs} +3 -1
- package/dist/{media-allowlist-BsXkT9RK.mjs → media-allowlist-BlVCSzHx.mjs} +1 -1
- package/dist/media-url-lEKSrpr9.mjs +20 -0
- package/dist/{menus-WpFRMXjz.mjs → menus-TaW1gKnk.mjs} +19 -5
- package/dist/{menus-DU1eZqw_.mjs → menus-xvsnVZXw.mjs} +80 -15
- package/dist/{normalize-DUnoXAa9.mjs → normalize-5ek_z7de.mjs} +8 -1
- package/dist/{oauth-authorization-D-1p52Je.mjs → oauth-authorization-DiaGvRVz.mjs} +5 -5
- package/dist/{oauth-clients-CzeMGyUU.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-C57YQi4l.mjs → plugins-BolVa-tl.mjs} +832 -64
- package/dist/{transport-LSdZVXHF.mjs → portable-text-dA_UlJwW.mjs} +1 -134
- package/dist/{preview-D5rvDhRt.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-DLUM5OOv.mjs → public-url-BEz_sM9n.mjs} +24 -18
- package/dist/{public-url-B5HaoGzj.d.mts → public-url-gsp3oUbu.d.mts} +5 -4
- package/dist/{query-BYc3oruA.mjs → query-CfRCdaL3.mjs} +281 -76
- package/dist/{query-DKEwzobh.mjs → query-jaAmw8E1.mjs} +11 -6
- package/dist/{rate-limit-i0G3IAOX.mjs → rate-limit-ZLdyWoZF.mjs} +2 -2
- package/dist/{redirect-C2zXRj3c.mjs → redirect-BAjt4Z6b.mjs} +2 -2
- package/dist/{redirects-YZo_znWG.mjs → redirects-BTdwpQtE.mjs} +47 -24
- package/dist/{redirects-ocRJmQHP.mjs → redirects-CA-xylPG.mjs} +19 -11
- package/dist/{registry-CTkbIDB9.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-C0un5kdV.mjs → review-requests-C9Ff11Vq.mjs} +1 -1
- package/dist/{review-requests-gGMyYYhy.mjs → review-requests-DUyEmtmG.mjs} +1 -1
- package/dist/{runner-D4FL9usy.d.mts → runner-1tC2tIRV.d.mts} +1 -1
- package/dist/runner-DB7CRfOF.mjs +6740 -0
- package/dist/{runtime-DEWQpZ-4.d.mts → runtime-BOeiQsCv.d.mts} +2028 -1564
- package/dist/runtime.d.mts +10 -10
- package/dist/runtime.mjs +4 -4
- package/dist/schema-DXdYj4R3.mjs +8 -0
- package/dist/{search-axGQ1KY3.mjs → search-DSaLgEFI.mjs} +5 -3
- package/dist/{secrets-062Izo8i.mjs → secrets-CDZo2k8L.mjs} +15 -12
- package/dist/{sections-OLKgXL10.mjs → sections-PVVXHGfp.mjs} +2 -2
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +22 -19
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo/index.mjs +3 -12
- package/dist/{seo-Cd45Po8L.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-Bwad8s5h.mjs → service-DiN4ZuPp.mjs} +2 -2
- package/dist/session-user-CAKImna3.mjs +22 -0
- package/dist/{settings-yLjz_I4T.mjs → settings-BbqgHWpU.mjs} +28 -55
- package/dist/{settings-lAHjaUit.mjs → settings-i4VPP8bT.mjs} +2 -2
- package/dist/{setup-complete--PradA4R.mjs → setup-complete-B8fl-mjV.mjs} +1 -1
- package/dist/{site-activity-D7Xyropw.mjs → site-activity-Dy3FROs0.mjs} +1 -1
- package/dist/{site-context-DaN9Z91j.mjs → site-context-DQiL8Fl5.mjs} +23 -652
- package/dist/{site-url-DpGZo9Z6.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-uXVEoQso.mjs → taxonomies-9s-v03H-.mjs} +36 -29
- package/dist/taxonomies-DRiixp_E.mjs +443 -0
- package/dist/{taxonomy-CBmkmMuU.mjs → taxonomy-Dvsw6BOs.mjs} +44 -9
- package/dist/{tokens-CjSgb0AC.mjs → tokens-1RK1n6ED.mjs} +1 -1
- 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-DfuD0Afl.mjs → types-Dq1qT19x.mjs} +2 -2
- package/dist/ui/server-runtime.d.mts +15 -15
- package/dist/ui/server-runtime.mjs +25 -21
- package/dist/url-Cac7a9QZ.mjs +33 -0
- package/dist/{user-DtNmjNYt.mjs → user-BIZPzCb9.mjs} +2 -2
- package/dist/{utils-wv-zvC-Y.mjs → utils-CMDhr5Xd.mjs} +129 -7
- package/dist/{validate-BMs11tan.d.mts → validate-CZvb-BKB.d.mts} +10 -7
- package/dist/{validate-7SYRbz2f.mjs → validate-DNs0pTSc.mjs} +11 -6
- package/dist/version-BTvfRGc6.mjs +6 -0
- package/dist/{widgets-DR8EHuRO.mjs → widgets-f0ibZUIq.mjs} +46 -43
- package/dist/{wordpress-slugs-Dvhxh4cl.mjs → wordpress-slugs-BhHJX8XE.mjs} +1 -1
- package/dist/{zod-generator-BS9-umbk.mjs → zod-generator-B7TMjyFJ.mjs} +41 -13
- package/package.json +31 -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-Egjmqc7I.mjs +0 -51
- package/dist/import-CvHY6sf5.mjs +0 -684
- package/dist/runner-B-tbV751.mjs +0 -2741
- package/dist/schema-B6zyB-Xn.mjs +0 -8
- package/dist/taxonomies-CNOGeC-3.mjs +0 -327
- package/dist/types-eu5UDgHN.d.mts +0 -652
- package/dist/version-xlzMSXF2.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/{base64-C1Q9yr0B.mjs → base64-F8-DUraK.mjs} +0 -0
- /package/dist/{challenge-store-CRSz-Xim.mjs → challenge-store-Bjlepa2E.mjs} +0 -0
- /package/dist/{components--pg6zBvu.mjs → components-Bclf98Be.mjs} +0 -0
- /package/dist/{context-types-DQh_XKkn.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-Dh4DUoD_.mjs → experimental-workflows-BMsUnIAw.mjs} +0 -0
- /package/dist/{mime-8pAB8-77.mjs → mime-CA7Lgovc.mjs} +0 -0
- /package/dist/{mode-CpyEz8pe.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-BvJoSSJR.mjs → options-DQPTH5n0.mjs} +0 -0
- /package/dist/{passkey-config-DzHQK90v.mjs → passkey-config-BUwu8BA3.mjs} +0 -0
- /package/dist/{patterns-r-0n824Y.mjs → patterns-BhAvqO0S.mjs} +0 -0
- /package/dist/{provider-loader-DzUxejk7.mjs → provider-loader-D0w9dqjm.mjs} +0 -0
- /package/dist/{redirect-BjIBtDWY.mjs → redirect-wphRBv4y.mjs} +0 -0
- /package/dist/{request-cache-CYMbwZc6.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-BzGxlOFx.mjs → slugify-KSsVD_D3.mjs} +0 -0
- /package/dist/{ssrf-DiKqWd3N.mjs → ssrf-DWe8jwAp.mjs} +0 -0
- /package/dist/{transaction-CShMWIej.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-BO8TGjS8.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
|
@@ -163,10 +163,11 @@ interface CreateFieldInput {
|
|
|
163
163
|
*/
|
|
164
164
|
interface UpdateFieldInput {
|
|
165
165
|
label?: string;
|
|
166
|
+
type?: FieldType;
|
|
166
167
|
required?: boolean;
|
|
167
168
|
unique?: boolean;
|
|
168
169
|
defaultValue?: unknown;
|
|
169
|
-
validation?: FieldValidation;
|
|
170
|
+
validation?: FieldValidation | null;
|
|
170
171
|
widget?: string;
|
|
171
172
|
options?: FieldWidgetOptions;
|
|
172
173
|
sortOrder?: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as __exportAll } from "./runner-
|
|
2
|
-
import { r as encodeBase64, t as decodeBase64 } from "./base64-
|
|
1
|
+
import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
|
|
2
|
+
import { r as encodeBase64, t as decodeBase64 } from "./base64-F8-DUraK.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/database/repositories/types.ts
|
|
5
5
|
var types_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { C as getWidgetArea,
|
|
2
|
-
import "../types-
|
|
3
|
-
import { A as PageMetadataContribution,
|
|
4
|
-
import "../types-
|
|
5
|
-
import { _ as MediaValue, c as EmbedResult, l as ImageEmbed, s as EmbedOptions } from "../placeholder-
|
|
6
|
-
import "../runner-
|
|
7
|
-
import "../index-
|
|
8
|
-
import { t as MediaReference } from "../types-
|
|
9
|
-
import "../byline-fields-
|
|
10
|
-
import "../types-
|
|
11
|
-
import "../validate-
|
|
12
|
-
import { t as getPublicOrigin } from "../public-url-
|
|
13
|
-
import { a as generateSiteSeoContributions, d as resolvePageMetadata, i as generateBaseSeoContributions,
|
|
1
|
+
import { C as getWidgetArea, Gn as getDinewayCollection, Lr as getCollectionInfo, X as getMenu, j as Widget, lt as getComments, mr as sanitizeHref, pt as getSiteSettings, qi as PublicComment, qn as getEditMeta, z as getTaxonomyTerms } from "../runtime-BOeiQsCv.mjs";
|
|
2
|
+
import "../types-DU0bU2Wu.mjs";
|
|
3
|
+
import { A as PageMetadataContribution, vt as PublicPageContext } from "../types-C8XW6L19.mjs";
|
|
4
|
+
import "../types-Rc3gQqqw.mjs";
|
|
5
|
+
import { _ as MediaValue, c as EmbedResult, l as ImageEmbed, s as EmbedOptions } from "../placeholder-uvNRZBX9.mjs";
|
|
6
|
+
import "../runner-1tC2tIRV.mjs";
|
|
7
|
+
import "../index-D4y6NGiy.mjs";
|
|
8
|
+
import { t as MediaReference } from "../types-C46EvNdc.mjs";
|
|
9
|
+
import "../byline-fields-CUvbslGc.mjs";
|
|
10
|
+
import "../types-CDpH6MA4.mjs";
|
|
11
|
+
import "../validate-CZvb-BKB.mjs";
|
|
12
|
+
import { t as getPublicOrigin } from "../public-url-gsp3oUbu.mjs";
|
|
13
|
+
import { a as generateSiteSeoContributions, c as ResolvedPageMetadata, d as renderPageMetadata, f as resolvePageMetadata, i as generateBaseSeoContributions, l as createSha256CspHash, o as renderFragments } from "../jsonld-Dq0gsnOH.mjs";
|
|
14
14
|
import { getPageRuntime } from "../page/index.mjs";
|
|
15
|
-
import { t as getMediaProvider } from "../provider-loader-
|
|
15
|
+
import { t as getMediaProvider } from "../provider-loader-MD8zAbnH.mjs";
|
|
16
16
|
|
|
17
17
|
//#region src/utils/sanitize.d.ts
|
|
18
18
|
/**
|
|
@@ -87,4 +87,4 @@ interface SiteIdentityInput {
|
|
|
87
87
|
}
|
|
88
88
|
declare function renderSiteIdentity(input: SiteIdentityInput | undefined): string;
|
|
89
89
|
//#endregion
|
|
90
|
-
export { type EmbedOptions, type EmbedResult, type GetImage, type ImageEmbed, type MediaValue, type PageMetadataContribution, type PublicComment, type PublicPageContext, RESPONSIVE_BREAKPOINTS, type Widget, absolutizeMediaUrl, buildRenderMediaUrl, buildResponsiveImage, generateBaseSeoContributions, generateSiteSeoContributions, getCollectionInfo, getComments, getDinewayCollection, getEditMeta, getMediaProvider, getMenu, getPageRuntime, getPublicOrigin, getSiteSettings, getTaxonomyTerms, getWidgetArea, renderFragments, renderPageMetadata, renderSiteIdentity, resolvePageMetadata, sanitizeContent, sanitizeHref, toAbsoluteMediaUrl };
|
|
90
|
+
export { type EmbedOptions, type EmbedResult, type GetImage, type ImageEmbed, type MediaValue, type PageMetadataContribution, type PublicComment, type PublicPageContext, RESPONSIVE_BREAKPOINTS, type ResolvedPageMetadata, type Widget, absolutizeMediaUrl, buildRenderMediaUrl, buildResponsiveImage, createSha256CspHash, generateBaseSeoContributions, generateSiteSeoContributions, getCollectionInfo, getComments, getDinewayCollection, getEditMeta, getMediaProvider, getMenu, getPageRuntime, getPublicOrigin, getSiteSettings, getTaxonomyTerms, getWidgetArea, renderFragments, renderPageMetadata, renderSiteIdentity, resolvePageMetadata, sanitizeContent, sanitizeHref, toAbsoluteMediaUrl };
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import "../dialect-helpers-fk43GbDb.mjs";
|
|
2
|
-
import "../base64-
|
|
3
|
-
import "../types-
|
|
4
|
-
import "../
|
|
5
|
-
import "../
|
|
6
|
-
import "../
|
|
7
|
-
import "../
|
|
8
|
-
import "../
|
|
9
|
-
import "../
|
|
10
|
-
import "../
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import "../
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { t as
|
|
20
|
-
import
|
|
21
|
-
import {
|
|
2
|
+
import "../base64-F8-DUraK.mjs";
|
|
3
|
+
import "../types-Dq1qT19x.mjs";
|
|
4
|
+
import "../loader-CjWqjweO.mjs";
|
|
5
|
+
import "../object-cache-D51qOseS.mjs";
|
|
6
|
+
import "../media-DMj0grzC.mjs";
|
|
7
|
+
import "../comment-DlA4iChg.mjs";
|
|
8
|
+
import "../options-DQPTH5n0.mjs";
|
|
9
|
+
import "../request-cache-D9GQBxMP.mjs";
|
|
10
|
+
import "../content-refresh-CgutSUfO.mjs";
|
|
11
|
+
import "../fts-manager-Crzypjqu.mjs";
|
|
12
|
+
import "../registry-CtyVedcN.mjs";
|
|
13
|
+
import { n as buildRenderMediaUrl } from "../url-Cac7a9QZ.mjs";
|
|
14
|
+
import { i as getSiteSettings } from "../settings-BbqgHWpU.mjs";
|
|
15
|
+
import { t as getCollectionInfo } from "../query-jaAmw8E1.mjs";
|
|
16
|
+
import "../resolve-Cb6Dbz-C.mjs";
|
|
17
|
+
import { a as getTaxonomyTerms } from "../taxonomies-DRiixp_E.mjs";
|
|
18
|
+
import { n as sanitizeHref } from "../url-CpyFDFpO.mjs";
|
|
19
|
+
import { r as getEditMeta, t as getDinewayCollection } from "../query-CfRCdaL3.mjs";
|
|
20
|
+
import "../comment-reaction-DfFao1ST.mjs";
|
|
21
|
+
import { i as getComments, t as getMenu } from "../menus-xvsnVZXw.mjs";
|
|
22
|
+
import { t as getWidgetArea } from "../widgets-f0ibZUIq.mjs";
|
|
23
|
+
import { t as getMediaProvider } from "../provider-loader-D0w9dqjm.mjs";
|
|
24
|
+
import { n as getPublicOrigin } from "../public-url-BEz_sM9n.mjs";
|
|
25
|
+
import { c as createSha256CspHash, d as resolvePageMetadata, l as escapeHtmlAttr, n as generateSiteSeoContributions, o as renderFragments, t as generateBaseSeoContributions, u as renderPageMetadata } from "../seo-contributions-C1EnikHB.mjs";
|
|
22
26
|
import { getPageRuntime } from "../page/index.mjs";
|
|
23
27
|
import sanitizeHtml from "sanitize-html";
|
|
24
28
|
|
|
@@ -201,4 +205,4 @@ function renderSiteIdentity(input) {
|
|
|
201
205
|
}
|
|
202
206
|
|
|
203
207
|
//#endregion
|
|
204
|
-
export { RESPONSIVE_BREAKPOINTS, absolutizeMediaUrl, buildRenderMediaUrl, buildResponsiveImage, generateBaseSeoContributions, generateSiteSeoContributions, getCollectionInfo, getComments, getDinewayCollection, getEditMeta, getMediaProvider, getMenu, getPageRuntime, getPublicOrigin, getSiteSettings, getTaxonomyTerms, getWidgetArea, renderFragments, renderPageMetadata, renderSiteIdentity, resolvePageMetadata, sanitizeContent, sanitizeHref, toAbsoluteMediaUrl };
|
|
208
|
+
export { RESPONSIVE_BREAKPOINTS, absolutizeMediaUrl, buildRenderMediaUrl, buildResponsiveImage, createSha256CspHash, generateBaseSeoContributions, generateSiteSeoContributions, getCollectionInfo, getComments, getDinewayCollection, getEditMeta, getMediaProvider, getMenu, getPageRuntime, getPublicOrigin, getSiteSettings, getTaxonomyTerms, getWidgetArea, renderFragments, renderPageMetadata, renderSiteIdentity, resolvePageMetadata, sanitizeContent, sanitizeHref, toAbsoluteMediaUrl };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/media/url.ts
|
|
2
|
+
const INTERNAL_MEDIA_PREFIX = "/_dineway/api/media/file/";
|
|
3
|
+
const SAFE_STORAGE_KEY = /^[A-Za-z0-9._-]+$/;
|
|
4
|
+
function addInternalMediaUrl(item) {
|
|
5
|
+
return {
|
|
6
|
+
...item,
|
|
7
|
+
url: `${INTERNAL_MEDIA_PREFIX}${item.storageKey.split("/").map((segment) => encodeURIComponent(segment)).join("/")}`
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function resolvePublicMediaUrl(storage, storageKey) {
|
|
11
|
+
if (!storageKey) return "";
|
|
12
|
+
if (storage) return storage.getPublicUrl(storageKey);
|
|
13
|
+
return `${INTERNAL_MEDIA_PREFIX}${storageKey}`;
|
|
14
|
+
}
|
|
15
|
+
function createPublicMediaUrlResolver(storage) {
|
|
16
|
+
return (key) => resolvePublicMediaUrl(storage, key);
|
|
17
|
+
}
|
|
18
|
+
function buildRenderMediaUrl(resolve, ref) {
|
|
19
|
+
const { storageKey, url, id } = ref;
|
|
20
|
+
if (storageKey) return resolve ? resolve(storageKey) : `${INTERNAL_MEDIA_PREFIX}${storageKey}`;
|
|
21
|
+
if (url) {
|
|
22
|
+
if (resolve && url.startsWith(INTERNAL_MEDIA_PREFIX)) {
|
|
23
|
+
const key = url.slice(25);
|
|
24
|
+
if (SAFE_STORAGE_KEY.test(key)) return resolve(key);
|
|
25
|
+
}
|
|
26
|
+
return url;
|
|
27
|
+
}
|
|
28
|
+
if (id) return `${INTERNAL_MEDIA_PREFIX}${id}`;
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
export { resolvePublicMediaUrl as i, buildRenderMediaUrl as n, createPublicMediaUrlResolver as r, addInternalMediaUrl as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as encodeCursor, r as decodeCursor } from "./types-
|
|
2
|
-
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-
|
|
1
|
+
import { i as encodeCursor, r as decodeCursor } from "./types-Dq1qT19x.mjs";
|
|
2
|
+
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-CxBt-GxR.mjs";
|
|
3
3
|
import { ulid } from "ulidx";
|
|
4
4
|
|
|
5
5
|
//#region src/database/repositories/user.ts
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { n as slugify } from "./slugify-
|
|
1
|
+
import { n as slugify } from "./slugify-KSsVD_D3.mjs";
|
|
2
|
+
import { o as RESERVED_FIELD_SLUGS } from "./types-B3t5cxhU.mjs";
|
|
2
3
|
import mime from "mime/lite";
|
|
3
4
|
|
|
4
5
|
//#region src/import/utils.ts
|
|
5
|
-
/**
|
|
6
|
-
* Shared import utilities
|
|
7
|
-
*
|
|
8
|
-
* Common constants and functions used across all WordPress import sources.
|
|
9
|
-
*/
|
|
10
6
|
/** Internal WordPress post types that should be excluded from import */
|
|
11
7
|
const INTERNAL_POST_TYPES = [
|
|
12
8
|
"revision",
|
|
@@ -26,6 +22,10 @@ const INTERNAL_META_PREFIXES = ["_edit_", "_wp_"];
|
|
|
26
22
|
const NUMERIC_PATTERN = /^-?\d+(\.\d+)?$/;
|
|
27
23
|
const TRAILING_SLASHES = /\/+$/;
|
|
28
24
|
const WP_JSON_SUFFIX = /\/wp-json\/?.*$/;
|
|
25
|
+
const REGEX_SPECIALS = /[.*+?^${}()|[\]\\]/g;
|
|
26
|
+
const LEADING_WWW = /^www\./;
|
|
27
|
+
const INVALID_FIELD_SLUG_CHARS = /[^a-z0-9_]+/g;
|
|
28
|
+
const LEADING_NON_ALPHA_CHARS = /^[^a-z]+/;
|
|
29
29
|
/** Specific internal meta keys */
|
|
30
30
|
const INTERNAL_META_KEYS = [
|
|
31
31
|
"_edit_last",
|
|
@@ -33,6 +33,46 @@ const INTERNAL_META_KEYS = [
|
|
|
33
33
|
"_pingme",
|
|
34
34
|
"_encloseme"
|
|
35
35
|
];
|
|
36
|
+
/** Plugin meta prefixes that are operational/bookkeeping data, not content fields */
|
|
37
|
+
const PLUGIN_META_PREFIXES = [
|
|
38
|
+
"aawp_",
|
|
39
|
+
"algolia_",
|
|
40
|
+
"amazon_polly_",
|
|
41
|
+
"ampforwp_",
|
|
42
|
+
"classifai_",
|
|
43
|
+
"essb_",
|
|
44
|
+
"eg_",
|
|
45
|
+
"gnpub_",
|
|
46
|
+
"jetpack_",
|
|
47
|
+
"mashsb_",
|
|
48
|
+
"monsterinsights_",
|
|
49
|
+
"onesignal_",
|
|
50
|
+
"penci_",
|
|
51
|
+
"perfmatters_",
|
|
52
|
+
"pys_",
|
|
53
|
+
"rank_math_",
|
|
54
|
+
"rp4wp_",
|
|
55
|
+
"saswp_",
|
|
56
|
+
"sbg_",
|
|
57
|
+
"snap_",
|
|
58
|
+
"spay_",
|
|
59
|
+
"tie_",
|
|
60
|
+
"wl_",
|
|
61
|
+
"wpil_",
|
|
62
|
+
"wprm_",
|
|
63
|
+
"wpswa_",
|
|
64
|
+
"wpuf_",
|
|
65
|
+
"yarpp_"
|
|
66
|
+
];
|
|
67
|
+
/** Specific plugin meta keys that should not become Dineway fields */
|
|
68
|
+
const PLUGIN_META_KEYS = new Set([
|
|
69
|
+
"entity_same_as",
|
|
70
|
+
"exclude_from_search",
|
|
71
|
+
"footnotes",
|
|
72
|
+
"inline_featured_image",
|
|
73
|
+
"os_meta",
|
|
74
|
+
"thirstydata"
|
|
75
|
+
]);
|
|
36
76
|
/** Base fields required for any WordPress import */
|
|
37
77
|
const BASE_REQUIRED_FIELDS = [
|
|
38
78
|
{
|
|
@@ -82,6 +122,23 @@ function isInternalMetaKey(key) {
|
|
|
82
122
|
return false;
|
|
83
123
|
}
|
|
84
124
|
/**
|
|
125
|
+
* Check if a plugin-provided custom field is bookkeeping rather than content.
|
|
126
|
+
*/
|
|
127
|
+
function isPluginBookkeepingMeta(key) {
|
|
128
|
+
const normalized = key.replaceAll("-", "_");
|
|
129
|
+
if (PLUGIN_META_KEYS.has(normalized)) return true;
|
|
130
|
+
return PLUGIN_META_PREFIXES.some((prefix) => normalized.startsWith(prefix));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Convert a source custom field key into a valid Dineway field slug.
|
|
134
|
+
*/
|
|
135
|
+
function sanitizeFieldSlug(key) {
|
|
136
|
+
const sanitized = key.toLowerCase().replace(INVALID_FIELD_SLUG_CHARS, "_").replace(LEADING_NON_ALPHA_CHARS, "").slice(0, 63);
|
|
137
|
+
if (!sanitized) return "field";
|
|
138
|
+
if (RESERVED_FIELD_SLUGS.includes(sanitized)) return `wp_${sanitized}`;
|
|
139
|
+
return sanitized;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
85
142
|
* Map WordPress status to normalized status
|
|
86
143
|
*/
|
|
87
144
|
function mapWpStatus(status) {
|
|
@@ -143,6 +200,71 @@ function inferMetaType(key, value) {
|
|
|
143
200
|
return "string";
|
|
144
201
|
}
|
|
145
202
|
/**
|
|
203
|
+
* Turn an absolute URL into a root-relative one when it points at the source
|
|
204
|
+
* site. External links, non-http(s) schemes, and `/wp-content/` media URLs are
|
|
205
|
+
* left untouched so the later media pass can still map old media URLs.
|
|
206
|
+
*/
|
|
207
|
+
function relativizeUrl(url, sourceHost) {
|
|
208
|
+
if (!url.startsWith("http://") && !url.startsWith("https://")) return null;
|
|
209
|
+
try {
|
|
210
|
+
const parsed = new URL(url);
|
|
211
|
+
if (parsed.hostname.replace(LEADING_WWW, "") !== sourceHost) return null;
|
|
212
|
+
if (parsed.pathname.startsWith("/wp-content/")) return null;
|
|
213
|
+
return `${parsed.pathname}${parsed.search}${parsed.hash}` || "/";
|
|
214
|
+
} catch {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function relativizeMarkDefs(markDefs, sourceHost) {
|
|
219
|
+
for (const def of markDefs ?? []) if (def._type === "link" && typeof def.href === "string") def.href = relativizeUrl(def.href, sourceHost) ?? def.href;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Rewrite internal links in imported content to root-relative URLs, in place.
|
|
223
|
+
* This prevents migrated posts from linking back to the old WordPress domain.
|
|
224
|
+
*/
|
|
225
|
+
function relativizeContentLinks(blocks, siteUrl) {
|
|
226
|
+
let sourceHost;
|
|
227
|
+
try {
|
|
228
|
+
sourceHost = new URL(siteUrl).hostname.replace(LEADING_WWW, "");
|
|
229
|
+
} catch {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const hrefPattern = new RegExp(`href=(["']?)https?://(?:www\\.)?${sourceHost.replace(REGEX_SPECIALS, "\\$&")}(/[^"'\\s>]*)?\\1`, "gi");
|
|
233
|
+
for (const block of blocks) switch (block._type) {
|
|
234
|
+
case "block":
|
|
235
|
+
relativizeMarkDefs(block.markDefs, sourceHost);
|
|
236
|
+
break;
|
|
237
|
+
case "image":
|
|
238
|
+
if (block.link) block.link = relativizeUrl(block.link, sourceHost) ?? block.link;
|
|
239
|
+
break;
|
|
240
|
+
case "table":
|
|
241
|
+
for (const row of block.rows) for (const cell of row.cells) relativizeMarkDefs(cell.markDefs, sourceHost);
|
|
242
|
+
break;
|
|
243
|
+
case "columns":
|
|
244
|
+
for (const column of block.columns) relativizeContentLinks(column.content, siteUrl);
|
|
245
|
+
break;
|
|
246
|
+
case "cover":
|
|
247
|
+
relativizeContentLinks(block.content, siteUrl);
|
|
248
|
+
break;
|
|
249
|
+
case "button":
|
|
250
|
+
if (block.url) block.url = relativizeUrl(block.url, sourceHost) ?? block.url;
|
|
251
|
+
break;
|
|
252
|
+
case "buttons":
|
|
253
|
+
for (const button of block.buttons) if (button.url) button.url = relativizeUrl(button.url, sourceHost) ?? button.url;
|
|
254
|
+
break;
|
|
255
|
+
case "htmlBlock":
|
|
256
|
+
block.html = block.html.replace(hrefPattern, (_match, _quote, path) => `href="${path || "/"}"`);
|
|
257
|
+
break;
|
|
258
|
+
case "break":
|
|
259
|
+
case "code":
|
|
260
|
+
case "embed":
|
|
261
|
+
case "file":
|
|
262
|
+
case "gallery":
|
|
263
|
+
case "pullquote": break;
|
|
264
|
+
default:
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
146
268
|
* Normalize URL for API requests
|
|
147
269
|
*/
|
|
148
270
|
function normalizeUrl(url) {
|
|
@@ -282,4 +404,4 @@ function checkSchemaCompatibility(requiredFields, existingCollection) {
|
|
|
282
404
|
}
|
|
283
405
|
|
|
284
406
|
//#endregion
|
|
285
|
-
export { getFilenameFromUrl as a, isInternalMetaKey as c,
|
|
407
|
+
export { sanitizeFieldSlug as _, getFilenameFromUrl as a, isInternalMetaKey as c, mapMetaKeyToField as d, mapPostTypeToCollection as f, resolveImportByline as g, relativizeContentLinks as h, checkSchemaCompatibility as i, isInternalPostType as l, normalizeUrl as m, FEATURED_IMAGE_FIELD as n, guessMimeType as o, mapWpStatus as p, buildAttachmentMap as r, inferMetaType as s, BASE_REQUIRED_FIELDS as t, isPluginBookkeepingMeta as u };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { d as FieldType } from "./types-
|
|
2
|
-
import { t as Database } from "./types-
|
|
3
|
-
import { d as Storage } from "./types-
|
|
4
|
-
import { i as SiteSettings } from "./types-
|
|
1
|
+
import { d as FieldType } from "./types-DW_-sFyz.mjs";
|
|
2
|
+
import { t as Database } from "./types-DU0bU2Wu.mjs";
|
|
3
|
+
import { d as Storage } from "./types-POH8PQZh.mjs";
|
|
4
|
+
import { i as SiteSettings } from "./types-C46EvNdc.mjs";
|
|
5
5
|
import { Kysely } from "kysely";
|
|
6
6
|
|
|
7
7
|
//#region src/seed/types.d.ts
|
|
@@ -138,8 +138,8 @@ interface SeedMenuItem {
|
|
|
138
138
|
*/
|
|
139
139
|
interface SeedRedirect {
|
|
140
140
|
source: string;
|
|
141
|
-
destination
|
|
142
|
-
type?: 301 | 302 | 307 | 308;
|
|
141
|
+
destination?: string;
|
|
142
|
+
type?: 301 | 302 | 307 | 308 | 410 | 451;
|
|
143
143
|
enabled?: boolean;
|
|
144
144
|
groupName?: string | null;
|
|
145
145
|
}
|
|
@@ -247,7 +247,10 @@ interface SeedBylineCredit {
|
|
|
247
247
|
* Options for applying a seed
|
|
248
248
|
*/
|
|
249
249
|
interface SeedApplyOptions {
|
|
250
|
-
/**
|
|
250
|
+
/**
|
|
251
|
+
* Include sample data: content entries, bylines, and taxonomy terms
|
|
252
|
+
* (default: false). Schema and structure are always applied.
|
|
253
|
+
*/
|
|
251
254
|
includeContent?: boolean;
|
|
252
255
|
/** How to handle conflicts (default: "skip") */
|
|
253
256
|
onConflict?: "skip" | "update" | "error";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as __exportAll } from "./runner-
|
|
2
|
-
import { n as FIELD_TYPES } from "./types-
|
|
1
|
+
import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
|
|
2
|
+
import { n as FIELD_TYPES } from "./types-B3t5cxhU.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/seed/validate.ts
|
|
5
5
|
/**
|
|
@@ -14,8 +14,11 @@ const REDIRECT_TYPES = new Set([
|
|
|
14
14
|
301,
|
|
15
15
|
302,
|
|
16
16
|
307,
|
|
17
|
-
308
|
|
17
|
+
308,
|
|
18
|
+
410,
|
|
19
|
+
451
|
|
18
20
|
]);
|
|
21
|
+
const TERMINAL_REDIRECT_TYPES = new Set([410, 451]);
|
|
19
22
|
const CRLF_PATTERN = /[\r\n]/;
|
|
20
23
|
/** Type guard for Record<string, unknown> */
|
|
21
24
|
function isRecord(value) {
|
|
@@ -151,16 +154,18 @@ function validateSeed(data) {
|
|
|
151
154
|
}
|
|
152
155
|
const source = typeof redirect.source === "string" ? redirect.source : void 0;
|
|
153
156
|
const destination = typeof redirect.destination === "string" ? redirect.destination : void 0;
|
|
157
|
+
const type = typeof redirect.type === "number" ? redirect.type : void 0;
|
|
158
|
+
const terminal = TERMINAL_REDIRECT_TYPES.has(type ?? 301);
|
|
154
159
|
if (!source) errors.push(`${prefix}: source is required`);
|
|
155
160
|
else {
|
|
156
161
|
if (!isValidRedirectPath(source)) errors.push(`${prefix}.source: must be a path starting with / (no protocol-relative URLs, path traversal, or newlines)`);
|
|
157
162
|
if (redirectSources.has(source)) errors.push(`${prefix}.source: duplicate redirect source "${source}"`);
|
|
158
163
|
redirectSources.add(source);
|
|
159
164
|
}
|
|
160
|
-
if (!destination) errors.push(`${prefix}: destination is required`);
|
|
161
|
-
else if (!isValidRedirectPath(destination)) errors.push(`${prefix}.destination: must be a path starting with / (no protocol-relative URLs, path traversal, or newlines)`);
|
|
165
|
+
if (!terminal && !destination) errors.push(`${prefix}: destination is required`);
|
|
166
|
+
else if (destination && !isValidRedirectPath(destination)) errors.push(`${prefix}.destination: must be a path starting with / (no protocol-relative URLs, path traversal, or newlines)`);
|
|
162
167
|
if (redirect.type !== void 0) {
|
|
163
|
-
if (typeof redirect.type !== "number" || !REDIRECT_TYPES.has(redirect.type)) errors.push(`${prefix}.type: must be 301, 302, 307, or
|
|
168
|
+
if (typeof redirect.type !== "number" || !REDIRECT_TYPES.has(redirect.type)) errors.push(`${prefix}.type: must be 301, 302, 307, 308, 410, or 451`);
|
|
164
169
|
}
|
|
165
170
|
if (redirect.enabled !== void 0 && typeof redirect.enabled !== "boolean") errors.push(`${prefix}.enabled: must be a boolean`);
|
|
166
171
|
if (redirect.groupName !== void 0 && typeof redirect.groupName !== "string" && redirect.groupName !== null) errors.push(`${prefix}.groupName: must be a string or null`);
|
|
@@ -1,53 +1,56 @@
|
|
|
1
|
-
import { r as getDb } from "./loader-
|
|
2
|
-
import {
|
|
1
|
+
import { r as getDb } from "./loader-CjWqjweO.mjs";
|
|
2
|
+
import { r as requestCached } from "./request-cache-D9GQBxMP.mjs";
|
|
3
|
+
import { t as getWidgetComponents$1 } from "./components-Bclf98Be.mjs";
|
|
3
4
|
|
|
4
5
|
//#region src/widgets/index.ts
|
|
5
6
|
/**
|
|
6
7
|
* Get a widget area by name, with all its widgets
|
|
7
8
|
*/
|
|
8
9
|
async function getWidgetArea(name) {
|
|
9
|
-
|
|
10
|
-
"a.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
10
|
+
return requestCached(`widget-area:${name}`, async () => {
|
|
11
|
+
const rows = await (await getDb()).selectFrom("_dineway_widget_areas as a").leftJoin("_dineway_widgets as w", "w.area_id", "a.id").select([
|
|
12
|
+
"a.id as a_id",
|
|
13
|
+
"a.name as a_name",
|
|
14
|
+
"a.label as a_label",
|
|
15
|
+
"a.description as a_description",
|
|
16
|
+
"w.id as w_id",
|
|
17
|
+
"w.type as w_type",
|
|
18
|
+
"w.title as w_title",
|
|
19
|
+
"w.content as w_content",
|
|
20
|
+
"w.menu_name as w_menu_name",
|
|
21
|
+
"w.component_id as w_component_id",
|
|
22
|
+
"w.component_props as w_component_props",
|
|
23
|
+
"w.area_id as w_area_id",
|
|
24
|
+
"w.sort_order as w_sort_order",
|
|
25
|
+
"w.created_at as w_created_at"
|
|
26
|
+
]).where("a.name", "=", name).orderBy("w.sort_order", "asc").execute();
|
|
27
|
+
const first = rows[0];
|
|
28
|
+
if (!first) return null;
|
|
29
|
+
const widgets = [];
|
|
30
|
+
for (const row of rows) {
|
|
31
|
+
if (!row.w_id || !isWidgetType(row.w_type) || !row.w_area_id || row.w_sort_order === null || !row.w_created_at) continue;
|
|
32
|
+
const widgetRow = {
|
|
33
|
+
id: row.w_id,
|
|
34
|
+
type: row.w_type,
|
|
35
|
+
title: row.w_title,
|
|
36
|
+
content: row.w_content,
|
|
37
|
+
menu_name: row.w_menu_name,
|
|
38
|
+
component_id: row.w_component_id,
|
|
39
|
+
component_props: row.w_component_props,
|
|
40
|
+
area_id: row.w_area_id,
|
|
41
|
+
sort_order: row.w_sort_order,
|
|
42
|
+
created_at: row.w_created_at
|
|
43
|
+
};
|
|
44
|
+
widgets.push(rowToWidget(widgetRow));
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
id: first.a_id,
|
|
48
|
+
name: first.a_name,
|
|
49
|
+
label: first.a_label,
|
|
50
|
+
description: first.a_description ?? void 0,
|
|
51
|
+
widgets
|
|
41
52
|
};
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
id: first.a_id,
|
|
46
|
-
name: first.a_name,
|
|
47
|
-
label: first.a_label,
|
|
48
|
-
description: first.a_description ?? void 0,
|
|
49
|
-
widgets
|
|
50
|
-
};
|
|
53
|
+
});
|
|
51
54
|
}
|
|
52
55
|
function isWidgetType(value) {
|
|
53
56
|
return value === "content" || value === "menu" || value === "component";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as __exportAll } from "./runner-
|
|
1
|
+
import { a as __exportAll } from "./runner-DB7CRfOF.mjs";
|
|
2
2
|
import { n as hashString } from "./hash-BPmX6P8I.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
@@ -6,7 +6,8 @@ import { z } from "zod";
|
|
|
6
6
|
var zod_generator_exports = /* @__PURE__ */ __exportAll({
|
|
7
7
|
generateSchemaHash: () => generateSchemaHash,
|
|
8
8
|
generateTypeScript: () => generateTypeScript,
|
|
9
|
-
generateTypesFile: () => generateTypesFile
|
|
9
|
+
generateTypesFile: () => generateTypesFile,
|
|
10
|
+
uniqueInterfaceNames: () => uniqueInterfaceNames
|
|
10
11
|
});
|
|
11
12
|
/** Pattern to split on underscores, hyphens, and spaces for PascalCase conversion */
|
|
12
13
|
const PASCAL_CASE_SPLIT_PATTERN = /[_\-\s]+/;
|
|
@@ -14,8 +15,7 @@ const PASCAL_CASE_SPLIT_PATTERN = /[_\-\s]+/;
|
|
|
14
15
|
* Generate TypeScript interface from field definitions
|
|
15
16
|
* Used by CLI `dineway types` to generate types
|
|
16
17
|
*/
|
|
17
|
-
function generateTypeScript(collection) {
|
|
18
|
-
const interfaceName = getInterfaceName(collection);
|
|
18
|
+
function generateTypeScript(collection, interfaceName = getInterfaceName(collection)) {
|
|
19
19
|
const lines = [];
|
|
20
20
|
lines.push(`export interface ${interfaceName} {`);
|
|
21
21
|
lines.push(` id: string;`);
|
|
@@ -50,16 +50,14 @@ function generateTypesFile(collections) {
|
|
|
50
50
|
if (needsPortableText) imports.push("PortableTextBlock");
|
|
51
51
|
lines.push(`import type { ${imports.join(", ")} } from "dineway";`);
|
|
52
52
|
lines.push(``);
|
|
53
|
+
const interfaceNames = uniqueInterfaceNames(collections);
|
|
53
54
|
for (const collection of collections) {
|
|
54
|
-
lines.push(generateTypeScript(collection));
|
|
55
|
+
lines.push(generateTypeScript(collection, interfaceNames.get(collection.slug)));
|
|
55
56
|
lines.push(``);
|
|
56
57
|
}
|
|
57
58
|
lines.push(`declare module "dineway" {`);
|
|
58
59
|
lines.push(` interface DinewayCollections {`);
|
|
59
|
-
for (const collection of collections) {
|
|
60
|
-
const interfaceName = getInterfaceName(collection);
|
|
61
|
-
lines.push(` ${collection.slug}: ${interfaceName};`);
|
|
62
|
-
}
|
|
60
|
+
for (const collection of collections) lines.push(` ${collection.slug}: ${interfaceNames.get(collection.slug)};`);
|
|
63
61
|
lines.push(` }`);
|
|
64
62
|
lines.push(`}`);
|
|
65
63
|
return lines.join("\n");
|
|
@@ -114,7 +112,8 @@ function pascalCase(str) {
|
|
|
114
112
|
return str.split(PASCAL_CASE_SPLIT_PATTERN).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join("");
|
|
115
113
|
}
|
|
116
114
|
/**
|
|
117
|
-
*
|
|
115
|
+
* Naive singularization for slug-derived interface names. Handles common
|
|
116
|
+
* English plural endings; intentionally simple, not a full inflector.
|
|
118
117
|
*/
|
|
119
118
|
function singularize(str) {
|
|
120
119
|
if (str.endsWith("ies")) return str.slice(0, -3) + "y";
|
|
@@ -123,11 +122,40 @@ function singularize(str) {
|
|
|
123
122
|
return str;
|
|
124
123
|
}
|
|
125
124
|
/**
|
|
126
|
-
* Get the interface name for a collection
|
|
125
|
+
* Get the interface name for a collection.
|
|
126
|
+
*
|
|
127
|
+
* Derived from the slug, not the human label. Slugs are constrained to
|
|
128
|
+
* /^[a-z][a-z0-9_]*$/, so PascalCasing one always yields a valid TypeScript
|
|
129
|
+
* identifier. Labels are arbitrary user-facing text and may contain spaces,
|
|
130
|
+
* punctuation, or duplicates across collections.
|
|
131
|
+
*
|
|
132
|
+
* The slug is singularized first because the interface describes one entry,
|
|
133
|
+
* not the collection. Callers emitting more than one interface should use
|
|
134
|
+
* uniqueInterfaceNames() to resolve collisions introduced by singularization.
|
|
127
135
|
*/
|
|
128
136
|
function getInterfaceName(collection) {
|
|
129
|
-
return pascalCase(
|
|
137
|
+
return pascalCase(singularize(collection.slug));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Resolve interface names for a set of collections, guaranteeing each emitted
|
|
141
|
+
* identifier is unique within the generated file.
|
|
142
|
+
*/
|
|
143
|
+
function uniqueInterfaceNames(collections) {
|
|
144
|
+
const used = /* @__PURE__ */ new Set();
|
|
145
|
+
const names = /* @__PURE__ */ new Map();
|
|
146
|
+
for (const collection of collections) {
|
|
147
|
+
const base = getInterfaceName(collection);
|
|
148
|
+
let name = base;
|
|
149
|
+
let suffix = 2;
|
|
150
|
+
while (used.has(name)) {
|
|
151
|
+
name = `${base}${suffix}`;
|
|
152
|
+
suffix++;
|
|
153
|
+
}
|
|
154
|
+
used.add(name);
|
|
155
|
+
names.set(collection.slug, name);
|
|
156
|
+
}
|
|
157
|
+
return names;
|
|
130
158
|
}
|
|
131
159
|
|
|
132
160
|
//#endregion
|
|
133
|
-
export {
|
|
161
|
+
export { uniqueInterfaceNames as n, zod_generator_exports as r, generateTypeScript as t };
|