From 8ef31b306eca0eadd1cca42cfdf4e3f3e425b8f4 Mon Sep 17 00:00:00 2001 From: kentwelcome Date: Thu, 21 Dec 2023 09:52:14 +0000 Subject: [PATCH] AUTO-COMMIT - build js statics to recce data/ --- recce/data/404.html | 2 +- recce/data/_next/static/chunks/app/page-06ec8c65a498a182.js | 1 - recce/data/_next/static/chunks/app/page-083a64bfec7d25bf.js | 1 + .../_buildManifest.js | 0 .../_ssgManifest.js | 0 recce/data/index.html | 4 ++-- recce/data/index.txt | 4 ++-- 7 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 recce/data/_next/static/chunks/app/page-06ec8c65a498a182.js create mode 100644 recce/data/_next/static/chunks/app/page-083a64bfec7d25bf.js rename recce/data/_next/static/{vw6-nFLmYn9fgnfOIrpZL => p6wDcpRSIPyT41-YlwcVC}/_buildManifest.js (100%) rename recce/data/_next/static/{vw6-nFLmYn9fgnfOIrpZL => p6wDcpRSIPyT41-YlwcVC}/_ssgManifest.js (100%) diff --git a/recce/data/404.html b/recce/data/404.html index 96124bcd..f4f9864a 100644 --- a/recce/data/404.html +++ b/recce/data/404.html @@ -1 +1 @@ -404: This page could not be found.recce

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.recce

404

This page could not be found.

