@dataramen/cli 0.0.24 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/run.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- var D=Object.create;var x=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var K=(n,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of z(t))!G.call(n,s)&&s!==e&&x(n,s,{get:()=>t[s],enumerable:!(o=q(t,s))||o.enumerable});return n};var m=(n,t,e)=>(e=n!=null?D(Y(n)):{},K(t||!n||!n.__esModule?x(e,"default",{value:n,enumerable:!0}):e,n));var B=m(require("yargs")),J=require("yargs/helpers");var S=require("node:os"),E=require("node:path"),Q=(0,S.homedir)();var i="@dataramen/local-server",r=(0,E.join)(Q,".dataramen",".runtime","server");var W=require("node:path"),L=m(require("fs-extra")),V=require("node:child_process");var R=m(require("fs-extra")),h=require("node:path");function _(n){let t;function e(){try{return t||(t=R.readJsonSync(n)),t}catch{return}}return e}var k=_((0,h.join)(__dirname,"..","package.json")),g=_((0,h.join)(r,"package.json"));var p=m(require("fs-extra")),a=require("node:path"),b=require("node:child_process"),A=require("node:util"),d=m(require("yocto-spinner")),f=(0,A.promisify)(b.exec);function O(){try{let n=g();if(!n)return!0;let t=p.readJsonSync((0,a.join)(__dirname,"..","dist","package.json"));return n.version!==t.version}catch{return!0}}async function j(){let n=(0,d.default)({text:"Checking if PM2 is installed"}).start();try{return await f("pm2 -v"),n.success("PM2 already installed"),!0}catch{return n.warning("PM2 not installed"),!1}}async function C(){let n=(0,d.default)({text:"Installing PM2"}).start();try{await f("npm i -g pm2"),n.success("Installed PM2")}catch{n.error("Failed to install PM2"),process.exit(1)}}async function y(){let n=(0,d.default)({text:"Stop running instances of "+i}).start();try{await f(`pm2 stop "${i}"`),n.warning("Stopped "+i)}catch{n.success("No running instances of "+i+" found")}}async function N(){let n=(0,d.default)({text:"Create local server"}).start();p.copySync((0,a.join)(__dirname,"..","dist","code"),(0,a.join)(r,"code")),p.copySync((0,a.join)(__dirname,"..","dist","env",".env.default"),(0,a.join)(r,"env",".env.default")),p.copySync((0,a.join)(__dirname,"..","dist","package.json"),(0,a.join)(r,"package.json")),n.text="Install local server dependencies",await f("npm i",{cwd:r}),n.success("Local server installed")}var I=m(require("yocto-spinner")),w=m(require("open"));var F=require("node:net");async function T(n){return new Promise(t=>{let e=(0,F.createServer)().once("error",()=>{t(!1)}).once("listening",()=>{e.close()}).once("close",()=>t(!0)).listen(n,"0.0.0.0")})}var $=require("fs-extra");var M=require("node:path");function U(...n){let t={};for(let e of n){let o=e.split(`
3
- `);for(let s of o){let u=s.trim();if(!u||u.startsWith("#"))continue;let v=u.indexOf("=");if(v===-1)continue;let H=u.slice(0,v).trim(),c=u.slice(v+1).trim();(c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),t[H]=c}}return{getNumber:e=>nn(t[e]),getString:e=>tn(t[e]),getBoolean:e=>en(t[e])}}function X(n){let t=[];for(let e of n){let o=Z(e);o&&t.push(o)}return U(...t)}var P=X([".env.default",".env"]);function Z(n){try{return(0,$.readFileSync)((0,M.join)(r,"env",n),"utf-8")}catch{return}}function nn(n){if(!n)return;let t=Number(n);if(!isNaN(t)&&n.trim()!=="")return t;throw new Error("Wrong env value type")}function tn(n){if(n){if(typeof n=="string")return n;throw new Error("Wrong env value type")}}function en(n){if(!n)return;let t=n.toLowerCase();if(t==="true")return!0;if(t==="false")return!1;throw new Error("Wrong env value type")}async function rn(){await j()||await C(),await y();try{O()&&await N();let t=P.getNumber("PORT");if(!t)throw new Error("PORT env variable not found");if(!await T(t))throw new Error(`Port ${t} is occupied by another process`);let o=(0,I.default)({text:"Starting new instance of "+i}).start(),s=L.readJsonSync((0,W.join)(r,"package.json"));await f(`pm2 start "${s.main}" --name "${i}" --no-autorestart`,{cwd:r}),o.success("Local server will be available in a couple of seconds"),console.log("You can close this window"),await(0,w.default)(`http://localhost:${t}`),console.log(`App is running at http://localhost:${t} and https://app.dataramen.xyz`)}catch(t){console.error("Failed to start local server",t)}}async function on(){(0,V.execSync)(`pm2 logs ${i}`,{stdio:"inherit"})}async function sn(){await y()}function an(){console.log(`DataRamen CLI version: ${k().version}`),console.log(`DataRamen local server version: ${g().version}`)}async function cn(){let n=P.getNumber("PORT");await(0,w.default)(`http://localhost:${n}`)}var l={start:rn,logs:on,stop:sn,version:an,open:cn};(0,B.default)((0,J.hideBin)(process.argv)).command("start","Default command, start/restart the server",l.start).command(["logs"],"Listen for logs",l.logs).command("stop","Stop the server",l.stop).command("open","Stop the server",l.open).command(["version"],"Show version",l.version).parse();
2
+ var B=Object.create;var P=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var Q=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of q(e))!z.call(t,s)&&s!==n&&P(t,s,{get:()=>e[s],enumerable:!(r=U(e,s))||r.enumerable});return t};var l=(t,e,n)=>(n=t!=null?B(G(t)):{},Q(e||!t||!t.__esModule?P(n,"default",{value:t,enumerable:!0}):n,t));var D=l(require("yargs")),J=require("yargs/helpers");var x=require("node:os"),b=require("node:path"),X=(0,x.homedir)();var a="@dataramen/local-server",o=(0,b.join)(X,".dataramen",".runtime","server");var H=require("node:path"),L=l(require("fs-extra")),W=require("node:child_process");var R=l(require("fs-extra")),h=require("node:path");function _(t){let e;function n(){try{return e||(e=R.readJsonSync(t)),e}catch{return}}return n}var A=_((0,h.join)(__dirname,"..","package.json")),v=_((0,h.join)(o,"package.json"));var f=l(require("fs-extra")),c=require("node:path"),k=require("node:child_process"),C=require("node:util"),d=l(require("yocto-spinner")),p=(0,C.promisify)(k.exec);function T(){try{let t=v();if(!t)return!0;let e=f.readJsonSync((0,c.join)(__dirname,"..","dist","package.json"));return t.version!==e.version}catch{return!0}}async function V(){let t=(0,d.default)({text:"Checking if PM2 is installed"}).start();try{return await p("pm2 -v"),t.success("PM2 already installed"),!0}catch{return t.warning("PM2 not installed"),!1}}async function N(){let t=(0,d.default)({text:"Installing PM2"}).start();try{await p("npm i -g pm2"),t.success("Installed PM2")}catch{t.error("Failed to install PM2"),process.exit(1)}}async function y(){let t=(0,d.default)({text:"Stop running instances of "+a}).start();try{await p(`pm2 stop "${a}"`),t.warning("Stopped "+a)}catch{t.success("No running instances of "+a+" found")}}async function j(){let t=(0,d.default)({text:"Create local server"}).start();f.copySync((0,c.join)(__dirname,"..","dist","code"),(0,c.join)(o,"code")),f.copySync((0,c.join)(__dirname,"..","dist","env",".env.default"),(0,c.join)(o,"env",".env.default")),f.copySync((0,c.join)(__dirname,"..","dist","package.json"),(0,c.join)(o,"package.json")),t.text="Install local server dependencies",await p("npm i",{cwd:o}),t.success("Local server installed")}var w=l(require("yocto-spinner")),S=l(require("open"));var O=require("node:net");async function I(t){return new Promise(e=>{let n=(0,O.createServer)().once("error",()=>{e(!1)}).once("listening",()=>{n.close()}).once("close",()=>e(!0)).listen(t,"127.0.0.1")})}var M=require("fs-extra");var $=require("node:path");function Y(...t){let e={};for(let n of t){let r=n.split(`
3
+ `);for(let s of r){let i=s.trim();if(!i||i.startsWith("#"))continue;let g=i.indexOf("=");if(g===-1)continue;let K=i.slice(0,g).trim(),m=i.slice(g+1).trim();(m.startsWith('"')&&m.endsWith('"')||m.startsWith("'")&&m.endsWith("'"))&&(m=m.slice(1,-1)),e[K]=m}}return{getNumber:n=>et(e[n]),getString:n=>nt(e[n]),getBoolean:n=>rt(e[n])}}function Z(t){let e=[];for(let n of t){let r=tt(n);r&&e.push(r)}return Y(...e)}var E=Z([".env.default",".env"]);function tt(t){try{return(0,M.readFileSync)((0,$.join)(o,"env",t),"utf-8")}catch{return}}function et(t){if(!t)return;let e=Number(t);if(!isNaN(e)&&t.trim()!=="")return e;throw new Error("Wrong env value type")}function nt(t){if(t){if(typeof t=="string")return t;throw new Error("Wrong env value type")}}function rt(t){if(!t)return;let e=t.toLowerCase();if(e==="true")return!0;if(e==="false")return!1;throw new Error("Wrong env value type")}var ot=async t=>{try{return(await fetch(t,{method:"GET",signal:AbortSignal.timeout(5e3)})).status===200}catch{return!1}},F=async(t,e,n)=>{let r=Date.now();for(;Date.now()-r<e;){if(await ot(t))return!0;await new Promise(i=>setTimeout(i,n))}return!1};async function at(){await V()||await N(),await y();try{T()&&await j();let e=E.getNumber("PORT");if(!e)throw new Error("PORT env variable not found");if(!await I(e))throw new Error(`Port ${e} is occupied by another process`);let r=(0,w.default)({text:"Starting new instance of "+a}).start(),s=L.readJsonSync((0,H.join)(o,"package.json"));await p(`pm2 start "${s.main}" --name "${a}" --no-autorestart`,{cwd:o}),r.success("Local server will be available in a couple of seconds");let i=(0,w.default)({text:"Waiting for the server to become available"}).start();await F(`http://localhost:${e}/api/status`,3e4,1e3)?(await(0,S.default)(`http://localhost:${e}`),i.success(`App is running at http://localhost:${e}`)):i.error("Server failed to become available in time")}catch(e){console.error("Failed to start local server",e)}}async function ct(){(0,W.execSync)(`pm2 logs ${a}`,{stdio:"inherit"})}async function mt(){await y()}function lt(){console.log(`DataRamen CLI version: ${A().version}`),console.log(`DataRamen local server version: ${v().version}`)}async function ft(){let t=E.getNumber("PORT");await(0,S.default)(`http://localhost:${t}`)}var u={start:at,logs:ct,stop:mt,version:lt,open:ft};(0,D.default)((0,J.hideBin)(process.argv)).command("start","Default command, start/restart the server",u.start).command(["logs"],"Listen for logs",u.logs).command("stop","Stop the server",u.stop).command("open","Stop the server",u.open).command(["version"],"Show version",u.version).parse();
package/dist/code/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- var D=Object.create;var x=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var K=(n,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of z(t))!G.call(n,s)&&s!==e&&x(n,s,{get:()=>t[s],enumerable:!(o=q(t,s))||o.enumerable});return n};var m=(n,t,e)=>(e=n!=null?D(Y(n)):{},K(t||!n||!n.__esModule?x(e,"default",{value:n,enumerable:!0}):e,n));var B=m(require("yargs")),J=require("yargs/helpers");var S=require("node:os"),E=require("node:path"),Q=(0,S.homedir)();var i="@dataramen/local-server",r=(0,E.join)(Q,".dataramen",".runtime","server");var W=require("node:path"),L=m(require("fs-extra")),V=require("node:child_process");var R=m(require("fs-extra")),h=require("node:path");function _(n){let t;function e(){try{return t||(t=R.readJsonSync(n)),t}catch{return}}return e}var k=_((0,h.join)(__dirname,"..","package.json")),g=_((0,h.join)(r,"package.json"));var p=m(require("fs-extra")),a=require("node:path"),b=require("node:child_process"),A=require("node:util"),d=m(require("yocto-spinner")),f=(0,A.promisify)(b.exec);function O(){try{let n=g();if(!n)return!0;let t=p.readJsonSync((0,a.join)(__dirname,"..","dist","package.json"));return n.version!==t.version}catch{return!0}}async function j(){let n=(0,d.default)({text:"Checking if PM2 is installed"}).start();try{return await f("pm2 -v"),n.success("PM2 already installed"),!0}catch{return n.warning("PM2 not installed"),!1}}async function C(){let n=(0,d.default)({text:"Installing PM2"}).start();try{await f("npm i -g pm2"),n.success("Installed PM2")}catch{n.error("Failed to install PM2"),process.exit(1)}}async function y(){let n=(0,d.default)({text:"Stop running instances of "+i}).start();try{await f(`pm2 stop "${i}"`),n.warning("Stopped "+i)}catch{n.success("No running instances of "+i+" found")}}async function N(){let n=(0,d.default)({text:"Create local server"}).start();p.copySync((0,a.join)(__dirname,"..","dist","code"),(0,a.join)(r,"code")),p.copySync((0,a.join)(__dirname,"..","dist","env",".env.default"),(0,a.join)(r,"env",".env.default")),p.copySync((0,a.join)(__dirname,"..","dist","package.json"),(0,a.join)(r,"package.json")),n.text="Install local server dependencies",await f("npm i",{cwd:r}),n.success("Local server installed")}var I=m(require("yocto-spinner")),w=m(require("open"));var F=require("node:net");async function T(n){return new Promise(t=>{let e=(0,F.createServer)().once("error",()=>{t(!1)}).once("listening",()=>{e.close()}).once("close",()=>t(!0)).listen(n,"0.0.0.0")})}var $=require("fs-extra");var M=require("node:path");function U(...n){let t={};for(let e of n){let o=e.split(`
3
- `);for(let s of o){let u=s.trim();if(!u||u.startsWith("#"))continue;let v=u.indexOf("=");if(v===-1)continue;let H=u.slice(0,v).trim(),c=u.slice(v+1).trim();(c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'"))&&(c=c.slice(1,-1)),t[H]=c}}return{getNumber:e=>nn(t[e]),getString:e=>tn(t[e]),getBoolean:e=>en(t[e])}}function X(n){let t=[];for(let e of n){let o=Z(e);o&&t.push(o)}return U(...t)}var P=X([".env.default",".env"]);function Z(n){try{return(0,$.readFileSync)((0,M.join)(r,"env",n),"utf-8")}catch{return}}function nn(n){if(!n)return;let t=Number(n);if(!isNaN(t)&&n.trim()!=="")return t;throw new Error("Wrong env value type")}function tn(n){if(n){if(typeof n=="string")return n;throw new Error("Wrong env value type")}}function en(n){if(!n)return;let t=n.toLowerCase();if(t==="true")return!0;if(t==="false")return!1;throw new Error("Wrong env value type")}async function rn(){await j()||await C(),await y();try{O()&&await N();let t=P.getNumber("PORT");if(!t)throw new Error("PORT env variable not found");if(!await T(t))throw new Error(`Port ${t} is occupied by another process`);let o=(0,I.default)({text:"Starting new instance of "+i}).start(),s=L.readJsonSync((0,W.join)(r,"package.json"));await f(`pm2 start "${s.main}" --name "${i}" --no-autorestart`,{cwd:r}),o.success("Local server will be available in a couple of seconds"),console.log("You can close this window"),await(0,w.default)(`http://localhost:${t}`),console.log(`App is running at http://localhost:${t} and https://app.dataramen.xyz`)}catch(t){console.error("Failed to start local server",t)}}async function on(){(0,V.execSync)(`pm2 logs ${i}`,{stdio:"inherit"})}async function sn(){await y()}function an(){console.log(`DataRamen CLI version: ${k().version}`),console.log(`DataRamen local server version: ${g().version}`)}async function cn(){let n=P.getNumber("PORT");await(0,w.default)(`http://localhost:${n}`)}var l={start:rn,logs:on,stop:sn,version:an,open:cn};(0,B.default)((0,J.hideBin)(process.argv)).command("start","Default command, start/restart the server",l.start).command(["logs"],"Listen for logs",l.logs).command("stop","Stop the server",l.stop).command("open","Stop the server",l.open).command(["version"],"Show version",l.version).parse();
2
+ var B=Object.create;var P=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var Q=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of q(e))!z.call(t,s)&&s!==n&&P(t,s,{get:()=>e[s],enumerable:!(r=U(e,s))||r.enumerable});return t};var l=(t,e,n)=>(n=t!=null?B(G(t)):{},Q(e||!t||!t.__esModule?P(n,"default",{value:t,enumerable:!0}):n,t));var D=l(require("yargs")),J=require("yargs/helpers");var x=require("node:os"),b=require("node:path"),X=(0,x.homedir)();var a="@dataramen/local-server",o=(0,b.join)(X,".dataramen",".runtime","server");var H=require("node:path"),L=l(require("fs-extra")),W=require("node:child_process");var R=l(require("fs-extra")),h=require("node:path");function _(t){let e;function n(){try{return e||(e=R.readJsonSync(t)),e}catch{return}}return n}var A=_((0,h.join)(__dirname,"..","package.json")),v=_((0,h.join)(o,"package.json"));var f=l(require("fs-extra")),c=require("node:path"),k=require("node:child_process"),C=require("node:util"),d=l(require("yocto-spinner")),p=(0,C.promisify)(k.exec);function T(){try{let t=v();if(!t)return!0;let e=f.readJsonSync((0,c.join)(__dirname,"..","dist","package.json"));return t.version!==e.version}catch{return!0}}async function V(){let t=(0,d.default)({text:"Checking if PM2 is installed"}).start();try{return await p("pm2 -v"),t.success("PM2 already installed"),!0}catch{return t.warning("PM2 not installed"),!1}}async function N(){let t=(0,d.default)({text:"Installing PM2"}).start();try{await p("npm i -g pm2"),t.success("Installed PM2")}catch{t.error("Failed to install PM2"),process.exit(1)}}async function y(){let t=(0,d.default)({text:"Stop running instances of "+a}).start();try{await p(`pm2 stop "${a}"`),t.warning("Stopped "+a)}catch{t.success("No running instances of "+a+" found")}}async function j(){let t=(0,d.default)({text:"Create local server"}).start();f.copySync((0,c.join)(__dirname,"..","dist","code"),(0,c.join)(o,"code")),f.copySync((0,c.join)(__dirname,"..","dist","env",".env.default"),(0,c.join)(o,"env",".env.default")),f.copySync((0,c.join)(__dirname,"..","dist","package.json"),(0,c.join)(o,"package.json")),t.text="Install local server dependencies",await p("npm i",{cwd:o}),t.success("Local server installed")}var w=l(require("yocto-spinner")),S=l(require("open"));var O=require("node:net");async function I(t){return new Promise(e=>{let n=(0,O.createServer)().once("error",()=>{e(!1)}).once("listening",()=>{n.close()}).once("close",()=>e(!0)).listen(t,"127.0.0.1")})}var M=require("fs-extra");var $=require("node:path");function Y(...t){let e={};for(let n of t){let r=n.split(`
3
+ `);for(let s of r){let i=s.trim();if(!i||i.startsWith("#"))continue;let g=i.indexOf("=");if(g===-1)continue;let K=i.slice(0,g).trim(),m=i.slice(g+1).trim();(m.startsWith('"')&&m.endsWith('"')||m.startsWith("'")&&m.endsWith("'"))&&(m=m.slice(1,-1)),e[K]=m}}return{getNumber:n=>et(e[n]),getString:n=>nt(e[n]),getBoolean:n=>rt(e[n])}}function Z(t){let e=[];for(let n of t){let r=tt(n);r&&e.push(r)}return Y(...e)}var E=Z([".env.default",".env"]);function tt(t){try{return(0,M.readFileSync)((0,$.join)(o,"env",t),"utf-8")}catch{return}}function et(t){if(!t)return;let e=Number(t);if(!isNaN(e)&&t.trim()!=="")return e;throw new Error("Wrong env value type")}function nt(t){if(t){if(typeof t=="string")return t;throw new Error("Wrong env value type")}}function rt(t){if(!t)return;let e=t.toLowerCase();if(e==="true")return!0;if(e==="false")return!1;throw new Error("Wrong env value type")}var ot=async t=>{try{return(await fetch(t,{method:"GET",signal:AbortSignal.timeout(5e3)})).status===200}catch{return!1}},F=async(t,e,n)=>{let r=Date.now();for(;Date.now()-r<e;){if(await ot(t))return!0;await new Promise(i=>setTimeout(i,n))}return!1};async function at(){await V()||await N(),await y();try{T()&&await j();let e=E.getNumber("PORT");if(!e)throw new Error("PORT env variable not found");if(!await I(e))throw new Error(`Port ${e} is occupied by another process`);let r=(0,w.default)({text:"Starting new instance of "+a}).start(),s=L.readJsonSync((0,H.join)(o,"package.json"));await p(`pm2 start "${s.main}" --name "${a}" --no-autorestart`,{cwd:o}),r.success("Local server will be available in a couple of seconds");let i=(0,w.default)({text:"Waiting for the server to become available"}).start();await F(`http://localhost:${e}/api/status`,3e4,1e3)?(await(0,S.default)(`http://localhost:${e}`),i.success(`App is running at http://localhost:${e}`)):i.error("Server failed to become available in time")}catch(e){console.error("Failed to start local server",e)}}async function ct(){(0,W.execSync)(`pm2 logs ${a}`,{stdio:"inherit"})}async function mt(){await y()}function lt(){console.log(`DataRamen CLI version: ${A().version}`),console.log(`DataRamen local server version: ${v().version}`)}async function ft(){let t=E.getNumber("PORT");await(0,S.default)(`http://localhost:${t}`)}var u={start:at,logs:ct,stop:mt,version:lt,open:ft};(0,D.default)((0,J.hideBin)(process.argv)).command("start","Default command, start/restart the server",u.start).command(["logs"],"Listen for logs",u.logs).command("stop","Stop the server",u.stop).command("open","Stop the server",u.open).command(["version"],"Show version",u.version).parse();
@@ -1,4 +1,4 @@
1
- "use strict";var rt=Object.create;var ae=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var q=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var it=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ot(e))!st.call(t,o)&&o!==r&&ae(t,o,{get:()=>e[o],enumerable:!(a=at(e,o))||a.enumerable});return t};var _=(t,e,r)=>(r=t!=null?rt(nt(t)):{},it(e||!t||!t.__esModule?ae(r,"default",{value:t,enumerable:!0}):r,t));var Me=q(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0})});var Z=q(R=>{"use strict";Object.defineProperty(R,"__esModule",{value:!0});R.buildWhereCondition=R.buildSelect=R.isString=void 0;var bt=t=>typeof t=="string";R.isString=bt;var Rt=t=>{let e="SELECT ";if(t.columns&&t.columns.length>0?e+=t.columns.join(", "):e+="*",t.table&&(e+=` FROM ${t.table}`),t.joins&&t.joins.length>0&&t.joins.forEach(r=>{e+=` ${r.type} JOIN ${r.table} ON ${r.on}`}),t.where&&(e+=` WHERE ${t.where}`),t.groupBy&&t.groupBy.length>0&&(e+=` GROUP BY ${t.groupBy.join(", ")}`),t.having&&(e+=` HAVING ${t.having}`),t.orderBy&&t.orderBy.length>0){let r=t.orderBy.reduce((o,n)=>(o[n.column]=n.direction,o),{}),a=Object.entries(r).map(([o,n])=>`${o} ${n}`);e+=` ORDER BY ${a.join(", ")}`}return t.limit!==void 0&&(e+=` LIMIT ${t.limit}`),t.offset!==void 0&&(e+=` OFFSET ${t.offset}`),e};R.buildSelect=Rt;var Nt=t=>{let{column:e,operator:r,value:a}=t;switch(r){case"IS NULL":case"IS NOT NULL":return`${e} ${r}`;case"IN":case"NOT IN":let o=a?.map(i=>(0,R.isString)(i.value)?`'${i.value}'`:i.value).join(", ");return`${e} ${r} (${o})`;default:let n=a?.[0],s;return(0,R.isString)(n?.value)&&n?.isColumn!==!0?s=`'${n?.value}'`:s=n?.value,`${e} ${r} ${s}`}};R.buildWhereCondition=Nt});var ve=q(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.SelectQueryBuilder=void 0;var Le=Z(),X=class{constructor(e="mysql"){this.dialect=e,this.skeleton={type:"SELECT"}}addWhere(e){let r=(0,Le.buildWhereCondition)(e);if(this.skeleton.where){let a=e.connector||"AND";this.skeleton.where+=` ${a} ${r}`}else this.skeleton.where=r;return this}addWhereRaw(e,r="AND"){return this.skeleton.where?this.skeleton.where+=` ${r} ${e}`:this.skeleton.where=e,this}clearWhere(){return this.skeleton.where=void 0,this}addOrderBy(...e){return this.skeleton.orderBy||(this.skeleton.orderBy=[]),this.skeleton.orderBy.push(...e),this}clearOrderBy(){return this.skeleton.orderBy=void 0,this}setLimit(e){return this.skeleton.limit=e,this}setOffset(e){return this.skeleton.offset=e,this}addGroupBy(e){this.skeleton.groupBy||(this.skeleton.groupBy=[]);let r=this.skeleton.groupBy.findIndex(a=>a===e);return r>-1?this.skeleton.groupBy[r]=e:this.skeleton.groupBy.push(e),this}setHaving(e){return this.skeleton.having=e,this}setTable(e){return this.skeleton.table=e,this}addJoin(...e){return this.skeleton.joins||(this.skeleton.joins=[]),this.skeleton.joins.push(...e),this}selectColumns(e){if(this.skeleton.type!=="SELECT")throw new Error("Column selection is only supported for SELECT queries");return this.skeleton.columns=e,this}toSQL(){return(0,Le.buildSelect)(this.skeleton)}};B.SelectQueryBuilder=X});var xe=q(C=>{"use strict";var _t=C&&C.__createBinding||(Object.create?function(t,e,r,a){a===void 0&&(a=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,a,o)}:function(t,e,r,a){a===void 0&&(a=r),t[a]=e[r]}),ee=C&&C.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&_t(e,t,r)};Object.defineProperty(C,"__esModule",{value:!0});ee(Me(),C);ee(ve(),C);ee(Z(),C)});var Q=require("dotenv"),$=require("node:path"),oe=require("node:fs"),ut=(()=>{try{let t=(0,oe.readFileSync)((0,$.join)(__dirname,"..","package.json"),"utf8");return JSON.parse(t)}catch{return{version:"0.0.0"}}})();(0,Q.config)({path:[(0,$.join)(__dirname,"..","env",".env"),(0,$.join)(__dirname,"..","env",".env.default")]});(0,Q.populate)(process.env,{SERVER_VERSION:ut.version});var ze=_(require("fastify")),Ve=_(require("@fastify/cors")),Je=_(require("@fastify/static"));var u=class extends Error{constructor(r,a){super(a);this.status=r;this.message=a}};var de=require("typeorm");var ne=require("typeorm"),W=new ne.EntitySchema({name:"DatabaseInspection",tableName:"db_inspection",columns:{id:{type:String,unique:!0,primary:!0,generated:"uuid"},tableName:{nullable:!0,type:String},columns:{type:"json",nullable:!0},createdAt:{type:"datetime",default:"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:"CURRENT_TIMESTAMP"}},relations:{datasource:{target:()=>"DataSource",type:"many-to-one",joinTable:!1,cascade:!0}}});var se=require("typeorm"),j=new se.EntitySchema({name:"Team",tableName:"teams",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},name:{type:String},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"}},relations:{users:{type:"many-to-many",target:()=>"User",inverseSide:"teams"},workbooks:{type:"one-to-many",target:()=>"Workbook",inverseSide:"team"},queries:{type:"one-to-many",target:()=>"Query",inverseSide:"team"},datasources:{type:"one-to-many",target:()=>"DataSource",inverseSide:"team"}}});var ie=require("typeorm"),Y=new ie.EntitySchema({name:"User",tableName:"users",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},createdAt:{type:"datetime",default:"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:"CURRENT_TIMESTAMP"}},relations:{teams:{type:"many-to-many",target:()=>"Team",inverseSide:"users",joinTable:!0},settings:{type:"one-to-one",target:()=>"UserSettings",inverseSide:"user",joinColumn:!0},currentTeam:{type:"many-to-one",target:()=>"Team",joinColumn:!0}}});var ue=require("typeorm"),H=new ue.EntitySchema({name:"UserSettings",tableName:"user_settings",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},openAiToken:{type:String,nullable:!0},model:{type:String,default:"gpt-3.5-turbo"},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"}},relations:{user:{type:"one-to-one",target:()=>"User",inverseSide:"settings",joinColumn:!0}}});var ce=require("typeorm"),G=new ce.EntitySchema({name:"Workbook",tableName:"workbooks",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},name:{type:String},path:{type:"uuid",generated:"uuid"},isTrash:{type:"boolean",default:!1},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP",onUpdate:"CURRENT_TIMESTAMP"}},relations:{team:{type:"many-to-one",target:()=>"Team",inverseSide:"workbooks",joinColumn:!0}}});var me=require("typeorm"),K=new me.EntitySchema({name:"DataSource",tableName:"data_sources",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},dbUrl:{type:String},dbPort:{type:Number,nullable:!0},dbUser:{type:String},dbPassword:{type:String,nullable:!0},dbType:{type:String},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},name:{type:String},description:{type:String,nullable:!0},dbDatabase:{type:String},dbSchema:{type:String,nullable:!0},lastInspected:{type:"datetime",nullable:!0,default:()=>null},status:{type:String,nullable:!0}},relations:{team:{type:"many-to-one",target:()=>"Team",inverseSide:"datasources",joinColumn:!0},inspections:{type:"one-to-many",target:()=>"DatabaseInspection",inverseSide:"datasource"},queries:{type:"one-to-many",target:()=>"Query",inverseSide:"dataSource"},owner:{type:"many-to-one",target:()=>"User",joinColumn:!0}}});var pe=_(require("os"));var le=require("typeorm"),z=new le.EntitySchema({name:"Query",tableName:"query",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},name:{type:String},opts:{type:"json",default:"{}"},isTrash:{type:Boolean,default:!1,nullable:!0},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP",onUpdate:"CURRENT_TIMESTAMP"}},relations:{team:{type:"many-to-one",target:()=>"Team",inverseSide:"workbooks",joinColumn:!0},dataSource:{type:"many-to-one",target:()=>"DataSource",inverseSide:"queries",joinColumn:!0}}});function ct(){let t=process.env.TYPEORM_DATABASE;if(!t)throw new Error("Bad value for TYPEORM_DATABASE. Please check your config!");return t.startsWith("<home>")&&(t=t.replace("<home>",pe.default.homedir())),t}var T=new de.DataSource({type:process.env.TYPEORM_CONNECTION,database:ct(),synchronize:process.env.TYPEORM_SYNCHRONIZE==="true",host:process.env.TYPEORM_HOST,username:process.env.TYPEORM_USERNAME,password:process.env.TYPEORM_PASSWORD,port:process.env.TYPEORM_PORT?parseInt(process.env.TYPEORM_PORT):void 0,logging:process.env.TYPEORM_LOGGING==="true",entities:[W,K,j,Y,H,G,z]}),fe=async()=>{if(!T.isInitialized)return T.initialize();throw new Error("Already initialized")},b=T.getRepository(W),l=T.getRepository(K),U=T.getRepository(j),w=T.getRepository(Y),M=T.getRepository(H),ye=T.getRepository(G),E=T.getRepository(z);var V=_(require("node:fs/promises")),Te=require("node:path"),ge=_(require("node:os")),mt=ge.default.homedir(),Se=(0,Te.join)(mt,".dataramen",".runtime","files"),he=async()=>{await lt()||await V.default.mkdir(Se,{recursive:!0})};async function lt(){try{return(await V.default.lstat(Se)).isDirectory()}catch{return!1}}var g=t=>(e,r,a)=>{t(e),a()};var y=(t,e)=>{let r=t.body;return e&&e(r),r},v=(t,e)=>{let r=t.query;return e&&e(r),r},S=(t,e)=>{let r=t.params;return e&&e(r),r},A=t=>t.headers["phoenix-user-id"];var Ee=t=>{if(!t.dbUrl)throw new u(400,"url is required");if(!t.dbUser)throw new u(400,"user is required");if(!t.dbType)throw new u(400,"type is required");if(!t.name)throw new u(400,"name is required");if(!t.dbDatabase)throw new u(400,"database is required")};var we=_(require("mysql2/promise"));var dt=({dbDatabase:t,dbPassword:e,dbUser:r,dbUrl:a})=>we.default.createConnection({host:a,user:r,database:t,password:e}),pt=async t=>{let e=`
1
+ "use strict";var rt=Object.create;var ae=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var q=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var it=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ot(e))!st.call(t,o)&&o!==r&&ae(t,o,{get:()=>e[o],enumerable:!(a=at(e,o))||a.enumerable});return t};var _=(t,e,r)=>(r=t!=null?rt(nt(t)):{},it(e||!t||!t.__esModule?ae(r,"default",{value:t,enumerable:!0}):r,t));var Me=q(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0})});var Z=q(N=>{"use strict";Object.defineProperty(N,"__esModule",{value:!0});N.buildWhereCondition=N.buildSelect=N.isString=void 0;var bt=t=>typeof t=="string";N.isString=bt;var Rt=t=>{let e="SELECT ";if(t.columns&&t.columns.length>0?e+=t.columns.join(", "):e+="*",t.table&&(e+=` FROM ${t.table}`),t.joins&&t.joins.length>0&&t.joins.forEach(r=>{e+=` ${r.type} JOIN ${r.table} ON ${r.on}`}),t.where&&(e+=` WHERE ${t.where}`),t.groupBy&&t.groupBy.length>0&&(e+=` GROUP BY ${t.groupBy.join(", ")}`),t.having&&(e+=` HAVING ${t.having}`),t.orderBy&&t.orderBy.length>0){let r=t.orderBy.reduce((o,n)=>(o[n.column]=n.direction,o),{}),a=Object.entries(r).map(([o,n])=>`${o} ${n}`);e+=` ORDER BY ${a.join(", ")}`}return t.limit!==void 0&&(e+=` LIMIT ${t.limit}`),t.offset!==void 0&&(e+=` OFFSET ${t.offset}`),e};N.buildSelect=Rt;var Nt=t=>{let{column:e,operator:r,value:a}=t;switch(r){case"IS NULL":case"IS NOT NULL":return`${e} ${r}`;case"IN":case"NOT IN":let o=a?.map(i=>(0,N.isString)(i.value)?`'${i.value}'`:i.value).join(", ");return`${e} ${r} (${o})`;default:let n=a?.[0],s;return(0,N.isString)(n?.value)&&n?.isColumn!==!0?s=`'${n?.value}'`:s=n?.value,`${e} ${r} ${s}`}};N.buildWhereCondition=Nt});var ve=q(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.SelectQueryBuilder=void 0;var Le=Z(),X=class{constructor(e="mysql"){this.dialect=e,this.skeleton={type:"SELECT"}}addWhere(e){let r=(0,Le.buildWhereCondition)(e);if(this.skeleton.where){let a=e.connector||"AND";this.skeleton.where+=` ${a} ${r}`}else this.skeleton.where=r;return this}addWhereRaw(e,r="AND"){return this.skeleton.where?this.skeleton.where+=` ${r} ${e}`:this.skeleton.where=e,this}clearWhere(){return this.skeleton.where=void 0,this}addOrderBy(...e){return this.skeleton.orderBy||(this.skeleton.orderBy=[]),this.skeleton.orderBy.push(...e),this}clearOrderBy(){return this.skeleton.orderBy=void 0,this}setLimit(e){return this.skeleton.limit=e,this}setOffset(e){return this.skeleton.offset=e,this}addGroupBy(e){this.skeleton.groupBy||(this.skeleton.groupBy=[]);let r=this.skeleton.groupBy.findIndex(a=>a===e);return r>-1?this.skeleton.groupBy[r]=e:this.skeleton.groupBy.push(e),this}setHaving(e){return this.skeleton.having=e,this}setTable(e){return this.skeleton.table=e,this}addJoin(...e){return this.skeleton.joins||(this.skeleton.joins=[]),this.skeleton.joins.push(...e),this}selectColumns(e){if(this.skeleton.type!=="SELECT")throw new Error("Column selection is only supported for SELECT queries");return this.skeleton.columns=e,this}toSQL(){return(0,Le.buildSelect)(this.skeleton)}};B.SelectQueryBuilder=X});var xe=q(C=>{"use strict";var _t=C&&C.__createBinding||(Object.create?function(t,e,r,a){a===void 0&&(a=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,a,o)}:function(t,e,r,a){a===void 0&&(a=r),t[a]=e[r]}),ee=C&&C.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&_t(e,t,r)};Object.defineProperty(C,"__esModule",{value:!0});ee(Me(),C);ee(ve(),C);ee(Z(),C)});var Q=require("dotenv"),$=require("node:path"),oe=require("node:fs"),ut=(()=>{try{let t=(0,oe.readFileSync)((0,$.join)(__dirname,"..","package.json"),"utf8");return JSON.parse(t)}catch{return{version:"0.0.0"}}})();(0,Q.config)({path:[(0,$.join)(__dirname,"..","env",".env"),(0,$.join)(__dirname,"..","env",".env.default")]});(0,Q.populate)(process.env,{SERVER_VERSION:ut.version});var ze=_(require("fastify")),Ve=_(require("@fastify/cors")),Je=_(require("@fastify/static"));var u=class extends Error{constructor(r,a){super(a);this.status=r;this.message=a}};var de=require("typeorm");var ne=require("typeorm"),W=new ne.EntitySchema({name:"DatabaseInspection",tableName:"db_inspection",columns:{id:{type:String,unique:!0,primary:!0,generated:"uuid"},tableName:{nullable:!0,type:String},columns:{type:"json",nullable:!0},createdAt:{type:"datetime",default:"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:"CURRENT_TIMESTAMP"}},relations:{datasource:{target:()=>"DataSource",type:"many-to-one",joinTable:!1,cascade:!0}}});var se=require("typeorm"),j=new se.EntitySchema({name:"Team",tableName:"teams",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},name:{type:String},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"}},relations:{users:{type:"many-to-many",target:()=>"User",inverseSide:"teams"},workbooks:{type:"one-to-many",target:()=>"Workbook",inverseSide:"team"},queries:{type:"one-to-many",target:()=>"Query",inverseSide:"team"},datasources:{type:"one-to-many",target:()=>"DataSource",inverseSide:"team"}}});var ie=require("typeorm"),Y=new ie.EntitySchema({name:"User",tableName:"users",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},createdAt:{type:"datetime",default:"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:"CURRENT_TIMESTAMP"}},relations:{teams:{type:"many-to-many",target:()=>"Team",inverseSide:"users",joinTable:!0},settings:{type:"one-to-one",target:()=>"UserSettings",inverseSide:"user",joinColumn:!0},currentTeam:{type:"many-to-one",target:()=>"Team",joinColumn:!0}}});var ue=require("typeorm"),H=new ue.EntitySchema({name:"UserSettings",tableName:"user_settings",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},openAiToken:{type:String,nullable:!0},model:{type:String,default:"gpt-3.5-turbo"},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"}},relations:{user:{type:"one-to-one",target:()=>"User",inverseSide:"settings",joinColumn:!0}}});var ce=require("typeorm"),G=new ce.EntitySchema({name:"Workbook",tableName:"workbooks",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},name:{type:String},path:{type:"uuid",generated:"uuid"},isTrash:{type:"boolean",default:!1},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP",onUpdate:"CURRENT_TIMESTAMP"}},relations:{team:{type:"many-to-one",target:()=>"Team",inverseSide:"workbooks",joinColumn:!0}}});var le=require("typeorm"),K=new le.EntitySchema({name:"DataSource",tableName:"data_sources",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},dbUrl:{type:String},dbPort:{type:Number,nullable:!0},dbUser:{type:String},dbPassword:{type:String,nullable:!0},dbType:{type:String},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},name:{type:String},description:{type:String,nullable:!0},dbDatabase:{type:String},dbSchema:{type:String,nullable:!0},lastInspected:{type:"datetime",nullable:!0,default:()=>null},status:{type:String,nullable:!0}},relations:{team:{type:"many-to-one",target:()=>"Team",inverseSide:"datasources",joinColumn:!0},inspections:{type:"one-to-many",target:()=>"DatabaseInspection",inverseSide:"datasource"},queries:{type:"one-to-many",target:()=>"Query",inverseSide:"dataSource"},owner:{type:"many-to-one",target:()=>"User",joinColumn:!0}}});var pe=_(require("os"));var me=require("typeorm"),z=new me.EntitySchema({name:"Query",tableName:"query",columns:{id:{type:"uuid",primary:!0,generated:"uuid"},name:{type:String},opts:{type:"json",default:"{}"},isTrash:{type:Boolean,default:!1,nullable:!0},createdAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP"},updatedAt:{type:"datetime",default:()=>"CURRENT_TIMESTAMP",onUpdate:"CURRENT_TIMESTAMP"}},relations:{team:{type:"many-to-one",target:()=>"Team",inverseSide:"workbooks",joinColumn:!0},dataSource:{type:"many-to-one",target:()=>"DataSource",inverseSide:"queries",joinColumn:!0}}});function ct(){let t=process.env.TYPEORM_DATABASE;if(!t)throw new Error("Bad value for TYPEORM_DATABASE. Please check your config!");return t.startsWith("<home>")&&(t=t.replace("<home>",pe.default.homedir())),t}var T=new de.DataSource({type:process.env.TYPEORM_CONNECTION,database:ct(),synchronize:process.env.TYPEORM_SYNCHRONIZE==="true",host:process.env.TYPEORM_HOST,username:process.env.TYPEORM_USERNAME,password:process.env.TYPEORM_PASSWORD,port:process.env.TYPEORM_PORT?parseInt(process.env.TYPEORM_PORT):void 0,logging:process.env.TYPEORM_LOGGING==="true",entities:[W,K,j,Y,H,G,z]}),fe=async()=>{if(!T.isInitialized)return T.initialize();throw new Error("Already initialized")},R=T.getRepository(W),m=T.getRepository(K),U=T.getRepository(j),w=T.getRepository(Y),M=T.getRepository(H),ye=T.getRepository(G),E=T.getRepository(z);var V=_(require("node:fs/promises")),Te=require("node:path"),ge=_(require("node:os")),lt=ge.default.homedir(),Se=(0,Te.join)(lt,".dataramen",".runtime","files"),he=async()=>{await mt()||await V.default.mkdir(Se,{recursive:!0})};async function mt(){try{return(await V.default.lstat(Se)).isDirectory()}catch{return!1}}var g=t=>(e,r,a)=>{t(e),a()};var y=(t,e)=>{let r=t.body;return e&&e(r),r},v=(t,e)=>{let r=t.query;return e&&e(r),r},S=(t,e)=>{let r=t.params;return e&&e(r),r},D=t=>t.headers["phoenix-user-id"];var Ee=t=>{if(!t.dbUrl)throw new u(400,"url is required");if(!t.dbUser)throw new u(400,"user is required");if(!t.dbType)throw new u(400,"type is required");if(!t.name)throw new u(400,"name is required");if(!t.dbDatabase)throw new u(400,"database is required")};var we=_(require("mysql2/promise"));var dt=({dbDatabase:t,dbPassword:e,dbUser:r,dbUrl:a})=>we.default.createConnection({host:a,user:r,database:t,password:e}),pt=async t=>{let e=`
2
2
  SELECT TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION
3
3
  FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
4
4
  WHERE CONSTRAINT_NAME = 'PRIMARY'
@@ -14,7 +14,7 @@
14
14
  WHERE
15
15
  REFERENCED_TABLE_NAME IS NOT NULL
16
16
  AND CONSTRAINT_SCHEMA = DATABASE();
17
- `,[r]=await t.execute(e),a={};return Array.isArray(r)&&r.forEach(o=>{a[o.table_name]||(a[o.table_name]={}),a[o.table_name][o.field]={refTable:o.referenced_table,refField:o.referenced_field}}),a},yt=async(t,e)=>{let a=(await e.query("SHOW TABLES"))[0],o=await ft(e),n=await pt(e),s=a.map(async i=>{let m=Object.values(i)[0],c=`select COLUMN_NAME, DATA_TYPE from information_schema.columns where table_schema = '${t.dbDatabase}' and table_name = '${m}'`,[I]=await e.query(c),N=o[m];return{columns:I.map(d=>({name:d.COLUMN_NAME,type:d.DATA_TYPE,isPrimary:n[m]?.includes(d.COLUMN_NAME),ref:N?.[d.COLUMN_NAME]?{table:N[d.COLUMN_NAME].refTable,field:N[d.COLUMN_NAME].refField}:void 0})).sort((d,p)=>d.isPrimary&&p.isPrimary?d.name.localeCompare(p.name):d.isPrimary?-1:1),createdAt:new Date,tableName:m,updatedAt:new Date}});return Promise.all(s)},Ie=async(t,e,r)=>{try{console.log(`[MYSQL CONN] Query: ${t}`);let[a,o]=await e.query({sql:t,rowsAsArray:!0}),n=a?.constructor?.name;if(n==="ResultSetHeader"){let s=a;if(s.affectedRows>3&&r.allowBulkUpdate!==!0)throw new Error("[MYSQL CONN] Bulk update performed without permission.");return{columns:[{column:"affectedRows",alias:"Affected rows",full:"affectedRows"}],rows:[[s.affectedRows]],query:t}}else if(n==="Array"){let s=a;return{columns:o?.map(i=>({column:i.orgName||i.name,table:i.orgTable,alias:i.name,full:i.orgTable?i.orgTable+"."+i.orgName:i.name}))||[],rows:s,query:t}}throw new Error(`[MYSQL CONN] Unknown result type: ${n}`)}catch(a){throw console.error(a),a instanceof u?a:new u(400,a.message)}},Tt=async(t,e)=>{await t.beginTransaction();try{let r=await e();return await t.commit(),console.log("[MYSQL CONN] Commit"),r}catch(r){throw await t.rollback(),console.warn(r.message),console.log("[MYSQL CONN] Rollback"),r}},be=async t=>{let e=await dt(t),r=!1;return{dbType:"mysql",dataSource:t,inspectSchema:()=>yt(t,e),executeQuery:(a,o)=>o.type==="SELECT"?Ie(a,e,o):Tt(e,()=>Ie(a,e,o)),checkConnection:async()=>e.ping(),isClosed:()=>r,close:async()=>{if(!r)return r=!0,e.destroy()}}};var Ne=_(require("pg"));var gt=async({dbDatabase:t,dbPassword:e,dbUser:r,dbUrl:a,dbPort:o})=>{let n=new Ne.default.Client({host:a,user:r,database:t,password:e,port:o,query_timeout:1e4});return await n.connect(),n},St=async t=>{let r=await t.query(`
17
+ `,[r]=await t.execute(e),a={};return Array.isArray(r)&&r.forEach(o=>{a[o.table_name]||(a[o.table_name]={}),a[o.table_name][o.field]={refTable:o.referenced_table,refField:o.referenced_field}}),a},yt=async(t,e)=>{let a=(await e.query("SHOW TABLES"))[0],o=await ft(e),n=await pt(e),s=a.map(async i=>{let l=Object.values(i)[0],c=`select COLUMN_NAME, DATA_TYPE from information_schema.columns where table_schema = '${t.dbDatabase}' and table_name = '${l}'`,[I]=await e.query(c),b=o[l];return{columns:I.map(p=>({name:p.COLUMN_NAME,type:p.DATA_TYPE,isPrimary:n[l]?.includes(p.COLUMN_NAME),ref:b?.[p.COLUMN_NAME]?{table:b[p.COLUMN_NAME].refTable,field:b[p.COLUMN_NAME].refField}:void 0})).sort((p,f)=>p.isPrimary&&f.isPrimary?p.name.localeCompare(f.name):p.isPrimary?-1:1),createdAt:new Date,tableName:l,updatedAt:new Date}});return Promise.all(s)},Ie=async(t,e,r)=>{try{console.log(`[MYSQL CONN] Query: ${t}`);let[a,o]=await e.query({sql:t,rowsAsArray:!0}),n=a?.constructor?.name;if(n==="ResultSetHeader"){let s=a;if(s.affectedRows>3&&r.allowBulkUpdate!==!0)throw new Error("[MYSQL CONN] Bulk update performed without permission.");return{columns:[{column:"affectedRows",alias:"Affected rows",full:"affectedRows"}],rows:[[s.affectedRows]],query:t}}else if(n==="Array"){let s=a;return{columns:o?.map(i=>({column:i.orgName||i.name,table:i.orgTable,alias:i.name,full:i.orgTable?i.orgTable+"."+i.orgName:i.name}))||[],rows:s,query:t}}throw new Error(`[MYSQL CONN] Unknown result type: ${n}`)}catch(a){throw console.error(a),a instanceof u?a:new u(400,a.message)}},Tt=async(t,e)=>{await t.beginTransaction();try{let r=await e();return await t.commit(),console.log("[MYSQL CONN] Commit"),r}catch(r){throw await t.rollback(),console.warn(r.message),console.log("[MYSQL CONN] Rollback"),r}},be=async t=>{let e=await dt(t),r=!1;return{dbType:"mysql",dataSource:t,inspectSchema:()=>yt(t,e),executeQuery:(a,o)=>o.type==="SELECT"?Ie(a,e,o):Tt(e,()=>Ie(a,e,o)),checkConnection:async()=>e.ping(),isClosed:()=>r,close:async()=>{if(!r)return r=!0,e.destroy()}}};var Ne=_(require("pg"));var gt=async({dbDatabase:t,dbPassword:e,dbUser:r,dbUrl:a,dbPort:o})=>{let n=new Ne.default.Client({host:a,user:r,database:t,password:e,port:o,query_timeout:1e4});return await n.connect(),n},St=async t=>{let r=await t.query(`
18
18
  SELECT
19
19
  kcu.table_name,
20
20
  kcu.column_name,
@@ -43,21 +43,21 @@
43
43
  ON ccu.constraint_name = tc.constraint_name
44
44
  AND ccu.table_schema = tc.table_schema
45
45
  WHERE tc.constraint_type = 'FOREIGN KEY';
46
- `),a={};return r.rows.forEach(o=>{a[o.table_name]||(a[o.table_name]={}),a[o.table_name][o.field]={refTable:o.referenced_table,refField:o.referenced_field}}),a},Et=async(t,e)=>{let r=`SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = '${t.dbSchema}'`,o=(await e.query(r)).rows,n=await ht(e),s=await St(e),i=o.map(async m=>{let c=Object.values(m)[0],I=`
46
+ `),a={};return r.rows.forEach(o=>{a[o.table_name]||(a[o.table_name]={}),a[o.table_name][o.field]={refTable:o.referenced_table,refField:o.referenced_field}}),a},Et=async(t,e)=>{let r=`SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = '${t.dbSchema}'`,o=(await e.query(r)).rows,n=await ht(e),s=await St(e),i=o.map(async l=>{let c=Object.values(l)[0],I=`
47
47
  SELECT column_name, data_type
48
48
  FROM information_schema.columns
49
49
  WHERE
50
50
  table_name = '${c}' and
51
51
  table_schema = '${t.dbSchema}'
52
- `,{rows:N}=await e.query(I),d=n[c];return{columns:N.map(p=>({name:p.column_name,type:p.data_type,isPrimary:s[c]?.includes(p.column_name),ref:d?.[p.column_name]?{table:d[p.column_name].refTable,field:d[p.column_name].refField}:void 0})).sort((p,h)=>p.isPrimary&&h.isPrimary?p.name.localeCompare(h.name):p.isPrimary?-1:1),createdAt:new Date,tableName:c,updatedAt:new Date}});return Promise.all(i)},It=async(t,e)=>{let r=`select relname, attname, concat(pg_class.oid, '-', attnum) as row_key
52
+ `,{rows:b}=await e.query(I),p=n[c];return{columns:b.map(f=>({name:f.column_name,type:f.data_type,isPrimary:s[c]?.includes(f.column_name),ref:p?.[f.column_name]?{table:p[f.column_name].refTable,field:p[f.column_name].refField}:void 0})).sort((f,h)=>f.isPrimary&&h.isPrimary?f.name.localeCompare(h.name):f.isPrimary?-1:1),createdAt:new Date,tableName:c,updatedAt:new Date}});return Promise.all(i)},It=async(t,e)=>{let r=`select relname, attname, concat(pg_class.oid, '-', attnum) as row_key
53
53
  from pg_attribute
54
54
  left join pg_class on pg_attribute.attrelid = pg_class.oid
55
55
  where
56
56
  concat(pg_class.oid, '-', attnum) IN (${t.join(", ")})
57
- limit 25;`;return(await e.query(r)).rows.reduce((o,n)=>(o[n.row_key]={table:n.relname,column:n.attname},o),{})},Re=async(t,e,r)=>{try{console.log(`[PG CONN] Query: ${t}`);let{rows:a,fields:o,command:n,rowCount:s}=await e.query({text:t,rowMode:"array"});if(n==="UPDATE"||n==="INSERT"||n==="DELETE"){if(s!=null&&s>3&&r.allowBulkUpdate!==!0)throw new Error("[PG CONN] Bulk update performed without permission.");return{columns:[{column:"affectedRows",alias:"Affected rows",full:"affectedRows"}],rows:[[s]],query:t}}if(n==="SELECT"){let i=o.map(c=>`'${c.tableID}-${c.columnID}'`),m=await It(i,e);return{columns:o.map(c=>{let I=m[`${c.tableID}-${c.columnID}`];return{column:I?.column||c.name,alias:c.name,table:I?.table||"",full:I?I.table+"."+I.column:c.name}}),rows:a,query:t}}throw new Error(`[PG CONN] Unsupported command: ${n}`)}catch(a){throw a instanceof u?a:new u(400,a.message)}},wt=async(t,e)=>{await t.query("BEGIN");try{let r=await e();return await t.query("COMMIT"),console.log("[PG CONN] Commit"),r}catch(r){throw await t.query("ROLLBACK"),console.log("[PG CONN] Rollback"),r}},_e=async t=>{let e=await gt(t),r=!1,a=!1,o=async n=>(a||await e.query(`SET search_path TO ${t.dbSchema}`),n());return{dbType:"postgres",dataSource:t,inspectSchema:()=>Et(t,e),executeQuery:(n,s)=>o(()=>s.type==="SELECT"?Re(n,e,s):wt(e,()=>Re(n,e,s))),checkConnection:async()=>{},isClosed:()=>r,close:async()=>{if(!r)return r=!0,e.end()}}};var L=async(t,e)=>{try{let r;if(t.dbType==="mysql")r=await be(t);else if(t.dbType==="postgres")r=await _e(t);else throw new u(500,`Connection manager for ${t.dbType} not found`);return e.__connections?e.__connections.push(r):e.__connections=[r],r}catch(r){throw console.error(r),r instanceof u?r:r?.code==="ECONNREFUSED"?new u(500,"Failed to connect to the database"):new u(500,r.message)}};var Ce=g(t=>{t.get("/:id",async e=>{let{id:r}=S(e),a=await l.findOne({where:{id:r}});if(!a)throw new u(404,"Data source not found");return{data:a}}),t.get("/",async e=>{let{teamId:r}=v(e);return{data:await l.find({where:{team:{id:r}},order:{createdAt:"DESC"}})}}),t.post("/",async(e,r)=>{let{teamId:a,ownerId:o,...n}=y(e,Ee),s=l.create({...n,team:{id:a},owner:{id:o}}),i=await L(s,e);try{await i.checkConnection()}catch{throw new u(400,"Cannot connect to the database, please check datasource configuration")}return{data:await l.save(s)}}),t.put("/:id",async(e,r)=>{let{id:a}=S(e),o=y(e),n=await l.findOneBy({id:a});if(!n)throw new u(404,"Data source not found");let s=l.merge(n,o);return await l.save(s),{data:s}}),t.delete("/:id",async(e,r)=>T.transaction(async()=>{let{id:a}=S(e);await Promise.all([b.delete({datasource:{id:a}}),E.delete({dataSource:{id:a}})]),await l.delete({id:a})})),t.post("/:id/inspect",async(e,r)=>{let{id:a}=S(e),o=await l.findOneBy({id:a});if(!o)throw new Error("Data source not found");o.status="INSPECTING",await l.save(o);let s=await(await L(o,e)).inspectSchema();await b.delete({datasource:{id:a}}),await b.insert(s.sort().map(i=>b.create({tableName:i.tableName,columns:i.columns,datasource:{id:a}}))),o.status="READY",o.lastInspected=new Date,await l.save(o)}),t.get("/:id/inspections",async(e,r)=>{let{id:a}=S(e);return{data:await b.find({where:{datasource:{id:a}}})}})});var J=require("typeorm"),Oe=g(t=>{t.get("/team/:teamId/files",async(e,r)=>{let{teamId:a}=S(e),o={where:{team:{id:a}},order:{name:"ASC"},select:{id:!0,name:!0,updatedAt:!0}},[n=[],s=[],i=[]]=await Promise.all([l.find(o),ye.find({...o,where:{...o.where,isTrash:!1}}),E.find({...o,where:{...o.where,isTrash:!1}})]);return{data:[...n.map(m=>({...m,type:"dataSource"})),...s.map(m=>({...m,type:"workbook"})),...i.map(m=>({...m,type:"query"}))]}}),t.get("/team/:teamId/trash",async e=>{let{teamId:r}=S(e);return{data:await T.query(`
57
+ limit 25;`;return(await e.query(r)).rows.reduce((o,n)=>(o[n.row_key]={table:n.relname,column:n.attname},o),{})},Re=async(t,e,r)=>{try{console.log(`[PG CONN] Query: ${t}`);let{rows:a,fields:o,command:n,rowCount:s}=await e.query({text:t,rowMode:"array"});if(n==="UPDATE"||n==="INSERT"||n==="DELETE"){if(s!=null&&s>3&&r.allowBulkUpdate!==!0)throw new Error("[PG CONN] Bulk update performed without permission.");return{columns:[{column:"affectedRows",alias:"Affected rows",full:"affectedRows"}],rows:[[s]],query:t}}if(n==="SELECT"){let i=o.map(c=>`'${c.tableID}-${c.columnID}'`),l=await It(i,e);return{columns:o.map(c=>{let I=l[`${c.tableID}-${c.columnID}`];return{column:I?.column||c.name,alias:c.name,table:I?.table||"",full:I?I.table+"."+I.column:c.name}}),rows:a,query:t}}throw new Error(`[PG CONN] Unsupported command: ${n}`)}catch(a){throw a instanceof u?a:new u(400,a.message)}},wt=async(t,e)=>{await t.query("BEGIN");try{let r=await e();return await t.query("COMMIT"),console.log("[PG CONN] Commit"),r}catch(r){throw await t.query("ROLLBACK"),console.log("[PG CONN] Rollback"),r}},_e=async t=>{let e=await gt(t),r=!1,a=!1,o=async n=>(a||await e.query(`SET search_path TO ${t.dbSchema}`),n());return{dbType:"postgres",dataSource:t,inspectSchema:()=>Et(t,e),executeQuery:(n,s)=>o(()=>s.type==="SELECT"?Re(n,e,s):wt(e,()=>Re(n,e,s))),checkConnection:async()=>{},isClosed:()=>r,close:async()=>{if(!r)return r=!0,e.end()}}};var L=async(t,e)=>{try{let r;if(t.dbType==="mysql")r=await be(t);else if(t.dbType==="postgres")r=await _e(t);else throw new u(500,`Connection manager for ${t.dbType} not found`);return e.__connections?e.__connections.push(r):e.__connections=[r],r}catch(r){throw console.error(r),r instanceof u?r:r?.code==="ECONNREFUSED"?new u(500,"Failed to connect to the database"):new u(500,r.message)}};var Ce=g(t=>{t.get("/:id",async e=>{let{id:r}=S(e),a=await m.findOne({where:{id:r}});if(!a)throw new u(404,"Data source not found");return{data:a}}),t.get("/",async e=>{let{teamId:r}=v(e);return{data:await m.find({where:{team:{id:r}},order:{createdAt:"DESC"}})}}),t.post("/",async(e,r)=>{let{teamId:a,ownerId:o,...n}=y(e,Ee),s=m.create({...n,team:{id:a},owner:{id:o}}),i=await L(s,e);try{await i.checkConnection()}catch{throw new u(400,"Cannot connect to the database, please check datasource configuration")}return{data:await m.save(s)}}),t.put("/:id",async(e,r)=>{let{id:a}=S(e),o=y(e),n=await m.findOneBy({id:a});if(!n)throw new u(404,"Data source not found");let s=m.merge(n,o);return await m.save(s),{data:s}}),t.delete("/:id",async(e,r)=>T.transaction(async()=>{let{id:a}=S(e);await Promise.all([R.delete({datasource:{id:a}}),E.delete({dataSource:{id:a}})]),await m.delete({id:a})})),t.post("/:id/inspect",async(e,r)=>{let{id:a}=S(e),o=await m.findOneBy({id:a});if(!o)throw new Error("Data source not found");o.status="INSPECTING",await m.save(o);let s=await(await L(o,e)).inspectSchema();await R.delete({datasource:{id:a}}),await R.insert(s.sort().map(i=>R.create({tableName:i.tableName,columns:i.columns,datasource:{id:a}}))),o.status="READY",o.lastInspected=new Date,await m.save(o)}),t.get("/:id/inspections",async(e,r)=>{let{id:a}=S(e);return{data:await R.find({where:{datasource:{id:a}}})}})});var J=require("typeorm"),Oe=g(t=>{t.get("/team/:teamId/files",async(e,r)=>{let{teamId:a}=S(e),o={where:{team:{id:a}},order:{name:"ASC"},select:{id:!0,name:!0,updatedAt:!0}},[n=[],s=[],i=[]]=await Promise.all([m.find(o),ye.find({...o,where:{...o.where,isTrash:!1}}),E.find({...o,where:{...o.where,isTrash:!1}})]);return{data:[...n.map(l=>({...l,type:"dataSource"})),...s.map(l=>({...l,type:"workbook"})),...i.map(l=>({...l,type:"query"}))]}}),t.get("/team/:teamId/trash",async e=>{let{teamId:r}=S(e);return{data:await T.query(`
58
58
  select id, name, updatedAt
59
59
  from workbooks
60
60
  where teamId = '${r}' AND (isTrash = true OR isTrash IS NULL)
61
61
  order by name asc
62
62
  limit 100;
63
- `)}}),t.get("/team/:teamId/query",async e=>{let{teamId:r}=S(e),{search:a,size:o}=v(e),n=(parseInt(o)||20)/2,[s,i]=await Promise.all([b.find({where:{tableName:(0,J.Like)(`%${a}%`),datasource:{team:{id:r}}},relations:{datasource:!0},select:{id:!0,tableName:!0,datasource:{name:!0,id:!0}},order:{tableName:"ASC"},take:n}),E.find({where:{name:(0,J.Like)(`%${a}%`),isTrash:!1,dataSource:{team:{id:r}}},relations:{dataSource:!0},select:{id:!0,name:!0,dataSource:{name:!0,id:!0}},order:{name:"ASC"},take:n})]),m=[];return s.forEach(c=>{m.push({name:c.tableName,id:c.id,dataSourceName:c.datasource?.name||"--",dataSourceId:c.datasource?.id||"--",type:"table"})}),i.forEach(c=>{m.push({name:c.name,id:c.id,dataSourceName:c.dataSource?.name||"--",dataSourceId:c.dataSource?.id||"--",type:"query"})}),{data:m}})});function Ae(t,e=void 0){try{if(t){let r=t.split("&"),a={};for(let o of r){let n=o.split(":");a[n[0]]=n[1]}return a}}catch{}return e}var De=require("typeorm"),Pe=g(t=>{t.get("/",async e=>{let{dataSourceId:r,teamId:a,limit:o,orderBy:n,name:s}=v(e);if(!r&&!a)throw new u(400,"Either dsId or teamId is required");let i={isTrash:!1};return r&&(i.dataSource={id:r}),a&&(i.team={id:a}),s&&(i.name=(0,De.Like)(`%${s}%`)),{data:await E.find({where:i,take:o,order:Ae(n,{createdAt:"DESC"})})}}),t.get("/:id",async e=>{let{id:r}=S(e),a=await E.findOne({where:{id:r},select:{dataSource:{id:!0}},relations:{dataSource:!0}});return a?{data:a}:{status:404,data:"Query not found"}}),t.post("/",async e=>{let r=y(e),a=await l.findOne({where:{id:r.dataSourceId},relations:{team:!0}});return{data:await E.save(E.create({name:r.name,isTrash:!1,opts:r.opts,team:{id:a?.team.id},dataSource:{id:r.dataSourceId}}))}}),t.patch("/:id",async e=>{let{id:r}=S(e),a=y(e);if(!(await E.update(r,a)).affected)throw new u(404,"Workbook not found");return{data:await E.findOneBy({id:r})}}),t.delete("/:id",async e=>T.transaction(async()=>{let{id:r}=S(e);if(!(await E.delete({id:r})).affected)return{status:404,data:"Workbook not found"}}))});var F=_(xe()),$e=require("typeorm");var ke=[{value:"=",label:"equals"},{value:"<>",label:"not equal"},{value:">",label:"greater than"},{value:">=",label:"greater than or equal"},{value:"<",label:"less than"},{value:"<=",label:"less than or equal"},{value:"LIKE",label:"contains"},{value:"NOT LIKE",label:"not contains"},{value:"ILIKE",label:"case-insensitive contains"},{value:"NOT ILIKE",label:"case-insensitive not contains"},{value:"IN",label:"in list"},{value:"NOT IN",label:"not in list"},{value:"IS NULL",label:"is null"},{value:"IS NOT NULL",label:"is not null"}],Ct=ke.reduce((t,e)=>(t[e.value]=e.label,t),{}),Qr=ke.reduce((t,e)=>(t[e.label]=e.value,t),{}),x=t=>t.map(e=>({label:Ct[e],value:e})),Br=x(["=","<>",">",">=","<","<=","IN","NOT IN","IS NULL","IS NOT NULL"]),Fr=x(["=","<>","LIKE","NOT LIKE","ILIKE","NOT ILIKE","IN","NOT IN","IS NULL","IS NOT NULL"]),Wr=x(["=","<>","IS NULL","IS NOT NULL"]),jr=x(["=","<>",">",">=","<","<=","IS NULL","IS NOT NULL"]),Yr=x(["IS NULL","IS NOT NULL"]),Hr=x(["IN","NOT IN"]);var qe=["char","varchar","binary","varbinary","blob","text","enum","set","character","character varying","text","citext","uuid","xml","json","jsonb"];var te=t=>t.distinct===!0?`${t.fn} distinct ${t.value}`:`${t.fn} ${t.value}`;function Ot(t){return t.includes(" ")&&!t.startsWith("'")?`\`${t}\``:t}var re=async(t,{table:e,datasourceId:r,filters:a,joins:o,orderBy:n,size:s,page:i,columns:m,groupBy:c,searchAll:I})=>{let N=await l.findOneBy({id:r}),d=[e],p=[];if(!N)throw new u(404,"Data source not found");let h=new F.SelectQueryBuilder(N.dbType);h.setTable(e),h.setLimit(s||20),h.setOffset(s*i),a?.forEach(f=>{h.addWhere(Dt(f))}),o&&(h.addJoin(...o),o.forEach(f=>{d.push(f.table)})),n&&h.addOrderBy(...n.map(f=>({...f,column:Ot(f.column)}))),c&&c.length>0&&c.forEach(f=>h.addGroupBy(f.value));let et=await b.find({where:{tableName:(0,$e.In)(d),datasource:{id:r}}});for(let f of et)if(f.columns)for(let O of f.columns)p.push({column:O.name,table:f.tableName||"",full:`${f.tableName}.${O.name}`,type:O.type});let k;if(m&&m.length>0?k=m.map(Pt):k=p.map(f=>f.full),h.selectColumns(k),I){let f=p.filter(O=>qe.includes(O.type)&&k.includes(O.full));if(f.length>0){let O=f.map(tt=>`LOWER(${tt.full}) LIKE '%${I.toLowerCase()}%'`);h.addWhereRaw(`(${O.join(" OR ")})`,"AND")}}return{...await(await L(N,t)).executeQuery(h.toSQL(),{type:"SELECT",allowBulkUpdate:!1}),tables:d,allColumns:p}},Qe=async(t,e)=>{let r=await l.findOneBy({id:e.datasourceId});if(!r)throw new u(404,"Data source not found");let a=e.values.map(({value:i,column:m})=>typeof i=="string"?i&&i.startsWith("=")?`${m}=${i.substring(1)}`:`${m}='${i}'`:`${m}='${i}'`).join(", "),o=e.filters.map(F.buildWhereCondition).join(" AND "),n=`UPDATE ${e.table} SET ${a} WHERE ${o}`;return(await L(r,t)).executeQuery(n,{type:"UPDATE",allowBulkUpdate:!1})},Be=async(t,e)=>{let r=await l.findOneBy({id:e.datasourceId});if(!r)throw new u(404,"Data source not found");let{keys:a,values:o}=At(e.values),n=`INSERT INTO ${e.table} (${a}) VALUES (${o})`;return(await L(r,t)).executeQuery(n,{type:"INSERT",allowBulkUpdate:!1})},At=t=>{let e=t.map(({column:a})=>a).join(", "),r=t.map(({value:a})=>typeof a=="string"?a&&a.startsWith("=")?a.substring(1):`'${a}'`:a).join(", ");return{keys:e,values:r}},Dt=t=>{let e={...t};switch(e.operator){case"IS NULL":case"IS NOT NULL":e.value=void 0;break;case"LIKE":case"ILIKE":case"NOT LIKE":case"NOT ILIKE":e.value=e.value?.map(r=>({isColumn:r?.isColumn,value:`%${r?.value}%`}));break}return e},Pt=t=>{if(t.fn){let e=t.distinct===!0?"distinct ":"";return t.fn==="sum"?`coalesce(${t.fn}(${e}${t.value}), 0) as \`${te(t)}\``:`${t.fn}(${e}${t.value}) as \`${te(t)}\``}return`${t.value} as \`${t.value}\``};var Fe=g(t=>{t.post("/sql",async e=>{let r=y(e);return{data:await re(e,r)}}),t.post("/select",async e=>{let r=y(e);return{data:await re(e,r)}}),t.post("/insert",async e=>{let r=y(e);return{data:await Be(e,r)}}),t.post("/update",async e=>{let r=y(e);return{data:await Qe(e,r)}})});var We=require("node:child_process"),je=g(t=>{t.get("/",async(e,r)=>({data:{active:!0,version:process.env.SERVER_VERSION}})),t.get("/logs",async()=>{(0,We.spawn)(`echo "${process.env.SERVER_VERSION}"`)})});var Ye=g(t=>{t.get("/",async(e,r)=>{let a=A(e);return{data:await U.find({where:{users:{id:a}}})}}),t.post("/",async(e,r)=>T.transaction(async()=>{let a=A(e),o=y(e),n=w.create();n.id=a;let s=U.create(o);return s.users=[n],await U.save(s),{data:s}}))});async function Ut(){let t=U.create({name:"Personal"}),e=await w.save(w.create({}));return t.users=[e],await U.save(t),await w.update(e.id,{currentTeam:{id:t.id}}),w.findOne({where:{},relations:{currentTeam:!0}})}var He=g(t=>{t.get("/",async(e,r)=>{let a=await w.findOne({where:{},relations:{currentTeam:!0}});return a?{data:a}:{data:await Ut()}}),t.put("/",async(e,r)=>{let a=A(e),o=y(e);if(!(await w.update(a,o)).affected)throw new u(404,"User not found");return{data:w.findOneBy({id:a})}}),t.put("/team",async(e,r)=>{let a=A(e),o=y(e);return await w.update(a,{currentTeam:{id:o.teamId}}),{data:await w.findOne({where:{id:a},relations:{currentTeam:!0}})}})});var Mt="********************************************",Ge=t=>t.slice(0,4)+Mt+t.slice(t.length-4);function Lt(t){let e=M.create(t);return t.openAiToken&&(e.openAiToken=Ge(t.openAiToken)),e}var Ke=g(t=>{t.get("/",async e=>{let r=A(e),a=await M.findOneBy({user:{id:r}});return a||(a=await M.save(M.create({user:{id:r},model:"gpt-4o"}))),{data:Lt(a)}}),t.patch("/",async e=>{let{settings:r}=y(e);if(!r.id)throw new u(400,"Settings id is required!");if(!(await M.update(r.id,r)).affected)throw new u(404,"You do not own these settings!");return{data:await M.findOneBy({id:r.id})}})});var Ze=require("node:path"),P=(0,ze.default)(),Xe=process.env.PORT?parseInt(process.env.PORT):4466,vt=["https://app.dataramen.xyz","https://dataramen.xyz","http://localhost:3000","http://localhost:3001",`http://localhost:${Xe}`];function D(t,e){P.register(t,{prefix:e}),console.log("Registered "+e)}async function xt(){await he(),D(Ce,"/api/data-sources"),D(Oe,"/api/project"),D(Pe,"/api/queries"),D(Fe,"/api/runner"),D(je,"/api/status"),D(Ye,"/api/teams"),D(He,"/api/users"),D(Ke,"/api/user-settings"),P.register(Je.default,{root:(0,Ze.join)(__dirname,"web")}),P.get("/",(t,e)=>{e.sendFile("index.html")}),P.register(Ve.default,{origin:(t,e)=>{!t||vt.includes(t)?e(null,!0):e(new Error("Not allowed by CORS"),!1)},methods:"*"}),P.addHook("onResponse",async t=>{t.__connections&&t.__connections.forEach(e=>{e.close()})}),P.setErrorHandler((t,e,r)=>{if(t instanceof u){console.error(t),r.status(t.status).send({error:t.message});return}else console.error(t),r.status(500).send({error:"Internal Server Error"})}),await P.after(),await fe(),P.listen({port:Xe,host:"127.0.0.1"},(t,e)=>{t&&(console.error(t),process.exit(1)),console.log(`Server listening at ${e}`)})}xt();
63
+ `)}}),t.get("/team/:teamId/query",async e=>{let{teamId:r}=S(e),{search:a,size:o}=v(e),n=(parseInt(o)||20)/2,[s,i]=await Promise.all([R.find({where:{tableName:(0,J.Like)(`%${a}%`),datasource:{team:{id:r}}},relations:{datasource:!0},select:{id:!0,tableName:!0,datasource:{name:!0,id:!0}},order:{tableName:"ASC"},take:n}),E.find({where:{name:(0,J.Like)(`%${a}%`),isTrash:!1,dataSource:{team:{id:r}}},relations:{dataSource:!0},select:{id:!0,name:!0,dataSource:{name:!0,id:!0}},order:{name:"ASC"},take:n})]),l=[];return s.forEach(c=>{l.push({name:c.tableName,id:c.id,dataSourceName:c.datasource?.name||"--",dataSourceId:c.datasource?.id||"--",type:"table"})}),i.forEach(c=>{l.push({name:c.name,id:c.id,dataSourceName:c.dataSource?.name||"--",dataSourceId:c.dataSource?.id||"--",type:"query"})}),{data:l}})});function Ae(t,e=void 0){try{if(t){let r=t.split("&"),a={};for(let o of r){let n=o.split(":");a[n[0]]=n[1]}return a}}catch{}return e}var De=require("typeorm"),Pe=g(t=>{t.get("/",async e=>{let{dataSourceId:r,teamId:a,limit:o,orderBy:n,name:s}=v(e);if(!r&&!a)throw new u(400,"Either dsId or teamId is required");let i={isTrash:!1};return r&&(i.dataSource={id:r}),a&&(i.team={id:a}),s&&(i.name=(0,De.Like)(`%${s}%`)),{data:await E.find({where:i,take:o,order:Ae(n,{createdAt:"DESC"})})}}),t.get("/:id",async e=>{let{id:r}=S(e),a=await E.findOne({where:{id:r},select:{dataSource:{id:!0}},relations:{dataSource:!0}});return a?{data:a}:{status:404,data:"Query not found"}}),t.post("/",async e=>{let r=y(e),a=await m.findOne({where:{id:r.dataSourceId},relations:{team:!0}});return{data:await E.save(E.create({name:r.name,isTrash:!1,opts:r.opts,team:{id:a?.team.id},dataSource:{id:r.dataSourceId}}))}}),t.patch("/:id",async e=>{let{id:r}=S(e),a=y(e);if(!(await E.update(r,a)).affected)throw new u(404,"Workbook not found");return{data:await E.findOneBy({id:r})}}),t.delete("/:id",async e=>T.transaction(async()=>{let{id:r}=S(e);if(!(await E.delete({id:r})).affected)return{status:404,data:"Workbook not found"}}))});var F=_(xe()),$e=require("typeorm");var ke=[{value:"=",label:"equals"},{value:"<>",label:"not equal"},{value:">",label:"greater than"},{value:">=",label:"greater than or equal"},{value:"<",label:"less than"},{value:"<=",label:"less than or equal"},{value:"LIKE",label:"contains"},{value:"NOT LIKE",label:"not contains"},{value:"ILIKE",label:"case-insensitive contains"},{value:"NOT ILIKE",label:"case-insensitive not contains"},{value:"IN",label:"in list"},{value:"NOT IN",label:"not in list"},{value:"IS NULL",label:"is null"},{value:"IS NOT NULL",label:"is not null"}],Ct=ke.reduce((t,e)=>(t[e.value]=e.label,t),{}),Qr=ke.reduce((t,e)=>(t[e.label]=e.value,t),{}),x=t=>t.map(e=>({label:Ct[e],value:e})),Br=x(["=","<>",">",">=","<","<=","IN","NOT IN","IS NULL","IS NOT NULL"]),Fr=x(["=","<>","LIKE","NOT LIKE","ILIKE","NOT ILIKE","IN","NOT IN","IS NULL","IS NOT NULL"]),Wr=x(["=","<>","IS NULL","IS NOT NULL"]),jr=x(["=","<>",">",">=","<","<=","IS NULL","IS NOT NULL"]),Yr=x(["IS NULL","IS NOT NULL"]),Hr=x(["IN","NOT IN"]);var qe=["char","varchar","binary","varbinary","blob","text","enum","set","character","character varying","text","citext","uuid","xml","json","jsonb"];var te=t=>t.distinct===!0?`${t.fn} distinct ${t.value}`:`${t.fn} ${t.value}`;var re=async(t,{table:e,datasourceId:r,filters:a,joins:o,orderBy:n,size:s,page:i,columns:l,groupBy:c,searchAll:I})=>{let b=await m.findOneBy({id:r}),p=[e],f=[];if(!b)throw new u(404,"Data source not found");let h=new F.SelectQueryBuilder(b.dbType);h.setTable(e),h.setLimit(s||20),h.setOffset(s*i),a?.forEach(d=>{h.addWhere(At(d))}),o&&(h.addJoin(...o),o.forEach(d=>{p.push(d.table)})),n&&h.addOrderBy(...n.map(d=>({...d,column:Pt(d.column,b.dbType)}))),c&&c.length>0&&c.forEach(d=>h.addGroupBy(d.value));let et=await R.find({where:{tableName:(0,$e.In)(p),datasource:{id:r}}});for(let d of et)if(d.columns)for(let A of d.columns)f.push({column:A.name,table:d.tableName||"",full:`${d.tableName}.${A.name}`,type:A.type});let k;if(l&&l.length>0?k=l.map(Dt):k=f.map(d=>`${d.full} as "${d.full}"`),h.selectColumns(k),I){let d=f.filter(A=>qe.includes(A.type)&&k.includes(A.full));if(d.length>0){let A=d.map(tt=>`LOWER(${tt.full}) LIKE '%${I.toLowerCase()}%'`);h.addWhereRaw(`(${A.join(" OR ")})`,"AND")}}return{...await(await L(b,t)).executeQuery(h.toSQL(),{type:"SELECT",allowBulkUpdate:!1}),tables:p,allColumns:f}},Qe=async(t,e)=>{let r=await m.findOneBy({id:e.datasourceId});if(!r)throw new u(404,"Data source not found");let a=e.values.map(({value:i,column:l})=>typeof i=="string"?i&&i.startsWith("=")?`${l}=${i.substring(1)}`:`${l}='${i}'`:`${l}='${i}'`).join(", "),o=e.filters.map(F.buildWhereCondition).join(" AND "),n=`UPDATE ${e.table} SET ${a} WHERE ${o}`;return(await L(r,t)).executeQuery(n,{type:"UPDATE",allowBulkUpdate:!1})},Be=async(t,e)=>{let r=await m.findOneBy({id:e.datasourceId});if(!r)throw new u(404,"Data source not found");let{keys:a,values:o}=Ot(e.values),n=`INSERT INTO ${e.table} (${a}) VALUES (${o})`;return(await L(r,t)).executeQuery(n,{type:"INSERT",allowBulkUpdate:!1})},Ot=t=>{let e=t.map(({column:a})=>a).join(", "),r=t.map(({value:a})=>typeof a=="string"?a&&a.startsWith("=")?a.substring(1):`'${a}'`:a).join(", ");return{keys:e,values:r}},At=t=>{let e={...t};switch(e.operator){case"IS NULL":case"IS NOT NULL":e.value=void 0;break;case"LIKE":case"ILIKE":case"NOT LIKE":case"NOT ILIKE":e.value=e.value?.map(r=>({isColumn:r?.isColumn,value:`%${r?.value}%`}));break}return e},Dt=t=>{if(t.fn){let e=t.distinct===!0?"distinct ":"";return t.fn==="sum"?`coalesce(${t.fn}(${e}${t.value}), 0) as "${te(t)}"`:`${t.fn}(${e}${t.value}) as "${te(t)}"`}return`${t.value} as "${t.value}"`},Pt=(t,e)=>e==="postgres"?`"${t}"`:e==="mysql"?`\`${t}\``:t;var Fe=g(t=>{t.post("/sql",async e=>{let r=y(e);return{data:await re(e,r)}}),t.post("/select",async e=>{let r=y(e);return{data:await re(e,r)}}),t.post("/insert",async e=>{let r=y(e);return{data:await Be(e,r)}}),t.post("/update",async e=>{let r=y(e);return{data:await Qe(e,r)}})});var We=require("node:child_process"),je=g(t=>{t.get("/",async(e,r)=>({data:{active:!0,version:process.env.SERVER_VERSION}})),t.get("/logs",async()=>{(0,We.spawn)(`echo "${process.env.SERVER_VERSION}"`)})});var Ye=g(t=>{t.get("/",async(e,r)=>{let a=D(e);return{data:await U.find({where:{users:{id:a}}})}}),t.post("/",async(e,r)=>T.transaction(async()=>{let a=D(e),o=y(e),n=w.create();n.id=a;let s=U.create(o);return s.users=[n],await U.save(s),{data:s}}))});async function Ut(){let t=U.create({name:"Personal"}),e=await w.save(w.create({}));return t.users=[e],await U.save(t),await w.update(e.id,{currentTeam:{id:t.id}}),w.findOne({where:{},relations:{currentTeam:!0}})}var He=g(t=>{t.get("/",async(e,r)=>{let a=await w.findOne({where:{},relations:{currentTeam:!0}});return a?{data:a}:{data:await Ut()}}),t.put("/",async(e,r)=>{let a=D(e),o=y(e);if(!(await w.update(a,o)).affected)throw new u(404,"User not found");return{data:w.findOneBy({id:a})}}),t.put("/team",async(e,r)=>{let a=D(e),o=y(e);return await w.update(a,{currentTeam:{id:o.teamId}}),{data:await w.findOne({where:{id:a},relations:{currentTeam:!0}})}})});var Mt="********************************************",Ge=t=>t.slice(0,4)+Mt+t.slice(t.length-4);function Lt(t){let e=M.create(t);return t.openAiToken&&(e.openAiToken=Ge(t.openAiToken)),e}var Ke=g(t=>{t.get("/",async e=>{let r=D(e),a=await M.findOneBy({user:{id:r}});return a||(a=await M.save(M.create({user:{id:r},model:"gpt-4o"}))),{data:Lt(a)}}),t.patch("/",async e=>{let{settings:r}=y(e);if(!r.id)throw new u(400,"Settings id is required!");if(!(await M.update(r.id,r)).affected)throw new u(404,"You do not own these settings!");return{data:await M.findOneBy({id:r.id})}})});var Ze=require("node:path"),O=(0,ze.default)(),Xe=process.env.PORT?parseInt(process.env.PORT):4466,vt=["https://app.dataramen.xyz","https://dataramen.xyz","http://localhost:3000",`http://localhost:${Xe}`];function P(t,e){O.register(t,{prefix:e}),console.log("Registered "+e)}async function xt(){await he(),P(Ce,"/api/data-sources"),P(Oe,"/api/project"),P(Pe,"/api/queries"),P(Fe,"/api/runner"),P(je,"/api/status"),P(Ye,"/api/teams"),P(He,"/api/users"),P(Ke,"/api/user-settings"),O.register(Je.default,{root:(0,Ze.join)(__dirname,"web")}),O.get("/",(t,e)=>{e.sendFile("index.html")}),O.register(Ve.default,{origin:(t,e)=>{!t||vt.includes(t)?e(null,!0):e(new Error("Not allowed by CORS"),!1)},methods:"*"}),O.addHook("onResponse",async t=>{t.__connections&&t.__connections.forEach(e=>{e.close()})}),O.setNotFoundHandler((t,e)=>{if(t.raw.url?.startsWith("/api/")){e.code(404).send({error:"API route not found"});return}e.sendFile("index.html")}),O.setErrorHandler((t,e,r)=>{if(t instanceof u){console.error(t),r.status(t.status).send({error:t.message});return}else console.error(t),r.status(500).send({error:"Internal Server Error"})}),await O.after(),await fe(),O.listen({port:Xe,host:"127.0.0.1"},(t,e)=>{t&&(console.error(t),process.exit(1)),console.log(`Server listening at ${e}`)})}xt();
@@ -290,7 +290,7 @@ dataramen start\r
290
290
  */var uv;function l8(){return uv||(uv=1,function(e){(function(){var n={}.hasOwnProperty;function i(){for(var s="",c=0;c<arguments.length;c++){var f=arguments[c];f&&(s=o(s,l(f)))}return s}function l(s){if(typeof s=="string"||typeof s=="number")return s;if(typeof s!="object")return"";if(Array.isArray(s))return i.apply(null,s);if(s.toString!==Object.prototype.toString&&!s.toString.toString().includes("[native code]"))return s.toString();var c="";for(var f in s)n.call(s,f)&&s[f]&&(c=o(c,f));return c}function o(s,c){return c?s?s+" "+c:s+c:s}e.exports?(i.default=i,e.exports=i):window.classNames=i})()}(fh)),fh.exports}var a8=l8();const Gh=ba(a8);var cv={};const o8="react-tooltip-core-styles",s8="react-tooltip-base-styles",fv={core:!1,base:!1};function dv({css:e,id:n=s8,type:i="base",ref:l}){var o,s;if(!e||typeof document>"u"||fv[i]||i==="core"&&typeof process<"u"&&(!((o=process==null?void 0:cv)===null||o===void 0)&&o.REACT_TOOLTIP_DISABLE_CORE_STYLES)||i!=="base"&&typeof process<"u"&&(!((s=process==null?void 0:cv)===null||s===void 0)&&s.REACT_TOOLTIP_DISABLE_BASE_STYLES))return;i==="core"&&(n=o8),l||(l={});const{insertAt:c}=l;if(document.getElementById(n))return;const f=document.head||document.getElementsByTagName("head")[0],h=document.createElement("style");h.id=n,h.type="text/css",c==="top"&&f.firstChild?f.insertBefore(h,f.firstChild):f.appendChild(h),h.styleSheet?h.styleSheet.cssText=e:h.appendChild(document.createTextNode(e)),fv[i]=!0}const hv=async({elementReference:e=null,tooltipReference:n=null,tooltipArrowReference:i=null,place:l="top",offset:o=10,strategy:s="absolute",middlewares:c=[t8(Number(o)),r8({fallbackAxisSideDirection:"start"}),n8({padding:5})],border:f,arrowSize:h=8})=>{if(!e)return{tooltipStyles:{},tooltipArrowStyles:{},place:l};if(n===null)return{tooltipStyles:{},tooltipArrowStyles:{},place:l};const d=c;return i?(d.push(i8({element:i,padding:5})),sv(e,n,{placement:l,strategy:s,middleware:d}).then(({x:y,y:g,placement:x,middlewareData:b})=>{var w,T;const _={left:`${y}px`,top:`${g}px`,border:f},{x:A,y:N}=(w=b.arrow)!==null&&w!==void 0?w:{x:0,y:0},O=(T={top:"bottom",right:"left",bottom:"top",left:"right"}[x.split("-")[0]])!==null&&T!==void 0?T:"bottom",z=f&&{borderBottom:f,borderRight:f};let q=0;if(f){const M=`${f}`.match(/(\d+)px/);q=M!=null&&M[1]?Number(M[1]):1}return{tooltipStyles:_,tooltipArrowStyles:{left:A!=null?`${A}px`:"",top:N!=null?`${N}px`:"",right:"",bottom:"",...z,[O]:`-${h/2+q}px`},place:x}})):sv(e,n,{placement:"bottom",strategy:s,middleware:d}).then(({x:y,y:g,placement:x})=>({tooltipStyles:{left:`${y}px`,top:`${g}px`},tooltipArrowStyles:{},place:x}))},pv=(e,n)=>!("CSS"in window&&"supports"in window.CSS)||window.CSS.supports(e,n),mv=(e,n,i)=>{let l=null;const o=function(...s){const c=()=>{l=null};!l&&(e.apply(this,s),l=setTimeout(c,n))};return o.cancel=()=>{l&&(clearTimeout(l),l=null)},o},yv=e=>e!==null&&!Array.isArray(e)&&typeof e=="object",Xh=(e,n)=>{if(e===n)return!0;if(Array.isArray(e)&&Array.isArray(n))return e.length===n.length&&e.every((o,s)=>Xh(o,n[s]));if(Array.isArray(e)!==Array.isArray(n))return!1;if(!yv(e)||!yv(n))return e===n;const i=Object.keys(e),l=Object.keys(n);return i.length===l.length&&i.every(o=>Xh(e[o],n[o]))},u8=e=>{if(!(e instanceof HTMLElement||e instanceof SVGElement))return!1;const n=getComputedStyle(e);return["overflow","overflow-x","overflow-y"].some(i=>{const l=n.getPropertyValue(i);return l==="auto"||l==="scroll"})},gv=e=>{if(!e)return null;let n=e.parentElement;for(;n;){if(u8(n))return n;n=n.parentElement}return document.scrollingElement||document.documentElement},c8=typeof window<"u"?E.useLayoutEffect:E.useEffect,$n=e=>{e.current&&(clearTimeout(e.current),e.current=null)},f8="DEFAULT_TOOLTIP_ID",d8={anchorRefs:new Set,activeAnchor:{current:null},attach:()=>{},detach:()=>{},setActiveAnchor:()=>{}},h8=E.createContext({getTooltipData:()=>d8});function fw(e=f8){return E.useContext(h8).getTooltipData(e)}var sa={tooltip:"core-styles-module_tooltip__3vRRp",fixed:"core-styles-module_fixed__pcSol",arrow:"core-styles-module_arrow__cvMwQ",noArrow:"core-styles-module_noArrow__xock6",clickable:"core-styles-module_clickable__ZuTTB",show:"core-styles-module_show__Nt9eE",closing:"core-styles-module_closing__sGnxF"},dh={tooltip:"styles-module_tooltip__mnnfp",arrow:"styles-module_arrow__K0L3T",dark:"styles-module_dark__xNqje",light:"styles-module_light__Z6W-X",success:"styles-module_success__A2AKt",warning:"styles-module_warning__SCK0X",error:"styles-module_error__JvumD",info:"styles-module_info__BWdHW"};const p8=({forwardRef:e,id:n,className:i,classNameArrow:l,variant:o="dark",anchorId:s,anchorSelect:c,place:f="top",offset:h=10,events:d=["hover"],openOnClick:y=!1,positionStrategy:g="absolute",middlewares:x,wrapper:b,delayShow:w=0,delayHide:T=0,float:_=!1,hidden:A=!1,noArrow:N=!1,clickable:O=!1,closeOnEsc:z=!1,closeOnScroll:q=!1,closeOnResize:M=!1,openEvents:Y,closeEvents:ee,globalCloseEvents:ie,imperativeModeOnly:L,style:ae,position:te,afterShow:ue,afterHide:J,disableTooltip:se,content:B,contentWrapperRef:X,isOpen:ne,defaultIsOpen:pe=!1,setIsOpen:C,activeAnchor:I,setActiveAnchor:oe,border:R,opacity:fe,arrowColor:ke,arrowSize:ce=8,role:st="tooltip"})=>{var Oe;const Ie=E.useRef(null),Ft=E.useRef(null),bt=E.useRef(null),un=E.useRef(null),Xn=E.useRef(null),[cn,ni]=E.useState({tooltipStyles:{},tooltipArrowStyles:{},place:f}),[Dt,Mt]=E.useState(!1),[Zn,xn]=E.useState(!1),[Ke,Dn]=E.useState(null),Ar=E.useRef(!1),or=E.useRef(null),{anchorRefs:_r,setActiveAnchor:ri}=fw(n),$=E.useRef(!1),[W,me]=E.useState([]),ye=E.useRef(!1),Ue=y||d.includes("click"),Qt=Ue||(Y==null?void 0:Y.click)||(Y==null?void 0:Y.dblclick)||(Y==null?void 0:Y.mousedown),Yt=Y?{...Y}:{mouseover:!0,focus:!0,mouseenter:!1,click:!1,dblclick:!1,mousedown:!1};!Y&&Ue&&Object.assign(Yt,{mouseenter:!1,focus:!1,mouseover:!1,click:!0});const ht=ee?{...ee}:{mouseout:!0,blur:!0,mouseleave:!1,click:!1,dblclick:!1,mouseup:!1};!ee&&Ue&&Object.assign(ht,{mouseleave:!1,blur:!1,mouseout:!1});const pt=ie?{...ie}:{escape:z||!1,scroll:q||!1,resize:M||!1,clickOutsideAnchor:Qt||!1};L&&(Object.assign(Yt,{mouseover:!1,focus:!1,mouseenter:!1,click:!1,dblclick:!1,mousedown:!1}),Object.assign(ht,{mouseout:!1,blur:!1,mouseleave:!1,click:!1,dblclick:!1,mouseup:!1}),Object.assign(pt,{escape:!1,scroll:!1,resize:!1,clickOutsideAnchor:!1})),c8(()=>(ye.current=!0,()=>{ye.current=!1}),[]);const qe=le=>{ye.current&&(le&&xn(!0),setTimeout(()=>{ye.current&&(C==null||C(le),ne===void 0&&Mt(le))},10))};E.useEffect(()=>{if(ne===void 0)return()=>null;ne&&xn(!0);const le=setTimeout(()=>{Mt(ne)},10);return()=>{clearTimeout(le)}},[ne]),E.useEffect(()=>{if(Dt!==Ar.current)if($n(Xn),Ar.current=Dt,Dt)ue==null||ue();else{const le=(he=>{const Se=he.match(/^([\d.]+)(ms|s)$/);if(!Se)return 0;const[,ct,Ut]=Se;return Number(ct)*(Ut==="ms"?1:1e3)})(getComputedStyle(document.body).getPropertyValue("--rt-transition-show-delay"));Xn.current=setTimeout(()=>{xn(!1),Dn(null),J==null||J()},le+25)}},[Dt]);const ut=le=>{ni(he=>Xh(he,le)?he:le)},zt=(le=w)=>{$n(bt),Zn?qe(!0):bt.current=setTimeout(()=>{qe(!0)},le)},Lt=(le=T)=>{$n(un),un.current=setTimeout(()=>{$.current||qe(!1)},le)},ii=le=>{var he;if(!le)return;const Se=(he=le.currentTarget)!==null&&he!==void 0?he:le.target;if(!(Se!=null&&Se.isConnected))return oe(null),void ri({current:null});w?zt():qe(!0),oe(Se),ri({current:Se}),$n(un)},Or=()=>{O?Lt(T||100):T?Lt():qe(!1),$n(bt)},sr=({x:le,y:he})=>{var Se;const ct={getBoundingClientRect:()=>({x:le,y:he,width:0,height:0,top:he,left:le,right:le,bottom:he})};hv({place:(Se=Ke==null?void 0:Ke.place)!==null&&Se!==void 0?Se:f,offset:h,elementReference:ct,tooltipReference:Ie.current,tooltipArrowReference:Ft.current,strategy:g,middlewares:x,border:R,arrowSize:ce}).then(Ut=>{ut(Ut)})},Mn=le=>{if(!le)return;const he=le,Se={x:he.clientX,y:he.clientY};sr(Se),or.current=Se},Hi=le=>{var he;if(!Dt)return;const Se=le.target;Se.isConnected&&(!((he=Ie.current)===null||he===void 0)&&he.contains(Se)||[document.querySelector(`[id='${s}']`),...W].some(ct=>ct==null?void 0:ct.contains(Se))||(qe(!1),$n(bt)))},Fi=mv(ii,50),xt=mv(Or,50),Kt=le=>{xt.cancel(),Fi(le)},be=()=>{Fi.cancel(),xt()},De=E.useCallback(()=>{var le,he;const Se=(le=Ke==null?void 0:Ke.position)!==null&&le!==void 0?le:te;Se?sr(Se):_?or.current&&sr(or.current):I!=null&&I.isConnected&&hv({place:(he=Ke==null?void 0:Ke.place)!==null&&he!==void 0?he:f,offset:h,elementReference:I,tooltipReference:Ie.current,tooltipArrowReference:Ft.current,strategy:g,middlewares:x,border:R,arrowSize:ce}).then(ct=>{ye.current&&ut(ct)})},[Dt,I,B,ae,f,Ke==null?void 0:Ke.place,h,g,te,Ke==null?void 0:Ke.position,_,ce]);E.useEffect(()=>{var le,he;const Se=new Set(_r);W.forEach($e=>{se!=null&&se($e)||Se.add({current:$e})});const ct=document.querySelector(`[id='${s}']`);ct&&!(se!=null&&se(ct))&&Se.add({current:ct});const Ut=()=>{qe(!1)},zn=gv(I),wn=gv(Ie.current);pt.scroll&&(window.addEventListener("scroll",Ut),zn==null||zn.addEventListener("scroll",Ut),wn==null||wn.addEventListener("scroll",Ut));let wt=null;pt.resize?window.addEventListener("resize",Ut):I&&Ie.current&&(wt=e8(I,Ie.current,De,{ancestorResize:!0,elementResize:!0,layoutShift:!0}));const Xt=$e=>{$e.key==="Escape"&&qe(!1)};pt.escape&&window.addEventListener("keydown",Xt),pt.clickOutsideAnchor&&window.addEventListener("click",Hi);const Ve=[],Sn=$e=>!!($e!=null&&$e.target&&(I!=null&&I.contains($e.target))),Qi=$e=>{Dt&&Sn($e)||ii($e)},li=$e=>{Dt&&Sn($e)&&Or()},St=["mouseover","mouseout","mouseenter","mouseleave","focus","blur"],ja=["click","dblclick","mousedown","mouseup"];Object.entries(Yt).forEach(([$e,Ln])=>{Ln&&(St.includes($e)?Ve.push({event:$e,listener:Kt}):ja.includes($e)&&Ve.push({event:$e,listener:Qi}))}),Object.entries(ht).forEach(([$e,Ln])=>{Ln&&(St.includes($e)?Ve.push({event:$e,listener:be}):ja.includes($e)&&Ve.push({event:$e,listener:li}))}),_&&Ve.push({event:"pointermove",listener:Mn});const Da=()=>{$.current=!0},ur=()=>{$.current=!1,Or()},Rr=O&&(ht.mouseout||ht.mouseleave);return Rr&&((le=Ie.current)===null||le===void 0||le.addEventListener("mouseover",Da),(he=Ie.current)===null||he===void 0||he.addEventListener("mouseout",ur)),Ve.forEach(({event:$e,listener:Ln})=>{Se.forEach(wl=>{var Pi;(Pi=wl.current)===null||Pi===void 0||Pi.addEventListener($e,Ln)})}),()=>{var $e,Ln;pt.scroll&&(window.removeEventListener("scroll",Ut),zn==null||zn.removeEventListener("scroll",Ut),wn==null||wn.removeEventListener("scroll",Ut)),pt.resize?window.removeEventListener("resize",Ut):wt==null||wt(),pt.clickOutsideAnchor&&window.removeEventListener("click",Hi),pt.escape&&window.removeEventListener("keydown",Xt),Rr&&(($e=Ie.current)===null||$e===void 0||$e.removeEventListener("mouseover",Da),(Ln=Ie.current)===null||Ln===void 0||Ln.removeEventListener("mouseout",ur)),Ve.forEach(({event:wl,listener:Pi})=>{Se.forEach(Sl=>{var ai;(ai=Sl.current)===null||ai===void 0||ai.removeEventListener(wl,Pi)})})}},[I,De,Zn,_r,W,Y,ee,ie,Ue,w,T]),E.useEffect(()=>{var le,he;let Se=(he=(le=Ke==null?void 0:Ke.anchorSelect)!==null&&le!==void 0?le:c)!==null&&he!==void 0?he:"";!Se&&n&&(Se=`[data-tooltip-id='${n.replace(/'/g,"\\'")}']`);const ct=new MutationObserver(Ut=>{const zn=[],wn=[];Ut.forEach(wt=>{if(wt.type==="attributes"&&wt.attributeName==="data-tooltip-id"&&(wt.target.getAttribute("data-tooltip-id")===n?zn.push(wt.target):wt.oldValue===n&&wn.push(wt.target)),wt.type==="childList"){if(I){const Xt=[...wt.removedNodes].filter(Ve=>Ve.nodeType===1);if(Se)try{wn.push(...Xt.filter(Ve=>Ve.matches(Se))),wn.push(...Xt.flatMap(Ve=>[...Ve.querySelectorAll(Se)]))}catch{}Xt.some(Ve=>{var Sn;return!!(!((Sn=Ve==null?void 0:Ve.contains)===null||Sn===void 0)&&Sn.call(Ve,I))&&(xn(!1),qe(!1),oe(null),$n(bt),$n(un),!0)})}if(Se)try{const Xt=[...wt.addedNodes].filter(Ve=>Ve.nodeType===1);zn.push(...Xt.filter(Ve=>Ve.matches(Se))),zn.push(...Xt.flatMap(Ve=>[...Ve.querySelectorAll(Se)]))}catch{}}}),(zn.length||wn.length)&&me(wt=>[...wt.filter(Xt=>!wn.includes(Xt)),...zn])});return ct.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-tooltip-id"],attributeOldValue:!0}),()=>{ct.disconnect()}},[n,c,Ke==null?void 0:Ke.anchorSelect,I]),E.useEffect(()=>{De()},[De]),E.useEffect(()=>{if(!(X!=null&&X.current))return()=>null;const le=new ResizeObserver(()=>{setTimeout(()=>De())});return le.observe(X.current),()=>{le.disconnect()}},[B,X==null?void 0:X.current]),E.useEffect(()=>{var le;const he=document.querySelector(`[id='${s}']`),Se=[...W,he];I&&Se.includes(I)||oe((le=W[0])!==null&&le!==void 0?le:he)},[s,W,I]),E.useEffect(()=>(pe&&qe(!0),()=>{$n(bt),$n(un)}),[]),E.useEffect(()=>{var le;let he=(le=Ke==null?void 0:Ke.anchorSelect)!==null&&le!==void 0?le:c;if(!he&&n&&(he=`[data-tooltip-id='${n.replace(/'/g,"\\'")}']`),he)try{const Se=Array.from(document.querySelectorAll(he));me(Se)}catch{me([])}},[n,c,Ke==null?void 0:Ke.anchorSelect]),E.useEffect(()=>{bt.current&&($n(bt),zt(w))},[w]);const ln=(Oe=Ke==null?void 0:Ke.content)!==null&&Oe!==void 0?Oe:B,Gt=Dt&&Object.keys(cn.tooltipStyles).length>0;return E.useImperativeHandle(e,()=>({open:le=>{if(le!=null&&le.anchorSelect)try{document.querySelector(le.anchorSelect)}catch{return void console.warn(`[react-tooltip] "${le.anchorSelect}" is not a valid CSS selector`)}Dn(le??null),le!=null&&le.delay?zt(le.delay):qe(!0)},close:le=>{le!=null&&le.delay?Lt(le.delay):qe(!1)},activeAnchor:I,place:cn.place,isOpen:!!(Zn&&!A&&ln&&Gt)})),Zn&&!A&&ln?tt.createElement(b,{id:n,role:st,className:Gh("react-tooltip",sa.tooltip,dh.tooltip,dh[o],i,`react-tooltip__place-${cn.place}`,sa[Gt?"show":"closing"],Gt?"react-tooltip__show":"react-tooltip__closing",g==="fixed"&&sa.fixed,O&&sa.clickable),onTransitionEnd:le=>{$n(Xn),Dt||le.propertyName!=="opacity"||(xn(!1),Dn(null),J==null||J())},style:{...ae,...cn.tooltipStyles,opacity:fe!==void 0&&Gt?fe:void 0},ref:Ie},ln,tt.createElement(b,{className:Gh("react-tooltip-arrow",sa.arrow,dh.arrow,l,N&&sa.noArrow),style:{...cn.tooltipArrowStyles,background:ke?`linear-gradient(to right bottom, transparent 50%, ${ke} 50%)`:void 0,"--rt-arrow-size":`${ce}px`},ref:Ft})):null},m8=({content:e})=>tt.createElement("span",{dangerouslySetInnerHTML:{__html:e}}),dw=tt.forwardRef(({id:e,anchorId:n,anchorSelect:i,content:l,html:o,render:s,className:c,classNameArrow:f,variant:h="dark",place:d="top",offset:y=10,wrapper:g="div",children:x=null,events:b=["hover"],openOnClick:w=!1,positionStrategy:T="absolute",middlewares:_,delayShow:A=0,delayHide:N=0,float:O=!1,hidden:z=!1,noArrow:q=!1,clickable:M=!1,closeOnEsc:Y=!1,closeOnScroll:ee=!1,closeOnResize:ie=!1,openEvents:L,closeEvents:ae,globalCloseEvents:te,imperativeModeOnly:ue=!1,style:J,position:se,isOpen:B,defaultIsOpen:X=!1,disableStyleInjection:ne=!1,border:pe,opacity:C,arrowColor:I,arrowSize:oe,setIsOpen:R,afterShow:fe,afterHide:ke,disableTooltip:ce,role:st="tooltip"},Oe)=>{const[Ie,Ft]=E.useState(l),[bt,un]=E.useState(o),[Xn,cn]=E.useState(d),[ni,Dt]=E.useState(h),[Mt,Zn]=E.useState(y),[xn,Ke]=E.useState(A),[Dn,Ar]=E.useState(N),[or,_r]=E.useState(O),[ri,$]=E.useState(z),[W,me]=E.useState(g),[ye,Ue]=E.useState(b),[Qt,Yt]=E.useState(T),[ht,pt]=E.useState(null),[qe,ut]=E.useState(null),zt=E.useRef(ne),{anchorRefs:Lt,activeAnchor:ii}=fw(e),Or=xt=>xt==null?void 0:xt.getAttributeNames().reduce((Kt,be)=>{var De;return be.startsWith("data-tooltip-")&&(Kt[be.replace(/^data-tooltip-/,"")]=(De=xt==null?void 0:xt.getAttribute(be))!==null&&De!==void 0?De:null),Kt},{}),sr=xt=>{const Kt={place:be=>{var De;cn((De=be)!==null&&De!==void 0?De:d)},content:be=>{Ft(be??l)},html:be=>{un(be??o)},variant:be=>{var De;Dt((De=be)!==null&&De!==void 0?De:h)},offset:be=>{Zn(be===null?y:Number(be))},wrapper:be=>{var De;me((De=be)!==null&&De!==void 0?De:g)},events:be=>{const De=be==null?void 0:be.split(" ");Ue(De??b)},"position-strategy":be=>{var De;Yt((De=be)!==null&&De!==void 0?De:T)},"delay-show":be=>{Ke(be===null?A:Number(be))},"delay-hide":be=>{Ar(be===null?N:Number(be))},float:be=>{_r(be===null?O:be==="true")},hidden:be=>{$(be===null?z:be==="true")},"class-name":be=>{pt(be)}};Object.values(Kt).forEach(be=>be(null)),Object.entries(xt).forEach(([be,De])=>{var ln;(ln=Kt[be])===null||ln===void 0||ln.call(Kt,De)})};E.useEffect(()=>{Ft(l)},[l]),E.useEffect(()=>{un(o)},[o]),E.useEffect(()=>{cn(d)},[d]),E.useEffect(()=>{Dt(h)},[h]),E.useEffect(()=>{Zn(y)},[y]),E.useEffect(()=>{Ke(A)},[A]),E.useEffect(()=>{Ar(N)},[N]),E.useEffect(()=>{_r(O)},[O]),E.useEffect(()=>{$(z)},[z]),E.useEffect(()=>{Yt(T)},[T]),E.useEffect(()=>{zt.current!==ne&&console.warn("[react-tooltip] Do not change `disableStyleInjection` dynamically.")},[ne]),E.useEffect(()=>{typeof window<"u"&&window.dispatchEvent(new CustomEvent("react-tooltip-inject-styles",{detail:{disableCore:ne==="core",disableBase:ne}}))},[]),E.useEffect(()=>{var xt;const Kt=new Set(Lt);let be=i;if(!be&&e&&(be=`[data-tooltip-id='${e.replace(/'/g,"\\'")}']`),be)try{document.querySelectorAll(be).forEach(he=>{Kt.add({current:he})})}catch{console.warn(`[react-tooltip] "${be}" is not a valid CSS selector`)}const De=document.querySelector(`[id='${n}']`);if(De&&Kt.add({current:De}),!Kt.size)return()=>null;const ln=(xt=qe??De)!==null&&xt!==void 0?xt:ii.current,Gt=new MutationObserver(he=>{he.forEach(Se=>{var ct;if(!ln||Se.type!=="attributes"||!(!((ct=Se.attributeName)===null||ct===void 0)&&ct.startsWith("data-tooltip-")))return;const Ut=Or(ln);sr(Ut)})}),le={attributes:!0,childList:!1,subtree:!1};if(ln){const he=Or(ln);sr(he),Gt.observe(ln,le)}return()=>{Gt.disconnect()}},[Lt,ii,qe,n,i]),E.useEffect(()=>{J!=null&&J.border&&console.warn("[react-tooltip] Do not set `style.border`. Use `border` prop instead."),pe&&!pv("border",`${pe}`)&&console.warn(`[react-tooltip] "${pe}" is not a valid \`border\`.`),J!=null&&J.opacity&&console.warn("[react-tooltip] Do not set `style.opacity`. Use `opacity` prop instead."),C&&!pv("opacity",`${C}`)&&console.warn(`[react-tooltip] "${C}" is not a valid \`opacity\`.`)},[]);let Mn=x;const Hi=E.useRef(null);if(s){const xt=s({content:(qe==null?void 0:qe.getAttribute("data-tooltip-content"))||Ie||null,activeAnchor:qe});Mn=xt?tt.createElement("div",{ref:Hi,className:"react-tooltip-content-wrapper"},xt):null}else Ie&&(Mn=Ie);bt&&(Mn=tt.createElement(m8,{content:bt}));const Fi={forwardRef:Oe,id:e,anchorId:n,anchorSelect:i,className:Gh(c,ht),classNameArrow:f,content:Mn,contentWrapperRef:Hi,place:Xn,variant:ni,offset:Mt,wrapper:W,events:ye,openOnClick:w,positionStrategy:Qt,middlewares:_,delayShow:xn,delayHide:Dn,float:or,hidden:ri,noArrow:q,clickable:M,closeOnEsc:Y,closeOnScroll:ee,closeOnResize:ie,openEvents:L,closeEvents:ae,globalCloseEvents:te,imperativeModeOnly:ue,style:J,position:se,isOpen:B,defaultIsOpen:X,border:pe,opacity:C,arrowColor:I,arrowSize:oe,setIsOpen:R,afterShow:fe,afterHide:ke,disableTooltip:ce,activeAnchor:qe,setActiveAnchor:xt=>ut(xt),role:st};return tt.createElement(p8,{...Fi})});typeof window<"u"&&window.addEventListener("react-tooltip-inject-styles",e=>{e.detail.disableCore||dv({css:":root{--rt-color-white:#fff;--rt-color-dark:#222;--rt-color-success:#8dc572;--rt-color-error:#be6464;--rt-color-warning:#f0ad4e;--rt-color-info:#337ab7;--rt-opacity:0.9;--rt-transition-show-delay:0.15s;--rt-transition-closing-delay:0.15s;--rt-arrow-size:8px}.core-styles-module_tooltip__3vRRp{position:absolute;top:0;left:0;pointer-events:none;opacity:0;will-change:opacity}.core-styles-module_fixed__pcSol{position:fixed}.core-styles-module_arrow__cvMwQ{position:absolute;background:inherit;z-index:-1}.core-styles-module_noArrow__xock6{display:none}.core-styles-module_clickable__ZuTTB{pointer-events:auto}.core-styles-module_show__Nt9eE{opacity:var(--rt-opacity);transition:opacity var(--rt-transition-show-delay)ease-out}.core-styles-module_closing__sGnxF{opacity:0;transition:opacity var(--rt-transition-closing-delay)ease-in}",type:"core"}),e.detail.disableBase||dv({css:`
291
291
  .styles-module_tooltip__mnnfp{padding:8px 16px;border-radius:3px;font-size:90%;width:max-content}.styles-module_arrow__K0L3T{width:var(--rt-arrow-size);height:var(--rt-arrow-size)}[class*='react-tooltip__place-top']>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*='react-tooltip__place-right']>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*='react-tooltip__place-bottom']>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*='react-tooltip__place-left']>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}`,type:"base"})});const y8=e=>{if(!e)return;const n=Ot.getQueryData([Di]);if(!n)return;const i=Ot.getQueryData([Jr,n.currentTeam.id]);return i==null?void 0:i.find(l=>l.id===e)},g8=({content:e,activeAnchor:n})=>{if(!n)return null;const i=n.getAttribute("data-tab-id"),l=mc.get().find(c=>c.id===i),o=y8(l==null?void 0:l.options.dataSourceId);if(!l)return e;const s=()=>{xl("New tab name",l.label).then(c=>{c&&Nb(l.id,c)})};return v.jsxs("div",{children:[v.jsxs("button",{className:gr.tooltipLabel,onClick:s,children:[v.jsxs("div",{className:"max-w-full",children:[v.jsx("p",{className:"text-xs",children:"label"}),v.jsx("p",{className:"truncate font-semibold",children:l.label})]}),v.jsx("span",{children:"✏️"})]}),v.jsxs("div",{className:gr.tooltipInfoEntry,children:[v.jsx("p",{className:"text-sm",children:"table"}),v.jsx("p",{className:"truncate font-semibold",children:l.options.table})]}),o&&v.jsxs("div",{className:gr.tooltipInfoEntry,children:[v.jsxs("p",{className:"text-sm",children:["data source [",o.dbType,"]"]}),v.jsx("p",{className:"truncate font-semibold",children:o.name})]}),l.options.joins.length>0&&v.jsxs("div",{className:gr.tooltipInfoEntry,children:[v.jsx("p",{className:"text-sm",children:"joins"}),v.jsx("p",{className:"font-semibold",children:l.options.joins.map(c=>c.table).join(", ")})]}),l.options.filters.length>0&&v.jsxs("div",{className:gr.tooltipInfoEntry,children:[v.jsx("p",{className:"text-sm",children:"filters"}),l.options.filters.map(c=>v.jsx("p",{className:"truncate font-semibold",children:q6(c)}))]})]})},v8=()=>{const e=vk(),n=hc(),i=E.useMemo(()=>{if(!n)return;const f=n.find(h=>h.id===e);return f||n[0]},[e,n]),l=f=>Oh(f),o=f=>{f.button===1&&Oh(f.currentTarget.dataset.tabId)},s=f=>{const h=n.find(d=>d.id===f);xl("New tab name",h==null?void 0:h.label).then(d=>{d&&Nb(f,d)})},c=E.useCallback(f=>{pc(h=>h.map(d=>d.id!==i.id?d:{...d,options:f(d.options)}))},[i]);return n.length<1?v.jsx(vC,{to:"/"}):v.jsxs("div",{className:"h-screen max-h-screen bg-gray-50 flex flex-col",children:[v.jsx(dw,{id:"tab",render:g8,className:"z-10 shadow-md",offset:0,noArrow:!0,opacity:1,variant:"light",clickable:!0,delayShow:500}),v.jsx("div",{className:gr.tabs,children:n==null?void 0:n.map(f=>v.jsxs("div",{className:Be(gr.tab,f.id===(i==null?void 0:i.id)&&gr.active),"data-tab-id":f.id,"data-tooltip-id":"tab","data-tooltip-content":f.label,onAuxClick:o,onContextMenu:h=>{h.preventDefault(),s(f.id)},children:[v.jsxs("button",{className:"cursor-pointer truncate w-full",onClick:()=>cp(f.id),children:["📄 ",f.label]}),v.jsx("button",{className:gr.closeButton,onClick:()=>l(f.id),children:v.jsx(Bi,{width:20,height:20})}),f.id===(i==null?void 0:i.id)&&v.jsx("span",{className:gr.activeTab})]},f.id))}),i&&v.jsx(Wx,{updater:c,options:i.options,name:i.label})]})},b8=()=>{const e=y5(),n=E.useCallback(i=>{Up(l=>l?{...l,options:i(l.options)}:(Zr.error("Something went wrong."),l))},[]);return e?v.jsxs(nn,{isVisible:!0,onClose:Vh,children:[v.jsx(Gn,{onClick:Vh}),v.jsx(Wx,{className:"border border-gray-200 bg-gray-50",name:e.label,options:e.options,updater:n})]}):null},[x8,Go]=Er(void 0),w8="_root_3objn_2",S8="_down_3objn_2",C8="_chevron_3objn_2",E8="_table-name-container_3objn_2",k8="_link_3objn_2",T8="_table-name_3objn_2",A8="_ul_3objn_2",_8="_column-type_3objn_2",Yr={root:w8,down:S8,chevron:C8,tableNameContainer:E8,link:k8,tableName:T8,ul:A8,columnType:_8},O8=new Intl.DateTimeFormat("en",{dateStyle:"full",timeStyle:"long"});function R8(e,n){if(n&&e.toLowerCase().includes(n))return"bg-yellow-200"}const N8=({insp:e,filter:n,expanded:i})=>{const l=E.useMemo(()=>i||n.length<1?e.columns:e.columns.filter(o=>o.name.toLowerCase().includes(n)),[e,n,i]);return v.jsx("ul",{className:Yr.ul,children:l.map(o=>v.jsxs(v.Fragment,{children:[v.jsxs("li",{children:[o.isPrimary?"🔐":"🏷️"," ",v.jsx("span",{className:R8(o.name,n),children:o.name})," ",v.jsxs("span",{className:Yr.columnType,children:["[",o.type,"]"]})]},o.name+o.type),o.ref&&v.jsxs("li",{className:"pl-4",children:["🔗 ",v.jsxs("span",{className:Yr.columnType,children:[o.ref.table,".",o.ref.field]})]},o.name+o.ref.field+o.ref.table)]}))},e.id)};function j8({id:e}){const{data:n}=Cb(e),{data:i}=Aa(e),l=zi(),{pathname:o}=vn(),s=b4(),c=Eb(),f=x4(),h=E.useMemo(()=>n!=null&&n.lastInspected?O8.format(new Date(n.lastInspected)):"--",[n]),[d,y]=E.useState({}),[g,x]=E.useState(""),b=g.toLowerCase(),w=E.useMemo(()=>{if(!b||!i)return i||[];const z=[];for(const q of i){if(q.tableName.toLowerCase().includes(b)){z.push(q);continue}q.columns.findIndex(M=>M.name.toLowerCase().includes(b))>=0&&z.push(q)}return z},[b,i]),T=z=>{y(q=>({...q,[z]:!q[z]}))},_=z=>{Vo(z,{table:z,dataSourceId:e},!0),Go(void 0),o!==_t.workbench.path&&l(_t.workbench.path),dt.event("On open table [Datasource modal]")},A=()=>{c.mutate(e),dt.event("On inspect [Datasource modal]")},N=async()=>{const z=await xl("Enter name",n==null?void 0:n.name);z&&s.mutate({id:e,dataSource:{name:z}})},O=async()=>{await sj("Are you sure you want to delete this data source?")&&(f.mutate(e),Go(void 0),dt.event("On delete [Datasource modal]"))};return v.jsxs("div",{className:Yr.root,children:[v.jsxs("h1",{className:"page-head flex gap-2 items-center",children:[n&&v.jsx(jh,{size:32,type:n.dbType}),v.jsx("span",{children:n==null?void 0:n.name})]}),v.jsx("p",{className:"mt-1 text-sm font-semibold",children:h}),v.jsxs("div",{className:"mt-2 flex gap-2",children:[v.jsx("button",{disabled:c.isLoading,onClick:A,className:"button tertiary flex items-center gap-1",children:"Refresh schema"}),v.jsx("button",{disabled:c.isLoading,onClick:N,className:"button tertiary",children:"Rename"}),v.jsx("button",{disabled:c.isLoading,onClick:O,className:"button tertiary",children:"Delete"})]}),v.jsx("input",{className:"input w-full mb-2 mt-4 bg-gray-50",placeholder:"Search table/column",value:g,onChange:z=>x(z.target.value),autoFocus:!0}),v.jsx("div",{className:"overflow-y-auto",children:w==null?void 0:w.map(z=>v.jsxs("div",{children:[v.jsxs("div",{className:Yr.tableNameContainer,children:[v.jsx("button",{className:Be(Yr.chevron,d[z.id]&&Yr.down),onClick:()=>T(z.id),children:v.jsx(Zx,{width:16,height:16})}),v.jsx("button",{className:Be(Yr.tableName,"flex-1"),onClick:()=>T(z.id),children:z.tableName}),v.jsx("button",{className:Yr.link,onClick:()=>_(z.tableName),children:"open"})]}),(d[z.id]||g.length>0)&&v.jsx(N8,{insp:z,filter:b,expanded:d[z.id]})]},z.id))})]})}const D8=()=>{const e=x8(),[n,i]=E.useState(void 0);E.useEffect(()=>{e&&i(e)},[e]);const l=()=>Go(void 0);return v.jsxs(nn,{isVisible:e!=null,onClose:l,onClosed:()=>i(void 0),backdropClose:!0,children:[v.jsx(Gn,{onClick:l}),n&&v.jsx(j8,{id:n})]})},M8="_root_l15sg_1",z8={root:M8};function L8(e,n=500){const[i,l]=E.useState(e);return E.useEffect(()=>{const o=setTimeout(()=>l(e),n);return()=>clearTimeout(o)},[e,n]),i}const U8="_search_tx9rw_2",B8="_entry_tx9rw_2",vv={search:U8,entry:B8},q8={table:"📄",query:"📖"},H8=({onTable:e,onQuery:n,autoFocus:i})=>{const[l,o]=E.useState(""),[s,c]=E.useState(-1),f=L8(l),{data:h}=Li(),{data:d}=p4(f,h==null?void 0:h.currentTeam.id),y=b=>{b.type==="table"?e(b.name,b.dataSourceId):b.type==="query"&&n(b.id,b.dataSourceId)},g=b=>{var w;d&&(b.key==="ArrowDown"?(b.preventDefault(),c(T=>(T+1)%d.length)):b.key==="ArrowUp"?(b.preventDefault(),c(T=>(T-1+d.length)%d.length)):b.key==="Enter"&&s>=0&&(w=d[s])!=null&&w.name&&(b.preventDefault(),y(d[s])))},x=b=>{const w=b.currentTarget.dataset.tableId,T=d==null?void 0:d.find(_=>_.id===w);T&&y(T)};return v.jsxs(v.Fragment,{children:[v.jsx("input",{className:vv.search,placeholder:"Search table or saved query to start from",value:l,onChange:b=>o(b.target.value),onKeyDown:g,autoFocus:i}),Yx(d==null?void 0:d.length,0)&&v.jsx("div",{className:"overflow-y-auto max-h-full mt-2",children:d.map((b,w)=>v.jsxs("button",{className:vv.entry,"data-is-active":s===w,"data-table-id":b.id,onClick:x,children:[v.jsxs("p",{className:"font-semibold",children:[q8[b.type]," ",b.name]}),v.jsxs("p",{className:"text-xs text-blue-600",children:["📦 ",b.dataSourceName]})]},b.id))})]})},F8=()=>{const e=Nk(),n=(o,s)=>{e==null||e.onConfirm("table",o,s)},i=(o,s)=>{e==null||e.onConfirm("query",o,s)},l=()=>{e==null||e.onCancel()};return v.jsxs(nn,{isVisible:!!e,onClose:l,children:[v.jsx(Gn,{onClick:l}),v.jsx("div",{className:z8.root,children:v.jsx(H8,{autoFocus:!0,onTable:n,onQuery:i})})]})},Q8=()=>{const e=vn();E.useEffect(()=>{dt.pageView()},[e.pathname])},bv=e=>{const[n]=e.split("-");return n.split(".").map(Number)},P8=(e,n)=>{const i=bv(e),l=bv(n);for(let o=0;o<3;o++){const s=i[o]||0,c=l[o]||0;if(s>c)return 1;if(s<c)return-1}return 0},I8=`### ⚠️ You are running an outdated local server version.
