Skip to content
Snippets Groups Projects
Commit 3478b876 authored by richard.petersen's avatar richard.petersen :sailboat:
Browse files

Escape characters in mime types before creating the regexp

parent 68d65bf9
No related branches found
No related tags found
No related merge requests found
......@@ -399,4 +399,21 @@ describe('File caching service', function () {
// check for files in redis
expect(await redis.client.getBuffer('ui-middleware:554855300:/file.mp3:body')).to.deep.equal(response.body)
})
it('does server svg as gzip (also escapes chars in regex)', async function () {
mockFetch({
'http://ui-server': {
'/manifest.json': generateSimpleViteManifest({}),
'/file.svg': () => new Response([...new Array(2500)].join(' '), { headers: { 'content-type': 'image/svg+xml' } })
}
})
app = await mockApp()
const response = await request(app.server).get('/file.svg')
expect(response.statusCode).to.equal(200)
expect(response.headers['content-encoding']).to.equal('gzip')
// check for files in redis
expect(zlib.gunzipSync(await redis.client.getBuffer('ui-middleware:554855300:/file.svg:body'))).to.deep.equal(response.body)
})
})
......@@ -10,7 +10,7 @@ import { promisify } from 'node:util'
const gzip = promisify(zlib.gzip)
const compressFileSize = Number(process.env.COMPRESS_FILE_SIZE)
const compressionMimeTypes = (process.env.COMPRESS_FILE_TYPES || '').split(' ')
const compressionMimeTypes = (process.env.COMPRESS_FILE_TYPES || '').replace(/([.+*?^$()[\]{}|])/g, '\\$1').split(' ')
const compressionWhitelistRegex = new RegExp(`^(${compressionMimeTypes.join('|')})$`)
export function createWritable (body) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment