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: ``,