From 84368dc9dc6a8bde00040a8ff6eee92799b7c00a Mon Sep 17 00:00:00 2001 From: Prateek Karnal Date: Mon, 13 Feb 2023 20:02:18 -0800 Subject: [PATCH 1/6] Fix relative path detection in stylesheet URLs --- packages/rrweb-snapshot/src/snapshot.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index 99a23ff7be..b97f995a61 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -71,7 +71,7 @@ let canvasService: HTMLCanvasElement | null; let canvasCtx: CanvasRenderingContext2D | null; const URL_IN_CSS_REF = /url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm; -const RELATIVE_PATH = /^(?!www\.|(?:http|ftp)s?:\/\/|[A-Za-z]:\\|\/\/|#).*/; +const ABSOLUTE_PATH = /^(?:[a-z+]+:)?\/\//i; const DATA_URI = /^(data:)([^,]*),(.*)/i; export function absoluteToStylesheet( cssText: string | null, @@ -92,7 +92,7 @@ export function absoluteToStylesheet( if (!filePath) { return origin; } - if (!RELATIVE_PATH.test(filePath)) { + if (ABSOLUTE_PATH.test(filePath)) { return `url(${maybeQuote}${filePath}${maybeQuote})`; } if (DATA_URI.test(filePath)) { From 41ad59ffb9703b8fe392c18d1bb26e61cf4dc929 Mon Sep 17 00:00:00 2001 From: Prateek Karnal Date: Mon, 13 Feb 2023 22:27:38 -0800 Subject: [PATCH 2/6] Add a check for www. --- packages/rrweb-snapshot/src/snapshot.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index b97f995a61..668396a747 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -71,7 +71,8 @@ let canvasService: HTMLCanvasElement | null; let canvasCtx: CanvasRenderingContext2D | null; const URL_IN_CSS_REF = /url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm; -const ABSOLUTE_PATH = /^(?:[a-z+]+:)?\/\//i; +const URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\/\//i; +const URL_WWW_MATCH = /^www\..*/i const DATA_URI = /^(data:)([^,]*),(.*)/i; export function absoluteToStylesheet( cssText: string | null, @@ -92,7 +93,7 @@ export function absoluteToStylesheet( if (!filePath) { return origin; } - if (ABSOLUTE_PATH.test(filePath)) { + if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath) { return `url(${maybeQuote}${filePath}${maybeQuote})`; } if (DATA_URI.test(filePath)) { From 941385ab7e66740fe3423a22a70134d46719649f Mon Sep 17 00:00:00 2001 From: Justin Halsall Date: Tue, 14 Feb 2023 11:37:39 +0100 Subject: [PATCH 3/6] Update packages/rrweb-snapshot/src/snapshot.ts --- packages/rrweb-snapshot/src/snapshot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index 668396a747..9ca21c0bfe 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -93,7 +93,7 @@ export function absoluteToStylesheet( if (!filePath) { return origin; } - if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath) { + if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) { return `url(${maybeQuote}${filePath}${maybeQuote})`; } if (DATA_URI.test(filePath)) { From d9ae26923dd435ec2059fdef5afdfd3642b7d162 Mon Sep 17 00:00:00 2001 From: Yun Feng Date: Tue, 14 Feb 2023 18:54:33 +0800 Subject: [PATCH 4/6] Update packages/rrweb-snapshot/src/snapshot.ts --- packages/rrweb-snapshot/src/snapshot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index 9ca21c0bfe..fef2f83dc0 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -72,7 +72,7 @@ let canvasCtx: CanvasRenderingContext2D | null; const URL_IN_CSS_REF = /url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm; const URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\/\//i; -const URL_WWW_MATCH = /^www\..*/i +const URL_WWW_MATCH = /^www\..*/i; const DATA_URI = /^(data:)([^,]*),(.*)/i; export function absoluteToStylesheet( cssText: string | null, From 09f1e27c0c6b5a0ffc8064f32e60f4bd87ebfe89 Mon Sep 17 00:00:00 2001 From: Yun Feng Date: Wed, 15 Feb 2023 07:20:04 +0800 Subject: [PATCH 5/6] Create large-ants-prove.md --- .changeset/large-ants-prove.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/large-ants-prove.md diff --git a/.changeset/large-ants-prove.md b/.changeset/large-ants-prove.md new file mode 100644 index 0000000000..580fe349ec --- /dev/null +++ b/.changeset/large-ants-prove.md @@ -0,0 +1,6 @@ +--- +"rrweb-snapshot": patch +"rrweb": patch +--- + +Fix: Make relative path detection in stylesheet URLs to detect more types of URL protocols when inlining stylesheets. From 210a02e5e9b820d4096df7536698fb0fd936574a Mon Sep 17 00:00:00 2001 From: Yun Feng Date: Wed, 15 Feb 2023 07:23:16 +0800 Subject: [PATCH 6/6] Update large-ants-prove.md --- .changeset/large-ants-prove.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/large-ants-prove.md b/.changeset/large-ants-prove.md index 580fe349ec..9c7681beb3 100644 --- a/.changeset/large-ants-prove.md +++ b/.changeset/large-ants-prove.md @@ -1,6 +1,6 @@ --- -"rrweb-snapshot": patch -"rrweb": patch +'rrweb-snapshot': patch +'rrweb': patch --- Fix: Make relative path detection in stylesheet URLs to detect more types of URL protocols when inlining stylesheets.