Package Exports
- @memberjunction/sqlglot-ts
- @memberjunction/sqlglot-ts/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@memberjunction/sqlglot-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@memberjunction/sqlglot-ts
A TypeScript wrapper for Python's sqlglot SQL transpiler. Provides deterministic, verifiable SQL dialect conversion via a managed local Python FastAPI microservice.
Features
- 31 SQL dialects supported (T-SQL, PostgreSQL, MySQL, Snowflake, BigQuery, etc.)
- Deterministic conversion — no LLM randomness, reproducible results
- Zero MemberJunction dependencies — standalone community package
- Ephemeral port binding — microservice runs on
127.0.0.1with auto-assigned port - Managed lifecycle — automatic startup/shutdown of the Python process
- Statement-by-statement mode — individual statement tracking, one failure doesn't block others
Prerequisites
- Python 3.9+ with the pinned dependencies installed:
pip install -r requirements.txtDependencies (sqlglot, fastapi, uvicorn, pydantic) are pinned in requirements.txt so conversion output is reproducible. See the comments in that file for the upgrade procedure.
Usage
import { SqlGlotClient } from '@memberjunction/sqlglot-ts';
const client = new SqlGlotClient();
await client.start();
// Transpile T-SQL to PostgreSQL
const result = await client.transpile(
"SELECT ISNULL(col, 0) FROM [dbo].[MyTable]",
{ fromDialect: 'tsql', toDialect: 'postgres' }
);
console.log(result.sql);
// Output: SELECT COALESCE(col, 0) FROM "dbo"."MyTable";
// Statement-by-statement mode
const stmtResult = await client.transpileStatements(
"SELECT TOP 10 * FROM Users; SELECT GETDATE();",
{ fromDialect: 'tsql', toDialect: 'postgres' }
);
console.log(stmtResult.statements);
// Parse SQL to AST
const ast = await client.parse(
"SELECT 1",
{ dialect: 'postgres' }
);
// List supported dialects
const dialects = await client.getDialects();
// Health check
const health = await client.health();
await client.stop();API
SqlGlotClient
Constructor Options
| Option | Type | Default | Description |
|---|---|---|---|
pythonPath |
string |
'python3' |
Path to Python executable |
serverPath |
string |
auto-detected | Path to server.py |
startupTimeoutMs |
number |
30000 |
Max ms to wait for server startup |
requestTimeoutMs |
number |
60000 |
Max ms per HTTP request |
Methods
start()— Start the Python microservicestop()— Stop the Python microservicetranspile(sql, options)— Transpile SQL between dialects (batch)transpileStatements(sql, options)— Transpile statement-by-statementparse(sql, options)— Parse SQL to AST (JSON)getDialects()— List all supported dialectshealth()— Server health check
Attribution
This package wraps the excellent sqlglot Python library by Toby Mao and contributors. sqlglot provides a comprehensive SQL parser, transpiler, and optimizer supporting 31 SQL dialects with 8,900+ stars and 7,000+ commits.
License
ISC