mirror of
https://github.com/tinymce/tinymce.git
synced 2025-07-22 06:59:59 +00:00
TINY-12056: update dompurify version and remove patch (#10388)
* TINY-12056: update dompurify version and remove patch * update regexp * TINY-12056: add better description * TINY-12056: fix failing tests * TINY-12056: fix failing tests * TINY-12056: code cleanup, remove g flag from regexp * TINY-12056: add changelog * TINY-12056: add changelog * TINY-12056: add changelog * TINY-12056: add changelog * TINY-12056: turn on SAFE_FOR_XML * TINY-12056: update failing test * TINY-12056: update failing tests * TINY-12056: update changeset * TINY-12056: update files with new dompurify version * TINY-12056: update yarn.lock * TINY-12056: update changeset and license files
This commit is contained in:

committed by
GitHub

parent
55882cbb42
commit
3d42343c34
7
.changes/unreleased/tinymce-TINY-12056-2025-06-16.yaml
Normal file
7
.changes/unreleased/tinymce-TINY-12056-2025-06-16.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
project: tinymce
|
||||
kind: Changed
|
||||
body: Comments with HTML like content, attributes with HTML
|
||||
like values, elements with HTML Comment like textContent are no longer retained while content sanitization is active.
|
||||
time: 2025-06-16T15:59:32.909609+02:00
|
||||
custom:
|
||||
Issue: TINY-12056
|
@ -1,10 +1,10 @@
|
||||
Below is a list of third party libraries that this software uses:
|
||||
----------------------------------------------------------------
|
||||
|
||||
dompurify - Patched by Tiny
|
||||
dompurify
|
||||
owner: Mario Heiderich
|
||||
repo: https://github.com/cure53/DOMPurify
|
||||
version: 3.2.4
|
||||
version: 3.2.6
|
||||
license: MPL-2.0 OR Apache-2.0
|
||||
|
||||
prismjs
|
||||
|
@ -497,7 +497,6 @@ module.exports = function (grunt) {
|
||||
'modules/*/.stylelintrc',
|
||||
'modules/tinymce/tools',
|
||||
'bin',
|
||||
'patches',
|
||||
'.yarnrc',
|
||||
'LICENSE.md',
|
||||
'NOTICES.txt',
|
||||
|
@ -34,7 +34,7 @@
|
||||
"@tinymce/oxide": "^3.0.0",
|
||||
"@tinymce/oxide-icons-default": "^3.0.0",
|
||||
"@types/prismjs": "^1.16.6",
|
||||
"dompurify": "3.2.4",
|
||||
"dompurify": "3.2.6",
|
||||
"prismjs": "^1.27.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -179,17 +179,14 @@ const setupPurify = (settings: DomParserSettings, schema: Schema, namespaceTrack
|
||||
};
|
||||
|
||||
const getPurifyConfig = (settings: DomParserSettings, mimeType: MimeType): Config => {
|
||||
// Current dompurify types only cover up to 3.0.5 which does not include this new setting
|
||||
const basePurifyConfig: Config & { SAFE_FOR_XML: boolean } = {
|
||||
const basePurifyConfig: Config = {
|
||||
IN_PLACE: true,
|
||||
ALLOW_UNKNOWN_PROTOCOLS: true,
|
||||
// Deliberately ban all tags and attributes by default, and then un-ban them on demand in hooks
|
||||
// #comment and #cdata-section are always allowed as they aren't controlled via the schema
|
||||
// body is also allowed due to the DOMPurify checking the root node before sanitizing
|
||||
ALLOWED_TAGS: [ '#comment', '#cdata-section', 'body' ],
|
||||
ALLOWED_ATTR: [],
|
||||
// TINY-11332: New settings for dompurify 3.1.7
|
||||
SAFE_FOR_XML: false
|
||||
ALLOWED_ATTR: []
|
||||
};
|
||||
const config = { ...basePurifyConfig };
|
||||
|
||||
|
@ -435,7 +435,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with a HTML comment and less than with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><!-- 1 < 2; // --></s' + 'cript>');
|
||||
@ -443,7 +443,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with a HTML comment and less than', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><!-- 1 < 2; // --></s' + 'cript>');
|
||||
@ -451,7 +451,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with white space in beginning, comment and less than with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>\n\n<!-- 1 < 2;\n\n--></s' + 'cript>');
|
||||
@ -459,7 +459,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with white space in beginning, comment and less than', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>\n\n<!-- 1 < 2;\n\n--></s' + 'cript>');
|
||||
@ -467,7 +467,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with comments and cdata with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>// <![CDATA[1 < 2; // ]]></s' + 'cript>');
|
||||
@ -475,7 +475,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with comments and cdata', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>// <![CDATA[1 < 2; // ]]></s' + 'cript>');
|
||||
@ -483,7 +483,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with cdata with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><![CDATA[1 < 2; ]]></s' + 'cript>');
|
||||
@ -491,7 +491,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with cdata', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><![CDATA[1 < 2; ]]></s' + 'cript>');
|
||||
@ -499,7 +499,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script whitespace in beginning/end and cdata with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>\n\n<![CDATA[\n\n1 < 2;\n\n]]>\n\n</s' + 'cript>');
|
||||
@ -507,7 +507,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script whitespace in beginning/end and cdata', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>\n\n<![CDATA[\n\n1 < 2;\n\n]]>\n\n</s' + 'cript>');
|
||||
@ -531,7 +531,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with HTML comment, comment and CDATA with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><!--// <![CDATA[var hi = "hello";// ]]>--></s' + 'cript>');
|
||||
@ -539,7 +539,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with HTML comment, comment and CDATA', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><!--// <![CDATA[var hi = "hello";// ]]>--></s' + 'cript>');
|
||||
@ -547,7 +547,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with block comment around cdata with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>/* <![CDATA[ */\nvar hi = "hello";\n/* ]]> */</s' + 'cript>');
|
||||
@ -555,7 +555,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with block comment around cdata', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>/* <![CDATA[ */\nvar hi = "hello";\n/* ]]> */</s' + 'cript>');
|
||||
@ -563,7 +563,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with html comment and block comment around cdata with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><!-- /* <![CDATA[ */\nvar hi = "hello";\n/* ]]>*/--></s' + 'cript>');
|
||||
@ -571,7 +571,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with html comment and block comment around cdata', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script><!-- /* <![CDATA[ */\nvar hi = "hello";\n/* ]]>*/--></s' + 'cript>');
|
||||
@ -579,7 +579,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with line comment and html comment with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>// <!--\nvar hi = "hello";\n// --></s' + 'cript>');
|
||||
@ -587,7 +587,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with line comment and html comment', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>// <!--\nvar hi = "hello";\n// --></s' + 'cript>');
|
||||
@ -595,7 +595,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with block comment around html comment with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>/* <!-- */\nvar hi = "hello";\n/*-->*/</s' + 'cript>');
|
||||
@ -603,7 +603,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Script with block comment around html comment', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, sanitize: false });
|
||||
ser.setRules('script[type|language|src]');
|
||||
|
||||
setTestHtml('<script>/* <!-- */\nvar hi = "hello";\n/*-->*/</s' + 'cript>');
|
||||
@ -642,7 +642,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Style with cdata with element_format: xhtml', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, valid_children: '+body[style]', element_format: 'xhtml' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, valid_children: '+body[style]', element_format: 'xhtml', sanitize: false });
|
||||
ser.setRules('style');
|
||||
|
||||
setTestHtml('<style>\r\n<![CDATA[\r\n body { background:#fff }]]></style>');
|
||||
@ -650,7 +650,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('Style with cdata', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, valid_children: '+body[style]' });
|
||||
const ser = DomSerializer({ fix_list_elements: true, valid_children: '+body[style]', sanitize: false });
|
||||
ser.setRules('style');
|
||||
|
||||
setTestHtml('<style>\r\n<![CDATA[\r\n body { background:#fff }]]></style>');
|
||||
@ -658,7 +658,7 @@ describe('browser.tinymce.core.dom.SerializerTest', () => {
|
||||
});
|
||||
|
||||
it('CDATA', () => {
|
||||
const ser = DomSerializer({ fix_list_elements: true, preserve_cdata: true });
|
||||
const ser = DomSerializer({ fix_list_elements: true, preserve_cdata: true, sanitize: false });
|
||||
ser.setRules('span');
|
||||
|
||||
setTestHtml('123<!--[CDATA[<test>]]-->abc');
|
||||
|
@ -1049,7 +1049,7 @@ describe('browser.tinymce.core.html.DomParserTest', () => {
|
||||
assert.equal(serializedHtml, '<div><!--[CDATA[<!--x----><!--y-->-->]]></div>');
|
||||
|
||||
const serializedXHtml = serializer.serialize(parser.parse('<div><![CDATA[<!--x--><!--y-->--><!--]]></div>', { format: 'xhtml' }));
|
||||
assert.equal(serializedXHtml, '<div><![CDATA[<!--x--><!--y-->--><!--]]></div>');
|
||||
assert.equal(serializedXHtml, scenario.isSanitizeEnabled ? '' : '<div><![CDATA[<!--x--><!--y-->--><!--]]></div>');
|
||||
});
|
||||
|
||||
it('TINY-7756: Parsing invalid nested children', () => {
|
||||
|
@ -1,5 +1,4 @@
|
||||
/**
|
||||
* This file bundles the code of
|
||||
* DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE
|
||||
* The code included in this file has been modified.
|
||||
* DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE
|
||||
*/
|
||||
|
@ -122,7 +122,6 @@ describe('browser.tinymce.plugins.media.ContentFormatsTest', () => {
|
||||
'<param name="allowfullscreen" value="true" />' +
|
||||
'<param name="allowscriptaccess" value="always" />' +
|
||||
'<param name="flashvars" value="video_src=s" />' +
|
||||
'<!--[if IE]><param name="movie" value="../../js/tinymce/plugins/media/moxieplayer.swf" /><![endif]-->' +
|
||||
'</object>' +
|
||||
'</video>'
|
||||
);
|
||||
@ -141,9 +140,6 @@ describe('browser.tinymce.plugins.media.ContentFormatsTest', () => {
|
||||
'<param name="allowfullscreen" value="true">' +
|
||||
'<param name="allowscriptaccess" value="always">' +
|
||||
'<param name="flashvars" value="video_src=s">' +
|
||||
'<!--[if IE]>' +
|
||||
'<param name="movie" value="../../js/tinymce/plugins/media/moxieplayer.swf" />' +
|
||||
'<![endif]-->' +
|
||||
'</object>' +
|
||||
'</video>' +
|
||||
'</p>'
|
||||
|
@ -4,7 +4,6 @@
|
||||
"modules/*"
|
||||
],
|
||||
"scripts": {
|
||||
"postinstall": "patch-package",
|
||||
"tinymce-grunt": "grunt --gruntfile modules/tinymce/Gruntfile.js",
|
||||
"tinymce-rollup": "run-s \"tinymce-grunt dev rollup\"",
|
||||
"oxide-icons-build": "yarn -s --cwd modules/oxide-icons-default build",
|
||||
@ -73,7 +72,6 @@
|
||||
"load-grunt-tasks": "^5.1.0",
|
||||
"moxie-zip": "0.0.4",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"patch-package": "^8.0.0",
|
||||
"postcss": "^8.4.39",
|
||||
"postcss-preset-env": "^10.1.3",
|
||||
"resolve": "^1.18.1",
|
||||
|
@ -1,132 +0,0 @@
|
||||
diff --git a/node_modules/dompurify/dist/purify.es.mjs b/node_modules/dompurify/dist/purify.es.mjs
|
||||
index 86186cf..9b57304 100644
|
||||
--- a/node_modules/dompurify/dist/purify.es.mjs
|
||||
+++ b/node_modules/dompurify/dist/purify.es.mjs
|
||||
@@ -1054,6 +1054,7 @@ function createDOMPurify() {
|
||||
} = attr;
|
||||
const lcName = transformCaseFunc(name);
|
||||
let value = name === 'value' ? attrValue : stringTrim(attrValue);
|
||||
+ const initValue = value;
|
||||
/* Execute a hook if present */
|
||||
hookEvent.attrName = lcName;
|
||||
hookEvent.attrValue = value;
|
||||
@@ -1080,9 +1081,9 @@ function createDOMPurify() {
|
||||
continue;
|
||||
}
|
||||
/* Remove attribute */
|
||||
- _removeAttribute(name, currentNode);
|
||||
/* Did the hooks approve of the attribute? */
|
||||
if (!hookEvent.keepAttr) {
|
||||
+ _removeAttribute(name, currentNode);
|
||||
continue;
|
||||
}
|
||||
/* Work around a security issue in jQuery 3.0 */
|
||||
@@ -1099,6 +1100,7 @@ function createDOMPurify() {
|
||||
/* Is `value` valid for this attribute? */
|
||||
const lcTag = transformCaseFunc(currentNode.nodeName);
|
||||
if (!_isValidAttribute(lcTag, lcName, value)) {
|
||||
+ _removeAttribute(name, currentNode);
|
||||
continue;
|
||||
}
|
||||
/* Handle attributes that require Trusted Types */
|
||||
@@ -1119,19 +1121,21 @@ function createDOMPurify() {
|
||||
}
|
||||
}
|
||||
/* Handle invalid data-* attribute set by try-catching it */
|
||||
- try {
|
||||
- if (namespaceURI) {
|
||||
- currentNode.setAttributeNS(namespaceURI, name, value);
|
||||
- } else {
|
||||
- /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
||||
- currentNode.setAttribute(name, value);
|
||||
- }
|
||||
- if (_isClobbered(currentNode)) {
|
||||
- _forceRemove(currentNode);
|
||||
- } else {
|
||||
- arrayPop(DOMPurify.removed);
|
||||
- }
|
||||
- } catch (_) {}
|
||||
+ if (value !== initValue) {
|
||||
+ try {
|
||||
+ if (namespaceURI) {
|
||||
+ currentNode.setAttributeNS(namespaceURI, name, value);
|
||||
+ } else {
|
||||
+ /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
||||
+ currentNode.setAttribute(name, value);
|
||||
+ }
|
||||
+ if (_isClobbered(currentNode)) {
|
||||
+ _forceRemove(currentNode);
|
||||
+ } else {
|
||||
+ arrayPop(DOMPurify.removed);
|
||||
+ }
|
||||
+ } catch (_) {}
|
||||
+ }
|
||||
}
|
||||
/* Execute a hook if present */
|
||||
_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
|
||||
diff --git a/node_modules/dompurify/dist/purify.js b/node_modules/dompurify/dist/purify.js
|
||||
index a03f326..7bcc749 100644
|
||||
--- a/node_modules/dompurify/dist/purify.js
|
||||
+++ b/node_modules/dompurify/dist/purify.js
|
||||
@@ -1060,6 +1060,7 @@
|
||||
} = attr;
|
||||
const lcName = transformCaseFunc(name);
|
||||
let value = name === 'value' ? attrValue : stringTrim(attrValue);
|
||||
+ const initValue = value;
|
||||
/* Execute a hook if present */
|
||||
hookEvent.attrName = lcName;
|
||||
hookEvent.attrValue = value;
|
||||
@@ -1086,9 +1087,9 @@
|
||||
continue;
|
||||
}
|
||||
/* Remove attribute */
|
||||
- _removeAttribute(name, currentNode);
|
||||
/* Did the hooks approve of the attribute? */
|
||||
if (!hookEvent.keepAttr) {
|
||||
+ _removeAttribute(name, currentNode);
|
||||
continue;
|
||||
}
|
||||
/* Work around a security issue in jQuery 3.0 */
|
||||
@@ -1105,6 +1106,7 @@
|
||||
/* Is `value` valid for this attribute? */
|
||||
const lcTag = transformCaseFunc(currentNode.nodeName);
|
||||
if (!_isValidAttribute(lcTag, lcName, value)) {
|
||||
+ _removeAttribute(name, currentNode);
|
||||
continue;
|
||||
}
|
||||
/* Handle attributes that require Trusted Types */
|
||||
@@ -1125,19 +1127,21 @@
|
||||
}
|
||||
}
|
||||
/* Handle invalid data-* attribute set by try-catching it */
|
||||
- try {
|
||||
- if (namespaceURI) {
|
||||
- currentNode.setAttributeNS(namespaceURI, name, value);
|
||||
- } else {
|
||||
- /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
||||
- currentNode.setAttribute(name, value);
|
||||
- }
|
||||
- if (_isClobbered(currentNode)) {
|
||||
- _forceRemove(currentNode);
|
||||
- } else {
|
||||
- arrayPop(DOMPurify.removed);
|
||||
- }
|
||||
- } catch (_) {}
|
||||
+ if (value !== initValue) {
|
||||
+ try {
|
||||
+ if (namespaceURI) {
|
||||
+ currentNode.setAttributeNS(namespaceURI, name, value);
|
||||
+ } else {
|
||||
+ /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
||||
+ currentNode.setAttribute(name, value);
|
||||
+ }
|
||||
+ if (_isClobbered(currentNode)) {
|
||||
+ _forceRemove(currentNode);
|
||||
+ } else {
|
||||
+ arrayPop(DOMPurify.removed);
|
||||
+ }
|
||||
+ } catch (_) {}
|
||||
+ }
|
||||
}
|
||||
/* Execute a hook if present */
|
||||
_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
|
141
yarn.lock
141
yarn.lock
@ -883,15 +883,7 @@
|
||||
resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b"
|
||||
integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==
|
||||
|
||||
"@emnapi/core@^1.1.0":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.3.1.tgz#9c62d185372d1bddc94682b87f376e03dfac3f16"
|
||||
integrity sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==
|
||||
dependencies:
|
||||
"@emnapi/wasi-threads" "1.0.1"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@emnapi/core@^1.4.0":
|
||||
"@emnapi/core@^1.1.0", "@emnapi/core@^1.4.0":
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6"
|
||||
integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==
|
||||
@ -899,14 +891,7 @@
|
||||
"@emnapi/wasi-threads" "1.0.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@emnapi/runtime@^1.1.0":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60"
|
||||
integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@emnapi/runtime@^1.4.0":
|
||||
"@emnapi/runtime@^1.1.0", "@emnapi/runtime@^1.4.0":
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d"
|
||||
integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==
|
||||
@ -2437,20 +2422,13 @@
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
|
||||
"@types/chai@*":
|
||||
"@types/chai@*", "@types/chai@^5.0.1":
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.1.tgz#85687a58b27eac736ec0e87e5cb98f21e57a0bb1"
|
||||
integrity sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==
|
||||
dependencies:
|
||||
"@types/deep-eql" "*"
|
||||
|
||||
"@types/chai@^5.0.1":
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.0.1.tgz#2c3705555cf11f5f59c836a84c44afcfe4e5689d"
|
||||
integrity sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==
|
||||
dependencies:
|
||||
"@types/deep-eql" "*"
|
||||
|
||||
"@types/connect-history-api-fallback@^1.5.4":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3"
|
||||
@ -3563,11 +3541,6 @@ asynckit@^0.4.0:
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
|
||||
|
||||
at-least-node@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||
|
||||
autoprefixer@^10.4.19:
|
||||
version "10.4.20"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
|
||||
@ -3924,7 +3897,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
|
||||
call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8:
|
||||
call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
|
||||
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
|
||||
@ -3934,7 +3907,7 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bin
|
||||
get-intrinsic "^1.2.4"
|
||||
set-function-length "^1.2.2"
|
||||
|
||||
call-bound@^1.0.2, call-bound@^1.0.3:
|
||||
call-bound@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681"
|
||||
integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==
|
||||
@ -4088,7 +4061,7 @@ chromium-bidi@0.5.8:
|
||||
mitt "3.0.1"
|
||||
urlpattern-polyfill "10.0.0"
|
||||
|
||||
ci-info@^3.2.0, ci-info@^3.7.0:
|
||||
ci-info@^3.2.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
|
||||
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
|
||||
@ -4965,10 +4938,10 @@ domhandler@^4.2.0, domhandler@^4.3.1:
|
||||
dependencies:
|
||||
domelementtype "^2.2.0"
|
||||
|
||||
dompurify@3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.4.tgz#af5a5a11407524431456cf18836c55d13441cd8e"
|
||||
integrity sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==
|
||||
dompurify@3.2.6:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.6.tgz#ca040a6ad2b88e2a92dc45f38c79f84a714a1cad"
|
||||
integrity sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==
|
||||
optionalDependencies:
|
||||
"@types/trusted-types" "^2.0.7"
|
||||
|
||||
@ -5916,13 +5889,6 @@ find-up@^5.0.0:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
find-yarn-workspace-root@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
|
||||
integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
|
||||
dependencies:
|
||||
micromatch "^4.0.2"
|
||||
|
||||
findup-sync@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0"
|
||||
@ -6129,16 +6095,6 @@ fs-extra@^11.2.0:
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-extra@^9.0.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
|
||||
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
|
||||
dependencies:
|
||||
at-least-node "^1.0.0"
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
||||
@ -7399,7 +7355,7 @@ is-windows@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
||||
|
||||
is-wsl@^2.1.1, is-wsl@^2.2.0:
|
||||
is-wsl@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
||||
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
||||
@ -7608,17 +7564,6 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
||||
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
||||
|
||||
json-stable-stringify@^1.0.2:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.2.1.tgz#addb683c2b78014d0b78d704c2fcbdf0695a60e2"
|
||||
integrity sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==
|
||||
dependencies:
|
||||
call-bind "^1.0.8"
|
||||
call-bound "^1.0.3"
|
||||
isarray "^2.0.5"
|
||||
jsonify "^0.0.1"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
json-stringify-nice@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67"
|
||||
@ -7671,11 +7616,6 @@ jsonfile@^6.0.1:
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonify@^0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
|
||||
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
|
||||
|
||||
jsonparse@^1.2.0, jsonparse@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
|
||||
@ -7720,13 +7660,6 @@ kind-of@^6.0.2, kind-of@^6.0.3:
|
||||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
|
||||
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
||||
|
||||
klaw-sync@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
|
||||
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.11"
|
||||
|
||||
known-css-properties@^0.35.0:
|
||||
version "0.35.0"
|
||||
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.35.0.tgz#f6f8e40ab4e5700fa32f5b2ef5218a56bc853bd6"
|
||||
@ -9063,14 +8996,6 @@ open@^10.0.3:
|
||||
is-inside-container "^1.0.0"
|
||||
is-wsl "^3.1.0"
|
||||
|
||||
open@^7.4.2:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
|
||||
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
|
||||
dependencies:
|
||||
is-docker "^2.0.0"
|
||||
is-wsl "^2.1.1"
|
||||
|
||||
open@^8.4.0:
|
||||
version "8.4.2"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
|
||||
@ -9405,27 +9330,6 @@ parseurl@~1.3.2, parseurl@~1.3.3:
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
patch-package@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
|
||||
integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
|
||||
dependencies:
|
||||
"@yarnpkg/lockfile" "^1.1.0"
|
||||
chalk "^4.1.2"
|
||||
ci-info "^3.7.0"
|
||||
cross-spawn "^7.0.3"
|
||||
find-yarn-workspace-root "^2.0.0"
|
||||
fs-extra "^9.0.0"
|
||||
json-stable-stringify "^1.0.2"
|
||||
klaw-sync "^6.0.0"
|
||||
minimist "^1.2.6"
|
||||
open "^7.4.2"
|
||||
rimraf "^2.6.3"
|
||||
semver "^7.5.3"
|
||||
slash "^2.0.0"
|
||||
tmp "^0.0.33"
|
||||
yaml "^2.2.2"
|
||||
|
||||
path-exists@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
||||
@ -10404,7 +10308,7 @@ rgb2hex@0.2.5:
|
||||
resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.2.5.tgz#f82230cd3ab1364fa73c99be3a691ed688f8dbdc"
|
||||
integrity sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==
|
||||
|
||||
rimraf@2, rimraf@^2.6.2, rimraf@^2.6.3:
|
||||
rimraf@2, rimraf@^2.6.2:
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
@ -10618,12 +10522,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
|
||||
semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.6.0:
|
||||
version "7.7.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.0.tgz#9c6fe61d0c6f9fa9e26575162ee5a9180361b09c"
|
||||
integrity sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==
|
||||
|
||||
semver@^7.7.1:
|
||||
semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.6.0, semver@^7.7.1:
|
||||
version "7.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
|
||||
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
|
||||
@ -10829,11 +10728,6 @@ slash@3.0.0, slash@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
|
||||
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
|
||||
|
||||
slash@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
|
||||
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
|
||||
|
||||
slice-ansi@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
|
||||
@ -11604,12 +11498,7 @@ trim-newlines@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
|
||||
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
|
||||
|
||||
ts-api-utils@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900"
|
||||
integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==
|
||||
|
||||
ts-api-utils@^2.0.1:
|
||||
ts-api-utils@^2.0.0, ts-api-utils@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91"
|
||||
integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
|
||||
@ -12449,7 +12338,7 @@ yaml@^1.10.0:
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
||||
|
||||
yaml@^2.2.2, yaml@^2.6.0:
|
||||
yaml@^2.6.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
|
||||
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
|
||||
|
Reference in New Issue
Block a user