shyft
Version:
Model driven GraphQL API framework
96 lines (95 loc) • 4.93 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isConfiguration = exports.Configuration = void 0;
var util_1 = require("../util");
var Schema_1 = require("../schema/Schema");
var constants_1 = require("../constants");
var ProtocolConfiguration_1 = require("../protocol/ProtocolConfiguration");
var StorageConfiguration_1 = require("../storage/StorageConfiguration");
var _ = __importStar(require("lodash"));
var Configuration = /** @class */ (function () {
function Configuration(setup) {
if (setup === void 0) { setup = {}; }
var languages = setup.languages, schema = setup.schema, protocolConfiguration = setup.protocolConfiguration, storageConfiguration = setup.storageConfiguration;
this.setLanguages(languages || ['en']);
if (schema) {
this.setSchema(schema);
}
if (protocolConfiguration) {
this.setProtocolConfiguration(protocolConfiguration);
}
if (storageConfiguration) {
this.setStorageConfiguration(storageConfiguration);
}
}
Configuration.prototype.setLanguages = function (languages) {
util_1.passOrThrow(util_1.isArray(languages, true), function () { return 'Configuration.setLanguages() expects a list of language iso codes'; });
languages.map(function (language) {
util_1.passOrThrow(constants_1.languageIsoCodeRegex.test(language), function () {
return "Invalid language iso code '" + language + "' provided (Regex: /" + constants_1.LANGUAGE_ISO_CODE_PATTERN + "/)";
});
});
util_1.passOrThrow(languages.length === _.uniq(languages).length, function () { return 'Language codes should be unique in the list'; });
this.languages = languages;
};
Configuration.prototype.getLanguages = function () {
return this.languages;
};
Configuration.prototype.getDefaultLanguage = function () {
return this.getLanguages()[0];
};
Configuration.prototype.setSchema = function (schema) {
util_1.passOrThrow(Schema_1.isSchema(schema), function () { return 'Configuration expects a valid schema'; });
this.schema = schema;
};
Configuration.prototype.getSchema = function () {
util_1.passOrThrow(this.schema, function () { return 'Configuration is missing a valid schema'; });
return this.schema;
};
Configuration.prototype.setProtocolConfiguration = function (protocolConfiguration) {
var _this = this;
util_1.passOrThrow(ProtocolConfiguration_1.isProtocolConfiguration(protocolConfiguration), function () { return 'Configuration expects a valid protocolConfiguration'; });
this.protocolConfiguration = protocolConfiguration;
protocolConfiguration.getParentConfiguration = function () { return _this; };
};
Configuration.prototype.getProtocolConfiguration = function () {
util_1.passOrThrow(this.protocolConfiguration, function () { return 'Configuration is missing a valid protocolConfiguration'; });
return this.protocolConfiguration;
};
Configuration.prototype.setStorageConfiguration = function (storageConfiguration) {
var _this = this;
util_1.passOrThrow(StorageConfiguration_1.isStorageConfiguration(storageConfiguration), function () { return 'Configuration expects a valid storageConfiguration'; });
this.storageConfiguration = storageConfiguration;
storageConfiguration.getParentConfiguration = function () { return _this; };
};
Configuration.prototype.getStorageConfiguration = function () {
util_1.passOrThrow(this.storageConfiguration, function () { return 'Configuration is missing a valid storageConfiguration'; });
return this.storageConfiguration;
};
return Configuration;
}());
exports.Configuration = Configuration;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var isConfiguration = function (obj) {
return obj instanceof Configuration;
};
exports.isConfiguration = isConfiguration;