ForbesLindesay/atdatabases

TypeScript clients for databases that prevent SQL Injection

636

stars

196

commits

TypeScript

primary language

Aug 19, 2026

updated

www.atdatabases.org
databases
expo
javascript
mysql
nodejs
postgres
promises
sql
sqlite
typescript
Browse cluster: SQL databases and ORMs

README

Safe From HTML Injection

Using tagged template literals for queries, e.g.

db.query(sql`SELECT * FROM users WHERE id=${userID}`);

makes it virtually impossible for SQL Injection attacks to slip in un-noticed. All the @databases libraries enforce the use of the sql tagged template literals, so you can't accidentally miss them.

The query is then passed to your database engine as a separate string and values:

{text: 'SELECT * FROM users WHERE id=?', values: [userID]}

Promises

All the @databases APIs are designed with promises in mind from the get go.

TypeScript

Written in TypeScript, so every module has type safety and type definitions built in.

Modular

Each database driver is published to npm as a separate module, so you don't need to install the ones you don't need.

Package NameVersionDocs
@databases/bigqueryNPM versionhttps://www.atdatabases.org/docs/bigquery
@databases/cacheNPM versionhttps://www.atdatabases.org/docs/cache
@databases/connection-poolNPM versionhttps://www.atdatabases.org/docs/connection-pool
@databases/dataloaderNPM versionhttps://www.atdatabases.org/docs/dataloader
@databases/escape-identifierNPM versionhttps://www.atdatabases.org/docs/escape-identifier
@databases/expoNPM versionhttps://www.atdatabases.org/docs/websql
@databases/lockNPM versionhttps://www.atdatabases.org/docs/lock
@databases/mysqlNPM versionhttps://www.atdatabases.org/docs/mysql
@databases/mysql-testNPM versionhttps://www.atdatabases.org/docs/mysql-test
@databases/mysql-typedNPM versionhttps://www.atdatabases.org/docs/mysql-typed
@databases/pgNPM versionhttps://www.atdatabases.org/docs/pg
@databases/pg-bulkNPM versionhttps://www.atdatabases.org/docs/pg-bulk
@databases/pg-clusterNPM versionhttps://www.atdatabases.org/docs/pg-cluster
@databases/pg-migrationsNPM versionhttps://www.atdatabases.org/docs/pg-migrations
@databases/pg-testNPM versionhttps://www.atdatabases.org/docs/pg-test
@databases/pg-typedNPM versionhttps://www.atdatabases.org/docs/pg-typed
@databases/queueNPM versionhttps://www.atdatabases.org/docs/queue
@databases/split-sql-queryNPM versionhttps://www.atdatabases.org/docs/split-sql-query
@databases/sqlNPM versionhttps://www.atdatabases.org/docs/sql
@databases/sql-commenterNPM versionhttps://www.atdatabases.org/docs/sql-commenter
@databases/sqliteNPM versionhttps://www.atdatabases.org/docs/sqlite
@databases/sqlite-syncNPM versionhttps://www.atdatabases.org/docs/sqlite-sync
@databases/validate-unicodeNPM versionhttps://www.atdatabases.org/docs/validate-unicode
@databases/websqlNPM versionhttps://www.atdatabases.org/docs/websql
@databases/migrations-baseNPM versionNot documented yet
@databases/mock-dbNPM versionNot documented yet
@databases/mock-db-typedNPM versionNot documented yet
@databases/mysql-configNPM versionNot documented yet
@databases/mysql-schema-cliNPM versionNot documented yet
@databases/mysql-schema-introspectNPM versionNot documented yet
@databases/mysql-schema-print-typesNPM versionNot documented yet
@databases/pg-configNPM versionNot documented yet
@databases/pg-connection-stringNPM versionNot documented yet
@databases/pg-createNPM versionNot documented yet
@databases/pg-data-type-idNPM versionNot documented yet
@databases/pg-errorsNPM versionNot documented yet
@databases/pg-schema-cliNPM versionNot documented yet
@databases/pg-schema-introspectNPM versionNot documented yet
@databases/pg-schema-print-typesNPM versionNot documented yet
@databases/push-to-async-iterableNPM versionNot documented yet
@databases/sharedNPM versionNot documented yet
@databases/shared-print-typesNPM versionNot documented yet
@databases/websql-coreNPM versionNot documented yet
@databases/with-containerNPM versionNot documented yet

Check out the website to learn more: https://www.atdatabases.org/

Contributors

ForbesLindesay

140 commits

dependabot[bot]

22 commits

mcollina

7 commits

avaly

5 commits

ForbesLindesay/atdatabases

