build(runtime): escape % if URI malformed

This commit is contained in:
roymondchen 2025-08-27 19:18:17 +08:00
parent a56bb562d8
commit 001f2b6c9e
4 changed files with 52 additions and 0 deletions

View File

@ -2,6 +2,9 @@ import { defineConfig } from 'vite';
import baseConfig from '../vite.config'; import baseConfig from '../vite.config';
const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g;
const DRIVE_LETTER_REGEX = /^[a-z]:/i;
export default defineConfig({ export default defineConfig({
...baseConfig, ...baseConfig,
@ -15,5 +18,15 @@ export default defineConfig({
emptyOutDir: false, emptyOutDir: false,
sourcemap: true, sourcemap: true,
outDir: '../dist/page', outDir: '../dist/page',
rollupOptions: {
output: {
// https://github.com/rollup/rollup/blob/master/src/utils/sanitizeFileName.ts
sanitizeFileName(name) {
const match = DRIVE_LETTER_REGEX.exec(name);
const driveLetter = match ? match[0] : '';
return driveLetter + name.slice(driveLetter.length).replace(INVALID_CHAR_REGEX, '');
},
},
},
}, },
}); });

View File

@ -2,6 +2,9 @@ import { defineConfig } from 'vite';
import baseConfig from '../vite.config'; import baseConfig from '../vite.config';
const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g;
const DRIVE_LETTER_REGEX = /^[a-z]:/i;
export default defineConfig({ export default defineConfig({
...baseConfig, ...baseConfig,
@ -15,5 +18,15 @@ export default defineConfig({
emptyOutDir: false, emptyOutDir: false,
sourcemap: true, sourcemap: true,
outDir: '../dist/playground', outDir: '../dist/playground',
rollupOptions: {
output: {
// https://github.com/rollup/rollup/blob/master/src/utils/sanitizeFileName.ts
sanitizeFileName(name) {
const match = DRIVE_LETTER_REGEX.exec(name);
const driveLetter = match ? match[0] : '';
return driveLetter + name.slice(driveLetter.length).replace(INVALID_CHAR_REGEX, '');
},
},
},
}, },
}); });

View File

@ -2,6 +2,9 @@ import { defineConfig } from 'vite';
import baseConfig from '../vite.config'; import baseConfig from '../vite.config';
const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g;
const DRIVE_LETTER_REGEX = /^[a-z]:/i;
export default defineConfig({ export default defineConfig({
...baseConfig, ...baseConfig,
@ -13,5 +16,15 @@ export default defineConfig({
emptyOutDir: false, emptyOutDir: false,
sourcemap: true, sourcemap: true,
outDir: '../dist/page', outDir: '../dist/page',
rollupOptions: {
output: {
// https://github.com/rollup/rollup/blob/master/src/utils/sanitizeFileName.ts
sanitizeFileName(name) {
const match = DRIVE_LETTER_REGEX.exec(name);
const driveLetter = match ? match[0] : '';
return driveLetter + name.slice(driveLetter.length).replace(INVALID_CHAR_REGEX, '');
},
},
},
}, },
}); });

View File

@ -2,6 +2,9 @@ import { defineConfig } from 'vite';
import baseConfig from '../vite.config'; import baseConfig from '../vite.config';
const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g;
const DRIVE_LETTER_REGEX = /^[a-z]:/i;
export default defineConfig({ export default defineConfig({
...baseConfig, ...baseConfig,
@ -13,5 +16,15 @@ export default defineConfig({
emptyOutDir: false, emptyOutDir: false,
sourcemap: true, sourcemap: true,
outDir: '../dist/playground', outDir: '../dist/playground',
rollupOptions: {
output: {
// https://github.com/rollup/rollup/blob/master/src/utils/sanitizeFileName.ts
sanitizeFileName(name) {
const match = DRIVE_LETTER_REGEX.exec(name);
const driveLetter = match ? match[0] : '';
return driveLetter + name.slice(driveLetter.length).replace(INVALID_CHAR_REGEX, '');
},
},
},
}, },
}); });