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.
Files changed (420) hide show
  1. package/dist/{activity-events-C9u37D5z.mjs → activity-events-y6eT8UW6.mjs} +6 -38
  2. package/dist/actor-CrObAPV0.mjs +37 -0
  3. package/dist/after-BfniwgIf.mjs +9 -0
  4. package/dist/{allowed-origins-DhipQNLb.mjs → allowed-origins-_oeyP6x-.mjs} +1 -1
  5. package/dist/api/route-utils.d.mts +10 -10
  6. package/dist/api/route-utils.mjs +17 -14
  7. package/dist/api/schemas/index.d.mts +2 -2
  8. package/dist/api/schemas/index.mjs +5 -4
  9. package/dist/{api-Eiy8_zVZ.mjs → api-ByrU2q-Z.mjs} +61 -37
  10. package/dist/{api-tokens-DtvdtIkm.mjs → api-tokens-CjVMQT-X.mjs} +6 -2
  11. package/dist/{apply-CX3no7XE.mjs → apply-bZswmZPm.mjs} +117 -77
  12. package/dist/astro/image-endpoint.d.mts +7 -0
  13. package/dist/astro/image-endpoint.mjs +54 -0
  14. package/dist/astro/index.d.mts +35 -11
  15. package/dist/astro/index.mjs +157 -23
  16. package/dist/astro/integration/shims/use-sync-external-store-with-selector.js +71 -0
  17. package/dist/astro/integration/shims/use-sync-external-store.js +1 -0
  18. package/dist/astro/middleware/auth.d.mts +10 -10
  19. package/dist/astro/middleware/auth.mjs +42 -24
  20. package/dist/astro/middleware/redirect.mjs +14 -5
  21. package/dist/astro/middleware/request-context.mjs +9 -6
  22. package/dist/astro/middleware/seed.d.mts +1 -1
  23. package/dist/astro/middleware/seed.mjs +2 -2
  24. package/dist/astro/middleware/setup.mjs +1 -1
  25. package/dist/astro/middleware.mjs +334 -193
  26. package/dist/astro/routes/admin.astro +6 -1
  27. package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -6
  28. package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -6
  29. package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
  30. package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
  31. package/dist/astro/routes/api/admin/briefing.mjs +22 -18
  32. package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +4 -4
  33. package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +9 -8
  34. package/dist/astro/routes/api/admin/byline-fields/index.mjs +9 -8
  35. package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +9 -8
  36. package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +18 -15
  37. package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +18 -15
  38. package/dist/astro/routes/api/admin/bylines/index.mjs +18 -15
  39. package/dist/astro/routes/api/admin/comments/_id_/status.mjs +15 -13
  40. package/dist/astro/routes/api/admin/comments/_id_.mjs +7 -6
  41. package/dist/astro/routes/api/admin/comments/bulk.mjs +12 -10
  42. package/dist/astro/routes/api/admin/comments/counts.mjs +7 -6
  43. package/dist/astro/routes/api/admin/comments/index.mjs +12 -10
  44. package/dist/astro/routes/api/admin/context/_id_/history.mjs +27 -25
  45. package/dist/astro/routes/api/admin/context/_id_/index.mjs +27 -25
  46. package/dist/astro/routes/api/admin/context/_id_/review.mjs +32 -29
  47. package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +32 -29
  48. package/dist/astro/routes/api/admin/context/diff.mjs +31 -28
  49. package/dist/astro/routes/api/admin/context/index.mjs +32 -29
  50. package/dist/astro/routes/api/admin/context/stale.mjs +31 -28
  51. package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +27 -25
  52. package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +31 -28
  53. package/dist/astro/routes/api/admin/hitl-requests/index.mjs +31 -28
  54. package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +28 -26
  55. package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
  56. package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +6 -6
  57. package/dist/astro/routes/api/admin/oauth-clients/index.mjs +6 -6
  58. package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +56 -52
  59. package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +56 -52
  60. package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +48 -44
  61. package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +54 -50
  62. package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +53 -49
  63. package/dist/astro/routes/api/admin/plugins/index.mjs +48 -44
  64. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
  65. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +47 -43
  66. package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +53 -49
  67. package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +47 -43
  68. package/dist/astro/routes/api/admin/plugins/updates.mjs +47 -43
  69. package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +6 -6
  70. package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +32 -28
  71. package/dist/astro/routes/api/admin/review-requests/index.mjs +11 -10
  72. package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +47 -43
  73. package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
  74. package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +47 -43
  75. package/dist/astro/routes/api/admin/users/_id_/disable.mjs +3 -3
  76. package/dist/astro/routes/api/admin/users/_id_/enable.mjs +2 -2
  77. package/dist/astro/routes/api/admin/users/_id_/index.mjs +8 -7
  78. package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +4 -4
  79. package/dist/astro/routes/api/admin/users/index.mjs +7 -6
  80. package/dist/astro/routes/api/auth/dev-bypass.mjs +4 -4
  81. package/dist/astro/routes/api/auth/invite/accept.mjs +2 -2
  82. package/dist/astro/routes/api/auth/invite/complete.mjs +12 -11
  83. package/dist/astro/routes/api/auth/invite/index.mjs +9 -8
  84. package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -10
  85. package/dist/astro/routes/api/auth/logout.mjs +2 -2
  86. package/dist/astro/routes/api/auth/magic-link/send.mjs +11 -10
  87. package/dist/astro/routes/api/auth/magic-link/verify.mjs +3 -3
  88. package/dist/astro/routes/api/auth/me.mjs +10 -9
  89. package/dist/astro/routes/api/auth/mode.mjs +1 -1
  90. package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +3 -3
  91. package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
  92. package/dist/astro/routes/api/auth/passkey/_id_.mjs +6 -5
  93. package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
  94. package/dist/astro/routes/api/auth/passkey/options.mjs +12 -11
  95. package/dist/astro/routes/api/auth/passkey/register/options.mjs +10 -9
  96. package/dist/astro/routes/api/auth/passkey/register/verify.mjs +11 -10
  97. package/dist/astro/routes/api/auth/passkey/verify.mjs +11 -10
  98. package/dist/astro/routes/api/auth/setup-token/index.mjs +6 -6
  99. package/dist/astro/routes/api/auth/setup-token/verify.mjs +2 -2
  100. package/dist/astro/routes/api/auth/signup/complete.mjs +12 -11
  101. package/dist/astro/routes/api/auth/signup/request.mjs +11 -10
  102. package/dist/astro/routes/api/auth/signup/verify.mjs +2 -2
  103. package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +16 -14
  104. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.d.mts +8 -0
  105. package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +160 -0
  106. package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
  107. package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -6
  108. package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +6 -6
  109. package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +6 -6
  110. package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +12 -11
  111. package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +11 -10
  112. package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +6 -6
  113. package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
  114. package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +11 -10
  115. package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +17 -15
  116. package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
  117. package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -6
  118. package/dist/astro/routes/api/content/_collection_/_id_.mjs +11 -10
  119. package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
  120. package/dist/astro/routes/api/content/_collection_/index.mjs +11 -10
  121. package/dist/astro/routes/api/content/_collection_/trash.mjs +7 -6
  122. package/dist/astro/routes/api/dashboard.mjs +10 -9
  123. package/dist/astro/routes/api/dev/emails.mjs +2 -2
  124. package/dist/astro/routes/api/health.mjs +1 -1
  125. package/dist/astro/routes/api/import/probe.d.mts +3 -3
  126. package/dist/astro/routes/api/import/probe.mjs +23 -11
  127. package/dist/astro/routes/api/import/wordpress/analyze.mjs +9 -6
  128. package/dist/astro/routes/api/import/wordpress/execute.d.mts +19 -1
  129. package/dist/astro/routes/api/import/wordpress/execute.mjs +85 -38
  130. package/dist/astro/routes/api/import/wordpress/media.d.mts +13 -1
  131. package/dist/astro/routes/api/import/wordpress/media.mjs +20 -14
  132. package/dist/astro/routes/api/import/wordpress/prepare.mjs +36 -33
  133. package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +18 -1
  134. package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +121 -101
  135. package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
  136. package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -13
  137. package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
  138. package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +56 -2
  139. package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +284 -56
  140. package/dist/astro/routes/api/manifest.mjs +14 -5
  141. package/dist/astro/routes/api/mcp.mjs +266 -70
  142. package/dist/astro/routes/api/media/_id_/confirm.mjs +39 -11
  143. package/dist/astro/routes/api/media/_id_.mjs +11 -7
  144. package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
  145. package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
  146. package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
  147. package/dist/astro/routes/api/media/providers/index.mjs +2 -2
  148. package/dist/astro/routes/api/media/upload-url.mjs +12 -11
  149. package/dist/astro/routes/api/media.mjs +28 -35
  150. package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +32 -29
  151. package/dist/astro/routes/api/menus/_name_/items.mjs +32 -29
  152. package/dist/astro/routes/api/menus/_name_/reorder.mjs +32 -29
  153. package/dist/astro/routes/api/menus/_name_/translations.mjs +32 -29
  154. package/dist/astro/routes/api/menus/_name_.mjs +32 -29
  155. package/dist/astro/routes/api/menus/index.mjs +32 -29
  156. package/dist/astro/routes/api/oauth/authorize.mjs +7 -7
  157. package/dist/astro/routes/api/oauth/device/authorize.mjs +6 -6
  158. package/dist/astro/routes/api/oauth/device/code.mjs +9 -9
  159. package/dist/astro/routes/api/oauth/device/token.mjs +8 -8
  160. package/dist/astro/routes/api/oauth/register.mjs +4 -4
  161. package/dist/astro/routes/api/oauth/token/refresh.mjs +6 -6
  162. package/dist/astro/routes/api/oauth/token/revoke.mjs +6 -6
  163. package/dist/astro/routes/api/oauth/token.mjs +6 -6
  164. package/dist/astro/routes/api/openapi.json.mjs +4 -3
  165. package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +30 -30
  166. package/dist/astro/routes/api/redirects/404s/index.mjs +12 -11
  167. package/dist/astro/routes/api/redirects/404s/summary.mjs +12 -11
  168. package/dist/astro/routes/api/redirects/_id_.mjs +33 -30
  169. package/dist/astro/routes/api/redirects/index.mjs +33 -30
  170. package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
  171. package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
  172. package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +48 -44
  173. package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +48 -44
  174. package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +48 -44
  175. package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +48 -44
  176. package/dist/astro/routes/api/schema/collections/index.mjs +48 -44
  177. package/dist/astro/routes/api/schema/index.mjs +13 -14
  178. package/dist/astro/routes/api/schema/orphans/_slug_.mjs +47 -43
  179. package/dist/astro/routes/api/schema/orphans/index.mjs +47 -43
  180. package/dist/astro/routes/api/search/enable.mjs +12 -11
  181. package/dist/astro/routes/api/search/index.mjs +11 -10
  182. package/dist/astro/routes/api/search/rebuild.mjs +12 -11
  183. package/dist/astro/routes/api/search/stats.mjs +7 -7
  184. package/dist/astro/routes/api/search/suggest.mjs +11 -10
  185. package/dist/astro/routes/api/sections/_slug_.mjs +32 -29
  186. package/dist/astro/routes/api/sections/index.mjs +32 -29
  187. package/dist/astro/routes/api/settings/email.mjs +4 -4
  188. package/dist/astro/routes/api/settings.mjs +32 -29
  189. package/dist/astro/routes/api/setup/admin-verify.mjs +14 -13
  190. package/dist/astro/routes/api/setup/admin.mjs +12 -11
  191. package/dist/astro/routes/api/setup/dev-bypass.mjs +32 -26
  192. package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
  193. package/dist/astro/routes/api/setup/index.mjs +30 -26
  194. package/dist/astro/routes/api/setup/status.mjs +3 -3
  195. package/dist/astro/routes/api/snapshot.mjs +9 -8
  196. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +35 -32
  197. package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +35 -32
  198. package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +35 -32
  199. package/dist/astro/routes/api/taxonomies/index.mjs +35 -32
  200. package/dist/astro/routes/api/themes/preview.mjs +6 -6
  201. package/dist/astro/routes/api/typegen.mjs +4 -4
  202. package/dist/astro/routes/api/well-known/auth.mjs +3 -3
  203. package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
  204. package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
  205. package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +31 -28
  206. package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +32 -29
  207. package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +32 -29
  208. package/dist/astro/routes/api/widget-areas/_name_.mjs +29 -27
  209. package/dist/astro/routes/api/widget-areas/index.mjs +32 -29
  210. package/dist/astro/routes/api/widget-components.mjs +2 -2
  211. package/dist/astro/routes/robots.txt.mjs +9 -8
  212. package/dist/astro/routes/sitemap-_collection_.xml.mjs +24 -15
  213. package/dist/astro/routes/sitemap.xml.mjs +10 -9
  214. package/dist/astro/session-driver.d.mts +1 -1
  215. package/dist/astro/session-driver.mjs +3 -3
  216. package/dist/astro/types.d.mts +21 -13
  217. package/dist/{audit-D1cbG7xH.mjs → audit-ByVKIwWF.mjs} +1 -1
  218. package/dist/auth/providers/github.d.mts +1 -1
  219. package/dist/auth/providers/google.d.mts +1 -1
  220. package/dist/{auth-control-guard-Dr14I98m.mjs → auth-control-guard-CqeUmQsv.mjs} +1 -1
  221. package/dist/{authorize-BLO0m7fW.mjs → authorize-CcBxcHtz.mjs} +1 -1
  222. package/dist/{briefing-CObXGOGz.mjs → briefing-BJaJI8dm.mjs} +2 -1
  223. package/dist/{briefing-gKWiGLt1.mjs → briefing-CawZ59CY.mjs} +90 -28
  224. package/dist/bundle-7C_DpkEq.mjs +602 -0
  225. package/dist/{byline-1ntDwv8c.mjs → byline-e51-fWRs.mjs} +30 -62
  226. package/dist/{byline-fields-BX7rWKNU.d.mts → byline-fields-CUvbslGc.d.mts} +49 -6
  227. package/dist/{byline-fields-C9_iaPaM.mjs → byline-fields-D-N5qVIG.mjs} +1 -1
  228. package/dist/{byline-fields-B-ZkoVft.mjs → byline-fields-DOJO16Gm.mjs} +3 -3
  229. package/dist/{byline-registry-CUSvkasJ.mjs → byline-registry-87nNnYl4.mjs} +2 -2
  230. package/dist/{bylines-bC15ZqAv.mjs → bylines-CMQNCNFh.mjs} +9 -3
  231. package/dist/{bylines-DtxChhN_.mjs → bylines-y4LO-dTj.mjs} +5 -5
  232. package/dist/{cache-DbKyr60Q.mjs → cache-C-FNTFYK.mjs} +2 -2
  233. package/dist/{chunks-C5zp2xir.mjs → chunks-CxBt-GxR.mjs} +1 -1
  234. package/dist/cli/index.mjs +820 -1276
  235. package/dist/client/external-auth-headers.d.mts +1 -1
  236. package/dist/client/index.d.mts +1 -1
  237. package/dist/client/index.mjs +2 -1
  238. package/dist/{comment-CXDOQ93N.mjs → comment-DlA4iChg.mjs} +13 -3
  239. package/dist/comment-reaction-DfFao1ST.mjs +58 -0
  240. package/dist/{comments-hK-rdzJ9.mjs → comments-DApFGMsP.mjs} +1 -1
  241. package/dist/{content-QaryevFO.mjs → content-Bh4BDjv8.mjs} +51 -34
  242. package/dist/content-refresh-CgutSUfO.mjs +1576 -0
  243. package/dist/{context-CoYb_fvK.mjs → context-C5W3G18y.mjs} +111 -50
  244. package/dist/{context-DBL1ib4v.mjs → context-CK4ym2Sf.mjs} +2 -2
  245. package/dist/{context-route-helpers-CYQVmbIm.mjs → context-route-helpers-MASyGgWf.mjs} +2 -1
  246. package/dist/{cron-DxCAU_Sn.mjs → cron-cKcNTix_.mjs} +7 -3
  247. package/dist/{dashboard-DNlqsknJ.mjs → dashboard-DQkVT7Ei.mjs} +4 -4
  248. package/dist/db/index.d.mts +3 -3
  249. package/dist/db/index.mjs +1 -1
  250. package/dist/db/libsql.d.mts +1 -1
  251. package/dist/db/postgres.d.mts +1 -1
  252. package/dist/db/sqlite.d.mts +1 -1
  253. package/dist/{device-flow-DygsFPGL.mjs → device-flow-BnqRH-T9.mjs} +5 -5
  254. package/dist/{placeholder-BDo81Is5.mjs → enrich-DIFIFA8O.mjs} +36 -9
  255. package/dist/{error-DCSuUAZW.mjs → error-CytFlgcd.mjs} +5 -0
  256. package/dist/field-defs-cache-DRNdhBJv.mjs +49 -0
  257. package/dist/{fts-manager-CIZlScg5.mjs → fts-manager-Crzypjqu.mjs} +1 -1
  258. package/dist/hitl-Hw1RmWOq.mjs +677 -0
  259. package/dist/{hitl-requests-CGQwOEiq.mjs → hitl-requests-B4Vbcmaq.mjs} +2 -2
  260. package/dist/{hitl-route-helpers-GSDLNPpN.mjs → hitl-route-helpers-hEVzvP8l.mjs} +5 -4
  261. package/dist/import-Bh9biJfx.mjs +1354 -0
  262. package/dist/{index-CwRuZ-u8.d.mts → index-D4y6NGiy.d.mts} +75 -3
  263. package/dist/index.d.mts +17 -16
  264. package/dist/index.mjs +81 -69
  265. package/dist/{jsonld-DZ67souc.d.mts → jsonld-Dq0gsnOH.d.mts} +8 -4
  266. package/dist/{load-xE01Jm0V.mjs → load-DmYeniXl.mjs} +1 -1
  267. package/dist/{loader-tg63WSY2.mjs → loader-CjWqjweO.mjs} +117 -31
  268. package/dist/{manifest-schema-qh2P7RDX.mjs → manifest-schema-BxVPYMJR.mjs} +34 -1
  269. package/dist/mcp-reviewed-executor-TwVbMzG6.mjs +555 -0
  270. package/dist/media/image-endpoint.d.mts +32 -0
  271. package/dist/media/image-endpoint.mjs +111 -0
  272. package/dist/media/index.d.mts +27 -2
  273. package/dist/media/index.mjs +5 -3
  274. package/dist/media/local-runtime.d.mts +16 -11
  275. package/dist/media/local-runtime.mjs +10 -8
  276. package/dist/{media-DUAjMfvR.mjs → media-DMj0grzC.mjs} +3 -1
  277. package/dist/{media-allowlist-BsXkT9RK.mjs → media-allowlist-BlVCSzHx.mjs} +1 -1
  278. package/dist/media-url-lEKSrpr9.mjs +20 -0
  279. package/dist/{menus-WpFRMXjz.mjs → menus-TaW1gKnk.mjs} +19 -5
  280. package/dist/{menus-DU1eZqw_.mjs → menus-xvsnVZXw.mjs} +80 -15
  281. package/dist/{normalize-DUnoXAa9.mjs → normalize-5ek_z7de.mjs} +8 -1
  282. package/dist/{oauth-authorization-D-1p52Je.mjs → oauth-authorization-DiaGvRVz.mjs} +5 -5
  283. package/dist/{oauth-clients-CzeMGyUU.mjs → oauth-clients-Dl9E8dEM.mjs} +2 -2
  284. package/dist/object-cache/memory.d.mts +14 -0
  285. package/dist/object-cache/memory.mjs +55 -0
  286. package/dist/object-cache-D51qOseS.mjs +419 -0
  287. package/dist/page/index.d.mts +4 -3
  288. package/dist/page/index.mjs +2 -2
  289. package/dist/{parse-CneSgl7-.mjs → parse-CbymENaR.mjs} +1 -1
  290. package/dist/{parser-DxfsARXL.mjs → parser-C1nYd-81.mjs} +151 -9
  291. package/dist/{placeholder-CXfoCtCd.d.mts → placeholder-uvNRZBX9.d.mts} +12 -4
  292. package/dist/plugin-utils.d.mts +9 -9
  293. package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
  294. package/dist/plugins/adapt-sandbox-entry.mjs +11 -2
  295. package/dist/{plugins-C57YQi4l.mjs → plugins-BolVa-tl.mjs} +832 -64
  296. package/dist/{transport-LSdZVXHF.mjs → portable-text-dA_UlJwW.mjs} +1 -134
  297. package/dist/{preview-D5rvDhRt.mjs → preview-vSVg6fwG.mjs} +4 -3
  298. package/dist/process-cache-7xgAO9JY.mjs +106 -0
  299. package/dist/{provider-loader-9it4vd6L.d.mts → provider-loader-MD8zAbnH.d.mts} +1 -1
  300. package/dist/{public-url-DLUM5OOv.mjs → public-url-BEz_sM9n.mjs} +24 -18
  301. package/dist/{public-url-B5HaoGzj.d.mts → public-url-gsp3oUbu.d.mts} +5 -4
  302. package/dist/{query-BYc3oruA.mjs → query-CfRCdaL3.mjs} +281 -76
  303. package/dist/{query-DKEwzobh.mjs → query-jaAmw8E1.mjs} +11 -6
  304. package/dist/{rate-limit-i0G3IAOX.mjs → rate-limit-ZLdyWoZF.mjs} +2 -2
  305. package/dist/{redirect-C2zXRj3c.mjs → redirect-BAjt4Z6b.mjs} +2 -2
  306. package/dist/{redirects-YZo_znWG.mjs → redirects-BTdwpQtE.mjs} +47 -24
  307. package/dist/{redirects-ocRJmQHP.mjs → redirects-CA-xylPG.mjs} +19 -11
  308. package/dist/{registry-CTkbIDB9.mjs → registry-CtyVedcN.mjs} +130 -77
  309. package/dist/request-context.d.mts +2 -0
  310. package/dist/{request-meta-DAb6xaP9.mjs → request-meta-CUypToDJ.mjs} +1 -1
  311. package/dist/{review-requests-C0un5kdV.mjs → review-requests-C9Ff11Vq.mjs} +1 -1
  312. package/dist/{review-requests-gGMyYYhy.mjs → review-requests-DUyEmtmG.mjs} +1 -1
  313. package/dist/{runner-D4FL9usy.d.mts → runner-1tC2tIRV.d.mts} +1 -1
  314. package/dist/runner-DB7CRfOF.mjs +6740 -0
  315. package/dist/{runtime-DEWQpZ-4.d.mts → runtime-BOeiQsCv.d.mts} +2028 -1564
  316. package/dist/runtime.d.mts +10 -10
  317. package/dist/runtime.mjs +4 -4
  318. package/dist/schema-DXdYj4R3.mjs +8 -0
  319. package/dist/{search-axGQ1KY3.mjs → search-DSaLgEFI.mjs} +5 -3
  320. package/dist/{secrets-062Izo8i.mjs → secrets-CDZo2k8L.mjs} +15 -12
  321. package/dist/{sections-OLKgXL10.mjs → sections-PVVXHGfp.mjs} +2 -2
  322. package/dist/seed/index.d.mts +2 -2
  323. package/dist/seed/index.mjs +22 -19
  324. package/dist/seo/index.d.mts +1 -1
  325. package/dist/seo/index.mjs +3 -12
  326. package/dist/{seo-Cd45Po8L.mjs → seo-CQG3GCHQ.mjs} +5 -2
  327. package/dist/{seo-contributions-CqVvReEj.mjs → seo-contributions-C1EnikHB.mjs} +11 -3
  328. package/dist/{seo-5lJOtB5J.mjs → seo-qa7Dn0jK.mjs} +22 -4
  329. package/dist/{service-Bwad8s5h.mjs → service-DiN4ZuPp.mjs} +2 -2
  330. package/dist/session-user-CAKImna3.mjs +22 -0
  331. package/dist/{settings-yLjz_I4T.mjs → settings-BbqgHWpU.mjs} +28 -55
  332. package/dist/{settings-lAHjaUit.mjs → settings-i4VPP8bT.mjs} +2 -2
  333. package/dist/{setup-complete--PradA4R.mjs → setup-complete-B8fl-mjV.mjs} +1 -1
  334. package/dist/{site-activity-D7Xyropw.mjs → site-activity-Dy3FROs0.mjs} +1 -1
  335. package/dist/{site-context-DaN9Z91j.mjs → site-context-DQiL8Fl5.mjs} +23 -652
  336. package/dist/{site-url-DpGZo9Z6.mjs → site-url-BML3GQYm.mjs} +1 -1
  337. package/dist/status-DANd8ERo.mjs +21 -0
  338. package/dist/storage/local.d.mts +1 -1
  339. package/dist/storage/local.mjs +1 -1
  340. package/dist/storage/s3.d.mts +1 -1
  341. package/dist/storage/s3.mjs +1 -1
  342. package/dist/{taxonomies-uXVEoQso.mjs → taxonomies-9s-v03H-.mjs} +36 -29
  343. package/dist/taxonomies-DRiixp_E.mjs +443 -0
  344. package/dist/{taxonomy-CBmkmMuU.mjs → taxonomy-Dvsw6BOs.mjs} +44 -9
  345. package/dist/{tokens-CjSgb0AC.mjs → tokens-1RK1n6ED.mjs} +1 -1
  346. package/dist/transport-BNmCqLu7.mjs +134 -0
  347. package/dist/types-4garmdWa.mjs +66 -0
  348. package/dist/{types-DSPGWjxO.d.mts → types-C8XW6L19.d.mts} +225 -4
  349. package/dist/{types-GaCtZ1k9.d.mts → types-CDpH6MA4.d.mts} +18 -0
  350. package/dist/{types-DRIKLmJI.d.mts → types-C_ly5eTp.d.mts} +17 -2
  351. package/dist/types-DF7ZuGGk.d.mts +118 -0
  352. package/dist/types-DU0bU2Wu.d.mts +2392 -0
  353. package/dist/{types-CwawBUTa.d.mts → types-DW_-sFyz.d.mts} +2 -1
  354. package/dist/{types-DfuD0Afl.mjs → types-Dq1qT19x.mjs} +2 -2
  355. package/dist/ui/server-runtime.d.mts +15 -15
  356. package/dist/ui/server-runtime.mjs +25 -21
  357. package/dist/url-Cac7a9QZ.mjs +33 -0
  358. package/dist/{user-DtNmjNYt.mjs → user-BIZPzCb9.mjs} +2 -2
  359. package/dist/{utils-wv-zvC-Y.mjs → utils-CMDhr5Xd.mjs} +129 -7
  360. package/dist/{validate-BMs11tan.d.mts → validate-CZvb-BKB.d.mts} +10 -7
  361. package/dist/{validate-7SYRbz2f.mjs → validate-DNs0pTSc.mjs} +11 -6
  362. package/dist/version-BTvfRGc6.mjs +6 -0
  363. package/dist/{widgets-DR8EHuRO.mjs → widgets-f0ibZUIq.mjs} +46 -43
  364. package/dist/{wordpress-slugs-Dvhxh4cl.mjs → wordpress-slugs-BhHJX8XE.mjs} +1 -1
  365. package/dist/{zod-generator-BS9-umbk.mjs → zod-generator-B7TMjyFJ.mjs} +41 -13
  366. package/package.json +31 -8
  367. package/src/components/Block.astro +50 -0
  368. package/src/components/Comments.astro +143 -1
  369. package/src/components/DinewayHead.astro +19 -2
  370. package/src/components/DinewayImage.astro +66 -33
  371. package/src/components/DinewayMedia.astro +1 -2
  372. package/src/components/Image.astro +85 -40
  373. package/src/components/InlinePortableTextEditor.tsx +12 -2
  374. package/src/components/JsonLdScript.astro +9 -0
  375. package/src/components/LiveSearch.astro +40 -4
  376. package/src/components/index.ts +4 -0
  377. package/src/components/live-search-routing.ts +30 -0
  378. package/src/components/portable-text-text-align.ts +15 -0
  379. package/src/ui.ts +2 -0
  380. package/dist/entity-aliases-Egjmqc7I.mjs +0 -51
  381. package/dist/import-CvHY6sf5.mjs +0 -684
  382. package/dist/runner-B-tbV751.mjs +0 -2741
  383. package/dist/schema-B6zyB-Xn.mjs +0 -8
  384. package/dist/taxonomies-CNOGeC-3.mjs +0 -327
  385. package/dist/types-eu5UDgHN.d.mts +0 -652
  386. package/dist/version-xlzMSXF2.mjs +0 -6
  387. /package/dist/{adapters-OQCImOL7.d.mts → adapters-NVSs4UH7.d.mts} +0 -0
  388. /package/dist/{api-tokens-CYUoFGo7.mjs → api-tokens-2r7OWi_I.mjs} +0 -0
  389. /package/dist/{base64-C1Q9yr0B.mjs → base64-F8-DUraK.mjs} +0 -0
  390. /package/dist/{challenge-store-CRSz-Xim.mjs → challenge-store-Bjlepa2E.mjs} +0 -0
  391. /package/dist/{components--pg6zBvu.mjs → components-Bclf98Be.mjs} +0 -0
  392. /package/dist/{context-types-DQh_XKkn.mjs → context-types-DqTo6C79.mjs} +0 -0
  393. /package/dist/{default-B6iaLvP7.mjs → default--K40jqm0.mjs} +0 -0
  394. /package/dist/{email-console-BOVqIYpB.mjs → email-console-ChgKFO8-.mjs} +0 -0
  395. /package/dist/{escape-BDgouFFY.mjs → escape-Bd4P_xKg.mjs} +0 -0
  396. /package/dist/{experimental-workflows-Dh4DUoD_.mjs → experimental-workflows-BMsUnIAw.mjs} +0 -0
  397. /package/dist/{mime-8pAB8-77.mjs → mime-CA7Lgovc.mjs} +0 -0
  398. /package/dist/{mode-CpyEz8pe.mjs → mode-C4CIyjtR.mjs} +0 -0
  399. /package/dist/{oauth-state-store-qncPB_IU.mjs → oauth-state-store-CNoXafF7.mjs} +0 -0
  400. /package/dist/{oauth-user-lookup-BFjWF8wK.mjs → oauth-user-lookup-Ygw4bNyt.mjs} +0 -0
  401. /package/dist/{options-BvJoSSJR.mjs → options-DQPTH5n0.mjs} +0 -0
  402. /package/dist/{passkey-config-DzHQK90v.mjs → passkey-config-BUwu8BA3.mjs} +0 -0
  403. /package/dist/{patterns-r-0n824Y.mjs → patterns-BhAvqO0S.mjs} +0 -0
  404. /package/dist/{provider-loader-DzUxejk7.mjs → provider-loader-D0w9dqjm.mjs} +0 -0
  405. /package/dist/{redirect-BjIBtDWY.mjs → redirect-wphRBv4y.mjs} +0 -0
  406. /package/dist/{request-cache-CYMbwZc6.mjs → request-cache-D9GQBxMP.mjs} +0 -0
  407. /package/dist/{resolve-DTuDyYKs.mjs → resolve-Cb6Dbz-C.mjs} +0 -0
  408. /package/dist/{setup-nonce-pyGfc9hV.mjs → setup-nonce-CoyjILvW.mjs} +0 -0
  409. /package/dist/{sidecar-client-mJxwayYN.mjs → sidecar-client-C3mqXg4C.mjs} +0 -0
  410. /package/dist/{slugify-BzGxlOFx.mjs → slugify-KSsVD_D3.mjs} +0 -0
  411. /package/dist/{ssrf-DiKqWd3N.mjs → ssrf-DWe8jwAp.mjs} +0 -0
  412. /package/dist/{transaction-CShMWIej.mjs → transaction-C2EOMTJA.mjs} +0 -0
  413. /package/dist/{transport-BnsNxh2l.d.mts → transport-CcJu3Co8.d.mts} +0 -0
  414. /package/dist/{trusted-proxy-BgIIcbsN.mjs → trusted-proxy-DTXQ2IMv.mjs} +0 -0
  415. /package/dist/{types-BO8TGjS8.mjs → types-B3t5cxhU.mjs} +0 -0
  416. /package/dist/{types-nP9vGUFq.d.mts → types-C46EvNdc.d.mts} +0 -0
  417. /package/dist/{types-Cg276-3z.mjs → types-C5CVgwsV.mjs} +0 -0
  418. /package/dist/{types-DZpT-PnG.d.mts → types-POH8PQZh.d.mts} +0 -0
  419. /package/dist/{types-Dryvv7LH.d.mts → types-Rc3gQqqw.d.mts} +0 -0
  420. /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-B-tbV751.mjs";
