manifold/web/next-sitemap.js

44 lines
1.2 KiB
JavaScript
Raw Normal View History

2022-03-24 16:28:36 +00:00
const https = require('https')
/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: process.env.SITE_URL || 'https://manifold.markets',
changefreq: 'hourly',
priority: 0.7, // Set high priority by default
additionalPaths,
exclude: ['/admin'],
generateRobotsTxt: true,
// Other options: https://github.com/iamvishnusankar/next-sitemap#configuration-options
}
// See https://github.com/iamvishnusankar/next-sitemap#additional-paths-function
async function additionalPaths(config) {
// Fetching data from https://docs.manifold.markets/api
const response = await fetch(`${config.siteUrl}/api/v0/markets`)
const liteMarkets = await response
// See https://www.sitemaps.org/protocol.html
return liteMarkets.map((liteMarket) => ({
loc: liteMarket.url,
changefreq: 'hourly',
priority: 0.2, // Individual markets aren't that important
// TODO: Add `lastmod` aka last modified time
}))
}
// Polyfill for fetch: get the JSON contents of a URL
async function fetch(url) {
return new Promise((resolve, reject) => {
https.get(url, (res) => {
let data = ''
res.on('data', (chunk) => {
data += chunk
})
res.on('end', () => {
resolve(JSON.parse(data))
})
})
})
}