shyft
Version:
Model driven GraphQL API framework
100 lines (99 loc) • 4.29 kB
JavaScript
;
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;