From 04f794bf55f8191ea9eed62f545b812f346017d8 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Sat, 27 Jan 2024 23:03:18 +0530 Subject: [PATCH] fix: lazy evaluate known extensions to allow env set in config --- src/shared/shared.ts | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/shared/shared.ts b/src/shared/shared.ts index bf36fdbb..ea5d2cb9 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -175,24 +175,29 @@ export function slash(p: string): string { return p.replace(/\\/g, '/') } -const extraExts = - (typeof process === 'object' && process.env.VITE_EXTRA_EXTENSIONS) || - (import.meta as any).env?.VITE_EXTRA_EXTENSIONS || - '' - -// md, html? are intentionally omitted, see treatAsHtml -const KNOWN_EXTENSIONS = new Set( - ( - '3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,' + - 'eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,' + - 'mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,' + - 'p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,' + - 'tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip' + - (extraExts && typeof extraExts === 'string' ? ',' + extraExts : '') - ).split(',') -) +const KNOWN_EXTENSIONS = new Set() export function treatAsHtml(filename: string): boolean { + if (KNOWN_EXTENSIONS.size === 0) { + const extraExts = + (typeof process === 'object' && process.env.VITE_EXTRA_EXTENSIONS) || + (import.meta as any).env?.VITE_EXTRA_EXTENSIONS || + '' + + // md, html? are intentionally omitted + ;( + '3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,' + + 'doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,' + + 'man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,' + + 'opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,' + + 'tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,' + + 'yaml,yml,zip' + + (extraExts && typeof extraExts === 'string' ? ',' + extraExts : '') + ) + .split(',') + .forEach((ext) => KNOWN_EXTENSIONS.add(ext)) + } + const ext = filename.split('.').pop() return ext == null || !KNOWN_EXTENSIONS.has(ext.toLowerCase())