rawsql-ts 0.2.0-beta → 0.3.0-beta

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 (82) hide show
  1. package/README.md +129 -8
  2. package/dist/esm/index.js +1 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/models/CreateTableQuery.js +62 -0
  5. package/dist/esm/models/CreateTableQuery.js.map +1 -0
  6. package/dist/esm/models/InsertQuery.js +24 -0
  7. package/dist/esm/models/InsertQuery.js.map +1 -0
  8. package/dist/esm/models/SelectQuery.js +2 -1
  9. package/dist/esm/models/SelectQuery.js.map +1 -1
  10. package/dist/esm/parsers/IdentifierParser.js +3 -2
  11. package/dist/esm/parsers/IdentifierParser.js.map +1 -1
  12. package/dist/esm/parsers/InsertQueryParser.js +104 -0
  13. package/dist/esm/parsers/InsertQueryParser.js.map +1 -0
  14. package/dist/esm/parsers/ParameterExpressionParser.js +11 -2
  15. package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -1
  16. package/dist/esm/parsers/SelectQueryParser.js +1 -1
  17. package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
  18. package/dist/esm/parsers/SourceParser.js +8 -26
  19. package/dist/esm/parsers/SourceParser.js.map +1 -1
  20. package/dist/esm/parsers/ValueParser.js +14 -1
  21. package/dist/esm/parsers/ValueParser.js.map +1 -1
  22. package/dist/esm/tokenReaders/ParameterTokenReader.js +21 -1
  23. package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -1
  24. package/dist/esm/transformers/Formatter.js +76 -4
  25. package/dist/esm/transformers/Formatter.js.map +1 -1
  26. package/dist/esm/transformers/QueryConverter.js +67 -12
  27. package/dist/esm/transformers/QueryConverter.js.map +1 -1
  28. package/dist/esm/types/index.d.ts +1 -0
  29. package/dist/esm/types/models/CreateTableQuery.d.ts +27 -0
  30. package/dist/esm/types/models/InsertQuery.d.ts +21 -0
  31. package/dist/esm/types/models/SelectQuery.d.ts +3 -2
  32. package/dist/esm/types/parsers/InsertQueryParser.d.ts +17 -0
  33. package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +2 -1
  34. package/dist/esm/types/transformers/Formatter.d.ts +19 -2
  35. package/dist/esm/types/transformers/QueryConverter.d.ts +22 -2
  36. package/dist/esm/types/utils/extractNamespacesAndName.d.ts +5 -0
  37. package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +9 -0
  38. package/dist/esm/utils/extractNamespacesAndName.js +16 -0
  39. package/dist/esm/utils/extractNamespacesAndName.js.map +1 -0
  40. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +39 -0
  41. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +1 -0
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.js +1 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/models/CreateTableQuery.d.ts +27 -0
  46. package/dist/models/CreateTableQuery.js +66 -0
  47. package/dist/models/CreateTableQuery.js.map +1 -0
  48. package/dist/models/InsertQuery.d.ts +21 -0
  49. package/dist/models/InsertQuery.js +28 -0
  50. package/dist/models/InsertQuery.js.map +1 -0
  51. package/dist/models/SelectQuery.d.ts +3 -2
  52. package/dist/models/SelectQuery.js +3 -1
  53. package/dist/models/SelectQuery.js.map +1 -1
  54. package/dist/parsers/IdentifierParser.js +3 -2
  55. package/dist/parsers/IdentifierParser.js.map +1 -1
  56. package/dist/parsers/InsertQueryParser.d.ts +17 -0
  57. package/dist/parsers/InsertQueryParser.js +108 -0
  58. package/dist/parsers/InsertQueryParser.js.map +1 -0
  59. package/dist/parsers/ParameterExpressionParser.js +11 -2
  60. package/dist/parsers/ParameterExpressionParser.js.map +1 -1
  61. package/dist/parsers/SelectQueryParser.js +1 -1
  62. package/dist/parsers/SelectQueryParser.js.map +1 -1
  63. package/dist/parsers/SourceParser.js +8 -26
  64. package/dist/parsers/SourceParser.js.map +1 -1
  65. package/dist/parsers/ValueParser.js +14 -1
  66. package/dist/parsers/ValueParser.js.map +1 -1
  67. package/dist/tokenReaders/ParameterTokenReader.d.ts +2 -1
  68. package/dist/tokenReaders/ParameterTokenReader.js +21 -1
  69. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -1
  70. package/dist/transformers/Formatter.d.ts +19 -2
  71. package/dist/transformers/Formatter.js +76 -4
  72. package/dist/transformers/Formatter.js.map +1 -1
  73. package/dist/transformers/QueryConverter.d.ts +22 -2
  74. package/dist/transformers/QueryConverter.js +67 -12
  75. package/dist/transformers/QueryConverter.js.map +1 -1
  76. package/dist/utils/extractNamespacesAndName.d.ts +5 -0
  77. package/dist/utils/extractNamespacesAndName.js +18 -0
  78. package/dist/utils/extractNamespacesAndName.js.map +1 -0
  79. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +9 -0
  80. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +42 -0
  81. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +1 -0
  82. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractNamespacesAndName = extractNamespacesAndName;
