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 extension = extname(file)
const stats = await stat(file).catch(() => undefined) 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 res
.status(200) .status(200)
.type(extension.endsWith("tsx") ? "text/javascript" : extension) .type(extension.endsWith("tsx") ? "text/javascript" : extension)
.header("Cache-Control", "public, max-age=604800, immutable") .header("Cache-Control", "public, max-age=604800, immutable")
.sendFile(file) .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) { } catch (error) {
next(error) next(error)
} }
} }
} }
private async transform(asset: Asset) {
for (const transformer of this.transformers) {
const result = await transformer.transform(asset)
if (result) return result
}
}
} }