Registry / devops / gen-sql-type

gen-sql-type

JSON →
library1.0.1jsnpmunverified

A TypeScript code generation library that parses raw SQL statements and generates TypeScript types for result rows and named parameters. Version 1.0.1 is the latest stable release. This library works isomorphic (Node.js and browser) and supports SELECT, UPDATE, DELETE, INSERT statements, alias columns, function calls, quoted identifiers, named parameters, and WITH clauses. It generates both row types and parameter types automatically at runtime or build time. Unlike SQL-to-TypeScript tools that require a database connection, gen-sql-type works purely from SQL strings without schema introspection.

npm install gen-sql-type
INSTALL
IMPORT
SIG · GEN-SQL-TYPE
G
gen-sql-type
devopsjavascriptv1.0.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

SqlTypeFile
import { SqlTypeFile } from 'gen-sql-type'
import * as genSqlType from 'gen-sql-type'
Default export not available; must use named import
SqlTypeFile
const { SqlTypeFile } = require('gen-sql-type')
const SqlTypeFile = require('gen-sql-type')
CJS require with destructuring
type (inferred type)
import type { LoginUserRow, LoginUserParameters } from './user-service.types'
import { LoginUserRow } from 'gen-sql-type'
Types are generated locally, not exported from the package

Demonstrates importing SqlTypeFile, wrapping a SQL statement to generate TypeScript types for result rows and parameters.

import { SqlTypeFile } from 'gen-sql-type'; const sqlTypeFile = new SqlTypeFile(); // Wrap a SQL statement to generate types const sql = sqlTypeFile.wrapSql( 'GetUser', 'select id, name, email from users where active = :active' ); // This will generate a file e.g. <filename>.types.ts with: // export type GetUserParameters = { active: any } // export type GetUserRow = { id: any; name: any; email: any } // Use the generated types in your code import type { GetUserRow, GetUserParameters } from './types'; async function getUsers(params: GetUserParameters): Promise<GetUserRow[]> { const sql = sqlTypeFile.wrapSql('GetUsers', 'select id, name from users where active = :active'); return mockExec(sql, params); }
Debug
Known issues
gotchaGenerated column types are 'any' — no actual type inference from SQL expressions (e.g., COUNT(*) becomes any)
fix
Manually override types using type assertions or post-process generated file
affects: >=1.0.0
gotchaThe wrapSql method requires a unique query name to avoid collisions in the generated types file
fix
Ensure each wrapSql call has a distinct name argument, preferably using __filename or a constant
affects: >=1.0.0
gotchaGenerated types file is overwritten each time wrapSql is called — do not manually edit the .types.ts file
fix
Use separate generated files or post-generation transformations
affects: >=1.0.0
Errors
Common errors & fixes
TypeError: SqlTypeFile is not a constructor
Using wrong import pattern (e.g., default import instead of named import)
fix
Use `import { SqlTypeFile } from 'gen-sql-type'` or `const { SqlTypeFile } = require('gen-sql-type')`
Cannot find module 'gen-sql-type' or its corresponding type declarations
Package does not ship TypeScript declarations (types) in its npm bundle? Actually it does, but path may be wrong
fix
Ensure tsconfig.json includes node_modules/@types or set `moduleResolution: node`. Reinstall package.
Duplicate identifier 'GetUserRow'
Two wrapSql calls with the same query name, generating duplicate type definitions
fix
Use unique names for each SQL query, e.g., include table name or file path
Upgrade
Version history
1.0.1latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
4 hits · last 30 days
node
4
Resources
gen-sql-type — npm install gen-sql-type · libregistry