@phtngyn/cms 0.2.0-beta.8 → 0.3.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 (524) hide show
  1. package/LICENSE +18 -10
  2. package/README.md +59 -404
  3. package/drizzle/20261003215543_initial/migration.sql +251 -0
  4. package/drizzle/20261003215543_initial/snapshot.json +1941 -0
  5. package/package.json +75 -71
  6. package/src/Authoring.d.ts +41 -49
  7. package/src/Authoring.js +1 -1
  8. package/src/Blocks-BrxSemnd.js +40 -0
  9. package/src/Client.d.ts +8186 -0
  10. package/src/Client.js +41 -0
  11. package/src/Collections.d.ts +142 -0
  12. package/src/Collections.js +142 -0
  13. package/src/Config-CMiwciub.js +130 -0
  14. package/src/Config.d.ts +172 -0
  15. package/src/Config.js +2 -0
  16. package/src/Configuration-Dk2k3OIc.js +73 -0
  17. package/src/DataTransfer-BmECvPHB.js +488 -0
  18. package/src/Database-DSsNCGft.d.ts +3 -0
  19. package/src/Delivery.d.ts +28 -0
  20. package/src/Delivery.js +7 -0
  21. package/src/Document-CKXMSEf1.js +293 -0
  22. package/src/Document-TgwYKJZM.d.ts +220 -0
  23. package/src/DocumentRenderer-Wz2xaNyf.js +394 -0
  24. package/src/EditorSchema-wrDv-id6.js +296 -0
  25. package/src/Fields-BegSgYhj.d.ts +166 -0
  26. package/src/Fields-ioGaMEh9.js +130 -0
  27. package/src/Forms-BuKAXQxr.d.ts +203 -0
  28. package/src/Forms.d.ts +48 -11
  29. package/src/Forms.js +342 -7
  30. package/src/I18n-Ckf9h0rC.js +154 -0
  31. package/src/I18n.d.ts +45 -2
  32. package/src/I18n.js +2 -1
  33. package/src/Image-CJWPLnhP.js +110 -0
  34. package/src/Links-CJYyy7rC.js +28 -0
  35. package/src/Links-Dx1yOni8.d.ts +28 -0
  36. package/src/Locales-Ch7a5xuA.js +67 -0
  37. package/src/Locales-jwbmJaOp.d.ts +43 -0
  38. package/src/Locales.d.ts +3 -0
  39. package/src/Locales.js +3 -0
  40. package/src/Media-BQ0uL4w7.d.ts +15 -0
  41. package/src/Media-DSyvd14o.js +87 -0
  42. package/src/Module.d.ts +2 -10
  43. package/src/Module.js +1040 -152
  44. package/src/Operations.d.ts +57 -0
  45. package/src/Operations.js +263 -0
  46. package/src/People-DvNZauWw.js +69 -0
  47. package/src/PreviewFocus-C_EelZO5.js +104 -0
  48. package/src/Query-C0kGJF5_.d.ts +261 -0
  49. package/src/RevisionPreview-IVwbJ9Wy.js +133 -0
  50. package/src/Routes-BaZvm2LE.js +126 -0
  51. package/src/Routes-DM1rRp3r.d.ts +15 -0
  52. package/src/S3MediaObjects-y-WacEi9.js +193 -0
  53. package/src/Seo-BcpqxoAs.d.ts +57 -0
  54. package/src/Seo-CjNUtUkj.js +254 -0
  55. package/src/StudioApi-CXLwwocX.js +833 -0
  56. package/src/StudioErrors-T5zLGQ1M.js +117 -0
  57. package/src/StudioErrors-kq-E44lQ.d.ts +104 -0
  58. package/src/StudioServer.d.ts +20 -0
  59. package/src/StudioServer.js +34 -0
  60. package/src/answers-DcTg0Xv2.js +41 -0
  61. package/src/cli.js +681 -187
  62. package/src/contracts-rprW3ZOB.js +130 -0
  63. package/src/forms-3xuf0Ym7.d.ts +206 -0
  64. package/src/localeConfiguration-BPbkLi7-.js +32 -0
  65. package/src/localeContext-DhF3SPvM.js +59 -0
  66. package/src/locales-6OD4XGIZ.js +12 -0
  67. package/src/nuxtDelivery-BYX_Cddb.js +466 -0
  68. package/src/plugin-DTYuDaQu.js +7171 -0
  69. package/src/previewContext-dt3ZUh-w.js +4 -0
  70. package/src/previewRegions-CXjk5cbP.js +145 -0
  71. package/src/previewSource-fb-q3ESM.js +144 -0
  72. package/src/rendering-D9LVeEKX.js +47 -0
  73. package/src/rolldown-runtime-8H4AJuhK.js +14 -0
  74. package/src/runtime/CmsImage.js +38 -0
  75. package/src/runtime/DocumentPage.vue +10 -0
  76. package/src/runtime/DocumentPageContent.js +48 -0
  77. package/src/runtime/DocumentRenderer.d.ts +129 -0
  78. package/src/runtime/DocumentRenderer.js +2 -0
  79. package/src/runtime/api.js +48 -6
  80. package/src/runtime/delivery/useCmsDocument.js +2 -0
  81. package/src/runtime/delivery/useCmsDocumentQuery.js +2 -0
  82. package/src/runtime/delivery/useCmsDocumentSeo.js +2 -114
  83. package/src/runtime/delivery/useCmsLocale.js +10 -0
  84. package/src/runtime/plugin.js +2 -40
  85. package/src/runtime/preview.css +85 -0
  86. package/src/runtime/preview.js +277 -0
  87. package/src/runtime/previewSource.js +82 -0
  88. package/src/runtime/revisionPrivacy.js +13 -0
  89. package/src/runtime/studio.js +10 -0
  90. package/src/runtime/studioIcons.js +36 -0
  91. package/src/validation-3pggwcnm.js +396 -0
  92. package/src/validation-DpUwPC8Y.js +224 -0
  93. package/studio/THIRD-PARTY-LICENSES.md +2406 -0
  94. package/studio/chunks/AccountPage-DL3DitDM.js +288 -0
  95. package/studio/chunks/AccountPage-DL3DitDM.js.br +0 -0
  96. package/studio/chunks/AccountPage-DL3DitDM.js.gz +0 -0
  97. package/studio/chunks/ActivityPage-CLqVUqTh.js +584 -0
  98. package/studio/chunks/ActivityPage-CLqVUqTh.js.br +0 -0
  99. package/studio/chunks/ActivityPage-CLqVUqTh.js.gz +0 -0
  100. package/studio/chunks/Alert-D0D24z_a.js +335 -0
  101. package/studio/chunks/Alert-D0D24z_a.js.br +0 -0
  102. package/studio/chunks/Alert-D0D24z_a.js.gz +0 -0
  103. package/studio/chunks/Badge-BBFs88TI.js +346 -0
  104. package/studio/chunks/Badge-BBFs88TI.js.br +0 -0
  105. package/studio/chunks/Badge-BBFs88TI.js.gz +0 -0
  106. package/studio/chunks/Button-BT3ztSPx.js +14319 -0
  107. package/studio/chunks/Button-BT3ztSPx.js.br +0 -0
  108. package/studio/chunks/Button-BT3ztSPx.js.gz +0 -0
  109. package/studio/chunks/Collapsible-CKnEYIlp.js +246 -0
  110. package/studio/chunks/Collapsible-CKnEYIlp.js.br +0 -0
  111. package/studio/chunks/Collapsible-CKnEYIlp.js.gz +0 -0
  112. package/studio/chunks/ContentInventory-D7nsFA6U.js +1745 -0
  113. package/studio/chunks/ContentInventory-D7nsFA6U.js.br +0 -0
  114. package/studio/chunks/ContentInventory-D7nsFA6U.js.gz +0 -0
  115. package/studio/chunks/ContentPage-DCxt6BeD.js +18 -0
  116. package/studio/chunks/ContentPage-DCxt6BeD.js.br +0 -0
  117. package/studio/chunks/ContentPage-DCxt6BeD.js.gz +0 -0
  118. package/studio/chunks/DashboardSearch-DjyMjJwF.js +2413 -0
  119. package/studio/chunks/DashboardSearch-DjyMjJwF.js.br +0 -0
  120. package/studio/chunks/DashboardSearch-DjyMjJwF.js.gz +0 -0
  121. package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js +26063 -0
  122. package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js.br +0 -0
  123. package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js.gz +0 -0
  124. package/studio/chunks/DropdownMenu-CA9fB0uZ.js +4400 -0
  125. package/studio/chunks/DropdownMenu-CA9fB0uZ.js.br +0 -0
  126. package/studio/chunks/DropdownMenu-CA9fB0uZ.js.gz +0 -0
  127. package/studio/chunks/EditorPage-D_PAYEE4.js +7799 -0
  128. package/studio/chunks/EditorPage-D_PAYEE4.js.br +0 -0
  129. package/studio/chunks/EditorPage-D_PAYEE4.js.gz +0 -0
  130. package/studio/chunks/FormField-CgM6l2Yn.js +198 -0
  131. package/studio/chunks/FormField-CgM6l2Yn.js.br +0 -0
  132. package/studio/chunks/FormField-CgM6l2Yn.js.gz +0 -0
  133. package/studio/chunks/HelpPage-C-vrFcT_.js +552 -0
  134. package/studio/chunks/HelpPage-C-vrFcT_.js.br +0 -0
  135. package/studio/chunks/HelpPage-C-vrFcT_.js.gz +0 -0
  136. package/studio/chunks/Kbd-Ot7TIhVZ.js +271 -0
  137. package/studio/chunks/Kbd-Ot7TIhVZ.js.br +0 -0
  138. package/studio/chunks/Kbd-Ot7TIhVZ.js.gz +0 -0
  139. package/studio/chunks/MediaFolderDialog-DYu-eu-q.js +101 -0
  140. package/studio/chunks/MediaFolderDialog-DYu-eu-q.js.br +0 -0
  141. package/studio/chunks/MediaFolderDialog-DYu-eu-q.js.gz +0 -0
  142. package/studio/chunks/MediaPage-D-jaWtdl.js +923 -0
  143. package/studio/chunks/MediaPage-D-jaWtdl.js.br +0 -0
  144. package/studio/chunks/MediaPage-D-jaWtdl.js.gz +0 -0
  145. package/studio/chunks/MediaPicker-BZs2wUFz.js +837 -0
  146. package/studio/chunks/MediaPicker-BZs2wUFz.js.br +0 -0
  147. package/studio/chunks/MediaPicker-BZs2wUFz.js.gz +0 -0
  148. package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js +1173 -0
  149. package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js.br +0 -0
  150. package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js.gz +0 -0
  151. package/studio/chunks/Modal-D6hSvxHd.js +265 -0
  152. package/studio/chunks/Modal-D6hSvxHd.js.br +0 -0
  153. package/studio/chunks/Modal-D6hSvxHd.js.gz +0 -0
  154. package/studio/chunks/NewDocumentDialog-C8B6_r3J.js +277 -0
  155. package/studio/chunks/NewDocumentDialog-C8B6_r3J.js.br +0 -0
  156. package/studio/chunks/NewDocumentDialog-C8B6_r3J.js.gz +0 -0
  157. package/studio/chunks/Pagination-D9BSo5H2.js +573 -0
  158. package/studio/chunks/Pagination-D9BSo5H2.js.br +0 -0
  159. package/studio/chunks/Pagination-D9BSo5H2.js.gz +0 -0
  160. package/studio/chunks/PeoplePage-CWIXitBD.js +783 -0
  161. package/studio/chunks/PeoplePage-CWIXitBD.js.br +0 -0
  162. package/studio/chunks/PeoplePage-CWIXitBD.js.gz +0 -0
  163. package/studio/chunks/Popover-B63bkTMS.js +128 -0
  164. package/studio/chunks/Popover-B63bkTMS.js.br +0 -0
  165. package/studio/chunks/Popover-B63bkTMS.js.gz +0 -0
  166. package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js +255 -0
  167. package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js.br +0 -0
  168. package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js.gz +0 -0
  169. package/studio/chunks/Routes-DLYHmulE.js +102 -0
  170. package/studio/chunks/Routes-DLYHmulE.js.br +0 -0
  171. package/studio/chunks/Routes-DLYHmulE.js.gz +0 -0
  172. package/studio/chunks/RovingFocusItem-QZNg-wWF.js +95 -0
  173. package/studio/chunks/RovingFocusItem-QZNg-wWF.js.br +0 -0
  174. package/studio/chunks/RovingFocusItem-QZNg-wWF.js.gz +0 -0
  175. package/studio/chunks/ScheduledPage-C0hqrkr5.js +332 -0
  176. package/studio/chunks/ScheduledPage-C0hqrkr5.js.br +0 -0
  177. package/studio/chunks/ScheduledPage-C0hqrkr5.js.gz +0 -0
  178. package/studio/chunks/Search-BEgCe9Aj.js +14646 -0
  179. package/studio/chunks/Search-BEgCe9Aj.js.br +0 -0
  180. package/studio/chunks/Search-BEgCe9Aj.js.gz +0 -0
  181. package/studio/chunks/Select-B50WZMW-.js +2145 -0
  182. package/studio/chunks/Select-B50WZMW-.js.br +0 -0
  183. package/studio/chunks/Select-B50WZMW-.js.gz +0 -0
  184. package/studio/chunks/SelectMenu-DSweWGMz.js +2109 -0
  185. package/studio/chunks/SelectMenu-DSweWGMz.js.br +0 -0
  186. package/studio/chunks/SelectMenu-DSweWGMz.js.gz +0 -0
  187. package/studio/chunks/SeoPage-CNNxGe4h.js +846 -0
  188. package/studio/chunks/SeoPage-CNNxGe4h.js.br +0 -0
  189. package/studio/chunks/SeoPage-CNNxGe4h.js.gz +0 -0
  190. package/studio/chunks/Skeleton-COz8dcrw.js +39 -0
  191. package/studio/chunks/Skeleton-COz8dcrw.js.br +2 -0
  192. package/studio/chunks/Skeleton-COz8dcrw.js.gz +0 -0
  193. package/studio/chunks/Slideover-QMMHAAys.js +289 -0
  194. package/studio/chunks/Slideover-QMMHAAys.js.br +0 -0
  195. package/studio/chunks/Slideover-QMMHAAys.js.gz +0 -0
  196. package/studio/chunks/StudioPage-ngEIDr5d.js +80 -0
  197. package/studio/chunks/StudioPage-ngEIDr5d.js.br +0 -0
  198. package/studio/chunks/StudioPage-ngEIDr5d.js.gz +0 -0
  199. package/studio/chunks/StudioPageToolbar-BwHnqyr6.js +2524 -0
  200. package/studio/chunks/StudioPageToolbar-BwHnqyr6.js.br +0 -0
  201. package/studio/chunks/StudioPageToolbar-BwHnqyr6.js.gz +0 -0
  202. package/studio/chunks/Switch-qKl1aDn7.js +484 -0
  203. package/studio/chunks/Switch-qKl1aDn7.js.br +0 -0
  204. package/studio/chunks/Switch-qKl1aDn7.js.gz +0 -0
  205. package/studio/chunks/ToolPage-DxoVAJVk.js +29 -0
  206. package/studio/chunks/ToolPage-DxoVAJVk.js.br +0 -0
  207. package/studio/chunks/ToolPage-DxoVAJVk.js.gz +0 -0
  208. package/studio/chunks/Tooltip-Bu15m_DB.js +693 -0
  209. package/studio/chunks/Tooltip-Bu15m_DB.js.br +0 -0
  210. package/studio/chunks/Tooltip-Bu15m_DB.js.gz +0 -0
  211. package/studio/chunks/TrashPage-lhqLLdoG.js +12 -0
  212. package/studio/chunks/TrashPage-lhqLLdoG.js.br +0 -0
  213. package/studio/chunks/TrashPage-lhqLLdoG.js.gz +0 -0
  214. package/studio/chunks/VersionsPage-Cqy6UAp9.js +2349 -0
  215. package/studio/chunks/VersionsPage-Cqy6UAp9.js.br +0 -0
  216. package/studio/chunks/VersionsPage-Cqy6UAp9.js.gz +0 -0
  217. package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js +113 -0
  218. package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js.br +0 -0
  219. package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js.gz +0 -0
  220. package/studio/chunks/arrays-CUJkmV4I.js +10 -0
  221. package/studio/chunks/arrays-CUJkmV4I.js.br +0 -0
  222. package/studio/chunks/arrays-CUJkmV4I.js.gz +0 -0
  223. package/studio/chunks/base-DkTekJe8.js +213 -0
  224. package/studio/chunks/base-DkTekJe8.js.br +0 -0
  225. package/studio/chunks/base-DkTekJe8.js.gz +0 -0
  226. package/studio/chunks/content-DUGl3N4d.js +6012 -0
  227. package/studio/chunks/content-DUGl3N4d.js.br +0 -0
  228. package/studio/chunks/content-DUGl3N4d.js.gz +0 -0
  229. package/studio/chunks/destinations-DPIQVQa6.js +227 -0
  230. package/studio/chunks/destinations-DPIQVQa6.js.br +0 -0
  231. package/studio/chunks/destinations-DPIQVQa6.js.gz +0 -0
  232. package/studio/chunks/en-073cjKW4.js +152 -0
  233. package/studio/chunks/en-073cjKW4.js.br +0 -0
  234. package/studio/chunks/en-073cjKW4.js.gz +0 -0
  235. package/studio/chunks/en-Bn8mxPuf.js +134 -0
  236. package/studio/chunks/en-Bn8mxPuf.js.br +0 -0
  237. package/studio/chunks/en-Bn8mxPuf.js.gz +0 -0
  238. package/studio/chunks/en-C9OiaUDZ.js +251 -0
  239. package/studio/chunks/en-C9OiaUDZ.js.br +0 -0
  240. package/studio/chunks/en-C9OiaUDZ.js.gz +0 -0
  241. package/studio/chunks/en-CHAR6jzx.js +147 -0
  242. package/studio/chunks/en-CHAR6jzx.js.br +0 -0
  243. package/studio/chunks/en-CHAR6jzx.js.gz +0 -0
  244. package/studio/chunks/en-Cq4N1vEF.js +93 -0
  245. package/studio/chunks/en-Cq4N1vEF.js.br +2 -0
  246. package/studio/chunks/en-Cq4N1vEF.js.gz +0 -0
  247. package/studio/chunks/en-D2hRqlse.js +140 -0
  248. package/studio/chunks/en-D2hRqlse.js.br +0 -0
  249. package/studio/chunks/en-D2hRqlse.js.gz +0 -0
  250. package/studio/chunks/en-DiUC3-j6.js +144 -0
  251. package/studio/chunks/en-DiUC3-j6.js.br +0 -0
  252. package/studio/chunks/en-DiUC3-j6.js.gz +0 -0
  253. package/studio/chunks/english-Cs_Adu-u.js +8 -0
  254. package/studio/chunks/english-Cs_Adu-u.js.br +0 -0
  255. package/studio/chunks/english-Cs_Adu-u.js.gz +0 -0
  256. package/studio/chunks/esm-D6DqSiL1.js +752 -0
  257. package/studio/chunks/esm-D6DqSiL1.js.br +0 -0
  258. package/studio/chunks/esm-D6DqSiL1.js.gz +0 -0
  259. package/studio/chunks/externalRequest-CTzr2nDq.js +23 -0
  260. package/studio/chunks/externalRequest-CTzr2nDq.js.br +0 -0
  261. package/studio/chunks/externalRequest-CTzr2nDq.js.gz +0 -0
  262. package/studio/chunks/iconify-DR9ryCPv.js +1007 -0
  263. package/studio/chunks/iconify-DR9ryCPv.js.br +0 -0
  264. package/studio/chunks/iconify-DR9ryCPv.js.gz +0 -0
  265. package/studio/chunks/icons-D2MsAaXq.js +183 -0
  266. package/studio/chunks/icons-D2MsAaXq.js.br +0 -0
  267. package/studio/chunks/icons-D2MsAaXq.js.gz +0 -0
  268. package/studio/chunks/leaveGuards-D22fTGgr.js +26 -0
  269. package/studio/chunks/leaveGuards-D22fTGgr.js.br +0 -0
  270. package/studio/chunks/leaveGuards-D22fTGgr.js.gz +0 -0
  271. package/studio/chunks/lucideIcons-EyqyPBsX.js +238 -0
  272. package/studio/chunks/lucideIcons-EyqyPBsX.js.br +0 -0
  273. package/studio/chunks/lucideIcons-EyqyPBsX.js.gz +0 -0
  274. package/studio/chunks/mediaRoute--8cY8rUe.js +17 -0
  275. package/studio/chunks/mediaRoute--8cY8rUe.js.br +0 -0
  276. package/studio/chunks/mediaRoute--8cY8rUe.js.gz +0 -0
  277. package/studio/chunks/newDocumentPlanning-C26DHpvh.js +77 -0
  278. package/studio/chunks/newDocumentPlanning-C26DHpvh.js.br +0 -0
  279. package/studio/chunks/newDocumentPlanning-C26DHpvh.js.gz +0 -0
  280. package/studio/chunks/notifications-OKOLc40v.js +110 -0
  281. package/studio/chunks/notifications-OKOLc40v.js.br +0 -0
  282. package/studio/chunks/notifications-OKOLc40v.js.gz +0 -0
  283. package/studio/chunks/operations-CjNHyrEX.js +57 -0
  284. package/studio/chunks/operations-CjNHyrEX.js.br +0 -0
  285. package/studio/chunks/operations-CjNHyrEX.js.gz +0 -0
  286. package/studio/chunks/overlay-DnqFLZTc.js +1733 -0
  287. package/studio/chunks/overlay-DnqFLZTc.js.br +0 -0
  288. package/studio/chunks/overlay-DnqFLZTc.js.gz +0 -0
  289. package/studio/chunks/presentation-DF83w0hE.js +57 -0
  290. package/studio/chunks/presentation-DF83w0hE.js.br +0 -0
  291. package/studio/chunks/presentation-DF83w0hE.js.gz +0 -0
  292. package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js +4557 -0
  293. package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js.br +0 -0
  294. package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js.gz +0 -0
  295. package/studio/chunks/searchPresentation-DFwxQkt3.js +76 -0
  296. package/studio/chunks/searchPresentation-DFwxQkt3.js.br +0 -0
  297. package/studio/chunks/searchPresentation-DFwxQkt3.js.gz +0 -0
  298. package/studio/chunks/status-DQv6ihkU.js +38 -0
  299. package/studio/chunks/status-DQv6ihkU.js.br +0 -0
  300. package/studio/chunks/status-DQv6ihkU.js.gz +0 -0
  301. package/studio/chunks/studioContext-I8HozGU1.js +4953 -0
  302. package/studio/chunks/studioContext-I8HozGU1.js.br +0 -0
  303. package/studio/chunks/studioContext-I8HozGU1.js.gz +0 -0
  304. package/studio/chunks/studioQueries-BR-9NT5F.js +73 -0
  305. package/studio/chunks/studioQueries-BR-9NT5F.js.br +0 -0
  306. package/studio/chunks/studioQueries-BR-9NT5F.js.gz +0 -0
  307. package/studio/chunks/studioSearch-ByaL-QpM.js +1095 -0
  308. package/studio/chunks/studioSearch-ByaL-QpM.js.br +0 -0
  309. package/studio/chunks/studioSearch-ByaL-QpM.js.gz +0 -0
  310. package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js +62 -0
  311. package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js.br +0 -0
  312. package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js.gz +0 -0
  313. package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js +189 -0
  314. package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js.br +0 -0
  315. package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js.gz +0 -0
  316. package/studio/chunks/useDocumentMessage-BAWvc38w.js +16 -0
  317. package/studio/chunks/useDocumentMessage-BAWvc38w.js.br +3 -0
  318. package/studio/chunks/useDocumentMessage-BAWvc38w.js.gz +0 -0
  319. package/studio/chunks/useFilter-DzyiTR7f.js +87 -0
  320. package/studio/chunks/useFilter-DzyiTR7f.js.br +0 -0
  321. package/studio/chunks/useFilter-DzyiTR7f.js.gz +0 -0
  322. package/studio/chunks/useFormControl-CL7sSCUo.js +8 -0
  323. package/studio/chunks/useFormControl-CL7sSCUo.js.br +0 -0
  324. package/studio/chunks/useFormControl-CL7sSCUo.js.gz +0 -0
  325. package/studio/chunks/useGraceArea-Chcy25IQ.js +154 -0
  326. package/studio/chunks/useGraceArea-Chcy25IQ.js.br +0 -0
  327. package/studio/chunks/useGraceArea-Chcy25IQ.js.gz +0 -0
  328. package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js +44 -0
  329. package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js.br +8 -0
  330. package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js.gz +0 -0
  331. package/studio/chunks/useLinkCopy-CMjQteCy.js +35 -0
  332. package/studio/chunks/useLinkCopy-CMjQteCy.js.br +0 -0
  333. package/studio/chunks/useLinkCopy-CMjQteCy.js.gz +0 -0
  334. package/studio/chunks/usePointerMotion-DwRcwBNQ.js +16 -0
  335. package/studio/chunks/usePointerMotion-DwRcwBNQ.js.br +0 -0
  336. package/studio/chunks/usePointerMotion-DwRcwBNQ.js.gz +0 -0
  337. package/studio/chunks/useStudioNavigation-CLwtSYpb.js +298 -0
  338. package/studio/chunks/useStudioNavigation-CLwtSYpb.js.br +0 -0
  339. package/studio/chunks/useStudioNavigation-CLwtSYpb.js.gz +0 -0
  340. package/studio/chunks/useStudioPages-DR9qmYLg.js +79 -0
  341. package/studio/chunks/useStudioPages-DR9qmYLg.js.br +0 -0
  342. package/studio/chunks/useStudioPages-DR9qmYLg.js.gz +0 -0
  343. package/studio/chunks/utils-mdScC0v0.js +59 -0
  344. package/studio/chunks/utils-mdScC0v0.js.br +0 -0
  345. package/studio/chunks/utils-mdScC0v0.js.gz +0 -0
  346. package/studio/chunks/virtualizer-D1S0bZ4t.js +781 -0
  347. package/studio/chunks/virtualizer-D1S0bZ4t.js.br +0 -0
  348. package/studio/chunks/virtualizer-D1S0bZ4t.js.gz +0 -0
  349. package/studio/help/64f767fe29c2-save-and-publish.svg +7 -0
  350. package/studio/host.css +1 -1
  351. package/studio/host.css.br +0 -0
  352. package/studio/host.css.gz +0 -0
  353. package/studio/host.js +8793 -39395
  354. package/studio/host.js.br +0 -0
  355. package/studio/host.js.gz +0 -0
  356. package/CHANGELOG.md +0 -14
  357. package/bin/cms.mjs +0 -2
  358. package/src/ApplicationTypes.d.ts +0 -84
  359. package/src/ApplicationTypes.js +0 -1
  360. package/src/Configuration-CMweD9bn.js +0 -1191
  361. package/src/Configuration-CMweD9bn.js.map +0 -1
  362. package/src/Configuration.d.ts +0 -82
  363. package/src/Configuration.js +0 -8
  364. package/src/Configuration.js.map +0 -1
  365. package/src/Content.d.ts +0 -68
  366. package/src/Content.js +0 -373
  367. package/src/Content.js.map +0 -1
  368. package/src/ContentTransfer-BxwswWn3.js +0 -86
  369. package/src/ContentTransfer-BxwswWn3.js.map +0 -1
  370. package/src/ContentTransfer-Z9FHyLez.d.ts +0 -72
  371. package/src/DocumentEngine-tYtwbBjr.js +0 -978
  372. package/src/DocumentEngine-tYtwbBjr.js.map +0 -1
  373. package/src/DocumentModel.d.ts +0 -52
  374. package/src/DocumentModel.js +0 -66
  375. package/src/DocumentModel.js.map +0 -1
  376. package/src/Forms-CX-hwmJF.js +0 -391
  377. package/src/Forms-CX-hwmJF.js.map +0 -1
  378. package/src/Forms-CfNPTiCr.js +0 -110
  379. package/src/Forms-CfNPTiCr.js.map +0 -1
  380. package/src/Forms-R0HoTR-o.d.ts +0 -92
  381. package/src/Forms.js.map +0 -1
  382. package/src/HttpPaths-Be3vshPJ.js +0 -20
  383. package/src/HttpPaths-Be3vshPJ.js.map +0 -1
  384. package/src/I18n-wxswIRyY.d.ts +0 -30
  385. package/src/Media-j1bTritO.js +0 -112
  386. package/src/Media-j1bTritO.js.map +0 -1
  387. package/src/Module.js.map +0 -1
  388. package/src/References-CCPDAPve.js +0 -45
  389. package/src/References-CCPDAPve.js.map +0 -1
  390. package/src/S3MediaObjects-BXfjaZOu.js +0 -2756
  391. package/src/S3MediaObjects-BXfjaZOu.js.map +0 -1
  392. package/src/Seo-402YumpT.d.ts +0 -198
  393. package/src/cli/content.js +0 -101
  394. package/src/cli/content.js.map +0 -1
  395. package/src/cli.js.map +0 -1
  396. package/src/connection-BP80q4d-.js +0 -92
  397. package/src/connection-BP80q4d-.js.map +0 -1
  398. package/src/dev-lifecycle-3I_pozUl.js +0 -535
  399. package/src/dev-lifecycle-3I_pozUl.js.map +0 -1
  400. package/src/installation-DxqSSVbH.js +0 -9105
  401. package/src/installation-DxqSSVbH.js.map +0 -1
  402. package/src/internal/application-types.js +0 -43
  403. package/src/internal/application-types.js.map +0 -1
  404. package/src/internal/authoring-catalog.js +0 -158
  405. package/src/internal/authoring-catalog.js.map +0 -1
  406. package/src/internal/authoring-compiler.js +0 -146
  407. package/src/internal/authoring-compiler.js.map +0 -1
  408. package/src/internal/authoring-metadata.js +0 -191
  409. package/src/internal/authoring-metadata.js.map +0 -1
  410. package/src/internal/cms-config.js +0 -45
  411. package/src/internal/cms-config.js.map +0 -1
  412. package/src/internal/configuration.js +0 -228
  413. package/src/internal/configuration.js.map +0 -1
  414. package/src/internal/dev-lifecycle.js +0 -3
  415. package/src/internal/diagnostics.js +0 -47
  416. package/src/internal/diagnostics.js.map +0 -1
  417. package/src/internal/document-model.js +0 -376
  418. package/src/internal/document-model.js.map +0 -1
  419. package/src/internal/field-metadata.js +0 -7
  420. package/src/internal/field-metadata.js.map +0 -1
  421. package/src/internal/form-capabilities.js +0 -12
  422. package/src/internal/form-capabilities.js.map +0 -1
  423. package/src/internal/i18n.js +0 -73
  424. package/src/internal/i18n.js.map +0 -1
  425. package/src/internal/studio-app.js +0 -68
  426. package/src/internal/studio-app.js.map +0 -1
  427. package/src/location-CMNGO3lU.js +0 -35
  428. package/src/location-CMNGO3lU.js.map +0 -1
  429. package/src/metadata-DN9_K6Yl.js +0 -201
  430. package/src/metadata-DN9_K6Yl.js.map +0 -1
  431. package/src/models-5j67LMqW.js +0 -131
  432. package/src/models-5j67LMqW.js.map +0 -1
  433. package/src/models-VmGmG19-.js +0 -628
  434. package/src/models-VmGmG19-.js.map +0 -1
  435. package/src/runtime/api.js.map +0 -1
  436. package/src/runtime/blocks.js +0 -30
  437. package/src/runtime/blocks.js.map +0 -1
  438. package/src/runtime/collaboration.js +0 -45
  439. package/src/runtime/collaboration.js.map +0 -1
  440. package/src/runtime/delivery/DocumentField.js +0 -23
  441. package/src/runtime/delivery/DocumentField.js.map +0 -1
  442. package/src/runtime/delivery/DocumentRenderer.js +0 -61
  443. package/src/runtime/delivery/DocumentRenderer.js.map +0 -1
  444. package/src/runtime/delivery/DocumentScope.js +0 -41
  445. package/src/runtime/delivery/DocumentScope.js.map +0 -1
  446. package/src/runtime/delivery/blocks.js +0 -8
  447. package/src/runtime/delivery/blocks.js.map +0 -1
  448. package/src/runtime/delivery/context.js +0 -12
  449. package/src/runtime/delivery/context.js.map +0 -1
  450. package/src/runtime/delivery/document-page.js +0 -21
  451. package/src/runtime/delivery/document-page.js.map +0 -1
  452. package/src/runtime/delivery/document.js +0 -43
  453. package/src/runtime/delivery/document.js.map +0 -1
  454. package/src/runtime/delivery/error.js +0 -11
  455. package/src/runtime/delivery/error.js.map +0 -1
  456. package/src/runtime/delivery/plugin.js +0 -104
  457. package/src/runtime/delivery/plugin.js.map +0 -1
  458. package/src/runtime/delivery/preview.d.ts +0 -11
  459. package/src/runtime/delivery/preview.js +0 -6
  460. package/src/runtime/delivery/preview.js.map +0 -1
  461. package/src/runtime/delivery/types.d.ts +0 -2
  462. package/src/runtime/delivery/types.js +0 -1
  463. package/src/runtime/delivery/useCmsDocumentSeo.d.ts +0 -67
  464. package/src/runtime/delivery/useCmsDocumentSeo.js.map +0 -1
  465. package/src/runtime/delivery/useDocument.d.ts +0 -6
  466. package/src/runtime/delivery/useDocument.js +0 -23
  467. package/src/runtime/delivery/useDocument.js.map +0 -1
  468. package/src/runtime/delivery/useDocumentQuery.d.ts +0 -7
  469. package/src/runtime/delivery/useDocumentQuery.js +0 -29
  470. package/src/runtime/delivery/useDocumentQuery.js.map +0 -1
  471. package/src/runtime/forms/document.js +0 -38
  472. package/src/runtime/forms/document.js.map +0 -1
  473. package/src/runtime/forms/useCmsForm.js +0 -257
  474. package/src/runtime/forms/useCmsForm.js.map +0 -1
  475. package/src/runtime/i18n/translator.js +0 -58
  476. package/src/runtime/i18n/translator.js.map +0 -1
  477. package/src/runtime/i18n/useCmsI18n.d.ts +0 -13
  478. package/src/runtime/i18n/useCmsI18n.js +0 -38
  479. package/src/runtime/i18n/useCmsI18n.js.map +0 -1
  480. package/src/runtime/installation.js +0 -3
  481. package/src/runtime/plugin.js.map +0 -1
  482. package/src/runtime/preview/CmsStudioPreviewMarker.js +0 -29
  483. package/src/runtime/preview/CmsStudioPreviewMarker.js.map +0 -1
  484. package/src/runtime/preview/comark-document.js +0 -37
  485. package/src/runtime/preview/comark-document.js.map +0 -1
  486. package/src/runtime/preview/connection.js +0 -3
  487. package/src/runtime/preview/controller.js +0 -265
  488. package/src/runtime/preview/controller.js.map +0 -1
  489. package/src/runtime/preview/crypto.js +0 -16
  490. package/src/runtime/preview/crypto.js.map +0 -1
  491. package/src/runtime/preview/overlay.js +0 -122
  492. package/src/runtime/preview/overlay.js.map +0 -1
  493. package/src/runtime/preview/plugin.client.js +0 -68
  494. package/src/runtime/preview/plugin.client.js.map +0 -1
  495. package/src/runtime/preview/preview.css +0 -91
  496. package/src/runtime/preview/protocol.d.ts +0 -16
  497. package/src/runtime/preview/protocol.js +0 -23
  498. package/src/runtime/preview/protocol.js.map +0 -1
  499. package/src/runtime/preview/regions.js +0 -142
  500. package/src/runtime/preview/regions.js.map +0 -1
  501. package/src/runtime/preview/store.js +0 -4
  502. package/src/runtime/sitemap-entries.js +0 -17
  503. package/src/runtime/sitemap-entries.js.map +0 -1
  504. package/src/runtime/sitemap.js +0 -23
  505. package/src/runtime/sitemap.js.map +0 -1
  506. package/src/runtime/studio-app.js +0 -17
  507. package/src/runtime/studio-app.js.map +0 -1
  508. package/src/runtime/studio-document.js +0 -46
  509. package/src/runtime/studio-document.js.map +0 -1
  510. package/src/runtime/studio-entry.js +0 -19
  511. package/src/runtime/studio-entry.js.map +0 -1
  512. package/src/runtime/studio-navigation.js +0 -11
  513. package/src/runtime/studio-navigation.js.map +0 -1
  514. package/src/scalars-CA6kyipS.d.ts +0 -7
  515. package/src/scalars-CVZqT3L0.js +0 -22
  516. package/src/scalars-CVZqT3L0.js.map +0 -1
  517. package/src/store-X1e1o_MF.js +0 -209
  518. package/src/store-X1e1o_MF.js.map +0 -1
  519. package/src/types-DZ0IV-Ow.d.ts +0 -101
  520. package/studio/CreateDocumentDialog-C4_JBo1w.js +0 -335
  521. package/studio/SelectMenu-wXqxymUw.js +0 -34045
  522. package/studio/collaboration-DcK2F6v9.js +0 -4566
  523. package/studio/editor-P2rB7Csp.js +0 -30128
  524. package/studio/rolldown-runtime-Dy4uBu1J.js +0 -11
