79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
// @ts-check
|
|
|
|
const fs = require("fs")
|
|
const {defineEventHandler, defaultContentType, handleCacheHeaders} = require("h3")
|
|
const {sync, router} = require("../passthrough")
|
|
|
|
/** @type {import("../pug-sync")} */
|
|
const pugSync = sync.require("../pug-sync")
|
|
|
|
// Routes
|
|
|
|
sync.require("./app")
|
|
sync.require("./collection-stats")
|
|
sync.require("./load-collection")
|
|
sync.require("./home")
|
|
sync.require("./play")
|
|
sync.require("./settings")
|
|
|
|
// Files
|
|
|
|
router.get("/static/stacks.css", defineEventHandler({
|
|
onBeforeResponse: pugSync.compressResponse,
|
|
handler: async event => {
|
|
handleCacheHeaders(event, {maxAge: 86400})
|
|
defaultContentType(event, "text/css")
|
|
return fs.promises.readFile(require.resolve("@stackoverflow/stacks/dist/css/stacks.css"), "utf-8")
|
|
}
|
|
}))
|
|
|
|
router.get("/static/style.css", defineEventHandler({
|
|
onBeforeResponse: pugSync.compressResponse,
|
|
handler: async event => {
|
|
defaultContentType(event, "text/css")
|
|
return fs.promises.readFile("public/style.css", "utf-8")
|
|
}
|
|
}))
|
|
|
|
router.get("/static/htmx.js", defineEventHandler({
|
|
onBeforeResponse: pugSync.compressResponse,
|
|
handler: async event => {
|
|
handleCacheHeaders(event, {maxAge: 86400})
|
|
defaultContentType(event, "text/javascript")
|
|
return Promise.all(["htmx.org/dist/htmx.js"].map(r =>
|
|
fs.promises.readFile(require.resolve(r), "utf-8")
|
|
)).then(files => files.join("\n\n\n"))
|
|
}
|
|
}))
|
|
|
|
router.get("/static/wordcloud.js", defineEventHandler({
|
|
onBeforeResponse: pugSync.compressResponse,
|
|
handler: async event => {
|
|
handleCacheHeaders(event, {maxAge: 86400})
|
|
defaultContentType(event, "text/javascript")
|
|
return fs.promises.readFile(require.resolve("wordcloud/src/wordcloud2.js"), "utf-8")
|
|
}
|
|
}))
|
|
|
|
router.get("/static/player-marker.js", defineEventHandler({
|
|
handler: async event => {
|
|
defaultContentType(event, "text/javascript")
|
|
return fs.promises.readFile("public/player-marker.js")
|
|
}
|
|
}))
|
|
|
|
router.get("/favicon.png", defineEventHandler({
|
|
handler: async event => {
|
|
handleCacheHeaders(event, {maxAge: 86400})
|
|
defaultContentType(event, "image/png")
|
|
return fs.promises.readFile("public/favicon.png")
|
|
}
|
|
}))
|
|
|
|
router.get("/missing-art.png", defineEventHandler({
|
|
handler: async event => {
|
|
handleCacheHeaders(event, {maxAge: 86400})
|
|
defaultContentType(event, "image/png")
|
|
return fs.promises.readFile("public/missing-art.png")
|
|
}
|
|
}))
|