2
- import { r as encodeBase64, t as decodeBase64 } from "./base64-C1Q9yr0B.mjs";
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, Dr as getCollectionInfo, Fn as getEditMeta, Nn as getDinewayCollection, Si as PublicComment, X as getMenu, Zn as sanitizeHref, j as Widget, lt as getComments, pt as getSiteSettings, z as getTaxonomyTerms } from "../runtime-DEWQpZ-4.mjs";
2
- import "../types-eu5UDgHN.mjs";
3
- import { A as PageMetadataContribution, q as PublicPageContext } from "../types-DSPGWjxO.mjs";
4
- import "../types-Dryvv7LH.mjs";
5
- import { _ as MediaValue, c as EmbedResult, l as ImageEmbed, s as EmbedOptions } from "../placeholder-CXfoCtCd.mjs";
6
- import "../runner-D4FL9usy.mjs";
7
- import "../index-CwRuZ-u8.mjs";
8
- import { t as MediaReference } from "../types-nP9vGUFq.mjs";
9
- import "../byline-fields-BX7rWKNU.mjs";
10
- import "../types-GaCtZ1k9.mjs";
11
- import "../validate-BMs11tan.mjs";
12
- import { t as getPublicOrigin } from "../public-url-B5HaoGzj.mjs";
13
- import { a as generateSiteSeoContributions, d as resolvePageMetadata, i as generateBaseSeoContributions, o as renderFragments, u as renderPageMetadata } from "../jsonld-DZ67souc.mjs";
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-9it4vd6L.mjs";
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-C1Q9yr0B.mjs";
3
- import "../types-DfuD0Afl.mjs";
4
- import "../media-DUAjMfvR.mjs";
5
- import "../comment-CXDOQ93N.mjs";
6
- import "../options-BvJoSSJR.mjs";
7
- import "../request-cache-CYMbwZc6.mjs";
8
- import "../fts-manager-CIZlScg5.mjs";
9
- import "../registry-CTkbIDB9.mjs";
10
- import "../loader-tg63WSY2.mjs";
11
- import { i as getSiteSettings, s as buildRenderMediaUrl } from "../settings-yLjz_I4T.mjs";
12
- import { t as getCollectionInfo } from "../query-DKEwzobh.mjs";
13
- import "../resolve-DTuDyYKs.mjs";
14
- import { a as getTaxonomyTerms } from "../taxonomies-CNOGeC-3.mjs";
15
- import { n as sanitizeHref } from "../url-w7Mp5qAD.mjs";
16
- import { r as getEditMeta, t as getDinewayCollection } from "../query-BYc3oruA.mjs";
17
- import { i as getComments, t as getMenu } from "../menus-DU1eZqw_.mjs";
18
- import { t as getWidgetArea } from "../widgets-DR8EHuRO.mjs";
19
- import { t as getMediaProvider } from "../provider-loader-DzUxejk7.mjs";
20
- import { n as getPublicOrigin } from "../public-url-DLUM5OOv.mjs";
21
- import { c as escapeHtmlAttr, l as renderPageMetadata, n as generateSiteSeoContributions, o as renderFragments, t as generateBaseSeoContributions, u as resolvePageMetadata } from "../seo-contributions-CqVvReEj.mjs";
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-DfuD0Afl.mjs";
2
- import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-C5zp2xir.mjs";
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-BzGxlOFx.mjs";
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, mapPostTypeToCollection as d, mapWpStatus as f, checkSchemaCompatibility as i, isInternalPostType as l, resolveImportByline as m, FEATURED_IMAGE_FIELD as n, guessMimeType as o, normalizeUrl as p, buildAttachmentMap as r, inferMetaType as s, BASE_REQUIRED_FIELDS as t, mapMetaKeyToField as u };
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-CwawBUTa.mjs";
2
- import { t as Database } from "./types-eu5UDgHN.mjs";
3
- import { d as Storage } from "./types-DZpT-PnG.mjs";
4
- import { i as SiteSettings } from "./types-nP9vGUFq.mjs";
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: string;
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
- /** Include sample content (default: false) */
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-B-tbV751.mjs";
2
- import { n as FIELD_TYPES } from "./types-BO8TGjS8.mjs";
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 308`);
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`);
@@ -0,0 +1,6 @@
1
+ //#region src/version.ts
2
+ const VERSION = "0.2.0";
3
+ const COMMIT = "1ae12e3c0";
4
+
5
+ //#endregion
6
+ export { VERSION as n, COMMIT as t };
@@ -1,53 +1,56 @@
1
- import { r as getDb } from "./loader-tg63WSY2.mjs";
2
- import { t as getWidgetComponents$1 } from "./components--pg6zBvu.mjs";
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
- const rows = await (await getDb()).selectFrom("_dineway_widget_areas as a").leftJoin("_dineway_widgets as w", "w.area_id", "a.id").select([
10
- "a.id as a_id",
11
- "a.name as a_name",
12
- "a.label as a_label",
13
- "a.description as a_description",
14
- "w.id as w_id",
15
- "w.type as w_type",
16
- "w.title as w_title",
17
- "w.content as w_content",
18
- "w.menu_name as w_menu_name",
19
- "w.component_id as w_component_id",
20
- "w.component_props as w_component_props",
21
- "w.area_id as w_area_id",
22
- "w.sort_order as w_sort_order",
23
- "w.created_at as w_created_at"
24
- ]).where("a.name", "=", name).orderBy("w.sort_order", "asc").execute();
25
- const first = rows[0];
26
- if (!first) return null;
27
- const widgets = [];
28
- for (const row of rows) {
29
- if (!row.w_id || !isWidgetType(row.w_type) || !row.w_area_id || row.w_sort_order === null || !row.w_created_at) continue;
30
- const widgetRow = {
31
- id: row.w_id,
32
- type: row.w_type,
33
- title: row.w_title,
34
- content: row.w_content,
35
- menu_name: row.w_menu_name,
36
- component_id: row.w_component_id,
37
- component_props: row.w_component_props,
38
- area_id: row.w_area_id,
39
- sort_order: row.w_sort_order,
40
- created_at: row.w_created_at
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
- widgets.push(rowToWidget(widgetRow));
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 RESERVED_COLLECTION_SLUGS } from "./types-BO8TGjS8.mjs";
1
+ import { a as RESERVED_COLLECTION_SLUGS } from "./types-B3t5cxhU.mjs";
2
2
 
3
3
  //#region src/import/wordpress-slugs.ts
4
4
  const INVALID_SLUG_CHARS = /[^a-z0-9_]/g;
@@ -1,4 +1,4 @@
1
- import { a as __exportAll } from "./runner-B-tbV751.mjs";
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
- * Simple singularization - handles common cases
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(collection.labelSingular || singularize(collection.slug));
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 { zod_generator_exports as n, generateTypeScript as t };
161
+ export { uniqueInterfaceNames as n, zod_generator_exports as r, generateTypeScript as t };