sqlparser-rs 0.60.1 → 0.60.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,7 +14,6 @@ A SQL parser for JavaScript and TypeScript, powered by [datafusion-sqlparser-rs]
14
14
  - Parse SQL into a detailed Abstract Syntax Tree (AST)
15
15
  - Support for 13+ SQL dialects (PostgreSQL, MySQL, SQLite, BigQuery, etc.)
16
16
  - Full TypeScript type definitions
17
- - Works in Node.js and browsers
18
17
  - Fast and accurate parsing using the battle-tested Rust implementation
19
18
  - Zero native dependencies
20
19
 
@@ -30,22 +29,22 @@ npm install sqlparser-rs
30
29
  import { Parser, GenericDialect, PostgreSqlDialect } from 'sqlparser-rs';
31
30
 
32
31
  // Simple parsing
33
- const statements = await Parser.parse('SELECT * FROM users', new GenericDialect());
32
+ const statements = Parser.parse('SELECT * FROM users', new GenericDialect());
34
33
  console.log(statements);
35
34
 
36
35
  // With specific dialect
37
- const pgStatements = await Parser.parse(
36
+ const pgStatements = Parser.parse(
38
37
  'SELECT * FROM users WHERE id = $1',
39
38
  new PostgreSqlDialect()
40
39
  );
41
40
 
42
41
  // Format SQL
43
- const formatted = await Parser.format('select * from users', new GenericDialect());
42
+ const formatted = Parser.format('select * from users', new GenericDialect());
44
43
  console.log(formatted); // "SELECT * FROM users"
45
44
 
46
45
  // Validate SQL
47
46
  try {
48
- await Parser.validate('SELEC * FROM users', new GenericDialect());
47
+ Parser.validate('SELEC * FROM users', new GenericDialect());
49
48
  } catch (error) {
50
49
  console.log('Invalid SQL:', error.message);
51
50
  }
@@ -61,22 +60,22 @@ The main class for parsing SQL.
61
60
 
62
61
  ```typescript
63
62
  // Parse SQL into statements
64
- const statements = await Parser.parse(sql: string, dialect: Dialect): Promise<Statement[]>;
63
+ const statements = Parser.parse(sql: string, dialect: Dialect): Statement[];
65
64
 
66
65
  // Parse and return JSON string
67
- const json = await Parser.parseToJson(sql: string, dialect: Dialect): Promise<string>;
66
+ const json = Parser.parseToJson(sql: string, dialect: Dialect): string;
68
67
 
69
68
  // Parse and return formatted SQL string
70
- const formatted = await Parser.parseToString(sql: string, dialect: Dialect): Promise<string>;
69
+ const formatted = Parser.parseToString(sql: string, dialect: Dialect): string;
71
70
 
72
71
  // Format SQL (round-trip through parser)
73
- const formatted = await Parser.format(sql: string, dialect: Dialect): Promise<string>;
72
+ const formatted = Parser.format(sql: string, dialect: Dialect): string;
74
73
 
75
74
  // Validate SQL syntax
76
- const isValid = await Parser.validate(sql: string, dialect: Dialect): Promise<boolean>;
75
+ const isValid = Parser.validate(sql: string, dialect: Dialect): boolean;
77
76
 
78
77
  // Get list of supported dialects
79
- const dialects = await Parser.getSupportedDialects(): Promise<string[]>;
78
+ const dialects = Parser.getSupportedDialects(): string[];
80
79
  ```
81
80
 
82
81
  #### Instance Methods (Builder Pattern)
@@ -90,13 +89,7 @@ const parser = new Parser(new PostgreSqlDialect())
90
89
  trailingCommas: true
91
90
  });
92
91
 
93
- // Parse asynchronously
94
- const statements = await parser.parseAsync('SELECT * FROM users');
95
-
96
- // Parse synchronously (requires initWasm() first)
97
- import { initWasm } from 'sqlparser-rs';
98
- await initWasm();
99
- const statements = parser.parseSync('SELECT * FROM users');
92
+ const statements = parser.parse('SELECT * FROM users');
100
93
  ```
101
94
 
102
95
  ### Dialects
@@ -131,7 +124,7 @@ const dialect = dialectFromString('postgresql'); // Returns PostgreSqlDialect in
131
124
  import { Parser, GenericDialect, ParserError } from 'sqlparser-rs';
132
125
 
133
126
  try {
134
- await Parser.parse('SELEC * FROM users', new GenericDialect());
127
+ Parser.parse('SELEC * FROM users', new GenericDialect());
135
128
  } catch (error) {
136
129
  if (error instanceof ParserError) {
137
130
  console.log('Parse error:', error.message);
@@ -149,7 +142,7 @@ Full TypeScript types are provided for the AST:
149
142
  ```typescript
150
143
  import type { Statement, Query, Expr, Ident, ObjectName } from 'sqlparser-rs';
151
144
 
152
- const statements: Statement[] = await Parser.parse('SELECT 1', new GenericDialect());
145
+ const statements: Statement[] = Parser.parse('SELECT 1', new GenericDialect());
153
146
 
154
147
  // Statement is a discriminated union type
