@vulcan-sql/core
Version:
Core package of VulcanSQL
52 lines • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProfilesLookupOptions = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("inversify");
const containers_1 = require("../containers");
const models_1 = require("../models");
const os = require("os");
const path = require("path");
const lodash_1 = require("lodash");
const errors_1 = require("../lib/utils/errors");
let ProfilesLookupOptions = class ProfilesLookupOptions {
constructor(options = []) {
this.lookups = [];
// Default paths
options.push({
type: models_1.ProfilesLookupType.LocalFile,
options: { path: 'profiles.yaml' },
});
options.push({
type: models_1.ProfilesLookupType.LocalFile,
options: { path: path.resolve(os.homedir(), '.vulcan', 'profiles.yaml') },
});
(0, lodash_1.chain)(options)
.map((option) => {
if (typeof option === 'string')
return {
type: models_1.ProfilesLookupType.LocalFile,
options: { path: option },
};
return option;
})
.uniqBy(JSON.stringify)
.forEach((profile) => {
if (!profile.type)
throw new errors_1.ConfigurationError(`Profile config is invalid: ${JSON.stringify(profile)}, "type" is required`);
})
.forEach((profile) => this.lookups.push(profile))
.value();
}
getLookups() {
return this.lookups;
}
};
ProfilesLookupOptions = tslib_1.__decorate([
(0, inversify_1.injectable)(),
tslib_1.__param(0, (0, inversify_1.inject)(containers_1.TYPES.ProfilesLookupInputOptions)),
tslib_1.__param(0, (0, inversify_1.optional)()),
tslib_1.__metadata("design:paramtypes", [Array])
], ProfilesLookupOptions);
exports.ProfilesLookupOptions = ProfilesLookupOptions;
//# sourceMappingURL=profilesLookup.js.map