// convert-entries.js // Script générique pour convertir un tableau "entries" en objet indexé par id function convertEntriesToObject(jsonInput) { // Parse si c'est une string, sinon utiliser directement const data = typeof jsonInput === 'string' ? JSON.parse(jsonInput) : jsonInput; if (!data || typeof data !== 'object') { throw new Error('Entrée invalide : doit être un objet ou un JSON valide'); } if (!data.entries || !Array.isArray(data.entries)) { throw new Error('L\'objet doit contenir une propriété "entries" qui est un tableau'); } // Conversion du tableau entries en objet const entriesObject = {}; for (const entry of data.entries) { if (!entry || typeof entry !== 'object') { console.warn('Entrée invalide dans le tableau, ignorée :', entry); continue; } if (entry.id === undefined || entry.id === null) { console.warn('Entrée sans ID, ignorée :', entry); continue; } // Créer une copie sans le champ id const { id, ...rest } = entry; entriesObject[entry.id] = { ...rest }; } // Retourner un nouvel objet avec entries converti return { ...data, entries: entriesObject }; } // Gestion des arguments en ligne de commande if (require.main === module) { const fs = require('fs'); // Lire depuis stdin ou argument let input; if (process.argv[2]) { // Premier argument = fichier ou JSON direct try { // Essayer de lire comme fichier input = fs.readFileSync(process.argv[2], 'utf8'); } catch (e) { // Sinon traiter comme JSON string input = process.argv[2]; } } else { // Lire depuis stdin input = fs.readFileSync(process.stdin.fd, 'utf8'); } try { const result = convertEntriesToObject(input); console.log(JSON.stringify(result, null, 2)); } catch (error) { console.error('Erreur:', error.message); process.exit(1); } } // Exporter pour utilisation comme module module.exports = convertEntriesToObject;