@dataramen/cli 0.0.24 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/code/proxy.js
CHANGED
|
@@ -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},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=`
|
|
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
|
|
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
|
|
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:
|
|
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}'`),
|
|
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([
|
|
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 O of d.columns)f.push({column:O.name,table:d.tableName||"",full:`${d.tableName}.${O.name}`,type:O.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(O=>qe.includes(O.type)&&k.includes(O.full));if(d.length>0){let O=d.map(tt=>`LOWER(${tt.full}) LIKE '%${I.toLowerCase()}%'`);h.addWhereRaw(`(${O.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=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();
|
|
@@ -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.
|
|
293
|
+
Please update your local server version to **0.0.48**
|
|
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.
|
|
310
|
+
`,V8=()=>{const{data:e,refetch:n}=jp();return!(e!=null&&e.active)||P8(e.version,"0.0.48")===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,{})})})})]}));
|
package/dist/code/web/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<meta name="description" content="Designed for speed, DataRamen makes navigating MySQL and PostgreSQL data effortless with a clean, high-performance interface." />
|
|
9
9
|
<script defer data-domain="dataramen.xyz" src="https://plausible.io/js/script.hash.local.pageview-props.tagged-events.js"></script>
|
|
10
10
|
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-DCPl6DZe.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-DqfnnDma.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@dataramen/local-server","version":"0.0.
|
|
1
|
+
{"name":"@dataramen/local-server","version":"0.0.48","license":"MIT","main":"code/proxy.js","dependencies":{"@fastify/cors":"^11.0.1","@fastify/static":"^8.2.0","dotenv":"^16.5.0","fast-glob":"^3.3.3","fastify":"^5.3.2","mysql2":"^3.14.1","pg":"^8.15.6","sqlite3":"^5.1.7","typeorm":"^0.3.23"},"devDependencies":{"fs-extra":"^11.3.0","open":"^10.2.0","yargs":"^18.0.0","yocto-spinner":"^1.0.0"}}
|