@xansql/bridge 1.0.1 → 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.
@@ -1,10 +1,12 @@
1
- import { SecurequServer, crypto } from 'securequ';
2
- import { XansqlError } from '@xansql/core';
3
- import { makeSecret, makePath } from './base.mjs';
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
  class XansqlBridgeServer {
6
8
  constructor(xansql, config) {
7
- this.XANFETCH_CONTENT_TYPE = 'application/octet-stream';
9
+ this.REQUEST_CONTENT_TYPE = 'application/octet-stream';
8
10
  this.server = null;
9
11
  this.xansql = xansql;
10
12
  this.config = config;
@@ -14,7 +16,7 @@ class XansqlBridgeServer {
14
16
  if (config.isAuthorized) {
15
17
  const isPermit = await config.isAuthorized(info);
16
18
  if (!isPermit)
17
- throw new XansqlError({
19
+ throw new core.XansqlError({
18
20
  message: "isAuthorized denied for server initialization.",
19
21
  model: info.model ? info.model.table : undefined,
20
22
  });
@@ -25,14 +27,14 @@ class XansqlBridgeServer {
25
27
  return this.server;
26
28
  const config = this.config;
27
29
  const xansql = this.xansql;
28
- const secret = await makeSecret(this.xansql);
29
- const server = new SecurequServer(Object.assign(Object.assign({}, (config || {})), { clients: [
30
+ const secret = await base.makeSecret(this.xansql);
31
+ const server = new securequ.SecurequServer(Object.assign(Object.assign({}, (config || {})), { clients: [
30
32
  {
31
33
  origin: `*`,
32
34
  secret
33
35
  }
34
36
  ] }));
35
- server.get(await makePath('find', xansql), async (req) => {
37
+ server.get(await base.makePath('find', xansql), async (req) => {
36
38
  const params = req.searchParams;
37
39
  await this.authorized({
38
40
  method: "GET",
@@ -41,7 +43,7 @@ class XansqlBridgeServer {
41
43
  });
42
44
  throw await xansql.execute(params.sql);
43
45
  });
44
- server.post(await makePath('insert', xansql), async (req) => {
46
+ server.post(await base.makePath('insert', xansql), async (req) => {
45
47
  const params = req.body;
46
48
  await this.authorized({
47
49
  method: "POST",
@@ -50,7 +52,7 @@ class XansqlBridgeServer {
50
52
  });
51
53
  throw await xansql.execute(params.sql);
52
54
  });
53
- server.put(await makePath('update', xansql), async (req) => {
55
+ server.put(await base.makePath('update', xansql), async (req) => {
54
56
  const params = req.body;
55
57
  await this.authorized({
56
58
  method: "PUT",
@@ -59,7 +61,7 @@ class XansqlBridgeServer {
59
61
  });
60
62
  throw await xansql.execute(params.sql);
61
63
  });
62
- server.delete(await makePath('delete', xansql), async (req) => {
64
+ server.delete(await base.makePath('delete', xansql), async (req) => {
63
65
  const params = req.searchParams;
64
66
  await this.authorized({
65
67
  method: "DELETE",
@@ -68,7 +70,7 @@ class XansqlBridgeServer {
68
70
  });
69
71
  throw await xansql.execute(params.sql);
70
72
  });
71
- server.post(await makePath('executer', xansql), async (req) => {
73
+ server.post(await base.makePath('executer', xansql), async (req) => {
72
74
  const params = req.body;
73
75
  await this.authorized({
74
76
  method: "POST",
@@ -77,7 +79,7 @@ class XansqlBridgeServer {
77
79
  });
78
80
  throw await xansql.execute(params.sql);
79
81
  });
80
- server.get(await makePath('raw_schema', xansql), async (req) => {
82
+ server.get(await base.makePath('raw_schema', xansql), async (req) => {
81
83
  throw await xansql.dialect.getSchema(xansql);
82
84
  });
83
85
  this.server = server;
@@ -93,10 +95,10 @@ class XansqlBridgeServer {
93
95
  };
94
96
  }
95
97
  catch (error) {
96
- const secret = await makeSecret(this.xansql);
98
+ const secret = await base.makeSecret(this.xansql);
97
99
  return {
98
100
  status: 500,
99
- value: await crypto.encryptBuffer({
101
+ value: await securequ.crypto.encryptBuffer({
100
102
  success: false,
101
103
  message: error.message || 'Internal Server Error'
102
104
  }, secret)
@@ -105,5 +107,5 @@ class XansqlBridgeServer {
105
107
  }
106
108
  }
107
109
 
108
- export { XansqlBridgeServer as default };
109
- //# sourceMappingURL=server.mjs.map
110
+ module.exports = XansqlBridgeServer;
111
+ //# sourceMappingURL=server.cjs.map
package/server.cjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cjs","sources":["../src/server.ts"],"sourcesContent":["import { crypto, SecurequServer } from \"securequ\";\r\nimport { Xansql, XansqlError, Model } from \"@xansql/core\";\r\nimport { makePath, makeSecret } from \"./base\";\r\nimport { ListenOptions, XansqlBridgeAuthorizedInfo, XansqlBridgeServerConfig } from \"./types\";\r\n\r\nclass XansqlBridgeServer {\r\n readonly REQUEST_CONTENT_TYPE = 'application/octet-stream';\r\n xansql: Xansql;\r\n config: XansqlBridgeServerConfig;\r\n private server: SecurequServer | null = null;\r\n\r\n constructor(xansql: Xansql, config: XansqlBridgeServerConfig) {\r\n this.xansql = xansql;\r\n this.config = config;\r\n }\r\n\r\n async authorized(info: XansqlBridgeAuthorizedInfo) {\r\n const config = this.config;\r\n if (config.isAuthorized) {\r\n const isPermit = await config.isAuthorized(info)\r\n if (!isPermit) throw new XansqlError({\r\n message: \"isAuthorized denied for server initialization.\",\r\n model: info.model ? info.model.table : undefined,\r\n })\r\n }\r\n }\r\n\r\n async initial() {\r\n if (this.server) return this.server;\r\n\r\n const config = this.config;\r\n const xansql = this.xansql\r\n const secret = await makeSecret(this.xansql);\r\n\r\n const server = new SecurequServer({\r\n ...(config || {}),\r\n clients: [\r\n {\r\n origin: `*`,\r\n secret\r\n }\r\n ]\r\n });\r\n\r\n server.get(await makePath('find', xansql), async (req: any) => {\r\n\r\n const params: any = req.searchParams\r\n await this.authorized({\r\n method: \"GET\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n\r\n server.post(await makePath('insert', xansql), async (req: any) => {\r\n const params: any = req.body\r\n await this.authorized({\r\n method: \"POST\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n server.put(await makePath('update', xansql), async (req: any) => {\r\n const params: any = req.body\r\n await this.authorized({\r\n method: \"PUT\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n server.delete(await makePath('delete', xansql), async (req: any) => {\r\n const params: any = req.searchParams\r\n await this.authorized({\r\n method: \"DELETE\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n\r\n server.post(await makePath('executer', xansql), async (req: any) => {\r\n const params: any = req.body\r\n await this.authorized({\r\n method: \"POST\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n server.get(await makePath('raw_schema', xansql), async (req: any) => {\r\n throw await xansql.dialect.getSchema(xansql);\r\n })\r\n\r\n this.server = server;\r\n return this.server;\r\n }\r\n\r\n async listen(url: string, options: ListenOptions) {\r\n\r\n const server = await this.initial()\r\n try {\r\n const res = await server.listen(url, options)\r\n return {\r\n status: res.status,\r\n value: res.value,\r\n }\r\n } catch (error: any) {\r\n\r\n const secret = await makeSecret(this.xansql)\r\n return {\r\n status: 500,\r\n value: await crypto.encryptBuffer({\r\n success: false,\r\n message: error.message || 'Internal Server Error'\r\n }, secret)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default XansqlBridgeServer"],"names":["XansqlError","makeSecret","SecurequServer","makePath","crypto"],"mappings":"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"}
package/server.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Xansql } from '@xansql/core';
3
3
  import { XansqlBridgeServerConfig, XansqlBridgeAuthorizedInfo, ListenOptions } from './types.js';
4
4
 
5
5
  declare class XansqlBridgeServer {
6
- readonly XANFETCH_CONTENT_TYPE = "application/octet-stream";
6
+ readonly REQUEST_CONTENT_TYPE = "application/octet-stream";
7
7
  xansql: Xansql;
8
8
  config: XansqlBridgeServerConfig;
9
9
  private server;
package/server.js CHANGED
@@ -1,12 +1,10 @@
1
- 'use strict';
2
-
3
- var securequ = require('securequ');
4
- var core = require('@xansql/core');
5
- var base = require('./base.js');
1
+ import { SecurequServer, crypto } from 'securequ';
2
+ import { XansqlError } from '@xansql/core';
3
+ import { makeSecret, makePath } from './base.js';
6
4
 
7
5
  class XansqlBridgeServer {
8
6
  constructor(xansql, config) {
9
- this.XANFETCH_CONTENT_TYPE = 'application/octet-stream';
7
+ this.REQUEST_CONTENT_TYPE = 'application/octet-stream';
10
8
  this.server = null;
11
9
  this.xansql = xansql;
12
10
  this.config = config;
@@ -16,7 +14,7 @@ class XansqlBridgeServer {
16
14
  if (config.isAuthorized) {
17
15
  const isPermit = await config.isAuthorized(info);
18
16
  if (!isPermit)
19
- throw new core.XansqlError({
17
+ throw new XansqlError({
20
18
  message: "isAuthorized denied for server initialization.",
21
19
  model: info.model ? info.model.table : undefined,
22
20
  });
@@ -27,14 +25,14 @@ class XansqlBridgeServer {
27
25
  return this.server;
28
26
  const config = this.config;
29
27
  const xansql = this.xansql;
30
- const secret = await base.makeSecret(this.xansql);
31
- const server = new securequ.SecurequServer(Object.assign(Object.assign({}, (config || {})), { clients: [
28
+ const secret = await makeSecret(this.xansql);
29
+ const server = new SecurequServer(Object.assign(Object.assign({}, (config || {})), { clients: [
32
30
  {
33
31
  origin: `*`,
34
32
  secret
35
33
  }
36
34
  ] }));
37
- server.get(await base.makePath('find', xansql), async (req) => {
35
+ server.get(await makePath('find', xansql), async (req) => {
38
36
  const params = req.searchParams;
39
37
  await this.authorized({
40
38
  method: "GET",
@@ -43,7 +41,7 @@ class XansqlBridgeServer {
43
41
  });
44
42
  throw await xansql.execute(params.sql);
45
43
  });
46
- server.post(await base.makePath('insert', xansql), async (req) => {
44
+ server.post(await makePath('insert', xansql), async (req) => {
47
45
  const params = req.body;
48
46
  await this.authorized({
49
47
  method: "POST",
@@ -52,7 +50,7 @@ class XansqlBridgeServer {
52
50
  });
53
51
  throw await xansql.execute(params.sql);
54
52
  });
55
- server.put(await base.makePath('update', xansql), async (req) => {
53
+ server.put(await makePath('update', xansql), async (req) => {
56
54
  const params = req.body;
57
55
  await this.authorized({
58
56
  method: "PUT",
@@ -61,7 +59,7 @@ class XansqlBridgeServer {
61
59
  });
62
60
  throw await xansql.execute(params.sql);
63
61
  });
64
- server.delete(await base.makePath('delete', xansql), async (req) => {
62
+ server.delete(await makePath('delete', xansql), async (req) => {
65
63
  const params = req.searchParams;
66
64
  await this.authorized({
67
65
  method: "DELETE",
@@ -70,7 +68,7 @@ class XansqlBridgeServer {
70
68
  });
71
69
  throw await xansql.execute(params.sql);
72
70
  });
73
- server.post(await base.makePath('executer', xansql), async (req) => {
71
+ server.post(await makePath('executer', xansql), async (req) => {
74
72
  const params = req.body;
75
73
  await this.authorized({
76
74
  method: "POST",
@@ -79,7 +77,7 @@ class XansqlBridgeServer {
79
77
  });
80
78
  throw await xansql.execute(params.sql);
81
79
  });
82
- server.get(await base.makePath('raw_schema', xansql), async (req) => {
80
+ server.get(await makePath('raw_schema', xansql), async (req) => {
83
81
  throw await xansql.dialect.getSchema(xansql);
84
82
  });
85
83
  this.server = server;
@@ -95,10 +93,10 @@ class XansqlBridgeServer {
95
93
  };
96
94
  }
97
95
  catch (error) {
98
- const secret = await base.makeSecret(this.xansql);
96
+ const secret = await makeSecret(this.xansql);
99
97
  return {
100
98
  status: 500,
101
- value: await securequ.crypto.encryptBuffer({
99
+ value: await crypto.encryptBuffer({
102
100
  success: false,
103
101
  message: error.message || 'Internal Server Error'
104
102
  }, secret)
@@ -107,5 +105,5 @@ class XansqlBridgeServer {
107
105
  }
108
106
  }
109
107
 
110
- module.exports = XansqlBridgeServer;
108
+ export { XansqlBridgeServer as default };
111
109
  //# sourceMappingURL=server.js.map
package/server.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sources":["../src/server.ts"],"sourcesContent":["import { crypto, SecurequServer } from \"securequ\";\nimport { Xansql, XansqlError, Model } from \"@xansql/core\";\nimport { makePath, makeSecret } from \"./base\";\nimport { ListenOptions, XansqlBridgeAuthorizedInfo, XansqlBridgeServerConfig } from \"./types\";\n\nclass XansqlBridgeServer {\n readonly XANFETCH_CONTENT_TYPE = 'application/octet-stream';\n xansql: Xansql;\n config: XansqlBridgeServerConfig;\n private server: SecurequServer | null = null;\n\n constructor(xansql: Xansql, config: XansqlBridgeServerConfig) {\n this.xansql = xansql;\n this.config = config;\n }\n\n async authorized(info: XansqlBridgeAuthorizedInfo) {\n const config = this.config;\n if (config.isAuthorized) {\n const isPermit = await config.isAuthorized(info)\n if (!isPermit) throw new XansqlError({\n message: \"isAuthorized denied for server initialization.\",\n model: info.model ? info.model.table : undefined,\n })\n }\n }\n\n async initial() {\n if (this.server) return this.server;\n\n const config = this.config;\n const xansql = this.xansql\n const secret = await makeSecret(this.xansql);\n\n const server = new SecurequServer({\n ...(config || {}),\n clients: [\n {\n origin: `*`,\n secret\n }\n ]\n });\n\n server.get(await makePath('find', xansql), async (req: any) => {\n\n const params: any = req.searchParams\n await this.authorized({\n method: \"GET\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n\n server.post(await makePath('insert', xansql), async (req: any) => {\n const params: any = req.body\n await this.authorized({\n method: \"POST\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n server.put(await makePath('update', xansql), async (req: any) => {\n const params: any = req.body\n await this.authorized({\n method: \"PUT\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n server.delete(await makePath('delete', xansql), async (req: any) => {\n const params: any = req.searchParams\n await this.authorized({\n method: \"DELETE\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n\n server.post(await makePath('executer', xansql), async (req: any) => {\n const params: any = req.body\n await this.authorized({\n method: \"POST\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n server.get(await makePath('raw_schema', xansql), async (req: any) => {\n throw await xansql.dialect.getSchema(xansql);\n })\n\n this.server = server;\n return this.server;\n }\n\n async listen(url: string, options: ListenOptions) {\n\n const server = await this.initial()\n try {\n const res = await server.listen(url, options)\n return {\n status: res.status,\n value: res.value,\n }\n } catch (error: any) {\n\n const secret = await makeSecret(this.xansql)\n return {\n status: 500,\n value: await crypto.encryptBuffer({\n success: false,\n message: error.message || 'Internal Server Error'\n }, secret)\n }\n }\n }\n}\n\nexport default XansqlBridgeServer"],"names":["XansqlError","makeSecret","SecurequServer","makePath","crypto"],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sources":["../src/server.ts"],"sourcesContent":["import { crypto, SecurequServer } from \"securequ\";\r\nimport { Xansql, XansqlError, Model } from \"@xansql/core\";\r\nimport { makePath, makeSecret } from \"./base\";\r\nimport { ListenOptions, XansqlBridgeAuthorizedInfo, XansqlBridgeServerConfig } from \"./types\";\r\n\r\nclass XansqlBridgeServer {\r\n readonly REQUEST_CONTENT_TYPE = 'application/octet-stream';\r\n xansql: Xansql;\r\n config: XansqlBridgeServerConfig;\r\n private server: SecurequServer | null = null;\r\n\r\n constructor(xansql: Xansql, config: XansqlBridgeServerConfig) {\r\n this.xansql = xansql;\r\n this.config = config;\r\n }\r\n\r\n async authorized(info: XansqlBridgeAuthorizedInfo) {\r\n const config = this.config;\r\n if (config.isAuthorized) {\r\n const isPermit = await config.isAuthorized(info)\r\n if (!isPermit) throw new XansqlError({\r\n message: \"isAuthorized denied for server initialization.\",\r\n model: info.model ? info.model.table : undefined,\r\n })\r\n }\r\n }\r\n\r\n async initial() {\r\n if (this.server) return this.server;\r\n\r\n const config = this.config;\r\n const xansql = this.xansql\r\n const secret = await makeSecret(this.xansql);\r\n\r\n const server = new SecurequServer({\r\n ...(config || {}),\r\n clients: [\r\n {\r\n origin: `*`,\r\n secret\r\n }\r\n ]\r\n });\r\n\r\n server.get(await makePath('find', xansql), async (req: any) => {\r\n\r\n const params: any = req.searchParams\r\n await this.authorized({\r\n method: \"GET\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n\r\n server.post(await makePath('insert', xansql), async (req: any) => {\r\n const params: any = req.body\r\n await this.authorized({\r\n method: \"POST\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n server.put(await makePath('update', xansql), async (req: any) => {\r\n const params: any = req.body\r\n await this.authorized({\r\n method: \"PUT\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n server.delete(await makePath('delete', xansql), async (req: any) => {\r\n const params: any = req.searchParams\r\n await this.authorized({\r\n method: \"DELETE\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n\r\n server.post(await makePath('executer', xansql), async (req: any) => {\r\n const params: any = req.body\r\n await this.authorized({\r\n method: \"POST\",\r\n model: xansql.models.get(params.table) as Model,\r\n action: params.action,\r\n })\r\n throw await xansql.execute(params.sql);\r\n })\r\n\r\n server.get(await makePath('raw_schema', xansql), async (req: any) => {\r\n throw await xansql.dialect.getSchema(xansql);\r\n })\r\n\r\n this.server = server;\r\n return this.server;\r\n }\r\n\r\n async listen(url: string, options: ListenOptions) {\r\n\r\n const server = await this.initial()\r\n try {\r\n const res = await server.listen(url, options)\r\n return {\r\n status: res.status,\r\n value: res.value,\r\n }\r\n } catch (error: any) {\r\n\r\n const secret = await makeSecret(this.xansql)\r\n return {\r\n status: 500,\r\n value: await crypto.encryptBuffer({\r\n success: false,\r\n message: error.message || 'Internal Server Error'\r\n }, secret)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default XansqlBridgeServer"],"names":[],"mappings":"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"}
package/base.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.mjs","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":[],"mappings":"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"}
package/index.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","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":[],"mappings":"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"}
package/server.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.mjs","sources":["../src/server.ts"],"sourcesContent":["import { crypto, SecurequServer } from \"securequ\";\nimport { Xansql, XansqlError, Model } from \"@xansql/core\";\nimport { makePath, makeSecret } from \"./base\";\nimport { ListenOptions, XansqlBridgeAuthorizedInfo, XansqlBridgeServerConfig } from \"./types\";\n\nclass XansqlBridgeServer {\n readonly XANFETCH_CONTENT_TYPE = 'application/octet-stream';\n xansql: Xansql;\n config: XansqlBridgeServerConfig;\n private server: SecurequServer | null = null;\n\n constructor(xansql: Xansql, config: XansqlBridgeServerConfig) {\n this.xansql = xansql;\n this.config = config;\n }\n\n async authorized(info: XansqlBridgeAuthorizedInfo) {\n const config = this.config;\n if (config.isAuthorized) {\n const isPermit = await config.isAuthorized(info)\n if (!isPermit) throw new XansqlError({\n message: \"isAuthorized denied for server initialization.\",\n model: info.model ? info.model.table : undefined,\n })\n }\n }\n\n async initial() {\n if (this.server) return this.server;\n\n const config = this.config;\n const xansql = this.xansql\n const secret = await makeSecret(this.xansql);\n\n const server = new SecurequServer({\n ...(config || {}),\n clients: [\n {\n origin: `*`,\n secret\n }\n ]\n });\n\n server.get(await makePath('find', xansql), async (req: any) => {\n\n const params: any = req.searchParams\n await this.authorized({\n method: \"GET\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n\n server.post(await makePath('insert', xansql), async (req: any) => {\n const params: any = req.body\n await this.authorized({\n method: \"POST\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n server.put(await makePath('update', xansql), async (req: any) => {\n const params: any = req.body\n await this.authorized({\n method: \"PUT\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n server.delete(await makePath('delete', xansql), async (req: any) => {\n const params: any = req.searchParams\n await this.authorized({\n method: \"DELETE\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n\n server.post(await makePath('executer', xansql), async (req: any) => {\n const params: any = req.body\n await this.authorized({\n method: \"POST\",\n model: xansql.models.get(params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n server.get(await makePath('raw_schema', xansql), async (req: any) => {\n throw await xansql.dialect.getSchema(xansql);\n })\n\n this.server = server;\n return this.server;\n }\n\n async listen(url: string, options: ListenOptions) {\n\n const server = await this.initial()\n try {\n const res = await server.listen(url, options)\n return {\n status: res.status,\n value: res.value,\n }\n } catch (error: any) {\n\n const secret = await makeSecret(this.xansql)\n return {\n status: 500,\n value: await crypto.encryptBuffer({\n success: false,\n message: error.message || 'Internal Server Error'\n }, secret)\n }\n }\n }\n}\n\nexport default XansqlBridgeServer"],"names":[],"mappings":"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"}