UNPKG

shyft

Version:

Model driven GraphQL API framework

100 lines (99 loc) 4.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.i18nTransformFilterAttributeName = exports.i18nDataSerializer = exports.i18nDataParser = void 0; var StorageTypePostgres_1 = __importDefault(require("./StorageTypePostgres")); var __1 = require(".."); var i18nDataParser = function (_, // why ts-ignore? dataShaperMap does not exist on type RegistryEntity // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore _a) { var data = _a.data, entity = _a.entity, dataShaperMap = _a.model.dataShaperMap; var i18nAttributeNames = entity.getI18nAttributeNames(); if (!i18nAttributeNames || !data) { return data; } var languages = StorageTypePostgres_1.default.getStorageConfiguration() .getParentConfiguration() .getLanguages(); i18nAttributeNames.map(function (attributeName) { var attributeStorageName = dataShaperMap[attributeName]; var i18nValues = data.i18n ? data.i18n[attributeStorageName] || {} : {}; languages.map(function (language, langIdx) { var key = attributeName + ".i18n"; data[key] = data[key] || {}; if (langIdx === 0) { data[key][language] = data[attributeName]; } else { data[key][language] = i18nValues[language]; } }); }); return null; }; exports.i18nDataParser = i18nDataParser; var i18nDataSerializer = function (_, // why ts-ignore? dataShaperMap does not exist on type RegistryEntity // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore _a) { var data = _a.data, entity = _a.entity, mutation = _a.mutation, dataShaperMap = _a.model.dataShaperMap; var i18nAttributeNames = entity.getI18nAttributeNames(); if (!i18nAttributeNames || !data) { return data; } var result = {}; var languages = StorageTypePostgres_1.default.getStorageConfiguration() .getParentConfiguration() .getLanguages(); i18nAttributeNames.map(function (attributeName) { var key = attributeName + ".i18n"; if (!data[key]) { return; } Object.keys(data[key]).map(function (language) { if (!languages.includes(language)) { throw new __1.CustomError("Unknown language '" + language + "' provided in translation of mutation '" + mutation.name + "'", 'I18nError'); } }); var attributeStorageName = dataShaperMap[attributeName]; languages.map(function (language, langIdx) { if (langIdx === 0) { if (typeof data[attributeName] === 'undefined') { if (typeof data[key][language] !== 'undefined') { data[attributeName] = data[key][language]; } } } else { if (typeof data[key][language] !== 'undefined') { result[attributeStorageName] = result[attributeStorageName] || {}; result[attributeStorageName][language] = data[key][language]; } } }); }); return result; }; exports.i18nDataSerializer = i18nDataSerializer; var i18nTransformFilterAttributeName = function (context, entity, modelRegistry) { if (!context || !entity || !modelRegistry) { return function (attributeName) { return attributeName; }; } var i18nLanguage = context.i18nLanguage, i18nDefaultLanguage = context.i18nDefaultLanguage; var attributes = entity.getAttributes(); var reverseDataShaperMap = modelRegistry[entity.name].reverseDataShaperMap; return function (storageAttributeName) { var attributeName = reverseDataShaperMap[storageAttributeName]; var attribute = attributes[attributeName]; if (!attribute || !attribute.i18n || i18nLanguage === i18nDefaultLanguage) { return storageAttributeName; } return "i18n->'" + storageAttributeName + "'->>'" + i18nLanguage + "'"; }; }; exports.i18nTransformFilterAttributeName = i18nTransformFilterAttributeName;