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.
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'
}
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
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
}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