const fs = require("fs");
const path = require("path");
const csv = require("csv-parser");
const React = require("react");
const dotenv = require("dotenv");
const ReactDOMServer = require("react-dom/server");
const TemplatePageModule = require("./build/components/jamtracks/JKJamTracksLandingTemplatePage");
const ArtistTemplatePageModule = require("./build/components/jamtracks/JKJamTracksArtistLandingTemplatePage");
var csvFilePath = `jamtracks-for-env/jam_tracks_for_jam_ui.${process.env.USER}.csv`
var artistCsvFilePath = `jamtracks-for-env/jam_tracks_for_jam_ui_artists.${process.env.USER}.csv`
var sitemapPath = path.join(__dirname, "..", "public", "sitemap.xml");
const clear_sitemap = () => {
fs.writeFileSync(sitemapPath, "");
// Add the root element
fs.writeFileSync(sitemapPath, `\n`, { flag: 'a' });
// Add the root url
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}\n`, { flag: 'a' });
// Add standard URLs specific to this site, such as:
// All prefix with /public
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/\n`, { flag: 'a' });
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/privacy\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/help\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/knowledge-base\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/help-desk\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/forum\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/unsubscribe\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/downloads\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/public/downloads-legacy\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/auth/login\n`, { flag: 'a' });
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/auth/signup\n`, { flag: 'a' } );
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/auth/forget-password\n`, { flag: 'a' } );
// Add the closing root element
}
const add_song_to_sitemap = (artistSlug, songSlug) => {
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/backing-tracks/${artistSlug}/${songSlug}\n`, { flag: 'a' });
}
const add_artist_to_sitemap = (artistSlug) => {
fs.writeFileSync(sitemapPath, `${process.env.REACT_APP_BASE_URL}/backing-tracks/${artistSlug}\n`, { flag: 'a' });
}
const close_sitemap = () => {
fs.writeFileSync(sitemapPath, "", { flag: 'a' } );
}
/**
* Loads a CSV file into an array of objects.
* @param {string} csvPath - The path to the CSV file.
* @returns {Promise>} - A promise that resolves with the parsed CSV data.
*/
const load_csv = (csvPath) => {
return new Promise((resolve, reject) => {
const results = [];
fs.createReadStream(csvPath)
.pipe(csv())
.on('data', (data) => results.push(data))
.on('end', () => resolve(results))
.on('error', (error) => reject(error));
});
};
/**
* Finds all songs for a given artist based on the original_artist_slug
* and sorts them alphabetically by the `slug` field.
* @param {string} artistSlug - The original_artist_slug to match.
* @param {Array