card harness dynamic changes
This commit is contained in:
41
spikes/card-harness/vite.config.mjs
Normal file
41
spikes/card-harness/vite.config.mjs
Normal file
@@ -0,0 +1,41 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import { cardArtRoot, scanCardCatalog, writeCardCatalog } from './scripts/card-catalog.mjs'
|
||||
|
||||
function cardCatalogPlugin() {
|
||||
return {
|
||||
name: 'card-catalog',
|
||||
async buildStart() {
|
||||
const catalog = await writeCardCatalog()
|
||||
if (!catalog.cards.length || catalog.errors.length) {
|
||||
this.error(`Invalid card catalog:\n${catalog.errors.join('\n') || 'No valid card pairs found'}`)
|
||||
}
|
||||
},
|
||||
configureServer(server) {
|
||||
server.middlewares.use('/__card_catalog', async (_request, response) => {
|
||||
try {
|
||||
const catalog = await scanCardCatalog()
|
||||
response.statusCode = 200
|
||||
response.setHeader('Content-Type', 'application/json')
|
||||
response.setHeader('Cache-Control', 'no-store')
|
||||
response.end(JSON.stringify(catalog))
|
||||
} catch (error) {
|
||||
response.statusCode = 500
|
||||
response.setHeader('Content-Type', 'application/json')
|
||||
response.end(JSON.stringify({
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
}))
|
||||
}
|
||||
})
|
||||
server.watcher.add(cardArtRoot)
|
||||
server.watcher.on('all', (_event, path) => {
|
||||
if (path.startsWith(cardArtRoot) && path.toLowerCase().endsWith('.png')) {
|
||||
server.ws.send({ type: 'custom', event: 'card-catalog:update' })
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [cardCatalogPlugin()],
|
||||
})
|
||||
Reference in New Issue
Block a user