typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
78 lines (76 loc) • 3.08 kB
JavaScript
/**
* Common driver utility functions.
*/
var DriverUtils = /** @class */ (function () {
function DriverUtils() {
}
// -------------------------------------------------------------------------
// Public Static Methods
// -------------------------------------------------------------------------
/**
* Normalizes and builds a new driver options.
* Extracts settings from connection url and sets to a new options object.
*/
DriverUtils.buildDriverOptions = function (options, buildOptions) {
if (options.url) {
var parsedUrl = this.parseConnectionUrl(options.url);
if (buildOptions && buildOptions.useSid) {
var urlDriverOptions = {
type: options.type,
host: parsedUrl.host,
username: parsedUrl.username,
password: parsedUrl.password,
port: parsedUrl.port,
sid: parsedUrl.database
};
return Object.assign(urlDriverOptions, options);
}
else {
var urlDriverOptions = {
type: options.type,
host: parsedUrl.host,
username: parsedUrl.username,
password: parsedUrl.password,
port: parsedUrl.port,
database: parsedUrl.database
};
return Object.assign(urlDriverOptions, options);
}
}
return Object.assign({}, options);
};
// -------------------------------------------------------------------------
// Private Static Methods
// -------------------------------------------------------------------------
/**
* Extracts connection data from the connection url.
*/
DriverUtils.parseConnectionUrl = function (url) {
var firstSlashes = url.indexOf("//");
var preBase = url.substr(firstSlashes + 2);
var secondSlash = preBase.indexOf("/");
var base = (secondSlash !== -1) ? preBase.substr(0, secondSlash) : preBase;
var afterBase = (secondSlash !== -1) ? preBase.substr(secondSlash + 1) : undefined;
var lastAtSign = base.lastIndexOf("@");
var usernameAndPassword = base.substr(0, lastAtSign);
var hostAndPort = base.substr(lastAtSign + 1);
var username = usernameAndPassword;
var password = "";
var firstColon = usernameAndPassword.indexOf(":");
if (firstColon !== -1) {
username = usernameAndPassword.substr(0, firstColon);
password = usernameAndPassword.substr(firstColon + 1);
}
var _a = hostAndPort.split(":"), host = _a[0], port = _a[1];
return {
host: host,
username: username,
password: password,
port: port ? parseInt(port) : undefined,
database: afterBase || undefined
};
};
return DriverUtils;
}());
export { DriverUtils };
//# sourceMappingURL=DriverUtils.js.map