TypeScript clients for databases that prevent SQL Injection

636

stars

196

commits

TypeScript

primary language

Aug 19, 2026

updated

www.atdatabases.org
databases
expo
javascript
mysql
nodejs
postgres
promises
sql
sqlite
typescript
Browse cluster: SQL databases and ORMs

README

Safe From HTML Injection

Using tagged template literals for queries, e.g.

db.query(sql`SELECT * FROM users WHERE id=${userID}`);

makes it virtually impossible for SQL Injection attacks to slip in un-noticed. All the @databases libraries enforce the use of the sql tagged template literals, so you can't accidentally miss them.

The query is then passed to your database engine as a separate string and values:

{text: 'SELECT * FROM users WHERE id=?', values: [userID]}

Promises

All the @databases APIs are designed with promises in mind from the get go.

TypeScript

Written in TypeScript, so every module has type safety and type definitions built in.

Modular

Each database driver is published to npm as a separate module, so you don't need to install the ones you don't need.

Package NameVersionDocs
@databases/bigqueryNPM versionhttps://www.atdatabases.org/docs/bigquery
@databases/cacheNPM versionhttps://www.atdatabases.org/docs/cache
@databases/connection-poolNPM versionhttps://www.atdatabases.org/docs/connection-pool
@databases/dataloaderNPM versionhttps://www.atdatabases.org/docs/dataloader
@databases/escape-identifierNPM versionhttps://www.atdatabases.org/docs/escape-identifier
@databases/expoNPM versionhttps://www.atdatabases.org/docs/websql
@databases/lockNPM versionhttps://www.atdatabases.org/docs/lock
@databases/mysqlNPM versionhttps://www.atdatabases.org/docs/mysql
@databases/mysql-testNPM versionhttps://www.atdatabases.org/docs/mysql-test
@databases/mysql-typedNPM versionhttps://www.atdatabases.org/docs/mysql-typed
@databases/pgNPM versionhttps://www.atdatabases.org/docs/pg
@databases/pg-bulkNPM versionhttps://www.atdatabases.org/docs/pg-bulk
@databases/pg-clusterNPM versionhttps://www.atdatabases.org/docs/pg-cluster
@databases/pg-migrationsNPM versionhttps://www.atdatabases.org/docs/pg-migrations
@databases/pg-testNPM versionhttps://www.atdatabases.org/docs/pg-test
@databases/pg-typedNPM versionhttps://www.atdatabases.org/docs/pg-typed
@databases/queueNPM versionhttps://www.atdatabases.org/docs/queue
@databases/split-sql-queryNPM versionhttps://www.atdatabases.org/docs/split-sql-query
@databases/sqlNPM versionhttps://www.atdatabases.org/docs/sql
@databases/sql-commenterNPM versionhttps://www.atdatabases.org/docs/sql-commenter
@databases/sqliteNPM versionhttps://www.atdatabases.org/docs/sqlite
@databases/sqlite-syncNPM versionhttps://www.atdatabases.org/docs/sqlite-sync
@databases/validate-unicodeNPM versionhttps://www.atdatabases.org/docs/validate-unicode
@databases/websqlNPM versionhttps://www.atdatabases.org/docs/websql
@databases/migrations-baseNPM versionNot documented yet
@databases/mock-dbNPM versionNot documented yet
@databases/mock-db-typedNPM versionNot documented yet
@databases/mysql-configNPM versionNot documented yet
@databases/mysql-schema-cliNPM versionNot documented yet
@databases/mysql-schema-introspectNPM versionNot documented yet
@databases/mysql-schema-print-typesNPM versionNot documented yet
@databases/pg-configNPM versionNot documented yet
@databases/pg-connection-stringNPM versionNot documented yet
@databases/pg-createNPM versionNot documented yet
@databases/pg-data-type-idNPM versionNot documented yet
@databases/pg-errorsNPM versionNot documented yet
@databases/pg-schema-cliNPM versionNot documented yet
@databases/pg-schema-introspectNPM versionNot documented yet
@databases/pg-schema-print-typesNPM versionNot documented yet
@databases/push-to-async-iterableNPM versionNot documented yet
@databases/sharedNPM versionNot documented yet
@databases/shared-print-typesNPM versionNot documented yet
@databases/websql-coreNPM versionNot documented yet
@databases/with-containerNPM versionNot documented yet

Check out the website to learn more: https://www.atdatabases.org/

Contributors

ForbesLindesay

140 commits

dependabot[bot]

22 commits

mcollina

7 commits

avaly

5 commits

Languages

TypeScript

97.4%

JavaScript

2.6%