155
148
  for (const stmt of statements) {
@@ -198,7 +191,7 @@ npm test
198
191
  This package follows the upstream [sqlparser-rs](https://github.com/apache/datafusion-sqlparser-rs) version:
199
192
 
200
193
  - **Major.Minor** matches the upstream Rust crate version
201
- - **Patch** is for TypeScript binding fixes (e.g., `0.60.1` = upstream `0.60.0` + binding fix)
194
+ - **Patch** is for TypeScript binding fixes (e.g., `0.60.2` = upstream `0.60.0` + binding fix)
202
195
 
203
196
  | This package | sqlparser-rs |
204
197
  |--------------|--------------|
package/dist/cjs/index.js CHANGED
@@ -10,10 +10,10 @@
10
10
  * import { Parser, GenericDialect, PostgreSqlDialect } from 'sqlparser-rs';
11
11
  *
12
12
  * // Simple parsing
13
- * const statements = await Parser.parse('SELECT * FROM users', new GenericDialect());
13
+ * const statements = Parser.parse('SELECT * FROM users', new GenericDialect());
14
14
  *
15
15
  * // With specific dialect
16
- * const pgStatements = await Parser.parse(
16
+ * const pgStatements = Parser.parse(
17
17
  * 'SELECT * FROM users WHERE id = $1',
18
18
  * new PostgreSqlDialect()
19
19
  * );
@@ -23,15 +23,15 @@
23
23
  * .withRecursionLimit(50)
24
24
  * .withOptions({ trailingCommas: true });
25
25
  *
26
- * const ast = await parser.parseAsync('SELECT * FROM users');
26
+ * const ast = parser.parse('SELECT * FROM users');
27
27
  *
28
28
  * // Format SQL
29
- * const formatted = await Parser.format('select * from users', new GenericDialect());
29
+ * const formatted = Parser.format('select * from users', new GenericDialect());
30
30
  * // Returns: "SELECT * FROM users"
31
31
  *
32
32
  * // Validate SQL
33
33
  * try {
34
- * await Parser.validate('SELECT * FRO users', new GenericDialect());
34
+ * Parser.validate('SELECT * FRO users', new GenericDialect());
35
35
  * } catch (e) {
36
36
  * console.log('Invalid SQL:', e.message);
37
37
  * }
@@ -54,11 +54,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
54
54
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
55
55
  };
56
56
  Object.defineProperty(exports, "__esModule", { value: true });
57
- exports.SUPPORTED_DIALECTS = exports.dialectFromString = exports.OracleDialect = exports.HiveDialect = exports.DatabricksDialect = exports.DuckDbDialect = exports.BigQueryDialect = exports.ClickHouseDialect = exports.MsSqlDialect = exports.RedshiftDialect = exports.SnowflakeDialect = exports.SQLiteDialect = exports.PostgreSqlDialect = exports.MySqlDialect = exports.AnsiDialect = exports.GenericDialect = exports.initWasm = exports.Parser = void 0;
57
+ exports.SUPPORTED_DIALECTS = exports.dialectFromString = exports.OracleDialect = exports.HiveDialect = exports.DatabricksDialect = exports.DuckDbDialect = exports.BigQueryDialect = exports.ClickHouseDialect = exports.MsSqlDialect = exports.RedshiftDialect = exports.SnowflakeDialect = exports.SQLiteDialect = exports.PostgreSqlDialect = exports.MySqlDialect = exports.AnsiDialect = exports.GenericDialect = exports.Parser = void 0;
58
58
  // Parser
59
59
  var parser_js_1 = require("./parser.js");
60
60
  Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return parser_js_1.Parser; } });
61
- Object.defineProperty(exports, "initWasm", { enumerable: true, get: function () { return parser_js_1.initWasm; } });
62
61
  // Dialects
63
62
  var dialects_js_1 = require("./dialects.js");