4
+ // Utility to extract namespaces and the final name from an array of identifiers
5
+ // Example: ["db", "schema", "users"] => { namespaces: ["db", "schema"], name: "users" }
6
+ function extractNamespacesAndName(identifiers) {
7
+ if (!identifiers || identifiers.length === 0) {
8
+ throw new Error("Identifier list is empty");
9
+ }
10
+ if (identifiers.length === 1) {
11
+ return { namespaces: null, name: identifiers[0] };
12
+ }
13
+ return {
14
+ namespaces: identifiers.slice(0, -1),
15
+ name: identifiers[identifiers.length - 1]
16
+ };
17
+ }
18
+ //# sourceMappingURL=extractNamespacesAndName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractNamespacesAndName.js","sourceRoot":"","sources":["../../src/utils/extractNamespacesAndName.ts"],"names":[],"mappings":";;AAeS,4DAAwB;AAfjC,gFAAgF;AAChF,wFAAwF;AACxF,SAAS,wBAAwB,CAAC,WAAqB;IACnD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,OAAO;QACH,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;KAC5C,CAAC;AACN,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Lexeme } from "../models/Lexeme";
2
+ /**
3
+ * Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers.
4
+ * Returns the list of identifiers and the new index after parsing.
5
+ */
6
+ export declare function parseEscapedOrDotSeparatedIdentifiers(lexemes: Lexeme[], index: number): {
7
+ identifiers: string[];
8
+ newIndex: number;
9
+ };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseEscapedOrDotSeparatedIdentifiers = parseEscapedOrDotSeparatedIdentifiers;
4
+ const Lexeme_1 = require("../models/Lexeme");
5
+ /**
6
+ * Parses SQL Server-style escaped identifiers ([table]) and dot-separated identifiers.
7
+ * Returns the list of identifiers and the new index after parsing.
8
+ */
9
+ function parseEscapedOrDotSeparatedIdentifiers(lexemes, index) {
10
+ let idx = index;
11
+ const identifiers = [];
12
+ while (idx < lexemes.length) {
13
+ if (lexemes[idx].type & Lexeme_1.TokenType.OpenBracket) {
14
+ idx++; // skip [
15
+ if (idx >= lexemes.length || !(lexemes[idx].type & Lexeme_1.TokenType.Identifier)) {
16
+ throw new Error(`Expected identifier after '[' at position ${idx}`);
17
+ }
18
+ identifiers.push(lexemes[idx].value);
19
+ idx++;
20
+ if (idx >= lexemes.length || lexemes[idx].value !== "]") {
21
+ throw new Error(`Expected closing ']' after identifier at position ${idx}`);
22
+ }
23
+ idx++; // skip ]
24
+ }
25
+ else if (lexemes[idx].type & Lexeme_1.TokenType.Identifier) {
26
+ identifiers.push(lexemes[idx].value);
27
+ idx++;
28
+ }
29
+ else {
30
+ break;
31
+ }
32
+ // Handle dot for schema.table or db.schema.table
33
+ if (idx < lexemes.length && (lexemes[idx].type & Lexeme_1.TokenType.Dot)) {
34
+ idx++; // skip dot
35
+ }
36
+ else {
37
+ break;
38
+ }
39
+ }
40
+ return { identifiers, newIndex: idx };
41
+ }
42
+ //# sourceMappingURL=parseEscapedOrDotSeparatedIdentifiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseEscapedOrDotSeparatedIdentifiers.js","sourceRoot":"","sources":["../../src/utils/parseEscapedOrDotSeparatedIdentifiers.ts"],"names":[],"mappings":";;AAMA,sFA6BC;AAnCD,6CAAqD;AAErD;;;GAGG;AACH,SAAgB,qCAAqC,CAAC,OAAiB,EAAE,KAAa;IAClF,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,kBAAS,CAAC,WAAW,EAAE,CAAC;YAC5C,GAAG,EAAE,CAAC,CAAC,SAAS;YAChB,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,kBAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;YACN,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,GAAG,EAAE,CAAC,CAAC,SAAS;QACpB,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,kBAAS,CAAC,UAAU,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACJ,MAAM;QACV,CAAC;QACD,iDAAiD;QACjD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,kBAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,GAAG,EAAE,CAAC,CAAC,WAAW;QACtB,CAAC;aAAM,CAAC;YACJ,MAAM;QACV,CAAC;IACL,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rawsql-ts",
3
- "version": "0.2.0-beta",
3
+ "version": "0.3.0-beta",
4
4
  "description": "[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",