@rokmohar/medusa-plugin-meilisearch
Version:
Meilisearch plugin for Medusa 2
129 lines • 12.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformCategory = exports.transformProduct = void 0;
const types_1 = require("../types");
const transformProduct = (product, options) => {
const { i18n, language, fallbackLanguage, includeAllTranslations, translatableFields: customTranslatableFields, translations = {}, } = options ?? {};
if (!i18n) {
return { ...product };
}
const defaultLang = i18n.defaultLanguage;
const currentLang = language ?? defaultLang;
// Determine translatable fields
let translatableFields = (customTranslatableFields ?? i18n.translatableFields ?? []).map(types_1.normalizeFieldConfig);
if (i18n.strategy === 'field-suffix') {
const result = { ...product };
// If no fields specified and using field-suffix strategy,
// auto-detect string fields as translatable
if (!translatableFields.length) {
translatableFields = Object.entries(product)
.filter(([, value]) => {
return typeof value === 'string';
})
.map(([key]) => {
return { source: key };
});
}
// For each translatable field, create language-specific fields
translatableFields.forEach((fieldConfig) => {
const sourceField = fieldConfig.source;
const targetField = fieldConfig.target ?? sourceField;
// Get translations for this field
const fieldTranslations = translations[sourceField] ?? [];
if (includeAllTranslations) {
// Include all translations with language suffixes
fieldTranslations.forEach((translation) => {
result[`${targetField}_${translation.language_code}`] = translation.value;
});
}
else {
// Only include current language translation
const translatedValue = (0, types_1.getTranslation)(fieldTranslations, currentLang, fallbackLanguage ?? defaultLang);
if (translatedValue) {
result[`${targetField}_${currentLang}`] = translatedValue;
// Keep the default language value in the original field
if (currentLang === defaultLang) {
result[targetField] = translatedValue;
}
}
}
});
return result;
}
// For separate-index strategy, return the product with translations for current language
const result = { ...product };
translatableFields.forEach((fieldConfig) => {
const sourceField = fieldConfig.source;
const targetField = fieldConfig.target ?? sourceField;
const fieldTranslations = translations[targetField] ?? [];
const translatedValue = (0, types_1.getTranslation)(fieldTranslations, currentLang, fallbackLanguage ?? defaultLang);
if (translatedValue) {
result[targetField] = translatedValue;
}
});
return result;
};
exports.transformProduct = transformProduct;
const transformCategory = (category, options) => {
const { i18n, language, fallbackLanguage, includeAllTranslations, translatableFields: customTranslatableFields, translations = {}, } = options ?? {};
if (!i18n) {
return { ...category };
}
const defaultLang = i18n.defaultLanguage;
const currentLang = language ?? defaultLang;
// Determine translatable fields
let translatableFields = (customTranslatableFields ?? i18n.translatableFields ?? []).map(types_1.normalizeFieldConfig);
if (i18n.strategy === 'field-suffix') {
const result = { ...category };
// If no fields specified and using field-suffix strategy,
// auto-detect string fields as translatable
if (!translatableFields.length) {
translatableFields = Object.entries(category)
.filter(([, value]) => {
return typeof value === 'string';
})
.map(([key]) => {
return { source: key };
});
}
// For each translatable field, create language-specific fields
translatableFields.forEach((fieldConfig) => {
const sourceField = fieldConfig.source;
const targetField = fieldConfig.target ?? sourceField;
// Get translations for this field
const fieldTranslations = translations[sourceField] ?? [];
if (includeAllTranslations) {
// Include all translations with language suffixes
fieldTranslations.forEach((translation) => {
result[`${targetField}_${translation.language_code}`] = translation.value;
});
}
else {
// Only include current language translation
const translatedValue = (0, types_1.getTranslation)(fieldTranslations, currentLang, fallbackLanguage ?? defaultLang);
if (translatedValue) {
result[`${targetField}_${currentLang}`] = translatedValue;
// Keep the default language value in the original field
if (currentLang === defaultLang) {
result[targetField] = translatedValue;
}
}
}
});
return result;
}
// For separate-index strategy, return the category with translations for current language
const result = { ...category };
translatableFields.forEach((fieldConfig) => {
const sourceField = fieldConfig.source;
const targetField = fieldConfig.target ?? sourceField;
const fieldTranslations = translations[targetField] ?? [];
const translatedValue = (0, types_1.getTranslation)(fieldTranslations, currentLang, fallbackLanguage ?? defaultLang);
if (translatedValue) {
result[targetField] = translatedValue;
}
});
return result;
};
exports.transformCategory = transformCategory;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZWlsaXNlYXJjaC91dGlscy90cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxvQ0FRaUI7QUFRVixNQUFNLGdCQUFnQixHQUE4QixDQUN6RCxPQUFnQyxFQUNoQyxPQUEwQixFQUMxQixFQUFFO0lBQ0YsTUFBTSxFQUNKLElBQUksRUFDSixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFBRSx3QkFBd0IsRUFDNUMsWUFBWSxHQUFHLEVBQUUsR0FDbEIsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFBO0lBRWpCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxXQUFXLENBQUE7SUFFM0MsZ0NBQWdDO0lBQ2hDLElBQUksa0JBQWtCLEdBQUcsQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLDRCQUFvQixDQUFDLENBQUE7SUFFOUcsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUE0QixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUE7UUFFdEQsMERBQTBEO1FBQzFELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0Isa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7aUJBQ3pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUNw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