xansql 1.1.12 → 1.1.14

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.
Files changed (55) hide show
  1. package/core/Xansql.cjs +3 -3
  2. package/core/Xansql.cjs.map +1 -1
  3. package/core/Xansql.js +1 -1
  4. package/core/XansqlError.cjs +48 -38
  5. package/core/XansqlError.cjs.map +1 -1
  6. package/core/XansqlError.d.ts +2 -13
  7. package/core/XansqlError.js +45 -38
  8. package/core/XansqlError.js.map +1 -1
  9. package/core/classes/XansqlConfig.cjs +4 -4
  10. package/core/classes/XansqlConfig.cjs.map +1 -1
  11. package/core/classes/XansqlConfig.js +1 -1
  12. package/dialects/Bridge/dialect.cjs +6 -6
  13. package/dialects/Bridge/dialect.cjs.map +1 -1
  14. package/dialects/Bridge/dialect.js +1 -1
  15. package/dialects/Bridge/server.cjs +1 -1
  16. package/dialects/Bridge/server.cjs.map +1 -1
  17. package/dialects/Bridge/server.js +1 -1
  18. package/index.cjs +1 -1
  19. package/index.js +1 -1
  20. package/model/Build/AggregateArgs/index.cjs +3 -3
  21. package/model/Build/AggregateArgs/index.cjs.map +1 -1
  22. package/model/Build/AggregateArgs/index.js +1 -1
  23. package/model/Build/AggregateSelectArgs/index.cjs +2 -2
  24. package/model/Build/AggregateSelectArgs/index.cjs.map +1 -1
  25. package/model/Build/AggregateSelectArgs/index.js +1 -1
  26. package/model/Build/CreateArgs/index.cjs +9 -9
  27. package/model/Build/CreateArgs/index.cjs.map +1 -1
  28. package/model/Build/CreateArgs/index.js +1 -1
  29. package/model/Build/DeleteArgs/index.cjs +1 -1
  30. package/model/Build/DeleteArgs/index.cjs.map +1 -1
  31. package/model/Build/DeleteArgs/index.js +1 -1
  32. package/model/Build/DeleteArgs/index.js.map +1 -1
  33. package/model/Build/LimitArgs/index.cjs +2 -2
  34. package/model/Build/LimitArgs/index.cjs.map +1 -1
  35. package/model/Build/LimitArgs/index.js +1 -1
  36. package/model/Build/OrderByArgs/index.cjs +2 -2
  37. package/model/Build/OrderByArgs/index.cjs.map +1 -1
  38. package/model/Build/OrderByArgs/index.js +1 -1
  39. package/model/Build/SelectArgs/index.cjs +1 -1
  40. package/model/Build/SelectArgs/index.cjs.map +1 -1
  41. package/model/Build/SelectArgs/index.js +1 -1
  42. package/model/Build/UpdateArgs/index.cjs +8 -9
  43. package/model/Build/UpdateArgs/index.cjs.map +1 -1
  44. package/model/Build/UpdateArgs/index.js +2 -3
  45. package/model/Build/UpdateArgs/index.js.map +1 -1
  46. package/model/Build/WhereArgs/index.cjs +5 -5
  47. package/model/Build/WhereArgs/index.cjs.map +1 -1
  48. package/model/Build/WhereArgs/index.js +1 -1
  49. package/model/index.cjs +6 -6
  50. package/model/index.cjs.map +1 -1
  51. package/model/index.js +1 -1
  52. package/package.json +1 -1
  53. package/xt/XqlFieldInfo.cjs +1 -1
  54. package/xt/XqlFieldInfo.cjs.map +1 -1
  55. package/xt/XqlFieldInfo.js +1 -1
