// esm - Schreibweise mit "import"
import fs from 'node:fs'; // "fs" ist ein Modul aus der Node Standardbib und kann mit Prefix "node:" hervorgehoben werden
import color from 'chalk';

const getFileBy = (path, encoding = 'utf-8') => {
  return new Promise((resolve, reject) => {
    // async process
    fs.readFile(path, encoding, (err, data) => {
      if (err) {
        // console.error(err);
        reject(err);
      }

      // console.log(data);
      resolve(data);
    });
  });
};

const getPromisesFileBy = (path, encoding = 'utf-8') => {
  // Unterobjekt "promises" von fs besitzt Ummantelung von Promise-Objekt und Verarbeitung der Callback-Funktion
  return fs.promises.readFile(path, encoding);
};

// Funktionsaufruf von Funktion mit async process
getFileBy('package.json')
  .then((data) => {
    console.log(color.yellow(data));
  })
  .catch((err) => {
    console.log(color.red(err));
  });

getPromisesFileBy('package.json')
  .then((data) => {
    console.log(color.green(data));
  })
  .catch((err) => {
    console.log(color.magenta(err));
  });
