DSN Parser

1.0.3 · maintenance · verified Wed Apr 22

The `dsn-parser` package (currently at version 1.0.3) provides a fluent API for parsing and constructing database connection strings (DSNs). It supports common DSN formats, extracting components such as driver, user, password, host, port, database name, and query parameters. A primary use case demonstrated is parsing Heroku-style PostgreSQL environment variables (`pgsql://user:pass@host:port/database`) into an object format compatible with popular database drivers like `node-postgres`. The library can also be used to programmatically build DSNs from individual components, offering a concise way to manage database connection configurations. It is a focused utility library solely for DSN manipulation.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates parsing a database connection string from an environment variable and extracting its components for use with a client like `node-postgres`, then building a new DSN programmatically.

const DSNParser = require('dsn-parser');
const pg = require('pg'); // Example consumer, install 'pg' separately

// Simulate Heroku environment variable
process.env.HEROKU_POSTGRESQL_COPPER_URL = 'pgsql://user:pass@127.0.0.1:5432/my_db?sslmode=verify-full&application_name=myapp';

console.log('--- Parsing DSN ---');
// Parse the DSN string
const dsn = new DSNParser(process.env.HEROKU_POSTGRESQL_COPPER_URL);
const config = dsn.getParts();

console.log('Parsed DSN configuration:', config);
/*
Example output:
{
  driver: 'pgsql',
  user: 'user',
  password: 'pass',
  host: '127.0.0.1',
  port: 5432,
  database: 'my_db',
  params: { sslmode: 'verify-full', application_name: 'myapp' }
}
*/

// This config object can then be used with database clients, e.g., node-postgres
// try {
//   const pool = new pg.Pool(config);
//   console.log('PG Pool config prepared. First client connect:', await pool.connect());
//   await pool.end();
// } catch (error) {
//   console.error('Failed to connect with pg:', error.message);
// }

console.log('\n--- Building DSN ---');
// Modify and rebuild a DSN
const newDsn = new DSNParser();
newDsn.set('driver', 'mysql')
    .set('user', 'root')
    .set('password', 'mysecurepass')
    .set('host', 'localhost')
    .set('port', 3306)
    .set('database', 'my_application_db')
    .set('params', {
        charset: 'utf8mb4',
        timezone: 'Z'
    });

console.log('Built DSN string:', newDsn.getDSN());
// Expected output: mysql://root:mysecurepass@localhost:3306/my_application_db?charset=utf8mb4&timezone=Z

view raw JSON →