package/core/Xansql.cjs CHANGED
@@ -53,7 +53,7 @@ class Xansql {
53
53
  var _a, e_1, _b, _c;
54
54
  const fileConfig = this.config.file;
55
55
  if (!(fileConfig === null || fileConfig === void 0 ? void 0 : fileConfig.upload)) {
56
- throw new XansqlError({
56
+ throw new XansqlError.XansqlError({
57
57
  code: "NOT_FOUND",
58
58
  message: `File upload is not supported by the current dialect.`
59
59
  });
@@ -100,7 +100,7 @@ class Xansql {
100
100
  return filemeta;
101
101
  }
102
102
  if (file$1.meta.chunkIndex === 0 && !fileScaner(file$1.chunk).valid) {
103
- throw new XansqlError({
103
+ throw new XansqlError.XansqlError({
104
104
  code: "FILE_ERROR",
105
105
  message: `Failed to process file "${file$1.meta.name}".`
106
106
  });
@@ -110,7 +110,7 @@ class Xansql {
110
110
  async deleteFile(fileId) {
111
111
  var _a;
112
112
  if (!((_a = this.config.file) === null || _a === void 0 ? void 0 : _a.delete)) {
113
- throw new XansqlError({
113
+ throw new XansqlError.XansqlError({
114
114
  code: "INTERNAL_ERROR",
115
115
  message: `File delete is not supported by the current dialect.`
116
116
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Xansql.cjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlFileMeta, XansqlFileUploadArgs } from \"./types\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport XansqlError from \"./XansqlError\";\nimport { ModelClass } from \"../model/types\";\nimport { chunkFile, getFileId, totalChunks } from \"../utils/file\";\nimport Migration from \"./Migration\";\nimport fileScaner from \"../utils/fileScaner\";\n\nclass Xansql {\n private XansqlConfig: XansqlConfig;\n readonly config: XansqlConfigTypeRequired;\n readonly XansqlTransaction: XansqlTransaction;\n readonly models = new Map<ModelClass<any>, Model>()\n readonly Migration: Migration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.Migration = new Migration(this)\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n model<M extends Model<any>>(model: ModelClass<M>, hooks?: any) {\n if (this.models.has(model)) {\n return this.models.get(model) as Model<ReturnType<M['schema']>>\n }\n const _model = new model(this)\n this.models.set(model, _model)\n return _model as Model<ReturnType<M['schema']>>\n }\n\n async execute(sql: string, debug = this.config.debug): Promise<ExecuterResult> {\n const query = sql.trim().replace(/\\s+/g, ' ');\n const isDebug = debug ?? false\n\n if (isDebug) {\n console.log(`[DB] Executing → ${query}`);\n }\n\n try {\n const execute = await this.dialect.execute(query, this) as ExecuterResult;\n if (isDebug) {\n console.log(`[DB] Executed ✓`);\n console.dir(execute.results, { depth: null });\n }\n return execute;\n } catch (error) {\n if (isDebug) {\n console.error(`[DB] Execution failed ✗`);\n console.error(query);\n }\n throw error\n }\n }\n\n async uploadFile(file: XansqlFileUploadArgs) {\n const fileConfig = this.config.file\n if (!fileConfig?.upload) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n message: `File upload is not supported by the current dialect.`\n });\n }\n if (file instanceof File) {\n // make chunk\n const fileId = await getFileId(file);\n\n const maxFileSize = fileConfig?.maxFilesize\n if (maxFileSize && file.size > maxFileSize * 1024) {\n throw new Error(`File size exceeds the limit of ${maxFileSize / 1024} MB`)\n }\n\n const chunkSize = fileConfig?.chunkSize\n\n // send metadata\n const filemeta: XansqlFileMeta = {\n fileId: fileId,\n name: file.name,\n size: file.size,\n type: file.type,\n totalChunks: totalChunks(file, chunkSize),\n chunkIndex: 0,\n isFinish: false\n }\n for await (let { chunk, chunkIndex } of chunkFile(file, chunkSize)) {\n filemeta.chunkIndex = chunkIndex;\n filemeta.isFinish = chunkIndex + 1 === filemeta.totalChunks;\n filemeta.chunkIndex = chunkIndex\n await this.uploadFile({\n chunk,\n meta: filemeta\n })\n }\n return filemeta\n }\n\n if (file.meta.chunkIndex === 0 && !fileScaner(file.chunk).valid) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: `Failed to process file \"${file.meta.name}\".`\n });\n }\n return await this.config.file.upload(file.chunk, file.meta, this);\n }\n\n async deleteFile(fileId: string) {\n if (!this.config.file?.delete) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `File delete is not supported by the current dialect.`\n });\n }\n return await this.config.file.delete(fileId, this);\n }\n\n async migrate(force?: boolean) {\n const models = Array.from(this.models.values())\n for (let model of models) {\n await this.Migration.migrate(model, force)\n }\n }\n}\n\nexport default Xansql"],"names":["file","getFileId","totalChunks","__asyncValues","chunkFile"],"mappings":"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"}
1
+ {"version":3,"file":"Xansql.cjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlFileMeta, XansqlFileUploadArgs } from \"./types\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport XansqlError from \"./XansqlError\";\nimport { ModelClass } from \"../model/types\";\nimport { chunkFile, getFileId, totalChunks } from \"../utils/file\";\nimport Migration from \"./Migration\";\nimport fileScaner from \"../utils/fileScaner\";\n\nclass Xansql {\n private XansqlConfig: XansqlConfig;\n readonly config: XansqlConfigTypeRequired;\n readonly XansqlTransaction: XansqlTransaction;\n readonly models = new Map<ModelClass<any>, Model>()\n readonly Migration: Migration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.Migration = new Migration(this)\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n model<M extends Model<any>>(model: ModelClass<M>, hooks?: any) {\n if (this.models.has(model)) {\n return this.models.get(model) as Model<ReturnType<M['schema']>>\n }\n const _model = new model(this)\n this.models.set(model, _model)\n return _model as Model<ReturnType<M['schema']>>\n }\n\n async execute(sql: string, debug = this.config.debug): Promise<ExecuterResult> {\n const query = sql.trim().replace(/\\s+/g, ' ');\n const isDebug = debug ?? false\n\n if (isDebug) {\n console.log(`[DB] Executing → ${query}`);\n }\n\n try {\n const execute = await this.dialect.execute(query, this) as ExecuterResult;\n if (isDebug) {\n console.log(`[DB] Executed ✓`);\n console.dir(execute.results, { depth: null });\n }\n return execute;\n } catch (error) {\n if (isDebug) {\n console.error(`[DB] Execution failed ✗`);\n console.error(query);\n }\n throw error\n }\n }\n\n async uploadFile(file: XansqlFileUploadArgs) {\n const fileConfig = this.config.file\n if (!fileConfig?.upload) {\n throw new XansqlError({\n code: \"NOT_FOUND\",\n message: `File upload is not supported by the current dialect.`\n });\n }\n if (file instanceof File) {\n // make chunk\n const fileId = await getFileId(file);\n\n const maxFileSize = fileConfig?.maxFilesize\n if (maxFileSize && file.size > maxFileSize * 1024) {\n throw new Error(`File size exceeds the limit of ${maxFileSize / 1024} MB`)\n }\n\n const chunkSize = fileConfig?.chunkSize\n\n // send metadata\n const filemeta: XansqlFileMeta = {\n fileId: fileId,\n name: file.name,\n size: file.size,\n type: file.type,\n totalChunks: totalChunks(file, chunkSize),\n chunkIndex: 0,\n isFinish: false\n }\n for await (let { chunk, chunkIndex } of chunkFile(file, chunkSize)) {\n filemeta.chunkIndex = chunkIndex;\n filemeta.isFinish = chunkIndex + 1 === filemeta.totalChunks;\n filemeta.chunkIndex = chunkIndex\n await this.uploadFile({\n chunk,\n meta: filemeta\n })\n }\n return filemeta\n }\n\n if (file.meta.chunkIndex === 0 && !fileScaner(file.chunk).valid) {\n throw new XansqlError({\n code: \"FILE_ERROR\",\n message: `Failed to process file \"${file.meta.name}\".`\n });\n }\n return await this.config.file.upload(file.chunk, file.meta, this);\n }\n\n async deleteFile(fileId: string) {\n if (!this.config.file?.delete) {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `File delete is not supported by the current dialect.`\n });\n }\n return await this.config.file.delete(fileId, this);\n }\n\n async migrate(force?: boolean) {\n const models = Array.from(this.models.values())\n for (let model of models) {\n await this.Migration.migrate(model, force)\n }\n }\n}\n\nexport default Xansql"],"names":["file","XansqlError","getFileId","totalChunks","__asyncValues","chunkFile"],"mappings":"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"}
package/core/Xansql.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { __asyncValues } from 'tslib';
2
2
  import XansqlTransaction from './classes/XansqlTransaction.js';
3
3
  import XansqlConfig from './classes/XansqlConfig.js';
4
- import XansqlError from './XansqlError.js';
4
+ import { XansqlError } from './XansqlError.js';
5
5
  import { getFileId, totalChunks, chunkFile } from '../utils/file.js';
6
6
  import Migration from './Migration.js';
7
7
  import fileScaner from '../utils/fileScaner.js';
@@ -1,5 +1,28 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // 🎨 ANSI helpers
6
+ const ansi = {
7
+ reset: "\x1b[0m",
8
+ bold: "\x1b[1m",
9
+ red: "\x1b[31m",
10
+ yellow: "\x1b[33m",
11
+ cyan: "\x1b[36m",
12
+ magenta: "\x1b[35m",
13
+ gray: "\x1b[90m",
14
+ bgRed: "\x1b[41m",
15
+ white: "\x1b[37m",
16
+ };
17
+ const color = {
18
+ bold: (s) => ansi.bold + s + ansi.reset,
19
+ red: (s) => ansi.red + s + ansi.reset,
20
+ yellow: (s) => ansi.yellow + s + ansi.reset,
21
+ cyan: (s) => ansi.cyan + s + ansi.reset,
22
+ magenta: (s) => ansi.magenta + s + ansi.reset,
23
+ gray: (s) => ansi.gray + s + ansi.reset,
24
+ bgRedWhite: (s) => ansi.bgRed + ansi.white + s + ansi.reset,
25
+ };
3
26
  class XansqlError extends Error {
4
27
  constructor(options) {
5
28
  var _a;
@@ -10,49 +33,36 @@ class XansqlError extends Error {
10
33
  this.field = options.field;
11
34
  this.sql = options.sql;
12
35
  this.params = options.params;
13
- this.timestamp = new Date().toISOString();
36
+ Object.setPrototypeOf(this, new.target.prototype);
14
37
  (_a = Error.captureStackTrace) === null || _a === void 0 ? void 0 : _a.call(Error, this, XansqlError);
15
- super.message = this.format();
16
- }
17
- toJSON() {
18
- return {
19
- name: this.name,
20
- code: this.code,
21
- message: this.message,
22
- model: this.model,
23
- field: this.field,
24
- sql: this.sql,
25
- params: this.params,
26
- timestamp: this.timestamp,
27
- };
28
38
  }
29
- format() {
30
- let context = [];
31
- if (this.model) {
32
- context.push(`Model: ${this.model}`);
33
- }
34
- if (this.field) {
35
- context.push(`Field: ${this.field}`);
36
- }
37
- if (this.sql) {
38
- context.push(`SQL: ${this.sql}`);
39
- }
39
+ // 🎨 Pretty colored output (terminal)
40
+ get pretty() {
41
+ const context = [];
42
+ if (this.model)
43
+ context.push(color.cyan("Model: ") + this.model);
44
+ if (this.field)
45
+ context.push(color.cyan("Field: ") + this.field);
46
+ if (this.sql)
47
+ context.push(color.cyan("SQL: ") + this.sql);
40
48
  if (this.params) {
41
- context.push(`Params: ${JSON.stringify(this.params, null, 2)}`);
49
+ context.push(color.cyan("Params: ") +
50
+ color.gray(JSON.stringify(this.params, null, 2)));
42
51
  }
43
- return ` XANSQL ERROR • ${this.code}
44
-
45
- - Message
46
- ${this.message}
47
-
48
- - Context
49
- ${context.join("\n")}
50
- Time : ${this.timestamp}
51
-
52
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
53
- `.trim();
52
+ return [
53
+ color.bold(color.bgRedWhite(" XANSQL ERROR ")) +
54
+ " " +
55
+ color.bold(color.red(this.code)),
56
+ "",
57
+ color.bold(color.yellow("Message:")),
58
+ " " + this.message,
59
+ "",
60
+ context.length ? context.join("\n") : color.gray(" (none)"),
61
+ "",
62
+ ].join("\n");
54
63
  }
55
64
  }
56
65
 
57
- module.exports = XansqlError;
66
+ exports.XansqlError = XansqlError;
67
+ exports.default = XansqlError;
58
68
  //# sourceMappingURL=XansqlError.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"XansqlError.cjs","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["export type XansqlErrorCode =\n | \"INVALID_ARGUMENTS\"\n | \"VALIDATION_ERROR\"\n | \"QUERY_ERROR\"\n | \"CONNECTION_ERROR\"\n | \"NOT_FOUND\"\n | \"UNIQUE_CONSTRAINT\"\n | \"FOREIGN_KEY_CONSTRAINT\"\n | \"MIGRATION_ERROR\"\n | \"INTERNAL_ERROR\"\n | \"FILE_ERROR\"\n\nexport interface XansqlErrorOptions {\n code: XansqlErrorCode\n message: string\n model?: string\n field?: string\n sql?: string\n params?: object\n}\n\nclass XansqlError extends Error {\n public readonly code: XansqlErrorCode\n public readonly model?: string\n public readonly field?: string\n public readonly sql?: string\n public readonly params?: object\n public readonly timestamp: string\n\n constructor(options: XansqlErrorOptions) {\n super(options.message)\n\n this.name = \"XansqlError\"\n this.code = options.code\n this.model = options.model\n this.field = options.field\n this.sql = options.sql\n this.params = options.params\n this.timestamp = new Date().toISOString()\n Error.captureStackTrace?.(this, XansqlError)\n super.message = this.format() as string\n\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n model: this.model,\n field: this.field,\n sql: this.sql,\n params: this.params,\n timestamp: this.timestamp,\n }\n }\n\n format(): string {\n let context = []\n if (this.model) {\n context.push(`Model: ${this.model}`)\n }\n if (this.field) {\n context.push(`Field: ${this.field}`)\n }\n if (this.sql) {\n context.push(`SQL: ${this.sql}`)\n }\n if (this.params) {\n context.push(`Params: ${JSON.stringify(this.params, null, 2)}`)\n }\n return ` XANSQL ERROR • ${this.code}\n\n- Message\n ${this.message}\n\n- Context\n${context.join(\"\\n\")}\nTime : ${this.timestamp}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`.trim()\n }\n\n\n}\n\nexport default XansqlError"],"names":[],"mappings":";;AAqBA,MAAM,WAAY,SAAQ,KAAK,CAAA;AAQ5B,IAAA,WAAA,CAAY,OAA2B,EAAA;;AACpC,QAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAEtB,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,CAAA,EAAA,GAAA,KAAK,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAG,IAAI,EAAE,WAAW,CAAC;AAC5C,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAY;IAE1C;IAEA,MAAM,GAAA;QACH,OAAO;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC3B;IACJ;IAEA,MAAM,GAAA;QACH,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACvC;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACvC;AACA,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;QACnC;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC;QAClE;QACA,OAAO,CAAA,mBAAA,EAAsB,IAAI,CAAC,IAAI;;;AAGxC,EAAA,EAAA,IAAI,CAAC,OAAO;;;AAGd,EAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACV,QAAA,EAAA,IAAI,CAAC,SAAS;;;CAGvB,CAAC,IAAI,EAAE;IACL;AAGF;;;;"}
1
+ {"version":3,"file":"XansqlError.cjs","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["export type XansqlErrorCode =\n | \"INVALID_ARGUMENTS\"\n | \"VALIDATION_ERROR\"\n | \"QUERY_ERROR\"\n | \"CONNECTION_ERROR\"\n | \"NOT_FOUND\"\n | \"UNIQUE_CONSTRAINT\"\n | \"FOREIGN_KEY_CONSTRAINT\"\n | \"MIGRATION_ERROR\"\n | \"INTERNAL_ERROR\"\n | \"FILE_ERROR\"\n\nexport interface XansqlErrorOptions {\n code: XansqlErrorCode\n message: string\n model?: string\n field?: string\n sql?: string\n params?: object\n}\n\n// 🎨 ANSI helpers\nconst ansi = {\n reset: \"\\x1b[0m\",\n bold: \"\\x1b[1m\",\n dim: \"\\x1b[2m\",\n\n red: \"\\x1b[31m\",\n yellow: \"\\x1b[33m\",\n cyan: \"\\x1b[36m\",\n magenta: \"\\x1b[35m\",\n gray: \"\\x1b[90m\",\n\n bgRed: \"\\x1b[41m\",\n black: \"\\x1b[30m\",\n white: \"\\x1b[37m\",\n}\n\nconst color = {\n bold: (s: string) => ansi.bold + s + ansi.reset,\n red: (s: string) => ansi.red + s + ansi.reset,\n yellow: (s: string) => ansi.yellow + s + ansi.reset,\n cyan: (s: string) => ansi.cyan + s + ansi.reset,\n magenta: (s: string) => ansi.magenta + s + ansi.reset,\n gray: (s: string) => ansi.gray + s + ansi.reset,\n bgRedWhite: (s: string) => ansi.bgRed + ansi.white + s + ansi.reset,\n}\n\nexport class XansqlError extends Error {\n public readonly code: XansqlErrorCode\n public readonly model?: string\n public readonly field?: string\n public readonly sql?: string\n public readonly params?: object\n\n constructor(options: XansqlErrorOptions) {\n super(options.message)\n\n this.name = \"XansqlError\"\n this.code = options.code\n this.model = options.model\n this.field = options.field\n this.sql = options.sql\n this.params = options.params\n\n Object.setPrototypeOf(this, new.target.prototype)\n Error.captureStackTrace?.(this, XansqlError)\n }\n\n // 🎨 Pretty colored output (terminal)\n get pretty(): string {\n const context: string[] = []\n if (this.model) context.push(color.cyan(\"Model: \") + this.model)\n if (this.field) context.push(color.cyan(\"Field: \") + this.field)\n if (this.sql) context.push(color.cyan(\"SQL: \") + this.sql)\n if (this.params) {\n context.push(\n color.cyan(\"Params: \") +\n color.gray(JSON.stringify(this.params, null, 2))\n )\n }\n\n return [\n color.bold(color.bgRedWhite(\" XANSQL ERROR \")) +\n \" \" +\n color.bold(color.red(this.code)),\n \"\",\n color.bold(color.yellow(\"Message:\")),\n \" \" + this.message,\n \"\",\n context.length ? context.join(\"\\n\") : color.gray(\" (none)\"),\n \"\",\n ].join(\"\\n\")\n }\n}\n\nexport default XansqlError"],"names":[],"mappings":"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"}
@@ -13,20 +13,9 @@ declare class XansqlError extends Error {
13
13
  readonly field?: string;
14
14
  readonly sql?: string;
15
15
  readonly params?: object;
16
- readonly timestamp: string;
17
16
  constructor(options: XansqlErrorOptions);
18
- toJSON(): {
19
- name: string;
20
- code: XansqlErrorCode;
21
- message: string;
22
- model: string | undefined;
23
- field: string | undefined;
24
- sql: string | undefined;
25
- params: object | undefined;
26
- timestamp: string;
27
- };
28
- format(): string;
17
+ get pretty(): string;
29
18
  }
30
19
 
31
- export { XansqlError as default };
20
+ export { XansqlError, XansqlError as default };
32
21
  export type { XansqlErrorCode, XansqlErrorOptions };
@@ -1,3 +1,24 @@
1
+ // 🎨 ANSI helpers
2
+ const ansi = {
3
+ reset: "\x1b[0m",
4
+ bold: "\x1b[1m",
5
+ red: "\x1b[31m",
6
+ yellow: "\x1b[33m",
7
+ cyan: "\x1b[36m",
8
+ magenta: "\x1b[35m",
9
+ gray: "\x1b[90m",
10
+ bgRed: "\x1b[41m",
11
+ white: "\x1b[37m",
12
+ };
13
+ const color = {
14
+ bold: (s) => ansi.bold + s + ansi.reset,
15
+ red: (s) => ansi.red + s + ansi.reset,
16
+ yellow: (s) => ansi.yellow + s + ansi.reset,
17
+ cyan: (s) => ansi.cyan + s + ansi.reset,
18
+ magenta: (s) => ansi.magenta + s + ansi.reset,
19
+ gray: (s) => ansi.gray + s + ansi.reset,
20
+ bgRedWhite: (s) => ansi.bgRed + ansi.white + s + ansi.reset,
21
+ };
1
22
  class XansqlError extends Error {
2
23
  constructor(options) {
3
24
  var _a;
@@ -8,49 +29,35 @@ class XansqlError extends Error {
8
29
  this.field = options.field;
9
30
  this.sql = options.sql;
10
31
  this.params = options.params;
11
- this.timestamp = new Date().toISOString();
32
+ Object.setPrototypeOf(this, new.target.prototype);
12
33
  (_a = Error.captureStackTrace) === null || _a === void 0 ? void 0 : _a.call(Error, this, XansqlError);
13
- super.message = this.format();
14
34
  }
15
- toJSON() {
16
- return {
17
- name: this.name,
18
- code: this.code,
19
- message: this.message,
20
- model: this.model,
21
- field: this.field,
22
- sql: this.sql,
23
- params: this.params,
24
- timestamp: this.timestamp,
25
- };
26
- }
27
- format() {
28
- let context = [];
29
- if (this.model) {
30
- context.push(`Model: ${this.model}`);
31
- }
32
- if (this.field) {
33
- context.push(`Field: ${this.field}`);
34
- }
35
- if (this.sql) {
36
- context.push(`SQL: ${this.sql}`);
37
- }
35
+ // 🎨 Pretty colored output (terminal)
36
+ get pretty() {
37
+ const context = [];
38
+ if (this.model)
39
+ context.push(color.cyan("Model: ") + this.model);
40
+ if (this.field)
41
+ context.push(color.cyan("Field: ") + this.field);
42
+ if (this.sql)
43
+ context.push(color.cyan("SQL: ") + this.sql);
38
44
  if (this.params) {
39
- context.push(`Params: ${JSON.stringify(this.params, null, 2)}`);
45
+ context.push(color.cyan("Params: ") +
46
+ color.gray(JSON.stringify(this.params, null, 2)));
40
47
  }
41
- return ` XANSQL ERROR • ${this.code}
42
-
43
- - Message
44
- ${this.message}
45
-
46
- - Context
47
- ${context.join("\n")}
48
- Time : ${this.timestamp}
49
-
50
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
51
- `.trim();
48
+ return [
49
+ color.bold(color.bgRedWhite(" XANSQL ERROR ")) +
50
+ " " +
51
+ color.bold(color.red(this.code)),
52
+ "",
53
+ color.bold(color.yellow("Message:")),
54
+ " " + this.message,
55
+ "",
56
+ context.length ? context.join("\n") : color.gray(" (none)"),
57
+ "",
58
+ ].join("\n");
52
59
  }
53
60
  }
54
61
 
55
- export { XansqlError as default };
62
+ export { XansqlError, XansqlError as default };
56
63
  //# sourceMappingURL=XansqlError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"XansqlError.js","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["export type XansqlErrorCode =\n | \"INVALID_ARGUMENTS\"\n | \"VALIDATION_ERROR\"\n | \"QUERY_ERROR\"\n | \"CONNECTION_ERROR\"\n | \"NOT_FOUND\"\n | \"UNIQUE_CONSTRAINT\"\n | \"FOREIGN_KEY_CONSTRAINT\"\n | \"MIGRATION_ERROR\"\n | \"INTERNAL_ERROR\"\n | \"FILE_ERROR\"\n\nexport interface XansqlErrorOptions {\n code: XansqlErrorCode\n message: string\n model?: string\n field?: string\n sql?: string\n params?: object\n}\n\nclass XansqlError extends Error {\n public readonly code: XansqlErrorCode\n public readonly model?: string\n public readonly field?: string\n public readonly sql?: string\n public readonly params?: object\n public readonly timestamp: string\n\n constructor(options: XansqlErrorOptions) {\n super(options.message)\n\n this.name = \"XansqlError\"\n this.code = options.code\n this.model = options.model\n this.field = options.field\n this.sql = options.sql\n this.params = options.params\n this.timestamp = new Date().toISOString()\n Error.captureStackTrace?.(this, XansqlError)\n super.message = this.format() as string\n\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n model: this.model,\n field: this.field,\n sql: this.sql,\n params: this.params,\n timestamp: this.timestamp,\n }\n }\n\n format(): string {\n let context = []\n if (this.model) {\n context.push(`Model: ${this.model}`)\n }\n if (this.field) {\n context.push(`Field: ${this.field}`)\n }\n if (this.sql) {\n context.push(`SQL: ${this.sql}`)\n }\n if (this.params) {\n context.push(`Params: ${JSON.stringify(this.params, null, 2)}`)\n }\n return ` XANSQL ERROR • ${this.code}\n\n- Message\n ${this.message}\n\n- Context\n${context.join(\"\\n\")}\nTime : ${this.timestamp}\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`.trim()\n }\n\n\n}\n\nexport default XansqlError"],"names":[],"mappings":"AAqBA,MAAM,WAAY,SAAQ,KAAK,CAAA;AAQ5B,IAAA,WAAA,CAAY,OAA2B,EAAA;;AACpC,QAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAEtB,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,CAAA,EAAA,GAAA,KAAK,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAG,IAAI,EAAE,WAAW,CAAC;AAC5C,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAY;IAE1C;IAEA,MAAM,GAAA;QACH,OAAO;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC3B;IACJ;IAEA,MAAM,GAAA;QACH,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACvC;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;QACvC;AACA,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;QACnC;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC;QAClE;QACA,OAAO,CAAA,mBAAA,EAAsB,IAAI,CAAC,IAAI;;;AAGxC,EAAA,EAAA,IAAI,CAAC,OAAO;;;AAGd,EAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACV,QAAA,EAAA,IAAI,CAAC,SAAS;;;CAGvB,CAAC,IAAI,EAAE;IACL;AAGF;;;;"}
1
+ {"version":3,"file":"XansqlError.js","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["export type XansqlErrorCode =\n | \"INVALID_ARGUMENTS\"\n | \"VALIDATION_ERROR\"\n | \"QUERY_ERROR\"\n | \"CONNECTION_ERROR\"\n | \"NOT_FOUND\"\n | \"UNIQUE_CONSTRAINT\"\n | \"FOREIGN_KEY_CONSTRAINT\"\n | \"MIGRATION_ERROR\"\n | \"INTERNAL_ERROR\"\n | \"FILE_ERROR\"\n\nexport interface XansqlErrorOptions {\n code: XansqlErrorCode\n message: string\n model?: string\n field?: string\n sql?: string\n params?: object\n}\n\n// 🎨 ANSI helpers\nconst ansi = {\n reset: \"\\x1b[0m\",\n bold: \"\\x1b[1m\",\n dim: \"\\x1b[2m\",\n\n red: \"\\x1b[31m\",\n yellow: \"\\x1b[33m\",\n cyan: \"\\x1b[36m\",\n magenta: \"\\x1b[35m\",\n gray: \"\\x1b[90m\",\n\n bgRed: \"\\x1b[41m\",\n black: \"\\x1b[30m\",\n white: \"\\x1b[37m\",\n}\n\nconst color = {\n bold: (s: string) => ansi.bold + s + ansi.reset,\n red: (s: string) => ansi.red + s + ansi.reset,\n yellow: (s: string) => ansi.yellow + s + ansi.reset,\n cyan: (s: string) => ansi.cyan + s + ansi.reset,\n magenta: (s: string) => ansi.magenta + s + ansi.reset,\n gray: (s: string) => ansi.gray + s + ansi.reset,\n bgRedWhite: (s: string) => ansi.bgRed + ansi.white + s + ansi.reset,\n}\n\nexport class XansqlError extends Error {\n public readonly code: XansqlErrorCode\n public readonly model?: string\n public readonly field?: string\n public readonly sql?: string\n public readonly params?: object\n\n constructor(options: XansqlErrorOptions) {\n super(options.message)\n\n this.name = \"XansqlError\"\n this.code = options.code\n this.model = options.model\n this.field = options.field\n this.sql = options.sql\n this.params = options.params\n\n Object.setPrototypeOf(this, new.target.prototype)\n Error.captureStackTrace?.(this, XansqlError)\n }\n\n // 🎨 Pretty colored output (terminal)\n get pretty(): string {\n const context: string[] = []\n if (this.model) context.push(color.cyan(\"Model: \") + this.model)\n if (this.field) context.push(color.cyan(\"Field: \") + this.field)\n if (this.sql) context.push(color.cyan(\"SQL: \") + this.sql)\n if (this.params) {\n context.push(\n color.cyan(\"Params: \") +\n color.gray(JSON.stringify(this.params, null, 2))\n )\n }\n\n return [\n color.bold(color.bgRedWhite(\" XANSQL ERROR \")) +\n \" \" +\n color.bold(color.red(this.code)),\n \"\",\n color.bold(color.yellow(\"Message:\")),\n \" \" + this.message,\n \"\",\n context.length ? context.join(\"\\n\") : color.gray(\" (none)\"),\n \"\",\n ].join(\"\\n\")\n }\n}\n\nexport default XansqlError"],"names":[],"mappings":"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"}
@@ -8,22 +8,22 @@ class XansqlConfig {
8
8
  this.xansql = xansql;
9
9
  this.config = config;
10
10
  if (!config.dialect)
11
- throw new XansqlError({
11
+ throw new XansqlError.XansqlError({
12
12
  code: "INTERNAL_ERROR",
13
13
  message: `Dialect configuration is required in Xansql config.`,
14
14
  });
15
15
  if (!config.dialect.engine || !config.dialect.execute)
16
- throw new XansqlError({
16
+ throw new XansqlError.XansqlError({
17
17
  code: "INTERNAL_ERROR",
18
18
  message: `Dialect engine and execute function are required in Xansql config.`,
19
19
  });
20
20
  if (this.engins.indexOf(config.dialect.engine) === -1)
21
- throw new XansqlError({
21
+ throw new XansqlError.XansqlError({
22
22
  code: "INTERNAL_ERROR",
23
23
  message: `Dialect engine must be one of ${this.engins.join(', ')}`,
24
24
  });
25
25
  if (typeof config.dialect.execute !== 'function')
26
- throw new XansqlError({
26
+ throw new XansqlError.XansqlError({
27
27
  code: "INTERNAL_ERROR",
28
28
  message: `Dialect execute must be a function.`,
29
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"XansqlConfig.cjs","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../types\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgres', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine || !config.dialect.execute) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine and execute function are required in Xansql config.`,\n })\n if (this.engins.indexOf(config.dialect.engine) === -1) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine must be one of ${this.engins.join(', ')}`,\n })\n if (typeof config.dialect.execute !== 'function') throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect execute must be a function.`,\n })\n }\n\n parse() {\n const config = {\n ...this.config,\n }\n\n return config as XansqlConfigTypeRequired\n }\n}\n\nexport default XansqlConfig;"],"names":[],"mappings":";;;;AAIA,MAAM,YAAY,CAAA;IAIf,WAAA,CAAY,MAAc,EAAE,MAAwB,EAAA;QAD3C,IAAA,CAAA,MAAM,GAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;AAErE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AACxC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mDAAA,CAAqD;AAChE,aAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,kEAAA,CAAoE;AAC/E,aAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;AACpE,aAAA,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC;AACrE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mCAAA,CAAqC;AAChD,aAAA,CAAC;IACL;IAEA,KAAK,GAAA;AACF,QAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,IAAI,CAAC,MAAM,CAChB;AAED,QAAA,OAAO,MAAkC;IAC5C;AACF;;;;"}
1
+ {"version":3,"file":"XansqlConfig.cjs","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../types\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgres', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine || !config.dialect.execute) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine and execute function are required in Xansql config.`,\n })\n if (this.engins.indexOf(config.dialect.engine) === -1) throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect engine must be one of ${this.engins.join(', ')}`,\n })\n if (typeof config.dialect.execute !== 'function') throw new XansqlError({\n code: \"INTERNAL_ERROR\",\n message: `Dialect execute must be a function.`,\n })\n }\n\n parse() {\n const config = {\n ...this.config,\n }\n\n return config as XansqlConfigTypeRequired\n }\n}\n\nexport default XansqlConfig;"],"names":["XansqlError"],"mappings":";;;;AAIA,MAAM,YAAY,CAAA;IAIf,WAAA,CAAY,MAAc,EAAE,MAAwB,EAAA;QAD3C,IAAA,CAAA,MAAM,GAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;AAErE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAIA,uBAAW,CAAC;AACxC,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mDAAA,CAAqD;AAChE,aAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAIA,uBAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,kEAAA,CAAoE;AAC/E,aAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAAE,MAAM,IAAIA,uBAAW,CAAC;AAC1E,gBAAA,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;AACpE,aAAA,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAIA,uBAAW,CAAC;AACrE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,OAAO,EAAE,CAAA,mCAAA,CAAqC;AAChD,aAAA,CAAC;IACL;IAEA,KAAK,GAAA;AACF,QAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,IAAI,CAAC,MAAM,CAChB;AAED,QAAA,OAAO,MAAkC;IAC5C;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- import XansqlError from '../XansqlError.js';
1
+ import { XansqlError } from '../XansqlError.js';
2
2
 
3
3
  class XansqlConfig {
4
4
  constructor(xansql, config) {
@@ -15,7 +15,7 @@ const XansqlBridgeDialect = (url, engine) => {
15
15
  };
16
16
  const execute = async (sql, xansql) => {
17
17
  if (typeof window === 'undefined') {
18
- throw new XansqlError({
18
+ throw new XansqlError.XansqlError({
19
19
  code: "INTERNAL_ERROR",
20
20
  message: "XansqlBridge dialect can only be used in browser environment.",
21
21
  });
@@ -30,7 +30,7 @@ const XansqlBridgeDialect = (url, engine) => {
30
30
  if (meta.action === "SELECT") {
31
31
  let res = await client.get(await base.makePath('find', xansql), { params: data });
32
32
  if (!res.success) {
33
- throw new XansqlError({
33
+ throw new XansqlError.XansqlError({
34
34
  code: "QUERY_ERROR",
35
35
  message: res.message
36
36
  });
@@ -40,7 +40,7 @@ const XansqlBridgeDialect = (url, engine) => {
40
40
  else if (meta.action === "INSERT") {
41
41
  let res = await client.post(await base.makePath('insert', xansql), { body: data });
42
42
  if (!res.success) {
43
- throw new XansqlError({
43
+ throw new XansqlError.XansqlError({
44
44
  code: "QUERY_ERROR",
45
45
  message: res.message
46
46
  });
@@ -50,7 +50,7 @@ const XansqlBridgeDialect = (url, engine) => {
50
50
  else if (meta.action === "UPDATE") {
51
51
  let res = await client.put(await base.makePath('update', xansql), { body: data });
52
52
  if (!res.success) {
53
- throw new XansqlError({
53
+ throw new XansqlError.XansqlError({
54
54
  code: "QUERY_ERROR",
55
55
  message: res.message
56
56
  });
@@ -60,7 +60,7 @@ const XansqlBridgeDialect = (url, engine) => {
60
60
  else if (meta.action === "DELETE") {
61
61
  let res = await client.delete(await base.makePath('delete', xansql), { params: data });
62
62
  if (!res.success) {
63
- throw new XansqlError({
63
+ throw new XansqlError.XansqlError({
64
64
  code: "QUERY_ERROR",
65
65
  message: res.message
66
66
  });
@@ -70,7 +70,7 @@ const XansqlBridgeDialect = (url, engine) => {
70
70
  else {
71
71
  let res = await client.post(await base.makePath('executer', xansql), { body: data });
72
72
  if (!res.success) {
73
- throw new XansqlError({
73
+ throw new XansqlError.XansqlError({
74
74
  code: "QUERY_ERROR",
75
75
  message: res.message
76
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dialect.cjs","sources":["../../../src/dialects/Bridge/dialect.ts"],"sourcesContent":["import { SecurequClient } from \"securequ\";\nimport { makePath, makeSecret, sqlparser } from \"./base\";\nimport { ExecuterResult, XansqlDialectEngine, XansqlFileMeta } from \"../../core/types\";\nimport Xansql from \"../../core/Xansql\";\nimport XansqlError from \"../../core/XansqlError\";\n\nconst XansqlBridgeDialect = (url: string, engine?: XansqlDialectEngine) => {\n\n let instance: SecurequClient | null = null;\n const getClient = async (xansql: Xansql) => {\n if (!instance) {\n const secret = await makeSecret(xansql)\n instance = new SecurequClient({ secret, url });\n }\n return instance;\n }\n\n const execute = async (sql: string, xansql: Xansql): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\n }\n return res.data || null\n\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\n }\n return res.data || null\n } else {\n\n let res = await client.post(await makePath('executer', xansql), { body: data })\n if (!res.success) {\n throw new XansqlError({\n code: \"QUERY_ERROR\",\n message: res.message\n });\n }\n return res.data || null\n }\n };\n\n const uploadFile = async (chunk: Uint8Array, meta: XansqlFileMeta, xansql: Xansql): Promise<XansqlFileMeta> => {\n const client = await getClient(xansql);\n const res = await client.uploadFile({\n chunk,\n meta\n });\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 dialect: {\n engine: engine || 'mysql',\n execute,\n },\n file: {\n upload: uploadFile,\n delete: deleteFile\n }\n };\n};\n\n\nexport default XansqlBridgeDialect;\n"],"names":["makeSecret","SecurequClient","sqlparser","makePath"],"mappings":"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"}
1
+ {"version":3,"file":"dialect.cjs","sources":["../../../src/dialects/Bridge/dialect.ts"],"sourcesContent":["import { SecurequClient } from \"securequ\";\nimport { makePath, makeSecret, sqlparser } from \"./base\";\nimport { ExecuterResult, XansqlDialectEngine, XansqlFileMeta } from \"../../core/types\";\nimport Xansql from \"../../core/Xansql\";\nimport XansqlError from \"../../core/XansqlError\";\n\nconst XansqlBridgeDialect = (url: string, engine?: XansqlDialectEngine) => {\n\n let instance: SecurequClient | null = null;\n const getClient = async (xansql: Xansql) => {\n if (!instance) {\n const secret = await makeSecret(xansql)\n instance = new SecurequClient({ secret, url });\n }\n return instance;\n }\n\n const execute = async (sql: string, xansql: Xansql): Promise<ExecuterResult> => {\n if (typeof window === 'undefined') {\n throw new XansqlError({\n code: \"INTERNAL_ERROR\",\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\n }\n return res.data || null\n\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\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({\n code: \"QUERY_ERROR\",\n message: res.message\n });\n }\n return res.data || null\n } else {\n\n let res = await client.post(await makePath('executer', xansql), { body: data })\n if (!res.success) {\n throw new XansqlError({\n code: \"QUERY_ERROR\",\n message: res.message\n });\n }\n return res.data || null\n }\n };\n\n const uploadFile = async (chunk: Uint8Array, meta: XansqlFileMeta, xansql: Xansql): Promise<XansqlFileMeta> => {\n const client = await getClient(xansql);\n const res = await client.uploadFile({\n chunk,\n meta\n });\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 dialect: {\n engine: engine || 'mysql',\n execute,\n },\n file: {\n upload: uploadFile,\n delete: deleteFile\n }\n };\n};\n\n\nexport default XansqlBridgeDialect;\n"],"names":["makeSecret","SecurequClient","XansqlError","sqlparser","makePath"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { SecurequClient } from 'securequ';
2
2
  import { sqlparser, makePath, makeSecret } from './base.js';
3
- import XansqlError from '../../core/XansqlError.js';
3
+ import { XansqlError } from '../../core/XansqlError.js';
4
4
 
5
5
  const XansqlBridgeDialect = (url, engine) => {
6
6
  let instance = null;
@@ -16,7 +16,7 @@ class XansqlBridgeServer {
16
16
  if (config.isAuthorized) {
17
17
  const isPermit = await config.isAuthorized(info);
18
18
  if (!isPermit)
19
- throw new XansqlError({
19
+ throw new XansqlError.XansqlError({
20
20
  code: "VALIDATION_ERROR",
21
21
  message: "isAuthorized denied for server initialization.",
22
22
  model: info.model ? info.model.table : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs","sources":["../../../src/dialects/Bridge/server.ts"],"sourcesContent":["import Xansql from \"../../core/Xansql\";\nimport XansqlError from \"../../core/XansqlError\";\nimport Model from \"../../model\";\nimport { makePath, makeSecret } from \"./base\";\nimport { ListenOptions, XansqlBridgeAuthorizedInfo, XansqlBridgeServerConfig } from \"./types\";\nimport { SecurequServer } from \"securequ\";\n\nclass XansqlBridgeServer {\n readonly REQUEST_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 code: \"VALIDATION_ERROR\",\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 file: {\n checkFileType: true,\n async upload(chunk, filemeta) {\n return await xansql.uploadFile({\n chunk,\n meta: filemeta\n }) as any\n },\n async delete(fileId) {\n return await xansql.deleteFile(fileId)\n },\n },\n clients: [\n {\n origin: `*`,\n secret\n }\n ]\n });\n\n server.get(await makePath('find', xansql), async (req: any) => {\n const params: any = req.searchParams\n await this.authorized({\n method: \"GET\",\n model: Array.from(xansql.models.values()).find(m => m.table === params.table) as Model<any>,\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: Array.from(xansql.models.values()).find(m => m.table === 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: Array.from(xansql.models.values()).find(m => m.table === 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: Array.from(xansql.models.values()).find(m => m.table === 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: Array.from(xansql.models.values()).find(m => m.table === params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n this.server = server;\n return this.server;\n }\n\n async listen(url: string, options: ListenOptions) {\n const server = await this.initial()\n return await server.listen(url, options)\n }\n}\n\nexport default XansqlBridgeServer"],"names":["makeSecret","SecurequServer","makePath"],"mappings":"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"}
1
+ {"version":3,"file":"server.cjs","sources":["../../../src/dialects/Bridge/server.ts"],"sourcesContent":["import Xansql from \"../../core/Xansql\";\nimport XansqlError from \"../../core/XansqlError\";\nimport Model from \"../../model\";\nimport { makePath, makeSecret } from \"./base\";\nimport { ListenOptions, XansqlBridgeAuthorizedInfo, XansqlBridgeServerConfig } from \"./types\";\nimport { SecurequServer } from \"securequ\";\n\nclass XansqlBridgeServer {\n readonly REQUEST_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 code: \"VALIDATION_ERROR\",\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 file: {\n checkFileType: true,\n async upload(chunk, filemeta) {\n return await xansql.uploadFile({\n chunk,\n meta: filemeta\n }) as any\n },\n async delete(fileId) {\n return await xansql.deleteFile(fileId)\n },\n },\n clients: [\n {\n origin: `*`,\n secret\n }\n ]\n });\n\n server.get(await makePath('find', xansql), async (req: any) => {\n const params: any = req.searchParams\n await this.authorized({\n method: \"GET\",\n model: Array.from(xansql.models.values()).find(m => m.table === params.table) as Model<any>,\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: Array.from(xansql.models.values()).find(m => m.table === 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: Array.from(xansql.models.values()).find(m => m.table === 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: Array.from(xansql.models.values()).find(m => m.table === 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: Array.from(xansql.models.values()).find(m => m.table === params.table) as Model,\n action: params.action,\n })\n throw await xansql.execute(params.sql);\n })\n\n this.server = server;\n return this.server;\n }\n\n async listen(url: string, options: ListenOptions) {\n const server = await this.initial()\n return await server.listen(url, options)\n }\n}\n\nexport default XansqlBridgeServer"],"names":["XansqlError","makeSecret","SecurequServer","makePath"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import XansqlError from '../../core/XansqlError.js';
1
+ import { XansqlError } from '../../core/XansqlError.js';
2
2
  import { makeSecret, makePath } from './base.js';
3
3
  import { SecurequServer } from 'securequ';
4
4
 
package/index.cjs CHANGED
@@ -9,6 +9,6 @@ var index$1 = require('./xt/index.cjs');
9
9
 
10
10
  exports.Xansql = Xansql;
11
11
  exports.Model = index;
12
- exports.XansqlError = XansqlError;
12
+ exports.XansqlError = XansqlError.XansqlError;
13
13
  exports.xt = index$1;
14
14
  //# sourceMappingURL=index.cjs.map
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { default as Xansql } from './core/Xansql.js';
2
2
  export { default as Model } from './model/index.js';
3
- export { default as XansqlError } from './core/XansqlError.js';
3
+ export { XansqlError } from './core/XansqlError.js';
4
4
  export { default as xt } from './xt/index.js';
5
5
  //# sourceMappingURL=index.js.map