@ossareh/typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
96 lines (94 loc) • 3.67 kB
JavaScript
;
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* 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 = __read(hostAndPort.split(":"), 2), host = _a[0], port = _a[1];
return {
host: host,
username: username,
password: password,
port: port ? parseInt(port) : undefined,
database: afterBase || undefined
};
};
return DriverUtils;
}());
exports.DriverUtils = DriverUtils;
//# sourceMappingURL=DriverUtils.js.map