@jxsuite/studio 6.1.2 → 8.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/README.md +5 -5
- package/dist/chunks/2020-5wtzce5g.js +4 -0
- package/dist/chunks/adapter-5tphg7xe.js +4 -0
- package/dist/chunks/add-new-flow-psym14sn.js +4 -0
- package/dist/chunks/cf-account-picker-haqazq5r.js +4 -0
- package/dist/chunks/cf-settings-h2wrh6hq.js +4 -0
- package/dist/chunks/{color-area-0fj8a4ga.js → color-area-6rbra5dy.js} +2 -2
- package/dist/chunks/{color-field-xch8kx2g.js → color-field-gy56c94g.js} +3 -3
- package/dist/chunks/color-m7r1vk54.js +4 -0
- package/dist/chunks/{color-slider-jxd8v350.js → color-slider-sqqdyf6c.js} +2 -2
- package/dist/chunks/{combobox-p0efwjke.js → combobox-72h32ejk.js} +3 -3
- package/dist/chunks/components-r22xca09.js +4 -0
- package/dist/chunks/content-source-mmppmcyg.js +4 -0
- package/dist/chunks/convert-to-repeater-he70fc2b.js +4 -0
- package/dist/chunks/editor-ccd9jwsa.js +4 -0
- package/dist/chunks/entry-commands-6qxz9e8p.js +4 -0
- package/dist/chunks/extension-sections-0egb88dm.js +4 -0
- package/dist/chunks/file-ops-qnab36ek.js +4 -0
- package/dist/chunks/files-rcn56qvm.js +4 -0
- package/dist/chunks/format-host-yxz0kjjs.js +4 -0
- package/dist/chunks/fs-events-d1qxq4z4.js +4 -0
- package/dist/chunks/grid-open-4z1g062t.js +4 -0
- package/dist/chunks/{grid-view-d2wq9ezg.js → grid-view-qg1b5eqx.js} +25 -25
- package/dist/chunks/{icons-pnfz478q.js → icons-63bjtbs7.js} +2 -2
- package/dist/chunks/{iframe-entry-jdcktez8.js → iframe-entry-2zggzajv.js} +4 -4
- package/dist/chunks/{iframe-entry-zap785cw.js → iframe-entry-76j8vwwx.js} +4 -4
- package/dist/chunks/iframe-entry-99nr5zfb.js +5 -0
- package/dist/chunks/{iframe-entry-x0ygf2yr.js → iframe-entry-pkgmcgp0.js} +4 -4
- package/dist/chunks/iframe-host-ssv7kyj0.js +4 -0
- package/dist/chunks/{index-zpjmzqfk.js → index-32eqzv1k.js} +3 -3
- package/dist/chunks/index-f0jn7nnp.js +4 -0
- package/dist/chunks/{javascript-m54mnwp6.js → javascript-pjp734q4.js} +3 -3
- package/dist/chunks/jsonMode-njkvsa02.js +13 -0
- package/dist/chunks/jx-validate-ttasrbh7.js +4 -0
- package/dist/chunks/layers-bgyr11tr.js +4 -0
- package/dist/chunks/layers-panel-7ez66zeq.js +4 -0
- package/dist/chunks/{listbox-e74qjyq6.js → listbox-c421cf8c.js} +2 -2
- package/dist/chunks/lit-html-v9gh687x.js +4 -0
- package/dist/chunks/media-library-sq468wts.js +4 -0
- package/dist/chunks/media-picker-shfe59pt.js +4 -0
- package/dist/chunks/{menu-n6yzswmy.js → menu-bdpzbfvs.js} +2 -2
- package/dist/chunks/{monaco-binding-7gx83x3r.js → monaco-binding-vq1hgnn0.js} +3 -3
- package/dist/chunks/monaco-buffer-3afgwvbp.js +4 -0
- package/dist/chunks/monaco-setup-xrd2cbkp.js +4 -0
- package/dist/chunks/notify-kzrjr3fv.js +4 -0
- package/dist/chunks/parse-v77xtwv7.js +4 -0
- package/dist/chunks/platform-7v4rtd7m.js +4 -0
- package/dist/chunks/popover-b89sfej7.js +4 -0
- package/dist/chunks/publish-panel-2z9gw8ee.js +4 -0
- package/dist/chunks/publish-quick-qx2455cj.js +4 -0
- package/dist/chunks/publish-workspace-wrc1dgwx.js +4 -0
- package/dist/chunks/quick-search-n0t0eqxb.js +4 -0
- package/dist/chunks/references-9547rg5s.js +4 -0
- package/dist/chunks/right-panel-wsgnr9pn.js +4 -0
- package/dist/chunks/source-control-kwktr9y6.js +4 -0
- package/dist/chunks/{split-n2gfpm5m.js → split-c9zfdgxf.js} +2 -2
- package/dist/chunks/studio-03ct6yfv.js +9 -0
- package/dist/chunks/studio-07rcfje3.js +5 -0
- package/dist/chunks/studio-3e54qh39.js +7 -0
- package/dist/chunks/studio-3exxhz5g.js +5 -0
- package/dist/chunks/studio-3q40e3rj.js +5 -0
- package/dist/chunks/studio-3qeh9t0h.js +6 -0
- package/dist/chunks/studio-3qqjeep5.js +6 -0
- package/dist/chunks/studio-43sd2mam.js +4 -0
- package/dist/chunks/studio-4hp8pkyt.js +5 -0
- package/dist/chunks/studio-58xg6j2q.js +9 -0
- package/dist/chunks/studio-5g0rprdt.js +7 -0
- package/dist/chunks/{studio-2j1cb95x.js → studio-6m380wp7.js} +4 -4
- package/dist/chunks/studio-80jyh1xh.js +4 -0
- package/dist/chunks/studio-83mk4bgg.js +9 -0
- package/dist/chunks/{studio-v0jzqdjm.js → studio-881z1xrx.js} +4 -4
- package/dist/chunks/studio-8m0y2qe7.js +5 -0
- package/dist/chunks/{studio-d81xfh1g.js → studio-8tr6cfrc.js} +4 -4
- package/dist/chunks/studio-8vcvfs7r.js +6 -0
- package/dist/chunks/studio-9tmebf0s.js +5 -0
- package/dist/chunks/studio-a2bvaptz.js +5 -0
- package/dist/chunks/studio-b7y5mr30.js +5 -0
- package/dist/chunks/studio-bavb31r0.js +5 -0
- package/dist/chunks/{studio-dgz8d0c1.js → studio-bbe4c90a.js} +4 -4
- package/dist/chunks/studio-c05wdnt3.js +5 -0
- package/dist/chunks/studio-ccv2svc6.js +5 -0
- package/dist/chunks/studio-d5grtb9e.js +16 -0
- package/dist/chunks/studio-df0baea9.js +5 -0
- package/dist/chunks/studio-dgk4dqtx.js +7 -0
- package/dist/chunks/studio-e1g64q43.js +5 -0
- package/dist/chunks/studio-ed1hp6zf.js +6 -0
- package/dist/chunks/studio-ed3xx40h.js +7 -0
- package/dist/chunks/studio-f14e1zdj.js +5 -0
- package/dist/chunks/studio-fbhxxc5f.js +5 -0
- package/dist/chunks/studio-fyh0jc96.js +5 -0
- package/dist/chunks/studio-gcxk20n7.js +5 -0
- package/dist/chunks/studio-jaaz8ce9.js +5 -0
- package/dist/chunks/{studio-90pq9km1.js → studio-jcnsdaep.js} +4 -4
- package/dist/chunks/studio-jsgf2q5k.js +7 -0
- package/dist/chunks/{studio-0q988f9w.js → studio-k3xxbagr.js} +3 -3
- package/dist/chunks/{studio-5ve6bbep.js → studio-k7evxqh4.js} +4 -4
- package/dist/chunks/studio-kt3pjkwd.js +5 -0
- package/dist/chunks/studio-m8g16bgz.js +5 -0
- package/dist/chunks/studio-mn0476ag.js +5 -0
- package/dist/chunks/studio-mx1smyq0.js +5 -0
- package/dist/chunks/studio-n0c5h6mf.js +5 -0
- package/dist/chunks/{studio-485046te.js → studio-nh6d342n.js} +7 -7
- package/dist/chunks/studio-nqxqf8p2.js +4 -0
- package/dist/chunks/studio-p4nrkvqr.js +5 -0
- package/dist/chunks/{studio-1fxkaaea.js → studio-pbxa5fpc.js} +4 -4
- package/dist/chunks/studio-pgmvdv7z.js +7 -0
- package/dist/chunks/studio-ph84avkf.js +5 -0
- package/dist/chunks/{studio-tq0rtfwj.js → studio-q0mvbaq6.js} +4 -4
- package/dist/chunks/studio-q0tccd43.js +5 -0
- package/dist/chunks/studio-q7rtx6zq.js +14 -0
- package/dist/chunks/{studio-a3g98wjr.js → studio-qgh13jtz.js} +4 -4
- package/dist/chunks/studio-qmn1xc24.js +5 -0
- package/dist/chunks/studio-qwdqwkj0.js +5 -0
- package/dist/chunks/studio-r5qy30vx.js +5 -0
- package/dist/chunks/studio-rj9eamf8.js +5 -0
- package/dist/chunks/studio-rptgsk96.js +5 -0
- package/dist/chunks/studio-rthyg42z.js +928 -0
- package/dist/chunks/studio-s19tp1xr.js +5 -0
- package/dist/chunks/studio-s32578pn.js +5 -0
- package/dist/chunks/studio-svb7yyve.js +5 -0
- package/dist/chunks/studio-syreb644.js +5 -0
- package/dist/chunks/studio-tf9jryb1.js +10 -0
- package/dist/chunks/studio-tfkznv39.js +5 -0
- package/dist/chunks/studio-tft6r105.js +5 -0
- package/dist/chunks/studio-txf2kysx.js +5 -0
- package/dist/chunks/studio-v8867ddv.js +12 -0
- package/dist/chunks/studio-vxq7fcvv.js +5 -0
- package/dist/chunks/studio-w4rz9hdk.js +5 -0
- package/dist/chunks/studio-wbcjbhy1.js +9 -0
- package/dist/chunks/studio-wc649wss.js +5 -0
- package/dist/chunks/studio-wys23mxz.js +5 -0
- package/dist/chunks/studio-x1x167jh.js +5 -0
- package/dist/chunks/studio-x9hsze61.js +5 -0
- package/dist/chunks/studio-y0n7yxea.js +9 -0
- package/dist/chunks/studio-y3ahhdpx.js +5 -0
- package/dist/chunks/studio-z97c48fk.js +5 -0
- package/dist/chunks/studio-zat62m0c.js +5 -0
- package/dist/chunks/studio-zcd2e7yz.js +5 -0
- package/dist/chunks/studio-zz9qe3rw.js +64 -0
- package/dist/chunks/toast-1gv0h53h.js +4 -0
- package/dist/chunks/{toast-host-ke5z4ng7.js → toast-host-1yg5ar8d.js} +3 -3
- package/dist/chunks/{tooltip-5v8ngwj2.js → tooltip-yypz28gq.js} +3 -3
- package/dist/chunks/{tree-mdq3v5cw.js → tree-9xa4hm7n.js} +2 -2
- package/dist/chunks/tsMode-epyfz1hv.js +14 -0
- package/dist/chunks/workspace-dz7nxfhv.js +4 -0
- package/dist/chunks/workspace-home-xsd7hkjw.js +4 -0
- package/dist/chunks/{ws-client-nze0k6mv.js → ws-client-bv552sfx.js} +3 -3
- package/dist/iframe-entry.js +20 -16
- package/dist/manifest.json +77 -63
- package/dist/studio.js +103 -104
- package/dist/workers/ts.worker.js +3 -3
- package/package.json +12 -11
- package/src/browse/component-examples.ts +272 -0
- package/src/browse/library-commands.ts +64 -104
- package/src/browse/library-layouts.ts +263 -49
- package/src/browse/library-model.ts +181 -133
- package/src/browse/library-pane.ts +738 -446
- package/src/browse/library-preview.ts +149 -19
- package/src/browse/library-source.ts +308 -41
- package/src/browse/preview-root.ts +78 -0
- package/src/browse/preview-style.ts +155 -0
- package/src/canvas/asset-refs.ts +16 -1
- package/src/canvas/canvas-live-render.ts +222 -30
- package/src/canvas/canvas-origin.ts +37 -12
- package/src/canvas/canvas-page-context.ts +112 -0
- package/src/canvas/canvas-render.ts +113 -107
- package/src/canvas/canvas-utils.ts +57 -12
- package/src/canvas/iframe-drop.ts +107 -0
- package/src/canvas/iframe-entry.ts +24 -12
- package/src/canvas/iframe-host.ts +134 -62
- package/src/canvas/iframe-keys.ts +11 -0
- package/src/canvas/iframe-patch.ts +8 -7
- package/src/canvas/iframe-protocol.ts +24 -5
- package/src/canvas/iframe-render.ts +48 -1
- package/src/canvas/iframe-subtree.ts +5 -2
- package/src/canvas/npm-modules.ts +22 -0
- package/src/canvas/preview-navigate.ts +16 -0
- package/src/canvas/repeater-sources.ts +200 -0
- package/src/canvas/stage-scrollbar.ts +5 -1
- package/src/canvas/surface-registry.ts +6 -0
- package/src/commands/app-commands.ts +16 -6
- package/src/commands/budget.ts +10 -8
- package/src/commands/context.ts +35 -10
- package/src/commands/defaults.ts +69 -45
- package/src/commands/keymap.ts +9 -0
- package/src/commands/levels.ts +11 -5
- package/src/commands/live-context.ts +2 -0
- package/src/commands/registry.ts +10 -1
- package/src/content/collection-match.ts +6 -5
- package/src/content/collection-pages.ts +412 -0
- package/src/content/content-collections.ts +270 -0
- package/src/content/entry-commands.ts +51 -60
- package/src/content/entry-editor.ts +111 -18
- package/src/content/entry-fields.ts +13 -1
- package/src/content/entry-inspector.ts +225 -0
- package/src/content/entry-model.ts +17 -3
- package/src/content/entry-open.ts +80 -0
- package/src/content/entry-summaries.ts +440 -0
- package/src/content/file-record-ids.ts +80 -0
- package/src/content/file-records.ts +125 -0
- package/src/content/page-summaries.ts +129 -0
- package/src/content/record-entry.ts +201 -0
- package/src/content/writing-banner.ts +177 -0
- package/src/create/add-new-commands.ts +185 -0
- package/src/create/add-new-flow.ts +1116 -0
- package/src/create/add-new.ts +1014 -0
- package/src/create/element-name.ts +121 -0
- package/src/editor/convert-to-component.ts +67 -43
- package/src/editor/file-drop-action.ts +9 -1
- package/src/editor/inline-edit-apply.ts +44 -0
- package/src/editor/inline-edit.ts +10 -0
- package/src/editor/insert-component.ts +91 -0
- package/src/editor/insert-zone-action.ts +13 -4
- package/src/editor/shortcuts.ts +44 -22
- package/src/editor/slash-menu.ts +51 -8
- package/src/files/components.ts +74 -10
- package/src/files/file-ops.ts +15 -5
- package/src/files/files.ts +164 -150
- package/src/files/fs-events.ts +18 -7
- package/src/files/media-meta.ts +95 -1
- package/src/files/media-types.ts +55 -0
- package/src/files/media-upload.ts +209 -52
- package/src/files/new-file-name.ts +156 -0
- package/src/files/serialize-document.ts +13 -3
- package/src/format/format-host.ts +15 -0
- package/src/github/github-auth.ts +2 -2
- package/src/github/github-publish.ts +4 -3
- package/src/grid/grid-controller.ts +5 -1
- package/src/grid/grid-open.ts +0 -27
- package/src/grid/grid-panel.ts +54 -2
- package/src/grid/grid-reveal.ts +34 -0
- package/src/grid/grid-source.ts +3 -25
- package/src/grid/grid-view.ts +31 -6
- package/src/grid/sources/content-source.ts +75 -7
- package/src/grid/tabulator-tables.d.ts +6 -0
- package/src/hosting/document.ts +2 -2
- package/src/i18n/i18n-commands.ts +2 -1
- package/src/media/media-commands.ts +181 -0
- package/src/media/media-library-model.ts +232 -0
- package/src/media/media-library.ts +1283 -0
- package/src/media/media-pane.ts +47 -19
- package/src/packages/pull-package-sync.ts +1 -1
- package/src/panels/activity-panel.ts +21 -5
- package/src/panels/ai-chat/chat-markdown.ts +8 -8
- package/src/panels/block-action-bar.ts +11 -11
- package/src/panels/canvas-dnd-bridge.ts +5 -2
- package/src/panels/chat-panel.ts +6 -6
- package/src/panels/collections-panel.ts +306 -0
- package/src/panels/component-preview.ts +35 -13
- package/src/panels/data-explorer.ts +1 -1
- package/src/panels/data-grid.ts +4 -0
- package/src/panels/dnd.ts +17 -30
- package/src/panels/elements-panel.ts +9 -2
- package/src/panels/empty-state.ts +2 -2
- package/src/panels/formula-workspace.ts +2 -3
- package/src/panels/frontmatter-fields.ts +9 -9
- package/src/panels/git-diff-open.ts +9 -5
- package/src/panels/head-panel.ts +369 -103
- package/src/panels/i18n-panel.ts +11 -10
- package/src/panels/imports-panel.ts +2 -0
- package/src/panels/jump-bar.ts +27 -2
- package/src/panels/layers-panel.ts +36 -30
- package/src/panels/left-panel.ts +22 -8
- package/src/panels/navigator-panels.ts +23 -11
- package/src/panels/pane-context.ts +111 -29
- package/src/panels/pane-grid.ts +6 -6
- package/src/panels/panel-registry.ts +14 -9
- package/src/panels/properties-panel.ts +7 -3
- package/src/panels/right-panel.ts +199 -43
- package/src/panels/seo-modal.ts +41 -108
- package/src/panels/settings-menu.ts +52 -50
- package/src/panels/settings-pane.ts +268 -162
- package/src/panels/signals-panel.ts +3 -4
- package/src/panels/site-model.ts +367 -0
- package/src/panels/site-panel.ts +638 -0
- package/src/panels/style-panel.ts +37 -3
- package/src/panels/stylebook-doc.ts +142 -10
- package/src/panels/stylebook-layers-panel.ts +39 -80
- package/src/panels/stylebook-panel.ts +47 -10
- package/src/panels/styles-panel.ts +327 -0
- package/src/panels/tab-strip.ts +109 -25
- package/src/platform.ts +1 -1
- package/src/platforms/cloud.ts +28 -1
- package/src/platforms/default-platform.ts +4 -4
- package/src/platforms/devserver.ts +51 -25
- package/src/publish/deploy-checklist.ts +12 -7
- package/src/publish/pages-service.ts +38 -14
- package/src/publish/publish-changes.ts +491 -0
- package/src/publish/publish-commands.ts +83 -18
- package/src/publish/publish-ids.ts +49 -0
- package/src/publish/publish-quick.ts +148 -0
- package/src/publish/publish-workspace.ts +926 -0
- package/src/publish/source-control.ts +907 -0
- package/src/services/automation.ts +16 -20
- package/src/services/cf-settings.ts +4 -4
- package/src/services/connection.ts +2 -2
- package/src/services/directory-picker.ts +2 -2
- package/src/services/references.ts +0 -0
- package/src/services/render-critic.ts +21 -2
- package/src/services/settings/definitions.ts +25 -14
- package/src/settings/contributed-section.ts +49 -10
- package/src/settings/css-vars-editor.ts +93 -27
- package/src/settings/developer-panels.ts +43 -0
- package/src/settings/extension-sections.ts +20 -2
- package/src/settings/general-settings.ts +91 -21
- package/src/settings/preferences-dialog.ts +8 -1
- package/src/settings/project-sections.ts +27 -10
- package/src/settings/schema-field-ui.ts +3 -1
- package/src/settings/section-registry.ts +116 -11
- package/src/settings/settings-dialog.ts +192 -0
- package/src/settings/settings-document.ts +182 -162
- package/src/shell.ts +467 -431
- package/src/site-context.ts +64 -10
- package/src/state.ts +28 -9
- package/src/studio.ts +194 -41
- package/src/style/project-styles.ts +34 -0
- package/src/style/stylebook-specimens.ts +89 -0
- package/src/style/stylebook-target.ts +26 -0
- package/src/style/tag-inheritance.ts +105 -0
- package/src/style/variables-focus.ts +61 -0
- package/src/style/variables-view.ts +235 -0
- package/src/surfaces/add-new.json +1482 -0
- package/src/surfaces/add-new.ts +325 -0
- package/src/surfaces/ai-chat.ts +2 -2
- package/src/surfaces/boot-failure.json +4 -3
- package/src/surfaces/bottom-dock.json +1 -1
- package/src/surfaces/canvas-stage.json +30 -19
- package/src/surfaces/canvas-stage.ts +5 -5
- package/src/surfaces/collections-panel.json +615 -0
- package/src/surfaces/collections-panel.ts +168 -0
- package/src/surfaces/commandbar.json +241 -96
- package/src/surfaces/commandbar.ts +134 -99
- package/src/surfaces/empty-state.json +1 -1
- package/src/surfaces/entry-editor.json +136 -0
- package/src/surfaces/entry-editor.ts +21 -0
- package/src/surfaces/entry-inspector.json +371 -0
- package/src/surfaces/entry-inspector.ts +143 -0
- package/src/surfaces/inspector-dock.json +162 -14
- package/src/surfaces/inspector-dock.ts +46 -19
- package/src/surfaces/library-pane.json +670 -437
- package/src/surfaces/library-pane.ts +94 -59
- package/src/surfaces/media-browser.json +62 -6
- package/src/surfaces/media-browser.ts +15 -1
- package/src/surfaces/media-field.json +1 -1
- package/src/surfaces/media-library.json +1586 -0
- package/src/surfaces/media-library.ts +282 -0
- package/src/surfaces/media-pick-dialog.json +71 -0
- package/src/surfaces/media-pick-dialog.ts +132 -0
- package/src/surfaces/menu.ts +18 -0
- package/src/surfaces/pane-context.json +144 -77
- package/src/surfaces/pane-context.ts +24 -0
- package/src/surfaces/panel-deploy-checklist.json +12 -6
- package/src/surfaces/panel-deploy-checklist.ts +3 -1
- package/src/surfaces/panel-page.json +72 -2
- package/src/surfaces/panel-page.ts +38 -7
- package/src/surfaces/panel-signals.json +1 -1
- package/src/surfaces/panel-signals.ts +5 -5
- package/src/surfaces/panel-stylebook-layers.json +71 -204
- package/src/surfaces/panel-stylebook-layers.ts +0 -21
- package/src/surfaces/preferences.json +120 -48
- package/src/surfaces/preferences.ts +8 -0
- package/src/surfaces/publish-quick.json +428 -0
- package/src/surfaces/publish-quick.ts +165 -0
- package/src/surfaces/publish-workspace.json +2892 -0
- package/src/surfaces/publish-workspace.ts +391 -0
- package/src/surfaces/rail.json +1 -159
- package/src/surfaces/rail.ts +18 -75
- package/src/surfaces/schema-form.json +10 -2
- package/src/surfaces/schema-form.ts +2 -0
- package/src/surfaces/seo.json +1 -1
- package/src/surfaces/settings-contributed.json +5 -5
- package/src/surfaces/settings-contributed.ts +18 -2
- package/src/surfaces/settings-css-vars.json +44 -36
- package/src/surfaces/settings-css-vars.ts +77 -4
- package/src/surfaces/settings-deploy.json +2 -15
- package/src/surfaces/settings-deploy.ts +1 -1
- package/src/surfaces/settings-dialog.json +51 -0
- package/src/surfaces/settings-dialog.ts +169 -0
- package/src/surfaces/settings-overview.json +3 -3
- package/src/surfaces/settings-overview.ts +9 -2
- package/src/surfaces/settings-pane.json +269 -46
- package/src/surfaces/settings-pane.ts +85 -24
- package/src/surfaces/shell.json +2 -1
- package/src/surfaces/site-panel.json +1029 -0
- package/src/surfaces/site-panel.ts +233 -0
- package/src/surfaces/slash-menu.json +63 -21
- package/src/surfaces/slash-menu.ts +23 -0
- package/src/surfaces/statusbar.ts +39 -15
- package/src/surfaces/styles-panel.json +735 -0
- package/src/surfaces/styles-panel.ts +195 -0
- package/src/surfaces/styles-variables.json +149 -0
- package/src/surfaces/styles-variables.ts +145 -0
- package/src/surfaces/tab-strip.json +4 -4
- package/src/surfaces/welcome.ts +1 -1
- package/src/surfaces/writing-banner.json +94 -0
- package/src/surfaces/writing-banner.ts +80 -0
- package/src/tabs/bare-repeaters.ts +101 -0
- package/src/tabs/tab.ts +47 -7
- package/src/types.ts +21 -26
- package/src/ui/form-controls.ts +47 -8
- package/src/ui/layers.ts +13 -0
- package/src/ui/media-picker.ts +284 -40
- package/src/ui/regions.ts +7 -6
- package/src/ui/schema-form.ts +259 -27
- package/src/ui/virtual-window.ts +26 -1
- package/src/utils/base64.ts +3 -3
- package/src/utils/edit-display.ts +322 -67
- package/src/utils/local-day.ts +18 -0
- package/src/workspace/pane-derive.ts +4 -4
- package/src/workspace/session.ts +28 -7
- package/src/workspace/tab-workspace.ts +137 -0
- package/src/workspace/workspace-back.ts +189 -0
- package/src/workspace/workspace-home.ts +133 -0
- package/src/workspace/workspace-ids.ts +129 -0
- package/src/workspace/workspace-switch.ts +372 -0
- package/src/workspace/workspace.ts +125 -11
- package/styles/shell-frame.css +30 -7
- package/styles/shell-frame.json +15 -3
- package/dist/chunks/2020-f2gkpy8d.js +0 -4
- package/dist/chunks/adapter-4912g339.js +0 -4
- package/dist/chunks/cf-account-picker-wccaenh6.js +0 -4
- package/dist/chunks/cf-settings-br6105tr.js +0 -4
- package/dist/chunks/color-28ksk2qm.js +0 -4
- package/dist/chunks/components-db68vsn7.js +0 -4
- package/dist/chunks/content-source-1449qesq.js +0 -4
- package/dist/chunks/convert-to-repeater-5h457egj.js +0 -4
- package/dist/chunks/editor-x9jn86a7.js +0 -4
- package/dist/chunks/entry-commands-may24cpt.js +0 -4
- package/dist/chunks/extension-sections-pvr14vxr.js +0 -4
- package/dist/chunks/file-ops-x9v54pcj.js +0 -4
- package/dist/chunks/files-j3knqf0s.js +0 -4
- package/dist/chunks/format-host-tyre2trb.js +0 -4
- package/dist/chunks/fs-events-64ma9htc.js +0 -4
- package/dist/chunks/git-panel-84ps5dex.js +0 -4
- package/dist/chunks/iframe-entry-fvbk89gm.js +0 -5
- package/dist/chunks/iframe-host-ck6vejt5.js +0 -4
- package/dist/chunks/index-b8xw3vy9.js +0 -4
- package/dist/chunks/jsonMode-w15cmrcm.js +0 -13
- package/dist/chunks/jx-validate-at3zn8wa.js +0 -4
- package/dist/chunks/layers-h4xp1pss.js +0 -4
- package/dist/chunks/layers-panel-m5hw1d7g.js +0 -4
- package/dist/chunks/lit-html-8t8t3dnr.js +0 -4
- package/dist/chunks/media-picker-2cweexc5.js +0 -4
- package/dist/chunks/menu-ynw13y0s.js +0 -4
- package/dist/chunks/monaco-buffer-qzxn567r.js +0 -4
- package/dist/chunks/monaco-setup-gxf6656g.js +0 -4
- package/dist/chunks/notify-cj5zbrs2.js +0 -4
- package/dist/chunks/parse-b7ddhr8m.js +0 -4
- package/dist/chunks/platform-3dfws9js.js +0 -4
- package/dist/chunks/popover-jt2gxmzs.js +0 -4
- package/dist/chunks/publish-panel-1gvxbj21.js +0 -4
- package/dist/chunks/quick-search-0dajrwqg.js +0 -4
- package/dist/chunks/references-49qgt404.js +0 -4
- package/dist/chunks/right-panel-jm1bwe53.js +0 -4
- package/dist/chunks/section-registry-6kwc4fky.js +0 -4
- package/dist/chunks/studio-0rt52vpq.js +0 -5
- package/dist/chunks/studio-18vgbhs5.js +0 -5
- package/dist/chunks/studio-24mccdrj.js +0 -5
- package/dist/chunks/studio-2eh507zk.js +0 -9
- package/dist/chunks/studio-2hcbccfv.js +0 -5
- package/dist/chunks/studio-2jbs3rxv.js +0 -5
- package/dist/chunks/studio-4h8k4dw9.js +0 -5
- package/dist/chunks/studio-5f6n18kx.js +0 -5
- package/dist/chunks/studio-5gthpky6.js +0 -5
- package/dist/chunks/studio-6ep3js6b.js +0 -9
- package/dist/chunks/studio-6wkmf3wz.js +0 -9
- package/dist/chunks/studio-841rf3cg.js +0 -5
- package/dist/chunks/studio-8gmwgheg.js +0 -5
- package/dist/chunks/studio-8qm0ep50.js +0 -5
- package/dist/chunks/studio-924p1tm1.js +0 -6
- package/dist/chunks/studio-a3shpz9y.js +0 -5
- package/dist/chunks/studio-amsbaaar.js +0 -6
- package/dist/chunks/studio-at5spjbc.js +0 -7
- package/dist/chunks/studio-b2xv945e.js +0 -5
- package/dist/chunks/studio-bn5nkafw.js +0 -5
- package/dist/chunks/studio-bw6q5xjf.js +0 -9
- package/dist/chunks/studio-c7q0t9x1.js +0 -5
- package/dist/chunks/studio-camnhc96.js +0 -6
- package/dist/chunks/studio-cffqvnzd.js +0 -5
- package/dist/chunks/studio-efvfrsf8.js +0 -5
- package/dist/chunks/studio-er30bpcx.js +0 -5
- package/dist/chunks/studio-ezscgr64.js +0 -5
- package/dist/chunks/studio-ffrrncvz.js +0 -5
- package/dist/chunks/studio-fpphgn8y.js +0 -10
- package/dist/chunks/studio-j1kvhdjk.js +0 -4
- package/dist/chunks/studio-j430n16g.js +0 -7
- package/dist/chunks/studio-jjkg84nj.js +0 -5
- package/dist/chunks/studio-m0q32ars.js +0 -4
- package/dist/chunks/studio-m6bdst11.js +0 -5
- package/dist/chunks/studio-nv2cptd4.js +0 -64
- package/dist/chunks/studio-nwfrc98n.js +0 -5
- package/dist/chunks/studio-p1wgvp7r.js +0 -5
- package/dist/chunks/studio-pag2wncm.js +0 -5
- package/dist/chunks/studio-qvanvzfd.js +0 -5
- package/dist/chunks/studio-qwa64kt7.js +0 -5
- package/dist/chunks/studio-rk1zc4x3.js +0 -928
- package/dist/chunks/studio-se2r3ptc.js +0 -5
- package/dist/chunks/studio-sg2a0dh0.js +0 -5
- package/dist/chunks/studio-tjzjhe68.js +0 -5
- package/dist/chunks/studio-v2w7q8r1.js +0 -7
- package/dist/chunks/studio-v5vjq1h0.js +0 -4
- package/dist/chunks/studio-v8aga3vp.js +0 -14
- package/dist/chunks/studio-vfcdrfmv.js +0 -5
- package/dist/chunks/studio-vmfkgdjf.js +0 -5
- package/dist/chunks/studio-wt1816jj.js +0 -5
- package/dist/chunks/studio-wz73q5kq.js +0 -4
- package/dist/chunks/studio-y04qtxvp.js +0 -7
- package/dist/chunks/studio-y21g8zzg.js +0 -5
- package/dist/chunks/studio-y64hrt8p.js +0 -12
- package/dist/chunks/studio-ynn90f58.js +0 -16
- package/dist/chunks/studio-yxz682sx.js +0 -5
- package/dist/chunks/studio-zp7snvkq.js +0 -5
- package/dist/chunks/studio-zq4z6tm6.js +0 -5
- package/dist/chunks/toast-c9fn075p.js +0 -4
- package/dist/chunks/tsMode-sf49ee9x.js +0 -14
- package/dist/chunks/workspace-jtfahpee.js +0 -4
- package/src/panels/frontmatter-panel.ts +0 -711
- package/src/panels/git-panel.ts +0 -1108
- package/src/surfaces/doc-header.json +0 -776
- package/src/surfaces/doc-header.ts +0 -222
- package/src/surfaces/git-panel.json +0 -1880
- package/src/surfaces/git-panel.ts +0 -264
|
@@ -195,6 +195,23 @@ export function createDevServerPlatform() {
|
|
|
195
195
|
return `${_projectRoot}/${r}`;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
/**
|
|
199
|
+
* A `/__studio/git/*` route that names this session's project with `?dir=`.
|
|
200
|
+
*
|
|
201
|
+
* The server serves every Studio tab pointed at it, and its active project is whichever one was
|
|
202
|
+
* activated last; a git call that named no project ran in that one, so Initialize Repository in
|
|
203
|
+
* one session initialised another's project. With no project open, nothing is named and the
|
|
204
|
+
* server falls back to its own root (a clone from the welcome screen).
|
|
205
|
+
*/
|
|
206
|
+
function gitRoute(command: string, params: Record<string, string> = {}): string {
|
|
207
|
+
const query = new URLSearchParams(params);
|
|
208
|
+
if (_projectRoot) {
|
|
209
|
+
query.set("dir", serverPath("."));
|
|
210
|
+
}
|
|
211
|
+
const search = query.toString();
|
|
212
|
+
return `/__studio/git/${command}${search ? `?${search}` : ""}`;
|
|
213
|
+
}
|
|
214
|
+
|
|
198
215
|
/**
|
|
199
216
|
* Strip the project root prefix from a server-root-relative path.
|
|
200
217
|
*
|
|
@@ -427,13 +444,25 @@ export function createDevServerPlatform() {
|
|
|
427
444
|
return entries;
|
|
428
445
|
},
|
|
429
446
|
|
|
430
|
-
/**
|
|
447
|
+
/**
|
|
448
|
+
* Read a file as text. A missing file still rejects, as the PAL says; it is only asked for with
|
|
449
|
+
* `optional=1` (`specs/server.md` §4.1), so the absence arrives as a `null` body rather than a 404.
|
|
450
|
+
* Studio probes for files it expects may be missing (a `.gitignore` per listed directory), and
|
|
451
|
+
* a failed request per probe was console noise that read as a fault.
|
|
452
|
+
*
|
|
453
|
+
* @param {string} path
|
|
454
|
+
*/
|
|
431
455
|
async readFile(path: string) {
|
|
432
|
-
const res = await fetch(
|
|
456
|
+
const res = await fetch(
|
|
457
|
+
`/__studio/file?path=${encodeURIComponent(serverPath(path))}&optional=1`,
|
|
458
|
+
);
|
|
433
459
|
if (!res.ok) {
|
|
434
460
|
throw new Error(`Failed to read file: ${path}`);
|
|
435
461
|
}
|
|
436
|
-
const data = await readJson<{ content: string }>(res);
|
|
462
|
+
const data = await readJson<{ content: string | null }>(res);
|
|
463
|
+
if (data.content === null) {
|
|
464
|
+
throw new Error(`Failed to read file: ${path} (not found)`);
|
|
465
|
+
}
|
|
437
466
|
return data.content;
|
|
438
467
|
},
|
|
439
468
|
|
|
@@ -1055,7 +1084,7 @@ export function createDevServerPlatform() {
|
|
|
1055
1084
|
// ─── Git operations ──────────────────────────────────────────────────
|
|
1056
1085
|
|
|
1057
1086
|
async gitStatus() {
|
|
1058
|
-
const res = await fetch("
|
|
1087
|
+
const res = await fetch(gitRoute("status"));
|
|
1059
1088
|
if (!res.ok) {
|
|
1060
1089
|
throw new Error(await res.text());
|
|
1061
1090
|
}
|
|
@@ -1063,7 +1092,7 @@ export function createDevServerPlatform() {
|
|
|
1063
1092
|
},
|
|
1064
1093
|
|
|
1065
1094
|
async gitBranches() {
|
|
1066
|
-
const res = await fetch("
|
|
1095
|
+
const res = await fetch(gitRoute("branches"));
|
|
1067
1096
|
if (!res.ok) {
|
|
1068
1097
|
throw new Error(await res.text());
|
|
1069
1098
|
}
|
|
@@ -1072,8 +1101,7 @@ export function createDevServerPlatform() {
|
|
|
1072
1101
|
|
|
1073
1102
|
/** @param {number} [limit] */
|
|
1074
1103
|
async gitLog(limit?: number) {
|
|
1075
|
-
const
|
|
1076
|
-
const res = await fetch(`/__studio/git/log${q}`);
|
|
1104
|
+
const res = await fetch(gitRoute("log", limit ? { limit: String(limit) } : {}));
|
|
1077
1105
|
if (!res.ok) {
|
|
1078
1106
|
throw new Error(await res.text());
|
|
1079
1107
|
}
|
|
@@ -1082,7 +1110,7 @@ export function createDevServerPlatform() {
|
|
|
1082
1110
|
|
|
1083
1111
|
/** @param {string[]} files */
|
|
1084
1112
|
async gitStage(files: string[]) {
|
|
1085
|
-
const res = await fetch("
|
|
1113
|
+
const res = await fetch(gitRoute("stage"), {
|
|
1086
1114
|
body: JSON.stringify({ files }),
|
|
1087
1115
|
headers: { "Content-Type": "application/json" },
|
|
1088
1116
|
method: "POST",
|
|
@@ -1096,7 +1124,7 @@ export function createDevServerPlatform() {
|
|
|
1096
1124
|
|
|
1097
1125
|
/** @param {string[]} files */
|
|
1098
1126
|
async gitUnstage(files: string[]) {
|
|
1099
|
-
const res = await fetch("
|
|
1127
|
+
const res = await fetch(gitRoute("unstage"), {
|
|
1100
1128
|
body: JSON.stringify({ files }),
|
|
1101
1129
|
headers: { "Content-Type": "application/json" },
|
|
1102
1130
|
method: "POST",
|
|
@@ -1110,7 +1138,7 @@ export function createDevServerPlatform() {
|
|
|
1110
1138
|
|
|
1111
1139
|
/** @param {string} message */
|
|
1112
1140
|
async gitCommit(message: string) {
|
|
1113
|
-
const res = await fetch("
|
|
1141
|
+
const res = await fetch(gitRoute("commit"), {
|
|
1114
1142
|
body: JSON.stringify({ message }),
|
|
1115
1143
|
headers: { "Content-Type": "application/json" },
|
|
1116
1144
|
method: "POST",
|
|
@@ -1124,7 +1152,7 @@ export function createDevServerPlatform() {
|
|
|
1124
1152
|
|
|
1125
1153
|
/** @param {{ setUpstream?: boolean }} [opts] */
|
|
1126
1154
|
async gitPush(opts?: { setUpstream?: boolean }) {
|
|
1127
|
-
const res = await fetch("
|
|
1155
|
+
const res = await fetch(gitRoute("push"), {
|
|
1128
1156
|
body: JSON.stringify(opts || {}),
|
|
1129
1157
|
headers: { "Content-Type": "application/json" },
|
|
1130
1158
|
method: "POST",
|
|
@@ -1137,7 +1165,7 @@ export function createDevServerPlatform() {
|
|
|
1137
1165
|
},
|
|
1138
1166
|
|
|
1139
1167
|
async gitPull() {
|
|
1140
|
-
const res = await fetch("
|
|
1168
|
+
const res = await fetch(gitRoute("pull"), { method: "POST" });
|
|
1141
1169
|
if (!res.ok) {
|
|
1142
1170
|
const body = await readJson<ErrorBody>(res);
|
|
1143
1171
|
throw new Error(problemMessage(body));
|
|
@@ -1146,7 +1174,7 @@ export function createDevServerPlatform() {
|
|
|
1146
1174
|
},
|
|
1147
1175
|
|
|
1148
1176
|
async gitFetch() {
|
|
1149
|
-
const res = await fetch("
|
|
1177
|
+
const res = await fetch(gitRoute("fetch"), { method: "POST" });
|
|
1150
1178
|
if (!res.ok) {
|
|
1151
1179
|
const body = await readJson<ErrorBody>(res);
|
|
1152
1180
|
throw new Error(problemMessage(body));
|
|
@@ -1156,7 +1184,7 @@ export function createDevServerPlatform() {
|
|
|
1156
1184
|
|
|
1157
1185
|
/** @param {string} branch */
|
|
1158
1186
|
async gitCheckout(branch: string) {
|
|
1159
|
-
const res = await fetch("
|
|
1187
|
+
const res = await fetch(gitRoute("checkout"), {
|
|
1160
1188
|
body: JSON.stringify({ branch }),
|
|
1161
1189
|
headers: { "Content-Type": "application/json" },
|
|
1162
1190
|
method: "POST",
|
|
@@ -1170,7 +1198,7 @@ export function createDevServerPlatform() {
|
|
|
1170
1198
|
|
|
1171
1199
|
/** @param {string} name */
|
|
1172
1200
|
async gitCreateBranch(name: string) {
|
|
1173
|
-
const res = await fetch("
|
|
1201
|
+
const res = await fetch(gitRoute("create-branch"), {
|
|
1174
1202
|
body: JSON.stringify({ name }),
|
|
1175
1203
|
headers: { "Content-Type": "application/json" },
|
|
1176
1204
|
method: "POST",
|
|
@@ -1184,7 +1212,7 @@ export function createDevServerPlatform() {
|
|
|
1184
1212
|
|
|
1185
1213
|
/** @param {string} [path] */
|
|
1186
1214
|
async gitDiff(path?: string) {
|
|
1187
|
-
const res = await fetch(
|
|
1215
|
+
const res = await fetch(gitRoute("diff", { path: path ?? "" }));
|
|
1188
1216
|
if (!res.ok) {
|
|
1189
1217
|
throw new Error(await res.text());
|
|
1190
1218
|
}
|
|
@@ -1193,11 +1221,9 @@ export function createDevServerPlatform() {
|
|
|
1193
1221
|
|
|
1194
1222
|
/** @param {{ path: string; ref?: string }} opts */
|
|
1195
1223
|
async gitShow(opts: { path: string; ref?: string }) {
|
|
1196
|
-
const
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
}
|
|
1200
|
-
const res = await fetch(`/__studio/git/show?${params}`);
|
|
1224
|
+
const res = await fetch(
|
|
1225
|
+
gitRoute("show", opts.ref ? { path: opts.path, ref: opts.ref } : { path: opts.path }),
|
|
1226
|
+
);
|
|
1201
1227
|
if (!res.ok) {
|
|
1202
1228
|
throw new Error(await res.text());
|
|
1203
1229
|
}
|
|
@@ -1207,7 +1233,7 @@ export function createDevServerPlatform() {
|
|
|
1207
1233
|
|
|
1208
1234
|
/** @param {string[]} files */
|
|
1209
1235
|
async gitDiscard(files: string[]) {
|
|
1210
|
-
const res = await fetch("
|
|
1236
|
+
const res = await fetch(gitRoute("discard"), {
|
|
1211
1237
|
body: JSON.stringify({ files }),
|
|
1212
1238
|
headers: { "Content-Type": "application/json" },
|
|
1213
1239
|
method: "POST",
|
|
@@ -1221,7 +1247,7 @@ export function createDevServerPlatform() {
|
|
|
1221
1247
|
|
|
1222
1248
|
/** @param {string} url */
|
|
1223
1249
|
async gitClone(url: string) {
|
|
1224
|
-
const res = await fetch("
|
|
1250
|
+
const res = await fetch(gitRoute("clone"), {
|
|
1225
1251
|
body: JSON.stringify({ url }),
|
|
1226
1252
|
headers: { "Content-Type": "application/json" },
|
|
1227
1253
|
method: "POST",
|
|
@@ -1234,7 +1260,7 @@ export function createDevServerPlatform() {
|
|
|
1234
1260
|
},
|
|
1235
1261
|
|
|
1236
1262
|
async gitInit() {
|
|
1237
|
-
const res = await fetch("
|
|
1263
|
+
const res = await fetch(gitRoute("init"), { method: "POST" });
|
|
1238
1264
|
if (!res.ok) {
|
|
1239
1265
|
const body = await readJson<ErrorBody>(res);
|
|
1240
1266
|
throw new Error(problemMessage(body));
|
|
@@ -1289,7 +1315,7 @@ export function createDevServerPlatform() {
|
|
|
1289
1315
|
* @param {string} url
|
|
1290
1316
|
*/
|
|
1291
1317
|
async gitAddRemote(name: string, url: string) {
|
|
1292
|
-
const res = await fetch("
|
|
1318
|
+
const res = await fetch(gitRoute("add-remote"), {
|
|
1293
1319
|
body: JSON.stringify({ name, url }),
|
|
1294
1320
|
headers: { "Content-Type": "application/json" },
|
|
1295
1321
|
method: "POST",
|
|
@@ -319,17 +319,22 @@ export function deployStatusItem(): DeployStatusItem | null {
|
|
|
319
319
|
|
|
320
320
|
// ─── The surface ──────────────────────────────────────────────────────────────
|
|
321
321
|
|
|
322
|
-
/**
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
322
|
+
/**
|
|
323
|
+
* The kit icon a link's state wears, and the state in words for a reader who cannot see it. Names
|
|
324
|
+
* from the kit's glyph manifest rather than text glyphs: a `·` or a `?` beside a sentence read as
|
|
325
|
+
* punctuation and said nothing to a screen reader.
|
|
326
|
+
*/
|
|
327
|
+
const STEP_ICON: Readonly<Record<DeployStepState, { icon: string; label: string }>> = {
|
|
328
|
+
done: { icon: "check", label: "Done" },
|
|
329
|
+
todo: { icon: "warning-circle", label: "To do" },
|
|
330
|
+
unknown: { icon: "question", label: "Not checked yet" },
|
|
327
331
|
};
|
|
328
332
|
|
|
329
|
-
/** One prerequisite, flattened for the document: a key, a state,
|
|
333
|
+
/** One prerequisite, flattened for the document: a key, a state, an icon and a sentence. */
|
|
330
334
|
function stepView(step: DeployStep): DeployStepRowView {
|
|
331
335
|
return {
|
|
332
|
-
icon: STEP_ICON[step.state],
|
|
336
|
+
icon: STEP_ICON[step.state].icon,
|
|
337
|
+
iconLabel: STEP_ICON[step.state].label,
|
|
333
338
|
id: step.id,
|
|
334
339
|
state: step.state,
|
|
335
340
|
/* The detail is dropped once the link is forged: what a done step buys you is not news, and
|
|
@@ -29,6 +29,12 @@ export interface PagesDeploymentInfo {
|
|
|
29
29
|
stage: string;
|
|
30
30
|
status: string;
|
|
31
31
|
createdOn: string;
|
|
32
|
+
/**
|
|
33
|
+
* The branch the deployment was built from, when Cloudflare says (its trigger metadata). A
|
|
34
|
+
* preview's branch is what names it in Publish › Deploys; a production deployment usually carries
|
|
35
|
+
* the production branch.
|
|
36
|
+
*/
|
|
37
|
+
branch?: string;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
export interface ConnectOptions {
|
|
@@ -146,25 +152,43 @@ interface DeploymentWire {
|
|
|
146
152
|
environment: string;
|
|
147
153
|
latest_stage?: { name?: string; status?: string };
|
|
148
154
|
created_on: string;
|
|
155
|
+
deployment_trigger?: { metadata?: { branch?: string } };
|
|
149
156
|
}
|
|
150
157
|
|
|
151
|
-
/**
|
|
152
|
-
|
|
158
|
+
/** One wire row as the app reads it: the stage flattened, the branch kept only when it is said. */
|
|
159
|
+
function deploymentInfo(row: DeploymentWire): PagesDeploymentInfo {
|
|
160
|
+
const info: PagesDeploymentInfo = {
|
|
161
|
+
id: row.id,
|
|
162
|
+
url: row.url,
|
|
163
|
+
environment: row.environment,
|
|
164
|
+
stage: row.latest_stage?.name ?? "unknown",
|
|
165
|
+
status: row.latest_stage?.status ?? "unknown",
|
|
166
|
+
createdOn: row.created_on,
|
|
167
|
+
};
|
|
168
|
+
const branch = row.deployment_trigger?.metadata?.branch;
|
|
169
|
+
if (branch) {
|
|
170
|
+
info.branch = branch;
|
|
171
|
+
}
|
|
172
|
+
return info;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Every deployment of the connected project Cloudflare returns, newest first, as it orders them.
|
|
177
|
+
*
|
|
178
|
+
* All of them, not the latest alone: Publish › Deploys draws the history and the branch previews
|
|
179
|
+
* from this one list (studio.md §22.8), and the latest is simply its first row.
|
|
180
|
+
*/
|
|
181
|
+
export async function listDeployments(deploy: DeployConfig): Promise<PagesDeploymentInfo[]> {
|
|
153
182
|
const deployments = await cfApi<DeploymentWire[]>(
|
|
154
183
|
`/accounts/${deploy.accountId}/pages/projects/${deploy.projectName}/deployments`,
|
|
155
184
|
);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
environment: latest.environment,
|
|
164
|
-
stage: latest.latest_stage?.name ?? "unknown",
|
|
165
|
-
status: latest.latest_stage?.status ?? "unknown",
|
|
166
|
-
createdOn: latest.created_on,
|
|
167
|
-
};
|
|
185
|
+
return deployments.map((row) => deploymentInfo(row));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** The most recent deployment of the connected project, or null when none. */
|
|
189
|
+
export async function latestDeployment(deploy: DeployConfig): Promise<PagesDeploymentInfo | null> {
|
|
190
|
+
const [latest] = await listDeployments(deploy);
|
|
191
|
+
return latest ?? null;
|
|
168
192
|
}
|
|
169
193
|
|
|
170
194
|
/**
|