292
292
 
293
- Please update your local server version to **0.0.47**
293
+ Please update your local server version to **0.0.49**
294
294
 
295
295
  ### 🔧 Update Command
296
296
 
@@ -307,4 +307,4 @@ dataramen start
307
307
  \`\`\`
308
308
 
309
309
  Once done, click on the "Check again" button below or refresh the page.
310
- `,V8=()=>{const{data:e,refetch:n}=jp();return!(e!=null&&e.active)||P8(e.version,"0.0.47")===0?null:v.jsx(nn,{isVisible:!0,onClose:()=>null,children:v.jsxs("div",{children:[v.jsx(Ju,{content:I8}),v.jsx("div",{className:"flex justify-end mt-2",children:v.jsx("button",{className:"button primary",onClick:()=>n(),children:"Check again"})})]})})};function $8(){return oD(),Q8(),v.jsxs(v.Fragment,{children:[v.jsxs(xC,{children:[v.jsx(ph,{path:_t.home.path,element:v.jsx(N6,{})}),v.jsx(ph,{path:_t.workbench.path,element:v.jsx(v8,{})})]}),v.jsx(Ik,{target:Nh.settings.path,children:v.jsx(L6,{})}),v.jsx(b8,{}),v.jsx(X6,{}),v.jsx(aj,{}),v.jsx(xj,{}),v.jsx(Ej,{}),v.jsx(D8,{}),v.jsx(F8,{}),v.jsx(mj,{}),v.jsx(cj,{}),v.jsx(V8,{})]})}const Y8="_layout_1605n_2",K8="_nav_1605n_2",G8="_main_1605n_2",X8="_footer_1605n_2",nc={layout:Y8,nav:K8,main:G8,footer:X8},Z8="_container_1ri7t_2",J8="_file_1ri7t_2",W8="_menu_1ri7t_2",da={container:Z8,file:J8,menu:W8},e9=({name:e,id:n,onRename:i,onDelete:l,onOpen:o})=>{const s=Qx();return v.jsxs("button",{className:da.file,onContextMenu:s.open,onClick:()=>o(n),children:[v.jsx(Vx,{handler:s,children:v.jsxs("div",{className:"context-menu-container",children:[v.jsx("button",{onClick:()=>{s.close(),i(n)},className:"context-menu-item",children:"✏️ Rename"}),v.jsx("button",{onClick:()=>{s.close(),l(n)},className:"context-menu-item",children:"🗑️ Delete"})]})}),v.jsxs("span",{children:["📖 ",e]})]})},t9=({name:e,id:n,index:i})=>{const l=`📦 ${e}`,o=()=>{Go(n),dt.event("On open datasource [Sidebar]")};return br(i.toString(),()=>{Go(s=>{if(s!==n)return n}),dt.event("On open datasource [Hotkey]")},l),v.jsxs("button",{className:da.menu,onClick:o,children:[v.jsx("span",{children:l}),v.jsx("span",{className:"hotkey",children:i})]})},n9=()=>{const e=hc(x=>x.length>0),n=zi(),i=vn(),l=fp("Sidebar"),{data:o}=Li(),{data:s}=d4(o==null?void 0:o.currentTeam.id),c=iD(),f=x=>{Db(x).then(b=>{Vo(b.name,ma(b.opts),!0),i.pathname!==_t.workbench.path&&n(_t.workbench.path)}),dt.event("On open query [Sidebar]")},h=async x=>{const b=s==null?void 0:s.find(T=>T.id===x),w=await xl("New name?",b==null?void 0:b.name);w&&c.mutate({id:x,payload:{name:w}})},d=x=>{c.mutate({id:x,payload:{isTrash:!0}})},y=()=>{e?i.pathname!==_t.workbench.path&&n(_t.workbench.path):l(),dt.event("On open workbench [Sidebar]")};let g=1;return v.jsxs("div",{className:da.container,children:[v.jsxs("div",{className:"mb-4",children:[v.jsxs("button",{onClick:()=>n(_t.home.path),className:da.menu,children:[v.jsx("span",{children:_t.home.name}),v.jsx("span",{className:"hotkey",children:"H"})]}),v.jsxs("button",{disabled:!o,onClick:l,className:da.menu,children:[v.jsx("span",{children:"🔎 Start new query"}),v.jsx("span",{className:"hotkey",children:"N"})]}),v.jsxs("button",{disabled:!o,onClick:y,className:da.menu,children:[v.jsx("span",{children:"🛠️ Workbench"}),v.jsx("span",{className:"hotkey",children:"W"})]})]}),v.jsx("div",{className:"flex-1 overflow-y-auto",children:s==null?void 0:s.map(x=>{switch(x.type){case"query":return v.jsx(e9,{onDelete:d,onRename:h,onOpen:f,name:x.name,id:x.id},x.id);case"dataSource":return v.jsx(t9,{name:x.name,id:x.id,index:g++},x.id);default:return null}})})]})},r9=({resizeDirection:e,onSizeChange:n})=>{const i=E.useRef(null),l=E.useRef(null);return E.useEffect(()=>{var s;function o(c){const f=i.current.getBoundingClientRect(),h={x:c.pageX,y:c.pageY};function d(g){{let x;x=g.pageX-h.x,i.current.style.width=`${f.width+x}px`}n&&i.current&&n(i.current)}function y(){document.body.removeEventListener("mousemove",d),document.body.removeEventListener("mouseleave",d)}document.body.addEventListener("mousemove",d),document.body.addEventListener("mouseup",y),document.body.addEventListener("mouseleave",y)}(s=l==null?void 0:l.current)==null||s.addEventListener("mousedown",o),n&&i.current&&n(i.current)}),{elementRef:i,handleRef:l}},i9=()=>{const{open:e}=dp(),{data:n}=Li(),{elementRef:i,handleRef:l}=r9({resizeDirection:"horizontal-r"}),o=()=>{qx(!0),dt.event("Open contacts")},s=()=>{e(Nh.settings.path),dt.event("Open settings")};return v.jsxs("nav",{className:nc.nav,ref:i,children:[v.jsx("div",{ref:l,className:"hr-slide"}),v.jsx(n9,{}),v.jsxs("div",{className:nc.footer,children:[v.jsx("button",{onClick:o,children:"💬 Contacts"}),v.jsx("button",{onClick:s,disabled:!n,children:Nh.settings.name})]})]})},xv=e=>window.matchMedia(e).matches;function l9(e,{defaultValue:n=!1,initializeWithValue:i=!0}={}){const[l,o]=E.useState(()=>i?xv(e):n);return E.useLayoutEffect(()=>{const s=window.matchMedia(e);function c(){o(()=>xv(e))}return c(),s.addListener?s.addListener(c):s.addEventListener("change",c),()=>{s.removeListener?s.removeListener(c):s.removeEventListener("change",c)}},[e]),l}const a9=({children:e})=>{const n=l9("(min-width: 768px)");return v.jsxs("div",{className:nc.layout,children:[n&&v.jsx(i9,{}),v.jsx("main",{className:nc.main,children:e})]})};_2.createRoot(document.getElementById("root")).render(v.jsxs(tt.StrictMode,{children:[v.jsx(gk,{}),v.jsx(dw,{id:"default",className:"z-100"}),v.jsx(TE,{client:Ot,children:v.jsx(IC,{children:v.jsx(a9,{children:v.jsx($8,{})})})})]}));
310
+ `,V8=()=>{const{data:e,refetch:n}=jp();return!(e!=null&&e.active)||P8(e.version,"0.0.49")===0?null:v.jsx(nn,{isVisible:!0,onClose:()=>null,children:v.jsxs("div",{children:[v.jsx(Ju,{content:I8}),v.jsx("div",{className:"flex justify-end mt-2",children:v.jsx("button",{className:"button primary",onClick:()=>n(),children:"Check again"})})]})})};function $8(){return oD(),Q8(),v.jsxs(v.Fragment,{children:[v.jsxs(xC,{children:[v.jsx(ph,{path:_t.home.path,element:v.jsx(N6,{})}),v.jsx(ph,{path:_t.workbench.path,element:v.jsx(v8,{})})]}),v.jsx(Ik,{target:Nh.settings.path,children:v.jsx(L6,{})}),v.jsx(b8,{}),v.jsx(X6,{}),v.jsx(aj,{}),v.jsx(xj,{}),v.jsx(Ej,{}),v.jsx(D8,{}),v.jsx(F8,{}),v.jsx(mj,{}),v.jsx(cj,{}),v.jsx(V8,{})]})}const Y8="_layout_1605n_2",K8="_nav_1605n_2",G8="_main_1605n_2",X8="_footer_1605n_2",nc={layout:Y8,nav:K8,main:G8,footer:X8},Z8="_container_1ri7t_2",J8="_file_1ri7t_2",W8="_menu_1ri7t_2",da={container:Z8,file:J8,menu:W8},e9=({name:e,id:n,onRename:i,onDelete:l,onOpen:o})=>{const s=Qx();return v.jsxs("button",{className:da.file,onContextMenu:s.open,onClick:()=>o(n),children:[v.jsx(Vx,{handler:s,children:v.jsxs("div",{className:"context-menu-container",children:[v.jsx("button",{onClick:()=>{s.close(),i(n)},className:"context-menu-item",children:"✏️ Rename"}),v.jsx("button",{onClick:()=>{s.close(),l(n)},className:"context-menu-item",children:"🗑️ Delete"})]})}),v.jsxs("span",{children:["📖 ",e]})]})},t9=({name:e,id:n,index:i})=>{const l=`📦 ${e}`,o=()=>{Go(n),dt.event("On open datasource [Sidebar]")};return br(i.toString(),()=>{Go(s=>{if(s!==n)return n}),dt.event("On open datasource [Hotkey]")},l),v.jsxs("button",{className:da.menu,onClick:o,children:[v.jsx("span",{children:l}),v.jsx("span",{className:"hotkey",children:i})]})},n9=()=>{const e=hc(x=>x.length>0),n=zi(),i=vn(),l=fp("Sidebar"),{data:o}=Li(),{data:s}=d4(o==null?void 0:o.currentTeam.id),c=iD(),f=x=>{Db(x).then(b=>{Vo(b.name,ma(b.opts),!0),i.pathname!==_t.workbench.path&&n(_t.workbench.path)}),dt.event("On open query [Sidebar]")},h=async x=>{const b=s==null?void 0:s.find(T=>T.id===x),w=await xl("New name?",b==null?void 0:b.name);w&&c.mutate({id:x,payload:{name:w}})},d=x=>{c.mutate({id:x,payload:{isTrash:!0}})},y=()=>{e?i.pathname!==_t.workbench.path&&n(_t.workbench.path):l(),dt.event("On open workbench [Sidebar]")};let g=1;return v.jsxs("div",{className:da.container,children:[v.jsxs("div",{className:"mb-4",children:[v.jsxs("button",{onClick:()=>n(_t.home.path),className:da.menu,children:[v.jsx("span",{children:_t.home.name}),v.jsx("span",{className:"hotkey",children:"H"})]}),v.jsxs("button",{disabled:!o,onClick:l,className:da.menu,children:[v.jsx("span",{children:"🔎 Start new query"}),v.jsx("span",{className:"hotkey",children:"N"})]}),v.jsxs("button",{disabled:!o,onClick:y,className:da.menu,children:[v.jsx("span",{children:"🛠️ Workbench"}),v.jsx("span",{className:"hotkey",children:"W"})]})]}),v.jsx("div",{className:"flex-1 overflow-y-auto",children:s==null?void 0:s.map(x=>{switch(x.type){case"query":return v.jsx(e9,{onDelete:d,onRename:h,onOpen:f,name:x.name,id:x.id},x.id);case"dataSource":return v.jsx(t9,{name:x.name,id:x.id,index:g++},x.id);default:return null}})})]})},r9=({resizeDirection:e,onSizeChange:n})=>{const i=E.useRef(null),l=E.useRef(null);return E.useEffect(()=>{var s;function o(c){const f=i.current.getBoundingClientRect(),h={x:c.pageX,y:c.pageY};function d(g){{let x;x=g.pageX-h.x,i.current.style.width=`${f.width+x}px`}n&&i.current&&n(i.current)}function y(){document.body.removeEventListener("mousemove",d),document.body.removeEventListener("mouseleave",d)}document.body.addEventListener("mousemove",d),document.body.addEventListener("mouseup",y),document.body.addEventListener("mouseleave",y)}(s=l==null?void 0:l.current)==null||s.addEventListener("mousedown",o),n&&i.current&&n(i.current)}),{elementRef:i,handleRef:l}},i9=()=>{const{open:e}=dp(),{data:n}=Li(),{elementRef:i,handleRef:l}=r9({resizeDirection:"horizontal-r"}),o=()=>{qx(!0),dt.event("Open contacts")},s=()=>{e(Nh.settings.path),dt.event("Open settings")};return v.jsxs("nav",{className:nc.nav,ref:i,children:[v.jsx("div",{ref:l,className:"hr-slide"}),v.jsx(n9,{}),v.jsxs("div",{className:nc.footer,children:[v.jsx("button",{onClick:o,children:"💬 Contacts"}),v.jsx("button",{onClick:s,disabled:!n,children:Nh.settings.name})]})]})},xv=e=>window.matchMedia(e).matches;function l9(e,{defaultValue:n=!1,initializeWithValue:i=!0}={}){const[l,o]=E.useState(()=>i?xv(e):n);return E.useLayoutEffect(()=>{const s=window.matchMedia(e);function c(){o(()=>xv(e))}return c(),s.addListener?s.addListener(c):s.addEventListener("change",c),()=>{s.removeListener?s.removeListener(c):s.removeEventListener("change",c)}},[e]),l}const a9=({children:e})=>{const n=l9("(min-width: 768px)");return v.jsxs("div",{className:nc.layout,children:[n&&v.jsx(i9,{}),v.jsx("main",{className:nc.main,children:e})]})};_2.createRoot(document.getElementById("root")).render(v.jsxs(tt.StrictMode,{children:[v.jsx(gk,{}),v.jsx(dw,{id:"default",className:"z-100"}),v.jsx(TE,{client:Ot,children:v.jsx(IC,{children:v.jsx(a9,{children:v.jsx($8,{})})})})]}));