run([$config['node'], $config['script'], $sorgente, $destinazione]); } catch (Throwable $e) { // Es. Node non trovato (NODE_BINARY) o timeout. throw new Modello3dNonValido('Compressione Draco non avviata: '.$e->getMessage(), previous: $e); } if ($risultato->failed() || ! is_file($destinazione) || filesize($destinazione) === 0) { $errore = trim($risultato->errorOutput()) ?: trim($risultato->output()); throw new Modello3dNonValido('Compressione Draco non riuscita: '.(Str::limit($errore, 300) ?: 'errore sconosciuto').'.'); } } }