streamline asset builder middleware a bit

This commit is contained in:
MapleLeaf
2022-01-07 03:33:48 -06:00
parent 9379556153
commit 0a4a8d87d3

View File

@@ -59,28 +59,29 @@ export class AssetBuilder {
const extension = extname(file)
const stats = await stat(file).catch(() => undefined)
if (stats?.isFile()) {
if (!stats?.isFile()) {
const transformResult = await this.transform(asset)
if (!transformResult) return next()
await mkdir(dirname(file), { recursive: true })
await writeFile(file, transformResult.content)
}
res
.status(200)
.type(extension.endsWith("tsx") ? "text/javascript" : extension)
.header("Cache-Control", "public, max-age=604800, immutable")
.sendFile(file)
return
}
for (const transformer of this.transformers) {
const result = await transformer.transform(asset)
if (result) {
await mkdir(dirname(file), { recursive: true })
await writeFile(file, result.content)
return res.type(extension).send(result.content)
}
}
next()
} catch (error) {
next(error)
}
}
}
private async transform(asset: Asset) {
for (const transformer of this.transformers) {
const result = await transformer.transform(asset)
if (result) return result
}
}
}