@marimo-team/frontend 0.24.1-dev2 → 0.24.1-dev21
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/dist/assets/{CellStatus-DqJypoFY.js → CellStatus-DsvXjUsv.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-DLvmqIcV.js → ConnectedDataExplorerComponent-WU7zjB7Z.js} +1 -1
- package/dist/assets/{JsonOutput-DnrBQBRT.js → JsonOutput-D62UH4Ip.js} +7 -7
- package/dist/assets/{MarimoErrorOutput-BVdFtnJz.js → MarimoErrorOutput-B_IfCm1k.js} +7 -7
- package/dist/assets/{RenderHTML-X9kskQZ0.js → RenderHTML-DY5kbf6q.js} +1 -1
- package/dist/assets/{RunButton-D83R2wvd.js → RunButton-BfHw11b3.js} +1 -1
- package/dist/assets/{add-cell-with-ai-HD16K3PB.js → add-cell-with-ai-B25FLoLF.js} +12 -12
- package/dist/assets/{add-connection-dialog-V86wrXca.js → add-connection-dialog-B05rbnef.js} +6 -6
- package/dist/assets/{agent-panel-XdLSrKjl.js → agent-panel-CQobsqAS.js} +6 -6
- package/dist/assets/{ai-model-dropdown-BJp70TST.js → ai-model-dropdown-CmDWOIkZ.js} +4 -4
- package/dist/assets/app-config-button-BkwiW00-.js +1 -0
- package/dist/assets/{blob-BKW9TqBu.js → blob-BqDSSN5X.js} +1 -1
- package/dist/assets/{cell-editor-DQSrfeL3.js → cell-editor-CefMlZnX.js} +14 -14
- package/dist/assets/cell-link-CP4zF1rO.js +1 -0
- package/dist/assets/{cells-DTFqEQb0.js → cells-DD-zwhxi.js} +72 -72
- package/dist/assets/{chat-display-CclXFQQP.js → chat-display-59QZ49m7.js} +1 -1
- package/dist/assets/{chat-panel-ft0VIKS8.js → chat-panel-CDZbG1OG.js} +2 -2
- package/dist/assets/{chat-ui-DUYenr6D.js → chat-ui-DoBTbTFY.js} +1 -1
- package/dist/assets/{column-preview-BLap3eAk.js → column-preview-BNg0hwmL.js} +1 -1
- package/dist/assets/{command-palette-C7nz0zHt.js → command-palette-gEcd355-.js} +1 -1
- package/dist/assets/{common-DKQZgzC9.js → common-CcYiDLMe.js} +1 -1
- package/dist/assets/{components-Bf_hykBb.js → components-B4D3PZ3j.js} +1 -1
- package/dist/assets/config-DFK5eCC3.js +1 -0
- package/dist/assets/{datasource-DZgUyqAK.js → datasource-DAM_bXu_.js} +2 -2
- package/dist/assets/dependency-graph-panel-01bZMvwS.js +5 -0
- package/dist/assets/{documentation-panel-BQYA8gCW.js → documentation-panel-BhruLk_O.js} +1 -1
- package/dist/assets/{download-_oAlkvj6.js → download-DT1x-ePG.js} +1 -1
- package/dist/assets/{edit-page-DnXTBsfC.js → edit-page-C8uQVdbi.js} +6 -6
- package/dist/assets/{error-entries-uxjSsTal.js → error-entries-Dg9m5P8l.js} +3 -3
- package/dist/assets/{error-panel-Bq0TKquh.js → error-panel-By_xNe1V.js} +1 -1
- package/dist/assets/{file-explorer-panel-uhg7VNMd.js → file-explorer-panel-BzTVzCS7.js} +3 -3
- package/dist/assets/{file-icons-V3puz20c.js → file-icons-Dop5RazI.js} +1 -1
- package/dist/assets/{file-name-input-DWf6YZwM.js → file-name-input-C5_fsJ6t.js} +1 -1
- package/dist/assets/{floating-outline-Vqr5D17R.js → floating-outline-Bt2aLttK.js} +1 -1
- package/dist/assets/{focus-BTlyH5K_.js → focus-DCZbWsqm.js} +1 -1
- package/dist/assets/{form-Bb1JVuzT.js → form-Cj3PfSUI.js} +1 -1
- package/dist/assets/{form-CRSnWxLR.js → form-DHy5wB3F.js} +1 -1
- package/dist/assets/{glide-data-editor-BNZxtmKn.js → glide-data-editor-BPPCsS2s.js} +2 -2
- package/dist/assets/{home-page-RduyhdYP.js → home-page-EsENjhWM.js} +2 -2
- package/dist/assets/{html-to-image-BsXiWo0v.js → html-to-image-CajdmeRM.js} +1 -1
- package/dist/assets/index-BZ-HxYIU.js +38 -0
- package/dist/assets/index-CxZ6uZaz.css +2 -0
- package/dist/assets/{kiosk-mode-BH15-Gn-.js → kiosk-mode-B8UhlOLw.js} +1 -1
- package/dist/assets/{layout-1X5SpE18.js → layout-B73d8K81.js} +5 -5
- package/dist/assets/{logs-panel-CVxksxou.js → logs-panel-CYMHvjs-.js} +1 -1
- package/dist/assets/{markdown-renderer-BjuEVUOa.js → markdown-renderer-DM-Whfio.js} +1 -1
- package/dist/assets/{name-cell-input-CtYGGTR5.js → name-cell-input-DF8MnZDV.js} +1 -1
- package/dist/assets/{outline-panel-BhxoKAbS.js → outline-panel-Q7h5hFfo.js} +1 -1
- package/dist/assets/{packages-panel-BWP3YWNW.js → packages-panel-BW4xGU0r.js} +1 -1
- package/dist/assets/{pair-with-agent-modal-BCMZbqSR.js → pair-with-agent-modal-DiDLAjxV.js} +1 -1
- package/dist/assets/panel-accordion-state-iff6EfKa.js +1 -0
- package/dist/assets/{panels-D40pa9F1.js → panels-BqKyRqOy.js} +2 -2
- package/dist/assets/{process-output-WaMx3G7b.js → process-output-B9grqmZC.js} +1 -1
- package/dist/assets/{radio-group-5KDs5aO1.js → radio-group-B8t5cIdU.js} +1 -1
- package/dist/assets/{readonly-code-display-DnHcjfFl.js → readonly-code-display-CY-jDwQL.js} +1 -1
- package/dist/assets/{readonly-python-code-BV8otm7e.js → readonly-python-code-DFjpK9Hc.js} +1 -1
- package/dist/assets/{reveal-component-yVci-fc9.js → reveal-component-DWjuDjk-.js} +2 -2
- package/dist/assets/{run-page-aQycuCjn.js → run-page-DNJz4YBq.js} +1 -1
- package/dist/assets/{scratchpad-panel-lsqN24Au.js → scratchpad-panel-BOQN7LjT.js} +1 -1
- package/dist/assets/{session-panel-C4JUkPt7.js → session-panel-C9zMMa1x.js} +1 -1
- package/dist/assets/{skeleton-DOZFvsSE.js → skeleton-mj_3hAv8.js} +1 -1
- package/dist/assets/{snippets-panel-QNY_Dl2J.js → snippets-panel-C-VlGXwd.js} +1 -1
- package/dist/assets/spec-C_psFYbu.js +1 -0
- package/dist/assets/state-BSVx1akM.js +3 -0
- package/dist/assets/{state-ByxLiTvP.js → state-C1e6in0R.js} +1 -1
- package/dist/assets/{switch-CDT2KH2g.js → switch-ulnbZFaI.js} +1 -1
- package/dist/assets/{terminal-UyHT9ie2.js → terminal-Bo6pnmSU.js} +1 -1
- package/dist/assets/{tracing-BiBPyXVg.js → tracing-D-L-9q2d.js} +1 -1
- package/dist/assets/{tracing-panel-D8LtcU_g.js → tracing-panel-DQzhu-hj.js} +2 -2
- package/dist/assets/{tree-actions-DUAdNn1i.js → tree-actions-BBmIijvt.js} +1 -1
- package/dist/assets/{useBoolean-CgN_4RAl.js → useBoolean-C_UV6tQ7.js} +1 -1
- package/dist/assets/{useCellActionButton-Bp2eEIzO.js → useCellActionButton-COoOWq__.js} +1 -1
- package/dist/assets/{useDeleteCell-DO-9USfB.js → useDeleteCell-C802AuEJ.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-Bi8pUBnn.js → useDependencyPanelTab-DR6NOy5O.js} +1 -1
- package/dist/assets/useNotebookActions-BXVkcfqk.js +12 -0
- package/dist/assets/{useRunCells-BpZ_0Xuz.js → useRunCells-DuxMdaXo.js} +1 -1
- package/dist/assets/{useSplitCell-C2fjcfID.js → useSplitCell-B1EAP5Nv.js} +1 -1
- package/dist/assets/{utils-Y4n-X10o.js → utils-Bp3MLwWq.js} +1 -1
- package/dist/assets/{vega-component-3G_aA1Wa.js → vega-component-dzk5T-cc.js} +1 -1
- package/dist/assets/{vega-embed-container-CH1lX0V6.js → vega-embed-container-D0V0wn9T.js} +1 -1
- package/dist/index.html +29 -29
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +4 -0
- package/src/components/app-config/optional-features.test.ts +78 -0
- package/src/components/app-config/optional-features.tsx +33 -6
- package/src/components/data-table/__tests__/column_formatting.test.ts +7 -0
- package/src/components/data-table/charts/__tests__/schemas.test.ts +17 -2
- package/src/components/data-table/charts/chart-spec/types.ts +2 -0
- package/src/components/data-table/column-formatting/feature.ts +1 -0
- package/src/components/data-table/column-formatting/types.ts +1 -0
- package/src/components/data-table/column-summary/chart-spec-model.tsx +1 -0
- package/src/components/data-table/column-summary/column-summary.tsx +1 -0
- package/src/components/data-table/columns.tsx +4 -3
- package/src/components/datasets/__tests__/icons.test.ts +10 -2
- package/src/components/datasets/icons.tsx +4 -0
- package/src/components/datasources/__tests__/components.test.tsx +14 -1
- package/src/components/editor/actions/export-dialog/__tests__/export-dialog.test.tsx +206 -34
- package/src/components/editor/actions/export-dialog/export-dialog.tsx +9 -3
- package/src/components/editor/actions/export-dialog/format-notice.tsx +69 -24
- package/src/components/editor/actions/export-dialog/use-export-dialog.ts +27 -2
- package/src/components/ui/toaster.tsx +14 -1
- package/src/core/codemirror/code-lens/__tests__/popover.test.ts +13 -0
- package/src/core/codemirror/code-lens/popover.tsx +11 -5
- package/src/core/codemirror/language/languages/sql/__tests__/renderers.test.tsx +15 -4
- package/src/core/codemirror/language/languages/sql/renderers.tsx +1 -0
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/kernel/messages.ts +1 -0
- package/src/core/mode.ts +6 -1
- package/src/core/network/__tests__/requests-lazy.test.ts +40 -0
- package/src/core/network/__tests__/requests-network.test.ts +13 -0
- package/src/core/network/requests-lazy.ts +11 -4
- package/src/core/network/requests-network.ts +8 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +5 -0
- package/src/core/wasm/bridge.ts +1 -0
- package/src/plugins/impl/MatrixPlugin.tsx +256 -35
- package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +13 -1
- package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +540 -3
- package/src/plugins/impl/data-editor/glide-data-editor.tsx +1 -0
- package/src/plugins/impl/data-editor/glide-utils.ts +1 -0
- package/src/plugins/impl/data-frames/__tests__/schema.test.ts +9 -1
- package/src/plugins/impl/data-frames/utils/__tests__/operators.test.ts +8 -0
- package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
- package/src/plugins/impl/vega/__tests__/vega.test.ts +22 -4
- package/src/plugins/impl/vega/utils.ts +3 -0
- package/dist/assets/app-config-button-C2zJXSrK.js +0 -1
- package/dist/assets/cell-link-D26WjdN1.js +0 -1
- package/dist/assets/config-EoJoeZuK.js +0 -1
- package/dist/assets/dependency-graph-panel-CH6kIoat.js +0 -5
- package/dist/assets/index-C5WESBbZ.js +0 -38
- package/dist/assets/index-WoaGtlKd.css +0 -2
- package/dist/assets/panel-accordion-state-0CKLFeAf.js +0 -1
- package/dist/assets/spec-NeCHOv2Z.js +0 -1
- package/dist/assets/state-Ci7n55A9.js +0 -3
- package/dist/assets/useNotebookActions-Bm9VzJ_M.js +0 -12
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ut=Object.defineProperty;var mt=(t,e,s)=>e in t?ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var G=(t,e,s)=>mt(t,typeof e!="symbol"?e+"":e,s);import{o as ie}from"./chunk-C4rtOYze.js";import{u as bt}from"./useEvent-GCVIknuR.js";import{t as gt}from"./react-C60yClUi.js";import{Ct as ce,E as ft,Fr as yt,Lt as _t,ur as y}from"./cells-DTFqEQb0.js";import{D as K,L as g,P as _,T as L,_ as le,i as xt,k as x}from"./zod-BIDX-mZr.js";import{t as U}from"./compiler-runtime-DnimoHo0.js";import{_ as St}from"./useEventListener-DpNnLPuE.js";import{c as kt}from"./utils-C8Yt16Y7.js";import{t as V}from"./cn-DCUzRj2J.js";import{t as wt}from"./jsx-runtime-3wZU7vFS.js";import{a as jt,c as de,i as vt,o as pe,r as $t,s as Ct,t as At}from"./popover-B96fOqfH.js";import{c as Nt,i as Rt,n as Tt,r as Lt,s as Dt,t as It}from"./select-CPo-KTTe.js";import{i as Pt,t as he}from"./tooltip-C9LWGQ7Y.js";import{t as ue}from"./button-W__YVea9.js";import{r as M}from"./strings-DmKKoXrM.js";import{r as qt,t as Ft}from"./x-4y-nyVDU.js";import{t as Et}from"./circle-plus-C5gP9LrU.js";import{t as Ot}from"./components-CozWCL5N.js";import{n as Z}from"./DeferredRequestRegistry-6TRSC3VZ.js";import{t as Bt}from"./plus-r1QITpsJ.js";import{t as Ut}from"./sparkles-DwqcWrJl.js";import{a as me,c as be,i as Kt,n as ge,o as fe,p as Ht,r as ye,s as _e,u as Mt}from"./form-Bb1JVuzT.js";import{a as Wt,c as Gt,l as Vt,n as zt,r as Qt,t as Jt}from"./dialog-WU4x2UpK.js";import{n as xe}from"./ImperativeModal-Dxj31V4A.js";import{t as z}from"./links-BeU4kHTI.js";import{t as Yt}from"./useIframeCapabilities-DBacdN1t.js";import{r as Xt}from"./html-to-image-BsXiWo0v.js";import{o as Zt}from"./focus-BTlyH5K_.js";import{n as Se}from"./useAsyncData-BcvSvTUt.js";import{a as es,c as ke,i as Q,o as J,s as ts,t as ss}from"./command-D5LtSvbN.js";import{c as d,o as rs,t as ns}from"./form-CRSnWxLR.js";import{t as os}from"./request-registry-bUowmAtG.js";import{a as ee,c as te,d as as,f as is,i as we,l as je,n as cs,o as ls,r as se,s as F,t as ve,u as $e}from"./write-secret-modal-DBPF-L6f.js";var D=ie(gt(),1),o=ie(wt(),1);function ds(t,e){if(!e)return{recommended:[],other:[...t]};let s;try{s=new RegExp(e,"i")}catch{return{recommended:[],other:[...t]}}let n=[],r=[];for(let a of t)s.test(a)?n.push(a):r.push(a);return{recommended:n,other:r}}const Ce=({value:t,onChange:e,placeholder:s,secretsOnly:n=!1,recommendedKeys:r,otherKeys:a,onCreateSecret:c,className:i,searchPlaceholder:l,formatCustomValueLabel:p=f=>`Use "${f}"`,createSecretLabel:h="Create a new secret",allowCustomValue:m,allowCreateSecret:b})=>{let[f,u]=(0,D.useState)(!1),[S,w]=(0,D.useState)(""),k=S.trim(),v=!n&&k.length>0&&k!==t&&((m==null?void 0:m(k))??!0),A=(b==null?void 0:b(k))??!0,C=t?F(t)?ls(t):t:null,N=j=>{e(te(j)),u(!1),w("")},P=j=>{e(j),u(!1),w("")},q=()=>{e(""),w(""),u(!1)};return(0,o.jsxs)("div",{className:V("flex w-full min-w-48 mb-1 items-center gap-1",i),children:[(0,o.jsxs)(At,{modal:!0,open:f,onOpenChange:j=>{u(j),j||w("")},children:[(0,o.jsx)(vt,{asChild:!0,children:(0,o.jsxs)("button",{type:"button",className:V("flex h-6 min-w-0 flex-1 shadow-xs-solid items-center justify-between","rounded-sm border border-input bg-background px-1.5 text-sm font-code ring-offset-background placeholder:text-muted-foreground","hover:shadow-sm-solid focus:outline-hidden focus:ring-1 focus:ring-ring focus:border-primary focus:shadow-md-solid",F(t)&&"bg-accent"),"aria-expanded":f,children:[(0,o.jsx)("span",{className:"truncate flex-1 min-w-0 text-left flex items-center gap-1.5",children:C?(0,o.jsxs)(o.Fragment,{children:[F(t)&&(0,o.jsx)(Z,{className:"h-3 w-3 shrink-0 opacity-70"}),(0,o.jsx)("span",{className:"truncate",children:C})]}):(0,o.jsx)("span",{className:"text-muted-foreground",children:s})}),(0,o.jsx)(qt,{className:"ml-1 h-4 w-4 opacity-50 shrink-0"})]})}),(0,o.jsx)($t,{className:"w-(--radix-popover-trigger-width) p-0",align:"start",children:(0,o.jsxs)(ss,{children:[(0,o.jsx)(es,{placeholder:l??(n?"Search secrets...":"Type a value or search secrets..."),rootClassName:"px-1 h-8",autoFocus:!0,value:S,onValueChange:w}),(0,o.jsxs)(ts,{className:"max-h-60 overscroll-contain",children:[v&&(0,o.jsx)(Q,{children:(0,o.jsx)(J,{value:`use custom value ${k}`,onSelect:()=>P(k),children:p(k)})}),A&&(0,o.jsx)(Q,{className:"mt-0",children:(0,o.jsxs)(J,{value:`create new secret ${k}`,onSelect:()=>{let j=k||void 0;u(!1),w(""),c(j)},children:[(0,o.jsx)(Et,{className:"mr-2 h-3.5 w-3.5"}),h]})}),r.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:"Recommended",children:r.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]}),a.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:r.length>0?"Other":void 0,children:a.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]})]})]})})]}),t&&(0,o.jsx)("button",{type:"button","aria-label":"Clear",className:V("flex h-6 w-6 shrink-0 items-center justify-center rounded-sm","text-muted-foreground hover:bg-muted hover:text-foreground","focus:outline-hidden focus:ring-1 focus:ring-ring"),onClick:q,children:(0,o.jsx)(Ft,{className:"h-3.5 w-3.5"})})]})};var ps=U(),Ae=(0,D.createContext)({providerNames:[],secretKeys:[],loading:!1,error:void 0,refreshSecrets:St.NOOP});const Ne=()=>(0,D.use)(Ae),hs=t=>{let e=(0,ps.c)(14),{children:s}=t,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];let{data:r,isPending:a,error:c,refetch:i}=Se(ys,n);r==null||r.secretKeys,r==null||r.providerNames;let l;e[1]===(r==null?void 0:r.secretKeys)?l=e[2]:(l=(r==null?void 0:r.secretKeys)||[],e[1]=r==null?void 0:r.secretKeys,e[2]=l);let p;e[3]===(r==null?void 0:r.providerNames)?p=e[4]:(p=(r==null?void 0:r.providerNames)||[],e[3]=r==null?void 0:r.providerNames,e[4]=p);let h;e[5]!==c||e[6]!==a||e[7]!==i||e[8]!==l||e[9]!==p?(h={secretKeys:l,providerNames:p,loading:a,error:c,refreshSecrets:i},e[5]=c,e[6]=a,e[7]=i,e[8]=l,e[9]=p,e[10]=h):h=e[10];let m=h,b;return e[11]!==s||e[12]!==m?(b=(0,o.jsx)(Ae,{value:m,children:s}),e[11]=s,e[12]=m,e[13]=b):b=e[13],b},us={isMatch:t=>{if(t instanceof le){let{optionRegex:e}=d.parse(t.description||"");return!!e}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h,optionRegex:m="",inputType:b}=d.parse(t.description||""),f=b==="password",{recommended:u,other:S}=ds(n,m);return(0,o.jsx)(me,{control:e.control,name:s,render:({field:w})=>(0,o.jsxs)(fe,{children:[(0,o.jsx)(_e,{children:l}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(ge,{children:(0,o.jsx)(Ce,{value:w.value?String(w.value):"",onChange:w.onChange,placeholder:h,secretsOnly:f,recommendedKeys:u,otherKeys:S,onCreateSecret:k=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:k,onSuccess:v=>{a(),w.onChange(te(v)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})})}},ms={isMatch:t=>{if(t instanceof le){let{special:e}=d.parse(t.description||"");return e==="secret_textarea"}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h}=d.parse(t.description||"");return(0,o.jsx)(me,{control:e.control,name:s,render:({field:m})=>{let b=m.value?String(m.value):"",f=$e(b)?is(b):b;return(0,o.jsxs)(fe,{children:[(0,o.jsxs)(_e,{className:"flex items-center gap-1",children:[l,(0,o.jsx)(he,{content:"Enter a path to a file on disk, or create a secret to paste JSON directly.",delayDuration:300,children:(0,o.jsx)("button",{type:"button",className:"inline-flex","aria-label":"Credential input help",children:(0,o.jsx)(yt,{className:"h-3.5 w-3.5"})})})]}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(ge,{children:(0,o.jsx)(Ce,{value:f,onChange:u=>{m.onChange(!u||F(u)||$e(u)?u:as(u))},placeholder:h,searchPlaceholder:"Type a file path or paste JSON",formatCustomValueLabel:u=>`Use "${u}" as a file path`,createSecretLabel:"Paste JSON credentials",allowCustomValue:u=>!we(u),allowCreateSecret:u=>!u||we(u),recommendedKeys:[],otherKeys:n,onCreateSecret:u=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:u,multiline:!0,onSuccess:S=>{a(),m.onChange(te(S)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})}})}};function bs(t){return t.provider!=="env"}function gs(t){return t.name}function fs(t){return t.keys}async function ys(){let t=await os.request({}),e=cs(t.secrets).filter(bs).map(gs);return{secretKeys:t.secrets.flatMap(fs).toSorted(),providerNames:e}}var W=U(),_s=[us,ms];const re=t=>{let e=(0,W.c)(2),{children:s}=t,n;return e[0]===s?n=e[1]:(n=(0,o.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:s}),e[0]=s,e[1]=n),n},ne=t=>{let e=(0,W.c)(9),{name:s,color:n,icon:r,onSelect:a}=t,c;e[0]===n?c=e[1]:(c={backgroundColor:n},e[0]=n,e[1]=c);let i;e[2]===s?i=e[3]:(i=(0,o.jsx)("span",{className:"text-white font-medium text-lg",children:s}),e[2]=s,e[3]=i);let l;return e[4]!==r||e[5]!==a||e[6]!==c||e[7]!==i?(l=(0,o.jsxs)("button",{type:"button",className:"py-3 flex flex-col items-center justify-center gap-1 transition-all hover:scale-105 hover:brightness-110 rounded shadow-sm-solid hover:shadow-md-solid",style:c,onClick:a,children:[r,i]}),e[4]=r,e[5]=a,e[6]=c,e[7]=i,e[8]=l):l=e[8],l},xs=t=>{let e=(0,W.c)(25),{onBack:s,isValid:n,libraries:r,preferredLibrary:a,onLibraryChange:c,displayNames:i,libraryLabel:l}=t,p=l===void 0?"Preferred library":l,h;e[0]===s?h=e[1]:(h=(0,o.jsx)(ue,{type:"button",variant:"outline",onClick:s,children:"Back"}),e[0]=s,e[1]=h);let m=!n,b;e[2]===m?b=e[3]:(b=(0,o.jsx)(ue,{type:"submit",disabled:m,children:"Add"}),e[2]=m,e[3]=b);let f;e[4]!==h||e[5]!==b?(f=(0,o.jsxs)("div",{className:"flex gap-2",children:[h,b]}),e[4]=h,e[5]=b,e[6]=f):f=e[6];let u;e[7]===Symbol.for("react.memo_cache_sentinel")?(u=(0,o.jsx)(Dt,{children:(0,o.jsx)(Nt,{placeholder:"Select a library"})}),e[7]=u):u=e[7];let S;e[8]===p?S=e[9]:(S=(0,o.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[u,(0,o.jsx)("span",{className:"text-xs text-muted-foreground",children:p})]}),e[8]=p,e[9]=S);let w;if(e[10]!==i||e[11]!==r){let C;e[13]===i?C=e[14]:(C=N=>(0,o.jsx)(Rt,{value:N,children:i[N]??N},N),e[13]=i,e[14]=C),w=r.map(C),e[10]=i,e[11]=r,e[12]=w}else w=e[12];let k;e[15]===w?k=e[16]:(k=(0,o.jsx)(Tt,{children:(0,o.jsx)(Lt,{children:w})}),e[15]=w,e[16]=k);let v;e[17]!==c||e[18]!==a||e[19]!==S||e[20]!==k?(v=(0,o.jsx)("div",{children:(0,o.jsxs)(It,{value:a,onValueChange:c,children:[S,k]})}),e[17]=c,e[18]=a,e[19]=S,e[20]=k,e[21]=v):v=e[21];let A;return e[22]!==v||e[23]!==f?(A=(0,o.jsxs)("div",{className:"flex gap-2 justify-between",children:[f,v]}),e[22]=v,e[23]=f,e[24]=A):A=e[24],A};function Re(){let t=(0,W.c)(4),{createNewCell:e}=ft(),s=Zt(),n=bt(kt),r;return t[0]!==n||t[1]!==e||t[2]!==s?(r=a=>{/\bmo\./.test(a)&&Xt({autoInstantiate:n,createNewCell:e,fromCellId:s}),e({code:a,before:!1,cellId:s??"__end__",skipIfCodeExists:!0})},t[0]=n,t[1]=e,t[2]=s,t[3]=r):r=t[3],r}const Te=t=>{let e=(0,W.c)(30),{schema:s,libraries:n,preferredLibrary:r,displayNames:a,libraryLabel:c,generateCode:i,onSubmit:l,onBack:p}=t,h;e[0]===s?h=e[1]:(h=rs(s),e[0]=s,e[1]=h);let m=h,b;e[2]===s?b=e[3]:(b=Mt(s),e[2]=s,e[3]=b);let f;e[4]!==m||e[5]!==b?(f={defaultValues:m,resolver:b,reValidateMode:"onChange"},e[4]=m,e[5]=b,e[6]=f):f=e[6];let u=Ht(f),[S,w]=D.useState(r),k=Re(),v;e[7]!==i||e[8]!==k||e[9]!==l||e[10]!==S?(v=ht=>{k(i(ht,S)),l()},e[7]=i,e[8]=k,e[9]=l,e[10]=S,e[11]=v):v=e[11];let A=v,C;e[12]!==u||e[13]!==A?(C=u.handleSubmit(A),e[12]=u,e[13]=A,e[14]=C):C=e[14];let N;e[15]===Symbol.for("react.memo_cache_sentinel")?(N=(0,o.jsx)(Kt,{}),e[15]=N):N=e[15];let P;e[16]!==u||e[17]!==s?(P=(0,o.jsx)(hs,{children:(0,o.jsx)(ns,{schema:s,form:u,renderers:_s,children:N})}),e[16]=u,e[17]=s,e[18]=P):P=e[18];let q;e[19]!==a||e[20]!==u.formState.isValid||e[21]!==n||e[22]!==c||e[23]!==p||e[24]!==S?(q=(0,o.jsx)(xs,{onBack:p,isValid:u.formState.isValid,libraries:n,preferredLibrary:S,onLibraryChange:w,displayNames:a,libraryLabel:c}),e[19]=a,e[20]=u.formState.isValid,e[21]=n,e[22]=c,e[23]=p,e[24]=S,e[25]=q):q=e[25];let j;return e[26]!==C||e[27]!==P||e[28]!==q?(j=(0,o.jsxs)("form",{onSubmit:C,className:"space-y-4",children:[P,q]}),e[26]=C,e[27]=P,e[28]=q,e[29]=j):j=e[29],j};function E(){return g().optional().describe(d.of({label:"Password",inputType:"password",optionRegex:"(password|passwd|pgpassword|db.?pass(word)?)"}))}function Y(t,e){let s=g();return s=e?s.nonempty():s.optional(),s=s.describe(d.of({label:t||"Token",inputType:"password",optionRegex:"(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))"})),s}function X(){return g().optional().describe(d.of({label:"Warehouse Name",optionRegex:"(warehouse|snowflake.?warehouse)"}))}function oe(t,e){let s=g();return s=e?s.nonempty():s.optional(),s.describe(d.of({label:t||"URI",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}function I(t){return g().nonempty().describe(d.of({label:t||"Host",optionRegex:"^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)"}))}function R(){return g().describe(d.of({label:"Database",optionRegex:"(database|db.?name|pgdatabase|^DB$|^DATABASE$)"}))}function Ss(){return g().describe(d.of({label:"Schema",optionRegex:"(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)"}))}function T(){return g().nonempty().describe(d.of({label:"Username",optionRegex:"(username|pguser|db.?user|^USER$|_USER$)"}))}function O(t){let e=xt().describe(d.of({label:"Port",inputType:"number",placeholder:t==null?void 0:t.toString()})).transform(Number).refine(s=>s>=0&&s<=65535,{message:"Port must be between 0 and 65535"});return t===void 0?e:e.default(t)}function Le(){return L().default(!1).describe(d.of({label:"Read Only"}))}const De=_({type:x("postgres"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:E(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Ie=_({type:x("mysql"),host:I(),port:O(3306),database:R(),username:T(),password:E(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Pe=_({type:x("sqlite"),database:R().describe(d.of({label:"Database Path"}))}).describe(d.of({direction:"two-columns"})),qe=_({type:x("duckdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),Fe=_({type:x("motherduck"),database:R().default("my_db").describe(d.of({label:"Database Name"})),token:Y()}).describe(d.of({direction:"two-columns"})),Ee=_({type:x("snowflake"),account:g().nonempty().describe(d.of({label:"Account",optionRegex:"(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)"})),warehouse:g().optional().describe(d.of({label:"Warehouse",optionRegex:"(snowflake.?warehouse|warehouse)"})),database:R(),schema:g().optional().describe(d.of({label:"Schema",optionRegex:"(snowflake.?schema|^SCHEMA$|_SCHEMA$)"})),role:g().optional().describe(d.of({label:"Role"})),authType:K("type",[_({type:x("Password"),username:T(),password:E(),enable_mfa:L().default(!1).describe(d.of({label:"Enable MFA (Duo Push)"}))}),_({type:x("SSO (Browser)"),username:T()}),_({type:x("Key Pair"),username:T(),private_key_path:g().nonempty().describe(d.of({label:"Private Key Path",placeholder:"/path/to/rsa_key.p8"})),private_key_passphrase:g().optional().describe(d.of({label:"Private Key Passphrase",inputType:"password",optionRegex:"(passphrase|private.?key.?passphrase|key.?passphrase)"}))}),_({type:x("OAuth / PAT"),token:Y("Token",!0)})]).default({type:"Password",username:"username",enable_mfa:!1}).describe(d.of({special:"tabs"}))}).describe(d.of({direction:"two-columns"})),Oe=_({type:x("bigquery"),project:g().nonempty().describe(d.of({label:"Project ID",optionRegex:"(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)"})),dataset:g().nonempty().describe(d.of({label:"Dataset",optionRegex:"(bigquery.?dataset|dataset)"})),credentials_json:g().describe(d.of({label:"Credentials JSON",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),Be=_({type:x("clickhouse_connect"),host:I(),port:O(8123).optional(),username:T(),password:E(),secure:L().default(!1).describe(d.of({label:"Use HTTPs"})),proxy_path:g().optional().describe(d.of({label:"Proxy Path",placeholder:"/clickhouse"}))}).describe(d.of({direction:"two-columns"})),Ue=_({type:x("timeplus"),host:I().default("localhost"),port:O(8123).optional(),username:T().default("default"),password:E().default("")}).describe(d.of({direction:"two-columns"})),Ke=_({type:x("chdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),He=_({type:x("trino"),host:I(),port:O(8080),database:R(),schema:Ss().optional(),username:T(),password:E(),async_support:L().default(!1).describe(d.of({label:"Async Support"}))}).describe(d.of({direction:"two-columns"})),Me=_({type:x("iceberg"),name:g().describe(d.of({label:"Catalog Name"})),catalog:K("type",[_({type:x("REST"),warehouse:X(),uri:g().optional().describe(d.of({label:"URI",placeholder:"https://",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"})),token:Y()}),_({type:x("SQL"),warehouse:X(),uri:g().optional().describe(d.of({label:"URI",placeholder:"jdbc:iceberg://host:port/database",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}),_({type:x("Hive"),warehouse:X(),uri:oe()}),_({type:x("Glue"),warehouse:X(),uri:oe()}),_({type:x("DynamoDB"),"dynamodb.profile-name":g().optional().describe(d.of({label:"Profile Name"})),"dynamodb.region":g().optional().describe(d.of({label:"Region"})),"dynamodb.access-key-id":g().optional().describe(d.of({label:"Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),"dynamodb.secret-access-key":g().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),"dynamodb.session-token":g().optional().describe(d.of({label:"Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))})]).default({type:"REST",token:void 0}).describe(d.of({special:"tabs"}))}),We=_({type:x("datafusion"),sessionContext:L().optional().describe(d.of({label:"Use Session Context"}))}),Ge=_({type:x("pyspark"),host:I().optional(),port:O().optional()}),Ve=_({type:x("redshift"),host:I(),port:O(5439),connectionType:K("type",[_({type:x("IAM credentials"),region:g().describe(d.of({label:"Region"})),aws_access_key_id:g().nonempty().describe(d.of({label:"AWS Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),aws_secret_access_key:g().nonempty().describe(d.of({label:"AWS Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),aws_session_token:g().optional().describe(d.of({label:"AWS Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))}),_({type:x("DB credentials"),user:T(),password:E()})]).default({type:"IAM credentials",aws_access_key_id:"",aws_secret_access_key:"",region:""}),database:R()}).describe(d.of({direction:"two-columns"})),ze=_({type:x("databricks"),access_token:Y("Access Token",!0),server_hostname:I("Server Hostname"),http_path:oe("HTTP Path",!0),catalog:g().optional().describe(d.of({label:"Catalog"})),schema:g().optional().describe(d.of({label:"Schema"}))}).describe(d.of({direction:"two-columns"})),Qe=_({type:x("supabase"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:E(),disable_client_pooling:L().default(!1).describe(d.of({label:"Disable Client-Side Pooling"}))}).describe(d.of({direction:"two-columns"})),ks=K("type",[De,Ie,Pe,qe,Fe,Ee,Oe,Be,Ue,Ke,He,Me,We,Ge,Ve,ze,Qe]),Je={sqlmodel:"SQLModel",sqlalchemy:"SQLAlchemy",duckdb:"DuckDB",clickhouse_connect:"ClickHouse Connect",chdb:"chDB",pyiceberg:"PyIceberg",ibis:"Ibis",motherduck:"MotherDuck",redshift:"Redshift",databricks:"Databricks"};var $=class{constructor(t,e,s){this.connection=t,this.orm=e,this.secrets=s}get imports(){let t=new Set(this.generateImports());switch(this.orm){case"sqlalchemy":t.add("import sqlalchemy");break;case"sqlmodel":t.add("import sqlmodel");break;case"duckdb":t.add("import duckdb");break;case"ibis":t.add("import ibis");break}return t}},ws=t=>`_${t}`,js=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e,s){if(t=ws(t),F(e)){let n=je(e),r=s?`os.environ.get("${n}", "${s}")`:`os.environ.get("${n}")`;return this.secrets[t]=r,t}if(s!=null){let n=`os.environ.get("${e}", "${s}")`;return this.secrets[t]=n,t}return typeof e=="number"||typeof e=="number"?`${e}`:typeof e=="boolean"?H(e):e?`"${e}"`:""}printInFString(t,e,s){if(e===void 0)return"";if(typeof e=="number")return`${e}`;if(typeof e=="boolean")return H(e);let n=this.print(t,e,s);return n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1):`{${n}}`}printPassword(t,e,s,n){let r=s?this.printInFString.bind(this):this.print.bind(this);return F(t)?r(n||"password",t):r(n||"password",e,t)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
|
|
1
|
+
var ut=Object.defineProperty;var mt=(t,e,s)=>e in t?ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var G=(t,e,s)=>mt(t,typeof e!="symbol"?e+"":e,s);import{o as ie}from"./chunk-C4rtOYze.js";import{u as bt}from"./useEvent-GCVIknuR.js";import{t as gt}from"./react-C60yClUi.js";import{Ct as ce,E as ft,Ir as yt,Lt as _t,ur as y}from"./cells-DD-zwhxi.js";import{D as K,L as g,P as _,T as L,_ as le,i as xt,k as x}from"./zod-BIDX-mZr.js";import{t as U}from"./compiler-runtime-DnimoHo0.js";import{_ as St}from"./useEventListener-DpNnLPuE.js";import{c as kt}from"./utils-C8Yt16Y7.js";import{t as V}from"./cn-DCUzRj2J.js";import{t as wt}from"./jsx-runtime-3wZU7vFS.js";import{a as jt,c as de,i as vt,o as pe,r as $t,s as Ct,t as At}from"./popover-B96fOqfH.js";import{c as Nt,i as Rt,n as Tt,r as Lt,s as Dt,t as It}from"./select-CPo-KTTe.js";import{i as Pt,t as he}from"./tooltip-C9LWGQ7Y.js";import{t as ue}from"./button-W__YVea9.js";import{r as M}from"./strings-DmKKoXrM.js";import{r as qt,t as Et}from"./x-4y-nyVDU.js";import{t as Ft}from"./circle-plus-C5gP9LrU.js";import{t as Ot}from"./components-CozWCL5N.js";import{n as Z}from"./DeferredRequestRegistry-6TRSC3VZ.js";import{t as Bt}from"./plus-r1QITpsJ.js";import{t as Ut}from"./sparkles-DwqcWrJl.js";import{a as me,c as be,i as Kt,n as ge,o as fe,p as Ht,r as ye,s as _e,u as Mt}from"./form-Cj3PfSUI.js";import{a as Wt,c as Gt,l as Vt,n as zt,r as Qt,t as Jt}from"./dialog-WU4x2UpK.js";import{n as xe}from"./ImperativeModal-Dxj31V4A.js";import{t as z}from"./links-BeU4kHTI.js";import{t as Yt}from"./useIframeCapabilities-DBacdN1t.js";import{r as Xt}from"./html-to-image-CajdmeRM.js";import{o as Zt}from"./focus-DCZbWsqm.js";import{n as Se}from"./useAsyncData-BcvSvTUt.js";import{a as es,c as ke,i as Q,o as J,s as ts,t as ss}from"./command-D5LtSvbN.js";import{c as d,o as rs,t as ns}from"./form-DHy5wB3F.js";import{t as os}from"./request-registry-bUowmAtG.js";import{a as ee,c as te,d as as,f as is,i as we,l as je,n as cs,o as ls,r as se,s as E,t as ve,u as $e}from"./write-secret-modal-DBPF-L6f.js";var D=ie(gt(),1),o=ie(wt(),1);function ds(t,e){if(!e)return{recommended:[],other:[...t]};let s;try{s=new RegExp(e,"i")}catch{return{recommended:[],other:[...t]}}let n=[],r=[];for(let a of t)s.test(a)?n.push(a):r.push(a);return{recommended:n,other:r}}const Ce=({value:t,onChange:e,placeholder:s,secretsOnly:n=!1,recommendedKeys:r,otherKeys:a,onCreateSecret:c,className:i,searchPlaceholder:l,formatCustomValueLabel:p=f=>`Use "${f}"`,createSecretLabel:h="Create a new secret",allowCustomValue:m,allowCreateSecret:b})=>{let[f,u]=(0,D.useState)(!1),[S,w]=(0,D.useState)(""),k=S.trim(),v=!n&&k.length>0&&k!==t&&((m==null?void 0:m(k))??!0),A=(b==null?void 0:b(k))??!0,C=t?E(t)?ls(t):t:null,N=j=>{e(te(j)),u(!1),w("")},P=j=>{e(j),u(!1),w("")},q=()=>{e(""),w(""),u(!1)};return(0,o.jsxs)("div",{className:V("flex w-full min-w-48 mb-1 items-center gap-1",i),children:[(0,o.jsxs)(At,{modal:!0,open:f,onOpenChange:j=>{u(j),j||w("")},children:[(0,o.jsx)(vt,{asChild:!0,children:(0,o.jsxs)("button",{type:"button",className:V("flex h-6 min-w-0 flex-1 shadow-xs-solid items-center justify-between","rounded-sm border border-input bg-background px-1.5 text-sm font-code ring-offset-background placeholder:text-muted-foreground","hover:shadow-sm-solid focus:outline-hidden focus:ring-1 focus:ring-ring focus:border-primary focus:shadow-md-solid",E(t)&&"bg-accent"),"aria-expanded":f,children:[(0,o.jsx)("span",{className:"truncate flex-1 min-w-0 text-left flex items-center gap-1.5",children:C?(0,o.jsxs)(o.Fragment,{children:[E(t)&&(0,o.jsx)(Z,{className:"h-3 w-3 shrink-0 opacity-70"}),(0,o.jsx)("span",{className:"truncate",children:C})]}):(0,o.jsx)("span",{className:"text-muted-foreground",children:s})}),(0,o.jsx)(qt,{className:"ml-1 h-4 w-4 opacity-50 shrink-0"})]})}),(0,o.jsx)($t,{className:"w-(--radix-popover-trigger-width) p-0",align:"start",children:(0,o.jsxs)(ss,{children:[(0,o.jsx)(es,{placeholder:l??(n?"Search secrets...":"Type a value or search secrets..."),rootClassName:"px-1 h-8",autoFocus:!0,value:S,onValueChange:w}),(0,o.jsxs)(ts,{className:"max-h-60 overscroll-contain",children:[v&&(0,o.jsx)(Q,{children:(0,o.jsx)(J,{value:`use custom value ${k}`,onSelect:()=>P(k),children:p(k)})}),A&&(0,o.jsx)(Q,{className:"mt-0",children:(0,o.jsxs)(J,{value:`create new secret ${k}`,onSelect:()=>{let j=k||void 0;u(!1),w(""),c(j)},children:[(0,o.jsx)(Ft,{className:"mr-2 h-3.5 w-3.5"}),h]})}),r.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:"Recommended",children:r.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]}),a.length>0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ke,{className:"mt-0"}),(0,o.jsx)(Q,{heading:r.length>0?"Other":void 0,children:a.map(j=>(0,o.jsxs)(J,{value:j,onSelect:()=>N(j),children:[(0,o.jsx)(Z,{className:"mr-2 h-3 w-3 opacity-70"}),j]},j))})]})]})]})})]}),t&&(0,o.jsx)("button",{type:"button","aria-label":"Clear",className:V("flex h-6 w-6 shrink-0 items-center justify-center rounded-sm","text-muted-foreground hover:bg-muted hover:text-foreground","focus:outline-hidden focus:ring-1 focus:ring-ring"),onClick:q,children:(0,o.jsx)(Et,{className:"h-3.5 w-3.5"})})]})};var ps=U(),Ae=(0,D.createContext)({providerNames:[],secretKeys:[],loading:!1,error:void 0,refreshSecrets:St.NOOP});const Ne=()=>(0,D.use)(Ae),hs=t=>{let e=(0,ps.c)(14),{children:s}=t,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];let{data:r,isPending:a,error:c,refetch:i}=Se(ys,n);r==null||r.secretKeys,r==null||r.providerNames;let l;e[1]===(r==null?void 0:r.secretKeys)?l=e[2]:(l=(r==null?void 0:r.secretKeys)||[],e[1]=r==null?void 0:r.secretKeys,e[2]=l);let p;e[3]===(r==null?void 0:r.providerNames)?p=e[4]:(p=(r==null?void 0:r.providerNames)||[],e[3]=r==null?void 0:r.providerNames,e[4]=p);let h;e[5]!==c||e[6]!==a||e[7]!==i||e[8]!==l||e[9]!==p?(h={secretKeys:l,providerNames:p,loading:a,error:c,refreshSecrets:i},e[5]=c,e[6]=a,e[7]=i,e[8]=l,e[9]=p,e[10]=h):h=e[10];let m=h,b;return e[11]!==s||e[12]!==m?(b=(0,o.jsx)(Ae,{value:m,children:s}),e[11]=s,e[12]=m,e[13]=b):b=e[13],b},us={isMatch:t=>{if(t instanceof le){let{optionRegex:e}=d.parse(t.description||"");return!!e}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h,optionRegex:m="",inputType:b}=d.parse(t.description||""),f=b==="password",{recommended:u,other:S}=ds(n,m);return(0,o.jsx)(me,{control:e.control,name:s,render:({field:w})=>(0,o.jsxs)(fe,{children:[(0,o.jsx)(_e,{children:l}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(ge,{children:(0,o.jsx)(Ce,{value:w.value?String(w.value):"",onChange:w.onChange,placeholder:h,secretsOnly:f,recommendedKeys:u,otherKeys:S,onCreateSecret:k=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:k,onSuccess:v=>{a(),w.onChange(te(v)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})})}},ms={isMatch:t=>{if(t instanceof le){let{special:e}=d.parse(t.description||"");return e==="secret_textarea"}return!1},Component:({schema:t,form:e,path:s})=>{let{secretKeys:n,providerNames:r,refreshSecrets:a}=Ne(),{openModal:c,closeModal:i}=xe(),{label:l,description:p,placeholder:h}=d.parse(t.description||"");return(0,o.jsx)(me,{control:e.control,name:s,render:({field:m})=>{let b=m.value?String(m.value):"",f=$e(b)?is(b):b;return(0,o.jsxs)(fe,{children:[(0,o.jsxs)(_e,{className:"flex items-center gap-1",children:[l,(0,o.jsx)(he,{content:"Enter a path to a file on disk, or create a secret to paste JSON directly.",delayDuration:300,children:(0,o.jsx)("button",{type:"button",className:"inline-flex","aria-label":"Credential input help",children:(0,o.jsx)(yt,{className:"h-3.5 w-3.5"})})})]}),(0,o.jsx)(ye,{children:p}),(0,o.jsx)(ge,{children:(0,o.jsx)(Ce,{value:f,onChange:u=>{m.onChange(!u||E(u)||$e(u)?u:as(u))},placeholder:h,searchPlaceholder:"Type a file path or paste JSON",formatCustomValueLabel:u=>`Use "${u}" as a file path`,createSecretLabel:"Paste JSON credentials",allowCustomValue:u=>!we(u),allowCreateSecret:u=>!u||we(u),recommendedKeys:[],otherKeys:n,onCreateSecret:u=>{c((0,o.jsx)(ve,{providerNames:r,initialValue:u,multiline:!0,onSuccess:S=>{a(),m.onChange(te(S)),i()},onClose:i}))}})}),(0,o.jsx)(be,{})]})}})}};function bs(t){return t.provider!=="env"}function gs(t){return t.name}function fs(t){return t.keys}async function ys(){let t=await os.request({}),e=cs(t.secrets).filter(bs).map(gs);return{secretKeys:t.secrets.flatMap(fs).toSorted(),providerNames:e}}var W=U(),_s=[us,ms];const re=t=>{let e=(0,W.c)(2),{children:s}=t,n;return e[0]===s?n=e[1]:(n=(0,o.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:s}),e[0]=s,e[1]=n),n},ne=t=>{let e=(0,W.c)(9),{name:s,color:n,icon:r,onSelect:a}=t,c;e[0]===n?c=e[1]:(c={backgroundColor:n},e[0]=n,e[1]=c);let i;e[2]===s?i=e[3]:(i=(0,o.jsx)("span",{className:"text-white font-medium text-lg",children:s}),e[2]=s,e[3]=i);let l;return e[4]!==r||e[5]!==a||e[6]!==c||e[7]!==i?(l=(0,o.jsxs)("button",{type:"button",className:"py-3 flex flex-col items-center justify-center gap-1 transition-all hover:scale-105 hover:brightness-110 rounded shadow-sm-solid hover:shadow-md-solid",style:c,onClick:a,children:[r,i]}),e[4]=r,e[5]=a,e[6]=c,e[7]=i,e[8]=l):l=e[8],l},xs=t=>{let e=(0,W.c)(25),{onBack:s,isValid:n,libraries:r,preferredLibrary:a,onLibraryChange:c,displayNames:i,libraryLabel:l}=t,p=l===void 0?"Preferred library":l,h;e[0]===s?h=e[1]:(h=(0,o.jsx)(ue,{type:"button",variant:"outline",onClick:s,children:"Back"}),e[0]=s,e[1]=h);let m=!n,b;e[2]===m?b=e[3]:(b=(0,o.jsx)(ue,{type:"submit",disabled:m,children:"Add"}),e[2]=m,e[3]=b);let f;e[4]!==h||e[5]!==b?(f=(0,o.jsxs)("div",{className:"flex gap-2",children:[h,b]}),e[4]=h,e[5]=b,e[6]=f):f=e[6];let u;e[7]===Symbol.for("react.memo_cache_sentinel")?(u=(0,o.jsx)(Dt,{children:(0,o.jsx)(Nt,{placeholder:"Select a library"})}),e[7]=u):u=e[7];let S;e[8]===p?S=e[9]:(S=(0,o.jsxs)("div",{className:"flex flex-col gap-1 items-end",children:[u,(0,o.jsx)("span",{className:"text-xs text-muted-foreground",children:p})]}),e[8]=p,e[9]=S);let w;if(e[10]!==i||e[11]!==r){let C;e[13]===i?C=e[14]:(C=N=>(0,o.jsx)(Rt,{value:N,children:i[N]??N},N),e[13]=i,e[14]=C),w=r.map(C),e[10]=i,e[11]=r,e[12]=w}else w=e[12];let k;e[15]===w?k=e[16]:(k=(0,o.jsx)(Tt,{children:(0,o.jsx)(Lt,{children:w})}),e[15]=w,e[16]=k);let v;e[17]!==c||e[18]!==a||e[19]!==S||e[20]!==k?(v=(0,o.jsx)("div",{children:(0,o.jsxs)(It,{value:a,onValueChange:c,children:[S,k]})}),e[17]=c,e[18]=a,e[19]=S,e[20]=k,e[21]=v):v=e[21];let A;return e[22]!==v||e[23]!==f?(A=(0,o.jsxs)("div",{className:"flex gap-2 justify-between",children:[f,v]}),e[22]=v,e[23]=f,e[24]=A):A=e[24],A};function Re(){let t=(0,W.c)(4),{createNewCell:e}=ft(),s=Zt(),n=bt(kt),r;return t[0]!==n||t[1]!==e||t[2]!==s?(r=a=>{/\bmo\./.test(a)&&Xt({autoInstantiate:n,createNewCell:e,fromCellId:s}),e({code:a,before:!1,cellId:s??"__end__",skipIfCodeExists:!0})},t[0]=n,t[1]=e,t[2]=s,t[3]=r):r=t[3],r}const Te=t=>{let e=(0,W.c)(30),{schema:s,libraries:n,preferredLibrary:r,displayNames:a,libraryLabel:c,generateCode:i,onSubmit:l,onBack:p}=t,h;e[0]===s?h=e[1]:(h=rs(s),e[0]=s,e[1]=h);let m=h,b;e[2]===s?b=e[3]:(b=Mt(s),e[2]=s,e[3]=b);let f;e[4]!==m||e[5]!==b?(f={defaultValues:m,resolver:b,reValidateMode:"onChange"},e[4]=m,e[5]=b,e[6]=f):f=e[6];let u=Ht(f),[S,w]=D.useState(r),k=Re(),v;e[7]!==i||e[8]!==k||e[9]!==l||e[10]!==S?(v=ht=>{k(i(ht,S)),l()},e[7]=i,e[8]=k,e[9]=l,e[10]=S,e[11]=v):v=e[11];let A=v,C;e[12]!==u||e[13]!==A?(C=u.handleSubmit(A),e[12]=u,e[13]=A,e[14]=C):C=e[14];let N;e[15]===Symbol.for("react.memo_cache_sentinel")?(N=(0,o.jsx)(Kt,{}),e[15]=N):N=e[15];let P;e[16]!==u||e[17]!==s?(P=(0,o.jsx)(hs,{children:(0,o.jsx)(ns,{schema:s,form:u,renderers:_s,children:N})}),e[16]=u,e[17]=s,e[18]=P):P=e[18];let q;e[19]!==a||e[20]!==u.formState.isValid||e[21]!==n||e[22]!==c||e[23]!==p||e[24]!==S?(q=(0,o.jsx)(xs,{onBack:p,isValid:u.formState.isValid,libraries:n,preferredLibrary:S,onLibraryChange:w,displayNames:a,libraryLabel:c}),e[19]=a,e[20]=u.formState.isValid,e[21]=n,e[22]=c,e[23]=p,e[24]=S,e[25]=q):q=e[25];let j;return e[26]!==C||e[27]!==P||e[28]!==q?(j=(0,o.jsxs)("form",{onSubmit:C,className:"space-y-4",children:[P,q]}),e[26]=C,e[27]=P,e[28]=q,e[29]=j):j=e[29],j};function F(){return g().optional().describe(d.of({label:"Password",inputType:"password",optionRegex:"(password|passwd|pgpassword|db.?pass(word)?)"}))}function Y(t,e){let s=g();return s=e?s.nonempty():s.optional(),s=s.describe(d.of({label:t||"Token",inputType:"password",optionRegex:"(token|api.?key|access.?token|auth.?token|(^|_)pat(_|$))"})),s}function X(){return g().optional().describe(d.of({label:"Warehouse Name",optionRegex:"(warehouse|snowflake.?warehouse)"}))}function oe(t,e){let s=g();return s=e?s.nonempty():s.optional(),s.describe(d.of({label:t||"URI",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}function I(t){return g().nonempty().describe(d.of({label:t||"Host",optionRegex:"^(?!.*(kubernetes|gpg)).*(host(name)?|pghost|db.?host|database.?host|mysql.?host|postgres.?host|server.?host)"}))}function R(){return g().describe(d.of({label:"Database",optionRegex:"(database|db.?name|pgdatabase|^DB$|^DATABASE$)"}))}function Ss(){return g().describe(d.of({label:"Schema",optionRegex:"(^SCHEMA$|db.?schema|postgres.?schema|pg.?schema|_SCHEMA$)"}))}function T(){return g().nonempty().describe(d.of({label:"Username",optionRegex:"(username|pguser|db.?user|^USER$|_USER$)"}))}function O(t){let e=xt().describe(d.of({label:"Port",inputType:"number",placeholder:t==null?void 0:t.toString()})).transform(Number).refine(s=>s>=0&&s<=65535,{message:"Port must be between 0 and 65535"});return t===void 0?e:e.default(t)}function Le(){return L().default(!1).describe(d.of({label:"Read Only"}))}const De=_({type:x("postgres"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:F(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Ie=_({type:x("mysql"),host:I(),port:O(3306),database:R(),username:T(),password:F(),ssl:L().default(!1).describe(d.of({label:"Use SSL"}))}).describe(d.of({direction:"two-columns"})),Pe=_({type:x("sqlite"),database:R().describe(d.of({label:"Database Path"}))}).describe(d.of({direction:"two-columns"})),qe=_({type:x("duckdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),Ee=_({type:x("motherduck"),database:R().default("my_db").describe(d.of({label:"Database Name"})),token:Y()}).describe(d.of({direction:"two-columns"})),Fe=_({type:x("snowflake"),account:g().nonempty().describe(d.of({label:"Account",optionRegex:"(snowflake.?account|^SNOWFLAKE_ACCOUNT$|account.?id)"})),warehouse:g().optional().describe(d.of({label:"Warehouse",optionRegex:"(snowflake.?warehouse|warehouse)"})),database:R(),schema:g().optional().describe(d.of({label:"Schema",optionRegex:"(snowflake.?schema|^SCHEMA$|_SCHEMA$)"})),role:g().optional().describe(d.of({label:"Role"})),authType:K("type",[_({type:x("Password"),username:T(),password:F(),enable_mfa:L().default(!1).describe(d.of({label:"Enable MFA (Duo Push)"}))}),_({type:x("SSO (Browser)"),username:T()}),_({type:x("Key Pair"),username:T(),private_key_path:g().nonempty().describe(d.of({label:"Private Key Path",placeholder:"/path/to/rsa_key.p8"})),private_key_passphrase:g().optional().describe(d.of({label:"Private Key Passphrase",inputType:"password",optionRegex:"(passphrase|private.?key.?passphrase|key.?passphrase)"}))}),_({type:x("OAuth / PAT"),token:Y("Token",!0)})]).default({type:"Password",username:"username",enable_mfa:!1}).describe(d.of({special:"tabs"}))}).describe(d.of({direction:"two-columns"})),Oe=_({type:x("bigquery"),project:g().nonempty().describe(d.of({label:"Project ID",optionRegex:"(bigquery.?project|gcp.?project|google.?cloud.?project|project.?id)"})),dataset:g().nonempty().describe(d.of({label:"Dataset",optionRegex:"(bigquery.?dataset|dataset)"})),credentials_json:g().describe(d.of({label:"Credentials JSON",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),Be=_({type:x("clickhouse_connect"),host:I(),port:O(8123).optional(),username:T(),password:F(),secure:L().default(!1).describe(d.of({label:"Use HTTPs"})),proxy_path:g().optional().describe(d.of({label:"Proxy Path",placeholder:"/clickhouse"}))}).describe(d.of({direction:"two-columns"})),Ue=_({type:x("timeplus"),host:I().default("localhost"),port:O(8123).optional(),username:T().default("default"),password:F().default("")}).describe(d.of({direction:"two-columns"})),Ke=_({type:x("chdb"),database:R().describe(d.of({label:"Database Path"})),read_only:Le()}).describe(d.of({direction:"two-columns"})),He=_({type:x("trino"),host:I(),port:O(8080),database:R(),schema:Ss().optional(),username:T(),password:F(),async_support:L().default(!1).describe(d.of({label:"Async Support"}))}).describe(d.of({direction:"two-columns"})),Me=_({type:x("iceberg"),name:g().describe(d.of({label:"Catalog Name"})),catalog:K("type",[_({type:x("REST"),warehouse:X(),uri:g().optional().describe(d.of({label:"URI",placeholder:"https://",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"})),token:Y()}),_({type:x("SQL"),warehouse:X(),uri:g().optional().describe(d.of({label:"URI",placeholder:"jdbc:iceberg://host:port/database",optionRegex:"(uri|url|connection.?string|database.?url|jdbc)"}))}),_({type:x("Hive"),warehouse:X(),uri:oe()}),_({type:x("Glue"),warehouse:X(),uri:oe()}),_({type:x("DynamoDB"),"dynamodb.profile-name":g().optional().describe(d.of({label:"Profile Name"})),"dynamodb.region":g().optional().describe(d.of({label:"Region"})),"dynamodb.access-key-id":g().optional().describe(d.of({label:"Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),"dynamodb.secret-access-key":g().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),"dynamodb.session-token":g().optional().describe(d.of({label:"Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))})]).default({type:"REST",token:void 0}).describe(d.of({special:"tabs"}))}),We=_({type:x("datafusion"),sessionContext:L().optional().describe(d.of({label:"Use Session Context"}))}),Ge=_({type:x("pyspark"),host:I().optional(),port:O().optional()}),Ve=_({type:x("redshift"),host:I(),port:O(5439),connectionType:K("type",[_({type:x("IAM credentials"),region:g().describe(d.of({label:"Region"})),aws_access_key_id:g().nonempty().describe(d.of({label:"AWS Access Key ID",inputType:"password",optionRegex:"(access.?key.?id|aws.?access.?key)"})),aws_secret_access_key:g().nonempty().describe(d.of({label:"AWS Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|aws.?secret)"})),aws_session_token:g().optional().describe(d.of({label:"AWS Session Token",inputType:"password",optionRegex:"(session.?token|aws.?session)"}))}),_({type:x("DB credentials"),user:T(),password:F()})]).default({type:"IAM credentials",aws_access_key_id:"",aws_secret_access_key:"",region:""}),database:R()}).describe(d.of({direction:"two-columns"})),ze=_({type:x("databricks"),access_token:Y("Access Token",!0),server_hostname:I("Server Hostname"),http_path:oe("HTTP Path",!0),catalog:g().optional().describe(d.of({label:"Catalog"})),schema:g().optional().describe(d.of({label:"Schema"}))}).describe(d.of({direction:"two-columns"})),Qe=_({type:x("supabase"),host:I(),port:O(5432).optional(),database:R(),username:T(),password:F(),disable_client_pooling:L().default(!1).describe(d.of({label:"Disable Client-Side Pooling"}))}).describe(d.of({direction:"two-columns"})),ks=K("type",[De,Ie,Pe,qe,Ee,Fe,Oe,Be,Ue,Ke,He,Me,We,Ge,Ve,ze,Qe]),Je={sqlmodel:"SQLModel",sqlalchemy:"SQLAlchemy",duckdb:"DuckDB",clickhouse_connect:"ClickHouse Connect",chdb:"chDB",pyiceberg:"PyIceberg",ibis:"Ibis",motherduck:"MotherDuck",redshift:"Redshift",databricks:"Databricks"};var $=class{constructor(t,e,s){this.connection=t,this.orm=e,this.secrets=s}get imports(){let t=new Set(this.generateImports());switch(this.orm){case"sqlalchemy":t.add("import sqlalchemy");break;case"sqlmodel":t.add("import sqlmodel");break;case"duckdb":t.add("import duckdb");break;case"ibis":t.add("import ibis");break}return t}},ws=t=>`_${t}`,js=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e,s){if(t=ws(t),E(e)){let n=je(e),r=s?`os.environ.get("${n}", "${s}")`:`os.environ.get("${n}")`;return this.secrets[t]=r,t}if(s!=null){let n=`os.environ.get("${e}", "${s}")`;return this.secrets[t]=n,t}return typeof e=="number"||typeof e=="number"?`${e}`:typeof e=="boolean"?H(e):e?`"${e}"`:""}printInFString(t,e,s){if(e===void 0)return"";if(typeof e=="number")return`${e}`;if(typeof e=="boolean")return H(e);let n=this.print(t,e,s);return n.startsWith('"')&&n.endsWith('"')?n.slice(1,-1):`{${n}}`}printPassword(t,e,s,n){let r=s?this.printInFString.bind(this):this.print.bind(this);return E(t)?r(n||"password",t):r(n||"password",e,t)}getSecrets(){return this.secrets}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
|
|
2
2
|
`)}},vs=class extends ${generateImports(){return[]}generateConnectionCode(){let t=this.connection.ssl?", connect_args={'sslmode': 'require'}":"",e=this.secrets.printPassword(this.connection.password,"POSTGRES_PASSWORD",!0);return y(`
|
|
3
3
|
DATABASE_URL = f"postgresql://${this.secrets.printInFString("username",this.connection.username)}:${e}@${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}/${this.secrets.printInFString("database",this.connection.database)}"
|
|
4
4
|
engine = ${this.orm}.create_engine(DATABASE_URL${t})
|
|
@@ -66,7 +66,7 @@ ${B(e,s=>` ${s}`)},
|
|
|
66
66
|
engine = ${this.orm}.connect(${t}, read_only=${H(this.connection.read_only)})
|
|
67
67
|
`)}},Ps=class extends ${generateImports(){return this.connection.async_support?["import aiotrino"]:["import trino.sqlalchemy"]}generateConnectionCode(){let t=this.connection.async_support?"aiotrino":"trino",e=this.connection.schema?`/${this.connection.schema}`:"",s=this.secrets.printInFString("username",this.connection.username),n=this.secrets.printInFString("host",this.connection.host),r=this.secrets.printInFString("port",this.connection.port),a=this.secrets.printInFString("database",this.connection.database),c=this.secrets.printPassword(this.connection.password,"TRINO_PASSWORD",!0);return y(`
|
|
68
68
|
engine = ${this.orm}.create_engine(f"${t}://${s}:${c}@${n}:${r}/${a}${e}")
|
|
69
|
-
`)}},qs=class extends ${getCatalogOptions(){return Object.fromEntries(Object.entries(this.connection.catalog).filter(([t,e])=>e!=null&&e!==""&&t!=="type"))}generateImports(){if(Object.keys(this.getCatalogOptions()).length===0)return["from pyiceberg.catalog import load_catalog"];switch(this.connection.catalog.type){case"REST":return["from pyiceberg.catalog.rest import RestCatalog"];case"SQL":return["from pyiceberg.catalog.sql import SqlCatalog"];case"Hive":return["from pyiceberg.catalog.hive import HiveCatalog"];case"Glue":return["from pyiceberg.catalog.glue import GlueCatalog"];case"DynamoDB":return["from pyiceberg.catalog.dynamodb import DynamoDBCatalog"];default:M(this.connection.catalog)}}generateConnectionCode(){let t=`"${this.connection.name}"`,e=this.getCatalogOptions();if(Object.keys(e).length===0)return`catalog = load_catalog(${t})`;for(let[n,r]of Object.entries(e))
|
|
69
|
+
`)}},qs=class extends ${getCatalogOptions(){return Object.fromEntries(Object.entries(this.connection.catalog).filter(([t,e])=>e!=null&&e!==""&&t!=="type"))}generateImports(){if(Object.keys(this.getCatalogOptions()).length===0)return["from pyiceberg.catalog import load_catalog"];switch(this.connection.catalog.type){case"REST":return["from pyiceberg.catalog.rest import RestCatalog"];case"SQL":return["from pyiceberg.catalog.sql import SqlCatalog"];case"Hive":return["from pyiceberg.catalog.hive import HiveCatalog"];case"Glue":return["from pyiceberg.catalog.glue import GlueCatalog"];case"DynamoDB":return["from pyiceberg.catalog.dynamodb import DynamoDBCatalog"];default:M(this.connection.catalog)}}generateConnectionCode(){let t=`"${this.connection.name}"`,e=this.getCatalogOptions();if(Object.keys(e).length===0)return`catalog = load_catalog(${t})`;for(let[n,r]of Object.entries(e))E(r)?e[n]=this.secrets.print(n,r):typeof r=="string"&&(e[n]=`"${r}"`);let s=Ms(e,n=>` ${n}`);switch(this.connection.catalog.type){case"REST":return y(`
|
|
70
70
|
catalog = RestCatalog(
|
|
71
71
|
${t},
|
|
72
72
|
**{
|
|
@@ -101,7 +101,7 @@ ${s}
|
|
|
101
101
|
${s}
|
|
102
102
|
},
|
|
103
103
|
)
|
|
104
|
-
`);default:M(this.connection.catalog)}}},
|
|
104
|
+
`);default:M(this.connection.catalog)}}},Es=class extends ${generateImports(){return["from datafusion import SessionContext"]}generateConnectionCode(){return this.connection.sessionContext?y(`
|
|
105
105
|
ctx = SessionContext()
|
|
106
106
|
# Sample table
|
|
107
107
|
_ = ctx.from_pydict({"a": [1, 2, 3]}, "my_table")
|
|
@@ -109,7 +109,7 @@ ${s}
|
|
|
109
109
|
con = ibis.datafusion.connect(ctx)
|
|
110
110
|
`):y(`
|
|
111
111
|
con = ibis.datafusion.connect()
|
|
112
|
-
`)}},
|
|
112
|
+
`)}},Fs=class extends ${generateImports(){return["from pyspark.sql import SparkSession"]}generateConnectionCode(){return this.connection.host||this.connection.port?y(`
|
|
113
113
|
session = SparkSession.builder.remote(f"sc://${this.secrets.printInFString("host",this.connection.host)}:${this.secrets.printInFString("port",this.connection.port)}").getOrCreate()
|
|
114
114
|
con = ibis.pyspark.connect(session)
|
|
115
115
|
`):y(`
|
|
@@ -136,10 +136,10 @@ ${B({host:t,port:e,database:s,...n&&{user:n},...r&&{password:r}},a=>` $
|
|
|
136
136
|
`)}},Us=class extends ${generateImports(){return this.connection.disable_client_pooling?["from sqlalchemy.pool import NullPool"]:[]}generateConnectionCode(){let t=this.secrets.printPassword(this.connection.password,"SUPABASE_PASSWORD",!0),e=this.secrets.printInFString("username",this.connection.username),s=this.secrets.printInFString("host",this.connection.host),n=this.secrets.printInFString("port",this.connection.port),r=this.secrets.printInFString("database",this.connection.database),a=this.connection.disable_client_pooling?", poolclass=NullPool":"";return y(`
|
|
137
137
|
DATABASE_URL = f"postgresql+psycopg2://${e}:${t}@${s}:${n}/${r}?sslmode=require"
|
|
138
138
|
engine = ${this.orm}.create_engine(DATABASE_URL${a})
|
|
139
|
-
`)}},Ks=class{constructor(){G(this,"secrets",new js)}createGenerator(t,e){switch(t.type){case"postgres":return new vs(t,e,this.secrets);case"mysql":return new $s(t,e,this.secrets);case"sqlite":return new Cs(t,e,this.secrets);case"snowflake":return new As(t,e,this.secrets);case"bigquery":return new Ns(t,e,this.secrets);case"duckdb":return new Rs(t,e,this.secrets);case"motherduck":return new Ts(t,e,this.secrets);case"clickhouse_connect":return new Ls(t,e,this.secrets);case"timeplus":return new Ds(t,e,this.secrets);case"chdb":return new Is(t,e,this.secrets);case"trino":return new Ps(t,e,this.secrets);case"iceberg":return new qs(t,e,this.secrets);case"datafusion":return new
|
|
139
|
+
`)}},Ks=class{constructor(){G(this,"secrets",new js)}createGenerator(t,e){switch(t.type){case"postgres":return new vs(t,e,this.secrets);case"mysql":return new $s(t,e,this.secrets);case"sqlite":return new Cs(t,e,this.secrets);case"snowflake":return new As(t,e,this.secrets);case"bigquery":return new Ns(t,e,this.secrets);case"duckdb":return new Rs(t,e,this.secrets);case"motherduck":return new Ts(t,e,this.secrets);case"clickhouse_connect":return new Ls(t,e,this.secrets);case"timeplus":return new Ds(t,e,this.secrets);case"chdb":return new Is(t,e,this.secrets);case"trino":return new Ps(t,e,this.secrets);case"iceberg":return new qs(t,e,this.secrets);case"datafusion":return new Es(t,e,this.secrets);case"pyspark":return new Fs(t,e,this.secrets);case"redshift":return new Os(t,e,this.secrets);case"databricks":return new Bs(t,e,this.secrets);case"supabase":return new Us(t,e,this.secrets);default:M(t)}}};function Hs(t,e){if(!(e in Je))throw Error(`Unsupported library: ${e}`);ks.parse(t);let s=new Ks,n=s.createGenerator(t,e),r=n.generateConnectionCode(),a=s.secrets,c=[...new Set([...a.imports,...n.imports])].toSorted();c.push("");let i=a.formatSecrets();return i&&c.push(i),c.push(r.trim()),c.join(`
|
|
140
140
|
`)}function H(t){return t.toString().charAt(0).toUpperCase()+t.toString().slice(1)}function B(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,n])=>e(typeof n=="boolean"?`${s}=${H(n)}`:`${s}=${n}`)).join(`,
|
|
141
141
|
`)}function Ms(t,e){return Object.entries(t).filter(([,s])=>s!=null&&s!=="").map(([s,n])=>{let r=`"${s}"`;return e(typeof n=="boolean"?`${r}: ${H(n)}`:`${r}: ${n}`)}).join(`,
|
|
142
|
-
`)}var Ye=U(),Xe=[{name:"PostgreSQL",schema:De,color:"#336791",logo:"postgres",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"MySQL",schema:Ie,color:"#00758F",logo:"mysql",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"SQLite",schema:Pe,color:"#003B57",logo:"sqlite",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DuckDB",schema:qe,color:"#FFD700",logo:"duckdb",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"MotherDuck",schema:Fe,color:"#ff9538",logo:"motherduck",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"Snowflake",schema:Ee,color:"#29B5E8",logo:"snowflake",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse",schema:Be,color:"#2C2C1D",logo:"clickhouse",connectionLibraries:{libraries:["clickhouse_connect"],preferred:"clickhouse_connect"}},{name:"Timeplus",schema:Ue,color:"#B83280",logo:"timeplus",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"BigQuery",schema:Oe,color:"#4285F4",logo:"bigquery",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse Embedded",schema:Ke,color:"#f2b611",logo:"clickhouse",connectionLibraries:{libraries:["chdb"],preferred:"chdb"}},{name:"Trino",schema:He,color:"#d466b6",logo:"trino",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DataFusion",schema:We,color:"#202A37",logo:"datafusion",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"PySpark",schema:Ge,color:"#1C5162",logo:"pyspark",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"Redshift",schema:Ve,color:"#522BAE",logo:"redshift",connectionLibraries:{libraries:["redshift"],preferred:"redshift"}},{name:"Databricks",schema:ze,color:"#c41e0c",logo:"databricks",connectionLibraries:{libraries:["sqlalchemy","sqlmodel","ibis"],preferred:"sqlalchemy"}},{name:"Supabase",schema:Qe,color:"#238F5F",logo:"supabase",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}}],Ze=[{name:"Iceberg",schema:Me,color:"#000000",logo:"iceberg",connectionLibraries:{libraries:["pyiceberg"],preferred:"pyiceberg"}}],Ws=[...Xe,...Ze],Gs=t=>{let e=(0,Ye.c)(12),{onSelect:s}=t,n;e[0]===s?n=e[1]:(n=Xe.map(p=>{let{name:h,schema:m,color:b,logo:f}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:f,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(m)},h)}),e[0]=s,e[1]=n);let r;e[2]===n?r=e[3]:(r=(0,o.jsx)(re,{children:n}),e[2]=n,e[3]=r);let a;e[4]===Symbol.for("react.memo_cache_sentinel")?(a=(0,o.jsxs)("h4",{className:"font-semibold text-muted-foreground text-lg flex items-center gap-4 my-2",children:["Data Catalogs",(0,o.jsx)("hr",{className:"flex-1"})]}),e[4]=a):a=e[4];let c;e[5]===s?c=e[6]:(c=Ze.map(p=>{let{name:h,schema:m,color:b,logo:f}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:f,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(m)},h)}),e[5]=s,e[6]=c);let i;e[7]===c?i=e[8]:(i=(0,o.jsx)(re,{children:c}),e[7]=c,e[8]=i);let l;return e[9]!==r||e[10]!==i?(l=(0,o.jsxs)(o.Fragment,{children:[r,a,i]}),e[9]=r,e[10]=i,e[11]=l):l=e[11],l};const Vs=t=>{let e=(0,Ye.c)(13),{onSubmit:s,header:n}=t,[r,a]=(0,D.useState)(null);if(!r){let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=(0,o.jsx)("div",{children:(0,o.jsx)(Gs,{onSelect:a})}),e[0]=b):b=e[0];let f;return e[1]===n?f=e[2]:(f=(0,o.jsxs)(o.Fragment,{children:[n,b]}),e[1]=n,e[2]=f),f}let c;e[3]===r?c=e[4]:(c=Ws.find(b=>b.schema===r),e[3]=r,e[4]=c);let i=c==null?void 0:c.connectionLibraries,l;e[5]===(i==null?void 0:i.libraries)?l=e[6]:(l=(i==null?void 0:i.libraries)??[],e[5]=i==null?void 0:i.libraries,e[6]=l);let p=(i==null?void 0:i.preferred)??"sqlalchemy",h;e[7]===Symbol.for("react.memo_cache_sentinel")?(h=()=>a(null),e[7]=h):h=e[7];let m;return e[8]!==s||e[9]!==r||e[10]!==l||e[11]!==p?(m=(0,o.jsx)(Te,{schema:r,libraries:l,preferredLibrary:p,displayNames:Je,libraryLabel:"Preferred connection library",generateCode:zs,onSubmit:s,onBack:h}),e[8]=s,e[9]=r,e[10]=l,e[11]=p,e[12]=m):m=e[12],m};function zs(t,e){return Hs(t,e)}var Qs=U();async function Js(){return(await _t.request({})).sources}function Ys(){let t=(0,Qs.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],t[0]=e):e=t[0],Se(Js,e)}var ae=U();const Xs=t=>{let e=(0,ae.c)(13),{className:s,sources:n,onAdd:r}=t;if(n.length===0)return null;let a;e[0]===s?a=e[1]:(a=V("rounded-full bg-[linear-gradient(135deg,var(--blue-2),var(--purple-3))] px-3 py-2",s),e[0]=s,e[1]=a);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=(0,o.jsxs)("div",{className:"mr-1 flex items-center gap-1.5",children:[(0,o.jsx)(Ut,{className:"h-3.5 w-3.5 text-(--blue-9)"}),(0,o.jsx)("h3",{id:"quick-add-data-sources-title",className:"text-sm",children:"Quick add"})]}),e[2]=c):c=e[2];let i;if(e[3]!==r||e[4]!==n){let h;e[6]===r?h=e[7]:(h=m=>(0,o.jsx)(he,{side:"bottom",content:(0,o.jsx)(Zs,{source:m}),children:(0,o.jsxs)("button",{type:"button","aria-label":`Add ${m.displayName} connection`,className:"inline-flex items-center gap-1 rounded-full border border-border/60 bg-background px-2.5 py-1 text-xs font-medium text-foreground/90 transition-colors hover:border-(--blue-7) focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",onClick:()=>r(m),children:[(0,o.jsx)(Bt,{className:"h-3 w-3 text-muted-foreground"}),m.displayName]})},m.id),e[6]=r,e[7]=h),i=n.map(h),e[3]=r,e[4]=n,e[5]=i}else i=e[5];let l;e[8]===i?l=e[9]:(l=(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,o.jsx)(Pt,{delayDuration:200,children:i})]}),e[8]=i,e[9]=l);let p;return e[10]!==a||e[11]!==l?(p=(0,o.jsx)("section",{"aria-labelledby":"quick-add-data-sources-title",className:a,children:l}),e[10]=a,e[11]=l,e[12]=p):p=e[12],p};var Zs=t=>{let e=(0,ae.c)(17),{source:s}=t,n;e[0]===s.displayName?n=e[1]:(n=(0,o.jsx)("div",{className:"font-medium",children:s.displayName}),e[0]=s.displayName,e[1]=n);let r;e[2]===s.origins?r=e[3]:(r=s.origins.map(tr).join(" and "),e[2]=s.origins,e[3]=r);let a;e[4]===r?a=e[5]:(a=(0,o.jsxs)("div",{className:"text-xs text-muted-foreground",children:["Detected from"," ",r]}),e[4]=r,e[5]=a);let c;e[6]!==n||e[7]!==a?(c=(0,o.jsxs)("div",{children:[n,a]}),e[6]=n,e[7]=a,e[8]=c):c=e[8];let i;e[9]===s.configuration?i=e[10]:(i=s.configuration.map(sr),e[9]=s.configuration,e[10]=i);let l;e[11]===i?l=e[12]:(l=(0,o.jsx)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs",children:i}),e[11]=i,e[12]=l);let p;e[13]===Symbol.for("react.memo_cache_sentinel")?(p=(0,o.jsx)("div",{className:"text-xs text-muted-foreground",children:"Click to add a configured cell."}),e[13]=p):p=e[13];let h;return e[14]!==c||e[15]!==l?(h=(0,o.jsxs)("div",{className:"min-w-64 space-y-2 py-1",children:[c,l,p]}),e[14]=c,e[15]=l,e[16]=h):h=e[16],h};const er=t=>{let e=(0,ae.c)(9),{onSubmit:s,className:n}=t,r=Re(),{data:a}=Ys(),c;e[0]===a?c=e[1]:(c=a??[],e[0]=a,e[1]=c);let i;e[2]!==r||e[3]!==s?(i=p=>{r(p.code),s()},e[2]=r,e[3]=s,e[4]=i):i=e[4];let l;return e[5]!==n||e[6]!==c||e[7]!==i?(l=(0,o.jsx)(Xs,{className:n,sources:c,onAdd:i}),e[5]=n,e[6]=c,e[7]=i,e[8]=l):l=e[8],l};function tr(t){return t.label}function sr(t){return(0,o.jsxs)("div",{className:"contents",children:[(0,o.jsx)("dt",{className:"text-muted-foreground",children:t.field}),(0,o.jsx)("dd",{children:(0,o.jsx)("code",{children:t.value.kind==="environment-variable"?`os.environ["${t.value.name}"]`:t.value.value})})]},t.value.kind==="environment-variable"?t.value.name:`${t.field}:${t.value.value}`)}var et=()=>K("type",[_({type:x("Access keys"),access_key_id:g().optional().describe(d.of({label:"Access Key ID",description:"Leave empty to use the default credential chain",inputType:"password",optionRegex:"(access.?key.?id|object.?storage.?key|aws.?access.?key)"})),secret_access_key:g().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|object.?storage.?secret|aws.?secret)"}))}),_({type:x("Container credentials"),container_credentials_full_uri:g().nonempty().describe(d.of({label:"Credentials URI",description:"Endpoint that vends credentials to the container",placeholder:"http://169.254.170.23/v1/credentials",optionRegex:"container.?credentials"})),container_authorization_token_file:g().nonempty().describe(d.of({label:"Authorization Token File",description:"File holding the token sent to the credentials URI",placeholder:"/var/run/secrets/token",optionRegex:"(container.?authorization.?token.?file|container.?auth.?token)"}))})]).default({type:"Access keys"}).describe(d.of({label:"Credentials",special:"tabs"}));const tt=_({type:x("s3"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|s3.?bucket)"})),region:g().optional().describe(d.of({label:"Region",placeholder:"us-east-1",optionRegex:"(region|aws.?region)"})),endpoint_url:g().optional().describe(d.of({label:"Endpoint URL",description:"Ignored if the AWS_ENDPOINT_URL_S3 environment variable is set",placeholder:"https://s3.amazonaws.com",optionRegex:"(endpoint|s3.?url|s3.?endpoint)"})),allow_http:L().default(!1).describe(d.of({label:"Allow HTTP",description:"Required for plain-http (non-TLS) endpoints"})),auth:et()}).describe(d.of({direction:"two-columns"})),st=_({type:x("gcs"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|gcs.?bucket|google.?bucket)"})),service_account_key:g().optional().describe(d.of({label:"Service Account Key (JSON)",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),rt=_({type:x("azure"),container:g().nonempty().describe(d.of({label:"Container",placeholder:"my-container"})),account_name:g().nonempty().describe(d.of({label:"Account Name",placeholder:"storageaccount",optionRegex:"(azure.?account|account.?name|storage.?account)"})),account_key:g().optional().describe(d.of({label:"Account Key",inputType:"password",optionRegex:"(azure.?key|account.?key|storage.?key)"}))}).describe(d.of({direction:"two-columns"})),nt=_({type:x("coreweave"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"bucket-name"})),region:g().nonempty().describe(d.of({label:"Region",placeholder:"US-EAST-04A"})),auth:et()}).describe(d.of({direction:"two-columns"})),ot=_({type:x("gdrive"),credentials_json:g().optional().describe(d.of({label:"Service Account JSON",description:"Leave empty to use browser-based authentication",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),at=_({type:x("huggingface"),token:g().optional().describe(d.of({label:"Access Token",description:"Leave empty to use the HF_TOKEN environment variable or cached login",inputType:"password",optionRegex:"(hf.?token|hugging.?face.?token|hub.?token)"}))}).describe(d.of({direction:"two-columns"})),rr=K("type",[tt,st,rt,nt,ot,at]),nr={obstore:"obstore",fsspec:"fsspec",huggingface_hub:"huggingface_hub"};var or=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e){if(e===void 0||e==="")return"";let s=`_${t}`;if(F(e)){let n=je(e);return this.secrets[s]=`os.environ.get("${n}")`,s}return`"${e}"`}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
|
|
142
|
+
`)}var Ye=U(),Xe=[{name:"PostgreSQL",schema:De,color:"#336791",logo:"postgres",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"MySQL",schema:Ie,color:"#00758F",logo:"mysql",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"SQLite",schema:Pe,color:"#003B57",logo:"sqlite",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DuckDB",schema:qe,color:"#FFD700",logo:"duckdb",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"MotherDuck",schema:Ee,color:"#ff9538",logo:"motherduck",connectionLibraries:{libraries:["duckdb"],preferred:"duckdb"}},{name:"Snowflake",schema:Fe,color:"#29B5E8",logo:"snowflake",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse",schema:Be,color:"#2C2C1D",logo:"clickhouse",connectionLibraries:{libraries:["clickhouse_connect"],preferred:"clickhouse_connect"}},{name:"Timeplus",schema:Ue,color:"#B83280",logo:"timeplus",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"BigQuery",schema:Oe,color:"#4285F4",logo:"bigquery",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"ClickHouse Embedded",schema:Ke,color:"#f2b611",logo:"clickhouse",connectionLibraries:{libraries:["chdb"],preferred:"chdb"}},{name:"Trino",schema:He,color:"#d466b6",logo:"trino",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}},{name:"DataFusion",schema:We,color:"#202A37",logo:"datafusion",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"PySpark",schema:Ge,color:"#1C5162",logo:"pyspark",connectionLibraries:{libraries:["ibis"],preferred:"ibis"}},{name:"Redshift",schema:Ve,color:"#522BAE",logo:"redshift",connectionLibraries:{libraries:["redshift"],preferred:"redshift"}},{name:"Databricks",schema:ze,color:"#c41e0c",logo:"databricks",connectionLibraries:{libraries:["sqlalchemy","sqlmodel","ibis"],preferred:"sqlalchemy"}},{name:"Supabase",schema:Qe,color:"#238F5F",logo:"supabase",connectionLibraries:{libraries:["sqlalchemy","sqlmodel"],preferred:"sqlalchemy"}}],Ze=[{name:"Iceberg",schema:Me,color:"#000000",logo:"iceberg",connectionLibraries:{libraries:["pyiceberg"],preferred:"pyiceberg"}}],Ws=[...Xe,...Ze],Gs=t=>{let e=(0,Ye.c)(12),{onSelect:s}=t,n;e[0]===s?n=e[1]:(n=Xe.map(p=>{let{name:h,schema:m,color:b,logo:f}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:f,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(m)},h)}),e[0]=s,e[1]=n);let r;e[2]===n?r=e[3]:(r=(0,o.jsx)(re,{children:n}),e[2]=n,e[3]=r);let a;e[4]===Symbol.for("react.memo_cache_sentinel")?(a=(0,o.jsxs)("h4",{className:"font-semibold text-muted-foreground text-lg flex items-center gap-4 my-2",children:["Data Catalogs",(0,o.jsx)("hr",{className:"flex-1"})]}),e[4]=a):a=e[4];let c;e[5]===s?c=e[6]:(c=Ze.map(p=>{let{name:h,schema:m,color:b,logo:f}=p;return(0,o.jsx)(ne,{name:h,color:b,icon:(0,o.jsx)(ce,{name:f,className:"w-8 h-8 text-white brightness-0 invert dark:invert"}),onSelect:()=>s(m)},h)}),e[5]=s,e[6]=c);let i;e[7]===c?i=e[8]:(i=(0,o.jsx)(re,{children:c}),e[7]=c,e[8]=i);let l;return e[9]!==r||e[10]!==i?(l=(0,o.jsxs)(o.Fragment,{children:[r,a,i]}),e[9]=r,e[10]=i,e[11]=l):l=e[11],l};const Vs=t=>{let e=(0,Ye.c)(13),{onSubmit:s,header:n}=t,[r,a]=(0,D.useState)(null);if(!r){let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=(0,o.jsx)("div",{children:(0,o.jsx)(Gs,{onSelect:a})}),e[0]=b):b=e[0];let f;return e[1]===n?f=e[2]:(f=(0,o.jsxs)(o.Fragment,{children:[n,b]}),e[1]=n,e[2]=f),f}let c;e[3]===r?c=e[4]:(c=Ws.find(b=>b.schema===r),e[3]=r,e[4]=c);let i=c==null?void 0:c.connectionLibraries,l;e[5]===(i==null?void 0:i.libraries)?l=e[6]:(l=(i==null?void 0:i.libraries)??[],e[5]=i==null?void 0:i.libraries,e[6]=l);let p=(i==null?void 0:i.preferred)??"sqlalchemy",h;e[7]===Symbol.for("react.memo_cache_sentinel")?(h=()=>a(null),e[7]=h):h=e[7];let m;return e[8]!==s||e[9]!==r||e[10]!==l||e[11]!==p?(m=(0,o.jsx)(Te,{schema:r,libraries:l,preferredLibrary:p,displayNames:Je,libraryLabel:"Preferred connection library",generateCode:zs,onSubmit:s,onBack:h}),e[8]=s,e[9]=r,e[10]=l,e[11]=p,e[12]=m):m=e[12],m};function zs(t,e){return Hs(t,e)}var Qs=U();async function Js(){return(await _t.request({})).sources}function Ys(){let t=(0,Qs.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],t[0]=e):e=t[0],Se(Js,e)}var ae=U();const Xs=t=>{let e=(0,ae.c)(13),{className:s,sources:n,onAdd:r}=t;if(n.length===0)return null;let a;e[0]===s?a=e[1]:(a=V("rounded-full bg-[linear-gradient(135deg,var(--blue-2),var(--purple-3))] px-3 py-2",s),e[0]=s,e[1]=a);let c;e[2]===Symbol.for("react.memo_cache_sentinel")?(c=(0,o.jsxs)("div",{className:"mr-1 flex items-center gap-1.5",children:[(0,o.jsx)(Ut,{className:"h-3.5 w-3.5 text-(--blue-9)"}),(0,o.jsx)("h3",{id:"quick-add-data-sources-title",className:"text-sm",children:"Quick add"})]}),e[2]=c):c=e[2];let i;if(e[3]!==r||e[4]!==n){let h;e[6]===r?h=e[7]:(h=m=>(0,o.jsx)(he,{side:"bottom",content:(0,o.jsx)(Zs,{source:m}),children:(0,o.jsxs)("button",{type:"button","aria-label":`Add ${m.displayName} connection`,className:"inline-flex items-center gap-1 rounded-full border border-border/60 bg-background px-2.5 py-1 text-xs font-medium text-foreground/90 transition-colors hover:border-(--blue-7) focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",onClick:()=>r(m),children:[(0,o.jsx)(Bt,{className:"h-3 w-3 text-muted-foreground"}),m.displayName]})},m.id),e[6]=r,e[7]=h),i=n.map(h),e[3]=r,e[4]=n,e[5]=i}else i=e[5];let l;e[8]===i?l=e[9]:(l=(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[c,(0,o.jsx)(Pt,{delayDuration:200,children:i})]}),e[8]=i,e[9]=l);let p;return e[10]!==a||e[11]!==l?(p=(0,o.jsx)("section",{"aria-labelledby":"quick-add-data-sources-title",className:a,children:l}),e[10]=a,e[11]=l,e[12]=p):p=e[12],p};var Zs=t=>{let e=(0,ae.c)(17),{source:s}=t,n;e[0]===s.displayName?n=e[1]:(n=(0,o.jsx)("div",{className:"font-medium",children:s.displayName}),e[0]=s.displayName,e[1]=n);let r;e[2]===s.origins?r=e[3]:(r=s.origins.map(tr).join(" and "),e[2]=s.origins,e[3]=r);let a;e[4]===r?a=e[5]:(a=(0,o.jsxs)("div",{className:"text-xs text-muted-foreground",children:["Detected from"," ",r]}),e[4]=r,e[5]=a);let c;e[6]!==n||e[7]!==a?(c=(0,o.jsxs)("div",{children:[n,a]}),e[6]=n,e[7]=a,e[8]=c):c=e[8];let i;e[9]===s.configuration?i=e[10]:(i=s.configuration.map(sr),e[9]=s.configuration,e[10]=i);let l;e[11]===i?l=e[12]:(l=(0,o.jsx)("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs",children:i}),e[11]=i,e[12]=l);let p;e[13]===Symbol.for("react.memo_cache_sentinel")?(p=(0,o.jsx)("div",{className:"text-xs text-muted-foreground",children:"Click to add a configured cell."}),e[13]=p):p=e[13];let h;return e[14]!==c||e[15]!==l?(h=(0,o.jsxs)("div",{className:"min-w-64 space-y-2 py-1",children:[c,l,p]}),e[14]=c,e[15]=l,e[16]=h):h=e[16],h};const er=t=>{let e=(0,ae.c)(9),{onSubmit:s,className:n}=t,r=Re(),{data:a}=Ys(),c;e[0]===a?c=e[1]:(c=a??[],e[0]=a,e[1]=c);let i;e[2]!==r||e[3]!==s?(i=p=>{r(p.code),s()},e[2]=r,e[3]=s,e[4]=i):i=e[4];let l;return e[5]!==n||e[6]!==c||e[7]!==i?(l=(0,o.jsx)(Xs,{className:n,sources:c,onAdd:i}),e[5]=n,e[6]=c,e[7]=i,e[8]=l):l=e[8],l};function tr(t){return t.label}function sr(t){return(0,o.jsxs)("div",{className:"contents",children:[(0,o.jsx)("dt",{className:"text-muted-foreground",children:t.field}),(0,o.jsx)("dd",{children:(0,o.jsx)("code",{children:t.value.kind==="environment-variable"?`os.environ["${t.value.name}"]`:t.value.value})})]},t.value.kind==="environment-variable"?t.value.name:`${t.field}:${t.value.value}`)}var et=()=>K("type",[_({type:x("Access keys"),access_key_id:g().optional().describe(d.of({label:"Access Key ID",description:"Leave empty to use the default credential chain",inputType:"password",optionRegex:"(access.?key.?id|object.?storage.?key|aws.?access.?key)"})),secret_access_key:g().optional().describe(d.of({label:"Secret Access Key",inputType:"password",optionRegex:"(secret.?access.?key|object.?storage.?secret|aws.?secret)"}))}),_({type:x("Container credentials"),container_credentials_full_uri:g().nonempty().describe(d.of({label:"Credentials URI",description:"Endpoint that vends credentials to the container",placeholder:"http://169.254.170.23/v1/credentials",optionRegex:"container.?credentials"})),container_authorization_token_file:g().nonempty().describe(d.of({label:"Authorization Token File",description:"File holding the token sent to the credentials URI",placeholder:"/var/run/secrets/token",optionRegex:"(container.?authorization.?token.?file|container.?auth.?token)"}))})]).default({type:"Access keys"}).describe(d.of({label:"Credentials",special:"tabs"}));const tt=_({type:x("s3"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|s3.?bucket)"})),region:g().optional().describe(d.of({label:"Region",placeholder:"us-east-1",optionRegex:"(region|aws.?region)"})),endpoint_url:g().optional().describe(d.of({label:"Endpoint URL",description:"Ignored if the AWS_ENDPOINT_URL_S3 environment variable is set",placeholder:"https://s3.amazonaws.com",optionRegex:"(endpoint|s3.?url|s3.?endpoint)"})),allow_http:L().default(!1).describe(d.of({label:"Allow HTTP",description:"Required for plain-http (non-TLS) endpoints"})),auth:et()}).describe(d.of({direction:"two-columns"})),st=_({type:x("gcs"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"my-bucket",optionRegex:"(bucket|gcs.?bucket|google.?bucket)"})),service_account_key:g().optional().describe(d.of({label:"Service Account Key (JSON)",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),rt=_({type:x("azure"),container:g().nonempty().describe(d.of({label:"Container",placeholder:"my-container"})),account_name:g().nonempty().describe(d.of({label:"Account Name",placeholder:"storageaccount",optionRegex:"(azure.?account|account.?name|storage.?account)"})),account_key:g().optional().describe(d.of({label:"Account Key",inputType:"password",optionRegex:"(azure.?key|account.?key|storage.?key)"}))}).describe(d.of({direction:"two-columns"})),nt=_({type:x("coreweave"),bucket:g().nonempty().describe(d.of({label:"Bucket",placeholder:"bucket-name"})),region:g().nonempty().describe(d.of({label:"Region",placeholder:"US-EAST-04A"})),auth:et()}).describe(d.of({direction:"two-columns"})),ot=_({type:x("gdrive"),credentials_json:g().optional().describe(d.of({label:"Service Account JSON",description:"Leave empty to use browser-based authentication",special:"secret_textarea"}))}).describe(d.of({direction:"two-columns"})),at=_({type:x("huggingface"),token:g().optional().describe(d.of({label:"Access Token",description:"Leave empty to use the HF_TOKEN environment variable or cached login",inputType:"password",optionRegex:"(hf.?token|hugging.?face.?token|hub.?token)"}))}).describe(d.of({direction:"two-columns"})),rr=K("type",[tt,st,rt,nt,ot,at]),nr={obstore:"obstore",fsspec:"fsspec",huggingface_hub:"huggingface_hub"};var or=class{constructor(){G(this,"secrets",{})}get imports(){return Object.keys(this.secrets).length===0?new Set:new Set(["import os"])}print(t,e){if(e===void 0||e==="")return"";let s=`_${t}`;if(E(e)){let n=je(e);return this.secrets[s]=`os.environ.get("${n}")`,s}return`"${e}"`}formatSecrets(){return Object.keys(this.secrets).length===0?"":Object.entries(this.secrets).map(([t,e])=>`${t} = ${e}`).join(`
|
|
143
143
|
`)}};function it(t,e){if((t==null?void 0:t.type)==="Container credentials")return[` container_credentials_full_uri=${e.print("container_credentials_full_uri",t.container_credentials_full_uri)},`,` container_authorization_token_file=${e.print("container_authorization_token_file",t.container_authorization_token_file)},`];let s=[];return t!=null&&t.access_key_id&&s.push(` access_key_id=${e.print("access_key_id",t.access_key_id)},`),t!=null&&t.secret_access_key&&s.push(` secret_access_key=${e.print("secret_access_key",t.secret_access_key)},`),s}function ar(t,e){let s=e.print("bucket",t.bucket),n=new Set(["from obstore.store import S3Store"]),r=[];return t.region&&r.push(` region=${e.print("region",t.region)},`),r.push(...it(t.auth,e)),t.endpoint_url&&r.push(` endpoint_url=${e.print("endpoint_url",t.endpoint_url)},`),t.allow_http&&r.push(" allow_http=True,"),{imports:n,code:y(`
|
|
144
144
|
store = S3Store(${s},${r.length>0?`
|
|
145
145
|
${r.join(`
|