From 9a6986965e986f8ea1f3217439ee639733a72e01 Mon Sep 17 00:00:00 2001 From: Nikolay Kost Date: Sun, 9 Mar 2025 20:37:21 +0200 Subject: [PATCH] feat(201): add file:// replacement (#280) * feat: add file:// * feat: add changeset --- .changeset/cuddly-cameras-promise.md | 17 +++++++++++++++++ packages/bbob-plugin-helper/src/helpers.ts | 2 +- .../bbob-plugin-helper/test/helpers.test.ts | 5 +++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .changeset/cuddly-cameras-promise.md diff --git a/.changeset/cuddly-cameras-promise.md b/.changeset/cuddly-cameras-promise.md new file mode 100644 index 0000000..2116dc4 --- /dev/null +++ b/.changeset/cuddly-cameras-promise.md @@ -0,0 +1,17 @@ +--- +"@bbob/parser": minor +"@bbob/types": minor +"@bbob/cli": minor +"@bbob/core": minor +"@bbob/html": minor +"@bbob/plugin-helper": minor +"@bbob/preset": minor +"@bbob/preset-html5": minor +"@bbob/preset-react": minor +"@bbob/preset-vue": minor +"@bbob/react": minor +"@bbob/vue2": minor +"@bbob/vue3": minor +--- + +Now all file protocol urls will be escaped like `file://some/path/to/file` will be converted to `file%3A//some/path/to/file` diff --git a/packages/bbob-plugin-helper/src/helpers.ts b/packages/bbob-plugin-helper/src/helpers.ts index f999e6f..63ceb08 100644 --- a/packages/bbob-plugin-helper/src/helpers.ts +++ b/packages/bbob-plugin-helper/src/helpers.ts @@ -54,7 +54,7 @@ function escapeAttrValue(value: string) { .replace(/"/g, '"') .replace(/'/g, ''') // eslint-disable-next-line no-script-url - .replace(/(javascript|data|vbscript):/gi, '$1%3A'); + .replace(/(javascript|data|vbscript|file):/gi, '$1%3A'); } /** diff --git a/packages/bbob-plugin-helper/test/helpers.test.ts b/packages/bbob-plugin-helper/test/helpers.test.ts index 7df74e7..550113e 100644 --- a/packages/bbob-plugin-helper/test/helpers.test.ts +++ b/packages/bbob-plugin-helper/test/helpers.test.ts @@ -99,6 +99,11 @@ describe('@bbob/plugin-helper/helpers', () => { href: `JAVASCRIPT:alert('hello')`, })).toBe(` onclick="JAVASCRIPT%3Aalert('hello')" href="JAVASCRIPT%3Aalert('hello')"`) }); + test(`file:alert("hello")`, () => { + expect(attrsToString({ + href: `file:///shared/customer_info/customer-name`, + })).toBe(` href="file%3A///shared/customer_info/customer-name"`) + }); test(``, () => { expect(attrsToString({ onclick: ``,