UNPKG

shyft

Version:

Model driven GraphQL API framework

96 lines (95 loc) 4.93 kB
"use strict"; 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;