64
63
  Object.defineProperty(exports, "GenericDialect", { enumerable: true, get: function () { return dialects_js_1.GenericDialect; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;;;;;;;;;;;;;;;;;AAEH,SAAS;AACT,yCAA+C;AAAtC,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAGzB,WAAW;AACX,6CAiBuB;AAhBrB,6GAAA,cAAc,OAAA;AACd,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,4GAAA,aAAa,OAAA;AACb,+GAAA,gBAAgB,OAAA;AAChB,8GAAA,eAAe,OAAA;AACf,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA;AACf,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,0GAAA,WAAW,OAAA;AACX,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAIpB,QAAQ;AACR,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;;;;;;;;;;;;;;;;;AAEH,SAAS;AACT,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAGf,WAAW;AACX,6CAiBuB;AAhBrB,6GAAA,cAAc,OAAA;AACd,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,4GAAA,aAAa,OAAA;AACb,+GAAA,gBAAgB,OAAA;AAChB,8GAAA,eAAe,OAAA;AACf,2GAAA,YAAY,OAAA;AACZ,gHAAA,iBAAiB,OAAA;AACjB,8GAAA,eAAe,OAAA;AACf,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,0GAAA,WAAW,OAAA;AACX,4GAAA,aAAa,OAAA;AACb,gHAAA,iBAAiB,OAAA;AACjB,iHAAA,kBAAkB,OAAA;AAIpB,QAAQ;AACR,mDAAiC"}
@@ -1,86 +1,27 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.Parser = void 0;
37
- exports.initWasm = initWasm;
38
4
  const dialects_js_1 = require("./dialects.js");
39
5
  const errors_js_1 = require("./types/errors.js");
40
- // Global WASM module instance
6
+ // Lazily loaded WASM module - loaded synchronously on first access
41
7
  let wasmModule = null;
42
- let wasmInitPromise = null;
43
8
  /**
44
- * Initialize the WASM module
45
- * This is called automatically when needed, but can be called manually for eager loading
9
+ * Get the WASM module (loads synchronously on first access)
46
10
  */
47
- async function initWasm() {
48
- await getWasmModule();
49
- }
50
- /**
51
- * Get or initialize the WASM module
52
- */
53
- async function getWasmModule() {
11
+ function getWasmModule() {
54
12
  if (wasmModule) {
55
13
  return wasmModule;
56
14
  }
57
- if (wasmInitPromise) {
58
- return wasmInitPromise;
15
+ try {
16
+ // Use require() for synchronous loading
17
+ // The path is relative to the compiled output in dist/cjs or dist/esm
18
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
19
+ wasmModule = require('../../wasm/sqlparser_rs_wasm.js');
20
+ return wasmModule;
59
21
  }
60
- wasmInitPromise = (async () => {
61
- try {
62
- // Try to load the WASM module
63
- // Use dynamic path to avoid TypeScript path resolution issues
64
- // The path is relative to the compiled output in dist/cjs or dist/esm
65
- const wasmPath = '../../wasm/sqlparser_rs_wasm.js';
66
- const wasm = await Promise.resolve(`${wasmPath}`).then(s => __importStar(require(s)));
67
- wasmModule = wasm;
68
- return wasmModule;
69
- }
70
- catch (error) {
71
- throw new errors_js_1.WasmInitError(`Failed to initialize WASM module: ${error instanceof Error ? error.message : String(error)}`);
72
- }
73
- })();
74
- return wasmInitPromise;
75
- }
76
- /**
77
- * Get the WASM module synchronously (throws if not initialized)
78
- */
79
- function getWasmModuleSync() {
80
- if (!wasmModule) {
81
- throw new errors_js_1.WasmInitError('WASM module not initialized. Call initWasm() first or use async methods.');
22
+ catch (error) {
23
+ throw new errors_js_1.WasmInitError(`Failed to load WASM module: ${error instanceof Error ? error.message : String(error)}`);
82
24
  }
83
- return wasmModule;
84
25
  }
85
26
  /**
86
27
  * SQL Parser
@@ -92,14 +33,14 @@ function getWasmModuleSync() {
92
33
  * import { Parser, PostgreSqlDialect } from 'sqlparser-rs';
93
34
  *
94
35
  * // Simple parsing
95
- * const statements = await Parser.parse('SELECT * FROM users', new PostgreSqlDialect());
36
+ * const statements = Parser.parse('SELECT * FROM users', new PostgreSqlDialect());
96
37
  *
97
38
  * // With builder pattern
98
39
  * const parser = new Parser(new PostgreSqlDialect())
99
40
  * .withRecursionLimit(50)
100
41
  * .withOptions({ trailingCommas: true });
101
42
  *
102
- * const ast = await parser.parseAsync('SELECT * FROM users');
43
+ * const ast = parser.parse('SELECT * FROM users');
103
44
  * ```
104
45
  */
105
46
  class Parser {
@@ -133,27 +74,13 @@ class Parser {
133
74
  return this;
134
75
  }
135
76
  /**
136
- * Parse SQL statements asynchronously
77
+ * Parse SQL statements
137
78
  *
138
79
  * @param sql - SQL string to parse
139
80
  * @returns Array of parsed statements
140
81
  */
141
- async parseAsync(sql) {
142
- const wasm = await getWasmModule();
143
- return this.parseWithWasm(wasm, sql);
144
- }
145
- /**
146
- * Parse SQL statements synchronously
147
- * Requires WASM module to be initialized first via initWasm()
148
- *
149
- * @param sql - SQL string to parse
150
- * @returns Array of parsed statements
151
- */
152
- parseSync(sql) {
153
- const wasm = getWasmModuleSync();
154
- return this.parseWithWasm(wasm, sql);
155
- }
156
- parseWithWasm(wasm, sql) {
82
+ parse(sql) {
83
+ const wasm = getWasmModule();
157
84
  try {
158
85
  const hasOptions = Object.keys(this.options).length > 0;
159
86
  if (hasOptions) {
@@ -173,7 +100,7 @@ class Parser {
173
100
  // Static methods for simple one-off parsing
174
101
  // ============================================================================
175
102
  /**
176
- * Parse SQL statements (async)
103
+ * Parse SQL statements
177
104
  *
178
105
  * @param sql - SQL string to parse
179
106
  * @param dialect - SQL dialect to use
@@ -181,22 +108,22 @@ class Parser {
181
108
  *
182
109
  * @example
183
110
  * ```typescript
184
- * const statements = await Parser.parse('SELECT 1', new GenericDialect());
111
+ * const statements = Parser.parse('SELECT 1', new GenericDialect());
185
112
  * ```
186
113
  */
187
- static async parse(sql, dialect = new dialects_js_1.GenericDialect()) {
114
+ static parse(sql, dialect = new dialects_js_1.GenericDialect()) {
188
115
  const parser = new Parser(dialect);
189
- return parser.parseAsync(sql);
116
+ return parser.parse(sql);
190
117
  }
191
118
  /**
192
- * Parse SQL and return the AST as a JSON string (async)
119
+ * Parse SQL and return the AST as a JSON string
193
120
  *
194
121
  * @param sql - SQL string to parse
195
122
  * @param dialect - SQL dialect to use
196
123
  * @returns JSON string representation of the AST
197
124
  */
198
- static async parseToJson(sql, dialect = new dialects_js_1.GenericDialect()) {
199
- const wasm = await getWasmModule();
125
+ static parseToJson(sql, dialect = new dialects_js_1.GenericDialect()) {
126
+ const wasm = getWasmModule();
200
127
  try {
201
128
  return wasm.parse_sql_to_json_string(dialect.name, sql);
202
129
  }
@@ -205,14 +132,14 @@ class Parser {
205
132
  }
206
133
  }
207
134
  /**
208
- * Parse SQL and return a formatted string representation (async)
135
+ * Parse SQL and return a formatted string representation
209
136
  *
210
137
  * @param sql - SQL string to parse
211
138
  * @param dialect - SQL dialect to use
212
139
  * @returns String representation of the parsed SQL
213
140
  */
214
- static async parseToString(sql, dialect = new dialects_js_1.GenericDialect()) {
215
- const wasm = await getWasmModule();
141
+ static parseToString(sql, dialect = new dialects_js_1.GenericDialect()) {
142
+ const wasm = getWasmModule();
216
143
  try {
217
144
  return wasm.parse_sql_to_string(dialect.name, sql);
218
145
  }
@@ -227,8 +154,8 @@ class Parser {
227
154
  * @param dialect - SQL dialect to use
228
155
  * @returns Formatted SQL string
229
156
  */
230
- static async format(sql, dialect = new dialects_js_1.GenericDialect()) {
231
- const wasm = await getWasmModule();
157
+ static format(sql, dialect = new dialects_js_1.GenericDialect()) {
158
+ const wasm = getWasmModule();
232
159
  try {
233
160
  return wasm.format_sql(dialect.name, sql);
234
161
  }
@@ -243,8 +170,8 @@ class Parser {
243
170
  * @param dialect - SQL dialect to use
244
171
  * @returns true if valid, throws ParserError if invalid
245
172
  */
246
- static async validate(sql, dialect = new dialects_js_1.GenericDialect()) {
247
- const wasm = await getWasmModule();
173
+ static validate(sql, dialect = new dialects_js_1.GenericDialect()) {
174
+ const wasm = getWasmModule();
248
175
  try {
249
176
  return wasm.validate_sql(dialect.name, sql);
250
177
  }
@@ -255,8 +182,8 @@ class Parser {
255
182
  /**
256
183
  * Get the list of supported dialect names
257
184
  */
258
- static async getSupportedDialects() {
259
- const wasm = await getWasmModule();
185
+ static getSupportedDialects() {
186
+ const wasm = getWasmModule();
260
187
  return wasm.get_supported_dialects();
261
188
  }
262
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -9,10 +9,10 @@
9
9
  * import { Parser, GenericDialect, PostgreSqlDialect } from 'sqlparser-rs';
10
10
  *
11
11
  * // Simple parsing
12
- * const statements = await Parser.parse('SELECT * FROM users', new GenericDialect());
12
+ * const statements = Parser.parse('SELECT * FROM users', new GenericDialect());
13
13
  *
14
14
  * // With specific dialect
15
- * const pgStatements = await Parser.parse(
15
+ * const pgStatements = Parser.parse(
16
16
  * 'SELECT * FROM users WHERE id = $1',
17
17
  * new PostgreSqlDialect()
18
18
  * );
@@ -22,15 +22,15 @@
22
22
  * .withRecursionLimit(50)
23
23
  * .withOptions({ trailingCommas: true });
24
24
  *
25
- * const ast = await parser.parseAsync('SELECT * FROM users');
25
+ * const ast = parser.parse('SELECT * FROM users');
26
26
  *
27
27
  * // Format SQL
28
- * const formatted = await Parser.format('select * from users', new GenericDialect());
28
+ * const formatted = Parser.format('select * from users', new GenericDialect());
29
29
  * // Returns: "SELECT * FROM users"
30
30
  *
31
31
  * // Validate SQL
32
32
  * try {
33
- * await Parser.validate('SELECT * FRO users', new GenericDialect());
33
+ * Parser.validate('SELECT * FRO users', new GenericDialect());
34
34
  * } catch (e) {
35
35
  * console.log('Invalid SQL:', e.message);
36
36
  * }
@@ -39,7 +39,7 @@
39
39
  * @packageDocumentation
40
40
  */
41
41
  // Parser
42
- export { Parser, initWasm } from './parser.js';
42
+ export { Parser } from './parser.js';
43
43
  // Dialects
44
44
  export { GenericDialect, AnsiDialect, MySqlDialect, PostgreSqlDialect, SQLiteDialect, SnowflakeDialect, RedshiftDialect, MsSqlDialect, ClickHouseDialect, BigQueryDialect, DuckDbDialect, DatabricksDialect, HiveDialect, OracleDialect, dialectFromString, SUPPORTED_DIALECTS, } from './dialects.js';
45
45
  // Types
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG/C,WAAW;AACX,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,QAAQ;AACR,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,WAAW;AACX,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,QAAQ;AACR,cAAc,kBAAkB,CAAC"}
@@ -1,49 +1,24 @@
1
1
  import { GenericDialect } from './dialects.js';
2
2
  import { ParserError, WasmInitError } from './types/errors.js';
3
- // Global WASM module instance
3
+ // Lazily loaded WASM module - loaded synchronously on first access
4
4
  let wasmModule = null;
5
- let wasmInitPromise = null;
6
5
  /**
7
- * Initialize the WASM module
8
- * This is called automatically when needed, but can be called manually for eager loading
6
+ * Get the WASM module (loads synchronously on first access)
9
7
  */
10
- export async function initWasm() {
11
- await getWasmModule();
12
- }
13
- /**
14
- * Get or initialize the WASM module
15
- */
16
- async function getWasmModule() {
8
+ function getWasmModule() {
17
9
  if (wasmModule) {
18
10
  return wasmModule;
19
11
  }
20
- if (wasmInitPromise) {
21
- return wasmInitPromise;
12
+ try {
13
+ // Use require() for synchronous loading
14
+ // The path is relative to the compiled output in dist/cjs or dist/esm
15
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
16
+ wasmModule = require('../../wasm/sqlparser_rs_wasm.js');
17
+ return wasmModule;
22
18
  }
23
- wasmInitPromise = (async () => {
24
- try {
25
- // Try to load the WASM module
26
- // Use dynamic path to avoid TypeScript path resolution issues
27
- // The path is relative to the compiled output in dist/cjs or dist/esm
28
- const wasmPath = '../../wasm/sqlparser_rs_wasm.js';
29
- const wasm = await import(/* webpackIgnore: true */ wasmPath);
30
- wasmModule = wasm;
31
- return wasmModule;
32
- }
33
- catch (error) {
34
- throw new WasmInitError(`Failed to initialize WASM module: ${error instanceof Error ? error.message : String(error)}`);
35
- }
36
- })();
37
- return wasmInitPromise;
38
- }
39
- /**
40
- * Get the WASM module synchronously (throws if not initialized)
41
- */
42
- function getWasmModuleSync() {
43
- if (!wasmModule) {
44
- throw new WasmInitError('WASM module not initialized. Call initWasm() first or use async methods.');
19
+ catch (error) {
20
+ throw new WasmInitError(`Failed to load WASM module: ${error instanceof Error ? error.message : String(error)}`);
45
21
  }
46
- return wasmModule;
47
22
  }
48
23
  /**
49
24
  * SQL Parser
@@ -55,14 +30,14 @@ function getWasmModuleSync() {
55
30
  * import { Parser, PostgreSqlDialect } from 'sqlparser-rs';
56
31
  *
57
32
  * // Simple parsing
58
- * const statements = await Parser.parse('SELECT * FROM users', new PostgreSqlDialect());
33
+ * const statements = Parser.parse('SELECT * FROM users', new PostgreSqlDialect());
59
34
  *
60
35
  * // With builder pattern
61
36
  * const parser = new Parser(new PostgreSqlDialect())
62
37
  * .withRecursionLimit(50)
63
38
  * .withOptions({ trailingCommas: true });
64
39
  *
65
- * const ast = await parser.parseAsync('SELECT * FROM users');
40
+ * const ast = parser.parse('SELECT * FROM users');
66
41
  * ```
67
42
  */
68
43
  export class Parser {
@@ -96,27 +71,13 @@ export class Parser {
96
71
  return this;
97
72
  }
98
73
  /**
99
- * Parse SQL statements asynchronously
74
+ * Parse SQL statements
100
75
  *
101
76
  * @param sql - SQL string to parse
102
77
  * @returns Array of parsed statements
103
78
  */
104
- async parseAsync(sql) {
105
- const wasm = await getWasmModule();
106
- return this.parseWithWasm(wasm, sql);
107
- }
108
- /**
109
- * Parse SQL statements synchronously
110
- * Requires WASM module to be initialized first via initWasm()
111
- *
112
- * @param sql - SQL string to parse
113
- * @returns Array of parsed statements
114
- */
115
- parseSync(sql) {
116
- const wasm = getWasmModuleSync();
117
- return this.parseWithWasm(wasm, sql);
118
- }
119
- parseWithWasm(wasm, sql) {
79
+ parse(sql) {
80
+ const wasm = getWasmModule();
120
81
  try {
121
82
  const hasOptions = Object.keys(this.options).length > 0;
122
83
  if (hasOptions) {
@@ -136,7 +97,7 @@ export class Parser {
136
97
  // Static methods for simple one-off parsing
137
98
  // ============================================================================
138
99
  /**
139
- * Parse SQL statements (async)
100
+ * Parse SQL statements
140
101
  *
141
102
  * @param sql - SQL string to parse
142
103
  * @param dialect - SQL dialect to use
@@ -144,22 +105,22 @@ export class Parser {
144
105
  *
145
106
  * @example
146
107
  * ```typescript
147
- * const statements = await Parser.parse('SELECT 1', new GenericDialect());
108
+ * const statements = Parser.parse('SELECT 1', new GenericDialect());
148
109
  * ```
149
110
  */
150
- static async parse(sql, dialect = new GenericDialect()) {
111
+ static parse(sql, dialect = new GenericDialect()) {
151
112
  const parser = new Parser(dialect);
152
- return parser.parseAsync(sql);
113
+ return parser.parse(sql);
153
114
  }
154
115
  /**
155
- * Parse SQL and return the AST as a JSON string (async)
116
+ * Parse SQL and return the AST as a JSON string
156
117
  *
157
118
  * @param sql - SQL string to parse
158
119
  * @param dialect - SQL dialect to use
159
120
  * @returns JSON string representation of the AST
160
121
  */
161
- static async parseToJson(sql, dialect = new GenericDialect()) {
162
- const wasm = await getWasmModule();
122
+ static parseToJson(sql, dialect = new GenericDialect()) {
123
+ const wasm = getWasmModule();
163
124
  try {
164
125
  return wasm.parse_sql_to_json_string(dialect.name, sql);
165
126
  }
@@ -168,14 +129,14 @@ export class Parser {
168
129
  }
169
130
  }
170
131
  /**
171
- * Parse SQL and return a formatted string representation (async)
132
+ * Parse SQL and return a formatted string representation
172
133
  *
173
134
  * @param sql - SQL string to parse
174
135
  * @param dialect - SQL dialect to use
175
136
  * @returns String representation of the parsed SQL
176
137
  */
177
- static async parseToString(sql, dialect = new GenericDialect()) {
178
- const wasm = await getWasmModule();
138
+ static parseToString(sql, dialect = new GenericDialect()) {
139
+ const wasm = getWasmModule();
179
140
  try {
180
141
  return wasm.parse_sql_to_string(dialect.name, sql);
181
142
  }
@@ -190,8 +151,8 @@ export class Parser {
190
151
  * @param dialect - SQL dialect to use
191
152
  * @returns Formatted SQL string
192
153
  */
193
- static async format(sql, dialect = new GenericDialect()) {
194
- const wasm = await getWasmModule();
154
+ static format(sql, dialect = new GenericDialect()) {
155
+ const wasm = getWasmModule();
195
156
  try {
196
157
  return wasm.format_sql(dialect.name, sql);
197
158
  }
@@ -206,8 +167,8 @@ export class Parser {
206
167
  * @param dialect - SQL dialect to use
207
168
  * @returns true if valid, throws ParserError if invalid
208
169
  */
209
- static async validate(sql, dialect = new GenericDialect()) {
210
- const wasm = await getWasmModule();
170
+ static validate(sql, dialect = new GenericDialect()) {
171
+ const wasm = getWasmModule();
211
172
  try {
212
173
  return wasm.validate_sql(dialect.name, sql);
213
174
  }
@@ -218,8 +179,8 @@ export class Parser {
218
179
  /**
219
180
  * Get the list of supported dialect names
220
181
  */
221
- static async getSupportedDialects() {
222
- const wasm = await getWasmModule();
182
+ static getSupportedDialects() {
183
+ const wasm = getWasmModule();
223
184
  return wasm.get_supported_dialects();
224
185
  }
225
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA6B/D,8BAA8B;AAC9B,IAAI,UAAU,GAAsB,IAAI,CAAC;AACzC,IAAI,eAAe,GAA+B,IAAI,CAAC;AAEvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa;IAC1B,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACH,8BAA8B;YAC9B,8DAA8D;YAC9D,sEAAsE;YACtE,MAAM,QAAQ,GAAG,iCAAiC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YAC9D,UAAU,GAAG,IAA6B,CAAC;YAC3C,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CACrB,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,aAAa,CACrB,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,MAAM;IAIjB;;;;OAIG;IACH,YAAY,UAAmB,IAAI,cAAc,EAAE;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,KAAa;QAC9B,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAW;QACnB,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAEO,aAAa,CAAC,IAAgB,EAAE,GAAW;QACjD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAExD,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CACxC,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,GAAG,EACH,IAAI,CAAC,OAAO,CACb,CAAC;gBACF,OAAO,MAAqB,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACtD,OAAO,MAAqB,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,4CAA4C;IAC5C,+EAA+E;IAE/E;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,UAAmB,IAAI,cAAc,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,UAAmB,IAAI,cAAc,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,UAAmB,IAAI,cAAc,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,UAAmB,IAAI,cAAc,EAAE;QACtE,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAmB,IAAI,cAAc,EAAE;QACxE,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,oBAAoB;QAC/B,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,10 @@
9
9
  * import { Parser, GenericDialect, PostgreSqlDialect } from 'sqlparser-rs';
10
10
  *
11
11
  * // Simple parsing
12
- * const statements = await Parser.parse('SELECT * FROM users', new GenericDialect());
12
+ * const statements = Parser.parse('SELECT * FROM users', new GenericDialect());
13
13
  *
14
14
  * // With specific dialect
15
- * const pgStatements = await Parser.parse(
15
+ * const pgStatements = Parser.parse(
16
16
  * 'SELECT * FROM users WHERE id = $1',
17
17
  * new PostgreSqlDialect()
18
18
  * );
@@ -22,15 +22,15 @@
22
22
  * .withRecursionLimit(50)
23
23
  * .withOptions({ trailingCommas: true });
24
24
  *
25
- * const ast = await parser.parseAsync('SELECT * FROM users');
25
+ * const ast = parser.parse('SELECT * FROM users');
26
26
  *
27
27
  * // Format SQL
28
- * const formatted = await Parser.format('select * from users', new GenericDialect());
28
+ * const formatted = Parser.format('select * from users', new GenericDialect());
29
29
  * // Returns: "SELECT * FROM users"
30
30
  *
31
31
  * // Validate SQL
32
32
  * try {
33
- * await Parser.validate('SELECT * FRO users', new GenericDialect());
33
+ * Parser.validate('SELECT * FRO users', new GenericDialect());
34
34
  * } catch (e) {
35
35
  * console.log('Invalid SQL:', e.message);
36
36
  * }
@@ -38,7 +38,7 @@
38
38
  *
39
39
  * @packageDocumentation
40
40
  */
41
- export { Parser, initWasm } from './parser.js';
41
+ export { Parser } from './parser.js';
42
42
  export type { ParserOptions } from './parser.js';
43
43
  export { GenericDialect, AnsiDialect, MySqlDialect, PostgreSqlDialect, SQLiteDialect, SnowflakeDialect, RedshiftDialect, MsSqlDialect, ClickHouseDialect, BigQueryDialect, DuckDbDialect, DatabricksDialect, HiveDialect, OracleDialect, dialectFromString, SUPPORTED_DIALECTS, } from './dialects.js';
44
44
  export type { Dialect, DialectName } from './dialects.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG1D,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG1D,cAAc,kBAAkB,CAAC"}
@@ -13,11 +13,6 @@ export interface ParserOptions {
13
13
  */
14
14
  recursionLimit?: number;
15
15
  }
16
- /**
17
- * Initialize the WASM module
18
- * This is called automatically when needed, but can be called manually for eager loading
19
- */
20
- export declare function initWasm(): Promise<void>;
21
16
  /**
22
17
  * SQL Parser
23
18
  *
@@ -28,14 +23,14 @@ export declare function initWasm(): Promise<void>;
28
23
  * import { Parser, PostgreSqlDialect } from 'sqlparser-rs';
29
24
  *
30
25
  * // Simple parsing
31
- * const statements = await Parser.parse('SELECT * FROM users', new PostgreSqlDialect());
26
+ * const statements = Parser.parse('SELECT * FROM users', new PostgreSqlDialect());
32
27
  *
33
28
  * // With builder pattern
34
29
  * const parser = new Parser(new PostgreSqlDialect())
35
30
  * .withRecursionLimit(50)
36
31
  * .withOptions({ trailingCommas: true });
37
32
  *
38
- * const ast = await parser.parseAsync('SELECT * FROM users');
33
+ * const ast = parser.parse('SELECT * FROM users');
39
34
  * ```
40
35
  */
41
36
  export declare class Parser {
@@ -62,23 +57,14 @@ export declare class Parser {
62
57
  */
63
58
  withOptions(options: ParserOptions): Parser;
64
59
  /**
65
- * Parse SQL statements asynchronously
66
- *
67
- * @param sql - SQL string to parse
68
- * @returns Array of parsed statements
69
- */
70
- parseAsync(sql: string): Promise<Statement[]>;
71
- /**
72
- * Parse SQL statements synchronously
73
- * Requires WASM module to be initialized first via initWasm()
60
+ * Parse SQL statements
74
61
  *
75
62
  * @param sql - SQL string to parse
76
63
  * @returns Array of parsed statements
77
64
  */
78
- parseSync(sql: string): Statement[];
79
- private parseWithWasm;
65
+ parse(sql: string): Statement[];
80
66
  /**
81
- * Parse SQL statements (async)
67
+ * Parse SQL statements
82
68
  *
83
69
  * @param sql - SQL string to parse
84
70
  * @param dialect - SQL dialect to use
@@ -86,26 +72,26 @@ export declare class Parser {
86
72
  *
87
73
  * @example
88
74
  * ```typescript
89
- * const statements = await Parser.parse('SELECT 1', new GenericDialect());
75
+ * const statements = Parser.parse('SELECT 1', new GenericDialect());
90
76
  * ```
91
77
  */
92
- static parse(sql: string, dialect?: Dialect): Promise<Statement[]>;
78
+ static parse(sql: string, dialect?: Dialect): Statement[];
93
79
  /**
94
- * Parse SQL and return the AST as a JSON string (async)
80
+ * Parse SQL and return the AST as a JSON string
95
81
  *
96
82
  * @param sql - SQL string to parse
97
83
  * @param dialect - SQL dialect to use
98
84
  * @returns JSON string representation of the AST
99
85
  */
100
- static parseToJson(sql: string, dialect?: Dialect): Promise<string>;
86
+ static parseToJson(sql: string, dialect?: Dialect): string;
101
87
  /**
102
- * Parse SQL and return a formatted string representation (async)
88
+ * Parse SQL and return a formatted string representation
103
89
  *
104
90
  * @param sql - SQL string to parse
105
91
  * @param dialect - SQL dialect to use
106
92
  * @returns String representation of the parsed SQL
107
93
  */
108
- static parseToString(sql: string, dialect?: Dialect): Promise<string>;
94
+ static parseToString(sql: string, dialect?: Dialect): string;
109
95
  /**
110
96
  * Format SQL by parsing and regenerating it (round-trip)
111
97
  *
@@ -113,7 +99,7 @@ export declare class Parser {
113
99
  * @param dialect - SQL dialect to use
114
100
  * @returns Formatted SQL string
115
101
  */
116
- static format(sql: string, dialect?: Dialect): Promise<string>;
102
+ static format(sql: string, dialect?: Dialect): string;
117
103
  /**
118
104
  * Validate SQL syntax without returning the full AST
119
105
  *
@@ -121,10 +107,10 @@ export declare class Parser {
121
107
  * @param dialect - SQL dialect to use
122
108
  * @returns true if valid, throws ParserError if invalid
123
109
  */
124
- static validate(sql: string, dialect?: Dialect): Promise<boolean>;
110
+ static validate(sql: string, dialect?: Dialect): boolean;
125
111
  /**
126
112
  * Get the list of supported dialect names
127
113
  */
128
- static getSupportedDialects(): Promise<string[]>;
114
+ static getSupportedDialects(): string[];
129
115
  }
130
116
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiBD;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C;AA6CD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAgB;IAE/B;;;;OAIG;gBACS,OAAO,GAAE,OAA8B;IAKnD;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKzC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAK3C;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKnD;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAKnC,OAAO,CAAC,aAAa;IAwBrB;;;;;;;;;;;OAWG;WACU,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK9F;;;;;;OAMG;WACU,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IAS/F;;;;;;OAMG;WACU,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IASjG;;;;;;OAMG;WACU,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IAS1F;;;;;;OAMG;WACU,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7F;;OAEG;WACU,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAIvD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAgB;IAE/B;;;;OAIG;gBACS,OAAO,GAAE,OAA8B;IAKnD;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKzC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAK3C;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAyB/B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,SAAS,EAAE;IAK/E;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,MAAM;IAShF;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,MAAM;IASlF;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,MAAM;IAS3E;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAA8B,GAAG,OAAO;IAS9E;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,EAAE;CAIxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sqlparser-rs",
3
- "version": "0.60.1",
3
+ "version": "0.60.2",
4
4
  "description": "A SQL parser for JavaScript and TypeScript, powered by datafusion-sqlparser-rs via WASM",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
package/wasm/README.md CHANGED
@@ -14,7 +14,6 @@ A SQL parser for JavaScript and TypeScript, powered by [datafusion-sqlparser-rs]
14
14
  - Parse SQL into a detailed Abstract Syntax Tree (AST)
15
15
  - Support for 13+ SQL dialects (PostgreSQL, MySQL, SQLite, BigQuery, etc.)
16
16
  - Full TypeScript type definitions
17
- - Works in Node.js and browsers
18
17
  - Fast and accurate parsing using the battle-tested Rust implementation
19
18
  - Zero native dependencies
20
19
 
@@ -30,22 +29,22 @@ npm install sqlparser-rs
30
29
  import { Parser, GenericDialect, PostgreSqlDialect } from 'sqlparser-rs';
31
30
 
32
31
  // Simple parsing
33
- const statements = await Parser.parse('SELECT * FROM users', new GenericDialect());
32
+ const statements = Parser.parse('SELECT * FROM users', new GenericDialect());
34
33
  console.log(statements);
35
34
 
36
35
  // With specific dialect
37
- const pgStatements = await Parser.parse(
36
+ const pgStatements = Parser.parse(
38
37
  'SELECT * FROM users WHERE id = $1',
39
38
  new PostgreSqlDialect()
40
39
  );
41
40
 
42
41
  // Format SQL
43
- const formatted = await Parser.format('select * from users', new GenericDialect());
42
+ const formatted = Parser.format('select * from users', new GenericDialect());
44
43
  console.log(formatted); // "SELECT * FROM users"
45
44
 
46
45
  // Validate SQL
47
46
  try {
48
- await Parser.validate('SELEC * FROM users', new GenericDialect());
47
+ Parser.validate('SELEC * FROM users', new GenericDialect());
49
48
  } catch (error) {
50
49
  console.log('Invalid SQL:', error.message);
51
50
  }
@@ -61,22 +60,22 @@ The main class for parsing SQL.
61
60
 
62
61
  ```typescript
63
62
  // Parse SQL into statements
64
- const statements = await Parser.parse(sql: string, dialect: Dialect): Promise<Statement[]>;
63
+ const statements = Parser.parse(sql: string, dialect: Dialect): Statement[];
65
64
 
66
65
  // Parse and return JSON string
67
- const json = await Parser.parseToJson(sql: string, dialect: Dialect): Promise<string>;
66
+ const json = Parser.parseToJson(sql: string, dialect: Dialect): string;
68
67
 
69
68
  // Parse and return formatted SQL string
70
- const formatted = await Parser.parseToString(sql: string, dialect: Dialect): Promise<string>;
69
+ const formatted = Parser.parseToString(sql: string, dialect: Dialect): string;
71
70
 
72
71
  // Format SQL (round-trip through parser)
73
- const formatted = await Parser.format(sql: string, dialect: Dialect): Promise<string>;
72
+ const formatted = Parser.format(sql: string, dialect: Dialect): string;
74
73
 
75
74
  // Validate SQL syntax
76
- const isValid = await Parser.validate(sql: string, dialect: Dialect): Promise<boolean>;
75
+ const isValid = Parser.validate(sql: string, dialect: Dialect): boolean;
77
76
 
78
77
  // Get list of supported dialects
79
- const dialects = await Parser.getSupportedDialects(): Promise<string[]>;
78
+ const dialects = Parser.getSupportedDialects(): string[];
80
79
  ```
81
80
 
82
81
  #### Instance Methods (Builder Pattern)
@@ -90,13 +89,7 @@ const parser = new Parser(new PostgreSqlDialect())
90
89
  trailingCommas: true
91
90
  });
92
91
 
93
- // Parse asynchronously
94
- const statements = await parser.parseAsync('SELECT * FROM users');
95
-
96
- // Parse synchronously (requires initWasm() first)
97
- import { initWasm } from 'sqlparser-rs';
98
- await initWasm();
99
- const statements = parser.parseSync('SELECT * FROM users');
92
+ const statements = parser.parse('SELECT * FROM users');
100
93
  ```
101
94
 
102
95
  ### Dialects
@@ -131,7 +124,7 @@ const dialect = dialectFromString('postgresql'); // Returns PostgreSqlDialect in
131
124
  import { Parser, GenericDialect, ParserError } from 'sqlparser-rs';
132
125
 
133
126
  try {
134
- await Parser.parse('SELEC * FROM users', new GenericDialect());
127
+ Parser.parse('SELEC * FROM users', new GenericDialect());
135
128
  } catch (error) {
136
129
  if (error instanceof ParserError) {
137
130
  console.log('Parse error:', error.message);
@@ -149,7 +142,7 @@ Full TypeScript types are provided for the AST:
149
142
  ```typescript
150
143
  import type { Statement, Query, Expr, Ident, ObjectName } from 'sqlparser-rs';
151
144
 
152
- const statements: Statement[] = await Parser.parse('SELECT 1', new GenericDialect());
145
+ const statements: Statement[] = Parser.parse('SELECT 1', new GenericDialect());
153
146
 
154
147
  // Statement is a discriminated union type
155
148
  for (const stmt of statements) {
@@ -198,7 +191,7 @@ npm test
198
191
  This package follows the upstream [sqlparser-rs](https://github.com/apache/datafusion-sqlparser-rs) version:
199
192
 
200
193
  - **Major.Minor** matches the upstream Rust crate version
201
- - **Patch** is for TypeScript binding fixes (e.g., `0.60.1` = upstream `0.60.0` + binding fix)
194
+ - **Patch** is for TypeScript binding fixes (e.g., `0.60.2` = upstream `0.60.0` + binding fix)
202
195
 
203
196
  | This package | sqlparser-rs |
204
197
  |--------------|--------------|
package/wasm/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sqlparser-rs-wasm",
3
3
  "description": "WebAssembly bindings for sqlparser-rs SQL parser",
4
- "version": "0.60.1",
4
+ "version": "0.60.2",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
Binary file