\ No newline at end of file diff --git a/recce/data/_next/static/chunks/app/page-06ec8c65a498a182.js b/recce/data/_next/static/chunks/app/page-06ec8c65a498a182.js deleted file mode 100644 index 6bbe143d..00000000 --- a/recce/data/_next/static/chunks/app/page-06ec8c65a498a182.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{99178:function(e,n,r){Promise.resolve().then(r.bind(r,46562))},46562:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return Home}});var t=r(757),a=r(27869);function getNeighborSet(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3,t=new Set,a={},dfs=(e,r)=>{if(r<0||void 0!==a[e]&&a[e]>=r)return;a[e]=r;let i=n(e);for(let e of i)dfs(e,r-1);t.add(e)};for(let n of e)dfs(n,r);return t}function buildDefaultLineageGraphSets(e,n){function buildAllLineageGraph(e,n){let r={},t={},buildNode=(e,n)=>({id:e,name:e,data:{},from:n,parents:{},children:{}});for(let[n,t]of Object.entries(e.parent_map)){r[n]=buildNode(n,"base");let t=e.nodes&&e.nodes[n];t&&(r[n].data.base=t,r[n].name=null==t?void 0:t.name,r[n].resourceType=null==t?void 0:t.resource_type,r[n].packageName=null==t?void 0:t.package_name)}for(let[e,t]of Object.entries(n.parent_map)){r[e]?r[e].from="both":r[e]=buildNode(e,"current");let t=n.nodes&&n.nodes[e];t&&(r[e].data.current=n.nodes&&n.nodes[e],r[e].name=null==t?void 0:t.name,r[e].resourceType=null==t?void 0:t.resource_type,r[e].packageName=null==t?void 0:t.package_name)}for(let[n,a]of Object.entries(e.parent_map))for(let e of a){let a=r[n],i=r[e],l="".concat(e,"_").concat(n);t[l]={id:l,from:"base",parent:i,child:a};let o=t[l];a.parents[e]=o,i.children[n]=o}for(let[e,a]of Object.entries(n.parent_map))for(let n of a){let a=r[e],i=r[n],l="".concat(n,"_").concat(e);t[l]?t[l].from="both":t[l]={id:l,from:"current",parent:i,child:a};let o=t[l];a.parents[n]=o,i.children[e]=o}return{edges:t,nodes:r}}function buildChangedOnlyLineageGraph(e,n){let r={},t={};function union(){for(var e=arguments.length,n=Array(e),r=0;r{e.forEach(e=>{t.add(e)})}),t}let a=selectDownstream(e,n),i=selectUpstream(e,n,1),l=union(a,i);return Object.entries(e.nodes).forEach(e=>{let[n,t]=e;l.has(n)&&(r[n]=t)}),Object.entries(e.edges).forEach(e=>{let[n,r]=e;l.has(r.parent.id)&&l.has(r.child.id)&&(t[n]=r)}),{nodes:r,edges:t}}let{nodes:r,edges:t}=buildAllLineageGraph(e,n),a=[];for(let[e,n]of Object.entries(r))if("base"===n.from)n.changeStatus="removed",a.push(n.id);else if("current"===n.from)n.changeStatus="added",a.push(n.id);else{var i,l,o,s,c,d;let e=null==n?void 0:null===(o=n.data)||void 0===o?void 0:null===(l=o.base)||void 0===l?void 0:null===(i=l.checksum)||void 0===i?void 0:i.checksum,r=null==n?void 0:null===(d=n.data)||void 0===d?void 0:null===(c=d.current)||void 0===c?void 0:null===(s=c.checksum)||void 0===s?void 0:s.checksum;e&&r&&e!==r&&(n.changeStatus="modified",a.push(n.id))}for(let[e,n]of Object.entries(t))"base"===n.from?n.changeStatus="removed":"current"===n.from&&(n.changeStatus="added");return{all:{nodes:r,edges:t},changed:buildChangedOnlyLineageGraph({nodes:r,edges:t},a),modifiedSet:a}}function selectUpstream(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;return getNeighborSet(n,n=>void 0===e.nodes[n]?[]:Object.keys(e.nodes[n].parents),r)}function selectDownstream(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;return getNeighborSet(n,n=>void 0===e.nodes[n]?[]:Object.keys(e.nodes[n].children),r)}function toReactflow(e,n){let r=[],t=[];for(let[n,t]of Object.entries(e.nodes))r.push({id:t.id,position:{x:0,y:0},data:t,type:"customNode",targetPosition:a.Ly.Left,sourcePosition:a.Ly.Right});for(let[n,r]of Object.entries(e.edges))t.push({id:r.id,type:"customEdge",source:r.parent.id,target:r.child.id,data:r});return highlightPath(e,n,r,t,null)}function highlightPath(e,n,r,t,a){function union(){for(var e=arguments.length,n=Array(e),r=0;r{e.forEach(e=>{t.add(e)})}),t}let i=null!==a?union(selectUpstream(e,[a]),selectDownstream(e,[a])):getNeighborSet(n,n=>void 0===e.nodes[n]?[]:Object.keys(e.nodes[n].children)),l=new Set(t.filter(e=>i.has(e.source)&&i.has(e.target)).map(e=>e.id)),o=r.map(e=>({...e,data:{...e.data,isHighlighted:i.has(e.id)}})),s=t.map(e=>({...e,data:{...e.data,isHighlighted:l.has(e.id)}}));return[o,s]}var i=r(10126),l=r(83172),o=r(55528),s=r(29330),c=r(17714),d=r(46543),u=r(43093),h=r(7752),m=r(94410),x=r(62209),f=r(29985),g=r(42524),p=r(27726),y=r(26187),j=r(23704),v=r(33710),C=r(93864),k=r.n(C);r(94570);var b=r(11180),w=r(63240),S=r(54057);let _=b.Nbv,E=b.sFB,L=b.UGs,IconChanged=e=>(0,t.jsxs)("svg",{stroke:"currentColor",fill:"currentColor",strokeWidth:"0",viewBox:"0 0 16 16",height:"1em",width:"1em",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 11 a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"}),(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:""})]});function getIconForChangeStatus(e){return"added"===e?{color:"#1dce00",icon:_}:"removed"===e?{color:"#ff4444",icon:E}:"modified"===e?{color:"#ffa502",icon:L}:{color:"inherit",icon:void 0}}function getIconForResourceType(e){return"model"===e?{color:"#c0eafd",icon:w.Fn3}:"metric"===e?{color:"#ffe6ee",icon:S._MV}:"source"===e?{color:"#a6dda6",icon:w.i1q}:"exposure"===e?{color:"#ffe6ee",icon:S.n8P}:"semantic_model"===e?{color:"#fb8caf",icon:S.R1C}:"seed"===e?{color:"#a6dda6",icon:w.tWi}:{color:"inherit",icon:void 0}}function GraphNode(e){var n,r;let c,{data:d}=e,{isHighlighted:u,resourceType:h,changeStatus:m}=d,x=(0,a.oR)(e=>e.transform[2]>.3),{icon:f}=getIconForResourceType(h),g="gray.400",p="solid";m&&(c=getIconForChangeStatus(m).icon,g=getIconForChangeStatus(m).color);let y=g,j=null==d?void 0:d.name;return(0,t.jsx)(l.u,{label:"model"===h?j:"".concat(j," (").concat(h,")"),placement:"top",children:(0,t.jsxs)(o.k,{width:"300px",_hover:{backgroundColor:x?"gray.100":g},borderColor:y,borderWidth:1,borderStyle:p,backgroundColor:x?"white":g,borderRadius:3,boxShadow:"unset",padding:0,className:!0===u?"node-highlight":!1===u?"node-unhighlight":void 0,children:[(0,t.jsx)(o.k,{backgroundColor:g,padding:2,borderRightWidth:1,borderColor:y,borderStyle:p,alignItems:"top",visibility:x?"inherit":"hidden",children:(0,t.jsx)(s.J,{as:f})}),(0,t.jsx)(o.k,{flex:"1 0 auto",mx:"1",width:"100px",direction:"column",children:(0,t.jsxs)(o.k,{width:"100%",textAlign:"left",flex:"1",p:1,alignItems:"center",visibility:x?"inherit":"hidden",children:[(0,t.jsx)(i.xu,{flex:"1",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",children:j}),c&&(0,t.jsx)(o.k,{children:(0,t.jsx)(s.J,{color:g,as:c,flex:"0 0 20px"})})]})}),Object.keys(null!==(n=null==d?void 0:d.parents)&&void 0!==n?n:{}).length>0&&(0,t.jsx)(a.HH,{type:"target",position:a.Ly.Left,isConnectable:!1}),Object.keys(null!==(r=null==d?void 0:d.children)&&void 0!==r?r:{}).length>0&&(0,t.jsx)(a.HH,{type:"source",position:a.Ly.Right,isConnectable:!1})]})})}function GraphEdge(e){let{sourceX:n,sourceY:r,targetX:i,targetY:l,sourcePosition:o,targetPosition:s,style:c={},markerEnd:d,data:u}=e,h={...c};(null==u?void 0:u.changeStatus)&&(h.stroke=getIconForChangeStatus(null==u?void 0:u.changeStatus).color,h.strokeDasharray="5"),(null==u?void 0:u.isHighlighted)===!1&&(h.filter="opacity(0.2) grayscale(50%)");let[m]=(0,a.OQ)({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:l,targetPosition:s});return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(a.u5,{path:m,markerEnd:d,style:{...h,...c}})})}r(88727);var D=r(89042),N=r(62648),I=r(74796),O=r(79315),z=r(90593),F=r(62130),T=r(58909),q=r(2593),R=r(19920),K=r(7467),P=r(95913),A=r(55344),M=r(1726),V=r(83622),W=r(21801),H=r(29731),G=r(80294);function mergeKeys(e,n){let r=[...e],t=[...n],a=[];for(;r.length>0&&t.length>0;)if(a.includes(r[0]))r.shift();else if(a.includes(t[0]))t.shift();else if(r[0]===t[0])a.push(r[0]),r.shift(),t.shift();else if(t.includes(r[0])){let e=t.indexOf(r[0]);for(let n=0;n{a.includes(e)||a.push(e)}),t.forEach(e=>{a.includes(e)||a.push(e)}),a}function mergeKeysWithStatus(e,n){let r=mergeKeys(e,n),t={};for(let a of r)e.includes(a)?n.includes(a)?t[a]=void 0:t[a]="removed":t[a]="added";let a={};e.forEach((e,n)=>{a[e]=n});let i=-1;for(let e of r){let n=a[e];void 0!==n&&(n>i?i=n:t[e]="reordered")}return t}function mergeColumns(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},t=mergeKeysWithStatus(Object.keys(e),Object.keys(n));return Object.entries(t).forEach(e=>{let[n,t]=e;r[n]={name:n,reordered:"reordered"===t}}),Object.entries(e).map((e,n)=>{let[t,a]=e;r[t].baseIndex=n+1,r[t].baseType=a.type}),Object.entries(n).map((e,n)=>{let[t,a]=e;r[t].currentIndex=n+1,r[t].currentType=a.type}),r}function toDataGrid(e){function columnIndexCellClass(e){return void 0===e.baseIndex?"column-index-added":void 0===e.currentIndex?"column-index-removed":!0===e.reordered?"column-index-reordered":"column-index-normal"}function columnNameCellClass(e){return void 0===e.baseIndex?"column-body-added":void 0===e.currentIndex?"column-body-removed":!0===e.reordered?"column-body-reordered":"column-body-normal"}function columnTypeCellClass(e){return void 0===e.baseIndex?"column-body-added":void 0===e.currentIndex?"column-body-removed":e.baseType!==e.currentType?"column-body-type-changed":!0===e.reordered?"column-body-reordered":"column-body-normal"}let n=Object.values(e);return{columns:[{key:"baseIndex",name:"",resizable:!0,minWidth:35,cellClass:columnIndexCellClass},{key:"currentIndex",name:"",resizable:!0,minWidth:35,cellClass:columnIndexCellClass},{key:"name",name:"Name",resizable:!0,cellClass:columnNameCellClass},{key:"baseType",name:"Base Type",resizable:!0,cellClass:columnTypeCellClass},{key:"currentType",name:"Current Type",resizable:!0,cellClass:columnTypeCellClass}],rows:n}}r(75165),r(91702);var Q=r(52116),U=r(93683),B=r(7873);function SchemaView(e){let n,{base:r,current:a}=e,{columns:i,rows:l}=(0,p.useMemo)(()=>toDataGrid(mergeColumns(null==r?void 0:r.columns,null==a?void 0:a.columns)),[r,a]),s=r&&void 0===r.columns,c=a&&void 0===a.columns;return s&&c?n="catalog.json is missing on both current and base environments.":s?n="catalog.json is missing on base environment.":c&&(n="catalog.json is missing on current environment."),(0,t.jsxs)(o.k,{direction:"column",children:[n&&(0,t.jsxs)(U.b,{status:"warning",fontSize:"12px",p:"8px",children:[(0,t.jsx)(B.z,{}),n]}),l.length>0&&(0,t.jsx)(Q.ZP,{style:{height:"100%",fontSize:"10pt",borderWidth:1,overflowY:"auto"},columns:i,rows:l,className:"rdg-light"})]})}let J='select * from {{ ref("mymodel") }}',Z=(0,p.createContext)({sqlQuery:J,setSqlQuery:()=>{}});function RecceQueryContextProvider(e){let{children:n}=e,[r,a]=p.useState(J);return(0,t.jsx)(Z.Provider,{value:{setSqlQuery:a,sqlQuery:r},children:n})}let useRecceQueryContext=()=>(0,p.useContext)(Z);var X=r(29357);function SqlDiffView(e){let{base:n,current:r}=e;return(0,t.jsx)(X.SV,{height:"500px",language:"sql",theme:"vs",original:null==n?void 0:n.raw_code,modified:null==r?void 0:r.raw_code,options:{readOnly:!0,fontSize:14,lineNumbers:"on",automaticLayout:!0,minimap:{enabled:!1},wordWrap:"on",wrappingIndent:"same"}})}var Y=r(90068),$=r(41171),ee=r(53930),en=r(68665),er=r(84680),et=r(10929),ea=r(12218);let ei=ea.env.NEXT_PUBLIC_API_URL?ea.env.NEXT_PUBLIC_API_URL:window.location.origin;var el=r(27471);let eo=et.default.create({baseURL:ei}),es=new el.S;var ec=r(17180);function ValueDiffPanel(e){let{valueDiffSummary:n}=e;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.xu,{mb:1,children:["Model: ",(0,t.jsx)("b",{children:n.params.model}),", Primary Key: ",(0,t.jsx)("b",{children:n.params.primary_key})]}),(0,t.jsxs)(i.xu,{mb:1,children:[n.summary.total," rows (",n.summary.added," added, ",n.summary.removed," removed)"]}),(0,t.jsx)(ec.i,{mb:1,mt:1}),(0,t.jsx)(Q.ZP,{style:{height:"100%",width:"100%"},columns:n.columns.map(e=>({...e,width:void 0,resizable:!0,flexGrow:1})),rows:n.data,defaultColumnOptions:{resizable:!0},className:"rdg-light"})]})}function ValueDiffView(e){var n;let{check:r}=e,a=null===(n=r.last_run)||void 0===n?void 0:n.result,l=r.params,o=null;if(a){let e=a.data.schema.fields.map(e=>({name:e.name,key:e.name}));o={columns:e,data:a.data.data,summary:a.summary,params:l}}return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(i.xu,{p:5,children:o&&(0,t.jsx)(ValueDiffPanel,{valueDiffSummary:o})})})}var ed=r(31896);async function createSimpleCheck(){let e=await eo.post("/api/checks",{type:"simple"}),n=e.data;return n}async function createQueryDiffCheck(e){let n=await eo.post("/api/checks",{type:"query_diff",run_id:e}),r=n.data;return r}async function createValueDiffCheck(e){let n=await eo.post("/api/checks",{type:"value_diff",run_id:e}),r=n.data;return r}async function createCheckByNodeSchema(e){let n=await eo.post("/api/checks",{type:"schema_diff",node_id:e}),r=n.data;return r}async function listChecks(){let e=await eo.get("/api/checks");return e.data}async function checks_getCheck(e){let n=await eo.get("/api/checks/".concat(e));return n.data}async function updateCheck(e,n){let r=await eo.patch("/api/checks/".concat(e),n);return r.data}async function deleteCheck(e){let n=await eo.delete("/api/checks/".concat(e));return n.data}function extractColumnNames(e){function getNames(e){return e&&e.columns?Object.values(e.columns).map(e=>e.name):[]}let n=getNames(e.data.base),r=getNames(e.data.current),t=[];return n.forEach(e=>{t.includes(e)||t.push(e)}),r.forEach(e=>{t.includes(e)||t.push(e)}),t}async function fetchColumnValuesComparison(e,n){try{let r=await eo.post("/api/runs",{type:"value_diff",params:{model:e,primary_key:n}});return r.data}catch(e){console.error("Error fetching column values comparison:",e)}}async function handleAddToCheck(e){if(!e.runId)return null;let n=await createValueDiffCheck(e.runId);return n.check_id}var MismatchSummary=function(){let{isOpen:e,onOpen:n,onClose:r}=(0,c.q)(),[a,i]=(0,p.useState)(!1),[l,o]=(0,p.useState)(null);return{MismatchSummaryModal:s=>{let{node:c}=s,d="model"===c.resourceType||"seed"===c.resourceType||"source"===c.resourceType,u=extractColumnNames(c),[y,j]=(0,p.useState)(""),[,v]=(0,ed.TH)(),handleExecute=async()=>{if(!a&&""!==y){i(!0);try{let e=await fetchColumnValuesComparison(c.name,y),n=e.result,r=n.data.schema.fields.map(e=>({name:e.name,key:e.name}));o({columns:r,data:n.data.data,summary:n.summary,params:{model:c.name,primary_key:y},runId:e.run_id})}catch(e){console.error("Error fetching column values comparison:",e)}finally{i(!1)}}};return((0,p.useEffect)(()=>{var e;(null==l?void 0:null===(e=l.params)||void 0===e?void 0:e.model)!=c.name&&o(null)},[c.name]),d)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(h.u_,{isOpen:e,onClose:r,size:"6xl",children:[(0,t.jsx)(m.Z,{}),(0,t.jsxs)(x.h,{overflowY:"auto",height:"75%",children:[(0,t.jsx)(T.x,{children:"Value Diff Summary"}),(0,t.jsx)(f.o,{}),(0,t.jsx)(g.f,{children:a?(0,t.jsx)(Y.E,{size:"xs",isIndeterminate:!0}):l?(0,t.jsx)(ValueDiffPanel,{valueDiffSummary:l}):(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)($.NI,{children:[(0,t.jsx)(ee.l,{children:"Pick a primary key"}),(0,t.jsx)(en.P,{placeholder:"Select primary key",value:y,onChange:e=>j(e.target.value),children:u.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]})})}),(0,t.jsxs)(er.m,{children:[l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(F.z,{mr:3,colorScheme:"blue",onClick:()=>{o(null)},children:"Clear"}),(0,t.jsx)(F.z,{mr:3,colorScheme:"blue",onClick:async()=>{let e=await handleAddToCheck(l);e&&v("/checks/".concat(e))},children:"Add to check"})]}),(0,t.jsx)(F.z,{colorScheme:"blue",onClick:handleExecute,children:"Execute"})]})]})]}),(0,t.jsx)(F.z,{colorScheme:"blue",size:"sm",onClick:n,children:"Value Diff Summary"})]}):(0,t.jsx)(t.Fragment,{})}}},eu=r(44903);let eh={rowCount:e=>["row_count",e],lineage:()=>["lineage"],checks:()=>["checks","list"],check:e=>["checks",e]};async function fetchModelRowCount(e){let n=await eo.get("/api/models/".concat(e,"/row_count"));return n.data}function ModelRowCount(e){let{rowCount:n}=e;if(!n)return(0,t.jsxs)(N.U,{children:[(0,t.jsx)(u.x,{children:"Failed to load"}),(0,t.jsx)(s.J,{as:D.KZt,color:"red.500"})]});let r=null===n.base?-1:n.base,a=null===n.curr?-1:n.curr,i=-1===r?"N/A":r,l=-1===a?"N/A":a;return r===a?(0,t.jsx)(u.x,{children:r}):rfetchModelRowCount(n.name),enabled:!1}),L=(0,p.useCallback)(async()=>{let e=n.id,r=await createCheckByNodeSchema(e);a("/checks/".concat(r.check_id))},[n,a]);return(0,t.jsxs)(I.r,{height:"100%",templateRows:"auto auto 1fr",children:[(0,t.jsxs)(N.U,{children:[(0,t.jsx)(i.xu,{flex:"0 1 20%",p:"16px",children:(0,t.jsx)(O.X,{size:"sm",children:n.name})}),(0,t.jsx)(z.L,{}),"modified"===n.changeStatus&&(0,t.jsxs)(i.xu,{children:[(0,t.jsx)(F.z,{onClick:y,leftIcon:(0,t.jsx)(w.tvD,{}),colorScheme:"orange",variant:"solid",children:"Diff"}),(0,t.jsxs)(h.u_,{isOpen:u,onClose:j,size:"6xl",children:[(0,t.jsx)(m.Z,{}),(0,t.jsxs)(x.h,{overflowY:"auto",height:"75%",children:[(0,t.jsx)(T.x,{children:"Model Raw Code Diff"}),(0,t.jsx)(f.o,{}),(0,t.jsx)(g.f,{children:(0,t.jsx)(SqlDiffView,{base:n.data.base,current:n.data.current})})]})]})]}),(0,t.jsx)(i.xu,{flex:"0 1 1%",p:"16px",children:(0,t.jsx)(q.P,{onClick:r})})]}),(0,t.jsx)(i.xu,{color:"gray",paddingLeft:"16px",children:(0,t.jsxs)(N.U,{spacing:"8px",children:[(0,t.jsx)(l.u,{hasArrow:!0,label:"Type of resource",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:C}),(0,t.jsx)(R.Sn,{children:n.resourceType})]})}),"model"===n.resourceType&&(0,t.jsx)(l.u,{hasArrow:!0,label:_||E?"Number of row":"Query the number of row",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:D.SwK}),_||E?(0,t.jsx)(R.Sn,{children:(0,t.jsx)(K.N,{isLoaded:!k,noOfLines:1,skeletonHeight:2,minWidth:"30px",children:(0,t.jsx)(ModelRowCount,{rowCount:b})})}):(0,t.jsx)(P.h,{"aria-label":"Query Row Count",icon:(0,t.jsx)(G.j3i,{}),size:"xs",onClick:()=>{S()}})]})})]})}),d&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(A.m,{overflow:"auto",as:o.k,children:[(0,t.jsx)(M.t,{children:(0,t.jsx)(V.O,{children:"Columns"})}),(0,t.jsx)(W.n,{overflow:"auto",height:"calc(100% - 42px)",children:(0,t.jsx)(H.x,{p:0,overflowY:"auto",height:"100%",children:(0,t.jsx)(SchemaView,{base:n.data.base,current:n.data.current})})})]}),(0,t.jsxs)(N.U,{p:"16px",children:[(0,t.jsx)(F.z,{colorScheme:"blue",size:"sm",onClick:L,children:"Add schema check"}),(0,t.jsx)(z.L,{}),"model"===n.resourceType&&"modified"===n.changeStatus&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v,{node:n}),(0,t.jsx)(F.z,{colorScheme:"blue",size:"sm",onClick:()=>{s('select * from {{ ref("'.concat(n.name,'") }}')),a("/query")},children:"Query"})]})]})]})]})}var em=r(43898),ex=r(35537),ef=r(99691);async function getLineage(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=await eo.get("/api/lineage?base=".concat(e));return n.data}async function getLineageWithError(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{let n=await getLineage(e);return{data:n}}catch(e){if(!(e instanceof ef.d7))return{error:null==e?void 0:e.message};{var n,r;let t=null==e?void 0:null===(r=e.response)||void 0===r?void 0:null===(n=r.data)||void 0===n?void 0:n.detail;if(t)return{error:t};return{error:null==e?void 0:e.message}}}}async function getLineageDiff(){let[e,n]=await Promise.all([getLineageWithError(!0),getLineageWithError(!1)]);return{base:e.data,current:n.data,base_error:e.error,current_error:n.error}}var eg=r(15550),ep=r(21123),ey=r.n(ep);let ej=(0,p.createContext)({});function LineageWatcher(e){let{refetch:n}=e,r=(0,eg.p)(),[a,i]=(0,p.useState)(),l=(0,ex.NL)();return(0,p.useEffect)(()=>{function httpUrlToWebSocketUrl(e){return e.replace(/(http)(s)?\:\/\//,"ws$2://")}let e=new WebSocket("".concat(httpUrlToWebSocketUrl(ei),"/api/ws"));return i(e),e.onopen=()=>{e.send("ping")},e.onmessage=e=>{if("pong"!==e.data)try{let n=JSON.parse(e.data);if("refresh"===n.command){let{eventType:e,srcPath:t}=n.event,[a,i]=t.split("/").slice(-2),o=ey().parse(i).name;r({description:"Detected ".concat(a," ").concat(o," ").concat(e),status:"info",variant:"left-accent",position:"bottom-right",duration:5e3,isClosable:!0}),l.invalidateQueries({queryKey:eh.lineage()})}}catch(e){console.error(e)}},()=>{e&&e.close()}},[r,l]),(0,t.jsx)(t.Fragment,{})}function LineageGraphsContextProvider(e){let{children:n}=e,{data:r,isLoading:a,error:i,refetch:l}=(0,eu.a)({queryKey:eh.lineage(),queryFn:getLineageDiff}),o=(0,p.useMemo)(()=>{if(r)return buildDefaultLineageGraphSets(r.base,r.current)},[r]),s=(null==i?void 0:i.message)||(null==r?void 0:r.current_error)||(null==r?void 0:r.base_error);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(LineageWatcher,{refetch:l}),(0,t.jsx)(ej.Provider,{value:{lineageGraphSets:o,error:s,isLoading:a},children:n})]})}let useLineageGraphsContext=()=>(0,p.useContext)(ej);var ev=r(39668);let eC={added:["Model Added","Added resource"],removed:["Model Removed","Removed resource"],modified:["Model Modified","Modified resource"],col_added:["Column Added","Added column"],col_removed:["Column Removed","Removed column"],col_changed:["Column Modified","Modified column"],folder_changed:["Modified","Modified folder"]};function ChangeSummary_getIconForChangeStatus(e){if("added"===e)return{color:"#1dce00",icon:_};if("removed"===e)return{color:"#ff067e",icon:E};if("modified"===e)return{color:"#ffa502",icon:L};if("col_added"===e)return{color:"#1dce00",icon:_};if("col_removed"===e)return{color:"#ff067e",icon:E};if("col_changed"===e)return{color:"#ffa502",icon:L};if("folder_changed"===e)return{color:"#ffa502",icon:IconChanged};return{color:"inherit",icon:void 0}}function SummaryText(e){let{name:n,value:r,tip:a}=e;return(0,t.jsxs)(ev.g,{alignItems:"stretch",children:[(0,t.jsxs)(u.x,{fontSize:"sm",color:"gray",children:[n,a&&(0,t.jsx)(l.u,{label:a,children:(0,t.jsx)(i.xu,{display:"inline-block",children:(0,t.jsx)(s.J,{mx:"2px",as:D.H33,boxSize:3})})})]}),r]})}function ChangeStatusCountLabel(e){let{changeStatus:n,value:r}=e,[a]=n?eC[n]:[""],{icon:i,color:l}=ChangeSummary_getIconForChangeStatus(n);return(0,t.jsxs)(ev.g,{alignItems:"stretch",children:[(0,t.jsxs)(o.k,{alignItems:"center",fontSize:"sm",color:"gray",children:[(0,t.jsx)(s.J,{mr:"5px",as:i,color:l}),a]}),(0,t.jsx)(u.x,{fontSize:"sm",children:r})]})}function calculateColumnChange(e,n){let r=0,t=0,a=0;return(e||n)&&(n&&Object.keys(n.columns||{}).forEach(n=>{(!e||!e.columns||!e.columns[n])&&r++}),e&&Object.keys(e.columns||{}).forEach(e=>{(!n||!n.columns||!n.columns[e])&&t++}),n&&e&&Object.keys(n.columns||{}).forEach(r=>{e.columns&&n.columns&&e.columns[r]&&e.columns[r].type!==n.columns[r].type&&a++})),{adds:r,removes:t,modifies:a}}function calculateChangeSummary(e,n){let r=0,t=0,a=0,i=0,l=0,o=0;return n.forEach(n=>{"added"===e.nodes[n].changeStatus?r++:"removed"===e.nodes[n].changeStatus?t++:"modified"===e.nodes[n].changeStatus&&a++;let s=e.nodes[n].data.base,c=e.nodes[n].data.current,d=calculateColumnChange(s,c);i+=d.adds,l+=d.removes,o+=d.modifies}),{adds:r,removes:t,modifies:a,col_added:i,col_removed:l,col_changed:o}}function ChangeSummary(e){let{lineageGraphSets:n}=e,{adds:r,removes:a,modifies:l,col_added:o,col_removed:s,col_changed:c}=calculateChangeSummary(n.all,n.modifiedSet);return(0,t.jsxs)(I.r,{templateColumns:"1fr 1fr",mb:"10px",borderTop:"1px solid lightgray",padding:"2.5vw",children:[(0,t.jsx)(i.xu,{borderColor:"lightgray",children:(0,t.jsx)(SummaryText,{name:"Code Changes",value:(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(I.r,{templateColumns:"1fr 1fr 1fr",width:"100%",children:[(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"added",value:r}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"removed",value:a}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"modified",value:l})]})})})}),(0,t.jsx)(i.xu,{borderLeft:"1px",paddingLeft:"12px",borderColor:"lightgray",children:(0,t.jsx)(SummaryText,{name:"Column Changes",value:(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(I.r,{templateColumns:"1fr 1fr 1fr",width:"100%",children:[(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"col_added",value:o}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"col_removed",value:s}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"col_changed",value:c})]})})})})]})}var ek=r(76353),eb=r(53248),ew=r(9763),eS=r(95853);function SchemaDiffCard(e){let{node:n,...r}=e,{icon:a}=getIconForResourceType(n.resourceType),{isLoading:i,data:s}=(0,eu.a)({queryKey:eh.rowCount(n.name),queryFn:()=>fetchModelRowCount(n.name),enabled:"model"===n.resourceType});return(0,t.jsxs)(ek.Z,{maxWidth:"500px",children:[(0,t.jsxs)(eb.O,{children:[(0,t.jsx)(O.X,{fontSize:18,children:r.title}),(0,t.jsxs)(N.U,{spacing:"8px",p:"16px",children:[(0,t.jsx)(l.u,{hasArrow:!0,label:"Type of resource",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:a}),(0,t.jsx)(R.Sn,{children:n.resourceType})]})}),"model"===n.resourceType&&(0,t.jsx)(l.u,{hasArrow:!0,label:"Number of row",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:D.SwK}),(0,t.jsx)(R.Sn,{children:(0,t.jsx)(K.N,{isLoaded:!i,noOfLines:1,skeletonHeight:2,minWidth:"30px",children:(0,t.jsx)(ModelRowCount,{rowCount:s})})})]})})]})]}),(0,t.jsx)(ew.e,{children:(0,t.jsx)(o.k,{children:(0,t.jsx)(SchemaView,{base:n.data.base,current:n.data.current})})})]})}function listChangedNodes(e){let n=[],r=e.all.nodes;return e.modifiedSet.forEach(e=>{var t,a;let i=r[e],l=mergeKeysWithStatus(Object.keys((null===(t=i.data.base)||void 0===t?void 0:t.columns)||{}),Object.keys((null===(a=i.data.current)||void 0===a?void 0:a.columns)||{})),o=!Object.values(l).every(e=>void 0===e);o&&i.data.base&&i.data.current&&n.push(i)}),n}function SchemaSummary(e){let{lineageGraphSets:n}=e,[r,a]=(0,p.useState)([]);return(0,p.useEffect)(()=>{a(listChangedNodes(n))},[n]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.k,{w:"100%",paddingBottom:"10px",marginBottom:"20px",marginTop:"20px",children:(0,t.jsx)(O.X,{fontSize:24,children:"Schema Summary"})}),(0,t.jsx)(o.k,{w:"100%",paddingBottom:"10px",marginBottom:"20px",children:0===r.length?(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(u.x,{fontSize:18,color:"gray",children:"No schema changes detected."})}):(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(eS.M,{minChildWidth:"400px",spacing:"2vw",padding:"2.5vw",width:"100%",backgroundColor:"lightgray",children:r.map(e=>(0,t.jsx)(SchemaDiffCard,{title:e.name,node:e},e.id))})})})]})}function SummaryView(){let{lineageGraphSets:e}=useLineageGraphsContext();return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(o.k,{direction:"column",w:"100%",minHeight:"650px",children:[(0,t.jsx)(o.k,{w:"100%",paddingBottom:"10px",marginBottom:"20px",children:(0,t.jsx)(O.X,{fontSize:24,children:"Change Summary"})}),e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(ChangeSummary,{lineageGraphSets:e}),(0,t.jsx)(ec.i,{}),(0,t.jsx)(SchemaSummary,{lineageGraphSets:e})]})]})})}let layout=function(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"LR",t=new(k()).graphlib.Graph;t.setDefaultEdgeLabel(()=>({})),t.setGraph({rankdir:r}),e.forEach(e=>{t.setNode(e.id,{width:300,height:36})}),n.forEach(e=>{t.setEdge(e.source,e.target)}),k().layout(t),e.forEach(e=>{let n=t.node(e.id);return e.position={x:n.x-150,y:n.y-18},e})},e_={customNode:GraphNode},eE={customEdge:GraphEdge},nodeColor=e=>{var n,r;return(null==e?void 0:null===(n=e.data)||void 0===n?void 0:n.changeStatus)?getIconForChangeStatus(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.changeStatus).color:"lightgray"},eL={all:"All",changed_models:"Changed Models"};function ChangeStatusLegend(){return(0,t.jsx)(i.xu,{bg:"white",padding:"12px",borderWidth:"1px",borderColor:"gray.200",fontSize:"sm",children:Object.entries({added:["Added","Added resource"],removed:["Removed","Removed resource"],modified:["Modified","Modified resource"]}).map(e=>{let[n,[r,a]]=e,{icon:i,color:c}=getIconForChangeStatus(n);return(0,t.jsx)(l.u,{label:a,children:(0,t.jsxs)(o.k,{alignItems:"center",gap:"6px",marginBottom:"2px",children:[(0,t.jsx)(s.J,{color:c,as:i})," ",r]})},n)})})}function _LineageView(){let[e,n,r]=(0,a.Rr)([]),[l,C,k]=(0,a.ll)([]),[b,w]=(0,p.useState)(),[S,_]=(0,p.useState)(),{lineageGraphSets:E,isLoading:L,error:N}=useLineageGraphsContext(),{isOpen:I,onOpen:O,onClose:z}=(0,c.q)(),[F,T]=(0,p.useState)(),[q,R]=(0,p.useState)("changed_models"),{getViewport:K}=(0,a._K)();return((0,p.useEffect)(()=>{if(!E)return;let e="changed_models"===q?E.changed:E.all,r=E.modifiedSet,[t,a]=toReactflow(e,E.modifiedSet);layout(t,a),w(e),_(r),n(t),C(a)},[n,C,q,E]),L)?(0,t.jsx)(o.k,{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",children:(0,t.jsx)(d.$,{size:"xl"})}):N?(0,t.jsxs)(t.Fragment,{children:["Fail to load lineage data: ",N]}):(0,t.jsxs)(o.k,{width:"100%",height:"100%",children:[(0,t.jsx)(i.xu,{flex:"1 0 0px",children:(0,t.jsxs)(a.x$,{nodeTypes:e_,edgeTypes:eE,nodes:e,edges:l,onNodesChange:r,onEdgesChange:k,onNodeClick:(e,n)=>{T(n.id)},onNodeMouseEnter:(r,t)=>{if(b&&void 0!==S){let[r,a]=highlightPath(b,S,e,l,t.id);n(r),C(a)}},onNodeMouseLeave:(r,t)=>{if(b&&void 0!==S){let[r,t]=highlightPath(b,S,e,l,null);n(r),C(t)}},maxZoom:1,minZoom:.1,fitView:!0,children:[(0,t.jsx)(y.A,{color:"#ccc"}),(0,t.jsxs)(j.Z,{showInteractive:!1,position:"top-right",children:[(0,t.jsx)(j.B,{title:"switch mode",onClick:()=>{R("all"===q?"changed_models":"all")},children:(0,t.jsx)(s.J,{as:D.Bw1})}),(0,t.jsx)(j.B,{title:"download image",onClick:()=>{let e=document.querySelector(".react-flow__viewport");(null==e?void 0:e.parentElement)&&(0,em.YM)(null==e?void 0:e.parentElement,{backgroundColor:"#ffffff00",width:null==e?void 0:e.parentElement.clientWidth,height:null==e?void 0:e.parentElement.clientHeight,style:{width:"".concat(null==e?void 0:e.parentElement.clientWidth),height:"".concat(null==e?void 0:e.parentElement.clientHeight)}}).then(e=>{let n=document.createElement("a");n.setAttribute("download","recce-lineage.png"),n.setAttribute("target","_blank"),n.setAttribute("href",e),n.click()})},children:(0,t.jsx)(s.J,{as:D.wzc})}),(0,t.jsx)(j.B,{title:"summary",onClick:O,children:(0,t.jsx)(s.J,{as:D.SnF})})]}),(0,t.jsx)(a.s_,{position:"bottom-left",children:(0,t.jsx)(ChangeStatusLegend,{})}),(0,t.jsx)(a.s_,{position:"top-left",children:(0,t.jsx)(u.x,{fontSize:"xl",color:"grey",opacity:.5,children:eL[q]})}),(0,t.jsx)(v.a,{nodeColor:nodeColor,nodeStrokeWidth:3})]})}),(0,t.jsxs)(h.u_,{isOpen:I,onClose:z,size:"6xl",children:[(0,t.jsx)(m.Z,{}),(0,t.jsxs)(x.h,{overflowY:"auto",height:"80%",children:[(0,t.jsx)(f.o,{}),(0,t.jsx)(g.f,{children:(0,t.jsx)(SummaryView,{})})]})]}),F&&(null==b?void 0:b.nodes[F])&&(0,t.jsx)(i.xu,{flex:"0 0 500px",borderLeft:"solid 1px lightgray",height:"100%",children:(0,t.jsx)(NodeView,{node:null==b?void 0:b.nodes[F],onCloseNode:()=>{T(void 0)}})})]})}function LineageView(){return(0,t.jsx)(a.tV,{children:(0,t.jsx)(_LineageView,{})})}var eD=r(12844),eN=r(98786);function RecceContextProvider(e){let{children:n}=e;return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(RecceQueryContextProvider,{children:(0,t.jsx)(LineageGraphsContextProvider,{children:n})})})}function useVersionNumber(){let[e,n]=(0,p.useState)("");return(0,p.useEffect)(()=>{(async function(){try{let e=await eo.get("/api/version");n(e.data)}catch(e){console.error("Error fetching version number:",e)}})()},[]),e}var eI=r(76920),eO=r(36700),ez=r(18974),eF=r(10287),eT=r(24275),eq=r(51348),eR=r(44525),eK=r(234),eP=r(96094),eA=r(25535),eM=r(36334);function CheckBreadcrumb(e){let{name:n,setName:r}=e,[a,l]=(0,p.useState)(!1),[o,s]=(0,p.useState)(n),c=(0,p.useRef)(null),d=(0,p.useCallback)(()=>{r(o),l(!1)},[r,l,o]);return(0,p.useEffect)(()=>{let handleClickOutside=e=>{c.current&&!c.current.contains(e.target)&&d()};return a&&document.addEventListener("mousedown",handleClickOutside),()=>{document.removeEventListener("mousedown",handleClickOutside)}},[a,c,d]),(0,t.jsxs)(eK.a,{flex:"0 1",fontSize:"12pt",fontWeight:"500",separator:(0,t.jsx)(eM.X,{color:"gray.500"}),children:[(0,t.jsx)(eP.g,{children:(0,t.jsx)(i.xu,{children:"Checklist"})}),(0,t.jsx)(eP.g,{flex:"0 1",cursor:"pointer",children:a?(0,t.jsx)(eA.I,{ref:c,value:o,onChange:e=>{s(e.target.value)},onKeyDown:e=>{"Enter"===e.key?(r(o),l(!1)):"Escape"===e.key&&(s(n),l(!1))},size:"sm",w:"auto",minW:"200px",maxW:"600px"}):(0,t.jsx)(i.xu,{onClick:()=>{s(n),l(!0)},textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",children:n})})]})}var eV=r(70556),eW=r(69005),eH=r(14800),eG=r(2600),eQ=r(68677),eU=r(83358),query_SqlEditor=e=>{let{value:n,onChange:r,onRun:a,options:i={},...l}=e;return(0,t.jsx)(X.ZP,{language:"sql",theme:"vs",value:n,onChange:e=>{void 0!==e&&r&&r(e)},onMount:(e,n)=>{a&&e.addCommand(n.KeyMod.CtrlCmd|n.KeyCode.Enter,a)},options:{tabSize:2,fontSize:16,lineNumbers:"on",automaticLayout:!0,minimap:{enabled:!1},wordWrap:"on",wrappingIndent:"indent",...i}})},eB=r(83978),eJ=r.n(eB);function _getPrimaryKeyValue(e,n){let r={};for(let t of n)r[t]=e[t];return JSON.stringify(r)}function DataFrameColumnGroupHeader(e){let{name:n,primaryKeys:r,onPrimaryKeyChange:a}=e;return"index"===n?(0,t.jsx)(t.Fragment,{}):r.includes(n)?(0,t.jsxs)(o.k,{alignItems:"center",children:[(0,t.jsx)(i.xu,{flex:1,children:n}),a&&(0,t.jsx)(s.J,{cursor:"pointer",as:b.ven,onClick:()=>{let e=r.filter(e=>e!==n);a(e)}})]}):(0,t.jsxs)(o.k,{alignItems:"center",children:[(0,t.jsx)(i.xu,{flex:1,children:n}),a&&(0,t.jsx)(s.J,{cursor:"pointer",as:b.MhP,onClick:()=>{let e=[...r.filter(e=>"index"!==e),n];a(e)}})]})}function query_toDataGrid(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3?arguments[3]:void 0,i={schema:{fields:[],primaryKey:[]},data:[]};if(!e&&n)e=i,0===r.length&&(r=n.schema.primaryKey);else if(!n&&e)n=i,0===r.length&&(r=e.schema.primaryKey);else{if(!e||!n)return{rows:[],columns:[]};if(!eJ().isEqual(e.schema.primaryKey,n.schema.primaryKey))throw Error("primary key mismatch! ".concat(e.schema.primaryKey," != ").concat(n.schema.primaryKey));0===r.length&&(r=e.schema.primaryKey)}let l=[],o=[],s={},c={};n.schema.fields.forEach(e=>{s[e.name]={},s[e.name].current=e}),e.schema.fields.forEach(e=>{s[e.name]||(s[e.name]={}),s[e.name].base=e}),Object.entries(s).forEach(e=>{let[n,{base:i,current:s}]=e;if(r.includes(n))o.push({key:"".concat(n),name:(0,t.jsx)(DataFrameColumnGroupHeader,{name:n,primaryKeys:r,onPrimaryKeyChange:a}),frozen:!0});else{if("index"===n)return;let cellClass=e=>{if(!eJ().isEqual(e["base__".concat(n)],e["current__".concat(n)]))return"diff-cell"};l.push({name:(0,t.jsx)(DataFrameColumnGroupHeader,{name:n,primaryKeys:r,onPrimaryKeyChange:a}),children:[{key:"base__".concat(n),name:"Base",renderEditCell:Q.Ug,cellClass},{key:"current__".concat(n),name:"Current",renderEditCell:Q.Ug,cellClass}]})}}),n.data.forEach(e=>{let n=_getPrimaryKeyValue(e,r);c[n]={},c[n].current=e}),e.data.forEach(e=>{let n=_getPrimaryKeyValue(e,r);c[n]||(c[n]={}),c[n].base=e});let d=Object.entries(c).map(e=>{let[n,{base:t,current:a}]=e,i=JSON.parse(n);return t&&Object.keys(t).forEach(e=>{r.includes(e)||(i["base__".concat(e)]=t[e])}),a&&Object.keys(a).forEach(e=>{r.includes(e)||(i["current__".concat(e)]=a[e])}),i});return{columns:[...o,...l],rows:d}}r(7866);let QueryDiffDataGrid=e=>{let{isFetching:n,result:r,error:a,primaryKeys:i,setPrimaryKeys:l}=e,o=(0,p.useMemo)(()=>n?{rows:[],columns:[]}:query_toDataGrid(null==r?void 0:r.base,null==r?void 0:r.current,i,l),[r,n,i,l]),{base_error:s,current_error:c}=r||{};return n?(0,t.jsxs)(eI.M,{p:"16px",height:"100%",children:[(0,t.jsx)(d.$,{size:"sm",mr:"8px"}),"Loading..."]}):a||s&&c?(0,t.jsxs)(U.b,{status:"error",children:[(0,t.jsx)(B.z,{}),"Error: ",(null==a?void 0:a.message)||c]}):0===o.columns.length?(0,t.jsx)(eI.M,{height:"100%",children:"No data"}):(0,t.jsx)(Q.ZP,{style:{blockSize:"100%"},columns:o.columns,rows:o.rows,defaultColumnOptions:{resizable:!0,maxWidth:800,width:100},className:"rdg-light"})};function QueryDiffView(e){var n,r,a;let{check:l}=e;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(eW.U,{defaultIndex:[],allowToggle:!0,children:(null==l?void 0:l.type)==="query_diff"&&(0,t.jsxs)(eH.Q,{children:[(0,t.jsxs)(eG.K,{children:["query",(0,t.jsx)(eQ.X,{})]}),(0,t.jsx)(eU.H,{children:(0,t.jsx)(i.xu,{height:"400px",width:"100%",border:"lightgray 1px solid ",children:(0,t.jsx)(query_SqlEditor,{value:(null===(n=null==l?void 0:l.params)||void 0===n?void 0:n.sql_template)||"",options:{readOnly:!0}})})})]})}),(0,t.jsx)(i.xu,{flex:"1",style:{contain:"size"},children:(null==l?void 0:l.type)==="query_diff"&&(0,t.jsx)(QueryDiffDataGrid,{isFetching:!1,result:null==l?void 0:null===(r=l.last_run)||void 0===r?void 0:r.result,primaryKeys:(null===(a=null==l?void 0:l.params)||void 0===a?void 0:a.primary_keys)||[]})})]})}function SchemaDiffView(e){let{check:n}=e,{lineageGraphSets:r}=useLineageGraphsContext(),a=n.params,i=a.node_id,l=i?null==r?void 0:r.all.nodes[i]:void 0;return l?(0,t.jsx)(SchemaView,{base:l.data.base,current:l.data.current}):(0,t.jsx)(t.Fragment,{})}var eZ=r(33695),eX=r(34030);function CheckDescription(e){let{value:n,onChange:r}=e,[a,i]=(0,p.useState)(!1),[l,s]=(0,p.useState)();return a?(0,t.jsxs)(o.k,{direction:"column",align:"flex-end",children:[(0,t.jsx)(eZ.g,{h:"200px",value:l,onChange:e=>{s(e.target.value)},onKeyDown:e=>{"Escape"===e.key&&i(!1)}}),(0,t.jsxs)(o.k,{gap:"12px",alignItems:"flex-end",children:[(0,t.jsx)(eX.r,{onClick:()=>{setTimeout(()=>{i(!1)},100)},colorScheme:"blue",children:"cancel"}),(0,t.jsx)(F.z,{mt:"8px",size:"sm",colorScheme:"blue",onClick:()=>{r&&(r(l),i(!1))},children:"Update"})]})]}):(0,t.jsx)(u.x,{maxHeight:"400px",overflow:"auto",fontSize:"11pt",onClick:()=>{s(n||""),i(!0)},whiteSpace:"pre-line",color:n?"inherit":"lightgray",children:n||"Add description here"})}let CheckDetail=e=>{let{checkId:n}=e,r=(0,ex.NL)(),[,a]=(0,ed.TH)(),{isLoading:l,error:c,data:d}=(0,eu.a)({queryKey:eh.check(n),queryFn:()=>checks_getCheck(n),refetchOnMount:!1,staleTime:3e5}),{mutate:u}=(0,eV.D)({mutationFn:e=>updateCheck(n,e),onSuccess:()=>{r.invalidateQueries({queryKey:eh.check(n)}),r.invalidateQueries({queryKey:eh.checks()})}}),{mutate:h}=(0,eV.D)({mutationFn:()=>deleteCheck(n),onSuccess:()=>{r.invalidateQueries({queryKey:eh.checks()}),a("/checks")}});return l?(0,t.jsx)(eI.M,{h:"100%",children:"Loading"}):c?(0,t.jsxs)(eI.M,{h:"100%",children:["Error: ",c.message]}):(0,t.jsxs)(o.k,{height:"100%",width:"100%",maxHeight:"100%",direction:"column",children:[(0,t.jsxs)(o.k,{p:"0px 16px",alignItems:"center",children:[(0,t.jsx)(CheckBreadcrumb,{name:(null==d?void 0:d.name)||"",setName:e=>{u({name:e})}}),(0,t.jsxs)(eO.v,{children:[(0,t.jsx)(ez.j,{as:P.h,icon:(0,t.jsx)(s.J,{as:b.D_A}),variant:"ghost"}),(0,t.jsx)(eF.q,{children:(0,t.jsx)(eT.s,{icon:(0,t.jsx)(eR.p,{}),onClick:()=>h(),children:"Delete"})})]}),(0,t.jsx)(z.L,{}),(0,t.jsx)(eq.X,{isChecked:null==d?void 0:d.is_checked,onChange:e=>{let n=e.target.checked;u({is_checked:n})},children:"Check"})]}),(0,t.jsx)(i.xu,{p:"8px 16px",minHeight:"100px",children:(0,t.jsx)(CheckDescription,{value:null==d?void 0:d.description,onChange:e=>{u({description:e})}},null==d?void 0:d.check_id)}),d&&"query_diff"==d.type&&(0,t.jsx)(QueryDiffView,{check:d}),d&&"value_diff"==d.type&&(0,t.jsx)(ValueDiffView,{check:d}),d&&"schema_diff"==d.type&&(0,t.jsx)(SchemaDiffView,{check:d})]})};var eY=r(15012),e$=r(99986);let ChecklistItem=e=>{let{check:n,selected:r,onSelect:a}=e,l=(0,ex.NL)(),c=n.check_id,{mutate:d}=(0,eV.D)({mutationFn:e=>updateCheck(c,e),onSuccess:()=>{l.invalidateQueries({queryKey:eh.check(c)}),l.invalidateQueries({queryKey:eh.checks()})}}),u=(e=>{switch(e){case"schema_diff":return eY.uhn;case"query_diff":return eY.r2i;case"value_diff":return eY.pRi;default:return eY.WzH}})(n.type);return(0,t.jsxs)(o.k,{width:"100%",p:"10px 20px",cursor:"pointer",_hover:{bg:"gray.200"},bg:r?"gray.100":"inherit",onClick:()=>a(n.check_id),alignItems:"center",gap:"5px",children:[(0,t.jsx)(s.J,{as:u}),(0,t.jsx)(i.xu,{flex:"1",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",children:n.name}),n.is_checked&&(0,t.jsx)(s.J,{color:"green",as:w.FJM})]})},CheckPage=()=>{let[,e]=(0,ed.TH)(),[,n]=(0,ed.yj)("/checks/:checkId"),r=(0,ex.NL)(),a=null==n?void 0:n.checkId,{isLoading:s,error:c,data:d,status:u}=(0,eu.a)({queryKey:eh.checks(),queryFn:listChecks,refetchOnMount:!0}),h=(0,p.useCallback)(n=>{e("/checks/".concat(n))},[e]),m=(0,p.useCallback)(async()=>{let e=await createSimpleCheck();r.invalidateQueries({queryKey:eh.checks()}),h(e.check_id)},[r,h]);return((0,p.useEffect)(()=>{if("success"===u&&d.length>0){if(a){let n=eJ().find(d,e=>e.check_id===a);n||e("/checks/".concat(d[0].check_id))}else e("/checks/".concat(d[0].check_id))}},[u,a,d,e]),s)?(0,t.jsx)(t.Fragment,{children:"Loading"}):c?(0,t.jsxs)(t.Fragment,{children:["Error: ",c.message]}):(null==d?void 0:d.length)?(0,t.jsxs)(o.k,{height:"100%",children:[(0,t.jsx)(i.xu,{flex:"0 0 400px",borderRight:"lightgray solid 1px",height:"100%",style:{contain:"size"},children:(0,t.jsxs)(ev.g,{spacing:0,align:"flex-end",children:[(0,t.jsx)(l.u,{label:"Create a simple check",children:(0,t.jsx)(P.h,{mr:"10px",variant:"unstyled","aria-label":"Create a simple check",onClick:m,icon:(0,t.jsx)(e$.d,{})})}),(0,t.jsx)(ec.i,{mb:"8px"}),d.map(e=>(0,t.jsx)(ChecklistItem,{check:e,selected:e.check_id===a,onSelect:h},e.check_id))]})}),(0,t.jsx)(i.xu,{flex:"1",height:"100%",width:"calc(100% - 400px)",children:(0,t.jsx)(ed.rs,{children:(0,t.jsx)(ed.AW,{path:"/checks/:checkId",children:e=>(0,t.jsx)(CheckDetail,{checkId:e.checkId})})})})]}):(0,t.jsx)(eI.M,{h:"100%",children:(0,t.jsxs)(ev.g,{children:[(0,t.jsx)(i.xu,{children:"No checks"}),(0,t.jsx)(F.z,{colorScheme:"blue",onClick:m,children:"Create a simple check"})]})})};async function submitRun(e){let n=e.type,r=e.params;if("query_diff"===n){let e=await eo.post("/api/runs",{type:"query_diff",params:r}),n=e.data;return n}throw Error("Wrong run type ".concat(e.type))}async function submitQueryDiff(e){return await submitRun({type:"query_diff",params:e})}let QueryPage=()=>{let{sqlQuery:e,setSqlQuery:n}=useRecceQueryContext(),[r,a]=(0,p.useState)(),[l,s]=(0,p.useState)([]),c=(0,ex.NL)(),[,d]=(0,ed.TH)(),{data:u,mutate:h,error:m,isPending:x}=(0,eV.D)({mutationFn:()=>submitQueryDiff({sql_template:e}),onSuccess:n=>{s([]),a(e)}}),f=(0,p.useCallback)(async()=>{if(!(null==u?void 0:u.run_id))return;let e=await createQueryDiffCheck(u.run_id);await updateCheck(e.check_id,{params:{...e.params,primary_keys:l}}),a(void 0),c.invalidateQueries({queryKey:eh.checks()}),d("/checks/".concat(e.check_id))},[null==u?void 0:u.run_id,d,l,c]);return(0,t.jsxs)(o.k,{direction:"column",height:"100%",children:[(0,t.jsxs)(o.k,{justifyContent:"right",padding:"5px",gap:"5px",children:[(0,t.jsx)(F.z,{colorScheme:"blue",onClick:f,isDisabled:x||!(null==u?void 0:u.run_id)||e!=r,size:"sm",children:"Add to Checklist"}),(0,t.jsx)(F.z,{colorScheme:"blue",onClick:()=>h(),isDisabled:x,size:"sm",children:"Run"})]}),(0,t.jsx)(i.xu,{flex:"1",border:"1px solid #CBD5E0",height:"200px",width:"100%",children:(0,t.jsx)(query_SqlEditor,{value:e,onChange:n,onRun:()=>h()})}),(0,t.jsx)(i.xu,{backgroundColor:"gray.100",height:"50vh",children:(0,t.jsx)(QueryDiffDataGrid,{isFetching:x,result:null==u?void 0:u.result,error:m,primaryKeys:l,setPrimaryKeys:s})})]})};function getWindow(){return window}function useHash(e){let n=getWindow(),[r,t]=(0,p.useState)(null!=e?e:"");(0,p.useEffect)(()=>{if(!n)return;t(n.location.hash);let handler=()=>t(n.location.hash);return n.addEventListener("hashchange",handler),()=>window.removeEventListener("hashchange",handler)},[n]);let a=(0,p.useCallback)(e=>{n.location.hash="!".concat(e)||0},[n]);return[r,a]}let useHashLocation=()=>{let[e,n]=useHash("#!/ssr"),r=e.replace(/^#!/,"")||"/";return r.includes("?")&&(r=r.split("?")[0]),[r,n]};var e0=r(12218);function getCookie(e){var n=document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)");return n?n.pop():""}function NavBar(){let[e,n]=(0,ed.TH)(),r=useVersionNumber(),a=[["Lineage","/lineage"],["Query","/query"],["Checklist","/checks"],["Summary","/summary"]],l=eJ().findIndex(a,n=>{let[,r]=n;return e.startsWith(r)});return(0,t.jsx)(A.m,{index:l,children:(0,t.jsxs)(M.t,{children:[a.map(e=>{let[r,a]=e;return(0,t.jsx)(V.O,{onClick:()=>{n(a)},children:r},r)}),(0,t.jsx)(i.xu,{position:"absolute",right:"0",top:"0",p:"2",color:"gray.500",children:r})]})})}function Home(){(0,p.useLayoutEffect)(()=>{let e=getCookie("recce_user_id");if(e&&e0.env.AMPLITUDE_API_KEY)try{eN.S1(e0.env.AMPLITUDE_API_KEY,e,{defaultTracking:!0})}catch(e){console.error(e)}},[]);let e="calc(100vh - 42px)";return(0,t.jsx)(eD.x,{children:(0,t.jsx)(ex.aH,{client:es,children:(0,t.jsx)(RecceContextProvider,{children:(0,t.jsxs)(ed.F0,{hook:useHashLocation,children:[(0,t.jsx)(NavBar,{}),(0,t.jsx)(i.xu,{p:0,h:e,maxH:e,overflow:"auto",children:(0,t.jsxs)(ed.rs,{children:[(0,t.jsx)(ed.AW,{path:"/lineage",children:(0,t.jsx)(LineageView,{})}),(0,t.jsx)(ed.AW,{path:"/query",children:(0,t.jsx)(QueryPage,{})}),(0,t.jsx)(ed.AW,{path:"/checks/:slug*",children:(0,t.jsx)(CheckPage,{})}),(0,t.jsx)(ed.AW,{path:"/summary",children:(0,t.jsx)(SummaryView,{})}),(0,t.jsx)(ed.AW,{path:"/ssr",children:(0,t.jsx)(t.Fragment,{children:"Loading"})}),(0,t.jsx)(ed.AW,{children:(0,t.jsx)(ed.l_,{to:"/lineage"})})]})})]})})})})}},88727:function(){},7866:function(){},75165:function(){}},function(e){e.O(0,[145,170,521,531,182,710,495,184,297,62,744],function(){return e(e.s=99178)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/recce/data/_next/static/chunks/app/page-083a64bfec7d25bf.js b/recce/data/_next/static/chunks/app/page-083a64bfec7d25bf.js new file mode 100644 index 00000000..c11d0f1b --- /dev/null +++ b/recce/data/_next/static/chunks/app/page-083a64bfec7d25bf.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{99178:function(e,n,r){Promise.resolve().then(r.bind(r,46562))},46562:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return Home}});var t=r(757),a=r(27869);function getNeighborSet(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3,t=new Set,a={},dfs=(e,r)=>{if(r<0||void 0!==a[e]&&a[e]>=r)return;a[e]=r;let i=n(e);for(let e of i)dfs(e,r-1);t.add(e)};for(let n of e)dfs(n,r);return t}function buildDefaultLineageGraphSets(e,n){function buildAllLineageGraph(e,n){let r={},t={},buildNode=(e,n)=>({id:e,name:e,data:{},from:n,parents:{},children:{}});for(let[n,t]of Object.entries(e.parent_map)){r[n]=buildNode(n,"base");let t=e.nodes&&e.nodes[n];t&&(r[n].data.base=t,r[n].name=null==t?void 0:t.name,r[n].resourceType=null==t?void 0:t.resource_type,r[n].packageName=null==t?void 0:t.package_name)}for(let[e,t]of Object.entries(n.parent_map)){r[e]?r[e].from="both":r[e]=buildNode(e,"current");let t=n.nodes&&n.nodes[e];t&&(r[e].data.current=n.nodes&&n.nodes[e],r[e].name=null==t?void 0:t.name,r[e].resourceType=null==t?void 0:t.resource_type,r[e].packageName=null==t?void 0:t.package_name)}for(let[n,a]of Object.entries(e.parent_map))for(let e of a){let a=r[n],i=r[e],l="".concat(e,"_").concat(n);t[l]={id:l,from:"base",parent:i,child:a};let o=t[l];a.parents[e]=o,i.children[n]=o}for(let[e,a]of Object.entries(n.parent_map))for(let n of a){let a=r[e],i=r[n],l="".concat(n,"_").concat(e);t[l]?t[l].from="both":t[l]={id:l,from:"current",parent:i,child:a};let o=t[l];a.parents[n]=o,i.children[e]=o}return{edges:t,nodes:r}}function buildChangedOnlyLineageGraph(e,n){let r={},t={};function union(){for(var e=arguments.length,n=Array(e),r=0;r{e.forEach(e=>{t.add(e)})}),t}let a=selectDownstream(e,n),i=selectUpstream(e,n,1),l=union(a,i);return Object.entries(e.nodes).forEach(e=>{let[n,t]=e;l.has(n)&&(r[n]=t)}),Object.entries(e.edges).forEach(e=>{let[n,r]=e;l.has(r.parent.id)&&l.has(r.child.id)&&(t[n]=r)}),{nodes:r,edges:t}}let{nodes:r,edges:t}=buildAllLineageGraph(e,n),a=[];for(let[e,n]of Object.entries(r))if("base"===n.from)n.changeStatus="removed",a.push(n.id);else if("current"===n.from)n.changeStatus="added",a.push(n.id);else{var i,l,o,s,c,d;let e=null==n?void 0:null===(o=n.data)||void 0===o?void 0:null===(l=o.base)||void 0===l?void 0:null===(i=l.checksum)||void 0===i?void 0:i.checksum,r=null==n?void 0:null===(d=n.data)||void 0===d?void 0:null===(c=d.current)||void 0===c?void 0:null===(s=c.checksum)||void 0===s?void 0:s.checksum;e&&r&&e!==r&&(n.changeStatus="modified",a.push(n.id))}for(let[e,n]of Object.entries(t))"base"===n.from?n.changeStatus="removed":"current"===n.from&&(n.changeStatus="added");return{all:{nodes:r,edges:t},changed:buildChangedOnlyLineageGraph({nodes:r,edges:t},a),modifiedSet:a}}function selectUpstream(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;return getNeighborSet(n,n=>void 0===e.nodes[n]?[]:Object.keys(e.nodes[n].parents),r)}function selectDownstream(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;return getNeighborSet(n,n=>void 0===e.nodes[n]?[]:Object.keys(e.nodes[n].children),r)}function toReactflow(e,n){let r=[],t=[];for(let[n,t]of Object.entries(e.nodes))r.push({id:t.id,position:{x:0,y:0},data:t,type:"customNode",targetPosition:a.Ly.Left,sourcePosition:a.Ly.Right});for(let[n,r]of Object.entries(e.edges))t.push({id:r.id,type:"customEdge",source:r.parent.id,target:r.child.id,data:r});return highlightPath(e,n,r,t,null)}function highlightPath(e,n,r,t,a){function union(){for(var e=arguments.length,n=Array(e),r=0;r{e.forEach(e=>{t.add(e)})}),t}let i=null!==a?union(selectUpstream(e,[a]),selectDownstream(e,[a])):getNeighborSet(n,n=>void 0===e.nodes[n]?[]:Object.keys(e.nodes[n].children)),l=new Set(t.filter(e=>i.has(e.source)&&i.has(e.target)).map(e=>e.id)),o=r.map(e=>({...e,data:{...e.data,isHighlighted:i.has(e.id)}})),s=t.map(e=>({...e,data:{...e.data,isHighlighted:l.has(e.id)}}));return[o,s]}var i=r(10126),l=r(83172),o=r(55528),s=r(29330),c=r(17714),d=r(46543),u=r(43093),h=r(7752),m=r(94410),x=r(62209),f=r(29985),g=r(42524),p=r(27726),y=r(26187),j=r(23704),v=r(33710),C=r(93864),k=r.n(C);r(94570);var b=r(11180),w=r(63240),S=r(54057);let _=b.Nbv,E=b.sFB,L=b.UGs,IconChanged=e=>(0,t.jsxs)("svg",{stroke:"currentColor",fill:"currentColor",strokeWidth:"0",viewBox:"0 0 16 16",height:"1em",width:"1em",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8 11 a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"}),(0,t.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:""})]});function getIconForChangeStatus(e){return"added"===e?{color:"#1dce00",icon:_}:"removed"===e?{color:"#ff4444",icon:E}:"modified"===e?{color:"#ffa502",icon:L}:{color:"inherit",icon:void 0}}function getIconForResourceType(e){return"model"===e?{color:"#c0eafd",icon:w.Fn3}:"metric"===e?{color:"#ffe6ee",icon:S._MV}:"source"===e?{color:"#a6dda6",icon:w.i1q}:"exposure"===e?{color:"#ffe6ee",icon:S.n8P}:"semantic_model"===e?{color:"#fb8caf",icon:S.R1C}:"seed"===e?{color:"#a6dda6",icon:w.tWi}:{color:"inherit",icon:void 0}}function GraphNode(e){var n,r;let c,{data:d}=e,{isHighlighted:u,resourceType:h,changeStatus:m}=d,x=(0,a.oR)(e=>e.transform[2]>.3),{icon:f}=getIconForResourceType(h),g="gray.400",p="solid";m&&(c=getIconForChangeStatus(m).icon,g=getIconForChangeStatus(m).color);let y=g,j=null==d?void 0:d.name;return(0,t.jsx)(l.u,{label:"model"===h?j:"".concat(j," (").concat(h,")"),placement:"top",children:(0,t.jsxs)(o.k,{width:"300px",_hover:{backgroundColor:x?"gray.100":g},borderColor:y,borderWidth:1,borderStyle:p,backgroundColor:x?"white":g,borderRadius:3,boxShadow:"unset",padding:0,className:!0===u?"node-highlight":!1===u?"node-unhighlight":void 0,children:[(0,t.jsx)(o.k,{backgroundColor:g,padding:2,borderRightWidth:1,borderColor:y,borderStyle:p,alignItems:"top",visibility:x?"inherit":"hidden",children:(0,t.jsx)(s.J,{as:f})}),(0,t.jsx)(o.k,{flex:"1 0 auto",mx:"1",width:"100px",direction:"column",children:(0,t.jsxs)(o.k,{width:"100%",textAlign:"left",flex:"1",p:1,alignItems:"center",visibility:x?"inherit":"hidden",children:[(0,t.jsx)(i.xu,{flex:"1",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",children:j}),c&&(0,t.jsx)(o.k,{children:(0,t.jsx)(s.J,{color:g,as:c,flex:"0 0 20px"})})]})}),Object.keys(null!==(n=null==d?void 0:d.parents)&&void 0!==n?n:{}).length>0&&(0,t.jsx)(a.HH,{type:"target",position:a.Ly.Left,isConnectable:!1}),Object.keys(null!==(r=null==d?void 0:d.children)&&void 0!==r?r:{}).length>0&&(0,t.jsx)(a.HH,{type:"source",position:a.Ly.Right,isConnectable:!1})]})})}function GraphEdge(e){let{sourceX:n,sourceY:r,targetX:i,targetY:l,sourcePosition:o,targetPosition:s,style:c={},markerEnd:d,data:u}=e,h={...c};(null==u?void 0:u.changeStatus)&&(h.stroke=getIconForChangeStatus(null==u?void 0:u.changeStatus).color,h.strokeDasharray="5"),(null==u?void 0:u.isHighlighted)===!1&&(h.filter="opacity(0.2) grayscale(50%)");let[m]=(0,a.OQ)({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:l,targetPosition:s});return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(a.u5,{path:m,markerEnd:d,style:{...h,...c}})})}r(88727);var D=r(89042),N=r(62648),I=r(74796),O=r(79315),z=r(90593),F=r(62130),T=r(58909),q=r(2593),R=r(19920),K=r(7467),P=r(95913),A=r(55344),M=r(1726),V=r(83622),W=r(21801),H=r(29731),G=r(80294);function mergeKeys(e,n){let r=[...e],t=[...n],a=[];for(;r.length>0&&t.length>0;)if(a.includes(r[0]))r.shift();else if(a.includes(t[0]))t.shift();else if(r[0]===t[0])a.push(r[0]),r.shift(),t.shift();else if(t.includes(r[0])){let e=t.indexOf(r[0]);for(let n=0;n{a.includes(e)||a.push(e)}),t.forEach(e=>{a.includes(e)||a.push(e)}),a}function mergeKeysWithStatus(e,n){let r=mergeKeys(e,n),t={};for(let a of r)e.includes(a)?n.includes(a)?t[a]=void 0:t[a]="removed":t[a]="added";let a={};e.forEach((e,n)=>{a[e]=n});let i=-1;for(let e of r){let n=a[e];void 0!==n&&(n>i?i=n:t[e]="reordered")}return t}function mergeColumns(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={},t=mergeKeysWithStatus(Object.keys(e),Object.keys(n));return Object.entries(t).forEach(e=>{let[n,t]=e;r[n]={name:n,reordered:"reordered"===t}}),Object.entries(e).map((e,n)=>{let[t,a]=e;r[t].baseIndex=n+1,r[t].baseType=a.type}),Object.entries(n).map((e,n)=>{let[t,a]=e;r[t].currentIndex=n+1,r[t].currentType=a.type}),r}function toDataGrid(e){function columnIndexCellClass(e){return void 0===e.baseIndex?"column-index-added":void 0===e.currentIndex?"column-index-removed":!0===e.reordered?"column-index-reordered":"column-index-normal"}function columnNameCellClass(e){return void 0===e.baseIndex?"column-body-added":void 0===e.currentIndex?"column-body-removed":!0===e.reordered?"column-body-reordered":"column-body-normal"}function columnTypeCellClass(e){return void 0===e.baseIndex?"column-body-added":void 0===e.currentIndex?"column-body-removed":e.baseType!==e.currentType?"column-body-type-changed":!0===e.reordered?"column-body-reordered":"column-body-normal"}let n=Object.values(e);return{columns:[{key:"baseIndex",name:"",resizable:!0,minWidth:35,cellClass:columnIndexCellClass},{key:"currentIndex",name:"",resizable:!0,minWidth:35,cellClass:columnIndexCellClass},{key:"name",name:"Name",resizable:!0,cellClass:columnNameCellClass},{key:"baseType",name:"Base Type",resizable:!0,cellClass:columnTypeCellClass},{key:"currentType",name:"Current Type",resizable:!0,cellClass:columnTypeCellClass}],rows:n}}r(75165),r(91702);var Q=r(52116),U=r(93683),B=r(7873);function SchemaView(e){let n,{base:r,current:a}=e,{columns:i,rows:l}=(0,p.useMemo)(()=>toDataGrid(mergeColumns(null==r?void 0:r.columns,null==a?void 0:a.columns)),[r,a]),s=r&&void 0===r.columns,c=a&&void 0===a.columns;return s&&c?n="catalog.json is missing on both current and base environments.":s?n="catalog.json is missing on base environment.":c&&(n="catalog.json is missing on current environment."),(0,t.jsxs)(o.k,{direction:"column",children:[n&&(0,t.jsxs)(U.b,{status:"warning",fontSize:"12px",p:"8px",children:[(0,t.jsx)(B.z,{}),n]}),l.length>0&&(0,t.jsx)(Q.ZP,{style:{height:"100%",fontSize:"10pt",borderWidth:1,overflowY:"auto"},columns:i,rows:l,className:"rdg-light"})]})}let J='select * from {{ ref("mymodel") }}',Z=(0,p.createContext)({sqlQuery:J,setSqlQuery:()=>{}});function RecceQueryContextProvider(e){let{children:n}=e,[r,a]=p.useState(J);return(0,t.jsx)(Z.Provider,{value:{setSqlQuery:a,sqlQuery:r},children:n})}let useRecceQueryContext=()=>(0,p.useContext)(Z);var X=r(29357);function SqlDiffView(e){let{base:n,current:r}=e;return(0,t.jsx)(X.SV,{height:"500px",language:"sql",theme:"vs",original:null==n?void 0:n.raw_code,modified:null==r?void 0:r.raw_code,options:{readOnly:!0,fontSize:14,lineNumbers:"on",automaticLayout:!0,minimap:{enabled:!1},wordWrap:"on",wrappingIndent:"same"}})}var Y=r(90068),$=r(41171),ee=r(53930),en=r(68665),er=r(84680),et=r(10929),ea=r(12218);let ei=ea.env.NEXT_PUBLIC_API_URL?ea.env.NEXT_PUBLIC_API_URL:window.location.origin;var el=r(27471);let eo=et.default.create({baseURL:ei}),es=new el.S;var ec=r(17180);function ValueDiffPanel(e){let{valueDiffSummary:n}=e;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.xu,{mb:1,children:["Model: ",(0,t.jsx)("b",{children:n.params.model}),", Primary Key: ",(0,t.jsx)("b",{children:n.params.primary_key})]}),(0,t.jsxs)(i.xu,{mb:1,children:[n.summary.total," rows (",n.summary.added," added, ",n.summary.removed," removed)"]}),(0,t.jsx)(ec.i,{mb:1,mt:1}),(0,t.jsx)(Q.ZP,{style:{height:"100%",width:"100%"},columns:n.columns.map(e=>({...e,width:void 0,resizable:!0,flexGrow:1})),rows:n.data,defaultColumnOptions:{resizable:!0},className:"rdg-light"})]})}function ValueDiffView(e){var n;let{check:r}=e,a=null===(n=r.last_run)||void 0===n?void 0:n.result,l=r.params,o=null;if(a){let e=a.data.schema.fields.map(e=>({name:e.name,key:e.name}));o={columns:e,data:a.data.data,summary:a.summary,params:l}}return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(i.xu,{p:5,children:o&&(0,t.jsx)(ValueDiffPanel,{valueDiffSummary:o})})})}var ed=r(31896);async function createSimpleCheck(){let e=await eo.post("/api/checks",{type:"simple"}),n=e.data;return n}async function createQueryDiffCheck(e){let n=await eo.post("/api/checks",{type:"query_diff",run_id:e}),r=n.data;return r}async function createValueDiffCheck(e){let n=await eo.post("/api/checks",{type:"value_diff",run_id:e}),r=n.data;return r}async function createCheckByNodeSchema(e){let n=await eo.post("/api/checks",{type:"schema_diff",params:{node_id:e}}),r=n.data;return r}async function listChecks(){let e=await eo.get("/api/checks");return e.data}async function checks_getCheck(e){let n=await eo.get("/api/checks/".concat(e));return n.data}async function updateCheck(e,n){let r=await eo.patch("/api/checks/".concat(e),n);return r.data}async function deleteCheck(e){let n=await eo.delete("/api/checks/".concat(e));return n.data}function extractColumnNames(e){function getNames(e){return e&&e.columns?Object.values(e.columns).map(e=>e.name):[]}let n=getNames(e.data.base),r=getNames(e.data.current),t=[];return n.forEach(e=>{t.includes(e)||t.push(e)}),r.forEach(e=>{t.includes(e)||t.push(e)}),t}async function fetchColumnValuesComparison(e,n){try{let r=await eo.post("/api/runs",{type:"value_diff",params:{model:e,primary_key:n}});return r.data}catch(e){console.error("Error fetching column values comparison:",e)}}async function handleAddToCheck(e){if(!e.runId)return null;let n=await createValueDiffCheck(e.runId);return n.check_id}var MismatchSummary=function(){let{isOpen:e,onOpen:n,onClose:r}=(0,c.q)(),[a,i]=(0,p.useState)(!1),[l,o]=(0,p.useState)(null);return{MismatchSummaryModal:s=>{let{node:c}=s,d="model"===c.resourceType||"seed"===c.resourceType||"source"===c.resourceType,u=extractColumnNames(c),[y,j]=(0,p.useState)(""),[,v]=(0,ed.TH)(),handleExecute=async()=>{if(!a&&""!==y){i(!0);try{let e=await fetchColumnValuesComparison(c.name,y),n=e.result,r=n.data.schema.fields.map(e=>({name:e.name,key:e.name}));o({columns:r,data:n.data.data,summary:n.summary,params:{model:c.name,primary_key:y},runId:e.run_id})}catch(e){console.error("Error fetching column values comparison:",e)}finally{i(!1)}}};return((0,p.useEffect)(()=>{var e;(null==l?void 0:null===(e=l.params)||void 0===e?void 0:e.model)!=c.name&&o(null)},[c.name]),d)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(h.u_,{isOpen:e,onClose:r,size:"6xl",children:[(0,t.jsx)(m.Z,{}),(0,t.jsxs)(x.h,{overflowY:"auto",height:"75%",children:[(0,t.jsx)(T.x,{children:"Value Diff Summary"}),(0,t.jsx)(f.o,{}),(0,t.jsx)(g.f,{children:a?(0,t.jsx)(Y.E,{size:"xs",isIndeterminate:!0}):l?(0,t.jsx)(ValueDiffPanel,{valueDiffSummary:l}):(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)($.NI,{children:[(0,t.jsx)(ee.l,{children:"Pick a primary key"}),(0,t.jsx)(en.P,{placeholder:"Select primary key",value:y,onChange:e=>j(e.target.value),children:u.map(e=>(0,t.jsx)("option",{value:e,children:e},e))})]})})}),(0,t.jsxs)(er.m,{children:[l&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(F.z,{mr:3,colorScheme:"blue",onClick:()=>{o(null)},children:"Clear"}),(0,t.jsx)(F.z,{mr:3,colorScheme:"blue",onClick:async()=>{let e=await handleAddToCheck(l);e&&v("/checks/".concat(e))},children:"Add to check"})]}),(0,t.jsx)(F.z,{colorScheme:"blue",onClick:handleExecute,children:"Execute"})]})]})]}),(0,t.jsx)(F.z,{colorScheme:"blue",size:"sm",onClick:n,children:"Value Diff Summary"})]}):(0,t.jsx)(t.Fragment,{})}}},eu=r(44903);let eh={rowCount:e=>["row_count",e],lineage:()=>["lineage"],checks:()=>["checks","list"],check:e=>["checks",e]};async function fetchModelRowCount(e){let n=await eo.get("/api/models/".concat(e,"/row_count"));return n.data}function ModelRowCount(e){let{rowCount:n}=e;if(!n)return(0,t.jsxs)(N.U,{children:[(0,t.jsx)(u.x,{children:"Failed to load"}),(0,t.jsx)(s.J,{as:D.KZt,color:"red.500"})]});let r=null===n.base?-1:n.base,a=null===n.curr?-1:n.curr,i=-1===r?"N/A":r,l=-1===a?"N/A":a;return r===a?(0,t.jsx)(u.x,{children:r}):rfetchModelRowCount(n.name),enabled:!1}),L=(0,p.useCallback)(async()=>{let e=n.id,r=await createCheckByNodeSchema(e);a("/checks/".concat(r.check_id))},[n,a]);return(0,t.jsxs)(I.r,{height:"100%",templateRows:"auto auto 1fr",children:[(0,t.jsxs)(N.U,{children:[(0,t.jsx)(i.xu,{flex:"0 1 20%",p:"16px",children:(0,t.jsx)(O.X,{size:"sm",children:n.name})}),(0,t.jsx)(z.L,{}),"modified"===n.changeStatus&&(0,t.jsxs)(i.xu,{children:[(0,t.jsx)(F.z,{onClick:y,leftIcon:(0,t.jsx)(w.tvD,{}),colorScheme:"orange",variant:"solid",children:"Diff"}),(0,t.jsxs)(h.u_,{isOpen:u,onClose:j,size:"6xl",children:[(0,t.jsx)(m.Z,{}),(0,t.jsxs)(x.h,{overflowY:"auto",height:"75%",children:[(0,t.jsx)(T.x,{children:"Model Raw Code Diff"}),(0,t.jsx)(f.o,{}),(0,t.jsx)(g.f,{children:(0,t.jsx)(SqlDiffView,{base:n.data.base,current:n.data.current})})]})]})]}),(0,t.jsx)(i.xu,{flex:"0 1 1%",p:"16px",children:(0,t.jsx)(q.P,{onClick:r})})]}),(0,t.jsx)(i.xu,{color:"gray",paddingLeft:"16px",children:(0,t.jsxs)(N.U,{spacing:"8px",children:[(0,t.jsx)(l.u,{hasArrow:!0,label:"Type of resource",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:C}),(0,t.jsx)(R.Sn,{children:n.resourceType})]})}),"model"===n.resourceType&&(0,t.jsx)(l.u,{hasArrow:!0,label:_||E?"Number of row":"Query the number of row",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:D.SwK}),_||E?(0,t.jsx)(R.Sn,{children:(0,t.jsx)(K.N,{isLoaded:!k,noOfLines:1,skeletonHeight:2,minWidth:"30px",children:(0,t.jsx)(ModelRowCount,{rowCount:b})})}):(0,t.jsx)(P.h,{"aria-label":"Query Row Count",icon:(0,t.jsx)(G.j3i,{}),size:"xs",onClick:()=>{S()}})]})})]})}),d&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(A.m,{overflow:"auto",as:o.k,children:[(0,t.jsx)(M.t,{children:(0,t.jsx)(V.O,{children:"Columns"})}),(0,t.jsx)(W.n,{overflow:"auto",height:"calc(100% - 42px)",children:(0,t.jsx)(H.x,{p:0,overflowY:"auto",height:"100%",children:(0,t.jsx)(SchemaView,{base:n.data.base,current:n.data.current})})})]}),(0,t.jsxs)(N.U,{p:"16px",children:[(0,t.jsx)(F.z,{colorScheme:"blue",size:"sm",onClick:L,children:"Add schema check"}),(0,t.jsx)(z.L,{}),"model"===n.resourceType&&"modified"===n.changeStatus&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v,{node:n}),(0,t.jsx)(F.z,{colorScheme:"blue",size:"sm",onClick:()=>{s('select * from {{ ref("'.concat(n.name,'") }}')),a("/query")},children:"Query"})]})]})]})]})}var em=r(43898),ex=r(35537),ef=r(99691);async function getLineage(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=await eo.get("/api/lineage?base=".concat(e));return n.data}async function getLineageWithError(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{let n=await getLineage(e);return{data:n}}catch(e){if(!(e instanceof ef.d7))return{error:null==e?void 0:e.message};{var n,r;let t=null==e?void 0:null===(r=e.response)||void 0===r?void 0:null===(n=r.data)||void 0===n?void 0:n.detail;if(t)return{error:t};return{error:null==e?void 0:e.message}}}}async function getLineageDiff(){let[e,n]=await Promise.all([getLineageWithError(!0),getLineageWithError(!1)]);return{base:e.data,current:n.data,base_error:e.error,current_error:n.error}}var eg=r(15550),ep=r(21123),ey=r.n(ep);let ej=(0,p.createContext)({});function LineageWatcher(e){let{refetch:n}=e,r=(0,eg.p)(),[a,i]=(0,p.useState)(),l=(0,ex.NL)();return(0,p.useEffect)(()=>{function httpUrlToWebSocketUrl(e){return e.replace(/(http)(s)?\:\/\//,"ws$2://")}let e=new WebSocket("".concat(httpUrlToWebSocketUrl(ei),"/api/ws"));return i(e),e.onopen=()=>{e.send("ping")},e.onmessage=e=>{if("pong"!==e.data)try{let n=JSON.parse(e.data);if("refresh"===n.command){let{eventType:e,srcPath:t}=n.event,[a,i]=t.split("/").slice(-2),o=ey().parse(i).name;r({description:"Detected ".concat(a," ").concat(o," ").concat(e),status:"info",variant:"left-accent",position:"bottom-right",duration:5e3,isClosable:!0}),l.invalidateQueries({queryKey:eh.lineage()})}}catch(e){console.error(e)}},()=>{e&&e.close()}},[r,l]),(0,t.jsx)(t.Fragment,{})}function LineageGraphsContextProvider(e){let{children:n}=e,{data:r,isLoading:a,error:i,refetch:l}=(0,eu.a)({queryKey:eh.lineage(),queryFn:getLineageDiff}),o=(0,p.useMemo)(()=>{if(r)return buildDefaultLineageGraphSets(r.base,r.current)},[r]),s=(null==i?void 0:i.message)||(null==r?void 0:r.current_error)||(null==r?void 0:r.base_error);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(LineageWatcher,{refetch:l}),(0,t.jsx)(ej.Provider,{value:{lineageGraphSets:o,error:s,isLoading:a},children:n})]})}let useLineageGraphsContext=()=>(0,p.useContext)(ej);var ev=r(39668);let eC={added:["Model Added","Added resource"],removed:["Model Removed","Removed resource"],modified:["Model Modified","Modified resource"],col_added:["Column Added","Added column"],col_removed:["Column Removed","Removed column"],col_changed:["Column Modified","Modified column"],folder_changed:["Modified","Modified folder"]};function ChangeSummary_getIconForChangeStatus(e){if("added"===e)return{color:"#1dce00",icon:_};if("removed"===e)return{color:"#ff067e",icon:E};if("modified"===e)return{color:"#ffa502",icon:L};if("col_added"===e)return{color:"#1dce00",icon:_};if("col_removed"===e)return{color:"#ff067e",icon:E};if("col_changed"===e)return{color:"#ffa502",icon:L};if("folder_changed"===e)return{color:"#ffa502",icon:IconChanged};return{color:"inherit",icon:void 0}}function SummaryText(e){let{name:n,value:r,tip:a}=e;return(0,t.jsxs)(ev.g,{alignItems:"stretch",children:[(0,t.jsxs)(u.x,{fontSize:"sm",color:"gray",children:[n,a&&(0,t.jsx)(l.u,{label:a,children:(0,t.jsx)(i.xu,{display:"inline-block",children:(0,t.jsx)(s.J,{mx:"2px",as:D.H33,boxSize:3})})})]}),r]})}function ChangeStatusCountLabel(e){let{changeStatus:n,value:r}=e,[a]=n?eC[n]:[""],{icon:i,color:l}=ChangeSummary_getIconForChangeStatus(n);return(0,t.jsxs)(ev.g,{alignItems:"stretch",children:[(0,t.jsxs)(o.k,{alignItems:"center",fontSize:"sm",color:"gray",children:[(0,t.jsx)(s.J,{mr:"5px",as:i,color:l}),a]}),(0,t.jsx)(u.x,{fontSize:"sm",children:r})]})}function calculateColumnChange(e,n){let r=0,t=0,a=0;return(e||n)&&(n&&Object.keys(n.columns||{}).forEach(n=>{(!e||!e.columns||!e.columns[n])&&r++}),e&&Object.keys(e.columns||{}).forEach(e=>{(!n||!n.columns||!n.columns[e])&&t++}),n&&e&&Object.keys(n.columns||{}).forEach(r=>{e.columns&&n.columns&&e.columns[r]&&e.columns[r].type!==n.columns[r].type&&a++})),{adds:r,removes:t,modifies:a}}function calculateChangeSummary(e,n){let r=0,t=0,a=0,i=0,l=0,o=0;return n.forEach(n=>{"added"===e.nodes[n].changeStatus?r++:"removed"===e.nodes[n].changeStatus?t++:"modified"===e.nodes[n].changeStatus&&a++;let s=e.nodes[n].data.base,c=e.nodes[n].data.current,d=calculateColumnChange(s,c);i+=d.adds,l+=d.removes,o+=d.modifies}),{adds:r,removes:t,modifies:a,col_added:i,col_removed:l,col_changed:o}}function ChangeSummary(e){let{lineageGraphSets:n}=e,{adds:r,removes:a,modifies:l,col_added:o,col_removed:s,col_changed:c}=calculateChangeSummary(n.all,n.modifiedSet);return(0,t.jsxs)(I.r,{templateColumns:"1fr 1fr",mb:"10px",borderTop:"1px solid lightgray",padding:"2.5vw",children:[(0,t.jsx)(i.xu,{borderColor:"lightgray",children:(0,t.jsx)(SummaryText,{name:"Code Changes",value:(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(I.r,{templateColumns:"1fr 1fr 1fr",width:"100%",children:[(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"added",value:r}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"removed",value:a}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"modified",value:l})]})})})}),(0,t.jsx)(i.xu,{borderLeft:"1px",paddingLeft:"12px",borderColor:"lightgray",children:(0,t.jsx)(SummaryText,{name:"Column Changes",value:(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(I.r,{templateColumns:"1fr 1fr 1fr",width:"100%",children:[(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"col_added",value:o}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"col_removed",value:s}),(0,t.jsx)(ChangeStatusCountLabel,{changeStatus:"col_changed",value:c})]})})})})]})}var ek=r(76353),eb=r(53248),ew=r(9763),eS=r(95853);function SchemaDiffCard(e){let{node:n,...r}=e,{icon:a}=getIconForResourceType(n.resourceType),{isLoading:i,data:s}=(0,eu.a)({queryKey:eh.rowCount(n.name),queryFn:()=>fetchModelRowCount(n.name),enabled:"model"===n.resourceType});return(0,t.jsxs)(ek.Z,{maxWidth:"500px",children:[(0,t.jsxs)(eb.O,{children:[(0,t.jsx)(O.X,{fontSize:18,children:r.title}),(0,t.jsxs)(N.U,{spacing:"8px",p:"16px",children:[(0,t.jsx)(l.u,{hasArrow:!0,label:"Type of resource",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:a}),(0,t.jsx)(R.Sn,{children:n.resourceType})]})}),"model"===n.resourceType&&(0,t.jsx)(l.u,{hasArrow:!0,label:"Number of row",children:(0,t.jsxs)(R.Vp,{children:[(0,t.jsx)(R.AD,{as:D.SwK}),(0,t.jsx)(R.Sn,{children:(0,t.jsx)(K.N,{isLoaded:!i,noOfLines:1,skeletonHeight:2,minWidth:"30px",children:(0,t.jsx)(ModelRowCount,{rowCount:s})})})]})})]})]}),(0,t.jsx)(ew.e,{children:(0,t.jsx)(o.k,{children:(0,t.jsx)(SchemaView,{base:n.data.base,current:n.data.current})})})]})}function listChangedNodes(e){let n=[],r=e.all.nodes;return e.modifiedSet.forEach(e=>{var t,a;let i=r[e],l=mergeKeysWithStatus(Object.keys((null===(t=i.data.base)||void 0===t?void 0:t.columns)||{}),Object.keys((null===(a=i.data.current)||void 0===a?void 0:a.columns)||{})),o=!Object.values(l).every(e=>void 0===e);o&&i.data.base&&i.data.current&&n.push(i)}),n}function SchemaSummary(e){let{lineageGraphSets:n}=e,[r,a]=(0,p.useState)([]);return(0,p.useEffect)(()=>{a(listChangedNodes(n))},[n]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.k,{w:"100%",paddingBottom:"10px",marginBottom:"20px",marginTop:"20px",children:(0,t.jsx)(O.X,{fontSize:24,children:"Schema Summary"})}),(0,t.jsx)(o.k,{w:"100%",paddingBottom:"10px",marginBottom:"20px",children:0===r.length?(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(u.x,{fontSize:18,color:"gray",children:"No schema changes detected."})}):(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(eS.M,{minChildWidth:"400px",spacing:"2vw",padding:"2.5vw",width:"100%",backgroundColor:"lightgray",children:r.map(e=>(0,t.jsx)(SchemaDiffCard,{title:e.name,node:e},e.id))})})})]})}function SummaryView(){let{lineageGraphSets:e}=useLineageGraphsContext();return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(o.k,{direction:"column",w:"100%",minHeight:"650px",children:[(0,t.jsx)(o.k,{w:"100%",paddingBottom:"10px",marginBottom:"20px",children:(0,t.jsx)(O.X,{fontSize:24,children:"Change Summary"})}),e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(ChangeSummary,{lineageGraphSets:e}),(0,t.jsx)(ec.i,{}),(0,t.jsx)(SchemaSummary,{lineageGraphSets:e})]})]})})}let layout=function(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"LR",t=new(k()).graphlib.Graph;t.setDefaultEdgeLabel(()=>({})),t.setGraph({rankdir:r}),e.forEach(e=>{t.setNode(e.id,{width:300,height:36})}),n.forEach(e=>{t.setEdge(e.source,e.target)}),k().layout(t),e.forEach(e=>{let n=t.node(e.id);return e.position={x:n.x-150,y:n.y-18},e})},e_={customNode:GraphNode},eE={customEdge:GraphEdge},nodeColor=e=>{var n,r;return(null==e?void 0:null===(n=e.data)||void 0===n?void 0:n.changeStatus)?getIconForChangeStatus(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.changeStatus).color:"lightgray"},eL={all:"All",changed_models:"Changed Models"};function ChangeStatusLegend(){return(0,t.jsx)(i.xu,{bg:"white",padding:"12px",borderWidth:"1px",borderColor:"gray.200",fontSize:"sm",children:Object.entries({added:["Added","Added resource"],removed:["Removed","Removed resource"],modified:["Modified","Modified resource"]}).map(e=>{let[n,[r,a]]=e,{icon:i,color:c}=getIconForChangeStatus(n);return(0,t.jsx)(l.u,{label:a,children:(0,t.jsxs)(o.k,{alignItems:"center",gap:"6px",marginBottom:"2px",children:[(0,t.jsx)(s.J,{color:c,as:i})," ",r]})},n)})})}function _LineageView(){let[e,n,r]=(0,a.Rr)([]),[l,C,k]=(0,a.ll)([]),[b,w]=(0,p.useState)(),[S,_]=(0,p.useState)(),{lineageGraphSets:E,isLoading:L,error:N}=useLineageGraphsContext(),{isOpen:I,onOpen:O,onClose:z}=(0,c.q)(),[F,T]=(0,p.useState)(),[q,R]=(0,p.useState)("changed_models"),{getViewport:K}=(0,a._K)();return((0,p.useEffect)(()=>{if(!E)return;let e="changed_models"===q?E.changed:E.all,r=E.modifiedSet,[t,a]=toReactflow(e,E.modifiedSet);layout(t,a),w(e),_(r),n(t),C(a)},[n,C,q,E]),L)?(0,t.jsx)(o.k,{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",children:(0,t.jsx)(d.$,{size:"xl"})}):N?(0,t.jsxs)(t.Fragment,{children:["Fail to load lineage data: ",N]}):(0,t.jsxs)(o.k,{width:"100%",height:"100%",children:[(0,t.jsx)(i.xu,{flex:"1 0 0px",children:(0,t.jsxs)(a.x$,{nodeTypes:e_,edgeTypes:eE,nodes:e,edges:l,onNodesChange:r,onEdgesChange:k,onNodeClick:(e,n)=>{T(n.id)},onNodeMouseEnter:(r,t)=>{if(b&&void 0!==S){let[r,a]=highlightPath(b,S,e,l,t.id);n(r),C(a)}},onNodeMouseLeave:(r,t)=>{if(b&&void 0!==S){let[r,t]=highlightPath(b,S,e,l,null);n(r),C(t)}},maxZoom:1,minZoom:.1,fitView:!0,children:[(0,t.jsx)(y.A,{color:"#ccc"}),(0,t.jsxs)(j.Z,{showInteractive:!1,position:"top-right",children:[(0,t.jsx)(j.B,{title:"switch mode",onClick:()=>{R("all"===q?"changed_models":"all")},children:(0,t.jsx)(s.J,{as:D.Bw1})}),(0,t.jsx)(j.B,{title:"download image",onClick:()=>{let e=document.querySelector(".react-flow__viewport");(null==e?void 0:e.parentElement)&&(0,em.YM)(null==e?void 0:e.parentElement,{backgroundColor:"#ffffff00",width:null==e?void 0:e.parentElement.clientWidth,height:null==e?void 0:e.parentElement.clientHeight,style:{width:"".concat(null==e?void 0:e.parentElement.clientWidth),height:"".concat(null==e?void 0:e.parentElement.clientHeight)}}).then(e=>{let n=document.createElement("a");n.setAttribute("download","recce-lineage.png"),n.setAttribute("target","_blank"),n.setAttribute("href",e),n.click()})},children:(0,t.jsx)(s.J,{as:D.wzc})}),(0,t.jsx)(j.B,{title:"summary",onClick:O,children:(0,t.jsx)(s.J,{as:D.SnF})})]}),(0,t.jsx)(a.s_,{position:"bottom-left",children:(0,t.jsx)(ChangeStatusLegend,{})}),(0,t.jsx)(a.s_,{position:"top-left",children:(0,t.jsx)(u.x,{fontSize:"xl",color:"grey",opacity:.5,children:eL[q]})}),(0,t.jsx)(v.a,{nodeColor:nodeColor,nodeStrokeWidth:3})]})}),(0,t.jsxs)(h.u_,{isOpen:I,onClose:z,size:"6xl",children:[(0,t.jsx)(m.Z,{}),(0,t.jsxs)(x.h,{overflowY:"auto",height:"80%",children:[(0,t.jsx)(f.o,{}),(0,t.jsx)(g.f,{children:(0,t.jsx)(SummaryView,{})})]})]}),F&&(null==b?void 0:b.nodes[F])&&(0,t.jsx)(i.xu,{flex:"0 0 500px",borderLeft:"solid 1px lightgray",height:"100%",children:(0,t.jsx)(NodeView,{node:null==b?void 0:b.nodes[F],onCloseNode:()=>{T(void 0)}})})]})}function LineageView(){return(0,t.jsx)(a.tV,{children:(0,t.jsx)(_LineageView,{})})}var eD=r(12844),eN=r(98786);function RecceContextProvider(e){let{children:n}=e;return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(RecceQueryContextProvider,{children:(0,t.jsx)(LineageGraphsContextProvider,{children:n})})})}function useVersionNumber(){let[e,n]=(0,p.useState)("");return(0,p.useEffect)(()=>{(async function(){try{let e=await eo.get("/api/version");n(e.data)}catch(e){console.error("Error fetching version number:",e)}})()},[]),e}var eI=r(76920),eO=r(36700),ez=r(18974),eF=r(10287),eT=r(24275),eq=r(51348),eR=r(44525),eK=r(234),eP=r(96094),eA=r(25535),eM=r(36334);function CheckBreadcrumb(e){let{name:n,setName:r}=e,[a,l]=(0,p.useState)(!1),[o,s]=(0,p.useState)(n),c=(0,p.useRef)(null),d=(0,p.useCallback)(()=>{r(o),l(!1)},[r,l,o]);return(0,p.useEffect)(()=>{let handleClickOutside=e=>{c.current&&!c.current.contains(e.target)&&d()};return a&&document.addEventListener("mousedown",handleClickOutside),()=>{document.removeEventListener("mousedown",handleClickOutside)}},[a,c,d]),(0,t.jsxs)(eK.a,{flex:"0 1",fontSize:"12pt",fontWeight:"500",separator:(0,t.jsx)(eM.X,{color:"gray.500"}),children:[(0,t.jsx)(eP.g,{children:(0,t.jsx)(i.xu,{children:"Checklist"})}),(0,t.jsx)(eP.g,{flex:"0 1",cursor:"pointer",children:a?(0,t.jsx)(eA.I,{ref:c,value:o,onChange:e=>{s(e.target.value)},onKeyDown:e=>{"Enter"===e.key?(r(o),l(!1)):"Escape"===e.key&&(s(n),l(!1))},size:"sm",w:"auto",minW:"200px",maxW:"600px"}):(0,t.jsx)(i.xu,{onClick:()=>{s(n),l(!0)},textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",children:n})})]})}var eV=r(70556),eW=r(69005),eH=r(14800),eG=r(2600),eQ=r(68677),eU=r(83358),query_SqlEditor=e=>{let{value:n,onChange:r,onRun:a,options:i={},...l}=e;return(0,t.jsx)(X.ZP,{language:"sql",theme:"vs",value:n,onChange:e=>{void 0!==e&&r&&r(e)},onMount:(e,n)=>{a&&e.addCommand(n.KeyMod.CtrlCmd|n.KeyCode.Enter,a)},options:{tabSize:2,fontSize:16,lineNumbers:"on",automaticLayout:!0,minimap:{enabled:!1},wordWrap:"on",wrappingIndent:"indent",...i}})},eB=r(83978),eJ=r.n(eB);function _getPrimaryKeyValue(e,n){let r={};for(let t of n)r[t]=e[t];return JSON.stringify(r)}function DataFrameColumnGroupHeader(e){let{name:n,primaryKeys:r,onPrimaryKeyChange:a}=e;return"index"===n?(0,t.jsx)(t.Fragment,{}):r.includes(n)?(0,t.jsxs)(o.k,{alignItems:"center",children:[(0,t.jsx)(i.xu,{flex:1,children:n}),a&&(0,t.jsx)(s.J,{cursor:"pointer",as:b.ven,onClick:()=>{let e=r.filter(e=>e!==n);a(e)}})]}):(0,t.jsxs)(o.k,{alignItems:"center",children:[(0,t.jsx)(i.xu,{flex:1,children:n}),a&&(0,t.jsx)(s.J,{cursor:"pointer",as:b.MhP,onClick:()=>{let e=[...r.filter(e=>"index"!==e),n];a(e)}})]})}function query_toDataGrid(e,n){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3?arguments[3]:void 0,i={schema:{fields:[],primaryKey:[]},data:[]};if(!e&&n)e=i,0===r.length&&(r=n.schema.primaryKey);else if(!n&&e)n=i,0===r.length&&(r=e.schema.primaryKey);else{if(!e||!n)return{rows:[],columns:[]};if(!eJ().isEqual(e.schema.primaryKey,n.schema.primaryKey))throw Error("primary key mismatch! ".concat(e.schema.primaryKey," != ").concat(n.schema.primaryKey));0===r.length&&(r=e.schema.primaryKey)}let l=[],o=[],s={},c={};n.schema.fields.forEach(e=>{s[e.name]={},s[e.name].current=e}),e.schema.fields.forEach(e=>{s[e.name]||(s[e.name]={}),s[e.name].base=e}),Object.entries(s).forEach(e=>{let[n,{base:i,current:s}]=e;if(r.includes(n))o.push({key:"".concat(n),name:(0,t.jsx)(DataFrameColumnGroupHeader,{name:n,primaryKeys:r,onPrimaryKeyChange:a}),frozen:!0});else{if("index"===n)return;let cellClass=e=>{if(!eJ().isEqual(e["base__".concat(n)],e["current__".concat(n)]))return"diff-cell"};l.push({name:(0,t.jsx)(DataFrameColumnGroupHeader,{name:n,primaryKeys:r,onPrimaryKeyChange:a}),children:[{key:"base__".concat(n),name:"Base",renderEditCell:Q.Ug,cellClass},{key:"current__".concat(n),name:"Current",renderEditCell:Q.Ug,cellClass}]})}}),n.data.forEach(e=>{let n=_getPrimaryKeyValue(e,r);c[n]={},c[n].current=e}),e.data.forEach(e=>{let n=_getPrimaryKeyValue(e,r);c[n]||(c[n]={}),c[n].base=e});let d=Object.entries(c).map(e=>{let[n,{base:t,current:a}]=e,i=JSON.parse(n);return t&&Object.keys(t).forEach(e=>{r.includes(e)||(i["base__".concat(e)]=t[e])}),a&&Object.keys(a).forEach(e=>{r.includes(e)||(i["current__".concat(e)]=a[e])}),i});return{columns:[...o,...l],rows:d}}r(7866);let QueryDiffDataGrid=e=>{let{isFetching:n,result:r,error:a,primaryKeys:i,setPrimaryKeys:l}=e,o=(0,p.useMemo)(()=>n?{rows:[],columns:[]}:query_toDataGrid(null==r?void 0:r.base,null==r?void 0:r.current,i,l),[r,n,i,l]),{base_error:s,current_error:c}=r||{};return n?(0,t.jsxs)(eI.M,{p:"16px",height:"100%",children:[(0,t.jsx)(d.$,{size:"sm",mr:"8px"}),"Loading..."]}):a||s&&c?(0,t.jsxs)(U.b,{status:"error",children:[(0,t.jsx)(B.z,{}),"Error: ",(null==a?void 0:a.message)||c]}):0===o.columns.length?(0,t.jsx)(eI.M,{height:"100%",children:"No data"}):(0,t.jsx)(Q.ZP,{style:{blockSize:"100%"},columns:o.columns,rows:o.rows,defaultColumnOptions:{resizable:!0,maxWidth:800,width:100},className:"rdg-light"})};function QueryDiffView(e){var n,r,a;let{check:l}=e;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(eW.U,{defaultIndex:[],allowToggle:!0,children:(null==l?void 0:l.type)==="query_diff"&&(0,t.jsxs)(eH.Q,{children:[(0,t.jsxs)(eG.K,{children:["query",(0,t.jsx)(eQ.X,{})]}),(0,t.jsx)(eU.H,{children:(0,t.jsx)(i.xu,{height:"400px",width:"100%",border:"lightgray 1px solid ",children:(0,t.jsx)(query_SqlEditor,{value:(null===(n=null==l?void 0:l.params)||void 0===n?void 0:n.sql_template)||"",options:{readOnly:!0}})})})]})}),(0,t.jsx)(i.xu,{flex:"1",style:{contain:"size"},children:(null==l?void 0:l.type)==="query_diff"&&(0,t.jsx)(QueryDiffDataGrid,{isFetching:!1,result:null==l?void 0:null===(r=l.last_run)||void 0===r?void 0:r.result,primaryKeys:(null===(a=null==l?void 0:l.params)||void 0===a?void 0:a.primary_keys)||[]})})]})}function SchemaDiffView(e){let{check:n}=e,{lineageGraphSets:r}=useLineageGraphsContext(),a=n.params,i=a.node_id,l=i?null==r?void 0:r.all.nodes[i]:void 0;return l?(0,t.jsx)(SchemaView,{base:l.data.base,current:l.data.current}):(0,t.jsx)(t.Fragment,{})}var eZ=r(33695),eX=r(34030);function CheckDescription(e){let{value:n,onChange:r}=e,[a,i]=(0,p.useState)(!1),[l,s]=(0,p.useState)();return a?(0,t.jsxs)(o.k,{direction:"column",align:"flex-end",children:[(0,t.jsx)(eZ.g,{h:"200px",value:l,onChange:e=>{s(e.target.value)},onKeyDown:e=>{"Escape"===e.key&&i(!1)}}),(0,t.jsxs)(o.k,{gap:"12px",alignItems:"flex-end",children:[(0,t.jsx)(eX.r,{onClick:()=>{setTimeout(()=>{i(!1)},100)},colorScheme:"blue",children:"cancel"}),(0,t.jsx)(F.z,{mt:"8px",size:"sm",colorScheme:"blue",onClick:()=>{r&&(r(l),i(!1))},children:"Update"})]})]}):(0,t.jsx)(u.x,{maxHeight:"400px",overflow:"auto",fontSize:"11pt",onClick:()=>{s(n||""),i(!0)},whiteSpace:"pre-line",color:n?"inherit":"lightgray",children:n||"Add description here"})}let CheckDetail=e=>{let{checkId:n}=e,r=(0,ex.NL)(),[,a]=(0,ed.TH)(),{isLoading:l,error:c,data:d}=(0,eu.a)({queryKey:eh.check(n),queryFn:()=>checks_getCheck(n),refetchOnMount:!1,staleTime:3e5}),{mutate:u}=(0,eV.D)({mutationFn:e=>updateCheck(n,e),onSuccess:()=>{r.invalidateQueries({queryKey:eh.check(n)}),r.invalidateQueries({queryKey:eh.checks()})}}),{mutate:h}=(0,eV.D)({mutationFn:()=>deleteCheck(n),onSuccess:()=>{r.invalidateQueries({queryKey:eh.checks()}),a("/checks")}});return l?(0,t.jsx)(eI.M,{h:"100%",children:"Loading"}):c?(0,t.jsxs)(eI.M,{h:"100%",children:["Error: ",c.message]}):(0,t.jsxs)(o.k,{height:"100%",width:"100%",maxHeight:"100%",direction:"column",children:[(0,t.jsxs)(o.k,{p:"0px 16px",alignItems:"center",children:[(0,t.jsx)(CheckBreadcrumb,{name:(null==d?void 0:d.name)||"",setName:e=>{u({name:e})}}),(0,t.jsxs)(eO.v,{children:[(0,t.jsx)(ez.j,{as:P.h,icon:(0,t.jsx)(s.J,{as:b.D_A}),variant:"ghost"}),(0,t.jsx)(eF.q,{children:(0,t.jsx)(eT.s,{icon:(0,t.jsx)(eR.p,{}),onClick:()=>h(),children:"Delete"})})]}),(0,t.jsx)(z.L,{}),(0,t.jsx)(eq.X,{isChecked:null==d?void 0:d.is_checked,onChange:e=>{let n=e.target.checked;u({is_checked:n})},children:"Check"})]}),(0,t.jsx)(i.xu,{p:"8px 16px",minHeight:"100px",children:(0,t.jsx)(CheckDescription,{value:null==d?void 0:d.description,onChange:e=>{u({description:e})}},null==d?void 0:d.check_id)}),d&&"query_diff"==d.type&&(0,t.jsx)(QueryDiffView,{check:d}),d&&"value_diff"==d.type&&(0,t.jsx)(ValueDiffView,{check:d}),d&&"schema_diff"==d.type&&(0,t.jsx)(SchemaDiffView,{check:d})]})};var eY=r(15012),e$=r(99986);let ChecklistItem=e=>{let{check:n,selected:r,onSelect:a}=e,l=(0,ex.NL)(),c=n.check_id,{mutate:d}=(0,eV.D)({mutationFn:e=>updateCheck(c,e),onSuccess:()=>{l.invalidateQueries({queryKey:eh.check(c)}),l.invalidateQueries({queryKey:eh.checks()})}}),u=(e=>{switch(e){case"schema_diff":return eY.uhn;case"query_diff":return eY.r2i;case"value_diff":return eY.pRi;default:return eY.WzH}})(n.type);return(0,t.jsxs)(o.k,{width:"100%",p:"10px 20px",cursor:"pointer",_hover:{bg:"gray.200"},bg:r?"gray.100":"inherit",onClick:()=>a(n.check_id),alignItems:"center",gap:"5px",children:[(0,t.jsx)(s.J,{as:u}),(0,t.jsx)(i.xu,{flex:"1",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",children:n.name}),n.is_checked&&(0,t.jsx)(s.J,{color:"green",as:w.FJM})]})},CheckPage=()=>{let[,e]=(0,ed.TH)(),[,n]=(0,ed.yj)("/checks/:checkId"),r=(0,ex.NL)(),a=null==n?void 0:n.checkId,{isLoading:s,error:c,data:d,status:u}=(0,eu.a)({queryKey:eh.checks(),queryFn:listChecks,refetchOnMount:!0}),h=(0,p.useCallback)(n=>{e("/checks/".concat(n))},[e]),m=(0,p.useCallback)(async()=>{let e=await createSimpleCheck();r.invalidateQueries({queryKey:eh.checks()}),h(e.check_id)},[r,h]);return((0,p.useEffect)(()=>{if("success"===u&&d.length>0){if(a){let n=eJ().find(d,e=>e.check_id===a);n||e("/checks/".concat(d[0].check_id))}else e("/checks/".concat(d[0].check_id))}},[u,a,d,e]),s)?(0,t.jsx)(t.Fragment,{children:"Loading"}):c?(0,t.jsxs)(t.Fragment,{children:["Error: ",c.message]}):(null==d?void 0:d.length)?(0,t.jsxs)(o.k,{height:"100%",children:[(0,t.jsx)(i.xu,{flex:"0 0 400px",borderRight:"lightgray solid 1px",height:"100%",style:{contain:"size"},children:(0,t.jsxs)(ev.g,{spacing:0,align:"flex-end",children:[(0,t.jsx)(l.u,{label:"Create a simple check",children:(0,t.jsx)(P.h,{mr:"10px",variant:"unstyled","aria-label":"Create a simple check",onClick:m,icon:(0,t.jsx)(e$.d,{})})}),(0,t.jsx)(ec.i,{mb:"8px"}),d.map(e=>(0,t.jsx)(ChecklistItem,{check:e,selected:e.check_id===a,onSelect:h},e.check_id))]})}),(0,t.jsx)(i.xu,{flex:"1",height:"100%",width:"calc(100% - 400px)",children:(0,t.jsx)(ed.rs,{children:(0,t.jsx)(ed.AW,{path:"/checks/:checkId",children:e=>(0,t.jsx)(CheckDetail,{checkId:e.checkId})})})})]}):(0,t.jsx)(eI.M,{h:"100%",children:(0,t.jsxs)(ev.g,{children:[(0,t.jsx)(i.xu,{children:"No checks"}),(0,t.jsx)(F.z,{colorScheme:"blue",onClick:m,children:"Create a simple check"})]})})};async function submitRun(e){let n=e.type,r=e.params;if("query_diff"===n){let e=await eo.post("/api/runs",{type:"query_diff",params:r}),n=e.data;return n}throw Error("Wrong run type ".concat(e.type))}async function submitQueryDiff(e){return await submitRun({type:"query_diff",params:e})}let QueryPage=()=>{let{sqlQuery:e,setSqlQuery:n}=useRecceQueryContext(),[r,a]=(0,p.useState)(),[l,s]=(0,p.useState)([]),c=(0,ex.NL)(),[,d]=(0,ed.TH)(),{data:u,mutate:h,error:m,isPending:x}=(0,eV.D)({mutationFn:()=>submitQueryDiff({sql_template:e}),onSuccess:n=>{s([]),a(e)}}),f=(0,p.useCallback)(async()=>{if(!(null==u?void 0:u.run_id))return;let e=await createQueryDiffCheck(u.run_id);await updateCheck(e.check_id,{params:{...e.params,primary_keys:l}}),a(void 0),c.invalidateQueries({queryKey:eh.checks()}),d("/checks/".concat(e.check_id))},[null==u?void 0:u.run_id,d,l,c]);return(0,t.jsxs)(o.k,{direction:"column",height:"100%",children:[(0,t.jsxs)(o.k,{justifyContent:"right",padding:"5px",gap:"5px",children:[(0,t.jsx)(F.z,{colorScheme:"blue",onClick:f,isDisabled:x||!(null==u?void 0:u.run_id)||e!=r,size:"sm",children:"Add to Checklist"}),(0,t.jsx)(F.z,{colorScheme:"blue",onClick:()=>h(),isDisabled:x,size:"sm",children:"Run"})]}),(0,t.jsx)(i.xu,{flex:"1",border:"1px solid #CBD5E0",height:"200px",width:"100%",children:(0,t.jsx)(query_SqlEditor,{value:e,onChange:n,onRun:()=>h()})}),(0,t.jsx)(i.xu,{backgroundColor:"gray.100",height:"50vh",children:(0,t.jsx)(QueryDiffDataGrid,{isFetching:x,result:null==u?void 0:u.result,error:m,primaryKeys:l,setPrimaryKeys:s})})]})};function getWindow(){return window}function useHash(e){let n=getWindow(),[r,t]=(0,p.useState)(null!=e?e:"");(0,p.useEffect)(()=>{if(!n)return;t(n.location.hash);let handler=()=>t(n.location.hash);return n.addEventListener("hashchange",handler),()=>window.removeEventListener("hashchange",handler)},[n]);let a=(0,p.useCallback)(e=>{n.location.hash="!".concat(e)||0},[n]);return[r,a]}let useHashLocation=()=>{let[e,n]=useHash("#!/ssr"),r=e.replace(/^#!/,"")||"/";return r.includes("?")&&(r=r.split("?")[0]),[r,n]};var e0=r(12218);function getCookie(e){var n=document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)");return n?n.pop():""}function NavBar(){let[e,n]=(0,ed.TH)(),r=useVersionNumber(),a=[["Lineage","/lineage"],["Query","/query"],["Checklist","/checks"],["Summary","/summary"]],l=eJ().findIndex(a,n=>{let[,r]=n;return e.startsWith(r)});return(0,t.jsx)(A.m,{index:l,children:(0,t.jsxs)(M.t,{children:[a.map(e=>{let[r,a]=e;return(0,t.jsx)(V.O,{onClick:()=>{n(a)},children:r},r)}),(0,t.jsx)(i.xu,{position:"absolute",right:"0",top:"0",p:"2",color:"gray.500",children:r})]})})}function Home(){(0,p.useLayoutEffect)(()=>{let e=getCookie("recce_user_id");if(e&&e0.env.AMPLITUDE_API_KEY)try{eN.S1(e0.env.AMPLITUDE_API_KEY,e,{defaultTracking:!0})}catch(e){console.error(e)}},[]);let e="calc(100vh - 42px)";return(0,t.jsx)(eD.x,{children:(0,t.jsx)(ex.aH,{client:es,children:(0,t.jsx)(RecceContextProvider,{children:(0,t.jsxs)(ed.F0,{hook:useHashLocation,children:[(0,t.jsx)(NavBar,{}),(0,t.jsx)(i.xu,{p:0,h:e,maxH:e,overflow:"auto",children:(0,t.jsxs)(ed.rs,{children:[(0,t.jsx)(ed.AW,{path:"/lineage",children:(0,t.jsx)(LineageView,{})}),(0,t.jsx)(ed.AW,{path:"/query",children:(0,t.jsx)(QueryPage,{})}),(0,t.jsx)(ed.AW,{path:"/checks/:slug*",children:(0,t.jsx)(CheckPage,{})}),(0,t.jsx)(ed.AW,{path:"/summary",children:(0,t.jsx)(SummaryView,{})}),(0,t.jsx)(ed.AW,{path:"/ssr",children:(0,t.jsx)(t.Fragment,{children:"Loading"})}),(0,t.jsx)(ed.AW,{children:(0,t.jsx)(ed.l_,{to:"/lineage"})})]})})]})})})})}},88727:function(){},7866:function(){},75165:function(){}},function(e){e.O(0,[145,170,521,531,182,710,495,184,297,62,744],function(){return e(e.s=99178)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/recce/data/_next/static/vw6-nFLmYn9fgnfOIrpZL/_buildManifest.js b/recce/data/_next/static/p6wDcpRSIPyT41-YlwcVC/_buildManifest.js similarity index 100% rename from recce/data/_next/static/vw6-nFLmYn9fgnfOIrpZL/_buildManifest.js rename to recce/data/_next/static/p6wDcpRSIPyT41-YlwcVC/_buildManifest.js diff --git a/recce/data/_next/static/vw6-nFLmYn9fgnfOIrpZL/_ssgManifest.js b/recce/data/_next/static/p6wDcpRSIPyT41-YlwcVC/_ssgManifest.js similarity index 100% rename from recce/data/_next/static/vw6-nFLmYn9fgnfOIrpZL/_ssgManifest.js rename to recce/data/_next/static/p6wDcpRSIPyT41-YlwcVC/_ssgManifest.js diff --git a/recce/data/index.html b/recce/data/index.html index 51b87d11..42275569 100644 --- a/recce/data/index.html +++ b/recce/data/index.html @@ -1,4 +1,4 @@ -recce
Loading
\ No newline at end of file + ){outline:none;box-shadow:none;}select::-ms-expand{display:none;}:root,:host{--chakra-vh:100vh;}@supports (height: -webkit-fill-available){:root,:host{--chakra-vh:-webkit-fill-available;}}@supports (height: -moz-fill-available){:root,:host{--chakra-vh:-moz-fill-available;}}@supports (height: 100dvh){:root,:host{--chakra-vh:100dvh;}}
Loading
\ No newline at end of file diff --git a/recce/data/index.txt b/recce/data/index.txt index c2c9c78a..744e1c6c 100644 --- a/recce/data/index.txt +++ b/recce/data/index.txt @@ -1,9 +1,9 @@ -0:["vw6-nFLmYn9fgnfOIrpZL",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L1",[null,"$L2"]]]] +0:["p6wDcpRSIPyT41-YlwcVC",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L1",[null,"$L2"]]]] 3:HL["/_next/static/css/9510e3711e97a4b9.css","style",{"crossOrigin":""}] 4:I[44813,[],""] 5:I[82593,[],""] 7:I[32658,[],""] -8:I[46562,["145","static/chunks/fb2d5402-92fbe44373ccd9ea.js","170","static/chunks/526a6206-b6e83e321d45ba51.js","521","static/chunks/607285b2-e5589de129b19f0d.js","531","static/chunks/f78b7092-1120b9c9a2cda1f7.js","182","static/chunks/5e9a126f-da62af62011c0643.js","710","static/chunks/2d02f0f7-ed3b4e4daa7c5d22.js","495","static/chunks/6dc81886-a3fa8efdc3652e8f.js","184","static/chunks/184-73d6dcaa81ccae46.js","931","static/chunks/app/page-06ec8c65a498a182.js"],""] +8:I[46562,["145","static/chunks/fb2d5402-92fbe44373ccd9ea.js","170","static/chunks/526a6206-b6e83e321d45ba51.js","521","static/chunks/607285b2-e5589de129b19f0d.js","531","static/chunks/f78b7092-1120b9c9a2cda1f7.js","182","static/chunks/5e9a126f-da62af62011c0643.js","710","static/chunks/2d02f0f7-ed3b4e4daa7c5d22.js","495","static/chunks/6dc81886-a3fa8efdc3652e8f.js","184","static/chunks/184-73d6dcaa81ccae46.js","931","static/chunks/app/page-083a64bfec7d25bf.js"],""] 1:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"suppressHydrationWarning":true,"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","loadingScripts":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$L6",["$","$L7",null,{"propsForComponent":{"params":{}},"Component":"$8","isStaticGeneration":true}],null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/9510e3711e97a4b9.css","precedence":"next","crossOrigin":""}]]}]}]}],null] 2:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"recce"}],["$","meta","3",{"name":"description","content":"Recce: a dbt tool"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]] 6:null