@rokmohar/medusa-plugin-meilisearch
Version:
Meilisearch plugin for Medusa 2
63 lines • 6.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
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]) => typeof value === 'string')
.map(([key]) => ({ 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;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZWlsaXNlYXJjaC91dGlscy90cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FPaUI7QUFRVixNQUFNLGdCQUFnQixHQUE4QixDQUFDLE9BQW1CLEVBQUUsT0FBMEIsRUFBRSxFQUFFO0lBQzdHLE1BQU0sRUFDSixJQUFJLEVBQ0osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQzVDLFlBQVksR0FBRyxFQUFFLEdBQ2xCLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUVqQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQTZCLENBQUE7SUFDbEQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUE7SUFDeEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxJQUFJLFdBQVcsQ0FBQTtJQUUzQyxnQ0FBZ0M7SUFDaEMsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsNEJBQW9CLENBQUMsQ0FBQTtJQUU5RyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQTRCLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQTtRQUV0RCwwREFBMEQ7UUFDMUQsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixrQkFBa0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7aUJBQ2hELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3RDLENBQUM7UUFFRCwrREFBK0Q7UUFDL0Qsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDekMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQTtZQUN0QyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQTtZQUVyRCxrQ0FBa0M7WUFDbEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFBO1lBRXpELElBQUksc0JBQXNCLEVBQUUsQ0FBQztnQkFDM0Isa0RBQWtEO2dCQUNsRCxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDeEMsTUFBTSxDQUFDLEdBQUcsV0FBVyxJQUFJLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUE7Z0JBQzNFLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDRDQUE0QztnQkFDNUMsTUFBTSxlQUFlLEdBQUcsSUFBQSxzQkFBYyxFQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsSUFBSSxXQUFXLENBQUMsQ0FBQTtnQkFDdkcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxDQUFDLEdBQUcsV0FBVyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFBO29CQUV6RCx3REFBd0Q7b0JBQ3hELElBQUksV0FBVyxLQUFLLFdBQVcsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsZUFBZSxDQUFBO29CQUN2QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCx5RkFBeUY7SUFDekYsTUFBTSxNQUFNLEdBQTRCLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQTtJQUV0RCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUN6QyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFBO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFBO1FBRXJELE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN6RCxNQUFNLGVBQWUsR0FBRyxJQUFBLHNCQUFjLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixJQUFJLFdBQVcsQ0FBQyxDQUFBO1FBRXZHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLGVBQWUsQ0FBQTtRQUN2QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQTdFWSxRQUFBLGdCQUFnQixvQkE2RTVCIn0=