@xansql/bridge 1.0.0 → 1.0.2
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/{base.mjs → base.cjs} +11 -7
- package/base.cjs.map +1 -0
- package/base.js +6 -10
- package/base.js.map +1 -1
- package/{index.mjs → index.cjs} +23 -21
- package/index.cjs.map +1 -0
- package/index.js +20 -22
- package/index.js.map +1 -1
- package/package.json +9 -9
- package/readme.md +359 -359
- package/{server.mjs → server.cjs} +19 -17
- package/server.cjs.map +1 -0
- package/server.d.ts +1 -1
- package/server.js +16 -18
- package/server.js.map +1 -1
- package/base.mjs.map +0 -1
- package/index.mjs.map +0 -1
- package/server.mjs.map +0 -1
package/{base.mjs → base.cjs}
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var securequ = require('securequ');
|
|
4
|
+
var core = require('@xansql/core');
|
|
3
5
|
|
|
4
6
|
let secretCache = null;
|
|
5
7
|
const makeSecret = async (xansql) => {
|
|
@@ -11,7 +13,7 @@ const makeSecret = async (xansql) => {
|
|
|
11
13
|
uid.push(model.table);
|
|
12
14
|
for (let column in model.schema) {
|
|
13
15
|
const field = model.schema[column];
|
|
14
|
-
if (!Foreign.isArray(model.schema[column])) {
|
|
16
|
+
if (!core.Foreign.isArray(model.schema[column])) {
|
|
15
17
|
uid.push(column);
|
|
16
18
|
const meta = field.meta || {};
|
|
17
19
|
const keys = Object.keys(meta);
|
|
@@ -24,12 +26,12 @@ const makeSecret = async (xansql) => {
|
|
|
24
26
|
}
|
|
25
27
|
uid = Array.from(new Set(uid)); // unique
|
|
26
28
|
uid = uid.sort();
|
|
27
|
-
secretCache = await crypto.hash(uid.join(""));
|
|
29
|
+
secretCache = await securequ.crypto.hash(uid.join(""));
|
|
28
30
|
return secretCache;
|
|
29
31
|
};
|
|
30
32
|
const makePath = async (path, xansql) => {
|
|
31
33
|
const secret = await makeSecret(xansql);
|
|
32
|
-
const gen = `/${await crypto.hash(path + secret)}`;
|
|
34
|
+
const gen = `/${await securequ.crypto.hash(path + secret)}`;
|
|
33
35
|
return gen;
|
|
34
36
|
};
|
|
35
37
|
const sqlparser = (sql) => {
|
|
@@ -119,5 +121,7 @@ const sqlparser = (sql) => {
|
|
|
119
121
|
};
|
|
120
122
|
};
|
|
121
123
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
exports.makePath = makePath;
|
|
125
|
+
exports.makeSecret = makeSecret;
|
|
126
|
+
exports.sqlparser = sqlparser;
|
|
127
|
+
//# sourceMappingURL=base.cjs.map
|
package/base.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.cjs","sources":["../src/base.ts"],"sourcesContent":["import { crypto } from \"securequ\";\r\nimport { Xansql, Foreign } from \"@xansql/core\";\r\n\r\nlet secretCache: string | null = null;\r\nexport const makeSecret = async (xansql: Xansql) => {\r\n if (secretCache) return secretCache;\r\n const models = xansql.models\r\n let uid = []\r\n for (let model of models.values()) {\r\n uid.push(model.table)\r\n for (let column in model.schema) {\r\n const field = model.schema[column]\r\n if (!Foreign.isArray(model.schema[column])) {\r\n uid.push(column)\r\n const meta = field.meta || {}\r\n const keys = Object.keys(meta)\r\n if (keys.length) {\r\n keys.sort()\r\n uid.push(...keys)\r\n }\r\n }\r\n }\r\n }\r\n uid = Array.from(new Set(uid)) // unique\r\n uid = uid.sort()\r\n\r\n secretCache = await crypto.hash(uid.join(\"\"))\r\n return secretCache;\r\n}\r\n\r\nexport const makePath = async (path: string, xansql: Xansql) => {\r\n const secret = await makeSecret(xansql)\r\n const gen = `/${await crypto.hash(path + secret)}`\r\n return gen;\r\n}\r\n\r\n\r\nexport type XansqlBridgeAction =\r\n | \"SELECT\"\r\n | \"INSERT\"\r\n | \"UPDATE\"\r\n | \"DELETE\"\r\n | \"DROP\"\r\n | \"ALTER\"\r\n | \"CREATE\"\r\n | \"TRUNCATE\"\r\n | \"REPLACE\"\r\n | \"DESCRIBE\"\r\n | \"SHOW\"\r\n | \"USE\"\r\n | \"UNKNOWN\";\r\n\r\nexport interface SqlParserResult {\r\n action: XansqlBridgeAction;\r\n table: string | null;\r\n}\r\n\r\nexport const sqlparser = (sql: string): SqlParserResult => {\r\n const normalized = sql.trim().replace(/\\s+/g, \" \");\r\n\r\n // Detect the primary verb (first SQL keyword)\r\n const verbMatch = normalized.match(\r\n /^(SELECT|INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|TRUNCATE|REPLACE|DESCRIBE|DESC|SHOW|USE)\\b/i\r\n );\r\n\r\n let verb: XansqlBridgeAction = \"UNKNOWN\";\r\n\r\n if (verbMatch) {\r\n const v = verbMatch[1].toUpperCase();\r\n verb = v === \"DESC\" ? \"DESCRIBE\" : (v as XansqlBridgeAction);\r\n }\r\n\r\n // Matches identifiers: table, `table`, \"table\", [table]\r\n const IDENT = `([\\\\\\`\"\\\\[]?)([A-Za-z0-9_.-]+)\\\\1`;\r\n\r\n const extractTable = (): string | null => {\r\n switch (verb) {\r\n case \"SELECT\": {\r\n // 1. Normal SELECT ... FROM table\r\n const normal = normalized.match(/\\bFROM\\s+([`\"\\[]?)([A-Za-z0-9_.-]+)\\1/i);\r\n if (normal && normal[2] !== \"(\") {\r\n return normal[2]; // real table\r\n }\r\n\r\n // 2. Extract real tables inside a subquery: SELECT ... FROM ( SELECT ... FROM table )\r\n const inner = normalized.match(\r\n /\\(\\s*SELECT[\\s\\S]+?\\bFROM\\s+([`\"\\[]?)([A-Za-z0-9_.-]+)\\1/i\r\n );\r\n if (inner) return inner[2];\r\n\r\n return null;\r\n }\r\n case \"INSERT\": {\r\n const match = new RegExp(`\\\\bINTO\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n case \"UPDATE\": {\r\n const match = new RegExp(`^UPDATE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n case \"DELETE\": {\r\n const match = new RegExp(`\\\\bFROM\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // CREATE TABLE tableName\r\n case \"CREATE\": {\r\n const match = new RegExp(`\\\\bCREATE\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // DROP TABLE tableName\r\n case \"DROP\": {\r\n const match = new RegExp(`\\\\bDROP\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // ALTER TABLE tableName\r\n case \"ALTER\": {\r\n const match = new RegExp(`\\\\bALTER\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // TRUNCATE TABLE tableName\r\n case \"TRUNCATE\": {\r\n const match = new RegExp(`\\\\bTRUNCATE\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // REPLACE INTO tableName\r\n case \"REPLACE\": {\r\n const match = new RegExp(`\\\\bREPLACE\\\\s+INTO\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // DESCRIBE tableName\r\n case \"DESCRIBE\": {\r\n const match = new RegExp(`\\\\b(DESCRIBE|DESC)\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // SHOW TABLES / SHOW DATABASES => no table\r\n case \"SHOW\": {\r\n const match = new RegExp(`\\\\bSHOW\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null; // e.g. SHOW TABLES\r\n }\r\n\r\n // USE databaseName\r\n case \"USE\": {\r\n const match = new RegExp(`\\\\bUSE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return {\r\n action: verb,\r\n table: extractTable(),\r\n };\r\n};\r\n"],"names":["Foreign","crypto"],"mappings":"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"}
|
package/base.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var securequ = require('securequ');
|
|
4
|
-
var core = require('@xansql/core');
|
|
1
|
+
import { crypto } from 'securequ';
|
|
2
|
+
import { Foreign } from '@xansql/core';
|
|
5
3
|
|
|
6
4
|
let secretCache = null;
|
|
7
5
|
const makeSecret = async (xansql) => {
|
|
@@ -13,7 +11,7 @@ const makeSecret = async (xansql) => {
|
|
|
13
11
|
uid.push(model.table);
|
|
14
12
|
for (let column in model.schema) {
|
|
15
13
|
const field = model.schema[column];
|
|
16
|
-
if (!
|
|
14
|
+
if (!Foreign.isArray(model.schema[column])) {
|
|
17
15
|
uid.push(column);
|
|
18
16
|
const meta = field.meta || {};
|
|
19
17
|
const keys = Object.keys(meta);
|
|
@@ -26,12 +24,12 @@ const makeSecret = async (xansql) => {
|
|
|
26
24
|
}
|
|
27
25
|
uid = Array.from(new Set(uid)); // unique
|
|
28
26
|
uid = uid.sort();
|
|
29
|
-
secretCache = await
|
|
27
|
+
secretCache = await crypto.hash(uid.join(""));
|
|
30
28
|
return secretCache;
|
|
31
29
|
};
|
|
32
30
|
const makePath = async (path, xansql) => {
|
|
33
31
|
const secret = await makeSecret(xansql);
|
|
34
|
-
const gen = `/${await
|
|
32
|
+
const gen = `/${await crypto.hash(path + secret)}`;
|
|
35
33
|
return gen;
|
|
36
34
|
};
|
|
37
35
|
const sqlparser = (sql) => {
|
|
@@ -121,7 +119,5 @@ const sqlparser = (sql) => {
|
|
|
121
119
|
};
|
|
122
120
|
};
|
|
123
121
|
|
|
124
|
-
|
|
125
|
-
exports.makeSecret = makeSecret;
|
|
126
|
-
exports.sqlparser = sqlparser;
|
|
122
|
+
export { makePath, makeSecret, sqlparser };
|
|
127
123
|
//# sourceMappingURL=base.js.map
|
package/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sources":["../src/base.ts"],"sourcesContent":["import { crypto } from \"securequ\";\nimport { Xansql, Foreign } from \"@xansql/core\";\n\nlet secretCache: string | null = null;\nexport const makeSecret = async (xansql: Xansql) => {\n if (secretCache) return secretCache;\n const models = xansql.models\n let uid = []\n for (let model of models.values()) {\n uid.push(model.table)\n for (let column in model.schema) {\n const field = model.schema[column]\n if (!Foreign.isArray(model.schema[column])) {\n uid.push(column)\n const meta = field.meta || {}\n const keys = Object.keys(meta)\n if (keys.length) {\n keys.sort()\n uid.push(...keys)\n }\n }\n }\n }\n uid = Array.from(new Set(uid)) // unique\n uid = uid.sort()\n\n secretCache = await crypto.hash(uid.join(\"\"))\n return secretCache;\n}\n\nexport const makePath = async (path: string, xansql: Xansql) => {\n const secret = await makeSecret(xansql)\n const gen = `/${await crypto.hash(path + secret)}`\n return gen;\n}\n\n\nexport type XansqlBridgeAction =\n | \"SELECT\"\n | \"INSERT\"\n | \"UPDATE\"\n | \"DELETE\"\n | \"DROP\"\n | \"ALTER\"\n | \"CREATE\"\n | \"TRUNCATE\"\n | \"REPLACE\"\n | \"DESCRIBE\"\n | \"SHOW\"\n | \"USE\"\n | \"UNKNOWN\";\n\nexport interface SqlParserResult {\n action: XansqlBridgeAction;\n table: string | null;\n}\n\nexport const sqlparser = (sql: string): SqlParserResult => {\n const normalized = sql.trim().replace(/\\s+/g, \" \");\n\n // Detect the primary verb (first SQL keyword)\n const verbMatch = normalized.match(\n /^(SELECT|INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|TRUNCATE|REPLACE|DESCRIBE|DESC|SHOW|USE)\\b/i\n );\n\n let verb: XansqlBridgeAction = \"UNKNOWN\";\n\n if (verbMatch) {\n const v = verbMatch[1].toUpperCase();\n verb = v === \"DESC\" ? \"DESCRIBE\" : (v as XansqlBridgeAction);\n }\n\n // Matches identifiers: table, `table`, \"table\", [table]\n const IDENT = `([\\\\\\`\"\\\\[]?)([A-Za-z0-9_.-]+)\\\\1`;\n\n const extractTable = (): string | null => {\n switch (verb) {\n case \"SELECT\": {\n // 1. Normal SELECT ... FROM table\n const normal = normalized.match(/\\bFROM\\s+([`\"\\[]?)([A-Za-z0-9_.-]+)\\1/i);\n if (normal && normal[2] !== \"(\") {\n return normal[2]; // real table\n }\n\n // 2. Extract real tables inside a subquery: SELECT ... FROM ( SELECT ... FROM table )\n const inner = normalized.match(\n /\\(\\s*SELECT[\\s\\S]+?\\bFROM\\s+([`\"\\[]?)([A-Za-z0-9_.-]+)\\1/i\n );\n if (inner) return inner[2];\n\n return null;\n }\n case \"INSERT\": {\n const match = new RegExp(`\\\\bINTO\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n case \"UPDATE\": {\n const match = new RegExp(`^UPDATE\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n case \"DELETE\": {\n const match = new RegExp(`\\\\bFROM\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // CREATE TABLE tableName\n case \"CREATE\": {\n const match = new RegExp(`\\\\bCREATE\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // DROP TABLE tableName\n case \"DROP\": {\n const match = new RegExp(`\\\\bDROP\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // ALTER TABLE tableName\n case \"ALTER\": {\n const match = new RegExp(`\\\\bALTER\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // TRUNCATE TABLE tableName\n case \"TRUNCATE\": {\n const match = new RegExp(`\\\\bTRUNCATE\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // REPLACE INTO tableName\n case \"REPLACE\": {\n const match = new RegExp(`\\\\bREPLACE\\\\s+INTO\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // DESCRIBE tableName\n case \"DESCRIBE\": {\n const match = new RegExp(`\\\\b(DESCRIBE|DESC)\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n // SHOW TABLES / SHOW DATABASES => no table\n case \"SHOW\": {\n const match = new RegExp(`\\\\bSHOW\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null; // e.g. SHOW TABLES\n }\n\n // USE databaseName\n case \"USE\": {\n const match = new RegExp(`\\\\bUSE\\\\s+${IDENT}`, \"i\").exec(normalized);\n return match ? match[2] : null;\n }\n\n default:\n return null;\n }\n };\n\n return {\n action: verb,\n table: extractTable(),\n };\n};\n"],"names":[
|
|
1
|
+
{"version":3,"file":"base.js","sources":["../src/base.ts"],"sourcesContent":["import { crypto } from \"securequ\";\r\nimport { Xansql, Foreign } from \"@xansql/core\";\r\n\r\nlet secretCache: string | null = null;\r\nexport const makeSecret = async (xansql: Xansql) => {\r\n if (secretCache) return secretCache;\r\n const models = xansql.models\r\n let uid = []\r\n for (let model of models.values()) {\r\n uid.push(model.table)\r\n for (let column in model.schema) {\r\n const field = model.schema[column]\r\n if (!Foreign.isArray(model.schema[column])) {\r\n uid.push(column)\r\n const meta = field.meta || {}\r\n const keys = Object.keys(meta)\r\n if (keys.length) {\r\n keys.sort()\r\n uid.push(...keys)\r\n }\r\n }\r\n }\r\n }\r\n uid = Array.from(new Set(uid)) // unique\r\n uid = uid.sort()\r\n\r\n secretCache = await crypto.hash(uid.join(\"\"))\r\n return secretCache;\r\n}\r\n\r\nexport const makePath = async (path: string, xansql: Xansql) => {\r\n const secret = await makeSecret(xansql)\r\n const gen = `/${await crypto.hash(path + secret)}`\r\n return gen;\r\n}\r\n\r\n\r\nexport type XansqlBridgeAction =\r\n | \"SELECT\"\r\n | \"INSERT\"\r\n | \"UPDATE\"\r\n | \"DELETE\"\r\n | \"DROP\"\r\n | \"ALTER\"\r\n | \"CREATE\"\r\n | \"TRUNCATE\"\r\n | \"REPLACE\"\r\n | \"DESCRIBE\"\r\n | \"SHOW\"\r\n | \"USE\"\r\n | \"UNKNOWN\";\r\n\r\nexport interface SqlParserResult {\r\n action: XansqlBridgeAction;\r\n table: string | null;\r\n}\r\n\r\nexport const sqlparser = (sql: string): SqlParserResult => {\r\n const normalized = sql.trim().replace(/\\s+/g, \" \");\r\n\r\n // Detect the primary verb (first SQL keyword)\r\n const verbMatch = normalized.match(\r\n /^(SELECT|INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|TRUNCATE|REPLACE|DESCRIBE|DESC|SHOW|USE)\\b/i\r\n );\r\n\r\n let verb: XansqlBridgeAction = \"UNKNOWN\";\r\n\r\n if (verbMatch) {\r\n const v = verbMatch[1].toUpperCase();\r\n verb = v === \"DESC\" ? \"DESCRIBE\" : (v as XansqlBridgeAction);\r\n }\r\n\r\n // Matches identifiers: table, `table`, \"table\", [table]\r\n const IDENT = `([\\\\\\`\"\\\\[]?)([A-Za-z0-9_.-]+)\\\\1`;\r\n\r\n const extractTable = (): string | null => {\r\n switch (verb) {\r\n case \"SELECT\": {\r\n // 1. Normal SELECT ... FROM table\r\n const normal = normalized.match(/\\bFROM\\s+([`\"\\[]?)([A-Za-z0-9_.-]+)\\1/i);\r\n if (normal && normal[2] !== \"(\") {\r\n return normal[2]; // real table\r\n }\r\n\r\n // 2. Extract real tables inside a subquery: SELECT ... FROM ( SELECT ... FROM table )\r\n const inner = normalized.match(\r\n /\\(\\s*SELECT[\\s\\S]+?\\bFROM\\s+([`\"\\[]?)([A-Za-z0-9_.-]+)\\1/i\r\n );\r\n if (inner) return inner[2];\r\n\r\n return null;\r\n }\r\n case \"INSERT\": {\r\n const match = new RegExp(`\\\\bINTO\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n case \"UPDATE\": {\r\n const match = new RegExp(`^UPDATE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n case \"DELETE\": {\r\n const match = new RegExp(`\\\\bFROM\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // CREATE TABLE tableName\r\n case \"CREATE\": {\r\n const match = new RegExp(`\\\\bCREATE\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // DROP TABLE tableName\r\n case \"DROP\": {\r\n const match = new RegExp(`\\\\bDROP\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // ALTER TABLE tableName\r\n case \"ALTER\": {\r\n const match = new RegExp(`\\\\bALTER\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // TRUNCATE TABLE tableName\r\n case \"TRUNCATE\": {\r\n const match = new RegExp(`\\\\bTRUNCATE\\\\s+TABLE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // REPLACE INTO tableName\r\n case \"REPLACE\": {\r\n const match = new RegExp(`\\\\bREPLACE\\\\s+INTO\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // DESCRIBE tableName\r\n case \"DESCRIBE\": {\r\n const match = new RegExp(`\\\\b(DESCRIBE|DESC)\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n // SHOW TABLES / SHOW DATABASES => no table\r\n case \"SHOW\": {\r\n const match = new RegExp(`\\\\bSHOW\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null; // e.g. SHOW TABLES\r\n }\r\n\r\n // USE databaseName\r\n case \"USE\": {\r\n const match = new RegExp(`\\\\bUSE\\\\s+${IDENT}`, \"i\").exec(normalized);\r\n return match ? match[2] : null;\r\n }\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return {\r\n action: verb,\r\n table: extractTable(),\r\n };\r\n};\r\n"],"names":[],"mappings":";;;AAGA,IAAI,WAAW,GAAkB,IAAI;MACxB,UAAU,GAAG,OAAO,MAAc,KAAI;AAChD,IAAA,IAAI,WAAW;AAAE,QAAA,OAAO,WAAW;AACnC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;IAC5B,IAAI,GAAG,GAAG,EAAE;IACZ,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;AAChC,QAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACrB,QAAA,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACzC,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAChB,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE;gBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,IAAI,EAAE;AACX,oBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACpB;YACH;QACH;IACH;AACA,IAAA,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9B,IAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AAEhB,IAAA,WAAW,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,IAAA,OAAO,WAAW;AACrB;AAEO,MAAM,QAAQ,GAAG,OAAO,IAAY,EAAE,MAAc,KAAI;AAC5D,IAAA,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;AACvC,IAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE;AAClD,IAAA,OAAO,GAAG;AACb;AAuBO,MAAM,SAAS,GAAG,CAAC,GAAW,KAAqB;AACvD,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;;IAGlD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAC/B,6FAA6F,CAC/F;IAED,IAAI,IAAI,GAAuB,SAAS;IAExC,IAAI,SAAS,EAAE;QACZ,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,GAAG,CAAC,KAAK,MAAM,GAAG,UAAU,GAAI,CAAwB;IAC/D;;IAGA,MAAM,KAAK,GAAG,CAAA,iCAAA,CAAmC;IAEjD,MAAM,YAAY,GAAG,MAAoB;QACtC,QAAQ,IAAI;YACT,KAAK,QAAQ,EAAE;;gBAEZ,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,wCAAwC,CAAC;gBACzE,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC9B,oBAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB;;gBAGA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAC3B,2DAA2D,CAC7D;AACD,gBAAA,IAAI,KAAK;AAAE,oBAAA,OAAO,KAAK,CAAC,CAAC,CAAC;AAE1B,gBAAA,OAAO,IAAI;YACd;YACA,KAAK,QAAQ,EAAE;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACrE,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;YACA,KAAK,QAAQ,EAAE;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACrE,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;YACA,KAAK,QAAQ,EAAE;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACrE,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,QAAQ,EAAE;AACZ,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,yBAAyB,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAChF,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,MAAM,EAAE;AACV,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,uBAAuB,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9E,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,OAAO,EAAE;AACX,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,wBAAwB,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/E,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,UAAU,EAAE;AACd,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,2BAA2B,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAClF,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,SAAS,EAAE;AACb,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,yBAAyB,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAChF,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,UAAU,EAAE;AACd,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,yBAAyB,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAChF,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;;YAGA,KAAK,MAAM,EAAE;AACV,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACrE,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAClC;;YAGA,KAAK,KAAK,EAAE;AACT,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,aAAa,KAAK,CAAA,CAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACpE,gBAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;YACjC;AAEA,YAAA;AACG,gBAAA,OAAO,IAAI;;AAEpB,IAAA,CAAC;IAED,OAAO;AACJ,QAAA,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,YAAY,EAAE;KACvB;AACJ;;;;"}
|
package/{index.mjs → index.cjs}
RENAMED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var securequ = require('securequ');
|
|
4
|
+
var core = require('@xansql/core');
|
|
5
|
+
var base = require('./base.cjs');
|
|
4
6
|
|
|
5
7
|
const XansqlBridge = (url, engine) => {
|
|
6
8
|
let clientInstance = null;
|
|
7
9
|
const getClient = async (xansql) => {
|
|
8
10
|
if (!clientInstance) {
|
|
9
|
-
const secret = await makeSecret(xansql);
|
|
10
|
-
clientInstance = new SecurequClient({
|
|
11
|
+
const secret = await base.makeSecret(xansql);
|
|
12
|
+
clientInstance = new securequ.SecurequClient({
|
|
11
13
|
secret,
|
|
12
14
|
url
|
|
13
15
|
});
|
|
@@ -16,58 +18,58 @@ const XansqlBridge = (url, engine) => {
|
|
|
16
18
|
};
|
|
17
19
|
const execute = async (sql, xansql) => {
|
|
18
20
|
if (typeof window === 'undefined') {
|
|
19
|
-
throw new XansqlError({
|
|
21
|
+
throw new core.XansqlError({
|
|
20
22
|
message: "XansqlBridge dialect can only be used in browser environment.",
|
|
21
23
|
});
|
|
22
24
|
}
|
|
23
25
|
const client = await getClient(xansql);
|
|
24
|
-
const meta = sqlparser(sql);
|
|
26
|
+
const meta = base.sqlparser(sql);
|
|
25
27
|
const data = {
|
|
26
28
|
sql,
|
|
27
29
|
table: meta.table,
|
|
28
30
|
action: meta.action,
|
|
29
31
|
};
|
|
30
32
|
if (meta.action === "SELECT") {
|
|
31
|
-
let res = await client.get(await makePath('find', xansql), { params: data });
|
|
33
|
+
let res = await client.get(await base.makePath('find', xansql), { params: data });
|
|
32
34
|
if (!res.success) {
|
|
33
|
-
throw new XansqlError(res.message);
|
|
35
|
+
throw new core.XansqlError(res.message);
|
|
34
36
|
}
|
|
35
37
|
return res.data || null;
|
|
36
38
|
}
|
|
37
39
|
else if (meta.action === "INSERT") {
|
|
38
|
-
let res = await client.post(await makePath('insert', xansql), { body: data });
|
|
40
|
+
let res = await client.post(await base.makePath('insert', xansql), { body: data });
|
|
39
41
|
if (!res.success) {
|
|
40
|
-
throw new XansqlError(res.message);
|
|
42
|
+
throw new core.XansqlError(res.message);
|
|
41
43
|
}
|
|
42
44
|
return res.data || null;
|
|
43
45
|
}
|
|
44
46
|
else if (meta.action === "UPDATE") {
|
|
45
|
-
let res = await client.put(await makePath('update', xansql), { body: data });
|
|
47
|
+
let res = await client.put(await base.makePath('update', xansql), { body: data });
|
|
46
48
|
if (!res.success) {
|
|
47
|
-
throw new XansqlError(res.message);
|
|
49
|
+
throw new core.XansqlError(res.message);
|
|
48
50
|
}
|
|
49
51
|
return res.data || null;
|
|
50
52
|
}
|
|
51
53
|
else if (meta.action === "DELETE") {
|
|
52
|
-
let res = await client.delete(await makePath('delete', xansql), { params: data });
|
|
54
|
+
let res = await client.delete(await base.makePath('delete', xansql), { params: data });
|
|
53
55
|
if (!res.success) {
|
|
54
|
-
throw new XansqlError(res.message);
|
|
56
|
+
throw new core.XansqlError(res.message);
|
|
55
57
|
}
|
|
56
58
|
return res.data || null;
|
|
57
59
|
}
|
|
58
60
|
else {
|
|
59
|
-
let res = await client.post(await makePath('executer', xansql), { body: data });
|
|
61
|
+
let res = await client.post(await base.makePath('executer', xansql), { body: data });
|
|
60
62
|
if (!res.success) {
|
|
61
|
-
throw new XansqlError(res.message);
|
|
63
|
+
throw new core.XansqlError(res.message);
|
|
62
64
|
}
|
|
63
65
|
return res.data || null;
|
|
64
66
|
}
|
|
65
67
|
};
|
|
66
68
|
const getSchema = async (xansql) => {
|
|
67
69
|
const client = await getClient(xansql);
|
|
68
|
-
const res = await client.get(await makePath('raw_schema', xansql));
|
|
70
|
+
const res = await client.get(await base.makePath('raw_schema', xansql));
|
|
69
71
|
if (!res.success) {
|
|
70
|
-
throw new XansqlError({
|
|
72
|
+
throw new core.XansqlError({
|
|
71
73
|
message: `Failed to fetch schema: ${res.message || 'Unknown error'}`
|
|
72
74
|
});
|
|
73
75
|
}
|
|
@@ -93,5 +95,5 @@ const XansqlBridge = (url, engine) => {
|
|
|
93
95
|
};
|
|
94
96
|
};
|
|
95
97
|
|
|
96
|
-
|
|
97
|
-
//# sourceMappingURL=index.
|
|
98
|
+
module.exports = XansqlBridge;
|
|
99
|
+
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import { SecurequClient } from \"securequ\";\r\nimport { Xansql, XansqlError, ExecuterResult, XansqlDialectEngine, XansqlFileMeta } from \"@xansql/core\";\r\nimport { makePath, makeSecret, sqlparser } from \"./base\";\r\n\r\nconst XansqlBridge = (url: string, engine?: XansqlDialectEngine) => {\r\n\r\n let clientInstance: SecurequClient | null = null;\r\n const getClient = async (xansql: Xansql) => {\r\n if (!clientInstance) {\r\n const secret = await makeSecret(xansql)\r\n clientInstance = new SecurequClient({\r\n secret,\r\n url\r\n });\r\n }\r\n return clientInstance;\r\n }\r\n\r\n const execute = async (sql: string, xansql: Xansql): Promise<ExecuterResult> => {\r\n if (typeof window === 'undefined') {\r\n throw new XansqlError({\r\n message: \"XansqlBridge dialect can only be used in browser environment.\",\r\n })\r\n }\r\n const client = await getClient(xansql)\r\n const meta = sqlparser(sql);\r\n const data = {\r\n sql,\r\n table: meta.table,\r\n action: meta.action,\r\n };\r\n\r\n if (meta.action === \"SELECT\") {\r\n let res = await client.get(await makePath('find', xansql), { params: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else if (meta.action === \"INSERT\") {\r\n let res = await client.post(await makePath('insert', xansql), { body: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else if (meta.action === \"UPDATE\") {\r\n let res = await client.put(await makePath('update', xansql), { body: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else if (meta.action === \"DELETE\") {\r\n let res = await client.delete(await makePath('delete', xansql), { params: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else {\r\n let res = await client.post(await makePath('executer', xansql), { body: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n }\r\n };\r\n\r\n const getSchema = async (xansql: Xansql) => {\r\n const client = await getClient(xansql)\r\n const res = await client.get(await makePath('raw_schema', xansql))\r\n if (!res.success) {\r\n throw new XansqlError({\r\n message: `Failed to fetch schema: ${res.message || 'Unknown error'}`\r\n })\r\n }\r\n return res.data\r\n };\r\n\r\n const uploadFile = async (file: File, xansql: Xansql): Promise<XansqlFileMeta> => {\r\n const client = await getClient(xansql);\r\n const res = await client.uploadFile(file);\r\n return res.data\r\n }\r\n\r\n const deleteFile = async (fileId: string, xansql: Xansql) => {\r\n const client = await getClient(xansql);\r\n await client.deleteFile(fileId);\r\n }\r\n\r\n return {\r\n engine: engine || 'mysql',\r\n execute,\r\n getSchema,\r\n file: {\r\n upload: uploadFile,\r\n delete: deleteFile\r\n }\r\n };\r\n};\r\n\r\nexport default XansqlBridge;\r\n"],"names":["makeSecret","SecurequClient","XansqlError","sqlparser","makePath"],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var core = require('@xansql/core');
|
|
5
|
-
var base = require('./base.js');
|
|
1
|
+
import { SecurequClient } from 'securequ';
|
|
2
|
+
import { XansqlError } from '@xansql/core';
|
|
3
|
+
import { makePath, sqlparser, makeSecret } from './base.js';
|
|
6
4
|
|
|
7
5
|
const XansqlBridge = (url, engine) => {
|
|
8
6
|
let clientInstance = null;
|
|
9
7
|
const getClient = async (xansql) => {
|
|
10
8
|
if (!clientInstance) {
|
|
11
|
-
const secret = await
|
|
12
|
-
clientInstance = new
|
|
9
|
+
const secret = await makeSecret(xansql);
|
|
10
|
+
clientInstance = new SecurequClient({
|
|
13
11
|
secret,
|
|
14
12
|
url
|
|
15
13
|
});
|
|
@@ -18,58 +16,58 @@ const XansqlBridge = (url, engine) => {
|
|
|
18
16
|
};
|
|
19
17
|
const execute = async (sql, xansql) => {
|
|
20
18
|
if (typeof window === 'undefined') {
|
|
21
|
-
throw new
|
|
19
|
+
throw new XansqlError({
|
|
22
20
|
message: "XansqlBridge dialect can only be used in browser environment.",
|
|
23
21
|
});
|
|
24
22
|
}
|
|
25
23
|
const client = await getClient(xansql);
|
|
26
|
-
const meta =
|
|
24
|
+
const meta = sqlparser(sql);
|
|
27
25
|
const data = {
|
|
28
26
|
sql,
|
|
29
27
|
table: meta.table,
|
|
30
28
|
action: meta.action,
|
|
31
29
|
};
|
|
32
30
|
if (meta.action === "SELECT") {
|
|
33
|
-
let res = await client.get(await
|
|
31
|
+
let res = await client.get(await makePath('find', xansql), { params: data });
|
|
34
32
|
if (!res.success) {
|
|
35
|
-
throw new
|
|
33
|
+
throw new XansqlError(res.message);
|
|
36
34
|
}
|
|
37
35
|
return res.data || null;
|
|
38
36
|
}
|
|
39
37
|
else if (meta.action === "INSERT") {
|
|
40
|
-
let res = await client.post(await
|
|
38
|
+
let res = await client.post(await makePath('insert', xansql), { body: data });
|
|
41
39
|
if (!res.success) {
|
|
42
|
-
throw new
|
|
40
|
+
throw new XansqlError(res.message);
|
|
43
41
|
}
|
|
44
42
|
return res.data || null;
|
|
45
43
|
}
|
|
46
44
|
else if (meta.action === "UPDATE") {
|
|
47
|
-
let res = await client.put(await
|
|
45
|
+
let res = await client.put(await makePath('update', xansql), { body: data });
|
|
48
46
|
if (!res.success) {
|
|
49
|
-
throw new
|
|
47
|
+
throw new XansqlError(res.message);
|
|
50
48
|
}
|
|
51
49
|
return res.data || null;
|
|
52
50
|
}
|
|
53
51
|
else if (meta.action === "DELETE") {
|
|
54
|
-
let res = await client.delete(await
|
|
52
|
+
let res = await client.delete(await makePath('delete', xansql), { params: data });
|
|
55
53
|
if (!res.success) {
|
|
56
|
-
throw new
|
|
54
|
+
throw new XansqlError(res.message);
|
|
57
55
|
}
|
|
58
56
|
return res.data || null;
|
|
59
57
|
}
|
|
60
58
|
else {
|
|
61
|
-
let res = await client.post(await
|
|
59
|
+
let res = await client.post(await makePath('executer', xansql), { body: data });
|
|
62
60
|
if (!res.success) {
|
|
63
|
-
throw new
|
|
61
|
+
throw new XansqlError(res.message);
|
|
64
62
|
}
|
|
65
63
|
return res.data || null;
|
|
66
64
|
}
|
|
67
65
|
};
|
|
68
66
|
const getSchema = async (xansql) => {
|
|
69
67
|
const client = await getClient(xansql);
|
|
70
|
-
const res = await client.get(await
|
|
68
|
+
const res = await client.get(await makePath('raw_schema', xansql));
|
|
71
69
|
if (!res.success) {
|
|
72
|
-
throw new
|
|
70
|
+
throw new XansqlError({
|
|
73
71
|
message: `Failed to fetch schema: ${res.message || 'Unknown error'}`
|
|
74
72
|
});
|
|
75
73
|
}
|
|
@@ -95,5 +93,5 @@ const XansqlBridge = (url, engine) => {
|
|
|
95
93
|
};
|
|
96
94
|
};
|
|
97
95
|
|
|
98
|
-
|
|
96
|
+
export { XansqlBridge as default };
|
|
99
97
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { SecurequClient } from \"securequ\";\nimport { Xansql, XansqlError, ExecuterResult, XansqlDialectEngine, XansqlFileMeta } from \"@xansql/core\";\nimport { makePath, makeSecret, sqlparser } from \"./base\";\n\nconst XansqlBridge = (url: string, engine?: XansqlDialectEngine) => {\n\n let clientInstance: SecurequClient | null = null;\n const getClient = async (xansql: Xansql) => {\n if (!clientInstance) {\n const secret = await makeSecret(xansql)\n clientInstance = new SecurequClient({\n secret,\n url\n });\n }\n return clientInstance;\n }\n\n const execute = async (sql: string, xansql: Xansql): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n throw new XansqlError({\n message: \"XansqlBridge dialect can only be used in browser environment.\",\n })\n }\n const client = await getClient(xansql)\n const meta = sqlparser(sql);\n const data = {\n sql,\n table: meta.table,\n action: meta.action,\n };\n\n if (meta.action === \"SELECT\") {\n let res = await client.get(await makePath('find', xansql), { params: data })\n if (!res.success) {\n throw new XansqlError(res.message);\n }\n return res.data || null\n } else if (meta.action === \"INSERT\") {\n let res = await client.post(await makePath('insert', xansql), { body: data })\n if (!res.success) {\n throw new XansqlError(res.message);\n }\n return res.data || null\n } else if (meta.action === \"UPDATE\") {\n let res = await client.put(await makePath('update', xansql), { body: data })\n if (!res.success) {\n throw new XansqlError(res.message);\n }\n return res.data || null\n } else if (meta.action === \"DELETE\") {\n let res = await client.delete(await makePath('delete', xansql), { params: data })\n if (!res.success) {\n throw new XansqlError(res.message);\n }\n return res.data || null\n } else {\n let res = await client.post(await makePath('executer', xansql), { body: data })\n if (!res.success) {\n throw new XansqlError(res.message);\n }\n return res.data || null\n }\n };\n\n const getSchema = async (xansql: Xansql) => {\n const client = await getClient(xansql)\n const res = await client.get(await makePath('raw_schema', xansql))\n if (!res.success) {\n throw new XansqlError({\n message: `Failed to fetch schema: ${res.message || 'Unknown error'}`\n })\n }\n return res.data\n };\n\n const uploadFile = async (file: File, xansql: Xansql): Promise<XansqlFileMeta> => {\n const client = await getClient(xansql);\n const res = await client.uploadFile(file);\n return res.data\n }\n\n const deleteFile = async (fileId: string, xansql: Xansql) => {\n const client = await getClient(xansql);\n await client.deleteFile(fileId);\n }\n\n return {\n engine: engine || 'mysql',\n execute,\n getSchema,\n file: {\n upload: uploadFile,\n delete: deleteFile\n }\n };\n};\n\nexport default XansqlBridge;\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { SecurequClient } from \"securequ\";\r\nimport { Xansql, XansqlError, ExecuterResult, XansqlDialectEngine, XansqlFileMeta } from \"@xansql/core\";\r\nimport { makePath, makeSecret, sqlparser } from \"./base\";\r\n\r\nconst XansqlBridge = (url: string, engine?: XansqlDialectEngine) => {\r\n\r\n let clientInstance: SecurequClient | null = null;\r\n const getClient = async (xansql: Xansql) => {\r\n if (!clientInstance) {\r\n const secret = await makeSecret(xansql)\r\n clientInstance = new SecurequClient({\r\n secret,\r\n url\r\n });\r\n }\r\n return clientInstance;\r\n }\r\n\r\n const execute = async (sql: string, xansql: Xansql): Promise<ExecuterResult> => {\r\n if (typeof window === 'undefined') {\r\n throw new XansqlError({\r\n message: \"XansqlBridge dialect can only be used in browser environment.\",\r\n })\r\n }\r\n const client = await getClient(xansql)\r\n const meta = sqlparser(sql);\r\n const data = {\r\n sql,\r\n table: meta.table,\r\n action: meta.action,\r\n };\r\n\r\n if (meta.action === \"SELECT\") {\r\n let res = await client.get(await makePath('find', xansql), { params: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else if (meta.action === \"INSERT\") {\r\n let res = await client.post(await makePath('insert', xansql), { body: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else if (meta.action === \"UPDATE\") {\r\n let res = await client.put(await makePath('update', xansql), { body: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else if (meta.action === \"DELETE\") {\r\n let res = await client.delete(await makePath('delete', xansql), { params: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n } else {\r\n let res = await client.post(await makePath('executer', xansql), { body: data })\r\n if (!res.success) {\r\n throw new XansqlError(res.message);\r\n }\r\n return res.data || null\r\n }\r\n };\r\n\r\n const getSchema = async (xansql: Xansql) => {\r\n const client = await getClient(xansql)\r\n const res = await client.get(await makePath('raw_schema', xansql))\r\n if (!res.success) {\r\n throw new XansqlError({\r\n message: `Failed to fetch schema: ${res.message || 'Unknown error'}`\r\n })\r\n }\r\n return res.data\r\n };\r\n\r\n const uploadFile = async (file: File, xansql: Xansql): Promise<XansqlFileMeta> => {\r\n const client = await getClient(xansql);\r\n const res = await client.uploadFile(file);\r\n return res.data\r\n }\r\n\r\n const deleteFile = async (fileId: string, xansql: Xansql) => {\r\n const client = await getClient(xansql);\r\n await client.deleteFile(fileId);\r\n }\r\n\r\n return {\r\n engine: engine || 'mysql',\r\n execute,\r\n getSchema,\r\n file: {\r\n upload: uploadFile,\r\n delete: deleteFile\r\n }\r\n };\r\n};\r\n\r\nexport default XansqlBridge;\r\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xansql/bridge",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "./index.
|
|
5
|
-
"module": "./index.
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"main": "./index.cjs",
|
|
5
|
+
"module": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
7
7
|
"description": "Xansql bridge",
|
|
8
8
|
"author": "Devnax",
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"url": "https://github.com/xansql/bridge.git"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"securequ": "^1.1.
|
|
19
|
+
"securequ": "^1.1.13"
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
|
22
22
|
".": {
|
|
23
|
-
"import": "./index.
|
|
24
|
-
"require": "./index.
|
|
23
|
+
"import": "./index.js",
|
|
24
|
+
"require": "./index.cjs",
|
|
25
25
|
"types": "./index.d.ts"
|
|
26
26
|
},
|
|
27
27
|
"./server": {
|
|
28
|
-
"import": "./
|
|
29
|
-
"require": "./
|
|
30
|
-
"types": "./
|
|
28
|
+
"import": "./server.js",
|
|
29
|
+
"require": "./server.cjs",
|
|
30
|
+
"types": "./server.d.ts"
|
|
31
31
|
},
|
|
32
32
|
"./package.json": "./package.json"
|
|
33
33
|
}
|