Package Exports
- @tediousjs/connection-string
- @tediousjs/connection-string/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@tediousjs/connection-string) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Connection String Parser
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');
const connectionString = 'User ID=user;Password=password;Initial Catalog=AdventureWorks;Server=MySqlServer';
const parsed = 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');
const connectionString = 'User ID=user;Password=password;Initial Catalog=AdventureWorks;Server=MySqlServer';
const parsed = 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 => config
const schema = {
'a string': {
type: 'string',
default: 'a default value',
aliases: ['other', 'allowed', 'names'],
},
'a number': {
type: 'number',
default: 123,
},
'a boolean': {
type: 'boolean',
default: true,
},
};
const parsed = 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';
const parsed = parse('a string=test;a number=987;a boolean=false;other value=missing');
// all values are strings by default
console.log(parsed.get('a number')); // "987"
// values can be coersed to an expected type
console.log(parsed.get('a number', 'number')); // 987
// coersion will be permissive in its type coersion
console.log(parsed.get('a number', 'boolean')); // true