@phtngyn/cms 0.2.0-beta.7 → 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.
- package/LICENSE +18 -10
- package/README.md +59 -401
- package/drizzle/20261003215543_initial/migration.sql +251 -0
- package/drizzle/20261003215543_initial/snapshot.json +1941 -0
- package/package.json +75 -71
- package/src/Authoring.d.ts +41 -49
- package/src/Authoring.js +1 -1
- package/src/Blocks-BrxSemnd.js +40 -0
- package/src/Client.d.ts +8186 -0
- package/src/Client.js +41 -0
- package/src/Collections.d.ts +142 -0
- package/src/Collections.js +142 -0
- package/src/Config-CMiwciub.js +130 -0
- package/src/Config.d.ts +172 -0
- package/src/Config.js +2 -0
- package/src/Configuration-Dk2k3OIc.js +73 -0
- package/src/DataTransfer-BmECvPHB.js +488 -0
- package/src/Database-DSsNCGft.d.ts +3 -0
- package/src/Delivery.d.ts +28 -0
- package/src/Delivery.js +7 -0
- package/src/Document-CKXMSEf1.js +293 -0
- package/src/Document-TgwYKJZM.d.ts +220 -0
- package/src/DocumentRenderer-Wz2xaNyf.js +394 -0
- package/src/EditorSchema-wrDv-id6.js +296 -0
- package/src/Fields-BegSgYhj.d.ts +166 -0
- package/src/Fields-ioGaMEh9.js +130 -0
- package/src/Forms-BuKAXQxr.d.ts +203 -0
- package/src/Forms.d.ts +48 -11
- package/src/Forms.js +342 -7
- package/src/I18n-Ckf9h0rC.js +154 -0
- package/src/I18n.d.ts +45 -2
- package/src/I18n.js +2 -1
- package/src/Image-CJWPLnhP.js +110 -0
- package/src/Links-CJYyy7rC.js +28 -0
- package/src/Links-Dx1yOni8.d.ts +28 -0
- package/src/Locales-Ch7a5xuA.js +67 -0
- package/src/Locales-jwbmJaOp.d.ts +43 -0
- package/src/Locales.d.ts +3 -0
- package/src/Locales.js +3 -0
- package/src/Media-BQ0uL4w7.d.ts +15 -0
- package/src/Media-DSyvd14o.js +87 -0
- package/src/Module.d.ts +2 -10
- package/src/Module.js +1039 -162
- package/src/Operations.d.ts +57 -0
- package/src/Operations.js +263 -0
- package/src/People-DvNZauWw.js +69 -0
- package/src/PreviewFocus-C_EelZO5.js +104 -0
- package/src/Query-C0kGJF5_.d.ts +261 -0
- package/src/RevisionPreview-IVwbJ9Wy.js +133 -0
- package/src/Routes-BaZvm2LE.js +126 -0
- package/src/Routes-DM1rRp3r.d.ts +15 -0
- package/src/S3MediaObjects-y-WacEi9.js +193 -0
- package/src/Seo-BcpqxoAs.d.ts +57 -0
- package/src/Seo-CjNUtUkj.js +254 -0
- package/src/StudioApi-CXLwwocX.js +833 -0
- package/src/StudioErrors-T5zLGQ1M.js +117 -0
- package/src/StudioErrors-kq-E44lQ.d.ts +104 -0
- package/src/StudioServer.d.ts +20 -0
- package/src/StudioServer.js +34 -0
- package/src/answers-DcTg0Xv2.js +41 -0
- package/src/cli.js +681 -187
- package/src/contracts-rprW3ZOB.js +130 -0
- package/src/forms-3xuf0Ym7.d.ts +206 -0
- package/src/localeConfiguration-BPbkLi7-.js +32 -0
- package/src/localeContext-DhF3SPvM.js +59 -0
- package/src/locales-6OD4XGIZ.js +12 -0
- package/src/nuxtDelivery-BYX_Cddb.js +466 -0
- package/src/plugin-DTYuDaQu.js +7171 -0
- package/src/previewContext-dt3ZUh-w.js +4 -0
- package/src/previewRegions-CXjk5cbP.js +145 -0
- package/src/previewSource-fb-q3ESM.js +144 -0
- package/src/rendering-D9LVeEKX.js +47 -0
- package/src/rolldown-runtime-8H4AJuhK.js +14 -0
- package/src/runtime/CmsImage.js +38 -0
- package/src/runtime/DocumentPage.vue +10 -0
- package/src/runtime/DocumentPageContent.js +48 -0
- package/src/runtime/DocumentRenderer.d.ts +129 -0
- package/src/runtime/DocumentRenderer.js +2 -0
- package/src/runtime/api.js +48 -6
- package/src/runtime/delivery/useCmsDocument.js +2 -0
- package/src/runtime/delivery/useCmsDocumentQuery.js +2 -0
- package/src/runtime/delivery/useCmsDocumentSeo.js +2 -114
- package/src/runtime/delivery/useCmsLocale.js +10 -0
- package/src/runtime/plugin.js +2 -40
- package/src/runtime/preview.css +85 -0
- package/src/runtime/preview.js +277 -0
- package/src/runtime/previewSource.js +82 -0
- package/src/runtime/revisionPrivacy.js +13 -0
- package/src/runtime/studio.js +10 -0
- package/src/runtime/studioIcons.js +36 -0
- package/src/validation-3pggwcnm.js +396 -0
- package/src/validation-DpUwPC8Y.js +224 -0
- package/studio/THIRD-PARTY-LICENSES.md +2406 -0
- package/studio/chunks/AccountPage-DL3DitDM.js +288 -0
- package/studio/chunks/AccountPage-DL3DitDM.js.br +0 -0
- package/studio/chunks/AccountPage-DL3DitDM.js.gz +0 -0
- package/studio/chunks/ActivityPage-CLqVUqTh.js +584 -0
- package/studio/chunks/ActivityPage-CLqVUqTh.js.br +0 -0
- package/studio/chunks/ActivityPage-CLqVUqTh.js.gz +0 -0
- package/studio/chunks/Alert-D0D24z_a.js +335 -0
- package/studio/chunks/Alert-D0D24z_a.js.br +0 -0
- package/studio/chunks/Alert-D0D24z_a.js.gz +0 -0
- package/studio/chunks/Badge-BBFs88TI.js +346 -0
- package/studio/chunks/Badge-BBFs88TI.js.br +0 -0
- package/studio/chunks/Badge-BBFs88TI.js.gz +0 -0
- package/studio/chunks/Button-BT3ztSPx.js +14319 -0
- package/studio/chunks/Button-BT3ztSPx.js.br +0 -0
- package/studio/chunks/Button-BT3ztSPx.js.gz +0 -0
- package/studio/chunks/Collapsible-CKnEYIlp.js +246 -0
- package/studio/chunks/Collapsible-CKnEYIlp.js.br +0 -0
- package/studio/chunks/Collapsible-CKnEYIlp.js.gz +0 -0
- package/studio/chunks/ContentInventory-D7nsFA6U.js +1745 -0
- package/studio/chunks/ContentInventory-D7nsFA6U.js.br +0 -0
- package/studio/chunks/ContentInventory-D7nsFA6U.js.gz +0 -0
- package/studio/chunks/ContentPage-DCxt6BeD.js +18 -0
- package/studio/chunks/ContentPage-DCxt6BeD.js.br +0 -0
- package/studio/chunks/ContentPage-DCxt6BeD.js.gz +0 -0
- package/studio/chunks/DashboardSearch-DjyMjJwF.js +2413 -0
- package/studio/chunks/DashboardSearch-DjyMjJwF.js.br +0 -0
- package/studio/chunks/DashboardSearch-DjyMjJwF.js.gz +0 -0
- package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js +26063 -0
- package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js.br +0 -0
- package/studio/chunks/DocumentLocaleMenu-0EkkOr6_.js.gz +0 -0
- package/studio/chunks/DropdownMenu-CA9fB0uZ.js +4400 -0
- package/studio/chunks/DropdownMenu-CA9fB0uZ.js.br +0 -0
- package/studio/chunks/DropdownMenu-CA9fB0uZ.js.gz +0 -0
- package/studio/chunks/EditorPage-D_PAYEE4.js +7799 -0
- package/studio/chunks/EditorPage-D_PAYEE4.js.br +0 -0
- package/studio/chunks/EditorPage-D_PAYEE4.js.gz +0 -0
- package/studio/chunks/FormField-CgM6l2Yn.js +198 -0
- package/studio/chunks/FormField-CgM6l2Yn.js.br +0 -0
- package/studio/chunks/FormField-CgM6l2Yn.js.gz +0 -0
- package/studio/chunks/HelpPage-C-vrFcT_.js +552 -0
- package/studio/chunks/HelpPage-C-vrFcT_.js.br +0 -0
- package/studio/chunks/HelpPage-C-vrFcT_.js.gz +0 -0
- package/studio/chunks/Kbd-Ot7TIhVZ.js +271 -0
- package/studio/chunks/Kbd-Ot7TIhVZ.js.br +0 -0
- package/studio/chunks/Kbd-Ot7TIhVZ.js.gz +0 -0
- package/studio/chunks/MediaFolderDialog-DYu-eu-q.js +101 -0
- package/studio/chunks/MediaFolderDialog-DYu-eu-q.js.br +0 -0
- package/studio/chunks/MediaFolderDialog-DYu-eu-q.js.gz +0 -0
- package/studio/chunks/MediaPage-D-jaWtdl.js +923 -0
- package/studio/chunks/MediaPage-D-jaWtdl.js.br +0 -0
- package/studio/chunks/MediaPage-D-jaWtdl.js.gz +0 -0
- package/studio/chunks/MediaPicker-BZs2wUFz.js +837 -0
- package/studio/chunks/MediaPicker-BZs2wUFz.js.br +0 -0
- package/studio/chunks/MediaPicker-BZs2wUFz.js.gz +0 -0
- package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js +1173 -0
- package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js.br +0 -0
- package/studio/chunks/MediaUploadPanel-C7Kyg6aR.js.gz +0 -0
- package/studio/chunks/Modal-D6hSvxHd.js +265 -0
- package/studio/chunks/Modal-D6hSvxHd.js.br +0 -0
- package/studio/chunks/Modal-D6hSvxHd.js.gz +0 -0
- package/studio/chunks/NewDocumentDialog-C8B6_r3J.js +277 -0
- package/studio/chunks/NewDocumentDialog-C8B6_r3J.js.br +0 -0
- package/studio/chunks/NewDocumentDialog-C8B6_r3J.js.gz +0 -0
- package/studio/chunks/Pagination-D9BSo5H2.js +573 -0
- package/studio/chunks/Pagination-D9BSo5H2.js.br +0 -0
- package/studio/chunks/Pagination-D9BSo5H2.js.gz +0 -0
- package/studio/chunks/PeoplePage-CWIXitBD.js +783 -0
- package/studio/chunks/PeoplePage-CWIXitBD.js.br +0 -0
- package/studio/chunks/PeoplePage-CWIXitBD.js.gz +0 -0
- package/studio/chunks/Popover-B63bkTMS.js +128 -0
- package/studio/chunks/Popover-B63bkTMS.js.br +0 -0
- package/studio/chunks/Popover-B63bkTMS.js.gz +0 -0
- package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js +255 -0
- package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js.br +0 -0
- package/studio/chunks/PublicationActionDialog-Cm_P0C3I.js.gz +0 -0
- package/studio/chunks/Routes-DLYHmulE.js +102 -0
- package/studio/chunks/Routes-DLYHmulE.js.br +0 -0
- package/studio/chunks/Routes-DLYHmulE.js.gz +0 -0
- package/studio/chunks/RovingFocusItem-QZNg-wWF.js +95 -0
- package/studio/chunks/RovingFocusItem-QZNg-wWF.js.br +0 -0
- package/studio/chunks/RovingFocusItem-QZNg-wWF.js.gz +0 -0
- package/studio/chunks/ScheduledPage-C0hqrkr5.js +332 -0
- package/studio/chunks/ScheduledPage-C0hqrkr5.js.br +0 -0
- package/studio/chunks/ScheduledPage-C0hqrkr5.js.gz +0 -0
- package/studio/chunks/Search-BEgCe9Aj.js +14646 -0
- package/studio/chunks/Search-BEgCe9Aj.js.br +0 -0
- package/studio/chunks/Search-BEgCe9Aj.js.gz +0 -0
- package/studio/chunks/Select-B50WZMW-.js +2145 -0
- package/studio/chunks/Select-B50WZMW-.js.br +0 -0
- package/studio/chunks/Select-B50WZMW-.js.gz +0 -0
- package/studio/chunks/SelectMenu-DSweWGMz.js +2109 -0
- package/studio/chunks/SelectMenu-DSweWGMz.js.br +0 -0
- package/studio/chunks/SelectMenu-DSweWGMz.js.gz +0 -0
- package/studio/chunks/SeoPage-CNNxGe4h.js +846 -0
- package/studio/chunks/SeoPage-CNNxGe4h.js.br +0 -0
- package/studio/chunks/SeoPage-CNNxGe4h.js.gz +0 -0
- package/studio/chunks/Skeleton-COz8dcrw.js +39 -0
- package/studio/chunks/Skeleton-COz8dcrw.js.br +2 -0
- package/studio/chunks/Skeleton-COz8dcrw.js.gz +0 -0
- package/studio/chunks/Slideover-QMMHAAys.js +289 -0
- package/studio/chunks/Slideover-QMMHAAys.js.br +0 -0
- package/studio/chunks/Slideover-QMMHAAys.js.gz +0 -0
- package/studio/chunks/StudioPage-ngEIDr5d.js +80 -0
- package/studio/chunks/StudioPage-ngEIDr5d.js.br +0 -0
- package/studio/chunks/StudioPage-ngEIDr5d.js.gz +0 -0
- package/studio/chunks/StudioPageToolbar-BwHnqyr6.js +2524 -0
- package/studio/chunks/StudioPageToolbar-BwHnqyr6.js.br +0 -0
- package/studio/chunks/StudioPageToolbar-BwHnqyr6.js.gz +0 -0
- package/studio/chunks/Switch-qKl1aDn7.js +484 -0
- package/studio/chunks/Switch-qKl1aDn7.js.br +0 -0
- package/studio/chunks/Switch-qKl1aDn7.js.gz +0 -0
- package/studio/chunks/ToolPage-DxoVAJVk.js +29 -0
- package/studio/chunks/ToolPage-DxoVAJVk.js.br +0 -0
- package/studio/chunks/ToolPage-DxoVAJVk.js.gz +0 -0
- package/studio/chunks/Tooltip-Bu15m_DB.js +693 -0
- package/studio/chunks/Tooltip-Bu15m_DB.js.br +0 -0
- package/studio/chunks/Tooltip-Bu15m_DB.js.gz +0 -0
- package/studio/chunks/TrashPage-lhqLLdoG.js +12 -0
- package/studio/chunks/TrashPage-lhqLLdoG.js.br +0 -0
- package/studio/chunks/TrashPage-lhqLLdoG.js.gz +0 -0
- package/studio/chunks/VersionsPage-Cqy6UAp9.js +2349 -0
- package/studio/chunks/VersionsPage-Cqy6UAp9.js.br +0 -0
- package/studio/chunks/VersionsPage-Cqy6UAp9.js.gz +0 -0
- package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js +113 -0
- package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js.br +0 -0
- package/studio/chunks/VisuallyHiddenInput-Cu8hQLRf.js.gz +0 -0
- package/studio/chunks/arrays-CUJkmV4I.js +10 -0
- package/studio/chunks/arrays-CUJkmV4I.js.br +0 -0
- package/studio/chunks/arrays-CUJkmV4I.js.gz +0 -0
- package/studio/chunks/base-DkTekJe8.js +213 -0
- package/studio/chunks/base-DkTekJe8.js.br +0 -0
- package/studio/chunks/base-DkTekJe8.js.gz +0 -0
- package/studio/chunks/content-DUGl3N4d.js +6012 -0
- package/studio/chunks/content-DUGl3N4d.js.br +0 -0
- package/studio/chunks/content-DUGl3N4d.js.gz +0 -0
- package/studio/chunks/destinations-DPIQVQa6.js +227 -0
- package/studio/chunks/destinations-DPIQVQa6.js.br +0 -0
- package/studio/chunks/destinations-DPIQVQa6.js.gz +0 -0
- package/studio/chunks/en-073cjKW4.js +152 -0
- package/studio/chunks/en-073cjKW4.js.br +0 -0
- package/studio/chunks/en-073cjKW4.js.gz +0 -0
- package/studio/chunks/en-Bn8mxPuf.js +134 -0
- package/studio/chunks/en-Bn8mxPuf.js.br +0 -0
- package/studio/chunks/en-Bn8mxPuf.js.gz +0 -0
- package/studio/chunks/en-C9OiaUDZ.js +251 -0
- package/studio/chunks/en-C9OiaUDZ.js.br +0 -0
- package/studio/chunks/en-C9OiaUDZ.js.gz +0 -0
- package/studio/chunks/en-CHAR6jzx.js +147 -0
- package/studio/chunks/en-CHAR6jzx.js.br +0 -0
- package/studio/chunks/en-CHAR6jzx.js.gz +0 -0
- package/studio/chunks/en-Cq4N1vEF.js +93 -0
- package/studio/chunks/en-Cq4N1vEF.js.br +2 -0
- package/studio/chunks/en-Cq4N1vEF.js.gz +0 -0
- package/studio/chunks/en-D2hRqlse.js +140 -0
- package/studio/chunks/en-D2hRqlse.js.br +0 -0
- package/studio/chunks/en-D2hRqlse.js.gz +0 -0
- package/studio/chunks/en-DiUC3-j6.js +144 -0
- package/studio/chunks/en-DiUC3-j6.js.br +0 -0
- package/studio/chunks/en-DiUC3-j6.js.gz +0 -0
- package/studio/chunks/english-Cs_Adu-u.js +8 -0
- package/studio/chunks/english-Cs_Adu-u.js.br +0 -0
- package/studio/chunks/english-Cs_Adu-u.js.gz +0 -0
- package/studio/chunks/esm-D6DqSiL1.js +752 -0
- package/studio/chunks/esm-D6DqSiL1.js.br +0 -0
- package/studio/chunks/esm-D6DqSiL1.js.gz +0 -0
- package/studio/chunks/externalRequest-CTzr2nDq.js +23 -0
- package/studio/chunks/externalRequest-CTzr2nDq.js.br +0 -0
- package/studio/chunks/externalRequest-CTzr2nDq.js.gz +0 -0
- package/studio/chunks/iconify-DR9ryCPv.js +1007 -0
- package/studio/chunks/iconify-DR9ryCPv.js.br +0 -0
- package/studio/chunks/iconify-DR9ryCPv.js.gz +0 -0
- package/studio/chunks/icons-D2MsAaXq.js +183 -0
- package/studio/chunks/icons-D2MsAaXq.js.br +0 -0
- package/studio/chunks/icons-D2MsAaXq.js.gz +0 -0
- package/studio/chunks/leaveGuards-D22fTGgr.js +26 -0
- package/studio/chunks/leaveGuards-D22fTGgr.js.br +0 -0
- package/studio/chunks/leaveGuards-D22fTGgr.js.gz +0 -0
- package/studio/chunks/lucideIcons-EyqyPBsX.js +238 -0
- package/studio/chunks/lucideIcons-EyqyPBsX.js.br +0 -0
- package/studio/chunks/lucideIcons-EyqyPBsX.js.gz +0 -0
- package/studio/chunks/mediaRoute--8cY8rUe.js +17 -0
- package/studio/chunks/mediaRoute--8cY8rUe.js.br +0 -0
- package/studio/chunks/mediaRoute--8cY8rUe.js.gz +0 -0
- package/studio/chunks/newDocumentPlanning-C26DHpvh.js +77 -0
- package/studio/chunks/newDocumentPlanning-C26DHpvh.js.br +0 -0
- package/studio/chunks/newDocumentPlanning-C26DHpvh.js.gz +0 -0
- package/studio/chunks/notifications-OKOLc40v.js +110 -0
- package/studio/chunks/notifications-OKOLc40v.js.br +0 -0
- package/studio/chunks/notifications-OKOLc40v.js.gz +0 -0
- package/studio/chunks/operations-CjNHyrEX.js +57 -0
- package/studio/chunks/operations-CjNHyrEX.js.br +0 -0
- package/studio/chunks/operations-CjNHyrEX.js.gz +0 -0
- package/studio/chunks/overlay-DnqFLZTc.js +1733 -0
- package/studio/chunks/overlay-DnqFLZTc.js.br +0 -0
- package/studio/chunks/overlay-DnqFLZTc.js.gz +0 -0
- package/studio/chunks/presentation-DF83w0hE.js +57 -0
- package/studio/chunks/presentation-DF83w0hE.js.br +0 -0
- package/studio/chunks/presentation-DF83w0hE.js.gz +0 -0
- package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js +4557 -0
- package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js.br +0 -0
- package/studio/chunks/runtime-core.esm-bundler-DKFA9Rep.js.gz +0 -0
- package/studio/chunks/searchPresentation-DFwxQkt3.js +76 -0
- package/studio/chunks/searchPresentation-DFwxQkt3.js.br +0 -0
- package/studio/chunks/searchPresentation-DFwxQkt3.js.gz +0 -0
- package/studio/chunks/status-DQv6ihkU.js +38 -0
- package/studio/chunks/status-DQv6ihkU.js.br +0 -0
- package/studio/chunks/status-DQv6ihkU.js.gz +0 -0
- package/studio/chunks/studioContext-I8HozGU1.js +4953 -0
- package/studio/chunks/studioContext-I8HozGU1.js.br +0 -0
- package/studio/chunks/studioContext-I8HozGU1.js.gz +0 -0
- package/studio/chunks/studioQueries-BR-9NT5F.js +73 -0
- package/studio/chunks/studioQueries-BR-9NT5F.js.br +0 -0
- package/studio/chunks/studioQueries-BR-9NT5F.js.gz +0 -0
- package/studio/chunks/studioSearch-ByaL-QpM.js +1095 -0
- package/studio/chunks/studioSearch-ByaL-QpM.js.br +0 -0
- package/studio/chunks/studioSearch-ByaL-QpM.js.gz +0 -0
- package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js +62 -0
- package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js.br +0 -0
- package/studio/chunks/useAcknowledgedDraft-0_c9sWI6.js.gz +0 -0
- package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js +189 -0
- package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js.br +0 -0
- package/studio/chunks/useApi-CUWMwLLw-B3Q3g2nf.js.gz +0 -0
- package/studio/chunks/useDocumentMessage-BAWvc38w.js +16 -0
- package/studio/chunks/useDocumentMessage-BAWvc38w.js.br +3 -0
- package/studio/chunks/useDocumentMessage-BAWvc38w.js.gz +0 -0
- package/studio/chunks/useFilter-DzyiTR7f.js +87 -0
- package/studio/chunks/useFilter-DzyiTR7f.js.br +0 -0
- package/studio/chunks/useFilter-DzyiTR7f.js.gz +0 -0
- package/studio/chunks/useFormControl-CL7sSCUo.js +8 -0
- package/studio/chunks/useFormControl-CL7sSCUo.js.br +0 -0
- package/studio/chunks/useFormControl-CL7sSCUo.js.gz +0 -0
- package/studio/chunks/useGraceArea-Chcy25IQ.js +154 -0
- package/studio/chunks/useGraceArea-Chcy25IQ.js.br +0 -0
- package/studio/chunks/useGraceArea-Chcy25IQ.js.gz +0 -0
- package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js +44 -0
- package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js.br +8 -0
- package/studio/chunks/useLeaveConfirmation-_iCSnKEp.js.gz +0 -0
- package/studio/chunks/useLinkCopy-CMjQteCy.js +35 -0
- package/studio/chunks/useLinkCopy-CMjQteCy.js.br +0 -0
- package/studio/chunks/useLinkCopy-CMjQteCy.js.gz +0 -0
- package/studio/chunks/usePointerMotion-DwRcwBNQ.js +16 -0
- package/studio/chunks/usePointerMotion-DwRcwBNQ.js.br +0 -0
- package/studio/chunks/usePointerMotion-DwRcwBNQ.js.gz +0 -0
- package/studio/chunks/useStudioNavigation-CLwtSYpb.js +298 -0
- package/studio/chunks/useStudioNavigation-CLwtSYpb.js.br +0 -0
- package/studio/chunks/useStudioNavigation-CLwtSYpb.js.gz +0 -0
- package/studio/chunks/useStudioPages-DR9qmYLg.js +79 -0
- package/studio/chunks/useStudioPages-DR9qmYLg.js.br +0 -0
- package/studio/chunks/useStudioPages-DR9qmYLg.js.gz +0 -0
- package/studio/chunks/utils-mdScC0v0.js +59 -0
- package/studio/chunks/utils-mdScC0v0.js.br +0 -0
- package/studio/chunks/utils-mdScC0v0.js.gz +0 -0
- package/studio/chunks/virtualizer-D1S0bZ4t.js +781 -0
- package/studio/chunks/virtualizer-D1S0bZ4t.js.br +0 -0
- package/studio/chunks/virtualizer-D1S0bZ4t.js.gz +0 -0
- package/studio/help/64f767fe29c2-save-and-publish.svg +7 -0
- package/studio/host.css +1 -1
- package/studio/host.css.br +0 -0
- package/studio/host.css.gz +0 -0
- package/studio/host.js +8757 -39178
- package/studio/host.js.br +0 -0
- package/studio/host.js.gz +0 -0
- package/CHANGELOG.md +0 -13
- package/bin/cms.mjs +0 -2
- package/src/ApplicationTypes.d.ts +0 -84
- package/src/ApplicationTypes.js +0 -1
- package/src/Configuration-Da5B2PVH.js +0 -1191
- package/src/Configuration-Da5B2PVH.js.map +0 -1
- package/src/Configuration.d.ts +0 -82
- package/src/Configuration.js +0 -8
- package/src/Configuration.js.map +0 -1
- package/src/Content.d.ts +0 -68
- package/src/Content.js +0 -373
- package/src/Content.js.map +0 -1
- package/src/ContentTransfer-BxwswWn3.js +0 -86
- package/src/ContentTransfer-BxwswWn3.js.map +0 -1
- package/src/ContentTransfer-Z9FHyLez.d.ts +0 -72
- package/src/DocumentEngine-hh_IGPXO.js +0 -978
- package/src/DocumentEngine-hh_IGPXO.js.map +0 -1
- package/src/DocumentModel.d.ts +0 -52
- package/src/DocumentModel.js +0 -66
- package/src/DocumentModel.js.map +0 -1
- package/src/Forms-CX-hwmJF.js +0 -391
- package/src/Forms-CX-hwmJF.js.map +0 -1
- package/src/Forms-CfNPTiCr.js +0 -110
- package/src/Forms-CfNPTiCr.js.map +0 -1
- package/src/Forms-R0HoTR-o.d.ts +0 -92
- package/src/Forms.js.map +0 -1
- package/src/HttpPaths-c9nLZ9H2.js +0 -21
- package/src/HttpPaths-c9nLZ9H2.js.map +0 -1
- package/src/I18n-zbqpWxki.d.ts +0 -29
- package/src/Media-j1bTritO.js +0 -112
- package/src/Media-j1bTritO.js.map +0 -1
- package/src/Module.js.map +0 -1
- package/src/References-CCPDAPve.js +0 -45
- package/src/References-CCPDAPve.js.map +0 -1
- package/src/S3MediaObjects-Dwhl2deX.js +0 -2742
- package/src/S3MediaObjects-Dwhl2deX.js.map +0 -1
- package/src/Seo-402YumpT.d.ts +0 -198
- package/src/cli/content.js +0 -101
- package/src/cli/content.js.map +0 -1
- package/src/cli.js.map +0 -1
- package/src/connection-BP80q4d-.js +0 -92
- package/src/connection-BP80q4d-.js.map +0 -1
- package/src/dev-lifecycle-CjDq63Ft.js +0 -535
- package/src/dev-lifecycle-CjDq63Ft.js.map +0 -1
- package/src/installation-DYNQQBD3.js +0 -9114
- package/src/installation-DYNQQBD3.js.map +0 -1
- package/src/internal/application-types.js +0 -43
- package/src/internal/application-types.js.map +0 -1
- package/src/internal/authoring-catalog.js +0 -158
- package/src/internal/authoring-catalog.js.map +0 -1
- package/src/internal/authoring-compiler.js +0 -146
- package/src/internal/authoring-compiler.js.map +0 -1
- package/src/internal/authoring-metadata.js +0 -191
- package/src/internal/authoring-metadata.js.map +0 -1
- package/src/internal/cms-config.js +0 -45
- package/src/internal/cms-config.js.map +0 -1
- package/src/internal/configuration.js +0 -228
- package/src/internal/configuration.js.map +0 -1
- package/src/internal/dev-lifecycle.js +0 -3
- package/src/internal/diagnostics.js +0 -47
- package/src/internal/diagnostics.js.map +0 -1
- package/src/internal/document-model.js +0 -376
- package/src/internal/document-model.js.map +0 -1
- package/src/internal/field-metadata.js +0 -7
- package/src/internal/field-metadata.js.map +0 -1
- package/src/internal/form-capabilities.js +0 -12
- package/src/internal/form-capabilities.js.map +0 -1
- package/src/internal/i18n.js +0 -73
- package/src/internal/i18n.js.map +0 -1
- package/src/internal/studio-app.js +0 -68
- package/src/internal/studio-app.js.map +0 -1
- package/src/location-CMNGO3lU.js +0 -35
- package/src/location-CMNGO3lU.js.map +0 -1
- package/src/metadata-DN9_K6Yl.js +0 -201
- package/src/metadata-DN9_K6Yl.js.map +0 -1
- package/src/models-5j67LMqW.js +0 -131
- package/src/models-5j67LMqW.js.map +0 -1
- package/src/models-VmGmG19-.js +0 -628
- package/src/models-VmGmG19-.js.map +0 -1
- package/src/runtime/api.js.map +0 -1
- package/src/runtime/blocks.js +0 -30
- package/src/runtime/blocks.js.map +0 -1
- package/src/runtime/collaboration.js +0 -45
- package/src/runtime/collaboration.js.map +0 -1
- package/src/runtime/delivery/DocumentField.js +0 -23
- package/src/runtime/delivery/DocumentField.js.map +0 -1
- package/src/runtime/delivery/DocumentRenderer.js +0 -61
- package/src/runtime/delivery/DocumentRenderer.js.map +0 -1
- package/src/runtime/delivery/DocumentScope.js +0 -41
- package/src/runtime/delivery/DocumentScope.js.map +0 -1
- package/src/runtime/delivery/blocks.js +0 -8
- package/src/runtime/delivery/blocks.js.map +0 -1
- package/src/runtime/delivery/context.js +0 -12
- package/src/runtime/delivery/context.js.map +0 -1
- package/src/runtime/delivery/document-page.js +0 -21
- package/src/runtime/delivery/document-page.js.map +0 -1
- package/src/runtime/delivery/document.js +0 -43
- package/src/runtime/delivery/document.js.map +0 -1
- package/src/runtime/delivery/error.js +0 -11
- package/src/runtime/delivery/error.js.map +0 -1
- package/src/runtime/delivery/plugin.js +0 -99
- package/src/runtime/delivery/plugin.js.map +0 -1
- package/src/runtime/delivery/preview.d.ts +0 -11
- package/src/runtime/delivery/preview.js +0 -6
- package/src/runtime/delivery/preview.js.map +0 -1
- package/src/runtime/delivery/types.d.ts +0 -2
- package/src/runtime/delivery/types.js +0 -1
- package/src/runtime/delivery/useCmsDocumentSeo.d.ts +0 -67
- package/src/runtime/delivery/useCmsDocumentSeo.js.map +0 -1
- package/src/runtime/delivery/useDocument.d.ts +0 -6
- package/src/runtime/delivery/useDocument.js +0 -23
- package/src/runtime/delivery/useDocument.js.map +0 -1
- package/src/runtime/delivery/useDocumentQuery.d.ts +0 -7
- package/src/runtime/delivery/useDocumentQuery.js +0 -29
- package/src/runtime/delivery/useDocumentQuery.js.map +0 -1
- package/src/runtime/forms/document.js +0 -38
- package/src/runtime/forms/document.js.map +0 -1
- package/src/runtime/forms/useCmsForm.js +0 -257
- package/src/runtime/forms/useCmsForm.js.map +0 -1
- package/src/runtime/i18n/translator.js +0 -51
- package/src/runtime/i18n/translator.js.map +0 -1
- package/src/runtime/i18n/useCmsI18n.d.ts +0 -13
- package/src/runtime/i18n/useCmsI18n.js +0 -38
- package/src/runtime/i18n/useCmsI18n.js.map +0 -1
- package/src/runtime/installation.js +0 -3
- package/src/runtime/plugin.js.map +0 -1
- package/src/runtime/preview/CmsStudioPreviewMarker.js +0 -29
- package/src/runtime/preview/CmsStudioPreviewMarker.js.map +0 -1
- package/src/runtime/preview/comark-document.js +0 -37
- package/src/runtime/preview/comark-document.js.map +0 -1
- package/src/runtime/preview/connection.js +0 -3
- package/src/runtime/preview/controller.js +0 -265
- package/src/runtime/preview/controller.js.map +0 -1
- package/src/runtime/preview/crypto.js +0 -16
- package/src/runtime/preview/crypto.js.map +0 -1
- package/src/runtime/preview/overlay.js +0 -122
- package/src/runtime/preview/overlay.js.map +0 -1
- package/src/runtime/preview/plugin.client.js +0 -68
- package/src/runtime/preview/plugin.client.js.map +0 -1
- package/src/runtime/preview/preview.css +0 -91
- package/src/runtime/preview/protocol.d.ts +0 -16
- package/src/runtime/preview/protocol.js +0 -23
- package/src/runtime/preview/protocol.js.map +0 -1
- package/src/runtime/preview/regions.js +0 -142
- package/src/runtime/preview/regions.js.map +0 -1
- package/src/runtime/preview/store.js +0 -4
- package/src/runtime/sitemap-entries.js +0 -17
- package/src/runtime/sitemap-entries.js.map +0 -1
- package/src/runtime/sitemap.js +0 -23
- package/src/runtime/sitemap.js.map +0 -1
- package/src/runtime/studio-app.js +0 -17
- package/src/runtime/studio-app.js.map +0 -1
- package/src/runtime/studio-document.js +0 -46
- package/src/runtime/studio-document.js.map +0 -1
- package/src/runtime/studio-entry.js +0 -19
- package/src/runtime/studio-entry.js.map +0 -1
- package/src/runtime/studio-navigation.js +0 -11
- package/src/runtime/studio-navigation.js.map +0 -1
- package/src/scalars-CA6kyipS.d.ts +0 -7
- package/src/scalars-CVZqT3L0.js +0 -22
- package/src/scalars-CVZqT3L0.js.map +0 -1
- package/src/store-X1e1o_MF.js +0 -209
- package/src/store-X1e1o_MF.js.map +0 -1
- package/src/types-DZ0IV-Ow.d.ts +0 -101
- package/studio/CreateDocumentDialog-BpjBYGfI.js +0 -335
- package/studio/SelectMenu-KiXwx4Y_.js +0 -34032
- package/studio/collaboration-DcK2F6v9.js +0 -4566
- package/studio/editor-P2rB7Csp.js +0 -30128
- package/studio/rolldown-runtime-Dy4uBu1J.js +0 -11
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-metadata.js","names":[],"sources":["../../../../src/internal/authoring-metadata.ts"],"sourcesContent":["import type { ComponentMetaChecker } from 'vue-component-meta'\nimport type { BlockSlot } from '@internal/protocol/Authoring'\nimport type { StructuredField } from '@internal/protocol/StructuredFields'\nimport { createAuthoringSchema, parseAuthoringContent } from '@internal/document/AuthoringSchema'\nimport { BlockAuthoring } from '@internal/protocol/Authoring'\nimport { ComponentDefinition } from '@internal/protocol/Configuration'\nimport { Result, Effect, Schema } from 'effect'\nimport ts from 'typescript'\nimport { compileCmsBlock, readAuthoringDefault } from './authoring-compiler'\n\ninterface Presentation {\n readonly label: string\n readonly help?: string\n readonly input: string\n readonly optionLabels?: Readonly<Record<string, string>>\n readonly features?: ReadonlyArray<'bold' | 'italic' | 'link' | 'bullet-list' | 'code'>\n readonly blocks?: ReadonlyArray<string>\n readonly groups?: ReadonlyArray<string>\n readonly fields?: Readonly<Record<string, Presentation>>\n}\n\nconst Presentation: Schema.Codec<Presentation> = Schema.Struct({\n fields: Schema.optionalKey(\n Schema.Record(\n Schema.String,\n Schema.suspend(() => Presentation),\n ),\n ),\n blocks: Schema.optionalKey(Schema.Array(Schema.NonEmptyString)),\n groups: Schema.optionalKey(Schema.Array(Schema.NonEmptyString)),\n label: Schema.NonEmptyString,\n help: Schema.optionalKey(Schema.String),\n input: Schema.String,\n optionLabels: Schema.optionalKey(Schema.Record(Schema.String, Schema.String)),\n features: Schema.optionalKey(Schema.Array(Schema.Literals(['bold', 'italic', 'link', 'bullet-list', 'code']))),\n})\n\nconst Declaration = Schema.Struct({\n label: Schema.NonEmptyString,\n description: Schema.optionalKey(Schema.String),\n group: Schema.optionalKey(Schema.String),\n icon: Schema.optionalKey(Schema.String),\n props: Schema.Record(Schema.String, Presentation),\n slots: Schema.Record(Schema.String, Presentation),\n initial: Schema.optionalKey(\n Schema.Struct({\n props: Schema.optionalKey(Schema.JsonObject),\n slots: Schema.optionalKey(\n Schema.Record(\n Schema.String,\n Schema.Union([Schema.Struct({ text: Schema.String }), Schema.Struct({ markdown: Schema.String })]),\n ),\n ),\n }),\n ),\n})\n\n/** Resolves one opted-in SFC. No framework metadata or executable defaults cross this seam. */\nexport const resolveBlockAuthoring = Effect.fn('NuxtAuthoring.resolve')(function* (\n checker: ComponentMetaChecker,\n filename: string,\n name: string,\n source: string,\n) {\n const compiled = compileCmsBlock(source, filename)\n\n if (!compiled) return undefined\n const declared = yield* Schema.decodeUnknownEffect(Declaration)(compiled.declaration, { onExcessProperty: 'error' })\n checker.updateFile(filename, source)\n const metadata = checker.getComponentMeta(filename)\n\n const props = Object.entries(declared.props).map(([key, presentation]): StructuredField => {\n const prop = metadata.props.find((candidate) => candidate.name === key && !candidate.global)\n\n if (!prop) throw new Error(`${filename}: unknown Vue prop ${key}.`)\n const typeChecker = checker.getProgram()?.getTypeChecker()\n\n if (!typeChecker) throw new Error(`${filename}: Vue type information is unavailable.`)\n\n return resolveProp(prop.getTypeObject(), key, prop.required, presentation, typeChecker, filename, prop.default)\n })\n\n for (const prop of metadata.props) {\n if (!prop.global && prop.required && prop.default === undefined && !Object.hasOwn(declared.props, prop.name))\n throw new Error(`${filename}: required prop ${prop.name} needs an authoring declaration and initial value.`)\n }\n\n const slotTypes = vueSlots(checker, filename)\n const slots: BlockSlot[] = []\n\n for (const [key, presentation] of Object.entries(declared.slots)) {\n const slot = slotTypes.get(key)\n\n if (!slot) throw new Error(`${filename}: unknown Vue slot ${key}.`)\n\n if (slot.scoped) throw new Error(`${filename}: scoped slot ${key} cannot be authored.`)\n const seed = declared.initial?.slots?.[key]\n\n const initial = seed\n ? 'text' in seed\n ? [['p', {}, seed.text]]\n : yield* parseAuthoringContent(seed.markdown)\n : undefined\n\n slots.push(\n yield* Schema.decodeUnknownEffect(BlockAuthoring.fields.slots.value)({\n name: key,\n label: presentation.label,\n ...(presentation.help === undefined ? undefined : { help: presentation.help }),\n input: presentation.input,\n required: slot.required,\n features: presentation.features ?? [],\n ...(presentation.blocks === undefined ? undefined : { blocks: presentation.blocks }),\n ...(presentation.groups === undefined ? undefined : { groups: presentation.groups }),\n ...(initial === undefined ? undefined : { initial }),\n }),\n )\n\n if (slot.required && !seed) throw new Error(`${filename}: required slot ${key} needs initial content.`)\n }\n\n for (const [key, slot] of slotTypes)\n if (slot.required && !Object.hasOwn(declared.slots, key))\n throw new Error(`${filename}: required slot ${key} must be declared.`)\n\n for (const key of Object.keys(declared.initial?.slots ?? {}))\n if (!slotTypes.has(key) || !Object.hasOwn(declared.slots, key))\n throw new Error(`${filename}: initial content refers to undeclared slot ${key}.`)\n\n const authoring = BlockAuthoring.make({\n version: 1,\n label: declared.label,\n props,\n slots,\n initialProps: declared.initial?.props ?? {},\n ...(declared.description === undefined ? undefined : { description: declared.description }),\n ...(declared.group === undefined ? undefined : { group: declared.group }),\n ...(declared.icon === undefined ? undefined : { icon: declared.icon }),\n })\n\n createAuthoringSchema(name, authoring)\n\n return ComponentDefinition.make({\n name,\n authoring,\n })\n})\n\nfunction resolveProp(\n raw: ts.Type,\n name: string,\n required: boolean,\n presentation: Presentation,\n checker: ts.TypeChecker,\n filename: string,\n defaultSource?: string,\n depth = 0,\n): StructuredField {\n if (depth > 12) throw new Error(`${filename}: ${name} exceeds the supported property nesting depth.`)\n const union = raw.isUnion() ? raw.types : [raw]\n const members = union.filter((type) => !(type.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Null)))\n const nullable = union.some((type) => Boolean(type.flags & ts.TypeFlags.Null))\n const choices = members.flatMap((type) => (type.isStringLiteral() ? [type.value] : [])).sort()\n const valueType = checker.getNonNullableType(raw)\n let type: StructuredField['type']\n let fields: StructuredField[] | undefined\n\n if (presentation.input === 'multiselect') {\n const item = checker.getIndexTypeOfType(valueType, ts.IndexKind.Number)\n const itemMembers = item?.isUnion() ? item.types : item ? [item] : []\n\n if (!itemMembers.length || !itemMembers.every((member) => Boolean(member.flags & ts.TypeFlags.StringLike)))\n throw new Error(`${filename}: ${name} needs a string list type.`)\n\n type = 'string[]'\n choices.push(...itemMembers.flatMap((member) => (member.isStringLiteral() ? [member.value] : [])).sort())\n } else if (members.length && members.every((type) => Boolean(type.flags & ts.TypeFlags.StringLike))) type = 'string'\n else if (members.length === 1 && members[0]?.flags === ts.TypeFlags.Number) type = 'number'\n else if (members.length && members.every((type) => Boolean(type.flags & ts.TypeFlags.BooleanLike))) type = 'boolean'\n else if (presentation.input === 'object' || presentation.input === 'list') {\n type = presentation.input === 'list' ? 'array' : 'object'\n const item = type === 'array' ? checker.getIndexTypeOfType(valueType, ts.IndexKind.Number) : valueType\n\n if (!item || !(item.flags & ts.TypeFlags.Object) || item.getCallSignatures().length)\n throw new Error(`${filename}: ${name} needs an object${type === 'array' ? ' list' : ''} type.`)\n\n if (type === 'array') {\n const id = item.getProperty('id')\n const declaration = id?.valueDeclaration ?? id?.declarations?.[0]\n\n if (\n !id ||\n !declaration ||\n id.flags & ts.SymbolFlags.Optional ||\n checker.getTypeOfSymbolAtLocation(id, declaration).flags !== ts.TypeFlags.String\n )\n throw new Error(`${filename}: ${name} list items need a required string id for stable editing.`)\n }\n\n fields = Object.entries(presentation.fields ?? {}).map(([key, field]) => {\n if (type === 'array' && key === 'id') throw new Error(`${filename}: list item ids are managed by Studio.`)\n const property = item.getProperty(key)\n const declaration = property?.valueDeclaration ?? property?.declarations?.[0]\n\n if (!property || !declaration) throw new Error(`${filename}: unknown field ${name}.${key}.`)\n\n return resolveProp(\n checker.getTypeOfSymbolAtLocation(property, declaration),\n key,\n !(property.flags & ts.SymbolFlags.Optional),\n field,\n checker,\n filename,\n undefined,\n depth + 1,\n )\n })\n\n for (const property of item.getProperties()) {\n if (type === 'array' && property.name === 'id') continue\n\n if (!(property.flags & ts.SymbolFlags.Optional) && !fields.some((field) => field.name === property.name))\n throw new Error(`${filename}: required field ${name}.${property.name} needs an authoring declaration.`)\n }\n } else throw new Error(`${filename}: unsupported editable prop ${name}.`)\n\n const inputs = {\n string: ['text', 'textarea', 'select', 'image', 'link', 'document', 'media'],\n number: ['number'],\n boolean: ['toggle'],\n 'string[]': ['multiselect'],\n object: ['object'],\n array: ['list'],\n }\n\n if (\n !inputs[type].includes(presentation.input) ||\n ((presentation.input === 'select' || presentation.input === 'multiselect') &&\n presentation.optionLabels !== undefined &&\n !choices.length)\n )\n throw new Error(`${filename}: ${name} has an incompatible authoring input ${presentation.input}.`)\n\n for (const key of Object.keys(presentation.optionLabels ?? {}))\n if (!choices.includes(key)) throw new Error(`${filename}: ${key} is not a Vue union choice.`)\n\n return Result.getOrThrow(\n Schema.decodeUnknownResult(BlockAuthoring.fields.props.value)({\n name,\n label: presentation.label,\n type,\n input: presentation.input,\n required,\n nullable,\n ...(presentation.help === undefined ? undefined : { description: presentation.help }),\n ...(fields === undefined ? undefined : { fields }),\n ...(defaultSource === undefined\n ? undefined\n : { defaultValue: readAuthoringDefault(defaultSource, `${filename} prop ${name}`) }),\n options: choices.map((value) => ({ value, label: presentation.optionLabels?.[value] ?? value })),\n }),\n )\n}\n\nfunction vueSlots(checker: ComponentMetaChecker, filename: string) {\n const program = checker.getProgram()\n const file = program?.getSourceFile(filename)\n\n if (!program || !file) throw new Error(`${filename}: Vue type information is unavailable.`)\n const typeChecker = program.getTypeChecker()\n const result = new Map<string, { required: boolean; scoped: boolean }>()\n\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === 'defineSlots') {\n const type = node.typeArguments?.[0]\n\n if (type)\n for (const property of typeChecker.getTypeAtLocation(type).getProperties()) {\n const declaration = property.valueDeclaration ?? property.declarations?.[0]\n\n const signature = declaration\n ? typeChecker\n .getNonNullableType(typeChecker.getTypeOfSymbolAtLocation(property, declaration))\n .getCallSignatures()\n : []\n\n result.set(property.name, {\n required: !(property.flags & ts.SymbolFlags.Optional),\n scoped: signature.length !== 1 || signature.some((signature) => signature.parameters.length > 0),\n })\n }\n }\n\n ts.forEachChild(node, visit)\n }\n\n visit(file)\n\n return result\n}\n"],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Effect, FileSystem, Path, Schema } from "effect";
|
|
2
|
-
import { createJiti } from "jiti";
|
|
3
|
-
|
|
4
|
-
//#region src/internal/cms-config.ts
|
|
5
|
-
const CMS_CONFIG_NAMES = [
|
|
6
|
-
"cms.config.ts",
|
|
7
|
-
"cms.config.mts",
|
|
8
|
-
"cms.config.js",
|
|
9
|
-
"cms.config.mjs"
|
|
10
|
-
];
|
|
11
|
-
const jiti = createJiti(import.meta.url);
|
|
12
|
-
var CmsConfigurationLoadFailed = class extends Schema.TaggedError()("CmsConfigurationLoadFailed", {
|
|
13
|
-
cause: Schema.Defect(),
|
|
14
|
-
operation: Schema.String
|
|
15
|
-
}) {};
|
|
16
|
-
const loadCmsConfiguration = Effect.fn("CmsConfiguration.load")(function* (rootDir) {
|
|
17
|
-
const fileSystem = yield* FileSystem.FileSystem;
|
|
18
|
-
const paths = yield* Path.Path;
|
|
19
|
-
let configurationPath;
|
|
20
|
-
for (const name of CMS_CONFIG_NAMES) {
|
|
21
|
-
const candidate = paths.join(rootDir, name);
|
|
22
|
-
if (yield* fileSystem.exists(candidate)) {
|
|
23
|
-
configurationPath = candidate;
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (!configurationPath) return yield* new CmsConfigurationLoadFailed({
|
|
28
|
-
cause: /* @__PURE__ */ new Error(`CMS configuration is missing. Create ${paths.join(rootDir, "cms.config.ts")}.`),
|
|
29
|
-
operation: "CmsConfiguration.locate"
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
configuration: yield* Effect.tryPromise({
|
|
33
|
-
try: () => jiti.import(configurationPath, { default: true }),
|
|
34
|
-
catch: (cause) => new CmsConfigurationLoadFailed({
|
|
35
|
-
cause,
|
|
36
|
-
operation: "CmsConfiguration.import"
|
|
37
|
-
})
|
|
38
|
-
}),
|
|
39
|
-
path: configurationPath
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
//#endregion
|
|
44
|
-
export { loadCmsConfiguration };
|
|
45
|
-
//# sourceMappingURL=cms-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-config.js","names":[],"sources":["../../../../src/internal/cms-config.ts"],"sourcesContent":["import type { CmsConfiguration } from '../Configuration'\nimport { Effect, FileSystem, Path, Schema } from 'effect'\nimport { createJiti } from 'jiti'\n\nconst CMS_CONFIG_NAMES = ['cms.config.ts', 'cms.config.mts', 'cms.config.js', 'cms.config.mjs']\n\nconst jiti = createJiti(import.meta.url)\n\nclass CmsConfigurationLoadFailed extends Schema.TaggedError<CmsConfigurationLoadFailed>()(\n 'CmsConfigurationLoadFailed',\n { cause: Schema.Defect(), operation: Schema.String },\n) {}\n\nexport const loadCmsConfiguration = Effect.fn('CmsConfiguration.load')(function* (rootDir: string) {\n const fileSystem = yield* FileSystem.FileSystem\n const paths = yield* Path.Path\n let configurationPath: string | undefined\n\n for (const name of CMS_CONFIG_NAMES) {\n const candidate = paths.join(rootDir, name)\n\n if (yield* fileSystem.exists(candidate)) {\n configurationPath = candidate\n break\n }\n }\n\n if (!configurationPath) {\n return yield* new CmsConfigurationLoadFailed({\n cause: new Error(`CMS configuration is missing. Create ${paths.join(rootDir, 'cms.config.ts')}.`),\n operation: 'CmsConfiguration.locate',\n })\n }\n\n const configuration = yield* Effect.tryPromise({\n try: () => jiti.import<CmsConfiguration>(configurationPath, { default: true }),\n catch: (cause) => new CmsConfigurationLoadFailed({ cause, operation: 'CmsConfiguration.import' }),\n })\n\n return { configuration, path: configurationPath }\n})\n"],"mappings":";;;;AAIA,MAAM,mBAAmB;CAAC;CAAiB;CAAkB;CAAiB;AAAgB;AAE9F,MAAM,OAAO,WAAW,YAAY,GAAG;AAEvC,IAAM,6BAAN,cAAyC,OAAO,YAAwC,CAAC,CACvF,8BACA;CAAE,OAAO,OAAO,OAAO;CAAG,WAAW,OAAO;AAAO,CACrD,CAAC,CAAC,CAAC;AAEH,MAAa,uBAAuB,OAAO,GAAG,uBAAuB,CAAC,CAAC,WAAW,SAAiB;CACjG,MAAM,aAAa,OAAO,WAAW;CACrC,MAAM,QAAQ,OAAO,KAAK;CAC1B,IAAI;CAEJ,KAAK,MAAM,QAAQ,kBAAkB;EACnC,MAAM,YAAY,MAAM,KAAK,SAAS,IAAI;EAE1C,IAAI,OAAO,WAAW,OAAO,SAAS,GAAG;GACvC,oBAAoB;GACpB;EACF;CACF;CAEA,IAAI,CAAC,mBACH,OAAO,OAAO,IAAI,2BAA2B;EAC3C,uBAAO,IAAI,MAAM,wCAAwC,MAAM,KAAK,SAAS,eAAe,EAAE,EAAE;EAChG,WAAW;CACb,CAAC;CAQH,OAAO;EAAE,sBALoB,OAAO,WAAW;GAC7C,WAAW,KAAK,OAAyB,mBAAmB,EAAE,SAAS,KAAK,CAAC;GAC7E,QAAQ,UAAU,IAAI,2BAA2B;IAAE;IAAO,WAAW;GAA0B,CAAC;EAClG,CAAC;EAEuB,MAAM;CAAkB;AAClD,CAAC"}
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { B as SeoConfiguration } from "../models-VmGmG19-.js";
|
|
2
|
-
import { M as StudioBootstrap, t as maxS3SingleCopyBytes, u as makeDefaultSeoOptions } from "../S3MediaObjects-Dwhl2deX.js";
|
|
3
|
-
import { validateFormCapabilities } from "./form-capabilities.js";
|
|
4
|
-
import { compileCmsI18n } from "./i18n.js";
|
|
5
|
-
import { i as PreviewOrigin } from "../models-5j67LMqW.js";
|
|
6
|
-
import { compileCmsDocumentModel } from "./document-model.js";
|
|
7
|
-
import { Config, Effect, Predicate, Redacted, Result, Schema } from "effect";
|
|
8
|
-
|
|
9
|
-
//#region src/internal/configuration.ts
|
|
10
|
-
const DEFAULT_CLEANUP_INTERVAL_MILLIS = 864e5;
|
|
11
|
-
const DEFAULT_CLEANUP_INITIAL_DELAY_MILLIS = 6e4;
|
|
12
|
-
const DEFAULT_MEDIA_MAX_UPLOAD_BYTES = 1e7;
|
|
13
|
-
const AuthoredInstallationConfiguration = Schema.Struct({
|
|
14
|
-
cleanup: Schema.optionalKey(Schema.Union([Schema.Literals([false]), Schema.Struct({
|
|
15
|
-
initialDelayMillis: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),
|
|
16
|
-
intervalMillis: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThan(0)))
|
|
17
|
-
})])),
|
|
18
|
-
database: Schema.Struct({ schema: Schema.NonEmptyString.check(Schema.makeFilter((value) => /^[a-z_][a-z0-9_]{0,62}$/u.test(value), { expected: "a lowercase PostgreSQL identifier" })) }),
|
|
19
|
-
media: Schema.optionalKey(Schema.Union([Schema.Literals([false]), Schema.Struct({
|
|
20
|
-
maxUploadBytes: Schema.optionalKey(Schema.Int.check(Schema.isBetween({
|
|
21
|
-
minimum: 1,
|
|
22
|
-
maximum: maxS3SingleCopyBytes
|
|
23
|
-
}))),
|
|
24
|
-
prefix: Schema.NonEmptyString.check(Schema.makeFilter((value) => !value.startsWith("/") && value.endsWith("/") && !value.includes(".."), { expected: "a relative object prefix ending in /" }))
|
|
25
|
-
})]))
|
|
26
|
-
});
|
|
27
|
-
const RuntimeConfiguration = Schema.Struct({
|
|
28
|
-
baseUrl: PreviewOrigin,
|
|
29
|
-
databaseUrl: Schema.NonEmptyString,
|
|
30
|
-
initializationToken: Schema.NonEmptyString.check(Schema.isMinLength(32)),
|
|
31
|
-
secret: Schema.NonEmptyString.check(Schema.isMinLength(32))
|
|
32
|
-
});
|
|
33
|
-
const RuntimeMediaConfiguration = Schema.Struct({
|
|
34
|
-
accessKeyId: Schema.optionalKey(Schema.NonEmptyString),
|
|
35
|
-
bucket: Schema.NonEmptyString,
|
|
36
|
-
endpoint: Schema.optionalKey(Schema.NonEmptyString),
|
|
37
|
-
forcePathStyle: Schema.optionalKey(Schema.Boolean),
|
|
38
|
-
provisionBucket: Schema.optionalKey(Schema.Boolean),
|
|
39
|
-
publicBaseUrl: Schema.NonEmptyString,
|
|
40
|
-
region: Schema.NonEmptyString,
|
|
41
|
-
secretAccessKey: Schema.optionalKey(Schema.NonEmptyString),
|
|
42
|
-
sessionToken: Schema.optionalKey(Schema.NonEmptyString)
|
|
43
|
-
});
|
|
44
|
-
var CmsRuntimeConfigurationMissing = class extends Schema.TaggedError()("CmsRuntimeConfigurationMissing", {
|
|
45
|
-
environmentVariable: Schema.String,
|
|
46
|
-
message: Schema.String,
|
|
47
|
-
path: Schema.String
|
|
48
|
-
}) {};
|
|
49
|
-
function compileCmsConfiguration(configuration) {
|
|
50
|
-
const installation = decodeOrThrow(AuthoredInstallationConfiguration, configuration.installation, "authored installation");
|
|
51
|
-
for (const [name, form] of Object.entries(configuration.forms ?? {})) {
|
|
52
|
-
if (!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(name)) throw new Error(`Form ${name} needs a kebab-case Vue component name.`);
|
|
53
|
-
validateFormCapabilities(form.definition);
|
|
54
|
-
if (!Predicate.isFunction(form.onSubmit)) throw new Error(`Form ${name} needs a server submission handler.`);
|
|
55
|
-
}
|
|
56
|
-
const i18n = compileCmsI18n(configuration.i18n);
|
|
57
|
-
const documents = compileCmsDocumentModel(configuration.documents, configuration.i18n);
|
|
58
|
-
const seo = configuration.seo === void 0 ? void 0 : decodeOrThrow(SeoConfiguration, configuration.seo, "SEO");
|
|
59
|
-
return {
|
|
60
|
-
i18n,
|
|
61
|
-
documentModel: documents.executable,
|
|
62
|
-
documents: documents.authoring,
|
|
63
|
-
installation,
|
|
64
|
-
...seo === void 0 ? void 0 : { seo }
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
/** Adds the keys Nitro needs in order to apply NUXT_CMS_* runtime environment overrides. */
|
|
68
|
-
function cmsRuntimeConfigurationDefaults(authored, input) {
|
|
69
|
-
const configured = Predicate.isObject(input) ? input : {};
|
|
70
|
-
const mediaEnabled = authored.installation.media !== false && authored.installation.media !== void 0;
|
|
71
|
-
const configuredMedia = Predicate.isObject(configured.media) ? configured.media : void 0;
|
|
72
|
-
const string = (value) => Schema.is(Schema.String)(value) ? value : "";
|
|
73
|
-
const boolean = (value) => Schema.is(Schema.Boolean)(value) ? value : false;
|
|
74
|
-
return {
|
|
75
|
-
baseUrl: string(configured.baseUrl),
|
|
76
|
-
databaseUrl: string(configured.databaseUrl),
|
|
77
|
-
initializationToken: string(configured.initializationToken),
|
|
78
|
-
media: mediaEnabled ? configured.media === false ? false : {
|
|
79
|
-
accessKeyId: string(configuredMedia?.accessKeyId),
|
|
80
|
-
bucket: string(configuredMedia?.bucket),
|
|
81
|
-
endpoint: string(configuredMedia?.endpoint),
|
|
82
|
-
forcePathStyle: boolean(configuredMedia?.forcePathStyle),
|
|
83
|
-
provisionBucket: boolean(configuredMedia?.provisionBucket),
|
|
84
|
-
publicBaseUrl: string(configuredMedia?.publicBaseUrl),
|
|
85
|
-
region: string(configuredMedia?.region),
|
|
86
|
-
secretAccessKey: string(configuredMedia?.secretAccessKey),
|
|
87
|
-
sessionToken: string(configuredMedia?.sessionToken)
|
|
88
|
-
} : false,
|
|
89
|
-
secret: string(configured.secret)
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
/** Reads the same NUXT_CMS_* values that Nitro applies to runtimeConfig at process startup. */
|
|
93
|
-
const cmsRuntimeConfigurationFromEnvironment = Effect.fn("CmsConfiguration.runtimeFromEnvironment")(function* (defaults) {
|
|
94
|
-
const string = (name, fallback) => Config.String(name).pipe(Config.withDefault(fallback));
|
|
95
|
-
const secret = (name, fallback) => Config.Redacted(name).pipe(Config.withDefault(Redacted.make(fallback)), Effect.map(Redacted.value));
|
|
96
|
-
return {
|
|
97
|
-
baseUrl: yield* string("NUXT_CMS_BASE_URL", defaults.baseUrl),
|
|
98
|
-
databaseUrl: yield* string("NUXT_CMS_DATABASE_URL", defaults.databaseUrl),
|
|
99
|
-
initializationToken: yield* secret("NUXT_CMS_INITIALIZATION_TOKEN", defaults.initializationToken),
|
|
100
|
-
media: defaults.media === false || defaults.media === void 0 ? false : {
|
|
101
|
-
accessKeyId: yield* string("NUXT_CMS_MEDIA_ACCESS_KEY_ID", defaults.media.accessKeyId ?? ""),
|
|
102
|
-
bucket: yield* string("NUXT_CMS_MEDIA_BUCKET", defaults.media.bucket),
|
|
103
|
-
endpoint: yield* string("NUXT_CMS_MEDIA_ENDPOINT", defaults.media.endpoint ?? ""),
|
|
104
|
-
forcePathStyle: yield* Config.Boolean("NUXT_CMS_MEDIA_FORCE_PATH_STYLE").pipe(Config.withDefault(defaults.media.forcePathStyle ?? false)),
|
|
105
|
-
provisionBucket: yield* Config.Boolean("NUXT_CMS_MEDIA_PROVISION_BUCKET").pipe(Config.withDefault(defaults.media.provisionBucket ?? false)),
|
|
106
|
-
publicBaseUrl: yield* string("NUXT_CMS_MEDIA_PUBLIC_BASE_URL", defaults.media.publicBaseUrl),
|
|
107
|
-
region: yield* string("NUXT_CMS_MEDIA_REGION", defaults.media.region),
|
|
108
|
-
secretAccessKey: yield* secret("NUXT_CMS_MEDIA_SECRET_ACCESS_KEY", defaults.media.secretAccessKey ?? ""),
|
|
109
|
-
sessionToken: yield* secret("NUXT_CMS_MEDIA_SESSION_TOKEN", defaults.media.sessionToken ?? "")
|
|
110
|
-
},
|
|
111
|
-
secret: yield* secret("NUXT_CMS_SECRET", defaults.secret)
|
|
112
|
-
};
|
|
113
|
-
});
|
|
114
|
-
function resolveCmsInstallation(authored, runtimeInput, authoring) {
|
|
115
|
-
const compiled = compileCmsConfiguration(authored);
|
|
116
|
-
const runtimeObject = Predicate.isObject(runtimeInput) ? runtimeInput : {};
|
|
117
|
-
requireRuntimeValue(runtimeObject.baseUrl, "cms.baseUrl", "NUXT_CMS_BASE_URL");
|
|
118
|
-
requireRuntimeValue(runtimeObject.databaseUrl, "cms.databaseUrl", "NUXT_CMS_DATABASE_URL");
|
|
119
|
-
requireRuntimeValue(runtimeObject.initializationToken, "cms.initializationToken", "NUXT_CMS_INITIALIZATION_TOKEN");
|
|
120
|
-
requireRuntimeValue(runtimeObject.secret, "cms.secret", "NUXT_CMS_SECRET");
|
|
121
|
-
const runtimeResult = Schema.decodeUnknownResult(RuntimeConfiguration)(runtimeInput);
|
|
122
|
-
if (Result.isFailure(runtimeResult)) throw new Error(`Invalid CMS runtime installation configuration: ${String(runtimeResult.failure)}`);
|
|
123
|
-
const runtime = runtimeResult.success;
|
|
124
|
-
const cleanup = compiled.installation.cleanup === false ? void 0 : compiled.installation.cleanup;
|
|
125
|
-
const authoredMedia = compiled.installation.media === false ? void 0 : compiled.installation.media;
|
|
126
|
-
const runtimeMedia = authoredMedia ? decodeRuntimeMedia(runtimeObject.media) : void 0;
|
|
127
|
-
const bootstrap = Result.getOrThrow(Schema.decodeResult(StudioBootstrap)({
|
|
128
|
-
basePath: "/",
|
|
129
|
-
documents: compiled.documents,
|
|
130
|
-
media: {
|
|
131
|
-
enabled: runtimeMedia !== void 0,
|
|
132
|
-
maxUploadBytes: authoredMedia?.maxUploadBytes ?? DEFAULT_MEDIA_MAX_UPLOAD_BYTES
|
|
133
|
-
},
|
|
134
|
-
seo: compiled.seo ?? makeDefaultSeoOptions(runtime.baseUrl),
|
|
135
|
-
version: "1"
|
|
136
|
-
}));
|
|
137
|
-
const catalog = configurationCatalog(compiled.documents, authoring);
|
|
138
|
-
return {
|
|
139
|
-
formHandlers: Object.fromEntries(Object.entries(authored.forms ?? {}).map(([name, form]) => [name, form.onSubmit])),
|
|
140
|
-
authoring,
|
|
141
|
-
configuration: catalog,
|
|
142
|
-
baseUrl: runtime.baseUrl,
|
|
143
|
-
bootstrap,
|
|
144
|
-
cleanup: {
|
|
145
|
-
enabled: compiled.installation.cleanup !== false,
|
|
146
|
-
initialDelayMillis: cleanup?.initialDelayMillis ?? DEFAULT_CLEANUP_INITIAL_DELAY_MILLIS,
|
|
147
|
-
intervalMillis: cleanup?.intervalMillis ?? DEFAULT_CLEANUP_INTERVAL_MILLIS
|
|
148
|
-
},
|
|
149
|
-
database: {
|
|
150
|
-
schema: compiled.installation.database.schema,
|
|
151
|
-
url: runtime.databaseUrl
|
|
152
|
-
},
|
|
153
|
-
documentModel: compiled.documentModel,
|
|
154
|
-
initializationToken: runtime.initializationToken,
|
|
155
|
-
...runtimeMedia && authoredMedia ? { media: {
|
|
156
|
-
...runtimeMedia,
|
|
157
|
-
credentials: runtimeMedia.accessKeyId && runtimeMedia.secretAccessKey ? {
|
|
158
|
-
accessKeyId: runtimeMedia.accessKeyId,
|
|
159
|
-
secretAccessKey: runtimeMedia.secretAccessKey,
|
|
160
|
-
...runtimeMedia.sessionToken ? { sessionToken: runtimeMedia.sessionToken } : void 0
|
|
161
|
-
} : void 0,
|
|
162
|
-
forcePathStyle: runtimeMedia.forcePathStyle ?? false,
|
|
163
|
-
prefix: authoredMedia.prefix,
|
|
164
|
-
provisionBucket: runtimeMedia.provisionBucket ?? false,
|
|
165
|
-
publicBaseUrl: `${runtimeMedia.publicBaseUrl.replace(/\/+$/gu, "")}/${authoredMedia.prefix.replace(/\/+$/gu, "")}`
|
|
166
|
-
} } : void 0,
|
|
167
|
-
secret: runtime.secret
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
function configurationCatalog(documents, authoring) {
|
|
171
|
-
const value = {
|
|
172
|
-
version: 1,
|
|
173
|
-
documents,
|
|
174
|
-
components: authoring.components
|
|
175
|
-
};
|
|
176
|
-
const revision = `${authoring.revision}:${fingerprint(JSON.stringify(documents))}`;
|
|
177
|
-
return {
|
|
178
|
-
...value,
|
|
179
|
-
revision
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
function fingerprint(value) {
|
|
183
|
-
let first = 2166136261;
|
|
184
|
-
let second = 2654435769;
|
|
185
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
186
|
-
const code = value.charCodeAt(index);
|
|
187
|
-
first = Math.imul(first ^ code, 16777619);
|
|
188
|
-
second = Math.imul(second ^ code, 2246822507);
|
|
189
|
-
}
|
|
190
|
-
return `${(first >>> 0).toString(16).padStart(8, "0")}${(second >>> 0).toString(16).padStart(8, "0")}`;
|
|
191
|
-
}
|
|
192
|
-
function decodeRuntimeMedia(input) {
|
|
193
|
-
const raw = Predicate.isObject(input) ? input : {};
|
|
194
|
-
requireRuntimeValue(raw.bucket, "cms.media.bucket", "NUXT_CMS_MEDIA_BUCKET");
|
|
195
|
-
requireRuntimeValue(raw.publicBaseUrl, "cms.media.publicBaseUrl", "NUXT_CMS_MEDIA_PUBLIC_BASE_URL");
|
|
196
|
-
requireRuntimeValue(raw.region, "cms.media.region", "NUXT_CMS_MEDIA_REGION");
|
|
197
|
-
const optionalString = (value) => Schema.is(Schema.NonEmptyString)(value) ? value : void 0;
|
|
198
|
-
const accessKeyId = optionalString(raw.accessKeyId);
|
|
199
|
-
const endpoint = optionalString(raw.endpoint);
|
|
200
|
-
const secretAccessKey = optionalString(raw.secretAccessKey);
|
|
201
|
-
const sessionToken = optionalString(raw.sessionToken);
|
|
202
|
-
const normalized = Object.assign({
|
|
203
|
-
bucket: raw.bucket,
|
|
204
|
-
publicBaseUrl: raw.publicBaseUrl,
|
|
205
|
-
region: raw.region
|
|
206
|
-
}, accessKeyId ? { accessKeyId } : void 0, endpoint ? { endpoint } : void 0, Schema.is(Schema.Boolean)(raw.forcePathStyle) ? { forcePathStyle: raw.forcePathStyle } : void 0, Schema.is(Schema.Boolean)(raw.provisionBucket) ? { provisionBucket: raw.provisionBucket } : void 0, secretAccessKey ? { secretAccessKey } : void 0, sessionToken ? { sessionToken } : void 0);
|
|
207
|
-
const result = Schema.decodeUnknownResult(RuntimeMediaConfiguration)(normalized);
|
|
208
|
-
if (Result.isFailure(result)) throw new Error(`Invalid CMS runtime media configuration: ${String(result.failure)}`);
|
|
209
|
-
const decoded = result.success;
|
|
210
|
-
if (decoded.accessKeyId === void 0 !== (decoded.secretAccessKey === void 0)) throw new Error("Invalid CMS runtime media configuration: accessKeyId and secretAccessKey must be provided together.");
|
|
211
|
-
return decoded;
|
|
212
|
-
}
|
|
213
|
-
function requireRuntimeValue(value, path, environmentVariable) {
|
|
214
|
-
if (!Schema.is(Schema.NonEmptyString)(value)) throw new CmsRuntimeConfigurationMissing({
|
|
215
|
-
environmentVariable,
|
|
216
|
-
message: `Missing ${environmentVariable} for ${path}.`,
|
|
217
|
-
path
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
function decodeOrThrow(schema, input, label) {
|
|
221
|
-
const decoded = Schema.decodeUnknownResult(schema)(input);
|
|
222
|
-
if (Result.isFailure(decoded)) throw new Error(`Invalid CMS ${label} configuration: ${String(decoded.failure)}`);
|
|
223
|
-
return decoded.success;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
//#endregion
|
|
227
|
-
export { cmsRuntimeConfigurationDefaults, cmsRuntimeConfigurationFromEnvironment, compileCmsConfiguration, resolveCmsInstallation };
|
|
228
|
-
//# sourceMappingURL=configuration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","names":["PreviewOriginSchema"],"sources":["../../../../src/internal/configuration.ts"],"sourcesContent":["import { compileCmsI18n, type CompiledCmsI18n } from './i18n'\nimport type { ExecutableDocumentModel } from '@internal/document/DocumentEngine'\nimport type { AuthoringCatalog, DocumentConfiguration } from '@internal/protocol/Configuration'\nimport type { ConfigurationCatalog } from '@internal/protocol/ConfigurationChanges'\nimport type { CmsConfiguration, CmsRuntimeConfiguration } from '../Configuration'\nimport type { NuxtCmsInstallationOptions } from '../runtime/installation'\nimport { PreviewOrigin as PreviewOriginSchema } from '@internal/protocol/Preview'\nimport { StudioBootstrap } from '@internal/protocol/StudioHttp'\nimport { SeoConfiguration } from '@internal/protocol/Seo'\nimport { makeDefaultSeoOptions } from '@internal/server/Seo'\nimport { maxS3SingleCopyBytes } from '@internal/s3/S3MediaObjects'\nimport { Config, Effect, Predicate, Redacted, Result, Schema } from 'effect'\nimport { compileCmsDocumentModel } from './document-model'\nimport { validateFormCapabilities } from './form-capabilities'\n\nconst DEFAULT_CLEANUP_INTERVAL_MILLIS = 24 * 60 * 60_000\n\nconst DEFAULT_CLEANUP_INITIAL_DELAY_MILLIS = 60_000\n\nconst DEFAULT_MEDIA_MAX_UPLOAD_BYTES = 10_000_000\n\nconst AuthoredInstallationConfiguration = Schema.Struct({\n cleanup: Schema.optionalKey(\n Schema.Union([\n Schema.Literals([false]),\n Schema.Struct({\n initialDelayMillis: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n intervalMillis: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThan(0))),\n }),\n ]),\n ),\n database: Schema.Struct({\n schema: Schema.NonEmptyString.check(\n Schema.makeFilter((value) => /^[a-z_][a-z0-9_]{0,62}$/u.test(value), {\n expected: 'a lowercase PostgreSQL identifier',\n }),\n ),\n }),\n media: Schema.optionalKey(\n Schema.Union([\n Schema.Literals([false]),\n Schema.Struct({\n maxUploadBytes: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: maxS3SingleCopyBytes })),\n ),\n prefix: Schema.NonEmptyString.check(\n Schema.makeFilter((value) => !value.startsWith('/') && value.endsWith('/') && !value.includes('..'), {\n expected: 'a relative object prefix ending in /',\n }),\n ),\n }),\n ]),\n ),\n})\n\nconst RuntimeConfiguration = Schema.Struct({\n baseUrl: PreviewOriginSchema,\n databaseUrl: Schema.NonEmptyString,\n initializationToken: Schema.NonEmptyString.check(Schema.isMinLength(32)),\n secret: Schema.NonEmptyString.check(Schema.isMinLength(32)),\n})\n\nconst RuntimeMediaConfiguration = Schema.Struct({\n accessKeyId: Schema.optionalKey(Schema.NonEmptyString),\n bucket: Schema.NonEmptyString,\n endpoint: Schema.optionalKey(Schema.NonEmptyString),\n forcePathStyle: Schema.optionalKey(Schema.Boolean),\n provisionBucket: Schema.optionalKey(Schema.Boolean),\n publicBaseUrl: Schema.NonEmptyString,\n region: Schema.NonEmptyString,\n secretAccessKey: Schema.optionalKey(Schema.NonEmptyString),\n sessionToken: Schema.optionalKey(Schema.NonEmptyString),\n})\n\nclass CmsRuntimeConfigurationMissing extends Schema.TaggedError<CmsRuntimeConfigurationMissing>()(\n 'CmsRuntimeConfigurationMissing',\n {\n environmentVariable: Schema.String,\n message: Schema.String,\n path: Schema.String,\n },\n) {}\n\ntype CmsAuthoredInstallationConfiguration = Schema.Schema.Type<typeof AuthoredInstallationConfiguration>\n\nexport interface CompiledCmsConfiguration {\n readonly i18n: CompiledCmsI18n\n readonly documents: DocumentConfiguration\n readonly documentModel: ExecutableDocumentModel\n readonly installation: CmsAuthoredInstallationConfiguration\n readonly seo?: Schema.Schema.Type<typeof SeoConfiguration>\n}\n\nexport function compileCmsConfiguration(configuration: CmsConfiguration): CompiledCmsConfiguration {\n const installation = decodeOrThrow(\n AuthoredInstallationConfiguration,\n configuration.installation,\n 'authored installation',\n )\n\n for (const [name, form] of Object.entries(configuration.forms ?? {})) {\n if (!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u.test(name))\n throw new Error(`Form ${name} needs a kebab-case Vue component name.`)\n validateFormCapabilities(form.definition)\n\n if (!Predicate.isFunction(form.onSubmit)) throw new Error(`Form ${name} needs a server submission handler.`)\n }\n\n const i18n = compileCmsI18n(configuration.i18n)\n const documents = compileCmsDocumentModel(configuration.documents, configuration.i18n)\n const seo = configuration.seo === undefined ? undefined : decodeOrThrow(SeoConfiguration, configuration.seo, 'SEO')\n\n return {\n i18n,\n documentModel: documents.executable,\n documents: documents.authoring,\n installation,\n ...(seo === undefined ? undefined : { seo }),\n }\n}\n\n/** Adds the keys Nitro needs in order to apply NUXT_CMS_* runtime environment overrides. */\nexport function cmsRuntimeConfigurationDefaults(\n authored: CmsConfiguration,\n // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Nuxt runtime config is an external input parsed field by field here.\n input?: unknown,\n): CmsRuntimeConfiguration {\n const configured = Predicate.isObject(input) ? input : {}\n const mediaEnabled = authored.installation.media !== false && authored.installation.media !== undefined\n const configuredMedia = Predicate.isObject(configured.media) ? configured.media : undefined\n // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Each external field is narrowed immediately.\n const string = (value: unknown) => (Schema.is(Schema.String)(value) ? value : '')\n // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Each external field is narrowed immediately.\n const boolean = (value: unknown) => (Schema.is(Schema.Boolean)(value) ? value : false)\n\n return {\n baseUrl: string(configured.baseUrl),\n databaseUrl: string(configured.databaseUrl),\n initializationToken: string(configured.initializationToken),\n media: mediaEnabled\n ? configured.media === false\n ? false\n : {\n accessKeyId: string(configuredMedia?.accessKeyId),\n bucket: string(configuredMedia?.bucket),\n endpoint: string(configuredMedia?.endpoint),\n forcePathStyle: boolean(configuredMedia?.forcePathStyle),\n provisionBucket: boolean(configuredMedia?.provisionBucket),\n publicBaseUrl: string(configuredMedia?.publicBaseUrl),\n region: string(configuredMedia?.region),\n secretAccessKey: string(configuredMedia?.secretAccessKey),\n sessionToken: string(configuredMedia?.sessionToken),\n }\n : false,\n secret: string(configured.secret),\n }\n}\n\n/** Reads the same NUXT_CMS_* values that Nitro applies to runtimeConfig at process startup. */\nexport const cmsRuntimeConfigurationFromEnvironment = Effect.fn('CmsConfiguration.runtimeFromEnvironment')(function* (\n defaults: CmsRuntimeConfiguration,\n) {\n const string = (name: string, fallback: string) => Config.String(name).pipe(Config.withDefault(fallback))\n\n const secret = (name: string, fallback: string) =>\n Config.Redacted(name).pipe(Config.withDefault(Redacted.make(fallback)), Effect.map(Redacted.value))\n\n return {\n baseUrl: yield* string('NUXT_CMS_BASE_URL', defaults.baseUrl),\n databaseUrl: yield* string('NUXT_CMS_DATABASE_URL', defaults.databaseUrl),\n initializationToken: yield* secret('NUXT_CMS_INITIALIZATION_TOKEN', defaults.initializationToken),\n media:\n defaults.media === false || defaults.media === undefined\n ? false\n : {\n accessKeyId: yield* string('NUXT_CMS_MEDIA_ACCESS_KEY_ID', defaults.media.accessKeyId ?? ''),\n bucket: yield* string('NUXT_CMS_MEDIA_BUCKET', defaults.media.bucket),\n endpoint: yield* string('NUXT_CMS_MEDIA_ENDPOINT', defaults.media.endpoint ?? ''),\n forcePathStyle: yield* Config.Boolean('NUXT_CMS_MEDIA_FORCE_PATH_STYLE').pipe(\n Config.withDefault(defaults.media.forcePathStyle ?? false),\n ),\n provisionBucket: yield* Config.Boolean('NUXT_CMS_MEDIA_PROVISION_BUCKET').pipe(\n Config.withDefault(defaults.media.provisionBucket ?? false),\n ),\n publicBaseUrl: yield* string('NUXT_CMS_MEDIA_PUBLIC_BASE_URL', defaults.media.publicBaseUrl),\n region: yield* string('NUXT_CMS_MEDIA_REGION', defaults.media.region),\n secretAccessKey: yield* secret('NUXT_CMS_MEDIA_SECRET_ACCESS_KEY', defaults.media.secretAccessKey ?? ''),\n sessionToken: yield* secret('NUXT_CMS_MEDIA_SESSION_TOKEN', defaults.media.sessionToken ?? ''),\n },\n secret: yield* secret('NUXT_CMS_SECRET', defaults.secret),\n } satisfies CmsRuntimeConfiguration\n})\n\nexport function resolveCmsInstallation(\n authored: CmsConfiguration,\n // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Shared Nitro/CLI boundary validates this value before resource acquisition.\n runtimeInput: unknown,\n authoring: AuthoringCatalog,\n): NuxtCmsInstallationOptions {\n const compiled = compileCmsConfiguration(authored)\n const runtimeObject = Predicate.isObject(runtimeInput) ? runtimeInput : {}\n requireRuntimeValue(runtimeObject.baseUrl, 'cms.baseUrl', 'NUXT_CMS_BASE_URL')\n requireRuntimeValue(runtimeObject.databaseUrl, 'cms.databaseUrl', 'NUXT_CMS_DATABASE_URL')\n requireRuntimeValue(runtimeObject.initializationToken, 'cms.initializationToken', 'NUXT_CMS_INITIALIZATION_TOKEN')\n requireRuntimeValue(runtimeObject.secret, 'cms.secret', 'NUXT_CMS_SECRET')\n const runtimeResult = Schema.decodeUnknownResult(RuntimeConfiguration)(runtimeInput)\n\n if (Result.isFailure(runtimeResult))\n throw new Error(`Invalid CMS runtime installation configuration: ${String(runtimeResult.failure)}`)\n const runtime = runtimeResult.success\n const cleanup = compiled.installation.cleanup === false ? undefined : compiled.installation.cleanup\n const authoredMedia = compiled.installation.media === false ? undefined : compiled.installation.media\n const runtimeMedia = authoredMedia ? decodeRuntimeMedia(runtimeObject.media) : undefined\n\n const bootstrap = Result.getOrThrow(\n Schema.decodeResult(StudioBootstrap)({\n basePath: '/',\n documents: compiled.documents,\n media: {\n enabled: runtimeMedia !== undefined,\n maxUploadBytes: authoredMedia?.maxUploadBytes ?? DEFAULT_MEDIA_MAX_UPLOAD_BYTES,\n },\n seo: compiled.seo ?? makeDefaultSeoOptions(runtime.baseUrl),\n version: '1',\n }),\n )\n\n const catalog = configurationCatalog(compiled.documents, authoring)\n\n return {\n formHandlers: Object.fromEntries(Object.entries(authored.forms ?? {}).map(([name, form]) => [name, form.onSubmit])),\n authoring,\n configuration: catalog,\n baseUrl: runtime.baseUrl,\n bootstrap,\n cleanup: {\n enabled: compiled.installation.cleanup !== false,\n initialDelayMillis: cleanup?.initialDelayMillis ?? DEFAULT_CLEANUP_INITIAL_DELAY_MILLIS,\n intervalMillis: cleanup?.intervalMillis ?? DEFAULT_CLEANUP_INTERVAL_MILLIS,\n },\n database: { schema: compiled.installation.database.schema, url: runtime.databaseUrl },\n documentModel: compiled.documentModel,\n initializationToken: runtime.initializationToken,\n ...(runtimeMedia && authoredMedia\n ? {\n media: {\n ...runtimeMedia,\n credentials:\n runtimeMedia.accessKeyId && runtimeMedia.secretAccessKey\n ? {\n accessKeyId: runtimeMedia.accessKeyId,\n secretAccessKey: runtimeMedia.secretAccessKey,\n ...(runtimeMedia.sessionToken ? { sessionToken: runtimeMedia.sessionToken } : undefined),\n }\n : undefined,\n forcePathStyle: runtimeMedia.forcePathStyle ?? false,\n prefix: authoredMedia.prefix,\n provisionBucket: runtimeMedia.provisionBucket ?? false,\n publicBaseUrl: `${runtimeMedia.publicBaseUrl.replace(/\\/+$/gu, '')}/${authoredMedia.prefix.replace(/\\/+$/gu, '')}`,\n },\n }\n : undefined),\n secret: runtime.secret,\n }\n}\n\nfunction configurationCatalog(documents: DocumentConfiguration, authoring: AuthoringCatalog): ConfigurationCatalog {\n const value = { version: 1 as const, documents, components: authoring.components }\n const revision = `${authoring.revision}:${fingerprint(JSON.stringify(documents))}`\n\n return { ...value, revision }\n}\n\nfunction fingerprint(value: string): string {\n let first = 0x811c9dc5\n let second = 0x9e3779b9\n\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index)\n first = Math.imul(first ^ code, 0x01000193)\n second = Math.imul(second ^ code, 0x85ebca6b)\n }\n\n return `${(first >>> 0).toString(16).padStart(8, '0')}${(second >>> 0).toString(16).padStart(8, '0')}`\n}\n\n// oxlint-disable-next-line anti-slop/no-unknown-parameters -- Runtime media is validated before use.\nfunction decodeRuntimeMedia(input: unknown) {\n const raw = Predicate.isObject(input) ? input : {}\n requireRuntimeValue(raw.bucket, 'cms.media.bucket', 'NUXT_CMS_MEDIA_BUCKET')\n requireRuntimeValue(raw.publicBaseUrl, 'cms.media.publicBaseUrl', 'NUXT_CMS_MEDIA_PUBLIC_BASE_URL')\n requireRuntimeValue(raw.region, 'cms.media.region', 'NUXT_CMS_MEDIA_REGION')\n // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Each external field is narrowed immediately.\n const optionalString = (value: unknown) => (Schema.is(Schema.NonEmptyString)(value) ? value : undefined)\n const accessKeyId = optionalString(raw.accessKeyId)\n const endpoint = optionalString(raw.endpoint)\n const secretAccessKey = optionalString(raw.secretAccessKey)\n const sessionToken = optionalString(raw.sessionToken)\n\n const normalized = Object.assign(\n { bucket: raw.bucket, publicBaseUrl: raw.publicBaseUrl, region: raw.region },\n accessKeyId ? { accessKeyId } : undefined,\n endpoint ? { endpoint } : undefined,\n Schema.is(Schema.Boolean)(raw.forcePathStyle) ? { forcePathStyle: raw.forcePathStyle } : undefined,\n Schema.is(Schema.Boolean)(raw.provisionBucket) ? { provisionBucket: raw.provisionBucket } : undefined,\n secretAccessKey ? { secretAccessKey } : undefined,\n sessionToken ? { sessionToken } : undefined,\n )\n\n const result = Schema.decodeUnknownResult(RuntimeMediaConfiguration)(normalized)\n\n if (Result.isFailure(result)) throw new Error(`Invalid CMS runtime media configuration: ${String(result.failure)}`)\n const decoded = result.success\n\n if ((decoded.accessKeyId === undefined) !== (decoded.secretAccessKey === undefined))\n throw new Error(\n 'Invalid CMS runtime media configuration: accessKeyId and secretAccessKey must be provided together.',\n )\n\n return decoded\n}\n\nfunction requireRuntimeValue(\n // oxlint-disable-next-line anti-slop/no-unknown-parameters -- This external field is narrowed immediately to a non-empty string.\n value: unknown,\n path: string,\n environmentVariable: string,\n): void {\n if (!Schema.is(Schema.NonEmptyString)(value))\n throw new CmsRuntimeConfigurationMissing({\n environmentVariable,\n message: `Missing ${environmentVariable} for ${path}.`,\n path,\n })\n}\n\nfunction decodeOrThrow<Decoded, Encoded>(\n schema: Schema.Codec<Decoded, Encoded>,\n input: Encoded,\n label: string,\n): Decoded {\n const decoded = Schema.decodeUnknownResult(schema)(input)\n\n if (Result.isFailure(decoded)) throw new Error(`Invalid CMS ${label} configuration: ${String(decoded.failure)}`)\n\n return decoded.success\n}\n"],"mappings":";;;;;;;;;AAeA,MAAM,kCAAkC;AAExC,MAAM,uCAAuC;AAE7C,MAAM,iCAAiC;AAEvC,MAAM,oCAAoC,OAAO,OAAO;CACtD,SAAS,OAAO,YACd,OAAO,MAAM,CACX,OAAO,SAAS,CAAC,KAAK,CAAC,GACvB,OAAO,OAAO;EACZ,oBAAoB,OAAO,YAAY,OAAO,IAAI,MAAM,OAAO,uBAAuB,CAAC,CAAC,CAAC;EACzF,gBAAgB,OAAO,YAAY,OAAO,IAAI,MAAM,OAAO,cAAc,CAAC,CAAC,CAAC;CAC9E,CAAC,CACH,CAAC,CACH;CACA,UAAU,OAAO,OAAO,EACtB,QAAQ,OAAO,eAAe,MAC5B,OAAO,YAAY,UAAU,2BAA2B,KAAK,KAAK,GAAG,EACnE,UAAU,oCACZ,CAAC,CACH,EACF,CAAC;CACD,OAAO,OAAO,YACZ,OAAO,MAAM,CACX,OAAO,SAAS,CAAC,KAAK,CAAC,GACvB,OAAO,OAAO;EACZ,gBAAgB,OAAO,YACrB,OAAO,IAAI,MAAM,OAAO,UAAU;GAAE,SAAS;GAAG,SAAS;EAAqB,CAAC,CAAC,CAClF;EACA,QAAQ,OAAO,eAAe,MAC5B,OAAO,YAAY,UAAU,CAAC,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,SAAS,IAAI,GAAG,EACnG,UAAU,uCACZ,CAAC,CACH;CACF,CAAC,CACH,CAAC,CACH;AACF,CAAC;AAED,MAAM,uBAAuB,OAAO,OAAO;CACzC,SAASA;CACT,aAAa,OAAO;CACpB,qBAAqB,OAAO,eAAe,MAAM,OAAO,YAAY,EAAE,CAAC;CACvE,QAAQ,OAAO,eAAe,MAAM,OAAO,YAAY,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,4BAA4B,OAAO,OAAO;CAC9C,aAAa,OAAO,YAAY,OAAO,cAAc;CACrD,QAAQ,OAAO;CACf,UAAU,OAAO,YAAY,OAAO,cAAc;CAClD,gBAAgB,OAAO,YAAY,OAAO,OAAO;CACjD,iBAAiB,OAAO,YAAY,OAAO,OAAO;CAClD,eAAe,OAAO;CACtB,QAAQ,OAAO;CACf,iBAAiB,OAAO,YAAY,OAAO,cAAc;CACzD,cAAc,OAAO,YAAY,OAAO,cAAc;AACxD,CAAC;AAED,IAAM,iCAAN,cAA6C,OAAO,YAA4C,CAAC,CAC/F,kCACA;CACE,qBAAqB,OAAO;CAC5B,SAAS,OAAO;CAChB,MAAM,OAAO;AACf,CACF,CAAC,CAAC,CAAC;AAYH,SAAgB,wBAAwB,eAA2D;CACjG,MAAM,eAAe,cACnB,mCACA,cAAc,cACd,uBACF;CAEA,KAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,cAAc,SAAS,CAAC,CAAC,GAAG;EACpE,IAAI,CAAC,mCAAmC,KAAK,IAAI,GAC/C,MAAM,IAAI,MAAM,QAAQ,KAAK,wCAAwC;EACvE,yBAAyB,KAAK,UAAU;EAExC,IAAI,CAAC,UAAU,WAAW,KAAK,QAAQ,GAAG,MAAM,IAAI,MAAM,QAAQ,KAAK,oCAAoC;CAC7G;CAEA,MAAM,OAAO,eAAe,cAAc,IAAI;CAC9C,MAAM,YAAY,wBAAwB,cAAc,WAAW,cAAc,IAAI;CACrF,MAAM,MAAM,cAAc,QAAQ,SAAY,SAAY,cAAc,kBAAkB,cAAc,KAAK,KAAK;CAElH,OAAO;EACL;EACA,eAAe,UAAU;EACzB,WAAW,UAAU;EACrB;EACA,GAAI,QAAQ,SAAY,SAAY,EAAE,IAAI;CAC5C;AACF;;AAGA,SAAgB,gCACd,UAEA,OACyB;CACzB,MAAM,aAAa,UAAU,SAAS,KAAK,IAAI,QAAQ,CAAC;CACxD,MAAM,eAAe,SAAS,aAAa,UAAU,SAAS,SAAS,aAAa,UAAU;CAC9F,MAAM,kBAAkB,UAAU,SAAS,WAAW,KAAK,IAAI,WAAW,QAAQ;CAElF,MAAM,UAAU,UAAoB,OAAO,GAAG,OAAO,MAAM,CAAC,CAAC,KAAK,IAAI,QAAQ;CAE9E,MAAM,WAAW,UAAoB,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC,KAAK,IAAI,QAAQ;CAEhF,OAAO;EACL,SAAS,OAAO,WAAW,OAAO;EAClC,aAAa,OAAO,WAAW,WAAW;EAC1C,qBAAqB,OAAO,WAAW,mBAAmB;EAC1D,OAAO,eACH,WAAW,UAAU,QACnB,QACA;GACE,aAAa,OAAO,iBAAiB,WAAW;GAChD,QAAQ,OAAO,iBAAiB,MAAM;GACtC,UAAU,OAAO,iBAAiB,QAAQ;GAC1C,gBAAgB,QAAQ,iBAAiB,cAAc;GACvD,iBAAiB,QAAQ,iBAAiB,eAAe;GACzD,eAAe,OAAO,iBAAiB,aAAa;GACpD,QAAQ,OAAO,iBAAiB,MAAM;GACtC,iBAAiB,OAAO,iBAAiB,eAAe;GACxD,cAAc,OAAO,iBAAiB,YAAY;EACpD,IACF;EACJ,QAAQ,OAAO,WAAW,MAAM;CAClC;AACF;;AAGA,MAAa,yCAAyC,OAAO,GAAG,yCAAyC,CAAC,CAAC,WACzG,UACA;CACA,MAAM,UAAU,MAAc,aAAqB,OAAO,OAAO,IAAI,CAAC,CAAC,KAAK,OAAO,YAAY,QAAQ,CAAC;CAExG,MAAM,UAAU,MAAc,aAC5B,OAAO,SAAS,IAAI,CAAC,CAAC,KAAK,OAAO,YAAY,SAAS,KAAK,QAAQ,CAAC,GAAG,OAAO,IAAI,SAAS,KAAK,CAAC;CAEpG,OAAO;EACL,SAAS,OAAO,OAAO,qBAAqB,SAAS,OAAO;EAC5D,aAAa,OAAO,OAAO,yBAAyB,SAAS,WAAW;EACxE,qBAAqB,OAAO,OAAO,iCAAiC,SAAS,mBAAmB;EAChG,OACE,SAAS,UAAU,SAAS,SAAS,UAAU,SAC3C,QACA;GACE,aAAa,OAAO,OAAO,gCAAgC,SAAS,MAAM,eAAe,EAAE;GAC3F,QAAQ,OAAO,OAAO,yBAAyB,SAAS,MAAM,MAAM;GACpE,UAAU,OAAO,OAAO,2BAA2B,SAAS,MAAM,YAAY,EAAE;GAChF,gBAAgB,OAAO,OAAO,QAAQ,iCAAiC,CAAC,CAAC,KACvE,OAAO,YAAY,SAAS,MAAM,kBAAkB,KAAK,CAC3D;GACA,iBAAiB,OAAO,OAAO,QAAQ,iCAAiC,CAAC,CAAC,KACxE,OAAO,YAAY,SAAS,MAAM,mBAAmB,KAAK,CAC5D;GACA,eAAe,OAAO,OAAO,kCAAkC,SAAS,MAAM,aAAa;GAC3F,QAAQ,OAAO,OAAO,yBAAyB,SAAS,MAAM,MAAM;GACpE,iBAAiB,OAAO,OAAO,oCAAoC,SAAS,MAAM,mBAAmB,EAAE;GACvG,cAAc,OAAO,OAAO,gCAAgC,SAAS,MAAM,gBAAgB,EAAE;EAC/F;EACN,QAAQ,OAAO,OAAO,mBAAmB,SAAS,MAAM;CAC1D;AACF,CAAC;AAED,SAAgB,uBACd,UAEA,cACA,WAC4B;CAC5B,MAAM,WAAW,wBAAwB,QAAQ;CACjD,MAAM,gBAAgB,UAAU,SAAS,YAAY,IAAI,eAAe,CAAC;CACzE,oBAAoB,cAAc,SAAS,eAAe,mBAAmB;CAC7E,oBAAoB,cAAc,aAAa,mBAAmB,uBAAuB;CACzF,oBAAoB,cAAc,qBAAqB,2BAA2B,+BAA+B;CACjH,oBAAoB,cAAc,QAAQ,cAAc,iBAAiB;CACzE,MAAM,gBAAgB,OAAO,oBAAoB,oBAAoB,CAAC,CAAC,YAAY;CAEnF,IAAI,OAAO,UAAU,aAAa,GAChC,MAAM,IAAI,MAAM,mDAAmD,OAAO,cAAc,OAAO,GAAG;CACpG,MAAM,UAAU,cAAc;CAC9B,MAAM,UAAU,SAAS,aAAa,YAAY,QAAQ,SAAY,SAAS,aAAa;CAC5F,MAAM,gBAAgB,SAAS,aAAa,UAAU,QAAQ,SAAY,SAAS,aAAa;CAChG,MAAM,eAAe,gBAAgB,mBAAmB,cAAc,KAAK,IAAI;CAE/E,MAAM,YAAY,OAAO,WACvB,OAAO,aAAa,eAAe,CAAC,CAAC;EACnC,UAAU;EACV,WAAW,SAAS;EACpB,OAAO;GACL,SAAS,iBAAiB;GAC1B,gBAAgB,eAAe,kBAAkB;EACnD;EACA,KAAK,SAAS,OAAO,sBAAsB,QAAQ,OAAO;EAC1D,SAAS;CACX,CAAC,CACH;CAEA,MAAM,UAAU,qBAAqB,SAAS,WAAW,SAAS;CAElE,OAAO;EACL,cAAc,OAAO,YAAY,OAAO,QAAQ,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;EAClH;EACA,eAAe;EACf,SAAS,QAAQ;EACjB;EACA,SAAS;GACP,SAAS,SAAS,aAAa,YAAY;GAC3C,oBAAoB,SAAS,sBAAsB;GACnD,gBAAgB,SAAS,kBAAkB;EAC7C;EACA,UAAU;GAAE,QAAQ,SAAS,aAAa,SAAS;GAAQ,KAAK,QAAQ;EAAY;EACpF,eAAe,SAAS;EACxB,qBAAqB,QAAQ;EAC7B,GAAI,gBAAgB,gBAChB,EACE,OAAO;GACL,GAAG;GACH,aACE,aAAa,eAAe,aAAa,kBACrC;IACE,aAAa,aAAa;IAC1B,iBAAiB,aAAa;IAC9B,GAAI,aAAa,eAAe,EAAE,cAAc,aAAa,aAAa,IAAI;GAChF,IACA;GACN,gBAAgB,aAAa,kBAAkB;GAC/C,QAAQ,cAAc;GACtB,iBAAiB,aAAa,mBAAmB;GACjD,eAAe,GAAG,aAAa,cAAc,QAAQ,UAAU,EAAE,EAAE,GAAG,cAAc,OAAO,QAAQ,UAAU,EAAE;EACjH,EACF,IACA;EACJ,QAAQ,QAAQ;CAClB;AACF;AAEA,SAAS,qBAAqB,WAAkC,WAAmD;CACjH,MAAM,QAAQ;EAAE,SAAS;EAAY;EAAW,YAAY,UAAU;CAAW;CACjF,MAAM,WAAW,GAAG,UAAU,SAAS,GAAG,YAAY,KAAK,UAAU,SAAS,CAAC;CAE/E,OAAO;EAAE,GAAG;EAAO;CAAS;AAC9B;AAEA,SAAS,YAAY,OAAuB;CAC1C,IAAI,QAAQ;CACZ,IAAI,SAAS;CAEb,KAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;EACpD,MAAM,OAAO,MAAM,WAAW,KAAK;EACnC,QAAQ,KAAK,KAAK,QAAQ,MAAM,QAAU;EAC1C,SAAS,KAAK,KAAK,SAAS,MAAM,UAAU;CAC9C;CAEA,OAAO,IAAI,UAAU,EAAC,CAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,KAAK,WAAW,EAAC,CAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG;AACrG;AAGA,SAAS,mBAAmB,OAAgB;CAC1C,MAAM,MAAM,UAAU,SAAS,KAAK,IAAI,QAAQ,CAAC;CACjD,oBAAoB,IAAI,QAAQ,oBAAoB,uBAAuB;CAC3E,oBAAoB,IAAI,eAAe,2BAA2B,gCAAgC;CAClG,oBAAoB,IAAI,QAAQ,oBAAoB,uBAAuB;CAE3E,MAAM,kBAAkB,UAAoB,OAAO,GAAG,OAAO,cAAc,CAAC,CAAC,KAAK,IAAI,QAAQ;CAC9F,MAAM,cAAc,eAAe,IAAI,WAAW;CAClD,MAAM,WAAW,eAAe,IAAI,QAAQ;CAC5C,MAAM,kBAAkB,eAAe,IAAI,eAAe;CAC1D,MAAM,eAAe,eAAe,IAAI,YAAY;CAEpD,MAAM,aAAa,OAAO,OACxB;EAAE,QAAQ,IAAI;EAAQ,eAAe,IAAI;EAAe,QAAQ,IAAI;CAAO,GAC3E,cAAc,EAAE,YAAY,IAAI,QAChC,WAAW,EAAE,SAAS,IAAI,QAC1B,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC,IAAI,cAAc,IAAI,EAAE,gBAAgB,IAAI,eAAe,IAAI,QACzF,OAAO,GAAG,OAAO,OAAO,CAAC,CAAC,IAAI,eAAe,IAAI,EAAE,iBAAiB,IAAI,gBAAgB,IAAI,QAC5F,kBAAkB,EAAE,gBAAgB,IAAI,QACxC,eAAe,EAAE,aAAa,IAAI,MACpC;CAEA,MAAM,SAAS,OAAO,oBAAoB,yBAAyB,CAAC,CAAC,UAAU;CAE/E,IAAI,OAAO,UAAU,MAAM,GAAG,MAAM,IAAI,MAAM,4CAA4C,OAAO,OAAO,OAAO,GAAG;CAClH,MAAM,UAAU,OAAO;CAEvB,IAAK,QAAQ,gBAAgB,YAAgB,QAAQ,oBAAoB,SACvE,MAAM,IAAI,MACR,qGACF;CAEF,OAAO;AACT;AAEA,SAAS,oBAEP,OACA,MACA,qBACM;CACN,IAAI,CAAC,OAAO,GAAG,OAAO,cAAc,CAAC,CAAC,KAAK,GACzC,MAAM,IAAI,+BAA+B;EACvC;EACA,SAAS,WAAW,oBAAoB,OAAO,KAAK;EACpD;CACF,CAAC;AACL;AAEA,SAAS,cACP,QACA,OACA,OACS;CACT,MAAM,UAAU,OAAO,oBAAoB,MAAM,CAAC,CAAC,KAAK;CAExD,IAAI,OAAO,UAAU,OAAO,GAAG,MAAM,IAAI,MAAM,eAAe,MAAM,kBAAkB,OAAO,QAAQ,OAAO,GAAG;CAE/G,OAAO,QAAQ;AACjB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { a as resetCmsDevelopment, i as loadCmsProjectEnvironment, n as checkCmsConfiguration, r as doctorCmsDevelopment, t as bootstrapCmsDevelopment } from "../dev-lifecycle-CjDq63Ft.js";
|
|
2
|
-
|
|
3
|
-
export { bootstrapCmsDevelopment, checkCmsConfiguration, doctorCmsDevelopment, loadCmsProjectEnvironment, resetCmsDevelopment };
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Predicate } from "effect";
|
|
2
|
-
|
|
3
|
-
//#region src/internal/diagnostics.ts
|
|
4
|
-
function diagnosticFromCause(phase, cause) {
|
|
5
|
-
const chain = causeChain(cause);
|
|
6
|
-
const tagged = [...chain].reverse().find((item) => item._tag)?._tag;
|
|
7
|
-
const message = [...chain].reverse().find((item) => item.message)?.message ?? String(cause);
|
|
8
|
-
const missing = message.match(/Missing (NUXT_CMS_[A-Z0-9_]+)/u)?.[1];
|
|
9
|
-
const resolvedPhase = chain.find((item) => item.phase)?.phase ?? phase;
|
|
10
|
-
return {
|
|
11
|
-
code: tagged ? kebabCase(tagged) : `${resolvedPhase.replaceAll(".", "-")}-failed`,
|
|
12
|
-
details: chain.flatMap((item) => item.stack ? [item.stack] : item.message ? [item.message] : []),
|
|
13
|
-
message,
|
|
14
|
-
phase: resolvedPhase,
|
|
15
|
-
...missing ? { remediation: `Define ${missing} in .env, pass --env-file, or provide it in the process environment.` } : void 0
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
function renderDiagnostic(diagnostic, verbose) {
|
|
19
|
-
return [
|
|
20
|
-
`✗ ${diagnostic.phase}`,
|
|
21
|
-
"",
|
|
22
|
-
` ${diagnostic.message}`,
|
|
23
|
-
...diagnostic.remediation ? ["", ` ${diagnostic.remediation}`] : [],
|
|
24
|
-
...verbose && diagnostic.details.length ? ["", ...diagnostic.details.map((detail) => ` ${detail}`)] : []
|
|
25
|
-
].join("\n");
|
|
26
|
-
}
|
|
27
|
-
function causeChain(cause) {
|
|
28
|
-
const chain = [];
|
|
29
|
-
const visited = /* @__PURE__ */ new Set();
|
|
30
|
-
let current = cause;
|
|
31
|
-
while (isErrorLike(current) && !visited.has(current) && chain.length < 16) {
|
|
32
|
-
visited.add(current);
|
|
33
|
-
chain.push(current);
|
|
34
|
-
current = current.cause;
|
|
35
|
-
}
|
|
36
|
-
return chain;
|
|
37
|
-
}
|
|
38
|
-
function isErrorLike(value) {
|
|
39
|
-
return Predicate.isObject(value);
|
|
40
|
-
}
|
|
41
|
-
function kebabCase(value) {
|
|
42
|
-
return value.replaceAll(/([a-z0-9])([A-Z])/gu, "$1-$2").replaceAll(/[^a-zA-Z0-9]+/gu, "-").replaceAll(/^-|-$/gu, "").toLocaleLowerCase();
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//#endregion
|
|
46
|
-
export { diagnosticFromCause, renderDiagnostic };
|
|
47
|
-
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","names":[],"sources":["../../../../src/internal/diagnostics.ts"],"sourcesContent":["import { Predicate } from 'effect'\n\nexport interface CmsDiagnostic {\n readonly code: string\n readonly details: ReadonlyArray<string>\n readonly message: string\n readonly phase: string\n readonly remediation?: string\n}\n\ninterface ErrorLike {\n readonly _tag?: string\n readonly cause?: unknown\n readonly message?: string\n readonly phase?: string\n readonly stack?: string\n}\n\nexport function diagnosticFromCause(phase: string, cause: unknown): CmsDiagnostic {\n const chain = causeChain(cause)\n const tagged = [...chain].reverse().find((item) => item._tag)?._tag\n const message = [...chain].reverse().find((item) => item.message)?.message ?? String(cause)\n const missing = message.match(/Missing (NUXT_CMS_[A-Z0-9_]+)/u)?.[1]\n const resolvedPhase = chain.find((item) => item.phase)?.phase ?? phase\n\n return {\n code: tagged ? kebabCase(tagged) : `${resolvedPhase.replaceAll('.', '-')}-failed`,\n details: chain.flatMap((item) => (item.stack ? [item.stack] : item.message ? [item.message] : [])),\n message,\n phase: resolvedPhase,\n ...(missing\n ? { remediation: `Define ${missing} in .env, pass --env-file, or provide it in the process environment.` }\n : undefined),\n }\n}\n\nexport function renderDiagnostic(diagnostic: CmsDiagnostic, verbose: boolean): string {\n return [\n `✗ ${diagnostic.phase}`,\n '',\n ` ${diagnostic.message}`,\n ...(diagnostic.remediation ? ['', ` ${diagnostic.remediation}`] : []),\n ...(verbose && diagnostic.details.length ? ['', ...diagnostic.details.map((detail) => ` ${detail}`)] : []),\n ].join('\\n')\n}\n\nfunction causeChain(cause: unknown): ErrorLike[] {\n const chain: ErrorLike[] = []\n const visited = new Set<unknown>()\n let current: unknown = cause\n\n while (isErrorLike(current) && !visited.has(current) && chain.length < 16) {\n visited.add(current)\n chain.push(current)\n current = current.cause\n }\n\n return chain\n}\n\nfunction isErrorLike(value: unknown): value is ErrorLike {\n return Predicate.isObject(value)\n}\n\nfunction kebabCase(value: string): string {\n return value\n .replaceAll(/([a-z0-9])([A-Z])/gu, '$1-$2')\n .replaceAll(/[^a-zA-Z0-9]+/gu, '-')\n .replaceAll(/^-|-$/gu, '')\n .toLocaleLowerCase()\n}\n"],"mappings":";;;AAkBA,SAAgB,oBAAoB,OAAe,OAA+B;CAChF,MAAM,QAAQ,WAAW,KAAK;CAC9B,MAAM,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,SAAS,KAAK,IAAI,CAAC,EAAE;CAC/D,MAAM,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,SAAS,KAAK,OAAO,CAAC,EAAE,WAAW,OAAO,KAAK;CAC1F,MAAM,UAAU,QAAQ,MAAM,gCAAgC,CAAC,GAAG;CAClE,MAAM,gBAAgB,MAAM,MAAM,SAAS,KAAK,KAAK,CAAC,EAAE,SAAS;CAEjE,OAAO;EACL,MAAM,SAAS,UAAU,MAAM,IAAI,GAAG,cAAc,WAAW,KAAK,GAAG,EAAE;EACzE,SAAS,MAAM,SAAS,SAAU,KAAK,QAAQ,CAAC,KAAK,KAAK,IAAI,KAAK,UAAU,CAAC,KAAK,OAAO,IAAI,CAAC,CAAE;EACjG;EACA,OAAO;EACP,GAAI,UACA,EAAE,aAAa,UAAU,QAAQ,sEAAsE,IACvG;CACN;AACF;AAEA,SAAgB,iBAAiB,YAA2B,SAA0B;CACpF,OAAO;EACL,KAAK,WAAW;EAChB;EACA,KAAK,WAAW;EAChB,GAAI,WAAW,cAAc,CAAC,IAAI,KAAK,WAAW,aAAa,IAAI,CAAC;EACpE,GAAI,WAAW,WAAW,QAAQ,SAAS,CAAC,IAAI,GAAG,WAAW,QAAQ,KAAK,WAAW,KAAK,QAAQ,CAAC,IAAI,CAAC;CAC3G,CAAC,CAAC,KAAK,IAAI;AACb;AAEA,SAAS,WAAW,OAA6B;CAC/C,MAAM,QAAqB,CAAC;CAC5B,MAAM,0BAAU,IAAI,IAAa;CACjC,IAAI,UAAmB;CAEvB,OAAO,YAAY,OAAO,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,MAAM,SAAS,IAAI;EACzE,QAAQ,IAAI,OAAO;EACnB,MAAM,KAAK,OAAO;EAClB,UAAU,QAAQ;CACpB;CAEA,OAAO;AACT;AAEA,SAAS,YAAY,OAAoC;CACvD,OAAO,UAAU,SAAS,KAAK;AACjC;AAEA,SAAS,UAAU,OAAuB;CACxC,OAAO,MACJ,WAAW,uBAAuB,OAAO,CAAC,CAC1C,WAAW,mBAAmB,GAAG,CAAC,CAClC,WAAW,WAAW,EAAE,CAAC,CACzB,kBAAkB;AACvB"}
|