{"library":"sql-parser-mistic","title":"SQL Parser Mistic","type":"library","description":"The `sql-parser-mistic` package provides a lexer and parser for SQL syntax, specifically designed for JavaScript environments. Currently at version 1.2.3, it primarily focuses on parsing basic `SELECT` queries, supporting features like `WHERE`, `GROUP BY`, `ORDER BY`, `LIMIT`, `CASE/WHEN`, `REGEXP`, `ILIKE`, and `BETWEEN` clauses, as well as sub-selects, functions, types, and named parameters. It processes a SQL query string into a stream of tokens using its lexer, then constructs an Abstract Syntax Tree (AST) via its parser, represented by a `Select` object. This package differentiates itself by its lightweight, JavaScript-centric approach to SQL parsing, allowing programmatic manipulation and reformatting of SQL queries. Release cadence appears to be irregular, with recent minor updates addressing parsing fixes and feature additions within the 1.x line.","language":"javascript","status":"active","last_verified":"Thu Apr 23","install":{"commands":["npm install sql-parser-mistic"],"cli":null},"imports":["import { lexer } from 'sql-parser-mistic';","import { parser } from 'sql-parser-mistic';"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/mistic100/sql-parser","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/sql-parser-mistic","openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import { lexer, parser } from 'sql-parser-mistic';\n\nconst sqlQuery = `\n  SELECT\n    id,\n    name,\n    CASE\n      WHEN status = 'active' THEN 'Enabled'\n      WHEN status = 'inactive' THEN 'Disabled'\n      ELSE 'Unknown'\n    END AS display_status,\n    created_at\n  FROM\n    users\n  WHERE\n    age BETWEEN 18 AND 65\n    AND name ILIKE '%john%'\n  ORDER BY\n    created_at DESC\n  LIMIT 10 OFFSET 0;\n`;\n\ntry {\n  // Step 1: Tokenize the SQL query into a stream of tokens\n  const tokens = lexer.tokenize(sqlQuery);\n  console.log(\"Tokens (first 5):\", tokens.slice(0, 5), \"...\");\n\n  // Step 2: Parse the tokens into an Abstract Syntax Tree (AST)\n  const ast = parser.parse(tokens);\n  console.log(\"\\nParsed AST (simplified properties):\", {\n    type: ast.type,\n    from: ast.from.value,\n    where: ast.where ? 'present' : 'absent',\n    limit: ast.limit ? ast.limit.value : 'absent'\n  });\n\n  // Step 3: Convert the AST back to a formatted SQL string\n  const formattedSql = ast.toString();\n  console.log(\"\\nFormatted SQL from AST:\\n\", formattedSql);\n\n} catch (error) {\n  console.error(\"Error parsing SQL:\", error.message);\n}","lang":"javascript","description":"Demonstrates tokenizing a SQL query, parsing it into an AST, and then converting the AST back into a formatted SQL string using recent features like CASE/WHEN, BETWEEN, and ILIKE.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}