diff --git a/.changeset/honest-lamps-complain.md b/.changeset/honest-lamps-complain.md new file mode 100644 index 000000000..196b74d51 --- /dev/null +++ b/.changeset/honest-lamps-complain.md @@ -0,0 +1,5 @@ +--- +'@vanilla-extract/integration': patch +--- + +`serializeCss|deserializeCss`: Use `base64url` encoding instead of `base64` to avoid errors in virtual file paths diff --git a/packages/integration/src/serialize.ts b/packages/integration/src/serialize.ts index 0617e27e2..4214c90a5 100644 --- a/packages/integration/src/serialize.ts +++ b/packages/integration/src/serialize.ts @@ -12,20 +12,20 @@ export async function serializeCss(source: string): Promise { if (source.length > compressionThreshold) { const compressedSource = await zip(source); - return compressionFlag + compressedSource.toString('base64'); + return compressionFlag + compressedSource.toString('base64url'); } - return Buffer.from(source, 'utf-8').toString('base64'); + return Buffer.from(source, 'utf-8').toString('base64url'); } export async function deserializeCss(source: string): Promise { if (source.indexOf(compressionFlag) > -1) { const decompressedSource = await unzip( - Buffer.from(source.replace(compressionFlag, ''), 'base64'), + Buffer.from(source.replace(compressionFlag, ''), 'base64url'), ); return decompressedSource.toString('utf-8'); } - return Buffer.from(source, 'base64').toString('utf-8'); + return Buffer.from(source, 'base64url').toString('utf-8'); }