wip-backup-manager
Version:
This utility enables backup & restore of Kentico Kontent projects
112 lines • 4.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var TranslationHelper = /** @class */ (function () {
function TranslationHelper() {
}
TranslationHelper.prototype.replaceIdReferencesWithExternalId = function (data) {
if (data) {
if (Array.isArray(data)) {
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
var arrayItem = data_1[_i];
this.replaceIdReferencesWithExternalId(arrayItem);
}
}
else {
for (var _a = 0, _b = Object.keys(data); _a < _b.length; _a++) {
var key = _b[_a];
var val = data[key];
if (key.toLowerCase() === 'id') {
var id = data.id;
if (id) {
data.external_id = id;
delete data.id;
}
}
if (typeof val === 'object' && val !== null) {
this.replaceIdReferencesWithExternalId(val);
}
}
}
}
};
TranslationHelper.prototype.replaceIdReferencesWithCodenames = function (data, allData, storedCodenames) {
if (data) {
if (Array.isArray(data)) {
for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {
var arrayItem = data_2[_i];
this.replaceIdReferencesWithCodenames(arrayItem, allData, storedCodenames);
}
}
else {
for (var _a = 0, _b = Object.keys(data); _a < _b.length; _a++) {
var key = _b[_a];
var val = data[key];
if (key.toLowerCase() === 'id') {
var id = data.id;
var codename = data.codename;
if (!codename) {
// replace id with codename
var foundCodename = this.tryFindCodenameForId(id, allData, storedCodenames);
if (foundCodename) {
// remove id prop
delete data.id;
// set codename prop
data.codename = foundCodename;
}
}
}
if (typeof val === 'object' && val !== null) {
this.replaceIdReferencesWithCodenames(val, allData, storedCodenames);
}
}
}
}
};
TranslationHelper.prototype.tryFindCodenameForId = function (findId, data, storedCodenames, foundCodename) {
// try looking up codename in stored references
var storedCodename = storedCodenames[findId];
if (storedCodename) {
return storedCodename;
}
if (data) {
if (Array.isArray(data)) {
for (var _i = 0, data_3 = data; _i < data_3.length; _i++) {
var arrayItem = data_3[_i];
foundCodename = this.tryFindCodenameForId(findId, arrayItem, storedCodenames, foundCodename);
}
}
else {
for (var _a = 0, _b = Object.keys(data); _a < _b.length; _a++) {
var key = _b[_a];
var val = data[key];
var candidateId = void 0;
if (key.toLowerCase() === 'id') {
candidateId = data.id;
}
if (key.toLocaleLowerCase() === 'external_id') {
candidateId = data.external_id;
}
if (candidateId) {
var codename = data.codename;
if (codename) {
// store id -> codename mapping so that we don't have to always
// search for it as its expensive operation
storedCodenames[candidateId] = codename;
}
if (codename && candidateId === findId) {
return codename;
}
}
if (typeof val === 'object' && val !== null) {
foundCodename = this.tryFindCodenameForId(findId, val, storedCodenames, foundCodename);
}
}
}
}
return foundCodename;
};
return TranslationHelper;
}());
exports.TranslationHelper = TranslationHelper;
exports.translationHelper = new TranslationHelper();
//# sourceMappingURL=translation-helper.js.map