@@ -0,0 +1,73 @@
1
+ import { i as configurationDefaults, n as ResolvedConfiguration, s as runtimeFromEnvironment } from "./Config-CMiwciub.js";
2
+ import { Effect, Schema } from "effect";
3
+ import { stat } from "node:fs/promises";
4
+ import { resolve } from "node:path";
5
+ import { loadConfig, setupDotenv } from "c12";
6
+ //#region ../cli/src/Configuration.ts
7
+ var ConfigurationError = class extends Schema.TaggedError()("Configuration.Error", { message: Schema.String }) {};
8
+ /** Shared by Nuxt and every CLI command. Loading never provisions resources or writes secrets. */
9
+ const load = Effect.fn("Configuration.load")(function* (directory, envName = "development", envFile, inherited = process.env) {
10
+ const project = resolve(directory);
11
+ const file = resolve(project, "cms.config.ts");
12
+ const environmentFile = resolve(project, envFile || ".env");
13
+ const environment = yield* Effect.tryPromise({
14
+ try: async () => {
15
+ const selected = { ...inherited };
16
+ if (envFile === false) return selected;
17
+ if (envFile && !(await stat(environmentFile)).isFile()) throw new Error("Missing environment file");
18
+ await setupDotenv({
19
+ cwd: project,
20
+ fileName: environmentFile,
21
+ env: selected,
22
+ interpolate: true
23
+ });
24
+ return selected;
25
+ },
26
+ catch: () => new ConfigurationError({ message: `Could not read ${environmentFile}.` })
27
+ });
28
+ const configuration = yield* Effect.gen(function* () {
29
+ const candidate = (yield* Effect.tryPromise({
30
+ try: () => loadConfig({
31
+ name: "cms",
32
+ cwd: project,
33
+ configFile: "cms.config.ts",
34
+ configFileRequired: true,
35
+ envName,
36
+ rcFile: false,
37
+ globalRc: false,
38
+ packageJson: false,
39
+ extend: false,
40
+ giget: false,
41
+ dotenv: false,
42
+ omit$Keys: true,
43
+ defaults: configurationDefaults
44
+ }),
45
+ catch: () => new ConfigurationError({ message: `Could not load ${file}.` })
46
+ })).config;
47
+ const configured = yield* Schema.decodeUnknownEffect(ResolvedConfiguration)(candidate, { onExcessProperty: "error" });
48
+ const runtime = yield* Effect.try(() => runtimeFromEnvironment(configured.runtime, environment));
49
+ const bootstrap = configured.bootstrap;
50
+ return {
51
+ ...configured,
52
+ runtime,
53
+ ...bootstrap ? { bootstrap: {
54
+ ...bootstrap,
55
+ administrator: {
56
+ ...bootstrap.administrator,
57
+ email: environment.NUXT_CMS_BOOTSTRAP_ADMINISTRATOR_EMAIL ?? bootstrap.administrator.email,
58
+ password: environment.NUXT_CMS_BOOTSTRAP_ADMINISTRATOR_PASSWORD ?? bootstrap.administrator.password
59
+ }
60
+ } } : void 0
61
+ };
62
+ }).pipe(Effect.mapError(() => new ConfigurationError({ message: `Could not load ${file}. Check the CMS configuration and NUXT_CMS_* overrides for ${envName}.` })));
63
+ return {
64
+ project,
65
+ configuration,
66
+ environment,
67
+ environmentFile,
68
+ envName,
69
+ site: new URL(configuration.runtime.origin)
70
+ };
71
+ });
72
+ //#endregion
73
+ export { load as t };
@@ -0,0 +1,488 @@
1
+ import { i as MediaId } from "./Media-DSyvd14o.js";
2
+ import { h as CmsData, m as errors, p as api, t as ApiError } from "./StudioApi-CXLwwocX.js";
3
+ import { Effect, FileSystem, Layer, Path, Schema, Stream } from "effect";
4
+ import { Cookies, FetchHttpClient, HttpBody, HttpClient, HttpClientError, HttpClientRequest, HttpClientResponse } from "effect/http";
5
+ import { HttpApiClient } from "effect/http-api";
6
+ import { createHash } from "node:crypto";
7
+ import { PassThrough, Readable } from "node:stream";
8
+ import { crc32 } from "node:zlib";
9
+ import * as NodeStream from "@effect/platform-node/NodeStream";
10
+ import { openPromise } from "yauzl";
11
+ import { ZipFile } from "yazl";
12
+ //#region ../model/src/Readiness.ts
13
+ /** Public diagnostics contain recovery guidance, never provider errors or installation secrets. */
14
+ const Check = Schema.Struct({
15
+ status: Schema.Literals([
16
+ "passed",
17
+ "failed",
18
+ "skipped"
19
+ ]),
20
+ code: Schema.NonEmptyString,
21
+ message: Schema.NonEmptyString,
22
+ action: Schema.Literals([
23
+ "none",
24
+ "retry",
25
+ "check_configuration",
26
+ "check_database",
27
+ "check_media",
28
+ "restart"
29
+ ])
30
+ });
31
+ const Report = Schema.Struct({
32
+ status: Schema.Literals(["ready", "unavailable"]),
33
+ checks: Schema.Struct({
34
+ configuration: Check,
35
+ database: Check,
36
+ media: Check,
37
+ installation: Check
38
+ })
39
+ }).check(Schema.makeFilter((report) => report.status === "ready" === Object.values(report.checks).every((check) => check.status === "passed")));
40
+ //#endregion
41
+ //#region ../cli/src/internal/connection.ts
42
+ const layer = FetchHttpClient.layer.pipe(Layer.provide(Layer.succeed(FetchHttpClient.RequestInit, { redirect: "error" })));
43
+ var ClientError = class extends Schema.TaggedError()("Client.Error", {
44
+ message: Schema.String,
45
+ status: Schema.optionalKey(Schema.Int),
46
+ cause: Schema.optionalKey(Schema.Defect())
47
+ }) {};
48
+ var ReadinessError = class extends Schema.TaggedError()("Client.ReadinessError", {
49
+ code: Schema.String,
50
+ message: Schema.String,
51
+ action: Check.fields.action
52
+ }) {};
53
+ const make$1 = Effect.fn("Client.connect")(function* (site, initialSession = "") {
54
+ const loopback = [
55
+ "localhost",
56
+ "127.0.0.1",
57
+ "[::1]"
58
+ ].includes(site.hostname);
59
+ if (site.protocol !== "https:" && !(site.protocol === "http:" && loopback)) return yield* new ClientError({ message: "Use HTTPS for a deployed CMS. HTTP is allowed only on localhost." });
60
+ if (site.username || site.password) return yield* new ClientError({ message: "Supply credentials separately from the installation URL." });
61
+ const transport = yield* HttpClient.HttpClient;
62
+ let session = initialSession;
63
+ const authenticated = transport.pipe(HttpClient.mapRequest((request) => {
64
+ let input = session ? HttpClientRequest.setHeader("cookie", session)(request) : request;
65
+ if (request.method !== "GET" && request.method !== "HEAD") input = HttpClientRequest.setHeader("origin", site.origin)(input);
66
+ return input;
67
+ }), HttpClient.withScope);
68
+ const api$1 = yield* HttpApiClient.makeWith(api, {
69
+ baseUrl: site,
70
+ httpClient: authenticated
71
+ });
72
+ const authRequest = Effect.fn("Client.authRequest")(function* (action, body) {
73
+ const request = HttpClientRequest.post(new URL(`/_cms/auth/${action}`, site)).pipe(HttpClientRequest.bodyJsonUnsafe(body));
74
+ const response = yield* authenticated.execute(request);
75
+ if (response.status < 200 || response.status >= 300) {
76
+ const details = yield* response.text.pipe(Effect.orElseSucceed(() => ""));
77
+ return yield* new ClientError({
78
+ message: `Authentication failed (${response.status}): ${details.slice(0, 2e3)}`,
79
+ status: response.status
80
+ });
81
+ }
82
+ return response;
83
+ });
84
+ const signIn = Effect.fn("Client.signIn")(function* (email, password) {
85
+ const response = yield* authRequest("sign-in/email", {
86
+ email,
87
+ password
88
+ });
89
+ const cookie = Cookies.toCookieHeader(response.cookies);
90
+ if (!cookie) return yield* new ClientError({ message: "Sign-in did not return a session." });
91
+ session = cookie;
92
+ return yield* api$1.connection.user();
93
+ }, Effect.scoped);
94
+ return {
95
+ api: api$1,
96
+ readiness: Effect.fn("Client.readiness")(function* () {
97
+ const response = yield* transport.get(new URL("/_cms/health/ready", site)).pipe(Effect.mapError(() => new ReadinessError({
98
+ code: "connection_failed",
99
+ action: "retry",
100
+ message: "Could not reach the CMS readiness endpoint. Check the configured origin and start the server."
101
+ })));
102
+ if (response.status !== 200 && response.status !== 503) return yield* new ReadinessError({
103
+ code: "response_rejected",
104
+ action: "check_configuration",
105
+ message: `The readiness endpoint returned HTTP ${response.status}. Check the origin, CMS route, and reverse proxy.`
106
+ });
107
+ const report = yield* HttpClientResponse.schemaBodyJson(Report)(response).pipe(Effect.mapError(() => new ReadinessError({
108
+ code: "response_invalid",
109
+ action: "check_configuration",
110
+ message: "The readiness endpoint returned an invalid report. Check the origin and deployed CMS version."
111
+ })));
112
+ if (response.status === 200 !== (report.status === "ready")) return yield* new ReadinessError({
113
+ code: "response_invalid",
114
+ action: "check_configuration",
115
+ message: "The readiness HTTP status disagrees with its report. Check the CMS route and reverse proxy."
116
+ });
117
+ return report;
118
+ }, (effect) => effect.pipe(Effect.timeoutOrElse({
119
+ duration: "5 seconds",
120
+ orElse: () => Effect.fail(new ReadinessError({
121
+ code: "connection_timeout",
122
+ action: "retry",
123
+ message: "The readiness request timed out after five seconds. Check server startup and proxy logs, then retry cms doctor."
124
+ }))
125
+ }), Effect.scoped)),
126
+ get session() {
127
+ return session;
128
+ },
129
+ signIn,
130
+ initialize: Effect.fn("Client.initialize")(function* (input) {
131
+ yield* api$1.session.initialize({ payload: input });
132
+ return yield* signIn(input.email, input.password);
133
+ }, Effect.scoped),
134
+ signOut: Effect.fn("Client.signOut")(function* () {
135
+ yield* authRequest("sign-out", {});
136
+ session = "";
137
+ }, Effect.scoped),
138
+ resetPassword: Effect.fn("Client.resetPassword")(function* (token, newPassword) {
139
+ yield* authRequest("reset-password", {
140
+ token,
141
+ newPassword
142
+ });
143
+ }, Effect.scoped),
144
+ mediaAsset: (id) => api$1.media.get({ params: { id } }).pipe(Effect.catchTag("Studio.NotFound", () => Effect.succeed(null))),
145
+ mediaStream: (id) => Stream.unwrap(authenticated.get(new URL(`/_cms/media/${id}`, site)).pipe(Effect.flatMap((response) => {
146
+ if (response.status !== 200) return new ClientError({
147
+ message: `Could not read media ${id}.`,
148
+ status: response.status
149
+ });
150
+ return Effect.succeed(response.stream);
151
+ }))),
152
+ uploadMedia: Effect.fn("Client.uploadMedia")(function* (input) {
153
+ const fs = yield* FileSystem.FileSystem;
154
+ return yield* (yield* HttpApiClient.makeWith(api, {
155
+ baseUrl: site,
156
+ httpClient: authenticated.pipe(HttpClient.mapRequest((request) => HttpClientRequest.setBody(request, HttpBody.stream(fs.stream(input.filePath), input.mimeType, input.byteSize))))
157
+ })).media.upload({ headers: {
158
+ "content-type": input.mimeType,
159
+ "x-cms-media-id": input.id,
160
+ "x-cms-media-name": encodeURIComponent(input.name),
161
+ "x-cms-media-folder": encodeURIComponent(input.folder),
162
+ "x-cms-media-size": input.byteSize,
163
+ "x-cms-media-sha256": input.sha256
164
+ } });
165
+ }, Effect.scoped)
166
+ };
167
+ });
168
+ //#endregion
169
+ //#region ../cli/src/DataArchive.ts
170
+ var SnapshotError = class extends Schema.TaggedError()("Data.InvalidSnapshot", {
171
+ message: Schema.String,
172
+ cause: Schema.optionalKey(Schema.Defect())
173
+ }) {};
174
+ const mediaPath = (asset) => `media/${asset.sha256}`;
175
+ const verifiedMedia = (asset, source) => Stream.suspend(() => {
176
+ const hash = createHash("sha256");
177
+ let byteSize = 0;
178
+ return source.pipe(Stream.mapEffect((chunk) => {
179
+ byteSize += chunk.byteLength;
180
+ if (byteSize > asset.byteSize) return Effect.fail(new SnapshotError({ message: `Media ${asset.id} exceeds its exported size.` }));
181
+ hash.update(chunk);
182
+ return Effect.succeed(chunk);
183
+ }), Stream.concat(Stream.fromEffect(Effect.suspend(() => byteSize === asset.byteSize && hash.digest("hex") === asset.sha256 ? Effect.succeed(/* @__PURE__ */ new Uint8Array(0)) : Effect.fail(new SnapshotError({ message: `Media ${asset.id} has incorrect exported bytes.` }))))));
184
+ });
185
+ const entryStream = (archive, entry) => Stream.unwrap(Effect.gen(function* () {
186
+ const input = yield* Effect.acquireRelease(Effect.tryPromise({
187
+ try: () => archive.openReadStreamPromise(entry),
188
+ catch: (cause) => new SnapshotError({
189
+ message: `Could not read ${entry.fileName}.`,
190
+ cause
191
+ })
192
+ }), (input) => Effect.sync(() => input.destroy()));
193
+ let checksum = 0;
194
+ return NodeStream.fromReadable({
195
+ evaluate: () => input,
196
+ onError: (cause) => new SnapshotError({
197
+ message: `Invalid ZIP entry ${entry.fileName}.`,
198
+ cause
199
+ })
200
+ }).pipe(Stream.map((chunk) => {
201
+ checksum = crc32(chunk, checksum);
202
+ return chunk;
203
+ }), Stream.concat(Stream.fromEffect(Effect.suspend(() => checksum === entry.crc32 ? Effect.succeed(/* @__PURE__ */ new Uint8Array(0)) : Effect.fail(new SnapshotError({ message: `ZIP checksum mismatch for ${entry.fileName}.` }))))));
204
+ }));
205
+ /** Validate the complete snapshot in private staging before any network mutation. */
206
+ const readSnapshot = Effect.fn("DataArchive.read")(function* (location) {
207
+ const fs = yield* FileSystem.FileSystem;
208
+ const path = yield* Path.Path;
209
+ const file = path.resolve(location);
210
+ const archive = yield* Effect.acquireRelease(Effect.tryPromise({
211
+ try: () => openPromise(file, {
212
+ autoClose: false,
213
+ strictFileNames: true
214
+ }),
215
+ catch: (cause) => new SnapshotError({
216
+ message: `Could not open snapshot ${file}.`,
217
+ cause
218
+ })
219
+ }), (archive) => Effect.sync(() => archive.close()));
220
+ const entries = /* @__PURE__ */ new Map();
221
+ yield* Stream.fromAsyncIterable(archive.eachEntry(), (cause) => new SnapshotError({
222
+ message: `Invalid snapshot ${file}.`,
223
+ cause
224
+ })).pipe(Stream.runForEach((entry) => Effect.gen(function* () {
225
+ const kind = entry.externalFileAttributes >>> 16 & 61440;
226
+ if (entries.has(entry.fileName) || entry.fileName !== "snapshot.json" && !/^media\/[a-f0-9]{64}$/u.test(entry.fileName) || kind !== 0 && kind !== 32768) return yield* new SnapshotError({ message: `Unexpected or duplicate ZIP entry ${entry.fileName}.` });
227
+ entries.set(entry.fileName, entry);
228
+ })));
229
+ const metadata = entries.get("snapshot.json");
230
+ if (!metadata) return yield* new SnapshotError({ message: "The snapshot is missing snapshot.json." });
231
+ const json = yield* entryStream(archive, metadata).pipe(Stream.decodeText, Stream.mkString);
232
+ const data = yield* Schema.decodeEffect(Schema.fromJsonString(CmsData), { onExcessProperty: "error" })(json).pipe(Effect.mapError((cause) => new SnapshotError({
233
+ message: `Invalid CMS state in ${file}: ${cause.message}`,
234
+ cause
235
+ })));
236
+ const staging = yield* fs.makeTempDirectoryScoped({ prefix: "cms-import-" });
237
+ const verified = /* @__PURE__ */ new Map();
238
+ const media = [];
239
+ for (const asset of data.media) {
240
+ const name = mediaPath(asset);
241
+ const entry = entries.get(name);
242
+ if (!entry || entry.uncompressedSize !== asset.byteSize) return yield* new SnapshotError({ message: `Missing or incorrect media bytes for ${asset.id}.` });
243
+ let filePath = verified.get(name);
244
+ if (!filePath) {
245
+ filePath = path.join(staging, asset.sha256);
246
+ yield* verifiedMedia(asset, entryStream(archive, entry)).pipe(Stream.run(fs.sink(filePath, {
247
+ flag: "wx",
248
+ mode: 384
249
+ })));
250
+ verified.set(name, filePath);
251
+ }
252
+ media.push({
253
+ metadata: asset,
254
+ filePath
255
+ });
256
+ }
257
+ if (entries.size !== verified.size + 1) return yield* new SnapshotError({ message: "The snapshot contains media absent from snapshot.json." });
258
+ return {
259
+ data,
260
+ media
261
+ };
262
+ });
263
+ /** Stream a complete ZIP into private staging, then publish it atomically. */
264
+ const writeSnapshot = Effect.fn("DataArchive.write")(function* (location, data, readMedia, force = false) {
265
+ const fs = yield* FileSystem.FileSystem;
266
+ const path = yield* Path.Path;
267
+ const file = path.resolve(location);
268
+ if ((yield* fs.exists(file)) && !force) return yield* new SnapshotError({ message: `${file} already exists. Use --force to overwrite the snapshot.` });
269
+ yield* fs.makeDirectory(path.dirname(file), { recursive: true });
270
+ const staging = yield* fs.makeTempDirectoryScoped({
271
+ directory: path.dirname(file),
272
+ prefix: ".cms-export-"
273
+ });
274
+ const temporary = path.join(staging, "snapshot.zip");
275
+ const encoded = yield* Schema.encodeEffect(CmsData)(data);
276
+ const files = /* @__PURE__ */ new Map();
277
+ for (const asset of data.media) files.set(mediaPath(asset), asset);
278
+ yield* Effect.scoped(Effect.gen(function* () {
279
+ const inputs = [];
280
+ const options = {
281
+ mtime: new Date(1980, 0, 1),
282
+ forceDosTimestamp: true,
283
+ mode: 33152
284
+ };
285
+ yield* Effect.addFinalizer(() => Effect.sync(() => inputs.forEach(({ input }) => input.destroy())));
286
+ const metadata = Readable.from([Buffer.from(JSON.stringify(encoded))]);
287
+ inputs.push({
288
+ name: "snapshot.json",
289
+ input: metadata
290
+ });
291
+ for (const [name, asset] of files) {
292
+ const input = yield* NodeStream.toReadable(verifiedMedia(asset, readMedia(asset.id)));
293
+ inputs.push({
294
+ name,
295
+ input,
296
+ size: asset.byteSize
297
+ });
298
+ }
299
+ const fileHandle = yield* fs.open(temporary, {
300
+ flag: "wx",
301
+ mode: 384
302
+ });
303
+ const stream = NodeStream.fromReadable({
304
+ evaluate: () => {
305
+ const archive = new ZipFile();
306
+ const output = new PassThrough();
307
+ archive.on("error", (error) => output.destroy(error));
308
+ archive.outputStream.pipe(output);
309
+ for (const { name, input, size } of inputs) {
310
+ input.on("error", (error) => archive.emit("error", error));
311
+ archive.addReadStream(input, name, {
312
+ ...options,
313
+ compress: size === void 0,
314
+ size
315
+ });
316
+ }
317
+ archive.end();
318
+ return output;
319
+ },
320
+ onError: (cause) => new SnapshotError({
321
+ message: `Could not write snapshot ${file}.`,
322
+ cause
323
+ })
324
+ });
325
+ yield* Stream.runForEach(stream, (chunk) => fileHandle.writeAll(chunk));
326
+ yield* fileHandle.sync;
327
+ }));
328
+ if (force) yield* fs.rename(temporary, file);
329
+ else yield* fs.link(temporary, file);
330
+ return {
331
+ file,
332
+ documents: data.documents.length,
333
+ revisions: data.documents.reduce((total, document) => total + document.revisions.length, 0),
334
+ media: data.media.length
335
+ };
336
+ }, Effect.scoped);
337
+ //#endregion
338
+ //#region ../cli/src/Errors.ts
339
+ const ErrorDetails = Schema.Struct({
340
+ code: Schema.String,
341
+ message: Schema.String,
342
+ status: Schema.optionalKey(Schema.Int),
343
+ details: Schema.optionalKey(Schema.Json)
344
+ });
345
+ function errorDetails(error) {
346
+ for (const definition of errors) if (Schema.is(definition)(error)) return {
347
+ code: error._tag,
348
+ message: error.error,
349
+ status: Schema.resolveAnnotations(definition)?.httpApiStatus ?? 500,
350
+ details: Schema.encodeSync(ApiError)(error)
351
+ };
352
+ if (HttpClientError.isHttpClientError(error)) {
353
+ if (error.reason instanceof HttpClientError.TransportError) return {
354
+ code: "Client.NetworkError",
355
+ message: "Could not reach the CMS."
356
+ };
357
+ if (error.reason instanceof HttpClientError.DecodeError || error.reason instanceof HttpClientError.EmptyBodyError) return {
358
+ code: "Client.InvalidResponse",
359
+ message: "The CMS returned an invalid response.",
360
+ status: error.reason.response.status
361
+ };
362
+ if (error.reason instanceof HttpClientError.StatusCodeError) return {
363
+ code: "Client.ResponseError",
364
+ message: "The CMS rejected the request.",
365
+ status: error.reason.response.status
366
+ };
367
+ return {
368
+ code: "Client.RequestError",
369
+ message: "Could not construct the CMS request."
370
+ };
371
+ }
372
+ if (Schema.is(Schema.Struct({
373
+ _tag: Schema.String,
374
+ message: Schema.String,
375
+ status: Schema.optionalKey(Schema.Int)
376
+ }))(error)) return error.status === void 0 ? {
377
+ code: error._tag,
378
+ message: error.message
379
+ } : {
380
+ code: error._tag,
381
+ message: error.message,
382
+ status: error.status
383
+ };
384
+ return {
385
+ code: "Client.UnexpectedError",
386
+ message: error instanceof Error ? error.message : "CMS request failed."
387
+ };
388
+ }
389
+ //#endregion
390
+ //#region ../cli/src/DataTransfer.ts
391
+ var ImportError = class extends Schema.TaggedError()("Data.ImportFailed", {
392
+ message: Schema.String,
393
+ phase: Schema.Literals([
394
+ "prepare",
395
+ "upload",
396
+ "apply"
397
+ ]),
398
+ outcome: Schema.Literals([
399
+ "not-applied",
400
+ "partial",
401
+ "unknown"
402
+ ]),
403
+ uploadedMedia: Schema.Array(MediaId),
404
+ uncertainMediaId: Schema.NullOr(MediaId),
405
+ error: ErrorDetails
406
+ }) {};
407
+ function make(connection) {
408
+ return {
409
+ export: Effect.fn("DataTransfer.export")(function* (file, force = false) {
410
+ const data = yield* connection.api.data.snapshot();
411
+ return yield* writeSnapshot(file, data, connection.mediaStream, force);
412
+ }),
413
+ import: Effect.fn("DataTransfer.import")((file, options = {}) => {
414
+ let phase = "prepare";
415
+ const uploadedMedia = [];
416
+ let uncertainMediaId = null;
417
+ return Effect.gen(function* () {
418
+ const bundle = yield* readSnapshot(file);
419
+ const input = {
420
+ data: bundle.data,
421
+ replace: options.replace ?? false
422
+ };
423
+ const plan = yield* connection.api.data.plan({ payload: input });
424
+ const media = yield* Effect.forEach(bundle.media, (file) => connection.mediaAsset(file.metadata.id).pipe(Effect.map((remote) => ({
425
+ file,
426
+ remote
427
+ }))));
428
+ if (media.some(({ file: { metadata }, remote }) => remote && (remote.mimeType !== metadata.mimeType || remote.byteSize !== metadata.byteSize || remote.sha256 !== metadata.sha256))) return yield* new ImportError({
429
+ message: "A media ID has different bytes in the target CMS.",
430
+ phase,
431
+ outcome: "not-applied",
432
+ uploadedMedia,
433
+ uncertainMediaId,
434
+ error: {
435
+ code: "Data.MediaConflict",
436
+ message: "Replace the conflicting asset with a new media identity."
437
+ }
438
+ });
439
+ const uploads = media.flatMap(({ file, remote }) => remote ? [] : [file]);
440
+ const summary = {
441
+ ...plan,
442
+ media: {
443
+ uploaded: uploads.length,
444
+ unchanged: media.length - uploads.length
445
+ }
446
+ };
447
+ if (options.dryRun) return {
448
+ ...summary,
449
+ status: "planned"
450
+ };
451
+ phase = "upload";
452
+ for (const upload of uploads) {
453
+ uncertainMediaId = upload.metadata.id;
454
+ yield* connection.uploadMedia({
455
+ ...upload.metadata,
456
+ filePath: upload.filePath
457
+ });
458
+ uploadedMedia.push(upload.metadata.id);
459
+ uncertainMediaId = null;
460
+ }
461
+ phase = "apply";
462
+ const accepted = yield* connection.api.data.apply({ payload: {
463
+ ...input,
464
+ stamp: plan.stamp
465
+ } });
466
+ return {
467
+ ...accepted,
468
+ media: summary.media,
469
+ status: accepted.status === "unchanged" ? "unchanged" : "applied"
470
+ };
471
+ }).pipe(Effect.catch((error) => {
472
+ if (error instanceof ImportError) return Effect.fail(error);
473
+ const details = errorDetails(error);
474
+ const rejected = Schema.is(ApiError)(error) && details.status !== void 0 && details.status >= 400 && details.status < 500;
475
+ return Effect.fail(new ImportError({
476
+ message: details.message,
477
+ phase,
478
+ outcome: !rejected && (phase === "apply" || uncertainMediaId !== null) ? "unknown" : uploadedMedia.length ? "partial" : "not-applied",
479
+ uploadedMedia,
480
+ uncertainMediaId: rejected ? null : uncertainMediaId,
481
+ error: details
482
+ }));
483
+ }));
484
+ })
485
+ };
486
+ }
487
+ //#endregion
488
+ export { ReadinessError as a, ClientError as i, make as n, layer as o, errorDetails as r, make$1 as s, ImportError as t };
@@ -0,0 +1,3 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import { SqliteClient } from "@effect/sql-sqlite-node";
3
+ import "drizzle-orm/effect-sqlite-node";
@@ -0,0 +1,28 @@
1
+ import { r as MediaSelection } from "./Media-BQ0uL4w7.js";
2
+ import { r as PublishedDocument, t as DeliveryRedirect } from "./Document-TgwYKJZM.js";
3
+ import { n as AuthoredImage, t as LinkTarget } from "./Links-Dx1yOni8.js";
4
+ import { a as ResolvedLocaleDefinition } from "./Locales-jwbmJaOp.js";
5
+ import "./Seo-BcpqxoAs.js";
6
+ import { i as DocumentQuerySort, n as DocumentQueryItem, r as DocumentQueryPage, t as DocumentQuery } from "./Query-C0kGJF5_.js";
7
+ import { n as DeliveredDocumentPage, r as DeliveredQueryItem, t as DeliveredDocument } from "./forms-3xuf0Ym7.js";
8
+ import { MaybeRefOrGetter } from "vue";
9
+ import { useRequestFetch, useRoute } from "nuxt/app";
10
+ //#region src/runtime/delivery/internal/useDeliveryContext.d.ts
11
+ type DeliveryDocument = DeliveredDocument | DeliveryRedirect | DeliveredQueryItem;
12
+ //#endregion
13
+ //#region src/runtime/delivery/internal/nuxtDelivery.d.ts
14
+ export declare const useCmsDocument: (path: import("vue").MaybeRefOrGetter<string>) => import("nuxt/app").AsyncData<DeliveryDocument | undefined, import("nuxt/server").NuxtError<unknown> | undefined>, useCmsDocumentQuery: (input: import("vue").MaybeRefOrGetter<DocumentQuery>) => import("nuxt/app").AsyncData<DeliveredDocumentPage, import("nuxt/server").NuxtError<unknown> | undefined>, useCmsDocumentSeo: (document: import("vue").MaybeRefOrGetter<PublishedDocument | DocumentQueryItem | DeliveryRedirect | null | undefined>) => Promise<void>;
15
+ //#endregion
16
+ //#region src/runtime/delivery/useCmsLocale.d.ts
17
+ /** URL locale and site-path helpers; UI message catalogs belong to the Nuxt site. */
18
+ export declare function useCmsLocale(): {
19
+ locale: import("vue").ComputedRef<string | undefined>;
20
+ locales: ResolvedLocaleDefinition[];
21
+ defaultLocale: string | undefined;
22
+ direction: import("vue").ComputedRef<"ltr" | "rtl">;
23
+ sitePath: import("vue").ComputedRef<string>;
24
+ localePath: (path: string, code?: string | undefined) => string;
25
+ switchLocalePath: (code: string, destination?: string) => string;
26
+ };
27
+ //#endregion
28
+ export { AuthoredImage, type DeliveredDocument, type DeliveredDocumentPage, type DeliveredQueryItem, type DocumentQuery, type DocumentQueryPage, type DocumentQuerySort, type LinkTarget, type MediaSelection };
@@ -0,0 +1,7 @@
1
+ import { t as AuthoredImage } from "./Image-CJWPLnhP.js";
2
+ import { n as useCmsDocumentQuery, r as useCmsDocumentSeo, t as useCmsDocument } from "./nuxtDelivery-BYX_Cddb.js";
3
+ import "./runtime/delivery/useCmsDocument.js";
4
+ import "./runtime/delivery/useCmsDocumentQuery.js";
5
+ import "./runtime/delivery/useCmsDocumentSeo.js";
6
+ import { useCmsLocale } from "./runtime/delivery/useCmsLocale.js";
7
+ export { AuthoredImage, useCmsDocument, useCmsDocumentQuery, useCmsDocumentSeo, useCmsLocale };