@velastack/cms 0.1.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 +21 -0
- package/README.md +644 -0
- package/dist/cms.d.ts +6 -0
- package/dist/cms.js +30 -0
- package/dist/components/admin-bar/admin-bar-internal.svelte +1697 -0
- package/dist/components/admin-bar/admin-bar-internal.svelte.d.ts +12 -0
- package/dist/components/admin-bar/admin-bar.css +5 -0
- package/dist/components/admin-bar/admin-bar.svelte +355 -0
- package/dist/components/admin-bar/admin-bar.svelte.d.ts +7 -0
- package/dist/components/admin-bar/click-outside.d.ts +8 -0
- package/dist/components/admin-bar/click-outside.js +17 -0
- package/dist/components/admin-bar/css-root.svelte +23 -0
- package/dist/components/admin-bar/css-root.svelte.d.ts +19 -0
- package/dist/components/admin-bar/delete-page-dialog.svelte +326 -0
- package/dist/components/admin-bar/delete-page-dialog.svelte.d.ts +32 -0
- package/dist/components/admin-bar/history-panel.svelte +264 -0
- package/dist/components/admin-bar/history-panel.svelte.d.ts +8 -0
- package/dist/components/admin-bar/icons/bold.svelte +13 -0
- package/dist/components/admin-bar/icons/bold.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/check.svelte +11 -0
- package/dist/components/admin-bar/icons/check.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/chevron-down.svelte +11 -0
- package/dist/components/admin-bar/icons/chevron-down.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/chevron-right.svelte +11 -0
- package/dist/components/admin-bar/icons/chevron-right.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/chevron-up.svelte +11 -0
- package/dist/components/admin-bar/icons/chevron-up.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/code.svelte +14 -0
- package/dist/components/admin-bar/icons/code.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/external-link.svelte +15 -0
- package/dist/components/admin-bar/icons/external-link.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/file.svelte +19 -0
- package/dist/components/admin-bar/icons/file.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/heading-2.svelte +16 -0
- package/dist/components/admin-bar/icons/heading-2.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/heading-3.svelte +17 -0
- package/dist/components/admin-bar/icons/heading-3.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/icon.svelte +41 -0
- package/dist/components/admin-bar/icons/icon.svelte.d.ts +21 -0
- package/dist/components/admin-bar/icons/images.svelte +16 -0
- package/dist/components/admin-bar/icons/images.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/italic.svelte +15 -0
- package/dist/components/admin-bar/icons/italic.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/link-2-off.svelte +16 -0
- package/dist/components/admin-bar/icons/link-2-off.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/link.svelte +14 -0
- package/dist/components/admin-bar/icons/link.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/list-ordered.svelte +18 -0
- package/dist/components/admin-bar/icons/list-ordered.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/list.svelte +18 -0
- package/dist/components/admin-bar/icons/list.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/loader-circle.svelte +11 -0
- package/dist/components/admin-bar/icons/loader-circle.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/minus.svelte +11 -0
- package/dist/components/admin-bar/icons/minus.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/quote.svelte +24 -0
- package/dist/components/admin-bar/icons/quote.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/search.svelte +14 -0
- package/dist/components/admin-bar/icons/search.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/trash-2.svelte +17 -0
- package/dist/components/admin-bar/icons/trash-2.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/triangle-alert.svelte +15 -0
- package/dist/components/admin-bar/icons/triangle-alert.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/types.d.ts +7 -0
- package/dist/components/admin-bar/icons/types.js +1 -0
- package/dist/components/admin-bar/icons/undo-2.svelte +14 -0
- package/dist/components/admin-bar/icons/undo-2.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/upload.svelte +15 -0
- package/dist/components/admin-bar/icons/upload.svelte.d.ts +3 -0
- package/dist/components/admin-bar/icons/x.svelte +14 -0
- package/dist/components/admin-bar/icons/x.svelte.d.ts +3 -0
- package/dist/components/admin-bar/keyboard-shortcuts-dialog.svelte +96 -0
- package/dist/components/admin-bar/keyboard-shortcuts-dialog.svelte.d.ts +7 -0
- package/dist/components/admin-bar/locales-panel.svelte +137 -0
- package/dist/components/admin-bar/locales-panel.svelte.d.ts +9 -0
- package/dist/components/admin-bar/media-panel.svelte +282 -0
- package/dist/components/admin-bar/media-panel.svelte.d.ts +7 -0
- package/dist/components/admin-bar/new-page-chooser-dialog.svelte +56 -0
- package/dist/components/admin-bar/new-page-chooser-dialog.svelte.d.ts +10 -0
- package/dist/components/admin-bar/new-page-dialog.svelte +126 -0
- package/dist/components/admin-bar/new-page-dialog.svelte.d.ts +14 -0
- package/dist/components/admin-bar/page-config.d.ts +61 -0
- package/dist/components/admin-bar/page-config.js +24 -0
- package/dist/components/admin-bar/pages-panel.svelte +639 -0
- package/dist/components/admin-bar/pages-panel.svelte.d.ts +13 -0
- package/dist/components/admin-bar/panel-footer.svelte +21 -0
- package/dist/components/admin-bar/panel-footer.svelte.d.ts +8 -0
- package/dist/components/admin-bar/panel-header.svelte +29 -0
- package/dist/components/admin-bar/panel-header.svelte.d.ts +10 -0
- package/dist/components/admin-bar/panel.svelte +41 -0
- package/dist/components/admin-bar/panel.svelte.d.ts +10 -0
- package/dist/components/admin-bar/publish-dialog.svelte +387 -0
- package/dist/components/admin-bar/publish-dialog.svelte.d.ts +16 -0
- package/dist/components/admin-bar/resolve-route.d.ts +20 -0
- package/dist/components/admin-bar/resolve-route.js +50 -0
- package/dist/components/admin-bar/seo-panel.svelte +387 -0
- package/dist/components/admin-bar/seo-panel.svelte.d.ts +7 -0
- package/dist/components/admin-bar/share-preview-link-dialog.svelte +97 -0
- package/dist/components/admin-bar/share-preview-link-dialog.svelte.d.ts +9 -0
- package/dist/components/admin-bar/site-settings-panel.svelte +225 -0
- package/dist/components/admin-bar/site-settings-panel.svelte.d.ts +7 -0
- package/dist/components/admin-bar/status-pill.svelte +49 -0
- package/dist/components/admin-bar/status-pill.svelte.d.ts +11 -0
- package/dist/components/admin-bar/theme.svelte.d.ts +16 -0
- package/dist/components/admin-bar/theme.svelte.js +39 -0
- package/dist/components/admin-bar/ui/badge/badge.svelte +57 -0
- package/dist/components/admin-bar/ui/badge/badge.svelte.d.ts +16 -0
- package/dist/components/admin-bar/ui/badge/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/badge/index.js +4 -0
- package/dist/components/admin-bar/ui/button/button.svelte +73 -0
- package/dist/components/admin-bar/ui/button/button.svelte.d.ts +16 -0
- package/dist/components/admin-bar/ui/button/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/button/index.js +4 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-content.svelte +7 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-content.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-trigger.svelte +7 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible-trigger.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible.svelte +7 -0
- package/dist/components/admin-bar/ui/collapsible/collapsible.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/collapsible/index.js +6 -0
- package/dist/components/admin-bar/ui/dialog/dialog-close.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog-close.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-content.svelte +46 -0
- package/dist/components/admin-bar/ui/dialog/dialog-content.svelte.d.ts +11 -0
- package/dist/components/admin-bar/ui/dialog/dialog-description.svelte +17 -0
- package/dist/components/admin-bar/ui/dialog/dialog-description.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-footer.svelte +23 -0
- package/dist/components/admin-bar/ui/dialog/dialog-footer.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/dialog/dialog-header.svelte +20 -0
- package/dist/components/admin-bar/ui/dialog/dialog-header.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/dialog/dialog-overlay.svelte +20 -0
- package/dist/components/admin-bar/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-portal.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog-portal.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/dialog/dialog-title.svelte +17 -0
- package/dist/components/admin-bar/ui/dialog/dialog-title.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog-trigger.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog-trigger.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/dialog/dialog.svelte +7 -0
- package/dist/components/admin-bar/ui/dialog/dialog.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/dialog/index.d.ts +11 -0
- package/dist/components/admin-bar/ui/dialog/index.js +13 -0
- package/dist/components/admin-bar/ui/input/index.d.ts +3 -0
- package/dist/components/admin-bar/ui/input/index.js +3 -0
- package/dist/components/admin-bar/ui/input/input.svelte +24 -0
- package/dist/components/admin-bar/ui/input/input.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/kbd/index.d.ts +4 -0
- package/dist/components/admin-bar/ui/kbd/index.js +6 -0
- package/dist/components/admin-bar/ui/kbd/kbd-group.svelte +20 -0
- package/dist/components/admin-bar/ui/kbd/kbd-group.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/kbd/kbd-shortcut.svelte +52 -0
- package/dist/components/admin-bar/ui/kbd/kbd-shortcut.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/kbd/kbd.svelte +27 -0
- package/dist/components/admin-bar/ui/kbd/kbd.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/label/index.d.ts +3 -0
- package/dist/components/admin-bar/ui/label/index.js +3 -0
- package/dist/components/admin-bar/ui/label/label.svelte +20 -0
- package/dist/components/admin-bar/ui/label/label.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/index.d.ts +18 -0
- package/dist/components/admin-bar/ui/menubar/index.js +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar-checkbox-item.svelte +46 -0
- package/dist/components/admin-bar/ui/menubar/menubar-checkbox-item.svelte.d.ts +10 -0
- package/dist/components/admin-bar/ui/menubar/menubar-content.svelte +28 -0
- package/dist/components/admin-bar/ui/menubar/menubar-content.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group-heading.svelte +25 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group-heading.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group.svelte +12 -0
- package/dist/components/admin-bar/ui/menubar/menubar-group.svelte.d.ts +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-item.svelte +27 -0
- package/dist/components/admin-bar/ui/menubar/menubar-item.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-label.svelte +25 -0
- package/dist/components/admin-bar/ui/menubar/menubar-label.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-menu.svelte +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-menu.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/menubar/menubar-portal.svelte +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-portal.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-group.svelte +11 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-group.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-item.svelte +37 -0
- package/dist/components/admin-bar/ui/menubar/menubar-radio-item.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-separator.svelte +17 -0
- package/dist/components/admin-bar/ui/menubar/menubar-separator.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-shortcut.svelte +23 -0
- package/dist/components/admin-bar/ui/menubar/menubar-shortcut.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-content.svelte +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-content.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-trigger.svelte +29 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub-trigger.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub.svelte +7 -0
- package/dist/components/admin-bar/ui/menubar/menubar-sub.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar-trigger.svelte +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar-trigger.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/menubar/menubar.svelte +20 -0
- package/dist/components/admin-bar/ui/menubar/menubar.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/select/index.d.ts +12 -0
- package/dist/components/admin-bar/ui/select/index.js +14 -0
- package/dist/components/admin-bar/ui/select/select-content.svelte +45 -0
- package/dist/components/admin-bar/ui/select/select-content.svelte.d.ts +11 -0
- package/dist/components/admin-bar/ui/select/select-group-heading.svelte +21 -0
- package/dist/components/admin-bar/ui/select/select-group-heading.svelte.d.ts +10 -0
- package/dist/components/admin-bar/ui/select/select-group.svelte +17 -0
- package/dist/components/admin-bar/ui/select/select-group.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/select/select-item.svelte +40 -0
- package/dist/components/admin-bar/ui/select/select-item.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/select/select-label.svelte +20 -0
- package/dist/components/admin-bar/ui/select/select-label.svelte.d.ts +6 -0
- package/dist/components/admin-bar/ui/select/select-portal.svelte +7 -0
- package/dist/components/admin-bar/ui/select/select-portal.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/select/select-scroll-down-button.svelte +23 -0
- package/dist/components/admin-bar/ui/select/select-scroll-down-button.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/select/select-scroll-up-button.svelte +23 -0
- package/dist/components/admin-bar/ui/select/select-scroll-up-button.svelte.d.ts +5 -0
- package/dist/components/admin-bar/ui/select/select-separator.svelte +21 -0
- package/dist/components/admin-bar/ui/select/select-separator.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/select/select-trigger.svelte +31 -0
- package/dist/components/admin-bar/ui/select/select-trigger.svelte.d.ts +8 -0
- package/dist/components/admin-bar/ui/select/select.svelte +11 -0
- package/dist/components/admin-bar/ui/select/select.svelte.d.ts +3 -0
- package/dist/components/admin-bar/ui/separator/index.d.ts +2 -0
- package/dist/components/admin-bar/ui/separator/index.js +4 -0
- package/dist/components/admin-bar/ui/separator/separator.svelte +21 -0
- package/dist/components/admin-bar/ui/separator/separator.svelte.d.ts +4 -0
- package/dist/components/admin-bar/ui/textarea/index.d.ts +3 -0
- package/dist/components/admin-bar/ui/textarea/index.js +3 -0
- package/dist/components/admin-bar/ui/textarea/textarea.svelte +21 -0
- package/dist/components/admin-bar/ui/textarea/textarea.svelte.d.ts +5 -0
- package/dist/components/admin-bar/user-avatar.svelte +29 -0
- package/dist/components/admin-bar/user-avatar.svelte.d.ts +7 -0
- package/dist/components/admin-bar/utils.d.ts +10 -0
- package/dist/components/admin-bar/utils.js +46 -0
- package/dist/components/admin-bar/variants.d.ts +20 -0
- package/dist/components/admin-bar/variants.js +14 -0
- package/dist/components/cms/cms-boolean.svelte +102 -0
- package/dist/components/cms/cms-boolean.svelte.d.ts +10 -0
- package/dist/components/cms/cms-date-time-editable.svelte +66 -0
- package/dist/components/cms/cms-date-time-editable.svelte.d.ts +11 -0
- package/dist/components/cms/cms-date-time.svelte +67 -0
- package/dist/components/cms/cms-date-time.svelte.d.ts +19 -0
- package/dist/components/cms/cms-entries.svelte +24 -0
- package/dist/components/cms/cms-entries.svelte.d.ts +31 -0
- package/dist/components/cms/cms-image-editable.svelte +439 -0
- package/dist/components/cms/cms-image-editable.svelte.d.ts +11 -0
- package/dist/components/cms/cms-image.svelte +78 -0
- package/dist/components/cms/cms-image.svelte.d.ts +18 -0
- package/dist/components/cms/cms-link-editable.svelte +429 -0
- package/dist/components/cms/cms-link-editable.svelte.d.ts +13 -0
- package/dist/components/cms/cms-link.svelte +92 -0
- package/dist/components/cms/cms-link.svelte.d.ts +25 -0
- package/dist/components/cms/cms-markdown-editable.svelte +74 -0
- package/dist/components/cms/cms-markdown-editable.svelte.d.ts +9 -0
- package/dist/components/cms/cms-markdown.svelte +56 -0
- package/dist/components/cms/cms-markdown.svelte.d.ts +10 -0
- package/dist/components/cms/cms-media-picker.svelte +150 -0
- package/dist/components/cms/cms-media-picker.svelte.d.ts +8 -0
- package/dist/components/cms/cms-number-editable.svelte +77 -0
- package/dist/components/cms/cms-number-editable.svelte.d.ts +13 -0
- package/dist/components/cms/cms-number.svelte +63 -0
- package/dist/components/cms/cms-number.svelte.d.ts +16 -0
- package/dist/components/cms/cms-repeater-editable.svelte +137 -0
- package/dist/components/cms/cms-repeater-editable.svelte.d.ts +31 -0
- package/dist/components/cms/cms-repeater.svelte +55 -0
- package/dist/components/cms/cms-repeater.svelte.d.ts +30 -0
- package/dist/components/cms/cms-rich-text-editable.svelte +101 -0
- package/dist/components/cms/cms-rich-text-editable.svelte.d.ts +9 -0
- package/dist/components/cms/cms-rich-text-toolbar.svelte +246 -0
- package/dist/components/cms/cms-rich-text-toolbar.svelte.d.ts +9 -0
- package/dist/components/cms/cms-rich-text.svelte +74 -0
- package/dist/components/cms/cms-rich-text.svelte.d.ts +10 -0
- package/dist/components/cms/cms-store.svelte.d.ts +294 -0
- package/dist/components/cms/cms-store.svelte.js +625 -0
- package/dist/components/cms/cms-text.svelte +131 -0
- package/dist/components/cms/cms-text.svelte.d.ts +11 -0
- package/dist/components/cms/index.d.ts +13 -0
- package/dist/components/cms/index.js +11 -0
- package/dist/components/cms/install-scope.svelte.d.ts +7 -0
- package/dist/components/cms/install-scope.svelte.js +33 -0
- package/dist/components/cms/locale-merge.d.ts +41 -0
- package/dist/components/cms/locale-merge.js +77 -0
- package/dist/components/cms/overlay-sync.d.ts +82 -0
- package/dist/components/cms/overlay-sync.js +76 -0
- package/dist/components/cms/path.d.ts +30 -0
- package/dist/components/cms/path.js +156 -0
- package/dist/components/cms/scope.d.ts +120 -0
- package/dist/components/cms/scope.js +23 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +28 -0
- package/dist/srv/README.md +341 -0
- package/dist/srv/api-adapter.d.ts +20 -0
- package/dist/srv/api-adapter.js +178 -0
- package/dist/srv/cms.d.ts +62 -0
- package/dist/srv/cms.js +35 -0
- package/dist/srv/index.d.ts +5 -0
- package/dist/srv/index.js +4 -0
- package/dist/srv/load-cms.d.ts +105 -0
- package/dist/srv/load-cms.js +227 -0
- package/dist/srv/mock-adapter.d.ts +96 -0
- package/dist/srv/mock-adapter.js +171 -0
- package/dist/srv/types.d.ts +114 -0
- package/dist/srv/types.js +1 -0
- package/package.json +116 -0
- package/plugin/README.md +137 -0
- package/plugin/dist/adapter.d.ts +35 -0
- package/plugin/dist/adapter.js +346 -0
- package/plugin/dist/adapter.js.map +1 -0
- package/plugin/dist/build-state.d.ts +10 -0
- package/plugin/dist/build-state.js +26 -0
- package/plugin/dist/build-state.js.map +1 -0
- package/plugin/dist/fallback-shim.js +194 -0
- package/plugin/dist/index.d.ts +56 -0
- package/plugin/dist/index.js +396 -0
- package/plugin/dist/index.js.map +1 -0
- package/plugin/dist/manifest.d.ts +76 -0
- package/plugin/dist/manifest.js +367 -0
- package/plugin/dist/manifest.js.map +1 -0
- package/plugin/dist/media.d.ts +36 -0
- package/plugin/dist/media.js +153 -0
- package/plugin/dist/media.js.map +1 -0
- package/plugin/dist/parse-svelte.d.ts +35 -0
- package/plugin/dist/parse-svelte.js +120 -0
- package/plugin/dist/parse-svelte.js.map +1 -0
- package/plugin/dist/route-tree.d.ts +27 -0
- package/plugin/dist/route-tree.js +69 -0
- package/plugin/dist/route-tree.js.map +1 -0
- package/plugin/dist/transforms.d.ts +42 -0
- package/plugin/dist/transforms.js +95 -0
- package/plugin/dist/transforms.js.map +1 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import staticAdapter from '@sveltejs/adapter-static';
|
|
2
|
+
import * as devalue from 'devalue';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { minifySync } from 'vite';
|
|
7
|
+
import { getPageCmsModules } from './build-state.js';
|
|
8
|
+
const ROUTE_GROUP_RE = /^\([^)]+\)$/;
|
|
9
|
+
const SHIM_PATH = fileURLToPath(new URL('./fallback-shim.js', import.meta.url));
|
|
10
|
+
/**
|
|
11
|
+
* Read `fallback-shim.js` from disk and minify it via oxc (vite's bundled
|
|
12
|
+
* minifier). Cached for the lifetime of the process — the shim source is
|
|
13
|
+
* static, and the adapter may be invoked more than once during
|
|
14
|
+
* tooling-driven workflows.
|
|
15
|
+
*
|
|
16
|
+
* @returns {string}
|
|
17
|
+
*/
|
|
18
|
+
let __cachedShim = /** @type {string | null} */ (null);
|
|
19
|
+
const loadMinifiedShim = () => {
|
|
20
|
+
if (__cachedShim !== null)
|
|
21
|
+
return __cachedShim;
|
|
22
|
+
const source = fs.readFileSync(SHIM_PATH, 'utf-8');
|
|
23
|
+
const result = minifySync(SHIM_PATH, source);
|
|
24
|
+
if (result.errors && result.errors.length > 0) {
|
|
25
|
+
// Surface oxc parse errors loudly — silent fallback to raw source
|
|
26
|
+
// would ship unminified bytes on every page.
|
|
27
|
+
throw new Error(`@velastack/cms-static: failed to minify fallback-shim.js: ${result.errors
|
|
28
|
+
.map((/** @type {any} */ e) => e.message ?? String(e))
|
|
29
|
+
.join('; ')}`);
|
|
30
|
+
}
|
|
31
|
+
__cachedShim = result.code.trim();
|
|
32
|
+
return __cachedShim;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {Parameters<typeof staticAdapter>[0]} StaticAdapterOptions
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Strip SvelteKit route groups (e.g. `(marketing)`) from a route id and return
|
|
39
|
+
* the remaining segments.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} routeId
|
|
42
|
+
* @returns {string[]}
|
|
43
|
+
*/
|
|
44
|
+
const stripRouteGroups = (routeId) => routeId.split('/').filter((s) => s !== '' && !ROUTE_GROUP_RE.test(s));
|
|
45
|
+
/**
|
|
46
|
+
* Decide where a `__fallback.json` should be emitted for `routeId`. Returns
|
|
47
|
+
* the URL directory (e.g. `/rooms` for `/(marketing)/rooms/[slug]`), or `null`
|
|
48
|
+
* if this route doesn't get a fallback.
|
|
49
|
+
*
|
|
50
|
+
* Only routes whose trailing segment is parameterized AND whose earlier
|
|
51
|
+
* segments are all static get a fallback — otherwise the parent directory
|
|
52
|
+
* doesn't exist as a real path in the build output.
|
|
53
|
+
*
|
|
54
|
+
* @param {string} routeId
|
|
55
|
+
* @returns {string | null}
|
|
56
|
+
*/
|
|
57
|
+
const fallbackUrlDirFor = (routeId) => {
|
|
58
|
+
const segments = stripRouteGroups(routeId);
|
|
59
|
+
if (segments.length === 0)
|
|
60
|
+
return null;
|
|
61
|
+
const last = segments[segments.length - 1];
|
|
62
|
+
if (!last.includes('['))
|
|
63
|
+
return null;
|
|
64
|
+
const earlier = segments.slice(0, -1);
|
|
65
|
+
if (earlier.some((s) => s.includes('[')))
|
|
66
|
+
return null;
|
|
67
|
+
return earlier.length === 0 ? '/' : '/' + earlier.join('/');
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* @param {string[]} paths
|
|
71
|
+
* @param {RegExp} pattern
|
|
72
|
+
*/
|
|
73
|
+
const findSamplePath = (paths, pattern) => {
|
|
74
|
+
for (const p of paths)
|
|
75
|
+
if (pattern.test(p))
|
|
76
|
+
return p;
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Replace concrete params/docs/metadata in the deserialized payload with
|
|
81
|
+
* fallback placeholders, in place. References inside the data graph (e.g.
|
|
82
|
+
* `cms.page.params` and `cms.scopes['page:...'].params` pointing at the same
|
|
83
|
+
* object) are preserved by `devalue.unflatten`, so a single mutation updates
|
|
84
|
+
* every alias.
|
|
85
|
+
*
|
|
86
|
+
* @param {any} obj
|
|
87
|
+
*/
|
|
88
|
+
const transformPayload = (obj) => {
|
|
89
|
+
if (!obj || typeof obj !== 'object')
|
|
90
|
+
return;
|
|
91
|
+
const cms = obj.cms;
|
|
92
|
+
if (!cms || typeof cms !== 'object')
|
|
93
|
+
return;
|
|
94
|
+
const pageScopeId = cms.page && cms.page.scopeId;
|
|
95
|
+
if (pageScopeId && cms.docs && Object.prototype.hasOwnProperty.call(cms.docs, pageScopeId)) {
|
|
96
|
+
cms.docs[pageScopeId] = {};
|
|
97
|
+
}
|
|
98
|
+
cms.metadata = {};
|
|
99
|
+
if (cms.scopes && typeof cms.scopes === 'object') {
|
|
100
|
+
for (const scopeId of Object.keys(cms.scopes)) {
|
|
101
|
+
const scope = cms.scopes[scopeId];
|
|
102
|
+
if (scope && scope.params && typeof scope.params === 'object') {
|
|
103
|
+
for (const name of Object.keys(scope.params)) {
|
|
104
|
+
scope.params[name] = `%${name}%`;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (cms.page && cms.page.params && typeof cms.page.params === 'object') {
|
|
110
|
+
for (const name of Object.keys(cms.page.params)) {
|
|
111
|
+
cms.page.params[name] = `%${name}%`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* @typedef {{ kind: 'static'; value: string }
|
|
117
|
+
* | { kind: 'dynamic'; name: string }
|
|
118
|
+
* | { kind: 'rest'; name: string }
|
|
119
|
+
* | { kind: 'optional'; name: string }
|
|
120
|
+
* | { kind: 'unsupported' }} ParsedSegment
|
|
121
|
+
*/
|
|
122
|
+
/**
|
|
123
|
+
* Parse a SvelteKit route id into typed segments. Route groups
|
|
124
|
+
* (`(marketing)`) are stripped — they don't appear in URLs. Matchers
|
|
125
|
+
* (`[slug=type]`) and mixed brackets (`prefix-[id]`) are flagged as
|
|
126
|
+
* `unsupported`; the caller skips routes containing them.
|
|
127
|
+
*
|
|
128
|
+
* Exported for unit testing; not part of the package's public API.
|
|
129
|
+
*
|
|
130
|
+
* @param {string} routeId
|
|
131
|
+
* @returns {ParsedSegment[]}
|
|
132
|
+
*/
|
|
133
|
+
export const parseRouteSegments = (routeId) => {
|
|
134
|
+
const parts = routeId.split('/').filter((p) => p !== '' && !ROUTE_GROUP_RE.test(p));
|
|
135
|
+
/** @type {ParsedSegment[]} */
|
|
136
|
+
const out = [];
|
|
137
|
+
for (const p of parts) {
|
|
138
|
+
const opt = /^\[\[(\w+)\]\]$/.exec(p);
|
|
139
|
+
if (opt) {
|
|
140
|
+
out.push({ kind: 'optional', name: opt[1] });
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const rest = /^\[\.\.\.(\w+)\]$/.exec(p);
|
|
144
|
+
if (rest) {
|
|
145
|
+
out.push({ kind: 'rest', name: rest[1] });
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const dyn = /^\[(\w+)\]$/.exec(p);
|
|
149
|
+
if (dyn) {
|
|
150
|
+
out.push({ kind: 'dynamic', name: dyn[1] });
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (p.includes('[')) {
|
|
154
|
+
out.push({ kind: 'unsupported' });
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
out.push({ kind: 'static', value: p });
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Build a URL → params extractor for a given parsed-segment list. Mirrors
|
|
163
|
+
* SvelteKit's own routing semantics: static segments must match, dynamic
|
|
164
|
+
* segments bind one URL part, `[[opt]]` may consume zero or one part,
|
|
165
|
+
* `[...rest]` consumes the remaining parts as a `/`-joined string.
|
|
166
|
+
*
|
|
167
|
+
* Returns `null` if the segments include any `unsupported` marker — the
|
|
168
|
+
* caller should skip those routes (and emit a build-log warning).
|
|
169
|
+
*
|
|
170
|
+
* Exported for unit testing; not part of the package's public API.
|
|
171
|
+
*
|
|
172
|
+
* @param {ParsedSegment[]} segments
|
|
173
|
+
* @returns {((url: string) => Record<string, string> | null) | null}
|
|
174
|
+
*/
|
|
175
|
+
export const buildParamExtractor = (segments) => {
|
|
176
|
+
if (segments.some((s) => s.kind === 'unsupported'))
|
|
177
|
+
return null;
|
|
178
|
+
return (url) => {
|
|
179
|
+
const parts = url.split('/').filter((p) => p !== '');
|
|
180
|
+
/** @type {Record<string, string>} */
|
|
181
|
+
const params = {};
|
|
182
|
+
let pi = 0;
|
|
183
|
+
for (const seg of segments) {
|
|
184
|
+
if (seg.kind === 'static') {
|
|
185
|
+
if (parts[pi] !== seg.value)
|
|
186
|
+
return null;
|
|
187
|
+
pi++;
|
|
188
|
+
}
|
|
189
|
+
else if (seg.kind === 'rest') {
|
|
190
|
+
params[seg.name] = parts.slice(pi).join('/');
|
|
191
|
+
pi = parts.length;
|
|
192
|
+
}
|
|
193
|
+
else if (seg.kind === 'optional') {
|
|
194
|
+
if (pi < parts.length) {
|
|
195
|
+
params[seg.name] = parts[pi];
|
|
196
|
+
pi++;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
params[seg.name] = '';
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
if (pi >= parts.length)
|
|
204
|
+
return null;
|
|
205
|
+
params[seg.name] = parts[pi];
|
|
206
|
+
pi++;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (pi !== parts.length)
|
|
210
|
+
return null;
|
|
211
|
+
return params;
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Read a SvelteKit `__data.json`, transform each `data` node via
|
|
216
|
+
* `devalue.unflatten` → mutate → `devalue.stringify`, and re-emit the wrapping
|
|
217
|
+
* `{type, nodes}` envelope.
|
|
218
|
+
*
|
|
219
|
+
* @param {string} jsonText
|
|
220
|
+
* @returns {string}
|
|
221
|
+
*/
|
|
222
|
+
const transformDataJson = (jsonText) => {
|
|
223
|
+
/** @type {{ type: string; nodes: Array<null | { type: string; data: any[]; uses?: any; slash?: any }> }} */
|
|
224
|
+
const parsed = JSON.parse(jsonText);
|
|
225
|
+
const nodes = parsed.nodes.map((node) => {
|
|
226
|
+
if (!node || node.type !== 'data' || !Array.isArray(node.data))
|
|
227
|
+
return node;
|
|
228
|
+
const obj = devalue.unflatten(node.data);
|
|
229
|
+
transformPayload(obj);
|
|
230
|
+
const newData = JSON.parse(devalue.stringify(obj));
|
|
231
|
+
return { ...node, data: newData };
|
|
232
|
+
});
|
|
233
|
+
return JSON.stringify({ ...parsed, nodes }) + '\n';
|
|
234
|
+
};
|
|
235
|
+
/**
|
|
236
|
+
* Wraps `@sveltejs/adapter-static`. After the inner adapter writes prerendered
|
|
237
|
+
* pages, scans `builder.routes` for parameterized routes and emits a
|
|
238
|
+
* `__fallback.json` next to each parent URL directory. The fallback is built
|
|
239
|
+
* from a real prerendered `__data.json` for that route, with `cms.metadata`
|
|
240
|
+
* and `cms.docs[pageScope]` cleared and every `params[name]` replaced by
|
|
241
|
+
* `%name%`. The runtime can fetch the fallback when navigating to a CMS page
|
|
242
|
+
* that wasn't prerendered, then substitute the actual params client-side.
|
|
243
|
+
*
|
|
244
|
+
* @param {StaticAdapterOptions} [options]
|
|
245
|
+
*/
|
|
246
|
+
export default function adapter(options) {
|
|
247
|
+
const inner = staticAdapter(options);
|
|
248
|
+
return {
|
|
249
|
+
name: '@velastack/cms-static',
|
|
250
|
+
/** @param {import('@sveltejs/kit').Builder} builder */
|
|
251
|
+
async adapt(builder) {
|
|
252
|
+
await inner.adapt(builder);
|
|
253
|
+
const pages = (options && /** @type {any} */ (options).pages) || 'build';
|
|
254
|
+
const buildDir = path.resolve(pages);
|
|
255
|
+
// `prerendered.paths` mixes html and data entries, so use the
|
|
256
|
+
// `pages` map (html only) for sampling.
|
|
257
|
+
const htmlPaths = [...builder.prerendered.pages.keys()];
|
|
258
|
+
let written = 0;
|
|
259
|
+
for (const route of builder.routes) {
|
|
260
|
+
const fallbackDir = fallbackUrlDirFor(route.id);
|
|
261
|
+
if (fallbackDir === null)
|
|
262
|
+
continue;
|
|
263
|
+
const sample = findSamplePath(htmlPaths, route.pattern);
|
|
264
|
+
if (!sample)
|
|
265
|
+
continue;
|
|
266
|
+
const sampleDataFile = path.join(buildDir, sample, '__data.json');
|
|
267
|
+
if (!fs.existsSync(sampleDataFile))
|
|
268
|
+
continue;
|
|
269
|
+
const target = path.join(buildDir, fallbackDir, '__fallback.json');
|
|
270
|
+
const json = transformDataJson(fs.readFileSync(sampleDataFile, 'utf-8'));
|
|
271
|
+
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
272
|
+
fs.writeFileSync(target, json);
|
|
273
|
+
written++;
|
|
274
|
+
builder.log.minor(`@velastack/cms-static: wrote ${path.relative(buildDir, target)} (from ${sample})`);
|
|
275
|
+
}
|
|
276
|
+
if (written > 0) {
|
|
277
|
+
builder.log.minor(`@velastack/cms-static: wrote ${written} fallback file(s)`);
|
|
278
|
+
}
|
|
279
|
+
// Step 2: write `__velastack_manifest` into the SPA fallback. The
|
|
280
|
+
// admin bar uses this global to enumerate creatable-route entries
|
|
281
|
+
// when the page it lands on wasn't prerendered (newly created
|
|
282
|
+
// pages, navigation to routes that didn't exist at build time).
|
|
283
|
+
// Prerendered pages embed their own data via `__data.json`, so
|
|
284
|
+
// they don't need the global.
|
|
285
|
+
const fallbackName = options && /** @type {any} */ (options).fallback;
|
|
286
|
+
if (!fallbackName)
|
|
287
|
+
return;
|
|
288
|
+
const fallbackPath = path.join(buildDir, fallbackName);
|
|
289
|
+
if (!fs.existsSync(fallbackPath)) {
|
|
290
|
+
builder.log.warn(`@velastack/cms-static: configured fallback "${fallbackName}" not found at ${fallbackPath}; skipping manifest injection`);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const creatableRouteIds = new Set(getPageCmsModules()
|
|
294
|
+
.filter((m) => m.creatable)
|
|
295
|
+
.map((m) => m.routeId));
|
|
296
|
+
if (creatableRouteIds.size === 0)
|
|
297
|
+
return;
|
|
298
|
+
/** @type {{ creatable: Record<string, { entries: Record<string, string>[] }> }} */
|
|
299
|
+
const manifest = { creatable: {} };
|
|
300
|
+
for (const route of builder.routes) {
|
|
301
|
+
if (!creatableRouteIds.has(route.id))
|
|
302
|
+
continue;
|
|
303
|
+
const segments = parseRouteSegments(route.id);
|
|
304
|
+
const extract = buildParamExtractor(segments);
|
|
305
|
+
if (!extract) {
|
|
306
|
+
builder.log.warn(`@velastack/cms-static: route ${route.id} uses an unsupported segment shape (matchers or mixed brackets); skipping in manifest`);
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
/** @type {Record<string, string>[]} */
|
|
310
|
+
const entries = [];
|
|
311
|
+
for (const urlPath of htmlPaths) {
|
|
312
|
+
const params = extract(urlPath);
|
|
313
|
+
if (params)
|
|
314
|
+
entries.push(params);
|
|
315
|
+
}
|
|
316
|
+
if (entries.length === 0)
|
|
317
|
+
continue;
|
|
318
|
+
entries.sort((a, b) => {
|
|
319
|
+
const sa = JSON.stringify(a);
|
|
320
|
+
const sb = JSON.stringify(b);
|
|
321
|
+
return sa < sb ? -1 : sa > sb ? 1 : 0;
|
|
322
|
+
});
|
|
323
|
+
manifest.creatable[route.id] = { entries };
|
|
324
|
+
}
|
|
325
|
+
if (Object.keys(manifest.creatable).length === 0)
|
|
326
|
+
return;
|
|
327
|
+
const fallbackHtml = fs.readFileSync(fallbackPath, 'utf-8');
|
|
328
|
+
if (fallbackHtml.includes('__velastack_manifest'))
|
|
329
|
+
return;
|
|
330
|
+
const headIdx = fallbackHtml.indexOf('</head>');
|
|
331
|
+
if (headIdx === -1) {
|
|
332
|
+
builder.log.warn(`@velastack/cms-static: fallback "${fallbackName}" has no </head>; skipping manifest injection`);
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const json = JSON.stringify(manifest).replace(/</g, '\\u003c');
|
|
336
|
+
const shim = loadMinifiedShim();
|
|
337
|
+
const tag = `<script>var __velastack_manifest = ${json};${shim}</script>`;
|
|
338
|
+
const next = fallbackHtml.slice(0, headIdx) + tag + fallbackHtml.slice(headIdx);
|
|
339
|
+
fs.writeFileSync(fallbackPath, next);
|
|
340
|
+
const routeCount = Object.keys(manifest.creatable).length;
|
|
341
|
+
const entryCount = Object.values(manifest.creatable).reduce((n, v) => n + v.entries.length, 0);
|
|
342
|
+
builder.log.minor(`@velastack/cms-static: injected __velastack_manifest into ${fallbackName} (${routeCount} route(s), ${entryCount} entry(ies))`);
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function setPageCmsModules(modules: PageCmsModule[]): void;
|
|
2
|
+
export function getPageCmsModules(): PageCmsModule[];
|
|
3
|
+
/**
|
|
4
|
+
* Module-level singleton bridging the
|
|
5
|
+
*/
|
|
6
|
+
export type PageCmsModule = {
|
|
7
|
+
routeId: string;
|
|
8
|
+
path: string;
|
|
9
|
+
creatable: boolean;
|
|
10
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module-level singleton bridging the @velastack/cms Vite plugin and the
|
|
3
|
+
* @velastack/cms-static adapter. The plugin populates this during its build
|
|
4
|
+
* (`load` of `virtual:vela-cms/pages` ⇒ `setPageCmsModules`); the adapter
|
|
5
|
+
* reads it from `adapt()` to know which routes are creatable without
|
|
6
|
+
* re-walking `src/routes/` itself.
|
|
7
|
+
*
|
|
8
|
+
* Backed by `globalThis` because Vite's plugin context and SvelteKit's
|
|
9
|
+
* adapter context resolve `./build-state.js` through separate module
|
|
10
|
+
* caches in the same Node process — ESM-style module-scoped `let` would
|
|
11
|
+
* leave the adapter looking at a fresh, empty instance. `globalThis` is
|
|
12
|
+
* the one shared place both sides agree on.
|
|
13
|
+
*
|
|
14
|
+
* @typedef {{ routeId: string; path: string; creatable: boolean }} PageCmsModule
|
|
15
|
+
*/
|
|
16
|
+
const KEY = Symbol.for('@velastack/cms.buildState');
|
|
17
|
+
/** @type {{ pageCmsModules: PageCmsModule[] }} */
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
const store = /** @type {any} */ (globalThis[KEY] ??= { pageCmsModules: [] });
|
|
20
|
+
/** @param {PageCmsModule[]} modules */
|
|
21
|
+
export const setPageCmsModules = (modules) => {
|
|
22
|
+
store.pageCmsModules = modules;
|
|
23
|
+
};
|
|
24
|
+
/** @returns {PageCmsModule[]} */
|
|
25
|
+
export const getPageCmsModules = () => store.pageCmsModules;
|
|
26
|
+
//# sourceMappingURL=build-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-state.js","sourceRoot":"","sources":["../src/build-state.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAEpD,kDAAkD;AAClD,aAAa;AACb,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;AAE9E,uCAAuC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,EAAE;IAC5C,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;AAChC,CAAC,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPA fallback fetch shim. Inlined into the static adapter's fallback HTML
|
|
3
|
+
* (e.g. `200.html`) alongside `__velastack_manifest`. Loaded on every page
|
|
4
|
+
* served by the fallback — keep this minimal.
|
|
5
|
+
*
|
|
6
|
+
* Intercepts `*.__data.json` fetches that target a creatable route which
|
|
7
|
+
* isn't yet prerendered. When the URL also carries a `?preview=...` key,
|
|
8
|
+
* the shim fetches the matching draft from the CMS endpoint and splices
|
|
9
|
+
* the doc's tree (including its `metadata` branch) into the route's
|
|
10
|
+
* `__fallback.json`, returning the merged envelope as the response. All
|
|
11
|
+
* other fetches —
|
|
12
|
+
* including non-`__data.json` requests, prerendered entries, and any
|
|
13
|
+
* navigation without a preview key — fall through to the native fetch.
|
|
14
|
+
*
|
|
15
|
+
* IIFE'd, no globals leaked. References `window.__velastack_manifest`,
|
|
16
|
+
* which the adapter declares earlier in the same `<script>` tag.
|
|
17
|
+
*/
|
|
18
|
+
(function () {
|
|
19
|
+
var nativeFetch = window.fetch.bind(window);
|
|
20
|
+
var GROUP_RE = /^\([^)]+\)$/;
|
|
21
|
+
|
|
22
|
+
var stripGroups = function (rid) {
|
|
23
|
+
return rid.split('/').filter(function (x) {
|
|
24
|
+
return x && !GROUP_RE.test(x);
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var matchRoute = function (rid, parts) {
|
|
29
|
+
var segs = stripGroups(rid);
|
|
30
|
+
var params = {};
|
|
31
|
+
var pi = 0;
|
|
32
|
+
for (var i = 0; i < segs.length; i++) {
|
|
33
|
+
var s = segs[i];
|
|
34
|
+
var m;
|
|
35
|
+
if ((m = /^\[\[(\w+)\]\]$/.exec(s))) {
|
|
36
|
+
params[m[1]] = pi < parts.length ? parts[pi++] : '';
|
|
37
|
+
} else if ((m = /^\[\.\.\.(\w+)\]$/.exec(s))) {
|
|
38
|
+
params[m[1]] = parts.slice(pi).join('/');
|
|
39
|
+
pi = parts.length;
|
|
40
|
+
} else if ((m = /^\[(\w+)\]$/.exec(s))) {
|
|
41
|
+
if (pi >= parts.length) return null;
|
|
42
|
+
params[m[1]] = parts[pi++];
|
|
43
|
+
} else if (s.indexOf('[') >= 0) {
|
|
44
|
+
return null;
|
|
45
|
+
} else {
|
|
46
|
+
if (parts[pi] !== s) return null;
|
|
47
|
+
pi++;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return pi === parts.length ? params : null;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// Append `value` (and recursively its children) to a devalue-flattened
|
|
54
|
+
// array `arr`, returning the index where the root of `value` was placed.
|
|
55
|
+
// Handles JSON primitives, plain objects, and arrays — which is the full
|
|
56
|
+
// shape of CMS docs returned from the `/docs` endpoint. No dedup.
|
|
57
|
+
var flatten = function (arr, value) {
|
|
58
|
+
if (value === null || typeof value !== 'object') {
|
|
59
|
+
return arr.push(value) - 1;
|
|
60
|
+
}
|
|
61
|
+
var idx = arr.push(null) - 1;
|
|
62
|
+
var encoded;
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
encoded = [];
|
|
65
|
+
for (var i = 0; i < value.length; i++) encoded.push(flatten(arr, value[i]));
|
|
66
|
+
} else {
|
|
67
|
+
encoded = {};
|
|
68
|
+
for (var k in value) encoded[k] = flatten(arr, value[k]);
|
|
69
|
+
}
|
|
70
|
+
arr[idx] = encoded;
|
|
71
|
+
return idx;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
window.fetch = async function (input, init) {
|
|
75
|
+
var url = typeof input === 'string' ? input : input && input.url;
|
|
76
|
+
var manifest = window.__velastack_manifest;
|
|
77
|
+
if (!manifest || !url || url.indexOf('__data.json') < 0) {
|
|
78
|
+
return nativeFetch(input, init);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var parsedUrl;
|
|
82
|
+
try {
|
|
83
|
+
parsedUrl = new URL(url, location.origin);
|
|
84
|
+
} catch (e) {
|
|
85
|
+
return nativeFetch(input, init);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var routePath = parsedUrl.pathname.replace(/\/__data\.json$/, '') || '/';
|
|
89
|
+
var parts = routePath.split('/').filter(Boolean);
|
|
90
|
+
|
|
91
|
+
var matchedId = null;
|
|
92
|
+
var matchedParams = null;
|
|
93
|
+
for (var rid in manifest.creatable) {
|
|
94
|
+
var got = matchRoute(rid, parts);
|
|
95
|
+
if (got) {
|
|
96
|
+
matchedId = rid;
|
|
97
|
+
matchedParams = got;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (!matchedId) return nativeFetch(input, init);
|
|
102
|
+
|
|
103
|
+
var entriesKey = JSON.stringify(matchedParams);
|
|
104
|
+
var entries = manifest.creatable[matchedId].entries;
|
|
105
|
+
for (var i = 0; i < entries.length; i++) {
|
|
106
|
+
if (JSON.stringify(entries[i]) === entriesKey) return nativeFetch(input, init);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Edit-mode gate: only intervene when the user is in a release
|
|
110
|
+
// preview. Without the preview key we can't authenticate against
|
|
111
|
+
// the CMS endpoint, so a 404 from the static server is the right
|
|
112
|
+
// outcome.
|
|
113
|
+
var previewKey = new URLSearchParams(location.search).get('preview');
|
|
114
|
+
if (!previewKey) return nativeFetch(input, init);
|
|
115
|
+
|
|
116
|
+
var earlier = stripGroups(matchedId).slice(0, -1);
|
|
117
|
+
var fallbackUrl = (earlier.length ? '/' + earlier.join('/') : '') + '/__fallback.json';
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
var fallbackRes = await nativeFetch(fallbackUrl);
|
|
121
|
+
if (!fallbackRes.ok) return nativeFetch(input, init);
|
|
122
|
+
var envelope = await fallbackRes.json();
|
|
123
|
+
var data = envelope && envelope.nodes && envelope.nodes[0] && envelope.nodes[0].data;
|
|
124
|
+
if (!Array.isArray(data)) return nativeFetch(input, init);
|
|
125
|
+
|
|
126
|
+
var rootObj = data[0];
|
|
127
|
+
if (!rootObj || typeof rootObj !== 'object') return nativeFetch(input, init);
|
|
128
|
+
var cmsObj = data[rootObj.cms];
|
|
129
|
+
if (!cmsObj || typeof cmsObj !== 'object') return nativeFetch(input, init);
|
|
130
|
+
var endpoint = data[cmsObj.endpoint];
|
|
131
|
+
if (typeof endpoint !== 'string') return nativeFetch(input, init);
|
|
132
|
+
|
|
133
|
+
var qs = new URLSearchParams();
|
|
134
|
+
qs.set('kind', 'page');
|
|
135
|
+
qs.set('routeId', matchedId);
|
|
136
|
+
qs.set('params', JSON.stringify(matchedParams));
|
|
137
|
+
qs.set('preview', previewKey);
|
|
138
|
+
var apiRes = await nativeFetch(endpoint + '/docs?' + qs.toString());
|
|
139
|
+
if (!apiRes.ok) return nativeFetch(input, init);
|
|
140
|
+
var doc = await apiRes.json();
|
|
141
|
+
var contents = doc && doc.contents;
|
|
142
|
+
if (!contents || typeof contents !== 'object') return nativeFetch(input, init);
|
|
143
|
+
|
|
144
|
+
// Replace `%name%` placeholders left by the adapter with the
|
|
145
|
+
// actual URL-bound param values.
|
|
146
|
+
for (var i2 = 0; i2 < data.length; i2++) {
|
|
147
|
+
var v = data[i2];
|
|
148
|
+
if (typeof v !== 'string') continue;
|
|
149
|
+
var pm = /^%(\w+)%$/.exec(v);
|
|
150
|
+
if (pm && Object.prototype.hasOwnProperty.call(matchedParams, pm[1])) {
|
|
151
|
+
data[i2] = matchedParams[pm[1]];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Splice the page doc's `metadata` branch into `cms.metadata`
|
|
156
|
+
// (currently `{}` at its index). Branch is just a sub-tree of `contents`.
|
|
157
|
+
var metaSrc =
|
|
158
|
+
contents.metadata &&
|
|
159
|
+
typeof contents.metadata === 'object' &&
|
|
160
|
+
!Array.isArray(contents.metadata)
|
|
161
|
+
? contents.metadata
|
|
162
|
+
: {};
|
|
163
|
+
var encodedMeta = {};
|
|
164
|
+
for (var mk in metaSrc) encodedMeta[mk] = flatten(data, metaSrc[mk]);
|
|
165
|
+
data[cmsObj.metadata] = encodedMeta;
|
|
166
|
+
|
|
167
|
+
// Splice the whole `contents` tree into `cms.docs[pageScopeId]`
|
|
168
|
+
// (also `{}` at its index). The `metadata` branch stays inside
|
|
169
|
+
// the doc — `cms.metadata` is just an alias.
|
|
170
|
+
var pageObj = data[cmsObj.page];
|
|
171
|
+
if (pageObj && typeof pageObj === 'object') {
|
|
172
|
+
var pageScopeId = data[pageObj.scopeId];
|
|
173
|
+
var docsObj = data[cmsObj.docs];
|
|
174
|
+
if (typeof pageScopeId === 'string' && docsObj && typeof docsObj === 'object') {
|
|
175
|
+
var pageDocIdx = docsObj[pageScopeId];
|
|
176
|
+
if (typeof pageDocIdx === 'number') {
|
|
177
|
+
var encodedDoc = {};
|
|
178
|
+
for (var ck in contents) {
|
|
179
|
+
encodedDoc[ck] = flatten(data, contents[ck]);
|
|
180
|
+
}
|
|
181
|
+
data[pageDocIdx] = encodedDoc;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return new Response(JSON.stringify(envelope), {
|
|
187
|
+
status: 200,
|
|
188
|
+
headers: { 'content-type': 'application/json' }
|
|
189
|
+
});
|
|
190
|
+
} catch (e) {
|
|
191
|
+
return nativeFetch(input, init);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
})();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type Plugin } from 'vite';
|
|
2
|
+
import { type ExternalCmsComponentSpec } from './manifest.js';
|
|
3
|
+
export type CmsPluginOptions = {
|
|
4
|
+
/** Defaults to `src/routes` (relative to Vite root). */
|
|
5
|
+
routesDir?: string;
|
|
6
|
+
/** Defaults to `src/lib` (relative to Vite root). */
|
|
7
|
+
libDir?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Third-party CMS components beyond the auto-discovered ones in
|
|
10
|
+
* `<libDir>/components/cms/` and the @velastack/cms package itself.
|
|
11
|
+
*/
|
|
12
|
+
components?: ExternalCmsComponentSpec[];
|
|
13
|
+
/**
|
|
14
|
+
* Bare-specifier sources whose `.svelte` imports the walker should follow.
|
|
15
|
+
* Strings match `source === pattern || source.startsWith(pattern + '/')`.
|
|
16
|
+
* Auto-populated with every entry from `components`.
|
|
17
|
+
*/
|
|
18
|
+
traverse?: (string | RegExp)[];
|
|
19
|
+
/**
|
|
20
|
+
* CMS API endpoint, same shape as `apiAdapter`'s. e.g.
|
|
21
|
+
* `'https://cms.example.com/v1/projects/p1/cms'`. When set, `vite build`
|
|
22
|
+
* downloads every media file referenced by published content into
|
|
23
|
+
* `mediaDir`, and `apiAdapter` rewrites URLs in fetched content from
|
|
24
|
+
* `<origin>/uploads/<file>` (or `/uploads/<file>`) to
|
|
25
|
+
* `<mediaPrefix>/<file>` so prerendered output references local paths.
|
|
26
|
+
* Omit (or use `mockAdapter`) to opt out — the build steps become no-ops.
|
|
27
|
+
*/
|
|
28
|
+
endpoint?: string;
|
|
29
|
+
/**
|
|
30
|
+
* BCP-47 locales to walk during media discovery. Mirror this with
|
|
31
|
+
* `createCms({ locales })`. Defaults to `['en']`.
|
|
32
|
+
*/
|
|
33
|
+
locales?: string[];
|
|
34
|
+
/** Local directory (relative to Vite root) to download media into. Defaults to `'static/cms-media'`. */
|
|
35
|
+
mediaDir?: string;
|
|
36
|
+
/** URL prefix used in rewritten content. Defaults to `'/cms-media'`. */
|
|
37
|
+
mediaPrefix?: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Vite plugin that scans SvelteKit route files, walks the static Svelte
|
|
41
|
+
* import graph from each entrypoint, and exposes a `cmsManifest` constant via
|
|
42
|
+
* `virtual:vela-cms/manifest`. Auto-injects `setContext(CMS_SCOPE, …)` into
|
|
43
|
+
* every `+layout.svelte` / `+page.svelte` so authors don't pass scope
|
|
44
|
+
* manually.
|
|
45
|
+
*
|
|
46
|
+
* Auto-discovers CMS components from:
|
|
47
|
+
* - `<libDir>/components/cms/*.svelte` (default imports)
|
|
48
|
+
* - `<libDir>/components/cms/index.{ts,js}` (every named export)
|
|
49
|
+
* - any import resolving inside the @velastack/cms package itself
|
|
50
|
+
*
|
|
51
|
+
* Use `components` to declare third-party CMS component packs. Use `traverse`
|
|
52
|
+
* to walk into wrapper packages whose `.svelte` files contain CMS usages but
|
|
53
|
+
* aren't themselves CMS components.
|
|
54
|
+
*/
|
|
55
|
+
export declare const cms: (options?: CmsPluginOptions) => Plugin;
|
|
56
|
+
export type { CmsManifest, CmsManifestScope, ExternalCmsComponentSpec } from './manifest.js';
|