@elytracms/studio 0.0.1
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 +3 -0
- package/convex/assets.ts +107 -0
- package/convex/auth.config.ts +15 -0
- package/convex/auth.ts +50 -0
- package/convex/cliTokens.ts +63 -0
- package/convex/cms.ts +174 -0
- package/convex/content.ts +316 -0
- package/convex/delivery.ts +266 -0
- package/convex/functions.ts +35 -0
- package/convex/graphs.ts +51 -0
- package/convex/guard.ts +67 -0
- package/convex/http.ts +30 -0
- package/convex/members.ts +83 -0
- package/convex/publishing.ts +102 -0
- package/convex/references.ts +168 -0
- package/convex/schema.ts +173 -0
- package/convex/sync.ts +322 -0
- package/convex/tsconfig.json +12 -0
- package/convex/users.ts +23 -0
- package/convex/webhooks.ts +85 -0
- package/dist/components/assets/asset-library.d.ts +14 -0
- package/dist/components/assets/asset-library.js +191 -0
- package/dist/components/assets/asset-library.js.map +1 -0
- package/dist/components/assets/asset-metadata.d.ts +34 -0
- package/dist/components/assets/asset-metadata.js +40 -0
- package/dist/components/assets/asset-metadata.js.map +1 -0
- package/dist/components/assets/asset-search.d.ts +7 -0
- package/dist/components/assets/asset-search.js +12 -0
- package/dist/components/assets/asset-search.js.map +1 -0
- package/dist/components/assets/asset-selection.d.ts +17 -0
- package/dist/components/assets/asset-selection.js +33 -0
- package/dist/components/assets/asset-selection.js.map +1 -0
- package/dist/components/assets/assets-store.d.ts +51 -0
- package/dist/components/assets/assets-store.js +153 -0
- package/dist/components/assets/assets-store.js.map +1 -0
- package/dist/components/auth-context.d.ts +38 -0
- package/dist/components/auth-context.js +88 -0
- package/dist/components/auth-context.js.map +1 -0
- package/dist/components/backend-gate.d.ts +19 -0
- package/dist/components/backend-gate.js +63 -0
- package/dist/components/backend-gate.js.map +1 -0
- package/dist/components/breadcrumb-context.d.ts +39 -0
- package/dist/components/breadcrumb-context.js +38 -0
- package/dist/components/breadcrumb-context.js.map +1 -0
- package/dist/components/builder/blocks-model.d.ts +80 -0
- package/dist/components/builder/blocks-model.js +181 -0
- package/dist/components/builder/blocks-model.js.map +1 -0
- package/dist/components/builder/blocks-panel.d.ts +44 -0
- package/dist/components/builder/blocks-panel.js +147 -0
- package/dist/components/builder/blocks-panel.js.map +1 -0
- package/dist/components/builder/builder-store.d.ts +69 -0
- package/dist/components/builder/builder-store.js +294 -0
- package/dist/components/builder/builder-store.js.map +1 -0
- package/dist/components/builder/canvas-stylesheet.d.ts +4 -0
- package/dist/components/builder/canvas-stylesheet.js +24 -0
- package/dist/components/builder/canvas-stylesheet.js.map +1 -0
- package/dist/components/builder/canvas.d.ts +8 -0
- package/dist/components/builder/canvas.js +723 -0
- package/dist/components/builder/canvas.js.map +1 -0
- package/dist/components/builder/clipboard-actions.d.ts +93 -0
- package/dist/components/builder/clipboard-actions.js +246 -0
- package/dist/components/builder/clipboard-actions.js.map +1 -0
- package/dist/components/builder/composition-field-editor.d.ts +11 -0
- package/dist/components/builder/composition-field-editor.js +150 -0
- package/dist/components/builder/composition-field-editor.js.map +1 -0
- package/dist/components/builder/composition-scope.d.ts +16 -0
- package/dist/components/builder/composition-scope.js +7 -0
- package/dist/components/builder/composition-scope.js.map +1 -0
- package/dist/components/builder/drag-session.d.ts +41 -0
- package/dist/components/builder/drag-session.js +51 -0
- package/dist/components/builder/drag-session.js.map +1 -0
- package/dist/components/builder/fixture-thumbnail.d.ts +18 -0
- package/dist/components/builder/fixture-thumbnail.js +97 -0
- package/dist/components/builder/fixture-thumbnail.js.map +1 -0
- package/dist/components/builder/inline-edit.d.ts +142 -0
- package/dist/components/builder/inline-edit.js +136 -0
- package/dist/components/builder/inline-edit.js.map +1 -0
- package/dist/components/builder/insert-context.d.ts +14 -0
- package/dist/components/builder/insert-context.js +65 -0
- package/dist/components/builder/insert-context.js.map +1 -0
- package/dist/components/builder/insert-menu.d.ts +9 -0
- package/dist/components/builder/insert-menu.js +9 -0
- package/dist/components/builder/insert-menu.js.map +1 -0
- package/dist/components/builder/layout-inspector.d.ts +14 -0
- package/dist/components/builder/layout-inspector.js +84 -0
- package/dist/components/builder/layout-inspector.js.map +1 -0
- package/dist/components/builder/node-factory.d.ts +17 -0
- package/dist/components/builder/node-factory.js +90 -0
- package/dist/components/builder/node-factory.js.map +1 -0
- package/dist/components/builder/page-tree.d.ts +3 -0
- package/dist/components/builder/page-tree.js +207 -0
- package/dist/components/builder/page-tree.js.map +1 -0
- package/dist/components/builder/property-inspector.d.ts +1 -0
- package/dist/components/builder/property-inspector.js +233 -0
- package/dist/components/builder/property-inspector.js.map +1 -0
- package/dist/components/builder/rich-text-toolbar.d.ts +4 -0
- package/dist/components/builder/rich-text-toolbar.js +104 -0
- package/dist/components/builder/rich-text-toolbar.js.map +1 -0
- package/dist/components/builder/spacing-handles.d.ts +22 -0
- package/dist/components/builder/spacing-handles.js +213 -0
- package/dist/components/builder/spacing-handles.js.map +1 -0
- package/dist/components/cms/asset-picker.d.ts +12 -0
- package/dist/components/cms/asset-picker.js +60 -0
- package/dist/components/cms/asset-picker.js.map +1 -0
- package/dist/components/cms/bulk-actions.d.ts +60 -0
- package/dist/components/cms/bulk-actions.js +95 -0
- package/dist/components/cms/bulk-actions.js.map +1 -0
- package/dist/components/cms/bulk-bar.d.ts +23 -0
- package/dist/components/cms/bulk-bar.js +26 -0
- package/dist/components/cms/bulk-bar.js.map +1 -0
- package/dist/components/cms/cell-edit.d.ts +91 -0
- package/dist/components/cms/cell-edit.js +144 -0
- package/dist/components/cms/cell-edit.js.map +1 -0
- package/dist/components/cms/cell.d.ts +29 -0
- package/dist/components/cms/cell.js +127 -0
- package/dist/components/cms/cell.js.map +1 -0
- package/dist/components/cms/cms-index.d.ts +8 -0
- package/dist/components/cms/cms-index.js +23 -0
- package/dist/components/cms/cms-index.js.map +1 -0
- package/dist/components/cms/cms-store.d.ts +188 -0
- package/dist/components/cms/cms-store.js +702 -0
- package/dist/components/cms/cms-store.js.map +1 -0
- package/dist/components/cms/collection-table.d.ts +6 -0
- package/dist/components/cms/collection-table.js +250 -0
- package/dist/components/cms/collection-table.js.map +1 -0
- package/dist/components/cms/collections-sidebar.d.ts +9 -0
- package/dist/components/cms/collections-sidebar.js +25 -0
- package/dist/components/cms/collections-sidebar.js.map +1 -0
- package/dist/components/cms/detail-editor.d.ts +7 -0
- package/dist/components/cms/detail-editor.js +386 -0
- package/dist/components/cms/detail-editor.js.map +1 -0
- package/dist/components/cms/doc-state.d.ts +13 -0
- package/dist/components/cms/doc-state.js +18 -0
- package/dist/components/cms/doc-state.js.map +1 -0
- package/dist/components/cms/document-editor-context.d.ts +48 -0
- package/dist/components/cms/document-editor-context.js +23 -0
- package/dist/components/cms/document-editor-context.js.map +1 -0
- package/dist/components/cms/editable-cell.d.ts +22 -0
- package/dist/components/cms/editable-cell.js +176 -0
- package/dist/components/cms/editable-cell.js.map +1 -0
- package/dist/components/cms/field-control.d.ts +8 -0
- package/dist/components/cms/field-control.js +149 -0
- package/dist/components/cms/field-control.js.map +1 -0
- package/dist/components/cms/filter-builder.d.ts +12 -0
- package/dist/components/cms/filter-builder.js +84 -0
- package/dist/components/cms/filter-builder.js.map +1 -0
- package/dist/components/cms/import-export.d.ts +6 -0
- package/dist/components/cms/import-export.js +33 -0
- package/dist/components/cms/import-export.js.map +1 -0
- package/dist/components/cms/new-page-dialog.d.ts +22 -0
- package/dist/components/cms/new-page-dialog.js +42 -0
- package/dist/components/cms/new-page-dialog.js.map +1 -0
- package/dist/components/cms/reference-confirm.d.ts +25 -0
- package/dist/components/cms/reference-confirm.js +124 -0
- package/dist/components/cms/reference-confirm.js.map +1 -0
- package/dist/components/cms/relation-picker.d.ts +16 -0
- package/dist/components/cms/relation-picker.js +47 -0
- package/dist/components/cms/relation-picker.js.map +1 -0
- package/dist/components/cms/use-cell-edit.d.ts +33 -0
- package/dist/components/cms/use-cell-edit.js +125 -0
- package/dist/components/cms/use-cell-edit.js.map +1 -0
- package/dist/components/cms/versions-model.d.ts +15 -0
- package/dist/components/cms/versions-model.js +23 -0
- package/dist/components/cms/versions-model.js.map +1 -0
- package/dist/components/cms/versions-pane.d.ts +14 -0
- package/dist/components/cms/versions-pane.js +86 -0
- package/dist/components/cms/versions-pane.js.map +1 -0
- package/dist/components/cms/view-bar.d.ts +11 -0
- package/dist/components/cms/view-bar.js +80 -0
- package/dist/components/cms/view-bar.js.map +1 -0
- package/dist/components/collab/collab-context.d.ts +34 -0
- package/dist/components/collab/collab-context.js +52 -0
- package/dist/components/collab/collab-context.js.map +1 -0
- package/dist/components/collab/collab-seed.d.ts +27 -0
- package/dist/components/collab/collab-seed.js +42 -0
- package/dist/components/collab/collab-seed.js.map +1 -0
- package/dist/components/components/component-detail.d.ts +9 -0
- package/dist/components/components/component-detail.js +30 -0
- package/dist/components/components/component-detail.js.map +1 -0
- package/dist/components/components/component-status.d.ts +10 -0
- package/dist/components/components/component-status.js +30 -0
- package/dist/components/components/component-status.js.map +1 -0
- package/dist/components/components/components-index.d.ts +8 -0
- package/dist/components/components/components-index.js +42 -0
- package/dist/components/components/components-index.js.map +1 -0
- package/dist/components/components/field-inspector.d.ts +9 -0
- package/dist/components/components/field-inspector.js +38 -0
- package/dist/components/components/field-inspector.js.map +1 -0
- package/dist/components/components/fixture-runner.d.ts +10 -0
- package/dist/components/components/fixture-runner.js +24 -0
- package/dist/components/components/fixture-runner.js.map +1 -0
- package/dist/components/components/registry-browser.d.ts +4 -0
- package/dist/components/components/registry-browser.js +64 -0
- package/dist/components/components/registry-browser.js.map +1 -0
- package/dist/components/current-user-menu.d.ts +13 -0
- package/dist/components/current-user-menu.js +31 -0
- package/dist/components/current-user-menu.js.map +1 -0
- package/dist/components/dev-login-badge.d.ts +9 -0
- package/dist/components/dev-login-badge.js +18 -0
- package/dist/components/dev-login-badge.js.map +1 -0
- package/dist/components/extensions/extensions-view.d.ts +7 -0
- package/dist/components/extensions/extensions-view.js +126 -0
- package/dist/components/extensions/extensions-view.js.map +1 -0
- package/dist/components/guards.d.ts +27 -0
- package/dist/components/guards.js +46 -0
- package/dist/components/guards.js.map +1 -0
- package/dist/components/inspector/inspector-sidebar.d.ts +26 -0
- package/dist/components/inspector/inspector-sidebar.js +17 -0
- package/dist/components/inspector/inspector-sidebar.js.map +1 -0
- package/dist/components/operation-error.d.ts +17 -0
- package/dist/components/operation-error.js +54 -0
- package/dist/components/operation-error.js.map +1 -0
- package/dist/components/playground-badge.d.ts +10 -0
- package/dist/components/playground-badge.js +19 -0
- package/dist/components/playground-badge.js.map +1 -0
- package/dist/components/project-list.d.ts +15 -0
- package/dist/components/project-list.js +52 -0
- package/dist/components/project-list.js.map +1 -0
- package/dist/components/project-session.d.ts +46 -0
- package/dist/components/project-session.js +107 -0
- package/dist/components/project-session.js.map +1 -0
- package/dist/components/project-switcher.d.ts +11 -0
- package/dist/components/project-switcher.js +44 -0
- package/dist/components/project-switcher.js.map +1 -0
- package/dist/components/references/builder-deep-link.d.ts +12 -0
- package/dist/components/references/builder-deep-link.js +53 -0
- package/dist/components/references/builder-deep-link.js.map +1 -0
- package/dist/components/references/references-panel.d.ts +17 -0
- package/dist/components/references/references-panel.js +66 -0
- package/dist/components/references/references-panel.js.map +1 -0
- package/dist/components/routes/redirect-chain.d.ts +9 -0
- package/dist/components/routes/redirect-chain.js +16 -0
- package/dist/components/routes/redirect-chain.js.map +1 -0
- package/dist/components/routes/redirect-manager.d.ts +13 -0
- package/dist/components/routes/redirect-manager.js +24 -0
- package/dist/components/routes/redirect-manager.js.map +1 -0
- package/dist/components/routes/route-list.d.ts +35 -0
- package/dist/components/routes/route-list.js +69 -0
- package/dist/components/routes/route-list.js.map +1 -0
- package/dist/components/routes/routes-shell.d.ts +14 -0
- package/dist/components/routes/routes-shell.js +68 -0
- package/dist/components/routes/routes-shell.js.map +1 -0
- package/dist/components/section-nav.d.ts +17 -0
- package/dist/components/section-nav.js +33 -0
- package/dist/components/section-nav.js.map +1 -0
- package/dist/components/section-state.d.ts +24 -0
- package/dist/components/section-state.js +78 -0
- package/dist/components/section-state.js.map +1 -0
- package/dist/components/section-surface.d.ts +31 -0
- package/dist/components/section-surface.js +46 -0
- package/dist/components/section-surface.js.map +1 -0
- package/dist/components/sections.d.ts +38 -0
- package/dist/components/sections.js +72 -0
- package/dist/components/sections.js.map +1 -0
- package/dist/components/settings-form.d.ts +10 -0
- package/dist/components/settings-form.js +17 -0
- package/dist/components/settings-form.js.map +1 -0
- package/dist/components/studio-context.d.ts +22 -0
- package/dist/components/studio-context.js +48 -0
- package/dist/components/studio-context.js.map +1 -0
- package/dist/components/studio-project-screen.d.ts +19 -0
- package/dist/components/studio-project-screen.js +195 -0
- package/dist/components/studio-project-screen.js.map +1 -0
- package/dist/components/studio-shell.d.ts +18 -0
- package/dist/components/studio-shell.js +64 -0
- package/dist/components/studio-shell.js.map +1 -0
- package/dist/components/theme-context.d.ts +17 -0
- package/dist/components/theme-context.js +26 -0
- package/dist/components/theme-context.js.map +1 -0
- package/dist/components/workspace-gate.d.ts +12 -0
- package/dist/components/workspace-gate.js +27 -0
- package/dist/components/workspace-gate.js.map +1 -0
- package/dist/components/workspace-projects.d.ts +13 -0
- package/dist/components/workspace-projects.js +18 -0
- package/dist/components/workspace-projects.js.map +1 -0
- package/dist/lib/assets/delete-asset.d.ts +34 -0
- package/dist/lib/assets/delete-asset.js +34 -0
- package/dist/lib/assets/delete-asset.js.map +1 -0
- package/dist/lib/assets/image-dimensions.d.ts +18 -0
- package/dist/lib/assets/image-dimensions.js +26 -0
- package/dist/lib/assets/image-dimensions.js.map +1 -0
- package/dist/lib/assets/index.d.ts +9 -0
- package/dist/lib/assets/index.js +10 -0
- package/dist/lib/assets/index.js.map +1 -0
- package/dist/lib/assets/upload-state.d.ts +53 -0
- package/dist/lib/assets/upload-state.js +59 -0
- package/dist/lib/assets/upload-state.js.map +1 -0
- package/dist/lib/assets/upload.d.ts +56 -0
- package/dist/lib/assets/upload.js +125 -0
- package/dist/lib/assets/upload.js.map +1 -0
- package/dist/lib/auth/auth-adapter.d.ts +57 -0
- package/dist/lib/auth/auth-adapter.js +13 -0
- package/dist/lib/auth/auth-adapter.js.map +1 -0
- package/dist/lib/auth/convex-auth-adapter.d.ts +39 -0
- package/dist/lib/auth/convex-auth-adapter.js +171 -0
- package/dist/lib/auth/convex-auth-adapter.js.map +1 -0
- package/dist/lib/auth/dev-auto-login-adapter.d.ts +25 -0
- package/dist/lib/auth/dev-auto-login-adapter.js +40 -0
- package/dist/lib/auth/dev-auto-login-adapter.js.map +1 -0
- package/dist/lib/auth/index.d.ts +28 -0
- package/dist/lib/auth/index.js +61 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/auth/local-auth-adapter.d.ts +57 -0
- package/dist/lib/auth/local-auth-adapter.js +78 -0
- package/dist/lib/auth/local-auth-adapter.js.map +1 -0
- package/dist/lib/auth/route-guard.d.ts +33 -0
- package/dist/lib/auth/route-guard.js +51 -0
- package/dist/lib/auth/route-guard.js.map +1 -0
- package/dist/lib/auth-errors.d.ts +42 -0
- package/dist/lib/auth-errors.js +74 -0
- package/dist/lib/auth-errors.js.map +1 -0
- package/dist/lib/bindings/section-bindings.d.ts +24 -0
- package/dist/lib/bindings/section-bindings.js +9 -0
- package/dist/lib/bindings/section-bindings.js.map +1 -0
- package/dist/lib/clipboard/index.d.ts +7 -0
- package/dist/lib/clipboard/index.js +8 -0
- package/dist/lib/clipboard/index.js.map +1 -0
- package/dist/lib/clipboard/os-clipboard.d.ts +46 -0
- package/dist/lib/clipboard/os-clipboard.js +105 -0
- package/dist/lib/clipboard/os-clipboard.js.map +1 -0
- package/dist/lib/clipboard/paste-issues.d.ts +34 -0
- package/dist/lib/clipboard/paste-issues.js +67 -0
- package/dist/lib/clipboard/paste-issues.js.map +1 -0
- package/dist/lib/clipboard/paste-target.d.ts +20 -0
- package/dist/lib/clipboard/paste-target.js +28 -0
- package/dist/lib/clipboard/paste-target.js.map +1 -0
- package/dist/lib/cms/published-documents.d.ts +30 -0
- package/dist/lib/cms/published-documents.js +75 -0
- package/dist/lib/cms/published-documents.js.map +1 -0
- package/dist/lib/cms-views/index.d.ts +9 -0
- package/dist/lib/cms-views/index.js +10 -0
- package/dist/lib/cms-views/index.js.map +1 -0
- package/dist/lib/cms-views/selection.d.ts +29 -0
- package/dist/lib/cms-views/selection.js +46 -0
- package/dist/lib/cms-views/selection.js.map +1 -0
- package/dist/lib/cms-views/view-model.d.ts +192 -0
- package/dist/lib/cms-views/view-model.js +353 -0
- package/dist/lib/cms-views/view-model.js.map +1 -0
- package/dist/lib/cms-views/views-store.d.ts +70 -0
- package/dist/lib/cms-views/views-store.js +129 -0
- package/dist/lib/cms-views/views-store.js.map +1 -0
- package/dist/lib/data/collection-content.d.ts +105 -0
- package/dist/lib/data/collection-content.js +196 -0
- package/dist/lib/data/collection-content.js.map +1 -0
- package/dist/lib/data/data-store.d.ts +97 -0
- package/dist/lib/data/data-store.js +205 -0
- package/dist/lib/data/data-store.js.map +1 -0
- package/dist/lib/data/index.d.ts +4 -0
- package/dist/lib/data/index.js +8 -0
- package/dist/lib/data/index.js.map +1 -0
- package/dist/lib/data/providers.d.ts +143 -0
- package/dist/lib/data/providers.js +255 -0
- package/dist/lib/data/providers.js.map +1 -0
- package/dist/lib/data/sample-capture.d.ts +30 -0
- package/dist/lib/data/sample-capture.js +70 -0
- package/dist/lib/data/sample-capture.js.map +1 -0
- package/dist/lib/data/sources-store.d.ts +42 -0
- package/dist/lib/data/sources-store.js +120 -0
- package/dist/lib/data/sources-store.js.map +1 -0
- package/dist/lib/dnd/drop-rules.d.ts +219 -0
- package/dist/lib/dnd/drop-rules.js +257 -0
- package/dist/lib/dnd/drop-rules.js.map +1 -0
- package/dist/lib/dnd/gap-drag.d.ts +66 -0
- package/dist/lib/dnd/gap-drag.js +95 -0
- package/dist/lib/dnd/gap-drag.js.map +1 -0
- package/dist/lib/locale/binding-fallback.d.ts +28 -0
- package/dist/lib/locale/binding-fallback.js +66 -0
- package/dist/lib/locale/binding-fallback.js.map +1 -0
- package/dist/lib/locale/fallback.d.ts +43 -0
- package/dist/lib/locale/fallback.js +52 -0
- package/dist/lib/locale/fallback.js.map +1 -0
- package/dist/lib/locale/index.d.ts +6 -0
- package/dist/lib/locale/index.js +7 -0
- package/dist/lib/locale/index.js.map +1 -0
- package/dist/lib/locale/locale-store.d.ts +40 -0
- package/dist/lib/locale/locale-store.js +61 -0
- package/dist/lib/locale/locale-store.js.map +1 -0
- package/dist/lib/locale/locale-switcher.d.ts +10 -0
- package/dist/lib/locale/locale-switcher.js +24 -0
- package/dist/lib/locale/locale-switcher.js.map +1 -0
- package/dist/lib/locale/route-variant.d.ts +14 -0
- package/dist/lib/locale/route-variant.js +11 -0
- package/dist/lib/locale/route-variant.js.map +1 -0
- package/dist/lib/locale/use-studio-locale.d.ts +10 -0
- package/dist/lib/locale/use-studio-locale.js +8 -0
- package/dist/lib/locale/use-studio-locale.js.map +1 -0
- package/dist/lib/operations/asset-repository.d.ts +15 -0
- package/dist/lib/operations/asset-repository.js +56 -0
- package/dist/lib/operations/asset-repository.js.map +1 -0
- package/dist/lib/operations/cms-persistence.d.ts +35 -0
- package/dist/lib/operations/cms-persistence.js +75 -0
- package/dist/lib/operations/cms-persistence.js.map +1 -0
- package/dist/lib/operations/graph-commands.d.ts +140 -0
- package/dist/lib/operations/graph-commands.js +86 -0
- package/dist/lib/operations/graph-commands.js.map +1 -0
- package/dist/lib/operations/graph-persistence.d.ts +27 -0
- package/dist/lib/operations/graph-persistence.js +35 -0
- package/dist/lib/operations/graph-persistence.js.map +1 -0
- package/dist/lib/operations/index.d.ts +13 -0
- package/dist/lib/operations/index.js +14 -0
- package/dist/lib/operations/index.js.map +1 -0
- package/dist/lib/operations/operations-package.d.ts +6 -0
- package/dist/lib/operations/operations-package.js +7 -0
- package/dist/lib/operations/operations-package.js.map +1 -0
- package/dist/lib/operations/persist-queue.d.ts +16 -0
- package/dist/lib/operations/persist-queue.js +18 -0
- package/dist/lib/operations/persist-queue.js.map +1 -0
- package/dist/lib/operations/session-hydration.d.ts +84 -0
- package/dist/lib/operations/session-hydration.js +112 -0
- package/dist/lib/operations/session-hydration.js.map +1 -0
- package/dist/lib/operations/studio-operations.d.ts +59 -0
- package/dist/lib/operations/studio-operations.js +92 -0
- package/dist/lib/operations/studio-operations.js.map +1 -0
- package/dist/lib/persistence/backend-mode.d.ts +69 -0
- package/dist/lib/persistence/backend-mode.js +120 -0
- package/dist/lib/persistence/backend-mode.js.map +1 -0
- package/dist/lib/persistence/convex-adapter.d.ts +34 -0
- package/dist/lib/persistence/convex-adapter.js +681 -0
- package/dist/lib/persistence/convex-adapter.js.map +1 -0
- package/dist/lib/persistence/convex-blob-storage.d.ts +57 -0
- package/dist/lib/persistence/convex-blob-storage.js +97 -0
- package/dist/lib/persistence/convex-blob-storage.js.map +1 -0
- package/dist/lib/persistence/convex-client.d.ts +19 -0
- package/dist/lib/persistence/convex-client.js +40 -0
- package/dist/lib/persistence/convex-client.js.map +1 -0
- package/dist/lib/persistence/index.d.ts +30 -0
- package/dist/lib/persistence/index.js +60 -0
- package/dist/lib/persistence/index.js.map +1 -0
- package/dist/lib/persona/labels.d.ts +23 -0
- package/dist/lib/persona/labels.js +122 -0
- package/dist/lib/persona/labels.js.map +1 -0
- package/dist/lib/rail.d.ts +11 -0
- package/dist/lib/rail.js +26 -0
- package/dist/lib/rail.js.map +1 -0
- package/dist/lib/references/impact.d.ts +64 -0
- package/dist/lib/references/impact.js +62 -0
- package/dist/lib/references/impact.js.map +1 -0
- package/dist/lib/references/index.d.ts +7 -0
- package/dist/lib/references/index.js +8 -0
- package/dist/lib/references/index.js.map +1 -0
- package/dist/lib/references/reference-model.d.ts +125 -0
- package/dist/lib/references/reference-model.js +242 -0
- package/dist/lib/references/reference-model.js.map +1 -0
- package/dist/lib/references/references-store.d.ts +65 -0
- package/dist/lib/references/references-store.js +221 -0
- package/dist/lib/references/references-store.js.map +1 -0
- package/dist/lib/registry/index.d.ts +65 -0
- package/dist/lib/registry/index.js +114 -0
- package/dist/lib/registry/index.js.map +1 -0
- package/dist/lib/registry/preview.d.ts +15 -0
- package/dist/lib/registry/preview.js +110 -0
- package/dist/lib/registry/preview.js.map +1 -0
- package/dist/lib/registry/project-components.d.ts +16 -0
- package/dist/lib/registry/project-components.js +152 -0
- package/dist/lib/registry/project-components.js.map +1 -0
- package/dist/lib/routing/index.d.ts +10 -0
- package/dist/lib/routing/index.js +11 -0
- package/dist/lib/routing/index.js.map +1 -0
- package/dist/lib/routing/routing-analysis.d.ts +26 -0
- package/dist/lib/routing/routing-analysis.js +37 -0
- package/dist/lib/routing/routing-analysis.js.map +1 -0
- package/dist/lib/routing/routing-store.d.ts +50 -0
- package/dist/lib/routing/routing-store.js +72 -0
- package/dist/lib/routing/routing-store.js.map +1 -0
- package/dist/lib/starters/kit-session.d.ts +5 -0
- package/dist/lib/starters/kit-session.js +17 -0
- package/dist/lib/starters/kit-session.js.map +1 -0
- package/dist/lib/theme.d.ts +21 -0
- package/dist/lib/theme.js +32 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/utils.d.ts +11 -0
- package/dist/lib/utils.js +28 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/webhooks/config.d.ts +15 -0
- package/dist/lib/webhooks/config.js +64 -0
- package/dist/lib/webhooks/config.js.map +1 -0
- package/dist/lib/webhooks/dispatcher.d.ts +67 -0
- package/dist/lib/webhooks/dispatcher.js +61 -0
- package/dist/lib/webhooks/dispatcher.js.map +1 -0
- package/dist/lib/webhooks/index.d.ts +11 -0
- package/dist/lib/webhooks/index.js +10 -0
- package/dist/lib/webhooks/index.js.map +1 -0
- package/dist/lib/webhooks/signing.d.ts +15 -0
- package/dist/lib/webhooks/signing.js +24 -0
- package/dist/lib/webhooks/signing.js.map +1 -0
- package/dist/lib/webhooks/tags.d.ts +25 -0
- package/dist/lib/webhooks/tags.js +173 -0
- package/dist/lib/webhooks/tags.js.map +1 -0
- package/dist/lib/working-graph.d.ts +82 -0
- package/dist/lib/working-graph.js +113 -0
- package/dist/lib/working-graph.js.map +1 -0
- package/dist/lib/workspace/index.d.ts +109 -0
- package/dist/lib/workspace/index.js +206 -0
- package/dist/lib/workspace/index.js.map +1 -0
- package/dist/lib/workspace/switcher-source.d.ts +39 -0
- package/dist/lib/workspace/switcher-source.js +23 -0
- package/dist/lib/workspace/switcher-source.js.map +1 -0
- package/dist/lib/workspace/workspace-source.d.ts +47 -0
- package/dist/lib/workspace/workspace-source.js +67 -0
- package/dist/lib/workspace/workspace-source.js.map +1 -0
- package/dist/router/index.d.ts +32 -0
- package/dist/router/index.js +32 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/match.d.ts +75 -0
- package/dist/router/match.js +87 -0
- package/dist/router/match.js.map +1 -0
- package/dist/router/search.d.ts +22 -0
- package/dist/router/search.js +16 -0
- package/dist/router/search.js.map +1 -0
- package/dist/ui/avatar.d.ts +17 -0
- package/dist/ui/avatar.js +38 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/badge.d.ts +9 -0
- package/dist/ui/badge.js +23 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/button.d.ts +11 -0
- package/dist/ui/button.js +30 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/card.d.ts +11 -0
- package/dist/ui/card.js +23 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/dialog.d.ts +12 -0
- package/dist/ui/dialog.js +27 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/dropdown-menu.d.ts +15 -0
- package/dist/ui/dropdown-menu.js +24 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/field.d.ts +15 -0
- package/dist/ui/field.js +14 -0
- package/dist/ui/field.js.map +1 -0
- package/dist/ui/index.d.ts +14 -0
- package/dist/ui/index.js +15 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/input.d.ts +3 -0
- package/dist/ui/input.js +7 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/inspector.d.ts +18 -0
- package/dist/ui/inspector.js +14 -0
- package/dist/ui/inspector.js.map +1 -0
- package/dist/ui/layout.d.ts +45 -0
- package/dist/ui/layout.js +48 -0
- package/dist/ui/layout.js.map +1 -0
- package/dist/ui/panel.d.ts +12 -0
- package/dist/ui/panel.js +20 -0
- package/dist/ui/panel.js.map +1 -0
- package/dist/ui/separator.d.ts +6 -0
- package/dist/ui/separator.js +7 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/toolbar.d.ts +9 -0
- package/dist/ui/toolbar.js +16 -0
- package/dist/ui/toolbar.js.map +1 -0
- package/dist/ui/typography.d.ts +50 -0
- package/dist/ui/typography.js +43 -0
- package/dist/ui/typography.js.map +1 -0
- package/package.json +149 -0
- package/src/styles/studio.css +101 -0
- package/src/styles/tokens.css +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convex-adapter.js","sourceRoot":"","sources":["../../../src/lib/persistence/convex-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,wBAAwB,CAAA;AAsC/B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAIzD,MAAM,SAAS,GAAU,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;AAEvD,SAAS,KAAK,CAAC,MAAc;IAC3B,MAAM,IAAI,GACR,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU;QACjD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;QAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACjE,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAA;AAC5B,CAAC;AAeD,SAAS,aAAa,CAAC,GAAa;IAClC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACnB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,MAA2B;IAC5C,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACxD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,0BAA0B,CAAC,+BAA+B,EAAE;YACpE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,EAAE,OAAO,EAAE;SACtF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AAClD,CAAC;AAED,MAAM,qBAAqB;IAEN;IACA;IAFnB,YACmB,MAAwB,EACxB,QAAe,SAAS;QADxB,WAAM,GAAN,MAAM,CAAkB;QACxB,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,KAAmB,EACnB,UAA4B,EAAE;QAE9B,IAAI,eAAuB,CAAA;QAC3B,IAAI,CAAC;YACH,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,0BAA0B,CAAC,2BAA2B,EAAE;gBAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;aACnE,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE;YAC1E,eAAe;YACf,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,4BAA4B;YAClE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;YACvB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAa,CAAA;QACf,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAoB,CAAA;QACvF,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC3D,OAAO,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,QAAgB;QACnD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAChE,QAAQ;SACT,CAAC,CAAoB,CAAA;QACtB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAA;QACrF,OAAO,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAe,CAAA;QAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAoB,CAAA;QACvF,OAAO,GAAG,KAAK,IAAI,CAAA;IACrB,CAAC;CACF;AAED,6EAA6E;AAE7E;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,0BAA0B,CAAA;AAS1D,SAAS,gBAAgB,CAAC,GAAgB;IACxC,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;AACH,CAAC;AAUD,sFAAsF;AACtF,SAAS,oBAAoB,CAAC,GAAe,EAAE,SAAiB;IAC9D,OAAO;QACL,SAAS;QACT,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAA;AACH,CAAC;AAED,MAAM,mBAAmB;IAOJ;IACA;IACA;IARnB;;;;OAIG;IACH,YACmB,MAAwB,EACxB,cAAwC,EAAE,EAC1C,QAAe,SAAS;QAFxB,WAAM,GAAN,MAAM,CAAkB;QACxB,gBAAW,GAAX,WAAW,CAA+B;QAC1C,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,KAAK,CAAC,UAAU,CACd,UAAkB,EAClB,YAAsC;QAEtC,mEAAmE;QACnE,2EAA2E;QAC3E,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,IAAI,0BAA0B,CAClC,0FAA0F,EAC1F;YACE;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EACL,iFAAiF;gBACnF,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,KAAK;aACd;SACF,CACF,CAAA;IACH,CAAC;IAED,kFAAkF;IAC1E,YAAY,CAAC,SAAiB;QACpC,OAAO;YACL,SAAS;YACT,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAClC,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,uBAAuB;SACnC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,QAAqB;QAC3D,8EAA8E;QAC9E,iFAAiF;QACjF,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE;YACzE,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,KAAK,EAAE,SAAS,CAAC,EAAE;YACnB,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC,CAAgB,CAAA;QAClB,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,GAAgB;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACrD,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,mBAAmB,CAAC,cAAc,EAAE,GAAG,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3F,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,GAAgB;QACpD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAChE,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAuB,CAAA;QACzB,OAAO,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,UAAmB;QACxD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YACnE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAC,CAAkB,CAAA;QACpB,yEAAyE;QACzE,gEAAgE;QAChE,OAAO,IAAI;aACR,GAAG,CAAC,gBAAgB,CAAC;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,GAAgB;QACtD,0EAA0E;QAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE;YAC5D,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,SAAiB,EACjB,QAAqB,EACrB,UAAsC,EAAE;QAExC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE;YAC9E,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;YACvB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC,CAAe,CAAA;QACjB,OAAO,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,GAAgB;QAEhB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;YAC1E,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAiB,CAAA;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,SAAiB;QAC7C,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACnC,QAAQ,CAAC,6BAA6B,CAAC,EACvC,EAAE,CACH,CAAiB,CAAA;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,SAAiB,EACjB,GAAgB,EAChB,OAAe;QAEf,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;YACvE,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,OAAO;SACR,CAAC,CAAsB,CAAA;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,GAAG,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,EAAE,CACtD,CAAA;QACH,CAAC;QACD,OAAO,oBAAoB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,SAAiB,EACjB,GAAgB,EAChB,OAAe;QAEf,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE;YACjF,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;SACxB,CAAC,CAAgB,CAAA;QAClB,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,GAAgB;QACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACvD,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,IAAI,0BAA0B,CAAC,sCAAsC,EAAE;gBAC3E;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,0DAA0D;oBACnE,MAAM,EAAE,KAAK;iBACd;aACF,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE;YAC5E,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;SACxB,CAAC,CAAgB,CAAA;QAClB,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;CACF;AAqBD,8FAA8F;AAC9F,SAAS,kBAAkB,CAAC,GAAa;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,OAAO;QACf,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;AACH,CAAC;AAED,MAAM,qBAAqB;IAEN;IACA;IAFnB,YACmB,MAAwB,EACxB,QAAe,SAAS;QADxB,WAAM,GAAN,MAAM,CAAkB;QACxB,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,KAAoB;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE;YACpE,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,4EAA4E;YAC5E,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,GAAG,SAAS,IAAI,EAAE,EAAE;YACpD,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC,CAAa,CAAA;QACf,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,EAAU;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,SAAS,IAAI,EAAE,EAAE,CAAC,CAAA;QACxE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,EAAU;QAC3C,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC3D,OAAO,EAAE,EAAE;SACZ,CAAC,CAAoB,CAAA;QACtB,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAe,CAAA;QACjF,OAAO,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,EAAU;QAC7C,wEAAwE;QACxE,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,GAAsB;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAA;QAC1C,KAAK,MAAM,KAAK,IAAI,GAAG;YAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAC7E,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAUD;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,GAAkB,EAAE,SAAiB;IACpE,OAAO;QACL,SAAS;QACT,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;AACH,CAAC;AAED,MAAM,0BAA0B;IAEX;IACA;IAFnB,YACmB,MAAwB,EACxB,QAAe,SAAS;QADxB,WAAM,GAAN,MAAM,CAAkB;QACxB,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;QACxE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAClC,QAAQ,CAAC,qBAAqB,CAAC,EAC/B,EAAE,CACH,CAAyB,CAAA;QAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,KAAmB;QAClD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,0BAA0B,CAAC,0CAA0C,EAAE;gBAC/E,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,4BAA4B,EAAE,MAAM,EAAE,YAAY,EAAE;aAC1F,CAAC,CAAA;QACJ,CAAC;QACD,0EAA0E;QAC1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,0BAA0B,CAAC,4CAA4C,EAAE;gBACjF;oBACE,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,4CAA4C,KAAK,CAAC,QAAQ,IAAI;oBACvE,MAAM,EAAE,YAAY;iBACrB;aACF,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE;YACzE,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE;SAC1B,CAAC,CAAkB,CAAA;QACpB,0EAA0E;QAC1E,OAAO,uBAAuB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,IAAI,GAAkB,CAAA;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE;gBACrE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;aACxB,CAAC,CAAkB,CAAA;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,0DAA0D;YAC1D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,0BAA0B,CAAC,wCAAwC,EAAE;oBAC7E,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;iBAC9D,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,uBAAuB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;CACF;AAgBD,SAAS,sBAAsB,CAAC,GAAsB;IACpD,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE;QAClD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE;QAClD,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAA;AACH,CAAC;AAED,qFAAqF;AACrF,SAAS,sBAAsB,CAAC,IAAyB;IACvD,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,8BAA8B;IACL;IAA7B,YAA6B,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IAAG,CAAC;IAEzD,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,OAAyB,EACzB,MAAuB,EACvB,UAAwC;QAExC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,6BAA6B,CAAC,EAAE;YACrE,OAAO;YACP,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gBACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,SAAiB,EACjB,OAAyB,EACzB,WAA2C,EAC3C,OAAkC;QAElC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,kCAAkC,CAAC,EAAE;YAC1E,OAAO;YACP,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gBACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gBACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;gBACrB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ,CAAC,CAAA;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;QAClC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,SAAiB,EACjB,MAAuB,EACvB,OAA0B;QAE1B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE;YACpE,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAiB,EACjB,MAAuB,EACvB,UAAkC,EAAE;QAEpC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YACrE,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAwB,CAAA;QAC1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,MAAuB,EACvB,UAAkC,EAAE;QAEpC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YACpE,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAwB,CAAA;QAC1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,OAA0B;QAE1B,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YACjE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC,CAAwB,CAAA;QAC1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC,CAAA;IACxE,CAAC;CACF;AAWD;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,GAAc,EAAE,SAAiB;IAC5D,OAAO;QACL,SAAS;QACT,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAA;AACH,CAAC;AAED,MAAM,uBAAuB;IAER;IAEA;IACA;IAJnB,YACmB,MAAwB;IACzC,wEAAwE;IACvD,cAAsB,EACtB,QAAe,SAAS;QAHxB,WAAM,GAAN,MAAM,CAAkB;QAExB,mBAAc,GAAd,cAAc,CAAQ;QACtB,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,KAAK,CAAC,SAAS,CACb,SAAiB,EACjB,MAAc,EACd,IAAiB;QAEjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;YAClE,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC,CAAc,CAAA;QAChB,OAAO,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YAC5D,MAAM;SACP,CAAC,CAAqB,CAAA;QACvB,OAAO,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAgB,CAAA;QACnF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAc;QACzC,8EAA8E;QAC9E,uEAAuE;QACvE,0EAA0E;QAC1E,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAqB,CAAA;QACvF,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5F,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,MAAc;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAA;YAC3E,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF;AAYD,SAAS,qBAAqB,CAAC,GAAgB;IAC7C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,OAAO;QACf,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAA;AACH,CAAC;AAED,MAAM,wBAAwB;IAET;IACA;IAFnB,YACmB,MAAwB,EACxB,QAAe,SAAS;QADxB,WAAM,GAAN,MAAM,CAAkB;QACxB,UAAK,GAAL,KAAK,CAAmB;IACxC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,KAAuB;QACvC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE;YACvE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;SACxB,CAAC,CAAgB,CAAA;QAClB,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAkB,CAAA;QACvF,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE;gBACvE,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;aACxB,CAAC,CAAgB,CAAA;YAClB,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;YACrD,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;YACjE,SAAS;SACV,CAAC,CAAuB,CAAA;QACzB,OAAO,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IAuBhB;IAtBV,MAAM,CAAiB;IACvB,GAAG,CAAe;IAClB,MAAM,CAAiB;IACvB,UAAU,CAAsB;IACzC,6EAA6E;IACpE,UAAU,CAA0B;IAC7C,6CAA6C;IACpC,OAAO,CAAmB;IACnC,yDAAyD;IAChD,SAAS,CAAoB;IACtC,oEAAoE;IAC3D,KAAK,CAAoB;IAElC;;;;;;;OAOG;IACH,YACmB,MAAwB,EACzC,SAAiB,EACjB,cAAwC,EAAE;QAFzB,WAAM,GAAN,MAAM,CAAkB;QAIzC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,8BAA8B,CAAC,MAAM,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,+EAA+E;YAC/E,0DAA0D;YAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAA;YACrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACrE,mEAAmE;YACnE,wEAAwE;YACxE,uEAAuE;YACvE,6CAA6C;YAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;YAC/E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;QACxD,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAA6B;QACpC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { BlobStorageAdapter } from '@elytracms/persistence';
|
|
2
|
+
import { queryRef, mutationRef } from './convex-client';
|
|
3
|
+
/**
|
|
4
|
+
* The minimal structural slice of `ConvexHttpClient` the blob adapter needs.
|
|
5
|
+
* Typed structurally so unit tests can substitute a recorded/mocked client
|
|
6
|
+
* without a live Convex deployment (EC-151).
|
|
7
|
+
*/
|
|
8
|
+
export interface ConvexFunctionCaller {
|
|
9
|
+
query(query: ReturnType<typeof queryRef>, args: Record<string, unknown>): Promise<unknown>;
|
|
10
|
+
mutation(mutation: ReturnType<typeof mutationRef>, args: Record<string, unknown>): Promise<unknown>;
|
|
11
|
+
}
|
|
12
|
+
/** Structured failure from a blob storage operation — never a silent loss. */
|
|
13
|
+
export declare class BlobStorageOperationError extends Error {
|
|
14
|
+
readonly operation: 'put' | 'store' | 'upload-url' | 'get' | 'resolve-url' | 'delete';
|
|
15
|
+
constructor(operation: 'put' | 'store' | 'upload-url' | 'get' | 'resolve-url' | 'delete', message: string);
|
|
16
|
+
}
|
|
17
|
+
export interface ConvexBlobStorageOptions {
|
|
18
|
+
/** Injectable fetch for tests; defaults to the global. */
|
|
19
|
+
fetchImpl?: typeof fetch;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Convex file storage implementation of the EC-133 {@link BlobStorageAdapter}
|
|
23
|
+
* (EC-151). Keys are Convex storage ids, minted by Convex itself — so uploads
|
|
24
|
+
* go through {@link store} (server-proxied) or {@link createUploadUrl} +
|
|
25
|
+
* client-direct POST, and {@link put} (caller-chosen keys) is unsupported.
|
|
26
|
+
* All storage access flows through the Convex functions in
|
|
27
|
+
* `apps/builder/convex/assets.ts`; UI code never touches storage directly.
|
|
28
|
+
*/
|
|
29
|
+
export declare class ConvexBlobStorage implements BlobStorageAdapter {
|
|
30
|
+
private readonly client;
|
|
31
|
+
/** Last-resolved serve URLs, so the synchronous `url()` contract stays useful. */
|
|
32
|
+
private readonly urlCache;
|
|
33
|
+
private readonly fetchImpl;
|
|
34
|
+
constructor(client: ConvexFunctionCaller, options?: ConvexBlobStorageOptions);
|
|
35
|
+
/** Mint a short-lived Convex upload URL the browser POSTs bytes to. */
|
|
36
|
+
createUploadUrl(): Promise<string>;
|
|
37
|
+
/** Upload bytes via the Convex upload URL; returns the Convex-assigned storage id. */
|
|
38
|
+
store(data: Uint8Array, contentType?: string): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Unsupported: Convex file storage assigns its own keys, so a caller-chosen
|
|
41
|
+
* `key` cannot be honored. Use {@link store} or {@link createUploadUrl}.
|
|
42
|
+
* Throwing a structured error here is intentional — silently storing the
|
|
43
|
+
* bytes under a *different* key would be a silent data loss.
|
|
44
|
+
*/
|
|
45
|
+
put(_key: string, _data: Uint8Array, _contentType?: string): Promise<void>;
|
|
46
|
+
get(key: string): Promise<Uint8Array | undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* Synchronous locator per the adapter contract. Returns the last serve URL
|
|
49
|
+
* this session resolved for `key`, falling back to an opaque `convex://`
|
|
50
|
+
* locator until {@link resolveUrl} has run (the metadata record's persisted
|
|
51
|
+
* `url` field is the durable source for delivery).
|
|
52
|
+
*/
|
|
53
|
+
url(key: string): string;
|
|
54
|
+
resolveUrl(key: string): Promise<string | undefined>;
|
|
55
|
+
has(key: string): Promise<boolean>;
|
|
56
|
+
delete(key: string): Promise<void>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { queryRef, mutationRef } from './convex-client';
|
|
2
|
+
/** Structured failure from a blob storage operation — never a silent loss. */
|
|
3
|
+
export class BlobStorageOperationError extends Error {
|
|
4
|
+
operation;
|
|
5
|
+
constructor(operation, message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.operation = operation;
|
|
8
|
+
this.name = 'BlobStorageOperationError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Convex file storage implementation of the EC-133 {@link BlobStorageAdapter}
|
|
13
|
+
* (EC-151). Keys are Convex storage ids, minted by Convex itself — so uploads
|
|
14
|
+
* go through {@link store} (server-proxied) or {@link createUploadUrl} +
|
|
15
|
+
* client-direct POST, and {@link put} (caller-chosen keys) is unsupported.
|
|
16
|
+
* All storage access flows through the Convex functions in
|
|
17
|
+
* `apps/builder/convex/assets.ts`; UI code never touches storage directly.
|
|
18
|
+
*/
|
|
19
|
+
export class ConvexBlobStorage {
|
|
20
|
+
client;
|
|
21
|
+
/** Last-resolved serve URLs, so the synchronous `url()` contract stays useful. */
|
|
22
|
+
urlCache = new Map();
|
|
23
|
+
fetchImpl;
|
|
24
|
+
constructor(client, options = {}) {
|
|
25
|
+
this.client = client;
|
|
26
|
+
this.fetchImpl = options.fetchImpl ?? ((...args) => globalThis.fetch(...args));
|
|
27
|
+
}
|
|
28
|
+
/** Mint a short-lived Convex upload URL the browser POSTs bytes to. */
|
|
29
|
+
async createUploadUrl() {
|
|
30
|
+
const url = await this.client.mutation(mutationRef('assets:generateUploadUrl'), {});
|
|
31
|
+
if (typeof url !== 'string' || url.length === 0) {
|
|
32
|
+
throw new BlobStorageOperationError('upload-url', 'Convex did not return an upload URL.');
|
|
33
|
+
}
|
|
34
|
+
return url;
|
|
35
|
+
}
|
|
36
|
+
/** Upload bytes via the Convex upload URL; returns the Convex-assigned storage id. */
|
|
37
|
+
async store(data, contentType) {
|
|
38
|
+
const uploadUrl = await this.createUploadUrl();
|
|
39
|
+
const response = await this.fetchImpl(uploadUrl, {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
headers: contentType ? { 'Content-Type': contentType } : {},
|
|
42
|
+
// Copy into a fresh ArrayBuffer-backed view so BodyInit accepts it.
|
|
43
|
+
body: Uint8Array.from(data),
|
|
44
|
+
});
|
|
45
|
+
if (!response.ok) {
|
|
46
|
+
throw new BlobStorageOperationError('store', `Convex upload failed with HTTP ${response.status}.`);
|
|
47
|
+
}
|
|
48
|
+
const payload = (await response.json());
|
|
49
|
+
if (typeof payload.storageId !== 'string' || payload.storageId.length === 0) {
|
|
50
|
+
throw new BlobStorageOperationError('store', 'Convex upload response had no storageId.');
|
|
51
|
+
}
|
|
52
|
+
return payload.storageId;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Unsupported: Convex file storage assigns its own keys, so a caller-chosen
|
|
56
|
+
* `key` cannot be honored. Use {@link store} or {@link createUploadUrl}.
|
|
57
|
+
* Throwing a structured error here is intentional — silently storing the
|
|
58
|
+
* bytes under a *different* key would be a silent data loss.
|
|
59
|
+
*/
|
|
60
|
+
async put(_key, _data, _contentType) {
|
|
61
|
+
throw new BlobStorageOperationError('put', 'Convex file storage assigns its own keys; use store() or createUploadUrl().');
|
|
62
|
+
}
|
|
63
|
+
async get(key) {
|
|
64
|
+
const url = await this.resolveUrl(key);
|
|
65
|
+
if (!url)
|
|
66
|
+
return undefined;
|
|
67
|
+
const response = await this.fetchImpl(url);
|
|
68
|
+
if (!response.ok)
|
|
69
|
+
return undefined;
|
|
70
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Synchronous locator per the adapter contract. Returns the last serve URL
|
|
74
|
+
* this session resolved for `key`, falling back to an opaque `convex://`
|
|
75
|
+
* locator until {@link resolveUrl} has run (the metadata record's persisted
|
|
76
|
+
* `url` field is the durable source for delivery).
|
|
77
|
+
*/
|
|
78
|
+
url(key) {
|
|
79
|
+
return this.urlCache.get(key) ?? `convex://storage/${key}`;
|
|
80
|
+
}
|
|
81
|
+
async resolveUrl(key) {
|
|
82
|
+
const url = await this.client.query(queryRef('assets:getServeUrl'), { storageKey: key });
|
|
83
|
+
if (typeof url === 'string' && url.length > 0) {
|
|
84
|
+
this.urlCache.set(key, url);
|
|
85
|
+
return url;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
async has(key) {
|
|
90
|
+
return (await this.resolveUrl(key)) !== undefined;
|
|
91
|
+
}
|
|
92
|
+
async delete(key) {
|
|
93
|
+
await this.client.mutation(mutationRef('assets:deleteBlob'), { storageKey: key });
|
|
94
|
+
this.urlCache.delete(key);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=convex-blob-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convex-blob-storage.js","sourceRoot":"","sources":["../../../src/lib/persistence/convex-blob-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ConvexHttpClient } from 'convex/browser';
|
|
2
|
+
export declare function createConvexClient(url: string): ConvexHttpClient;
|
|
3
|
+
/**
|
|
4
|
+
* One Convex client per deployment URL (EC-150, vision AD-8). The auth adapter
|
|
5
|
+
* sets the session JWT on it (`client.setAuth`) and the persistence adapter
|
|
6
|
+
* issues queries/mutations through it — sharing the *same instance per URL* is
|
|
7
|
+
* what makes the server-side guards see the authenticated caller. Keyed by URL
|
|
8
|
+
* so a project's deployment (wired in `elytra.config.ts`) selects its client;
|
|
9
|
+
* with a single local deployment this returns one shared instance, as before.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getConvexClient(url: string): ConvexHttpClient;
|
|
12
|
+
/**
|
|
13
|
+
* Build a typed-enough function reference by name (e.g. `cms:getSchema`) without
|
|
14
|
+
* depending on Convex's generated `api` object — keeps the adapter compiling in
|
|
15
|
+
* the app's typecheck before `npx convex dev` has generated `_generated/*`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function queryRef(name: string): import("convex/server").FunctionReference<"query", "public", any, any, string | undefined>;
|
|
18
|
+
export declare function mutationRef(name: string): import("convex/server").FunctionReference<"mutation", "public", any, any, string | undefined>;
|
|
19
|
+
export declare function actionRef(name: string): import("convex/server").FunctionReference<"action", "public", any, any, string | undefined>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ConvexHttpClient } from 'convex/browser';
|
|
2
|
+
import { makeFunctionReference } from 'convex/server';
|
|
3
|
+
// Mode/URL resolution lives in `backend-mode.ts` (EC-153): Convex is the
|
|
4
|
+
// default backend and there is no silent in-memory fallback when the URL is
|
|
5
|
+
// missing — use `resolveBackendConfig()` instead of probing env vars here.
|
|
6
|
+
export function createConvexClient(url) {
|
|
7
|
+
return new ConvexHttpClient(url);
|
|
8
|
+
}
|
|
9
|
+
const clientsByUrl = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* One Convex client per deployment URL (EC-150, vision AD-8). The auth adapter
|
|
12
|
+
* sets the session JWT on it (`client.setAuth`) and the persistence adapter
|
|
13
|
+
* issues queries/mutations through it — sharing the *same instance per URL* is
|
|
14
|
+
* what makes the server-side guards see the authenticated caller. Keyed by URL
|
|
15
|
+
* so a project's deployment (wired in `elytra.config.ts`) selects its client;
|
|
16
|
+
* with a single local deployment this returns one shared instance, as before.
|
|
17
|
+
*/
|
|
18
|
+
export function getConvexClient(url) {
|
|
19
|
+
let client = clientsByUrl.get(url);
|
|
20
|
+
if (!client) {
|
|
21
|
+
client = new ConvexHttpClient(url);
|
|
22
|
+
clientsByUrl.set(url, client);
|
|
23
|
+
}
|
|
24
|
+
return client;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build a typed-enough function reference by name (e.g. `cms:getSchema`) without
|
|
28
|
+
* depending on Convex's generated `api` object — keeps the adapter compiling in
|
|
29
|
+
* the app's typecheck before `npx convex dev` has generated `_generated/*`.
|
|
30
|
+
*/
|
|
31
|
+
export function queryRef(name) {
|
|
32
|
+
return makeFunctionReference(name);
|
|
33
|
+
}
|
|
34
|
+
export function mutationRef(name) {
|
|
35
|
+
return makeFunctionReference(name);
|
|
36
|
+
}
|
|
37
|
+
export function actionRef(name) {
|
|
38
|
+
return makeFunctionReference(name);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=convex-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convex-client.js","sourceRoot":"","sources":["../../../src/lib/persistence/convex-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAE3E,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAA;AAExD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAClC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,qBAAqB,CAAU,IAAI,CAAC,CAAA;AAC7C,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,qBAAqB,CAAa,IAAI,CAAC,CAAA;AAChD,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,qBAAqB,CAAW,IAAI,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PersistenceAdapter } from '@elytracms/persistence';
|
|
2
|
+
import type { StudioBackendMode } from './backend-mode';
|
|
3
|
+
/**
|
|
4
|
+
* Select the persistence backend (EC-153, vision AD-1). **Convex is the
|
|
5
|
+
* default**: a configured `VITE_CONVEX_URL` is required unless the explicit
|
|
6
|
+
* playground flag (`VITE_ELYTRA_MODE=playground`) opts into the deterministic,
|
|
7
|
+
* seeded in-memory adapter. There is **no automatic in-memory fallback** —
|
|
8
|
+
* missing configuration is a hard, descriptive error (the `BackendGate`
|
|
9
|
+
* renders it as a boot-error screen before any adapter is requested).
|
|
10
|
+
*
|
|
11
|
+
* EC-150: the Convex path uses the *shared* client so the auth adapter's
|
|
12
|
+
* session JWT (set via `client.setAuth`) authenticates every persistence call.
|
|
13
|
+
*/
|
|
14
|
+
export declare function selectPersistenceAdapter(): Promise<PersistenceAdapter>;
|
|
15
|
+
/**
|
|
16
|
+
* A stable key identifying the active backend (EC-179): the resolved deployment
|
|
17
|
+
* URL for the active project under Convex, or `playground`. The operations
|
|
18
|
+
* bootstrap caches one bundle per key, so switching to a project on a different
|
|
19
|
+
* deployment transparently selects (or builds) that backend's operations client.
|
|
20
|
+
*/
|
|
21
|
+
export declare function activeDeploymentKey(): string;
|
|
22
|
+
/**
|
|
23
|
+
* The active backend mode. Throws the same descriptive error as
|
|
24
|
+
* {@link selectPersistenceAdapter} when the studio is misconfigured — UI that
|
|
25
|
+
* only needs "is this the playground?" should use `isPlaygroundMode()`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function persistenceMode(): StudioBackendMode;
|
|
28
|
+
export { ConvexPersistenceAdapter } from './convex-adapter';
|
|
29
|
+
export { CONVEX_URL_ENV_VAR, DEV_LOGIN_ENV_VAR, MODE_ENV_VAR, PLAYGROUND_MODE, isDevAutoLoginActive, isPlaygroundMode, resolveBackendConfig, resolveDevAutoLogin, } from './backend-mode';
|
|
30
|
+
export type { DevAutoLoginCredentials, EnvRecord, StudioBackendConfig, StudioBackendMode, } from './backend-mode';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createSeededPersistenceAdapter } from '@elytracms/persistence';
|
|
2
|
+
import { resolveDeploymentCollections, resolveDeploymentProjectId, resolveDeploymentUrl, } from '../workspace';
|
|
3
|
+
import { getConvexClient } from './convex-client';
|
|
4
|
+
import { ConvexPersistenceAdapter } from './convex-adapter';
|
|
5
|
+
import { resolveBackendConfig } from './backend-mode';
|
|
6
|
+
/**
|
|
7
|
+
* Select the persistence backend (EC-153, vision AD-1). **Convex is the
|
|
8
|
+
* default**: a configured `VITE_CONVEX_URL` is required unless the explicit
|
|
9
|
+
* playground flag (`VITE_ELYTRA_MODE=playground`) opts into the deterministic,
|
|
10
|
+
* seeded in-memory adapter. There is **no automatic in-memory fallback** —
|
|
11
|
+
* missing configuration is a hard, descriptive error (the `BackendGate`
|
|
12
|
+
* renders it as a boot-error screen before any adapter is requested).
|
|
13
|
+
*
|
|
14
|
+
* EC-150: the Convex path uses the *shared* client so the auth adapter's
|
|
15
|
+
* session JWT (set via `client.setAuth`) authenticates every persistence call.
|
|
16
|
+
*/
|
|
17
|
+
export async function selectPersistenceAdapter() {
|
|
18
|
+
const config = resolveBackendConfig();
|
|
19
|
+
if (config.kind === 'convex') {
|
|
20
|
+
return new ConvexPersistenceAdapter(getConvexClient(resolveDeploymentUrl(config.url)), resolveDeploymentProjectId('aurora-marketing'),
|
|
21
|
+
// CMS collections are config-owned (EC-183, AD-11): inject the active
|
|
22
|
+
// project's collections so the adapter serves the schema from config (the
|
|
23
|
+
// backend has no `cmsSchemas` table).
|
|
24
|
+
resolveDeploymentCollections());
|
|
25
|
+
}
|
|
26
|
+
if (config.kind === 'playground') {
|
|
27
|
+
// EC-207: routes/redirects are config-sourced, never seeded to the backend —
|
|
28
|
+
// the playground adapter no longer seeds route documents.
|
|
29
|
+
return createSeededPersistenceAdapter();
|
|
30
|
+
}
|
|
31
|
+
throw new Error(config.detail);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A stable key identifying the active backend (EC-179): the resolved deployment
|
|
35
|
+
* URL for the active project under Convex, or `playground`. The operations
|
|
36
|
+
* bootstrap caches one bundle per key, so switching to a project on a different
|
|
37
|
+
* deployment transparently selects (or builds) that backend's operations client.
|
|
38
|
+
*/
|
|
39
|
+
export function activeDeploymentKey() {
|
|
40
|
+
const config = resolveBackendConfig();
|
|
41
|
+
if (config.kind === 'convex')
|
|
42
|
+
return resolveDeploymentUrl(config.url);
|
|
43
|
+
if (config.kind === 'playground')
|
|
44
|
+
return 'playground';
|
|
45
|
+
throw new Error(config.detail);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The active backend mode. Throws the same descriptive error as
|
|
49
|
+
* {@link selectPersistenceAdapter} when the studio is misconfigured — UI that
|
|
50
|
+
* only needs "is this the playground?" should use `isPlaygroundMode()`.
|
|
51
|
+
*/
|
|
52
|
+
export function persistenceMode() {
|
|
53
|
+
const config = resolveBackendConfig();
|
|
54
|
+
if (config.kind === 'misconfigured')
|
|
55
|
+
throw new Error(config.detail);
|
|
56
|
+
return config.kind;
|
|
57
|
+
}
|
|
58
|
+
export { ConvexPersistenceAdapter } from './convex-adapter';
|
|
59
|
+
export { CONVEX_URL_ENV_VAR, DEV_LOGIN_ENV_VAR, MODE_ENV_VAR, PLAYGROUND_MODE, isDevAutoLoginActive, isPlaygroundMode, resolveBackendConfig, resolveDevAutoLogin, } from './backend-mode';
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AAEvE,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGrD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,wBAAwB,CACjC,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACjD,0BAA0B,CAAC,kBAAkB,CAAC;QAC9C,sEAAsE;QACtE,0EAA0E;QAC1E,sCAAsC;QACtC,4BAA4B,EAAE,CAC/B,CAAA;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,6EAA6E;QAC7E,0DAA0D;QAC1D,OAAO,8BAA8B,EAAE,CAAA;IACzC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACrE,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,CAAA;IACrD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IACrC,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnE,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IssueCode, ConditionOperator } from '@elytracms/project-graph';
|
|
2
|
+
import type { CmsIssueCode } from '@elytracms/cms-core';
|
|
3
|
+
import type { OperationErrorCode } from '@elytracms/operations';
|
|
4
|
+
import type { ComponentManifest } from '@elytracms/component-registry';
|
|
5
|
+
/** Plain-language title for a graph validation issue code. */
|
|
6
|
+
export declare function graphIssueLabel(code: IssueCode): string;
|
|
7
|
+
/** Plain-language title for a CMS validation issue code. */
|
|
8
|
+
export declare function cmsIssueLabel(code: CmsIssueCode): string;
|
|
9
|
+
/** Plain-language title for an operation failure code. */
|
|
10
|
+
export declare function operationErrorLabel(code: OperationErrorCode): string;
|
|
11
|
+
/** Friendly name for a project export target (`nextjs` → `Next.js`). */
|
|
12
|
+
export declare function exportTargetLabel(target: string): string;
|
|
13
|
+
/** Plain-language label for a condition operator (`gte` → `At least`). */
|
|
14
|
+
export declare function conditionOperatorLabel(operator: ConditionOperator): string;
|
|
15
|
+
/** The leaf of a component id, namespace stripped (`base.primitives.Heading` → `Heading`). */
|
|
16
|
+
export declare function componentLeafId(componentId: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* The human display name of a component for editor-facing surfaces: the
|
|
19
|
+
* manifest's authored `title` when present, else the humanized leaf of its id
|
|
20
|
+
* (`base.primitives.Heading` → `Heading`, `project.MarketingHero` → `Marketing hero`).
|
|
21
|
+
* Never the raw namespaced id.
|
|
22
|
+
*/
|
|
23
|
+
export declare function componentDisplayName(componentId: string, manifest?: ComponentManifest | undefined): string;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { humanizeName } from '../utils';
|
|
2
|
+
/**
|
|
3
|
+
* Persona-aware labels (EC-192 item 2, Milestone B promise).
|
|
4
|
+
*
|
|
5
|
+
* A non-technical editor must never see a manifest/binding/path-token/validation
|
|
6
|
+
* identifier on — or one click off — the editor path. The engine speaks in stable
|
|
7
|
+
* machine codes (`issueCodeSchema`, `cmsIssueCodeSchema`, `operationErrorCodeSchema`)
|
|
8
|
+
* and machine ids (`base.primitives.Heading`, `r-blog-slug-en`); this module is the
|
|
9
|
+
* single translation layer the editor-facing surfaces route through.
|
|
10
|
+
*
|
|
11
|
+
* The maps are exhaustive `Record<…Code, string>` over the Zod enums, so adding a
|
|
12
|
+
* code in `@elytracms/project-graph`, `@elytracms/cms-core`, or `@elytracms/operations`
|
|
13
|
+
* fails typecheck here until it is given an editor-facing label — the persona
|
|
14
|
+
* boundary cannot silently regress. Engineers keep the raw code: every surface that
|
|
15
|
+
* shows a label also carries the code in a `title=`/`data-*` attribute (inspectable
|
|
16
|
+
* via hover/devtools, never rendered as visible copy).
|
|
17
|
+
*/
|
|
18
|
+
const GRAPH_ISSUE_LABELS = {
|
|
19
|
+
'invalid-component-name': 'Invalid component',
|
|
20
|
+
'unknown-component': 'Unknown component',
|
|
21
|
+
'duplicate-node-id': 'Duplicate item',
|
|
22
|
+
'unknown-prop': 'Unknown setting',
|
|
23
|
+
'invalid-prop': 'Invalid setting',
|
|
24
|
+
'binding-not-allowed': 'Data not allowed here',
|
|
25
|
+
'unresolved-binding': 'Missing data',
|
|
26
|
+
'missing-required-slot': 'Missing content',
|
|
27
|
+
'unknown-slot': 'Unknown content area',
|
|
28
|
+
'forbidden-component': 'Not allowed here',
|
|
29
|
+
'server-only-component': 'Not available in the editor',
|
|
30
|
+
'unknown-layout': 'Unknown layout',
|
|
31
|
+
'route-conflict': 'Conflicting URL',
|
|
32
|
+
'invalid-container-direction': 'Invalid layout',
|
|
33
|
+
'invalid-container-alignment': 'Invalid alignment',
|
|
34
|
+
'invalid-container-gap': 'Invalid spacing',
|
|
35
|
+
'invalid-container-columns': 'Invalid columns',
|
|
36
|
+
'invalid-container-responsive': 'Invalid responsive setting',
|
|
37
|
+
};
|
|
38
|
+
const CMS_ISSUE_LABELS = {
|
|
39
|
+
'duplicate-collection': 'Duplicate collection',
|
|
40
|
+
'duplicate-field': 'Duplicate field',
|
|
41
|
+
'unknown-collection': 'Unknown collection',
|
|
42
|
+
'invalid-collection-config': 'Invalid collection setup',
|
|
43
|
+
'invalid-field-config': 'Invalid field setup',
|
|
44
|
+
'missing-required-field': 'Missing required field',
|
|
45
|
+
'invalid-field-value': 'Invalid value',
|
|
46
|
+
'unknown-relation-target': 'Missing reference',
|
|
47
|
+
'unpublished-relation-target': 'Unpublished reference',
|
|
48
|
+
'cardinality-violation': 'Wrong number of values',
|
|
49
|
+
'unknown-asset': 'Missing asset',
|
|
50
|
+
'duplicate-document': 'Duplicate entry',
|
|
51
|
+
'unknown-locale': 'Unknown language',
|
|
52
|
+
'missing-localized-value': 'Missing translation',
|
|
53
|
+
'route-conflict': 'Conflicting URL',
|
|
54
|
+
'redirect-loop': 'Redirect loop',
|
|
55
|
+
'unknown-route-target': 'Missing page',
|
|
56
|
+
'hierarchy-cycle': 'Page nesting loop',
|
|
57
|
+
'unknown-version': 'Unknown version',
|
|
58
|
+
};
|
|
59
|
+
const OPERATION_ERROR_LABELS = {
|
|
60
|
+
validation: "Couldn't save",
|
|
61
|
+
'not-found': 'Not found',
|
|
62
|
+
conflict: 'Already exists',
|
|
63
|
+
'backend-unavailable': 'Connection problem',
|
|
64
|
+
unauthorized: 'Not allowed',
|
|
65
|
+
unknown: 'Something went wrong',
|
|
66
|
+
};
|
|
67
|
+
const EXPORT_TARGET_LABELS = {
|
|
68
|
+
nextjs: 'Next.js',
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Plain-language labels for condition operators. Exhaustive over
|
|
72
|
+
* `conditionOperatorSchema` — a new operator fails typecheck here until it has an
|
|
73
|
+
* editor-facing label. The raw operator (`eq`, `gte`, …) is a machine token an
|
|
74
|
+
* editor must never read in the inspector.
|
|
75
|
+
*/
|
|
76
|
+
const CONDITION_OPERATOR_LABELS = {
|
|
77
|
+
truthy: 'Is set',
|
|
78
|
+
exists: 'Exists',
|
|
79
|
+
eq: 'Equals',
|
|
80
|
+
neq: 'Does not equal',
|
|
81
|
+
gt: 'Greater than',
|
|
82
|
+
gte: 'At least',
|
|
83
|
+
lt: 'Less than',
|
|
84
|
+
lte: 'At most',
|
|
85
|
+
};
|
|
86
|
+
/** Plain-language title for a graph validation issue code. */
|
|
87
|
+
export function graphIssueLabel(code) {
|
|
88
|
+
return GRAPH_ISSUE_LABELS[code];
|
|
89
|
+
}
|
|
90
|
+
/** Plain-language title for a CMS validation issue code. */
|
|
91
|
+
export function cmsIssueLabel(code) {
|
|
92
|
+
return CMS_ISSUE_LABELS[code];
|
|
93
|
+
}
|
|
94
|
+
/** Plain-language title for an operation failure code. */
|
|
95
|
+
export function operationErrorLabel(code) {
|
|
96
|
+
return OPERATION_ERROR_LABELS[code] ?? OPERATION_ERROR_LABELS.unknown;
|
|
97
|
+
}
|
|
98
|
+
/** Friendly name for a project export target (`nextjs` → `Next.js`). */
|
|
99
|
+
export function exportTargetLabel(target) {
|
|
100
|
+
return EXPORT_TARGET_LABELS[target] ?? humanizeName(target);
|
|
101
|
+
}
|
|
102
|
+
/** Plain-language label for a condition operator (`gte` → `At least`). */
|
|
103
|
+
export function conditionOperatorLabel(operator) {
|
|
104
|
+
return CONDITION_OPERATOR_LABELS[operator];
|
|
105
|
+
}
|
|
106
|
+
/** The leaf of a component id, namespace stripped (`base.primitives.Heading` → `Heading`). */
|
|
107
|
+
export function componentLeafId(componentId) {
|
|
108
|
+
const dot = componentId.lastIndexOf('.');
|
|
109
|
+
return dot === -1 ? componentId : componentId.slice(dot + 1);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The human display name of a component for editor-facing surfaces: the
|
|
113
|
+
* manifest's authored `title` when present, else the humanized leaf of its id
|
|
114
|
+
* (`base.primitives.Heading` → `Heading`, `project.MarketingHero` → `Marketing hero`).
|
|
115
|
+
* Never the raw namespaced id.
|
|
116
|
+
*/
|
|
117
|
+
export function componentDisplayName(componentId, manifest) {
|
|
118
|
+
if (manifest?.title)
|
|
119
|
+
return manifest.title;
|
|
120
|
+
return humanizeName(componentLeafId(componentId));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../src/lib/persona/labels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section-rail collapse preference (EC-214). The studio's vertical section rail
|
|
3
|
+
* is user-collapsible; the choice persists across sessions so the shell opens
|
|
4
|
+
* the way the user left it. Best-effort like the theme preference: storage may be
|
|
5
|
+
* unavailable, in which case the rail simply defaults to expanded each session.
|
|
6
|
+
*/
|
|
7
|
+
export declare const RAIL_STORAGE_KEY = "elytra-rail-collapsed";
|
|
8
|
+
/** Read the persisted collapse preference; expanded (false) when unset/unavailable. */
|
|
9
|
+
export declare function readRailCollapsed(): boolean;
|
|
10
|
+
/** Persist the collapse preference (best-effort; storage may be unavailable). */
|
|
11
|
+
export declare function storeRailCollapsed(collapsed: boolean): void;
|
package/dist/lib/rail.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section-rail collapse preference (EC-214). The studio's vertical section rail
|
|
3
|
+
* is user-collapsible; the choice persists across sessions so the shell opens
|
|
4
|
+
* the way the user left it. Best-effort like the theme preference: storage may be
|
|
5
|
+
* unavailable, in which case the rail simply defaults to expanded each session.
|
|
6
|
+
*/
|
|
7
|
+
export const RAIL_STORAGE_KEY = 'elytra-rail-collapsed';
|
|
8
|
+
/** Read the persisted collapse preference; expanded (false) when unset/unavailable. */
|
|
9
|
+
export function readRailCollapsed() {
|
|
10
|
+
try {
|
|
11
|
+
return localStorage.getItem(RAIL_STORAGE_KEY) === '1';
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** Persist the collapse preference (best-effort; storage may be unavailable). */
|
|
18
|
+
export function storeRailCollapsed(collapsed) {
|
|
19
|
+
try {
|
|
20
|
+
localStorage.setItem(RAIL_STORAGE_KEY, collapsed ? '1' : '0');
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// ignore — preference simply won't persist this session
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=rail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rail.js","sourceRoot":"","sources":["../../src/lib/rail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AAEvD,uFAAuF;AACvF,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAA;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,kBAAkB,CAAC,SAAkB;IACnD,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;AACH,CAAC"}
|