Skip to content

Repository files navigation

Connection String Parser

npm versionLint, Test & Release

This node library is designed to allow the parsing of Connection Strings see https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring

The library also provides the ability to parse SQL Connection Strings.

Usage

Parsing connection strings

The library comes with a generic connection string parser that will parse through valid connection strings and produce a key-value readonly Map of the entries in that string. No additional validation is performed.

const{ parse }=require('@tediousjs/connection-string');constconnectionString='User ID=user;Password=password;Initial Catalog=AdventureWorks;Server=MySqlServer';constparsed=parse(connectionString);console.log(parsed);

Output to the console will be:

Map(4) {
'user id' => 'user',
'password' => 'password',
'initial catalog' => 'AdventureWorks',
'server' => 'MySqlServer'
}

Parsing SQL connection strings

SQL connection strings can be parsed to a JSON object using the toSchema() method and the provided MSSQL_SCHEMA.

const{ parse,MSSQL_SCHEMA}=require('@tediousjs/connection-string');constconnectionString='User ID=user;Password=password;Initial Catalog=AdventureWorks;Server=MySqlServer';constparsed=parse(connectionString);console.log(parsed.toSchema(MSSQL_SCHEMA));

Output to console will be:

{
"data source": "MySqlServer",
"initial catalog": "AdventureWorks",
"password": "password",
"user id":"user"
}

NB: The Server property from the connection string has been re-written to the value Data Source

Custom schemas

If you need to parse a connection string into a custom schema, the format is as follows:

import{parse}from'@tediousjs/connection-string';// a keyed map of name => configconstschema={'a string': {type: 'string',default: 'a default value',aliases: ['other','allowed','names'],},'a number': {type: 'number',default: 123,},'a boolean': {type: 'boolean',default: true,},};constparsed=parse('a string=test;a number=987;a boolean=false;other value=missing');console.log(parsed.toSchema(schema));

Output:

{
"a string": "test",
"a number": 987,
"a boolean": false
}

Accessing properties

The parsed connection string object is a readonly Map with an overloadded get() method allowing coercion of the value:

import{parse}from'@tediousjs/connection-string';constparsed=parse('a string=test;a number=987;a boolean=false;other value=missing');// all values are strings by defaultconsole.log(parsed.get('a number'));// "987"// values can be coersed to an expected typeconsole.log(parsed.get('a number','number'));// 987// coersion will be permissive in its type coersionconsole.log(parsed.get('a number','boolean'));// true

About

A connection string parsing library

Resources

Stars

9 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages