datapeek 0.1.15 → 0.1.16
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/cli/chunk-ACJCJE4M.js +728 -0
- package/dist/cli/chunk-B5ENJPHN.js +726 -0
- package/dist/cli/chunk-D6TUHXVK.js +726 -0
- package/dist/cli/chunk-Q3ZM5P6B.js +713 -0
- package/dist/cli/chunk-TYOF4OPP.js +725 -0
- package/dist/cli/db-2XNNFT6D.js +36 -0
- package/dist/cli/db-DF2EYIGH.js +36 -0
- package/dist/cli/db-ETWHJA2O.js +36 -0
- package/dist/cli/db-J26NBD6Q.js +34 -0
- package/dist/cli/db-PQSXQQER.js +36 -0
- package/dist/cli/dev.js +30 -10
- package/dist/cli/index.js +30 -10
- package/dist/client/assets/index-Bc0Vjyhl.js +390 -0
- package/dist/client/assets/index-DEccnksW.css +1 -0
- package/dist/client/index.html +2 -2
- package/dist/server/chunk-AMDULVT7.js +723 -0
- package/dist/server/chunk-MS2MQHXD.js +723 -0
- package/dist/server/chunk-N6J45PJ6.js +710 -0
- package/dist/server/chunk-U3PBIJYP.js +725 -0
- package/dist/server/chunk-ZMTC5GW4.js +722 -0
- package/dist/server/db-737AZNBF.js +34 -0
- package/dist/server/db-AASKOPPI.js +32 -0
- package/dist/server/db-ELL5GJQG.js +34 -0
- package/dist/server/db-GM7OCOES.js +34 -0
- package/dist/server/db-ZEV3LCJM.js +34 -0
- package/dist/server/dev.js +30 -10
- package/dist/server/index.js +30 -10
- package/package.json +1 -1
- package/dist/client/assets/index-C0Gnjc5g.css +0 -1
- package/dist/client/assets/index-CPRX2vzW.js +0 -390
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connect,
|
|
3
|
+
detectDbType,
|
|
4
|
+
disconnect,
|
|
5
|
+
executeQuery,
|
|
6
|
+
executeQueryMultiple,
|
|
7
|
+
getConnection,
|
|
8
|
+
getConnectionConfig,
|
|
9
|
+
getDbType,
|
|
10
|
+
getDialect,
|
|
11
|
+
parseConnectionString,
|
|
12
|
+
setDbType,
|
|
13
|
+
testConnection
|
|
14
|
+
} from "./chunk-U3PBIJYP.js";
|
|
15
|
+
import {
|
|
16
|
+
cancelQuery,
|
|
17
|
+
generateQueryId
|
|
18
|
+
} from "./chunk-3DAIYH42.js";
|
|
19
|
+
export {
|
|
20
|
+
cancelQuery,
|
|
21
|
+
connect,
|
|
22
|
+
detectDbType,
|
|
23
|
+
disconnect,
|
|
24
|
+
executeQuery,
|
|
25
|
+
executeQueryMultiple,
|
|
26
|
+
generateQueryId,
|
|
27
|
+
getConnection,
|
|
28
|
+
getConnectionConfig,
|
|
29
|
+
getDbType,
|
|
30
|
+
getDialect,
|
|
31
|
+
parseConnectionString,
|
|
32
|
+
setDbType,
|
|
33
|
+
testConnection
|
|
34
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connect,
|
|
3
|
+
detectDbType,
|
|
4
|
+
disconnect,
|
|
5
|
+
executeQuery,
|
|
6
|
+
executeQueryMultiple,
|
|
7
|
+
getConnection,
|
|
8
|
+
getDbType,
|
|
9
|
+
getDialect,
|
|
10
|
+
parseConnectionString,
|
|
11
|
+
setDbType,
|
|
12
|
+
testConnection
|
|
13
|
+
} from "./chunk-N6J45PJ6.js";
|
|
14
|
+
import {
|
|
15
|
+
cancelQuery,
|
|
16
|
+
generateQueryId
|
|
17
|
+
} from "./chunk-3DAIYH42.js";
|
|
18
|
+
export {
|
|
19
|
+
cancelQuery,
|
|
20
|
+
connect,
|
|
21
|
+
detectDbType,
|
|
22
|
+
disconnect,
|
|
23
|
+
executeQuery,
|
|
24
|
+
executeQueryMultiple,
|
|
25
|
+
generateQueryId,
|
|
26
|
+
getConnection,
|
|
27
|
+
getDbType,
|
|
28
|
+
getDialect,
|
|
29
|
+
parseConnectionString,
|
|
30
|
+
setDbType,
|
|
31
|
+
testConnection
|
|
32
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connect,
|
|
3
|
+
detectDbType,
|
|
4
|
+
disconnect,
|
|
5
|
+
executeQuery,
|
|
6
|
+
executeQueryMultiple,
|
|
7
|
+
getConnection,
|
|
8
|
+
getConnectionConfig,
|
|
9
|
+
getDbType,
|
|
10
|
+
getDialect,
|
|
11
|
+
parseConnectionString,
|
|
12
|
+
setDbType,
|
|
13
|
+
testConnection
|
|
14
|
+
} from "./chunk-AMDULVT7.js";
|
|
15
|
+
import {
|
|
16
|
+
cancelQuery,
|
|
17
|
+
generateQueryId
|
|
18
|
+
} from "./chunk-3DAIYH42.js";
|
|
19
|
+
export {
|
|
20
|
+
cancelQuery,
|
|
21
|
+
connect,
|
|
22
|
+
detectDbType,
|
|
23
|
+
disconnect,
|
|
24
|
+
executeQuery,
|
|
25
|
+
executeQueryMultiple,
|
|
26
|
+
generateQueryId,
|
|
27
|
+
getConnection,
|
|
28
|
+
getConnectionConfig,
|
|
29
|
+
getDbType,
|
|
30
|
+
getDialect,
|
|
31
|
+
parseConnectionString,
|
|
32
|
+
setDbType,
|
|
33
|
+
testConnection
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connect,
|
|
3
|
+
detectDbType,
|
|
4
|
+
disconnect,
|
|
5
|
+
executeQuery,
|
|
6
|
+
executeQueryMultiple,
|
|
7
|
+
getConnection,
|
|
8
|
+
getConnectionConfig,
|
|
9
|
+
getDbType,
|
|
10
|
+
getDialect,
|
|
11
|
+
parseConnectionString,
|
|
12
|
+
setDbType,
|
|
13
|
+
testConnection
|
|
14
|
+
} from "./chunk-ZMTC5GW4.js";
|
|
15
|
+
import {
|
|
16
|
+
cancelQuery,
|
|
17
|
+
generateQueryId
|
|
18
|
+
} from "./chunk-3DAIYH42.js";
|
|
19
|
+
export {
|
|
20
|
+
cancelQuery,
|
|
21
|
+
connect,
|
|
22
|
+
detectDbType,
|
|
23
|
+
disconnect,
|
|
24
|
+
executeQuery,
|
|
25
|
+
executeQueryMultiple,
|
|
26
|
+
generateQueryId,
|
|
27
|
+
getConnection,
|
|
28
|
+
getConnectionConfig,
|
|
29
|
+
getDbType,
|
|
30
|
+
getDialect,
|
|
31
|
+
parseConnectionString,
|
|
32
|
+
setDbType,
|
|
33
|
+
testConnection
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connect,
|
|
3
|
+
detectDbType,
|
|
4
|
+
disconnect,
|
|
5
|
+
executeQuery,
|
|
6
|
+
executeQueryMultiple,
|
|
7
|
+
getConnection,
|
|
8
|
+
getConnectionConfig,
|
|
9
|
+
getDbType,
|
|
10
|
+
getDialect,
|
|
11
|
+
parseConnectionString,
|
|
12
|
+
setDbType,
|
|
13
|
+
testConnection
|
|
14
|
+
} from "./chunk-MS2MQHXD.js";
|
|
15
|
+
import {
|
|
16
|
+
cancelQuery,
|
|
17
|
+
generateQueryId
|
|
18
|
+
} from "./chunk-3DAIYH42.js";
|
|
19
|
+
export {
|
|
20
|
+
cancelQuery,
|
|
21
|
+
connect,
|
|
22
|
+
detectDbType,
|
|
23
|
+
disconnect,
|
|
24
|
+
executeQuery,
|
|
25
|
+
executeQueryMultiple,
|
|
26
|
+
generateQueryId,
|
|
27
|
+
getConnection,
|
|
28
|
+
getConnectionConfig,
|
|
29
|
+
getDbType,
|
|
30
|
+
getDialect,
|
|
31
|
+
parseConnectionString,
|
|
32
|
+
setDbType,
|
|
33
|
+
testConnection
|
|
34
|
+
};
|
package/dist/server/dev.js
CHANGED
|
@@ -4,11 +4,13 @@ import {
|
|
|
4
4
|
executeQuery,
|
|
5
5
|
executeQueryMultiple,
|
|
6
6
|
getConnection,
|
|
7
|
+
getConnectionConfig,
|
|
7
8
|
getDbType,
|
|
8
9
|
getDialect,
|
|
10
|
+
parseConnectionString,
|
|
9
11
|
setDbType,
|
|
10
12
|
testConnection
|
|
11
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AMDULVT7.js";
|
|
12
14
|
import {
|
|
13
15
|
cancelQuery,
|
|
14
16
|
generateQueryId
|
|
@@ -119,7 +121,25 @@ connectionRoutes.get("/status", async (req, res) => {
|
|
|
119
121
|
const dialect = getDialect();
|
|
120
122
|
const result = await executeQuery(dialect.currentDbQuery());
|
|
121
123
|
const databaseName = result[0]?.databaseName || null;
|
|
122
|
-
|
|
124
|
+
let connConfig = getConnectionConfig();
|
|
125
|
+
if (!connConfig && databaseName) {
|
|
126
|
+
const connString = getProvidedConnectionString();
|
|
127
|
+
if (connString) {
|
|
128
|
+
try {
|
|
129
|
+
const parsed = parseConnectionString(connString);
|
|
130
|
+
if (parsed.server && parsed.database && parsed.database.toLowerCase() === databaseName.toLowerCase()) {
|
|
131
|
+
const dbType = connString.trim().startsWith("postgresql://") || connString.trim().startsWith("postgres://") ? "postgres" : "mssql";
|
|
132
|
+
connConfig = { server: parsed.server, database: parsed.database, dbType };
|
|
133
|
+
}
|
|
134
|
+
} catch {
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
res.json({
|
|
139
|
+
connected: true,
|
|
140
|
+
databaseName,
|
|
141
|
+
...connConfig && { server: connConfig.server, database: connConfig.database, dbType: connConfig.dbType }
|
|
142
|
+
});
|
|
123
143
|
} catch (error) {
|
|
124
144
|
const errorMessage = error.message || "";
|
|
125
145
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
@@ -168,7 +188,7 @@ tableRoutes.get("/", async (req, res) => {
|
|
|
168
188
|
console.error("Error fetching tables:", error);
|
|
169
189
|
const errorMessage = error.message || "";
|
|
170
190
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
171
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
191
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
172
192
|
await disconnect2();
|
|
173
193
|
}
|
|
174
194
|
const errorDetails = error.originalError?.message || error.originalError?.info?.message || error.message || "Failed to fetch tables";
|
|
@@ -244,7 +264,7 @@ tableRoutes.get("/:schema/:table", async (req, res) => {
|
|
|
244
264
|
} catch (error) {
|
|
245
265
|
const errorMessage = error.message || "";
|
|
246
266
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
247
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
267
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
248
268
|
await disconnect2();
|
|
249
269
|
}
|
|
250
270
|
res.status(500).json({ error: error.message || "Failed to fetch table structure" });
|
|
@@ -800,7 +820,7 @@ ${limitOffsetClause}`;
|
|
|
800
820
|
console.error("Error fetching table data:", error);
|
|
801
821
|
const errorMessage = error.message || "";
|
|
802
822
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
803
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
823
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
804
824
|
await disconnect2();
|
|
805
825
|
}
|
|
806
826
|
const isTimeout = error.code === "ETIMEOUT" || error.code === "ESOCKET" || error.message?.includes("timeout") || error.message?.includes("ETIMEDOUT") || error.originalError?.code === "ETIMEOUT" || error.originalError?.code === "ESOCKET";
|
|
@@ -901,7 +921,7 @@ tableRoutes.post("/:schema/:table/related-data", async (req, res) => {
|
|
|
901
921
|
console.error("Error fetching related data:", error);
|
|
902
922
|
const errorMessage = error.message || "";
|
|
903
923
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
904
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
924
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
905
925
|
await disconnect2();
|
|
906
926
|
}
|
|
907
927
|
res.status(500).json({ error: error.message || "Failed to fetch related data" });
|
|
@@ -1078,7 +1098,7 @@ tableRoutes.get("/:schema/:table/distinct-values/:column", async (req, res) => {
|
|
|
1078
1098
|
console.error("Error fetching distinct values:", error);
|
|
1079
1099
|
const errorMessage = error.message || "";
|
|
1080
1100
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1081
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1101
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1082
1102
|
await disconnect2();
|
|
1083
1103
|
}
|
|
1084
1104
|
res.status(500).json({ error: error.message || "Failed to fetch distinct values" });
|
|
@@ -1144,7 +1164,7 @@ tableRoutes.get("/:schema/:table/reverse-foreign-keys", async (req, res) => {
|
|
|
1144
1164
|
console.error("Error fetching reverse foreign keys:", error);
|
|
1145
1165
|
const errorMessage = error.message || "";
|
|
1146
1166
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1147
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1167
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1148
1168
|
await disconnect2();
|
|
1149
1169
|
}
|
|
1150
1170
|
res.status(500).json({ error: error.message || "Failed to fetch reverse foreign keys" });
|
|
@@ -1203,7 +1223,7 @@ tableRoutes.post("/:schema/:table/count-related", async (req, res) => {
|
|
|
1203
1223
|
console.error("Error counting related rows:", error);
|
|
1204
1224
|
const errorMessage = error.message || "";
|
|
1205
1225
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1206
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1226
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1207
1227
|
await disconnect2();
|
|
1208
1228
|
}
|
|
1209
1229
|
res.status(500).json({ error: error.message || "Failed to count related rows" });
|
|
@@ -1241,7 +1261,7 @@ queryRoutes.post("/", async (req, res) => {
|
|
|
1241
1261
|
}
|
|
1242
1262
|
const errorMessage = error.message || "";
|
|
1243
1263
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1244
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1264
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1245
1265
|
await disconnect2();
|
|
1246
1266
|
}
|
|
1247
1267
|
res.status(500).json({
|
package/dist/server/index.js
CHANGED
|
@@ -4,11 +4,13 @@ import {
|
|
|
4
4
|
executeQuery,
|
|
5
5
|
executeQueryMultiple,
|
|
6
6
|
getConnection,
|
|
7
|
+
getConnectionConfig,
|
|
7
8
|
getDbType,
|
|
8
9
|
getDialect,
|
|
10
|
+
parseConnectionString,
|
|
9
11
|
setDbType,
|
|
10
12
|
testConnection
|
|
11
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AMDULVT7.js";
|
|
12
14
|
import {
|
|
13
15
|
cancelQuery,
|
|
14
16
|
generateQueryId
|
|
@@ -119,7 +121,25 @@ connectionRoutes.get("/status", async (req, res) => {
|
|
|
119
121
|
const dialect = getDialect();
|
|
120
122
|
const result = await executeQuery(dialect.currentDbQuery());
|
|
121
123
|
const databaseName = result[0]?.databaseName || null;
|
|
122
|
-
|
|
124
|
+
let connConfig = getConnectionConfig();
|
|
125
|
+
if (!connConfig && databaseName) {
|
|
126
|
+
const connString = getProvidedConnectionString();
|
|
127
|
+
if (connString) {
|
|
128
|
+
try {
|
|
129
|
+
const parsed = parseConnectionString(connString);
|
|
130
|
+
if (parsed.server && parsed.database && parsed.database.toLowerCase() === databaseName.toLowerCase()) {
|
|
131
|
+
const dbType = connString.trim().startsWith("postgresql://") || connString.trim().startsWith("postgres://") ? "postgres" : "mssql";
|
|
132
|
+
connConfig = { server: parsed.server, database: parsed.database, dbType };
|
|
133
|
+
}
|
|
134
|
+
} catch {
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
res.json({
|
|
139
|
+
connected: true,
|
|
140
|
+
databaseName,
|
|
141
|
+
...connConfig && { server: connConfig.server, database: connConfig.database, dbType: connConfig.dbType }
|
|
142
|
+
});
|
|
123
143
|
} catch (error) {
|
|
124
144
|
const errorMessage = error.message || "";
|
|
125
145
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
@@ -168,7 +188,7 @@ tableRoutes.get("/", async (req, res) => {
|
|
|
168
188
|
console.error("Error fetching tables:", error);
|
|
169
189
|
const errorMessage = error.message || "";
|
|
170
190
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
171
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
191
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
172
192
|
await disconnect2();
|
|
173
193
|
}
|
|
174
194
|
const errorDetails = error.originalError?.message || error.originalError?.info?.message || error.message || "Failed to fetch tables";
|
|
@@ -244,7 +264,7 @@ tableRoutes.get("/:schema/:table", async (req, res) => {
|
|
|
244
264
|
} catch (error) {
|
|
245
265
|
const errorMessage = error.message || "";
|
|
246
266
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
247
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
267
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
248
268
|
await disconnect2();
|
|
249
269
|
}
|
|
250
270
|
res.status(500).json({ error: error.message || "Failed to fetch table structure" });
|
|
@@ -800,7 +820,7 @@ ${limitOffsetClause}`;
|
|
|
800
820
|
console.error("Error fetching table data:", error);
|
|
801
821
|
const errorMessage = error.message || "";
|
|
802
822
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
803
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
823
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
804
824
|
await disconnect2();
|
|
805
825
|
}
|
|
806
826
|
const isTimeout = error.code === "ETIMEOUT" || error.code === "ESOCKET" || error.message?.includes("timeout") || error.message?.includes("ETIMEDOUT") || error.originalError?.code === "ETIMEOUT" || error.originalError?.code === "ESOCKET";
|
|
@@ -901,7 +921,7 @@ tableRoutes.post("/:schema/:table/related-data", async (req, res) => {
|
|
|
901
921
|
console.error("Error fetching related data:", error);
|
|
902
922
|
const errorMessage = error.message || "";
|
|
903
923
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
904
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
924
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
905
925
|
await disconnect2();
|
|
906
926
|
}
|
|
907
927
|
res.status(500).json({ error: error.message || "Failed to fetch related data" });
|
|
@@ -1078,7 +1098,7 @@ tableRoutes.get("/:schema/:table/distinct-values/:column", async (req, res) => {
|
|
|
1078
1098
|
console.error("Error fetching distinct values:", error);
|
|
1079
1099
|
const errorMessage = error.message || "";
|
|
1080
1100
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1081
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1101
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1082
1102
|
await disconnect2();
|
|
1083
1103
|
}
|
|
1084
1104
|
res.status(500).json({ error: error.message || "Failed to fetch distinct values" });
|
|
@@ -1144,7 +1164,7 @@ tableRoutes.get("/:schema/:table/reverse-foreign-keys", async (req, res) => {
|
|
|
1144
1164
|
console.error("Error fetching reverse foreign keys:", error);
|
|
1145
1165
|
const errorMessage = error.message || "";
|
|
1146
1166
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1147
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1167
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1148
1168
|
await disconnect2();
|
|
1149
1169
|
}
|
|
1150
1170
|
res.status(500).json({ error: error.message || "Failed to fetch reverse foreign keys" });
|
|
@@ -1203,7 +1223,7 @@ tableRoutes.post("/:schema/:table/count-related", async (req, res) => {
|
|
|
1203
1223
|
console.error("Error counting related rows:", error);
|
|
1204
1224
|
const errorMessage = error.message || "";
|
|
1205
1225
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1206
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1226
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1207
1227
|
await disconnect2();
|
|
1208
1228
|
}
|
|
1209
1229
|
res.status(500).json({ error: error.message || "Failed to count related rows" });
|
|
@@ -1241,7 +1261,7 @@ queryRoutes.post("/", async (req, res) => {
|
|
|
1241
1261
|
}
|
|
1242
1262
|
const errorMessage = error.message || "";
|
|
1243
1263
|
if (errorMessage.includes("Login failed") || errorMessage.includes("authentication") || errorMessage.includes("password authentication")) {
|
|
1244
|
-
const { disconnect: disconnect2 } = await import("./db-
|
|
1264
|
+
const { disconnect: disconnect2 } = await import("./db-ELL5GJQG.js");
|
|
1245
1265
|
await disconnect2();
|
|
1246
1266
|
}
|
|
1247
1267
|
res.status(500).json({
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 222.2 47.4% 11.2%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 222.2 84% 4.9%;--radius: .5rem;--chart-1: 12 76% 61%;--chart-2: 173 58% 39%;--chart-3: 197 37% 24%;--chart-4: 43 74% 66%;--chart-5: 27 87% 67%;--header-bg: 0 0% 100%;--sidebar-bg: 0 0% 100%;--content-bg: 0 0% 100%;--tabs-bg: 0 0% 100%;--grid-bg: 0 0% 100%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 210 40% 98%;--primary-foreground: 222.2 47.4% 11.2%;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 70% 55%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 212.7 26.8% 83.9%;--chart-1: 220 70% 50%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%;--header-bg: 222.2 84% 6.5%;--sidebar-bg: 222.2 84% 5.5%;--content-bg: 222.2 84% 4.9%;--tabs-bg: 222.2 84% 5.2%;--grid-bg: 222.2 84% 5%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code,pre{font-family:JetBrains Mono,Menlo,Monaco,Courier New,monospace}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.m-2{margin:.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-mb-px{margin-bottom:-1px}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[400px\]{max-height:400px}.max-h-\[95vh\]{max-height:95vh}.max-h-\[calc\(100vh-16px\)\]{max-height:calc(100vh - 16px)}.min-h-\[240px\]{min-height:240px}.w-12{width:3rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[200px\]{min-width:200px}.min-w-\[280px\]{min-width:280px}.min-w-\[600px\]{min-width:600px}.min-w-\[8rem\]{min-width:8rem}.max-w-\[220px\]{max-width:220px}.max-w-\[300px\]{max-width:300px}.max-w-\[3800px\]{max-width:3800px}.max-w-\[400px\]{max-width:400px}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-cell{cursor:cell}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr_150px\]{grid-template-columns:1fr 150px}.grid-cols-\[1fr_200px\]{grid-template-columns:1fr 200px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-border{border-color:hsl(var(--border))}.border-border\/40{border-color:hsl(var(--border) / .4)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.bg-accent{background-color:hsl(var(--accent))}.bg-background{background-color:hsl(var(--background))}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-black\/50{background-color:#00000080}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-content-bg{background-color:hsl(var(--content-bg))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-destructive\/90{background-color:hsl(var(--destructive) / .9)}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-grid-bg{background-color:hsl(var(--grid-bg))}.bg-header-bg{background-color:hsl(var(--header-bg))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/90{background-color:hsl(var(--primary) / .9)}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/80{background-color:hsl(var(--secondary) / .8)}.bg-sidebar-bg{background-color:hsl(var(--sidebar-bg))}.bg-tabs-bg{background-color:hsl(var(--tabs-bg))}.bg-transparent{background-color:transparent}.fill-yellow-500{fill:#eab308}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pl-4{padding-left:1rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:border-r-0:last-child{border-right-width:0px}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-accent\/80:hover{background-color:hsl(var(--accent) / .8)}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-green-500\/20:hover{background-color:#22c55e33}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:bg-primary\/50:hover{background-color:hsl(var(--primary) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-destructive\/10:focus{background-color:hsl(var(--destructive) / .1)}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-destructive:focus{color:hsl(var(--destructive))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.dark\:bg-content-bg:is(.dark *){background-color:hsl(var(--content-bg))}.dark\:bg-grid-bg:is(.dark *){background-color:hsl(var(--grid-bg))}.dark\:bg-header-bg:is(.dark *){background-color:hsl(var(--header-bg))}.dark\:bg-muted\/20:is(.dark *){background-color:hsl(var(--muted) / .2)}.dark\:bg-muted\/40:is(.dark *){background-color:hsl(var(--muted) / .4)}.dark\:bg-sidebar-bg:is(.dark *){background-color:hsl(var(--sidebar-bg))}.dark\:bg-tabs-bg:is(.dark *){background-color:hsl(var(--tabs-bg))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}.\[\&_th\]\:border-b-2 th{border-bottom-width:2px}.\[\&_th\]\:border-border th{border-color:hsl(var(--border))}.\[\&_th\]\:bg-muted th{background-color:hsl(var(--muted))}
|